Skip to main content

GraphQlClientInterface

type GraphQlClientInterface

The GraphQL client for interacting with the IOTA blockchain.

type GraphQlClientInterface interface {
// Get the balance of all the coins owned by address for the provided coin
// type. Coin type will default to `0x2::coin::Coin<0x2::iota::IOTA>`
// if not provided.
Balance(address *Address, coinType *string) (*uint64, error)
// Get the `CheckpointSummary` for a given checkpoint digest or
// checkpoint id. If none is provided, it will use the last known
// checkpoint id.
Checkpoint(digest **CheckpointDigest, seqNum *uint64) (**CheckpointSummary, error)
// Get a page of `CheckpointSummary` for the provided parameters.
Checkpoints(paginationFilter *PaginationFilter) (CheckpointSummaryPage, error)
// Return the sequence number of the latest checkpoint that has been
// executed.
LatestCheckpointSequenceNumber() (*uint64, error)
// The total number of transaction blocks in the network by the end of the
// last known checkpoint.
TotalTransactionBlocks() (*uint64, error)
// The total number of transaction blocks in the network by the end of the
// provided checkpoint digest.
TotalTransactionBlocksByDigest(digest *CheckpointDigest) (*uint64, error)
// The total number of transaction blocks in the network by the end of the
// provided checkpoint sequence number.
TotalTransactionBlocksBySeqNum(seqNum uint64) (*uint64, error)
// Get the coin metadata for the coin type.
CoinMetadata(coinType string) (*CoinMetadata, error)
// Get the list of coins for the specified address.
//
// If `coin_type` is not provided, all coins will be returned. For IOTA
// coins, pass in the coin type: `0x2::iota::IOTA`.
Coins(owner *Address, paginationFilter *PaginationFilter, coinType **StructTag) (CoinPage, error)
// Get the list of gas coins for the specified address.
GasCoins(owner *Address, paginationFilter *PaginationFilter) (CoinPage, error)
// Get total supply for the coin type.
TotalSupply(coinType string) (*uint64, error)
// Dry run a `Transaction` and return the transaction effects and dry run
// error (if any).
//
// `skipChecks` optional flag disables the usual verification checks that
// prevent access to objects that are owned by addresses other than the
// sender, and calling non-public, non-entry functions, and some other
// checks. Defaults to false.
DryRunTx(tx *Transaction, skipChecks bool) (DryRunResult, error)
// Dry run a `TransactionKind` and return the transaction effects and dry
// run error (if any).
//
// `skipChecks` optional flag disables the usual verification checks that
// prevent access to objects that are owned by addresses other than the
// sender, and calling non-public, non-entry functions, and some other
// checks. Defaults to false.
//
// `tx_meta` is the transaction metadata.
DryRunTxKind(txKind *TransactionKind, txMeta TransactionMetadata, skipChecks bool) (DryRunResult, error)
// Access a dynamic field on an object using its name. Names are arbitrary
// Move values whose type have copy, drop, and store, and are specified
// using their type, and their BCS contents, Base64 encoded.
//
// The `name` argument is a json serialized type.
//
// This returns `DynamicFieldOutput` which contains the name, the value
// as json, and object.
DynamicField(address *Address, typeTag *TypeTag, name Value) (*DynamicFieldOutput, error)
// Get a page of dynamic fields for the provided address. Note that this
// will also fetch dynamic fields on wrapped objects.
//
// This returns a page of `DynamicFieldOutput`s.
DynamicFields(address *Address, paginationFilter *PaginationFilter) (DynamicFieldOutputPage, error)
// Access a dynamic object field on an object using its name. Names are
// arbitrary Move values whose type have copy, drop, and store, and are
// specified using their type, and their BCS contents, Base64 encoded.
//
// The `name` argument is a json serialized type.
//
// This returns `DynamicFieldOutput` which contains the name, the value
// as json, and object.
DynamicObjectField(address *Address, typeTag *TypeTag, name Value) (*DynamicFieldOutput, error)
// Return the epoch information for the provided epoch. If no epoch is
// provided, it will return the last known epoch.
Epoch(epoch *uint64) (*Epoch, error)
// Return the number of checkpoints in this epoch. This will return
// `Ok(None)` if the epoch requested is not available in the GraphQL
// service (e.g., due to pruning).
EpochTotalCheckpoints(epoch *uint64) (*uint64, error)
// Return the number of transaction blocks in this epoch. This will return
// `Ok(None)` if the epoch requested is not available in the GraphQL
// service (e.g., due to pruning).
EpochTotalTransactionBlocks(epoch *uint64) (*uint64, error)
// Return a page of tuple (event, transaction digest) based on the
// (optional) event filter.
Events(filter *EventFilter, paginationFilter *PaginationFilter) (EventPage, error)
// Get the default name pointing to this address, if one exists.
IotaNamesDefaultName(address *Address, format *NameFormat) (**Name, error)
// Return the resolved address for the given name.
IotaNamesLookup(name string) (**Address, error)
// Find all registration NFTs for the given address.
IotaNamesRegistrations(address *Address, paginationFilter PaginationFilter) (NameRegistrationPage, error)
// Execute a Move View Function.
//
// A View Function is a function in a Move module with a return type that
// does not alter the state of the ledger. When using this interface,
// no transactions are submitted to the network for inclusion into the
// ledger.
//
// This method allows calling nearly any Move function with a return type
// and any arguments. The function's result values are provided and
// decoded using the appropriate Move type, then formatted in JSON.
//
// The use of this interface does not require signature checks (even for
// functions that take Owned Objects as input) or gas coins, as it does
// not alter ledger state. Spam attacks are dealt with at the RPC level
// rather than execution level.
//
// # Arguments
// * `function_name` - The Move function fully qualified name as
// `<package_id>::<module_name>::<function_name>`, e.g.,
// `0x2::hash::blake2b256`
// * `type_arguments` - The type arguments of the Move function
// * `arguments` - The typed arguments to be passed into the Move function
//
// # Returns
// A `MoveViewResult` containing either execution results (return values)
// or an error.
MoveViewCall(functionName string, typeArguments *[]*TypeTag, arguments *[]*MoveViewArg) (MoveViewResult, error)
// Execute a Move View Function with raw JSON arguments.
//
// This is an alternative to [`GraphQLClient::move_view_call`] that accepts
// raw JSON values instead of typed arguments.
//
// A View Function is a function in a Move module with a return type that
// does not alter the state of the ledger. When using this interface,
// no transactions are submitted to the network for inclusion into the
// ledger.
//
// # Arguments
// * `function_name` - The Move function fully qualified name as
// `<package_id>::<module_name>::<function_name>`, e.g.,
// `0x2::hash::blake2b256`
// * `type_arguments` - The type arguments of the Move function
// * `arguments` - The arguments to be passed into the Move function, in
// JSON format
//
// # Returns
// A `MoveViewResult` containing either execution results (return values)
// or an error.
MoveViewCallJson(functionName string, typeArguments *[]string, arguments *[]Value) (MoveViewResult, error)
// Get the list of active validators for the provided epoch, including
// related metadata. If no epoch is provided, it will return the active
// validators for the current epoch.
ActiveValidators(epoch *uint64, paginationFilter *PaginationFilter) (ValidatorPage, error)
// Get the chain identifier.
ChainId() (string, error)
// Get the protocol configuration.
ProtocolConfig(version *uint64) (ProtocolConfigs, error)
// Get the reference gas price for the provided epoch or the last known one
// if no epoch is provided.
//
// This will return `Ok(None)` if the epoch requested is not available in
// the GraphQL service (e.g., due to pruning).
ReferenceGasPrice(epoch *uint64) (*uint64, error)
// Return the contents' JSON of an object that is a Move object.
//
// If the object does not exist (e.g., due to pruning), this will return
// `Ok(None)`. Similarly, if this is not an object but an address, it
// will return `Ok(None)`.
MoveObjectContents(objectId *ObjectId, version **Version) (*Value, error)
// Return the BCS of an object that is a Move object.
//
// If the object does not exist (e.g., due to pruning), this will return
// `Ok(None)`. Similarly, if this is not an object but an address, it
// will return `Ok(None)`.
MoveObjectContentsBcs(objectId *ObjectId, version **Version) (*[]byte, error)
// Return an object based on the provided `Address`.
//
// If the object does not exist (e.g., due to pruning), this will return
// `Ok(None)`. Similarly, if this is not an object but an address, it
// will return `Ok(None)`.
Object(objectId *ObjectId, version **Version) (**Object, error)
// Return the object's bcs content `Vec<u8>` based on the provided
// `Address`.
ObjectBcs(objectId *ObjectId) (*[]byte, error)
// Return a page of objects based on the provided parameters.
//
// Use this function together with the `ObjectFilter::owner` to get the
// objects owned by an address.
Objects(filter *ObjectFilter, paginationFilter *PaginationFilter) (ObjectPage, error)
// Return the normalized Move function data for the provided package,
// module, and function.
NormalizedMoveFunction(varPackage *Address, module string, function string, version **Version) (**MoveFunction, error)
// Return the normalized Move module data for the provided module.
NormalizedMoveModule(varPackage *Address, module string, version **Version, paginationFilterEnums *PaginationFilter, paginationFilterFriends *PaginationFilter, paginationFilterFunctions *PaginationFilter, paginationFilterStructs *PaginationFilter) (*MoveModule, error)
// The package corresponding to the given address (at the optionally given
// version). When no version is given, the package is loaded directly
// from the address given. Otherwise, the address is translated before
// loading to point to the package whose original ID matches
// the package at address, but whose version is version. For non-system
// packages, this might result in a different address than address
// because different versions of a package, introduced by upgrades,
// exist at distinct addresses.
//
// Note that this interpretation of version is different from a historical
// object read (the interpretation of version for the object query).
Package(address *Address, version **Version) (**MovePackage, error)
// Fetch the latest version of the package at address.
// This corresponds to the package with the highest version that shares its
// original ID with the package at address.
PackageLatest(address *Address) (**MovePackage, error)
// Fetch all versions of package at address (packages that share this
// package's original ID), optionally bounding the versions exclusively
// from below with afterVersion, or from above with beforeVersion.
PackageVersions(address *Address, afterVersion **Version, beforeVersion **Version, paginationFilter *PaginationFilter) (MovePackagePage, error)
// The Move packages that exist in the network, optionally filtered to be
// strictly before beforeCheckpoint and/or strictly after
// afterCheckpoint.
//
// This query returns all versions of a given user package that appear
// between the specified checkpoints, but only records the latest
// versions of system packages.
Packages(afterCheckpoint *uint64, beforeCheckpoint *uint64, paginationFilter *PaginationFilter) (MovePackagePage, error)
// Execute a transaction.
ExecuteTx(signatures []*UserSignature, tx *Transaction, waitFor *WaitForTx) (*TransactionEffects, error)
// Returns whether the transaction for the given digest has been included
// in a checkpoint (finalized).
IsTxFinalized(digest *TransactionDigest) (bool, error)
// Returns whether the transaction for the given digest has been indexed
// on the node. This means that it can be queried by its digest and its
// effects will be usable for subsequent transactions. To check for
// full finalization, use `is_tx_finalized`.
IsTxIndexedOnNode(digest *TransactionDigest) (bool, error)
// Get a transaction by its digest.
Transaction(digest *TransactionDigest) (*SignedTransaction, error)
// Get a transaction's data and effects by its digest.
TransactionDataEffects(digest *TransactionDigest) (*TransactionDataEffects, error)
// Get a transaction's effects by its digest.
TransactionEffects(digest *TransactionDigest) (**TransactionEffects, error)
// Get a page of transactions based on the provided filters.
Transactions(filter *TransactionsFilter, paginationFilter *PaginationFilter) (SignedTransactionPage, error)
// Get a page of transactions' data and effects based on the provided
// filters.
TransactionsDataEffects(filter *TransactionsFilter, paginationFilter *PaginationFilter) (TransactionDataEffectsPage, error)
// Get a page of transactions' effects based on the provided filters.
TransactionsEffects(filter *TransactionsFilter, paginationFilter *PaginationFilter) (TransactionEffectsPage, error)
// Wait for the indexing (on the node, not the indexer) or finalization of
// a transaction by its digest. An optional timeout can be provided,
// which, if exceeded, will return an error (default 60s).
WaitForTx(digest *TransactionDigest, waitFor WaitForTx, timeout *time.Duration) error
// Lazily fetch the max page size
MaxPageSize() (int32, error)
// Run a query.
RunQuery(query Query) (Value, error)
// Get the GraphQL service configuration, including complexity limits, read
// and mutation limits, supported versions, and others.
ServiceConfig() (ServiceConfig, error)
// Set the server address for the GraphQL client. It should be a
// valid URL with a host and optionally a port number.
SetRpcServer(server string) error
// Subscribe to a live stream of events matching the (optional) filter.
//
// `start_after` optionally resumes from the transaction immediately
// following the given transaction digest; thereafter the subscription
// tracks its own resume point across reconnects.
//
// Note: subscriptions are served over a WebSocket and are currently
// supported on devnet and localnet only. They are unavailable altogether
// in the wasm build, where `next` raises.
EventsSubscription(filter *SubscriptionEventFilter, startAfter *string) *EventSubscription
// Subscribe to a live stream of transactions matching the (optional)
// filter.
//
// `start_after` optionally resumes from the transaction immediately
// following the given digest; thereafter the subscription tracks its own
// resume point across reconnects.
//
// Note: subscriptions are served over a WebSocket and are currently
// supported on devnet and localnet only. They are unavailable altogether
// in the wasm build, where `next` raises.
TransactionsSubscription(filter *SubscriptionTransactionFilter, startAfter *string) *TransactionSubscription
// Create a new `TransactionBuilder` with the given sender address.
TransactionBuilder(sender *Address) *ClientTransactionBuilder
}