/**
 *  ######################################
 *  ### DO NOT EDIT THIS FILE DIRECTLY ###
 *  ######################################
 *
 * This file is generated from:
 * /crates/sui-open-rpc/spec/openrpc.json
 */
import type { Transaction } from '../../transactions/index.js';
import type * as RpcTypes from './generated.js';
/**
 * Runs the transaction in dev-inspect mode. Which allows for nearly any transaction (or Move call)
 * with any arguments. Detailed results are provided, including both the transaction effects and any
 * return values.
 */
export interface DevInspectTransactionBlockParams {
    sender: string;
    /** BCS encoded TransactionKind(as opposed to TransactionData, which include gasBudget and gasPrice) */
    transactionBlock: Transaction | Uint8Array | string;
    /** Gas is not charged, but gas usage is still calculated. Default to use reference gas price */
    gasPrice?: bigint | number | null | undefined;
    /** The epoch to perform the call. Will be set from the system state object if not provided */
    epoch?: string | null | undefined;
    /** Additional arguments including gas_budget, gas_objects, gas_sponsor and skip_checks. */
    additionalArgs?: RpcTypes.DevInspectArgs | null | undefined;
    signal?: AbortSignal;
}
/**
 * Return transaction execution effects including the gas cost summary, while the effects are not
 * committed to the chain.
 */
export interface DryRunTransactionBlockParams {
    transactionBlock: Uint8Array | string;
    signal?: AbortSignal;
}
/**
 * Execute the transaction and wait for results if desired. Request types: 1. WaitForEffectsCert: waits
 * for TransactionEffectsCert and then return to client. This mode is a proxy for transaction
 * finality. 2. WaitForLocalExecution: waits for TransactionEffectsCert and make sure the node executed
 * the transaction locally before returning the client. The local execution makes sure this node is
 * aware of this transaction when client fires subsequent queries. However if the node fails to execute
 * the transaction locally in a timely manner, a bool type in the response is set to false to indicated
 * the case. request_type is default to be `WaitForEffectsCert` unless options.show_events or
 * options.show_effects is true
 */
export interface ExecuteTransactionBlockParams {
    /** BCS serialized transaction data bytes without its type tag, as base-64 encoded string. */
    transactionBlock: Uint8Array | string;
    /**
     * A list of signatures (`flag || signature || pubkey` bytes, as base-64 encoded string). Signature is
     * committed to the intent message of the transaction data, as base-64 encoded string.
     */
    signature: string | string[];
    /** options for specifying the content to be returned */
    options?: RpcTypes.SuiTransactionBlockResponseOptions | null | undefined;
    /** @deprecated requestType will be ignored by JSON RPC in the future */
    requestType?: RpcTypes.ExecuteTransactionRequestType | null | undefined;
    signal?: AbortSignal;
}
/** Return the first four bytes of the chain's genesis checkpoint digest. */
export interface GetChainIdentifierParams {
    signal?: AbortSignal;
}
/** Return a checkpoint */
export interface GetCheckpointParams {
    /** Checkpoint identifier, can use either checkpoint digest, or checkpoint sequence number as input. */
    id: RpcTypes.CheckpointId;
    signal?: AbortSignal;
}
/** Return paginated list of checkpoints */
export interface GetCheckpointsParams {
    /**
     * An optional paging cursor. If provided, the query will start from the next item after the specified
     * cursor. Default to start from the first item if not specified.
     */
    cursor?: string | null | undefined;
    /** Maximum item returned per page, default to [QUERY_MAX_RESULT_LIMIT_CHECKPOINTS] if not specified. */
    limit?: number | null | undefined;
    /** query result ordering, default to false (ascending order), oldest record first. */
    descendingOrder: boolean;
    signal?: AbortSignal;
}
/** Return transaction events. */
export interface GetEventsParams {
    /** the event query criteria. */
    transactionDigest: string;
    signal?: AbortSignal;
}
/** Return the sequence number of the latest checkpoint that has been executed */
export interface GetLatestCheckpointSequenceNumberParams {
    signal?: AbortSignal;
}
/** Return the argument types of a Move function, based on normalized Type. */
export interface GetMoveFunctionArgTypesParams {
    package: string;
    module: string;
    function: string;
    signal?: AbortSignal;
}
/** Return a structured representation of Move function */
export interface GetNormalizedMoveFunctionParams {
    package: string;
    module: string;
    function: string;
    signal?: AbortSignal;
}
/** Return a structured representation of Move module */
export interface GetNormalizedMoveModuleParams {
    package: string;
    module: string;
    signal?: AbortSignal;
}
/** Return structured representations of all modules in the given package */
export interface GetNormalizedMoveModulesByPackageParams {
    package: string;
    signal?: AbortSignal;
}
/** Return a structured representation of Move struct */
export interface GetNormalizedMoveStructParams {
    package: string;
    module: string;
    struct: string;
    signal?: AbortSignal;
}
/** Return the object information for a specified object */
export interface GetObjectParams {
    /** the ID of the queried object */
    id: string;
    /** options for specifying the content to be returned */
    options?: RpcTypes.SuiObjectDataOptions | null | undefined;
    signal?: AbortSignal;
}
/**
 * Return the protocol config table for the given version number. If the version number is not
 * specified, If none is specified, the node uses the version of the latest epoch it has processed.
 */
export interface GetProtocolConfigParams {
    /**
     * An optional protocol version specifier. If omitted, the latest protocol config table for the node
     * will be returned.
     */
    version?: string | null | undefined;
    signal?: AbortSignal;
}
/** Return the total number of transaction blocks known to the server. */
export interface GetTotalTransactionBlocksParams {
    signal?: AbortSignal;
}
/** Return the transaction response object. */
export interface GetTransactionBlockParams {
    /** the digest of the queried transaction */
    digest: string;
    /** options for specifying the content to be returned */
    options?: RpcTypes.SuiTransactionBlockResponseOptions | null | undefined;
    signal?: AbortSignal;
}
/** Return the object data for a list of objects */
export interface MultiGetObjectsParams {
    /** the IDs of the queried objects */
    ids: string[];
    /** options for specifying the content to be returned */
    options?: RpcTypes.SuiObjectDataOptions | null | undefined;
    signal?: AbortSignal;
}
/**
 * Returns an ordered list of transaction responses The method will throw an error if the input
 * contains any duplicate or the input size exceeds QUERY_MAX_RESULT_LIMIT
 */
export interface MultiGetTransactionBlocksParams {
    /** A list of transaction digests. */
    digests: string[];
    /** config options to control which fields to fetch */
    options?: RpcTypes.SuiTransactionBlockResponseOptions | null | undefined;
    signal?: AbortSignal;
}
/**
 * Note there is no software-level guarantee/SLA that objects with past versions can be retrieved by
 * this API, even if the object and version exists/existed. The result may vary across nodes depending
 * on their pruning policies. Return the object information for a specified version
 */
export interface TryGetPastObjectParams {
    /** the ID of the queried object */
    id: string;
    /** the version of the queried object. If None, default to the latest known version */
    version: number;
    /** options for specifying the content to be returned */
    options?: RpcTypes.SuiObjectDataOptions | null | undefined;
    signal?: AbortSignal;
}
/**
 * Note there is no software-level guarantee/SLA that objects with past versions can be retrieved by
 * this API, even if the object and version exists/existed. The result may vary across nodes depending
 * on their pruning policies. Return the object information for a specified version
 */
export interface TryMultiGetPastObjectsParams {
    /** a vector of object and versions to be queried */
    pastObjects: RpcTypes.GetPastObjectRequest[];
    /** options for specifying the content to be returned */
    options?: RpcTypes.SuiObjectDataOptions | null | undefined;
    signal?: AbortSignal;
}
/** Verify a zklogin signature for the given bytes, intent scope and author. */
export interface VerifyZkLoginSignatureParams {
    /**
     * The Base64 string of bcs bytes for raw transaction data or personal message indicated by
     * intent_scope.
     */
    bytes: string;
    /** The Base64 string of the zklogin signature to verify. */
    signature: string;
    /** The intent scope, either transaction data or personal message. Used to parse bytes. */
    intentScope: RpcTypes.ZkLoginIntentScope;
    /** The author of the signature. */
    author: string;
    signal?: AbortSignal;
}
/** Return the total coin balance for all coin type, owned by the address owner. */
export interface GetAllBalancesParams {
    /** the owner's Sui address */
    owner: string;
    signal?: AbortSignal;
}
/** Return all Coin objects owned by an address. */
export interface GetAllCoinsParams {
    /** the owner's Sui address */
    owner: string;
    /** optional paging cursor */
    cursor?: string | null | undefined;
    /** maximum number of items per page */
    limit?: number | null | undefined;
    signal?: AbortSignal;
}
/** Return the total coin balance for one coin type, owned by the address owner. */
export interface GetBalanceParams {
    /** the owner's Sui address */
    owner: string;
    /**
     * optional type names for the coin (e.g., 0x168da5bf1f48dafc111b0a488fa454aca95e0b5e::usdc::USDC),
     * default to 0x2::sui::SUI if not specified.
     */
    coinType?: string | null | undefined;
    signal?: AbortSignal;
}
/**
 * Return metadata (e.g., symbol, decimals) for a coin. Note that if the coin's metadata was wrapped in
 * the transaction that published its marker type, or the latest version of the metadata object is
 * wrapped or deleted, it will not be found.
 */
export interface GetCoinMetadataParams {
    /** type name for the coin (e.g., 0x168da5bf1f48dafc111b0a488fa454aca95e0b5e::usdc::USDC) */
    coinType: string;
    signal?: AbortSignal;
}
/** Return all Coin<`coin_type`> objects owned by an address. */
export interface GetCoinsParams {
    /** the owner's Sui address */
    owner: string;
    /**
     * optional type name for the coin (e.g., 0x168da5bf1f48dafc111b0a488fa454aca95e0b5e::usdc::USDC),
     * default to 0x2::sui::SUI if not specified.
     */
    coinType?: string | null | undefined;
    /** optional paging cursor */
    cursor?: string | null | undefined;
    /** maximum number of items per page */
    limit?: number | null | undefined;
    signal?: AbortSignal;
}
/** Return the committee information for the asked `epoch`. */
export interface GetCommitteeInfoParams {
    /** The epoch of interest. If None, default to the latest epoch */
    epoch?: string | null | undefined;
    signal?: AbortSignal;
}
/** Return the dynamic field object information for a specified object */
export interface GetDynamicFieldObjectParams {
    /** The ID of the queried parent object */
    parentId: string;
    /** The Name of the dynamic field */
    name: RpcTypes.DynamicFieldName;
    signal?: AbortSignal;
}
/** Return the list of dynamic field objects owned by an object. */
export interface GetDynamicFieldsParams {
    /** The ID of the parent object */
    parentId: string;
    /**
     * An optional paging cursor. If provided, the query will start from the next item after the specified
     * cursor. Default to start from the first item if not specified.
     */
    cursor?: string | null | undefined;
    /** Maximum item returned per page, default to [QUERY_MAX_RESULT_LIMIT] if not specified. */
    limit?: number | null | undefined;
    signal?: AbortSignal;
}
/** Return the latest SUI system state object on-chain. */
export interface GetLatestSuiSystemStateParams {
    signal?: AbortSignal;
}
/**
 * Return the list of objects owned by an address. Note that if the address owns more than
 * `QUERY_MAX_RESULT_LIMIT` objects, the pagination is not accurate, because previous page may have
 * been updated when the next page is fetched. Please use suix_queryObjects if this is a concern.
 */
export type GetOwnedObjectsParams = {
    /** the owner's Sui address */
    owner: string;
    /**
     * An optional paging cursor. If provided, the query will start from the next item after the specified
     * cursor. Default to start from the first item if not specified.
     */
    cursor?: string | null | undefined;
    /** Max number of items returned per page, default to [QUERY_MAX_RESULT_LIMIT] if not specified. */
    limit?: number | null | undefined;
    signal?: AbortSignal;
} & RpcTypes.SuiObjectResponseQuery;
/** Return the reference gas price for the network */
export interface GetReferenceGasPriceParams {
    signal?: AbortSignal;
}
/** Return all [DelegatedStake]. */
export interface GetStakesParams {
    owner: string;
    signal?: AbortSignal;
}
/** Return one or more [DelegatedStake]. If a Stake was withdrawn its status will be Unstaked. */
export interface GetStakesByIdsParams {
    stakedSuiIds: string[];
    signal?: AbortSignal;
}
/** Return total supply for a coin */
export interface GetTotalSupplyParams {
    /** type name for the coin (e.g., 0x168da5bf1f48dafc111b0a488fa454aca95e0b5e::usdc::USDC) */
    coinType: string;
    signal?: AbortSignal;
}
/** Return the validator APY */
export interface GetValidatorsApyParams {
    signal?: AbortSignal;
}
/** Return list of events for a specified query criteria. */
export interface QueryEventsParams {
    /**
     * The event query criteria. See [Event filter](https://docs.sui.io/build/event_api#event-filters)
     * documentation for examples.
     */
    query: RpcTypes.SuiEventFilter;
    /** optional paging cursor */
    cursor?: RpcTypes.EventId | null | undefined;
    /** maximum number of items per page, default to [QUERY_MAX_RESULT_LIMIT] if not specified. */
    limit?: number | null | undefined;
    /** query result ordering, default to false (ascending order), oldest record first. */
    order?: 'ascending' | 'descending' | null | undefined;
    signal?: AbortSignal;
}
/** Return list of transactions for a specified query criteria. */
export type QueryTransactionBlocksParams = {
    /**
     * An optional paging cursor. If provided, the query will start from the next item after the specified
     * cursor. Default to start from the first item if not specified.
     */
    cursor?: string | null | undefined;
    /** Maximum item returned per page, default to QUERY_MAX_RESULT_LIMIT if not specified. */
    limit?: number | null | undefined;
    /** query result ordering, default to false (ascending order), oldest record first. */
    order?: 'ascending' | 'descending' | null | undefined;
    signal?: AbortSignal;
} & RpcTypes.SuiTransactionBlockResponseQuery;
/** Return the resolved address given resolver and name */
export interface ResolveNameServiceAddressParams {
    /** The name to resolve */
    name: string;
    signal?: AbortSignal;
}
/**
 * Return the resolved names given address, if multiple names are resolved, the first one is the
 * primary name.
 */
export interface ResolveNameServiceNamesParams {
    /** The address to resolve */
    address: string;
    cursor?: string | null | undefined;
    limit?: number | null | undefined;
    signal?: AbortSignal;
}
/** Subscribe to a stream of Sui event */
export interface SubscribeEventParams {
    /**
     * The filter criteria of the event stream. See
     * [Event filter](https://docs.sui.io/build/event_api#event-filters) documentation for examples.
     */
    filter: RpcTypes.SuiEventFilter;
    signal?: AbortSignal;
}
/** Subscribe to a stream of Sui transaction effects */
export interface SubscribeTransactionParams {
    filter: RpcTypes.TransactionFilter;
    signal?: AbortSignal;
}
/** Create an unsigned batched transaction. */
export interface UnsafeBatchTransactionParams {
    /** the transaction signer's Sui address */
    signer: string;
    /** list of transaction request parameters */
    singleTransactionParams: RpcTypes.RPCTransactionRequestParams[];
    /**
     * gas object to be used in this transaction, node will pick one from the signer's possession if not
     * provided
     */
    gas?: string | null | undefined;
    /** the gas budget, the transaction will fail if the gas cost exceed the budget */
    gasBudget: string;
    /** Whether this is a regular transaction or a Dev Inspect Transaction */
    txnBuilderMode?: RpcTypes.SuiTransactionBlockBuilderMode | null | undefined;
    signal?: AbortSignal;
}
/** Create an unsigned transaction to merge multiple coins into one coin. */
export interface UnsafeMergeCoinsParams {
    /** the transaction signer's Sui address */
    signer: string;
    /** the coin object to merge into, this coin will remain after the transaction */
    primaryCoin: string;
    /**
     * the coin object to be merged, this coin will be destroyed, the balance will be added to
     * `primary_coin`
     */
    coinToMerge: string;
    /**
     * gas object to be used in this transaction, node will pick one from the signer's possession if not
     * provided
     */
    gas?: string | null | undefined;
    /** the gas budget, the transaction will fail if the gas cost exceed the budget */
    gasBudget: string;
    signal?: AbortSignal;
}
/**
 * Create an unsigned transaction to execute a Move call on the network, by calling the specified
 * function in the module of a given package.
 */
export interface UnsafeMoveCallParams {
    /** the transaction signer's Sui address */
    signer: string;
    /** the Move package ID, e.g. `0x2` */
    packageObjectId: string;
    /** the Move module name, e.g. `pay` */
    module: string;
    /** the move function name, e.g. `split` */
    function: string;
    /** the type arguments of the Move function */
    typeArguments: string[];
    /**
     * the arguments to be passed into the Move function, in [SuiJson](https://docs.sui.io/build/sui-json)
     * format
     */
    arguments: unknown[];
    /**
     * gas object to be used in this transaction, node will pick one from the signer's possession if not
     * provided
     */
    gas?: string | null | undefined;
    /** the gas budget, the transaction will fail if the gas cost exceed the budget */
    gasBudget: string;
    /**
     * Whether this is a Normal transaction or a Dev Inspect Transaction. Default to be
     * `SuiTransactionBlockBuilderMode::Commit` when it's None.
     */
    executionMode?: RpcTypes.SuiTransactionBlockBuilderMode | null | undefined;
    signal?: AbortSignal;
}
/**
 * Send `Coin<T>` to a list of addresses, where `T` can be any coin type, following a list of amounts,
 * The object specified in the `gas` field will be used to pay the gas fee for the transaction. The gas
 * object can not appear in `input_coins`. If the gas object is not specified, the RPC server will
 * auto-select one.
 */
export interface UnsafePayParams {
    /** the transaction signer's Sui address */
    signer: string;
    /** the Sui coins to be used in this transaction */
    inputCoins: string[];
    /** the recipients' addresses, the length of this vector must be the same as amounts. */
    recipients: string[];
    /** the amounts to be transferred to recipients, following the same order */
    amounts: string[];
    /**
     * gas object to be used in this transaction, node will pick one from the signer's possession if not
     * provided
     */
    gas?: string | null | undefined;
    /** the gas budget, the transaction will fail if the gas cost exceed the budget */
    gasBudget: string;
    signal?: AbortSignal;
}
/**
 * Send all SUI coins to one recipient. This is for SUI coin only and does not require a separate gas
 * coin object. Specifically, what pay_all_sui does are: 1. accumulate all SUI from input coins and
 * deposit all SUI to the first input coin 2. transfer the updated first coin to the recipient and also
 * use this first coin as gas coin object. 3. the balance of the first input coin after tx is
 * sum(input_coins) - actual_gas_cost. 4. all other input coins other than the first are deleted.
 */
export interface UnsafePayAllSuiParams {
    /** the transaction signer's Sui address */
    signer: string;
    /** the Sui coins to be used in this transaction, including the coin for gas payment. */
    inputCoins: string[];
    /** the recipient address, */
    recipient: string;
    /** the gas budget, the transaction will fail if the gas cost exceed the budget */
    gasBudget: string;
    signal?: AbortSignal;
}
/**
 * Send SUI coins to a list of addresses, following a list of amounts. This is for SUI coin only and
 * does not require a separate gas coin object. Specifically, what pay_sui does are: 1. debit each
 * input_coin to create new coin following the order of amounts and assign it to the corresponding
 * recipient. 2. accumulate all residual SUI from input coins left and deposit all SUI to the first
 * input coin, then use the first input coin as the gas coin object. 3. the balance of the first input
 * coin after tx is sum(input_coins) - sum(amounts) - actual_gas_cost 4. all other input coints other
 * than the first one are deleted.
 */
