SuiClient class

Legacy JSON-RPC client for a Sui full node.

JSON-RPC is being decommissioned (fully off on 2026-07-31). New code should use SuiGrpcClient (gRPC-web) and SuiGraphQLClient (GraphQL) instead; this class is kept for backward compatibility during the migration.

Signs with the optional account; call setSigner to attach one later.

Inheritance
Implemented types

Constructors

SuiClient(String endpoint, {SuiAccount? account, RequestOptions? options})
Creates a client for the JSON-RPC endpoint, optionally with a signing account. See SuiUrls for the well-known network endpoints.

Properties

account → SuiAccount?
The signing account, or null if none has been set.
no setter
client → JsonRpcClient
no setterinherited
hashCode → int
The hash code for this object.
no setterinherited
rpcClient ↔ JsonRpcClient
latefinalinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
serializer ↔ TxnDataSerializer
latefinalinherited

Methods

addStake(AddStakeTransaction transaction, {SuiTransactionBlockResponseOptions? options, ExecuteTransaction requestType = ExecuteTransaction.WaitForLocalExecution}) → Future<SuiExecuteTransactionResponse>
inherited
devInspectTransaction(String sender, Uint8List txBytes, {BigInt? gasPrice, String? epoch}) → Future<DevInspectResults>
inherited
devInspectTransactionBlock(String sender, Transaction transaction, {BigInt? gasPrice, String? epoch}) → Future<DevInspectResults>
Simulates transaction from sender without submitting it, returning the execution effects and any return values. Useful for gas estimation and read-only Move calls.
dryRunTransaction<T>(T tx, {String? signerAddress}) → Future<DryRunTransactionBlockResponse>
inherited
dryRunTransactionBlock(String txBytes) → Future<DryRunTransactionBlockResponse>
inherited
executeMoveCall(MoveCallTransaction transaction, {SuiTransactionBlockResponseOptions? options, ExecuteTransaction requestType = ExecuteTransaction.WaitForLocalExecution}) → Future<SuiExecuteTransactionResponse>
inherited
executeTransaction({required Uint8List txnBytes, required SignatureScheme signatureScheme, required Uint8List signature, required PublicKey pubkey, SuiTransactionBlockResponseOptions? options, ExecuteTransaction requestType = ExecuteTransaction.WaitForEffectsCert}) → Future<SuiExecuteTransactionResponse>
inherited
executeTransactionBlock(String transactionBlockBase64, List<String> signature, {SuiTransactionBlockResponseOptions? options, ExecuteTransaction requestType = ExecuteTransaction.WaitForEffectsCert}) → Future<SuiExecuteTransactionResponse>
inherited
getAddress() → SuiAddress
override
getAllBalance(String owner) → Future<List<CoinBalance>>
inherited
getAllCoins(String owner, {String? cursor, int? limit}) → Future<PaginatedCoins>
inherited
getBalance(String owner, {String coinType = "0x2::sui::SUI"}) → Future<CoinBalance>
inherited
getBalanceBatch(List<String> owner, {String coinType = "0x2::sui::SUI"}) → Future<List<CoinBalance>>
inherited
getBalanceBreakdown(String owner, String coinType) → Future<CoinBalanceBreakdown>
The owner's coinType balance split into coin-object vs address-balance sources — needed to resolve CoinWithBalance intents that may draw from the address balance. Transports without address-balance support (e.g. JSON-RPC) throw; the resolver only reaches this on the gRPC path.
override
getChainIdentifier() → Future<String>
inherited
getCheckpoint(String id) → Future<Checkpoint>
inherited
getCheckpoints({String? cursor, int? limit, bool descendingOrder = false}) → Future<Paged<List<Checkpoint>>>
inherited
getCoinMetadata(String coinType) → Future<CoinMetadataStruct>
inherited
getCoins(String owner, {String? coinType, String? cursor, int? limit}) → Future<PaginatedCoins>
inherited
getCommitteeInfo([String? epoch]) → Future<CommitteeInfo>
inherited
getCurrentEpoch() → Future
inherited
getDynamicFieldObject(String parentObjectId, String nameType, String nameValue) → Future<SuiObjectResponse>
inherited
getDynamicFields(String parentId, {String? cursor, int? limit}) → Future<DynamicFieldPage>
inherited
getEvents(String txDigest) → Future<List<SuiEvent>>
Events
inherited
getGasCostEstimation<T>(T tx, [String? signerAddress]) → Future<int>
Returns the estimated gas cost for the transaction, throw whens fails to estimate the gas cost.
inherited
getGasObjectsOwnedByAddress(String address) → Future<List<SuiObject>>
inherited
getLatestCheckpointSequenceNumber() → Future<BigInt>
inherited
getLatestSuiSystemState() → Future<SuiSystemStateSummary>
inherited
getMoveFunctionArgTypes({required String packageId, required String moduleName, required String functionName}) → Future<List>
inherited
getNormalizedMoveFunction(String packageId, String moduleName, String functionName) → Future<SuiMoveNormalizedFunction>
inherited
getNormalizedMoveModule(String packageId, String moduleName) → Future<SuiMoveNormalizedModule>
inherited
getNormalizedMoveModulesByPackage(String packageId) → Future<SuiMoveNormalizedModules>
inherited
getNormalizedMoveStruct(String packageId, String moduleName, String structName) → Future<SuiMoveNormalizedStruct>
inherited
getObject(String objectId, {SuiObjectDataOptions? options}) → Future<SuiObjectResponse>
inherited
getObjectBatch(List<String> objectIds) → Future<List<SuiObjectResponse>>
inherited
getObjectRef(String objectId) → Future<SuiObjectRef?>
inherited
getObjectsOwnedByObject(String objectId) → Future<List<SuiObject>>
inherited
getOwnedObjects(String address, {SuiObjectDataOptions? options, int limit = 50, String? cursor, Map? filter}) → Future<PaginatedObjectsResponse>
Objects
inherited
getOwnedObjectsShowAllOptions(String address, {Map<String, dynamic>? filter, int limit = 50, String? cursor}) → Future<PaginatedObjectsResponse>
inherited
getProtocolConfig([String? version]) → Future
inherited
getReferenceGasPrice() → Future<BigInt>
inherited
getRpcApiVersion() → Future<RpcApiVersion>
inherited
getStakes(SuiAddress address) → Future<List<DelegatedStake>>
inherited
getStakesByIds(List<String> stakedSuiIds) → Future<List<DelegatedStake>>
inherited
getTotalSupply(String coinType) → Future<CoinSupply>
inherited
getTotalTransactionBlocks() → Future<BigInt>
inherited
getTransactionBlock(TransactionDigest digest, {SuiTransactionBlockResponseOptions? options}) → Future<SuiExecuteTransactionResponse>
inherited
getTransactionBlockBatch(List<String> digests, [SuiTransactionBlockResponseOptions? options]) → Future<List<SuiTransactionBlockResponse>>
inherited
getTransactions(String address, {SuiTransactionBlockResponseOptions? options, TransactionDigest? filterFromCursor, TransactionDigest? filterToCursor, int? limit, bool descendingOrder = true}) → Future<(List<SuiTransactionBlockResponse>, String?, String?)>
Query Transactions
inherited
getValidatorsApy() → Future<ValidatorsApy>
inherited
multiGetObjects(List<String> objectIds, {SuiObjectDataOptions? options}) → Future<List<SuiObjectResponse>>
inherited
multiGetTransactionBlocks(List<String> digests, {SuiTransactionBlockResponseOptions? options}) → Future<List<SuiTransactionBlockResponse>>
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
pay(PayTransaction transaction, {SuiTransactionBlockResponseOptions? options, ExecuteTransaction requestType = ExecuteTransaction.WaitForLocalExecution}) → Future<SuiExecuteTransactionResponse>
inherited
payAllSui(PayAllSuiTransaction transaction, {SuiTransactionBlockResponseOptions? options, ExecuteTransaction requestType = ExecuteTransaction.WaitForLocalExecution}) → Future<SuiExecuteTransactionResponse>
inherited
paySui(PaySuiTransaction transaction, {SuiTransactionBlockResponseOptions? options, ExecuteTransaction requestType = ExecuteTransaction.WaitForLocalExecution}) → Future<SuiExecuteTransactionResponse>
inherited
publish(PublishTransaction transaction, {SuiTransactionBlockResponseOptions? options, ExecuteTransaction requestType = ExecuteTransaction.WaitForLocalExecution}) → Future<SuiExecuteTransactionResponse>
inherited
queryEvents(Map query, {String? cursor, int? limit, bool descendingOrder = false}) → Future<Paged<List<SuiEvent>>>
inherited
queryEventsByFilter(EventFilter filter, {String? cursor, int? limit, bool descendingOrder = false}) → Future<Paged<List<SuiEvent>>>
inherited
queryTransactionBlocks(Map filter, {SuiTransactionBlockResponseOptions? options, int? limit, String? cursor, bool descendingOrder = true}) → Future<PaginatedTransactionResponse>
inherited
queryTransactionEvents(TransactionDigest digest, {String? cursor, int limit = 1, bool descendingOrder = true}) → Future<Paged<List<SuiEvent>>>
inherited
resolveGasData(TransactionBlockDataBuilder data) → Future<ResolvedGasData?>
JSON-RPC has no server-side gas resolution; the builder falls back to local coin selection and a budget dry-run.
override
resolveNameServiceAddress(String name) → Future<String?>
inherited
resolveNameServiceNames(String address, {String? cursor, int? limit}) → Future<Paged<List<String>>?>
inherited
setSigner(SuiAccount signer) → void
override
signAndExecuteSignableTransaction({required SignableTransaction transaction, SuiTransactionBlockResponseOptions? options, ExecuteTransaction requestType = ExecuteTransaction.WaitForLocalExecution}) → Future<SuiExecuteTransactionResponse>
inherited
signAndExecuteTransaction({required Uint8List transaction, SuiTransactionBlockResponseOptions? options, ExecuteTransaction requestType = ExecuteTransaction.WaitForLocalExecution}) → Future<SuiExecuteTransactionResponse>
Sign a transaction and submit to the Fullnode for execution. Only exists on Fullnode
inherited
signAndExecuteTransactionBlock(SuiAccount signer, Transaction transaction, {BuildOptions? options, SuiTransactionBlockResponseOptions? responseOptions, ExecuteTransaction requestType = ExecuteTransaction.WaitForEffectsCert}) → Future<SuiExecuteTransactionResponse>
Builds, signs (with signer) and executes transaction, returning the full transaction-block response. Pass responseOptions to control which effects/changes are returned.
signData(Uint8List data) → SignaturePubkeyPair
override
splitCoin(SplitCoinTransaction transaction, {SuiTransactionBlockResponseOptions? options, ExecuteTransaction requestType = ExecuteTransaction.WaitForLocalExecution}) → Future<SuiExecuteTransactionResponse>
inherited
splitCoinEqual(SplitCoinEqualTransaction transaction, {SuiTransactionBlockResponseOptions? options, ExecuteTransaction requestType = ExecuteTransaction.WaitForLocalExecution}) → Future<SuiExecuteTransactionResponse>
inherited
toString() → SuiAddress
A string representation of this object.
inherited
transferObject(TransferObjectTransaction transaction, {SuiTransactionBlockResponseOptions? options, ExecuteTransaction requestType = ExecuteTransaction.WaitForLocalExecution}) → Future<SuiExecuteTransactionResponse>
inherited
transferSui(TransferSuiTransaction transaction, {SuiTransactionBlockResponseOptions? options, ExecuteTransaction requestType = ExecuteTransaction.WaitForLocalExecution}) → Future<SuiExecuteTransactionResponse>
inherited
tryGetPastObject(String id, int version, {SuiObjectDataOptions? options}) → Future<ObjectRead>
inherited
waitForTransaction(TransactionDigest digest, {SuiTransactionBlockResponseOptions? options, int timeout = 60 * 1000, int pollInterval = 2 * 1000}) → Future<SuiExecuteTransactionResponse>
inherited
withdrawStake(WithdrawStakeTransaction transaction, {SuiTransactionBlockResponseOptions? options, ExecuteTransaction requestType = ExecuteTransaction.WaitForLocalExecution}) → Future<SuiExecuteTransactionResponse>
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited