getContractState method

Future<({BigInt balance, ({int seqno, String shard, int workchain}) blockId, Uint8List? code, Uint8List? data, LastTransactionId? lastTransaction, String state, int timestamp})> getContractState(
  1. InternalAddress address
)
inherited

Returns a contract state as a record, wrapped in a Future:

Future<({
  BigInt balance,
  String state,
  Uint8List? code,
  Uint8List? data,
  LastTransactionId? lastTransaction,
  ({int seqno, String shard, int workchain}) blockId,
  int timestamp
})>

Implementation

Future<
    ({
      BigInt balance,
      String state,
      Uint8List? code,
      Uint8List? data,
      LastTransactionId? lastTransaction,
      ({int seqno, String shard, int workchain}) blockId,
      int timestamp
    })> getContractState(InternalAddress address) async {
  var info = await _getAddressInformation(address);

  BigInt balance = switch (info.balance) {
    SbiString() => BigInt.parse((info.balance as SbiString).value),
    SbiBigInt() => (info.balance as SbiBigInt).value,
  };

  var state = info.state;

  return (
    balance: balance,
    state: state,
    code:
        info.code != '' ? Uint8List.fromList(base64.decode(info.code)) : null,
    data:
        info.data != '' ? Uint8List.fromList(base64.decode(info.data)) : null,
    lastTransaction: info.lastTransactionId.lt != '0'
        ? LastTransactionId(
            lt: info.lastTransactionId.lt,
            hash: info.lastTransactionId.hash,
          )
        : null,
    blockId: (
      workchain: info.blockId.workchain,
      shard: info.blockId.shard,
      seqno: info.blockId.seqno
    ),
    timestamp: info.syncUtime,
  );
}