export interface UnsafePaySuiParams {
    /** the transaction signer's Sui address */
    signer: string;
    /** the Sui coins to be used in this transaction, including the coin for gas payment. */
    inputCoins: string[];
    /** the recipients' addresses, the length of this vector must be the same as amounts. */
    recipients: string[];
    /** the amounts to be transferred to recipients, following the same order */
    amounts: string[];
    /** the gas budget, the transaction will fail if the gas cost exceed the budget */
    gasBudget: string;
    signal?: AbortSignal;
}
/** Create an unsigned transaction to publish a Move package. */
export interface UnsafePublishParams {
    /** the transaction signer's Sui address */
    sender: string;
    /** the compiled bytes of a Move package */
    compiledModules: string[];
    /** a list of transitive dependency addresses that this set of modules depends on. */
    dependencies: string[];
    /**
     * gas object to be used in this transaction, node will pick one from the signer's possession if not
     * provided
     */
    gas?: string | null | undefined;
    /** the gas budget, the transaction will fail if the gas cost exceed the budget */
    gasBudget: string;
    signal?: AbortSignal;
}
/** Add stake to a validator's staking pool using multiple coins and amount. */
export interface UnsafeRequestAddStakeParams {
    /** the transaction signer's Sui address */
    signer: string;
    /** Coin<SUI> object to stake */
    coins: string[];
    /** stake amount */
    amount?: string | null | undefined;
    /** the validator's Sui address */
    validator: string;
    /**
     * gas object to be used in this transaction, node will pick one from the signer's possession if not
     * provided
     */
    gas?: string | null | undefined;
    /** the gas budget, the transaction will fail if the gas cost exceed the budget */
    gasBudget: string;
    signal?: AbortSignal;
}
/** Withdraw stake from a validator's staking pool. */
export interface UnsafeRequestWithdrawStakeParams {
    /** the transaction signer's Sui address */
    signer: string;
    /** StakedSui object ID */
    stakedSui: string;
    /**
     * gas object to be used in this transaction, node will pick one from the signer's possession if not
     * provided
     */
    gas?: string | null | undefined;
    /** the gas budget, the transaction will fail if the gas cost exceed the budget */
    gasBudget: string;
    signal?: AbortSignal;
}
/** Create an unsigned transaction to split a coin object into multiple coins. */
export interface UnsafeSplitCoinParams {
    /** the transaction signer's Sui address */
    signer: string;
    /** the coin object to be spilt */
    coinObjectId: string;
    /** the amounts to split out from the coin */
    splitAmounts: string[];
    /**
     * gas object to be used in this transaction, node will pick one from the signer's possession if not
     * provided
     */
    gas?: string | null | undefined;
    /** the gas budget, the transaction will fail if the gas cost exceed the budget */
    gasBudget: string;
    signal?: AbortSignal;
}
/** Create an unsigned transaction to split a coin object into multiple equal-size coins. */
export interface UnsafeSplitCoinEqualParams {
    /** the transaction signer's Sui address */
    signer: string;
    /** the coin object to be spilt */
    coinObjectId: string;
    /** the number of coins to split into */
    splitCount: string;
    /**
     * gas object to be used in this transaction, node will pick one from the signer's possession if not
     * provided
     */
    gas?: string | null | undefined;
    /** the gas budget, the transaction will fail if the gas cost exceed the budget */
    gasBudget: string;
    signal?: AbortSignal;
}
/**
 * Create an unsigned transaction to transfer an object from one address to another. The object's type
 * must allow public transfers
 */
export interface UnsafeTransferObjectParams {
    /** the transaction signer's Sui address */
    signer: string;
    /** the ID of the object to be transferred */
    objectId: string;
    /**
     * gas object to be used in this transaction, node will pick one from the signer's possession if not
     * provided
     */
    gas?: string | null | undefined;
    /** the gas budget, the transaction will fail if the gas cost exceed the budget */
    gasBudget: string;
    /** the recipient's Sui address */
    recipient: string;
    signal?: AbortSignal;
}
/**
 * Create an unsigned transaction to send SUI coin object to a Sui address. The SUI object is also used
 * as the gas object.
 */
export interface UnsafeTransferSuiParams {
    /** the transaction signer's Sui address */
    signer: string;
    /** the Sui coin object to be used in this transaction */
    suiObjectId: string;
    /** the gas budget, the transaction will fail if the gas cost exceed the budget */
    gasBudget: string;
    /** the recipient's Sui address */
    recipient: string;
    /** the amount to be split out and transferred */
    amount?: string | null | undefined;
    signal?: AbortSignal;
}
