Skip to main content
Version: 8.6.0

Class: AccountInterface

Interface for interacting with Starknet account contracts

Extends ProviderInterface to provide account-specific functionality including:

  • Transaction execution and signing
  • Fee estimation for various transaction types
  • Contract deployment through UDC (Universal Deployer Contract)
  • Paymaster support for sponsored transactions
  • EIP-712 message signing

Remarks

Implementations of this interface typically handle the complexities of:

  • Nonce management
  • Transaction signing with the account's private key
  • Interaction with the account contract's execute entrypoint

Hierarchy​

Implemented by​

Constructors​

constructor​

• new AccountInterface(): AccountInterface

Returns​

AccountInterface

Inherited from​

ProviderInterface.constructor

Properties​

address​

• Abstract address: string

The address of the account contract on Starknet

Defined in​

src/account/interface.ts:56


signer​

• Abstract signer: SignerInterface

Signer instance for signing transactions and messages

Defined in​

src/account/interface.ts:61


cairoVersion​

• Abstract cairoVersion: CairoVersion

Cairo version of the account contract implementation

Defined in​

src/account/interface.ts:66


deployer​

• Optional Abstract deployer: DeployerInterface

Optional deployer instance for custom contract deployment logic

Default

Uses default UDC (Universal Deployer Contract) if not specified

Defined in​

src/account/interface.ts:72


channel​

• Abstract channel: RpcChannel | RpcChannel

Inherited from​

ProviderInterface.channel

Defined in​

src/provider/interface.ts:47


responseParser​

• Abstract responseParser: RPCResponseParser

Inherited from​

ProviderInterface.responseParser

Defined in​

src/provider/interface.ts:49

Methods​

estimateInvokeFee​

▸ estimateInvokeFee(calls, estimateFeeDetails?): Promise<EstimateFeeResponseOverhead>

Estimate fee for executing an INVOKE transaction on Starknet

Parameters​

NameTypeDescription
callsAllowArray<Call>Single call or array of calls to estimate fees for
estimateFeeDetails?UniversalDetailsOptional details for fee estimation

Returns​

Promise<EstimateFeeResponseOverhead>

Fee estimation including overall_fee and resourceBounds

Example

const fee = await account.estimateInvokeFee({
contractAddress: '0x123...',
entrypoint: 'transfer',
calldata: [recipient, amount],
});

Defined in​

src/account/interface.ts:104


estimateDeclareFee​

▸ estimateDeclareFee(contractPayload, estimateFeeDetails?): Promise<EstimateFeeResponseOverhead>

Estimate fee for executing a DECLARE transaction on Starknet

Parameters​

NameTypeDescription
contractPayloadDeclareContractPayloadContract declaration payload
estimateFeeDetails?UniversalDetailsOptional details for fee estimation

Returns​

Promise<EstimateFeeResponseOverhead>

Fee estimation including overall_fee and resourceBounds

Example

const fee = await account.estimateDeclareFee({
contract: compiledContract,
casm: compiledCasm,
});

Defined in​

src/account/interface.ts:134


estimateAccountDeployFee​

▸ estimateAccountDeployFee(contractPayload, estimateFeeDetails?): Promise<EstimateFeeResponseOverhead>

Estimate fee for executing an INVOKE transaction on Starknet

Parameters​

NameTypeDescription
contractPayloadDeployAccountContractPayloadSingle call or array of calls to estimate fees for
estimateFeeDetails?UniversalDetailsOptional details for fee estimation

Returns​

Promise<EstimateFeeResponseOverhead>

Fee estimation including overall_fee and resourceBounds

Fee estimation including overall_fee and resourceBounds

Example

const fee = await account.estimateAccountDeployFee({
classHash: accountClassHash,
constructorCalldata: { publicKey },
addressSalt: publicKey,
});

Defined in​

src/account/interface.ts:161


estimateDeployFee​

▸ estimateDeployFee(deployContractPayload, estimateFeeDetails?): Promise<EstimateFeeResponseOverhead>

Estimate fee for executing an INVOKE transaction on Starknet

Parameters​

NameTypeDescription
deployContractPayloadUniversalDeployerContractPayload | UniversalDeployerContractPayload[]Single call or array of calls to estimate fees for
estimateFeeDetails?UniversalDetailsOptional details for fee estimation

Returns​

Promise<EstimateFeeResponseOverhead>

Fee estimation for the deployment transaction

Fee estimation including overall_fee and resourceBounds

Example

const fee = await account.estimateDeployFee({
classHash: contractClassHash,
constructorCalldata: [param1, param2],
unique: true,
});

Defined in​

src/account/interface.ts:188


estimateFeeBulk​

▸ estimateFeeBulk(invocations, details?): Promise<EstimateFeeResponseBulkOverhead>

Estimate fee for executing an INVOKE transaction on Starknet

Parameters​

NameTypeDescription
invocationsInvocationsSingle call or array of calls to estimate fees for
details?UniversalDetailsOptional details for fee estimation

Returns​

Promise<EstimateFeeResponseBulkOverhead>

Array of fee estimations for each transaction

Fee estimation including overall_fee and resourceBounds

Example

const fees = await account.estimateFeeBulk([
{ type: 'INVOKE', payload: { contractAddress, entrypoint, calldata } },
{ type: 'DECLARE', payload: { contract, casm } },
]);

Defined in​

src/account/interface.ts:212


execute​

▸ execute(transactions, transactionsDetail?): Promise<{ transaction_hash: string }>

Execute one or multiple calls through the account contract

Parameters​

NameTypeDescription
transactionsAllowArray<Call>Single call or array of calls to execute
transactionsDetail?InvocationsDetailsTransaction execution options

Returns​

Promise<{ transaction_hash: string }>

Transaction hash and response

Example

const result = await account.execute([
{ contractAddress: token, entrypoint: 'transfer', calldata: [to, amount] },
{ contractAddress: nft, entrypoint: 'mint', calldata: [recipient] },
]);

Defined in​

src/account/interface.ts:241


estimatePaymasterTransactionFee​

▸ estimatePaymasterTransactionFee(calls, paymasterDetails): Promise<PaymasterFeeEstimate>

Estimate fees for a paymaster-sponsored transaction

Parameters​

NameTypeDescription
callsCall[]Array of calls to be sponsored
paymasterDetailsPaymasterDetailsPaymaster configuration

Returns​

Promise<PaymasterFeeEstimate>

Fee estimates in both STRK and gas token

Example

const fees = await account.estimatePaymasterTransactionFee(
[{ contractAddress, entrypoint, calldata }],
{ feeMode: { mode: 'sponsored' } }
);

Defined in​

src/account/interface.ts:268


buildPaymasterTransaction​

▸ buildPaymasterTransaction(calls, paymasterDetails): Promise<PreparedTransaction>

Estimate fees for a paymaster-sponsored transaction

Parameters​

NameTypeDescription
callsCall[]Array of calls to be sponsored
paymasterDetailsPaymasterDetailsPaymaster configuration

Returns​

Promise<PreparedTransaction>

Prepared transaction with typed data for signing

Fee estimates in both STRK and gas token

Example

const prepared = await account.buildPaymasterTransaction(calls, {
feeMode: { mode: 'default', gasToken: ETH_ADDRESS },
});

Defined in​

src/account/interface.ts:289


executePaymasterTransaction​

▸ executePaymasterTransaction(calls, paymasterDetails, maxFeeInGasToken?): Promise<{ transaction_hash: string }>

Execute a paymaster-sponsored transaction

Parameters​

NameTypeDescription
callsCall[]Array of calls to execute
paymasterDetailsPaymasterDetailsPaymaster configuration
maxFeeInGasToken?BigNumberishMaximum acceptable fee in gas token

Returns​

Promise<{ transaction_hash: string }>

Transaction hash if successful

Throws

If gas token price exceeds maxFeeInGasToken

Throws

If transaction parameters are modified by paymaster

Example

const txHash = await account.executePaymasterTransaction(
calls,
{ feeMode: { mode: 'sponsored' }, timeBounds: { executeBefore: Date.now() / 1000 + 3600 } },
maxFeeETH
);

Defined in​

src/account/interface.ts:317


declare​

▸ declare(contractPayload, transactionsDetail?): Promise<{ class_hash: string ; transaction_hash: string }>

Execute one or multiple calls through the account contract

Parameters​

NameTypeDescription
contractPayloadDeclareContractPayloadSingle call or array of calls to execute
transactionsDetail?InvocationsDetailsTransaction execution options

Returns​

Promise<{ class_hash: string ; transaction_hash: string }>

Declaration transaction hash and class hash

Transaction hash and response

Example

const declareResult = await account.declare({
contract: compiledSierra,
casm: compiledCasm,
});

Defined in​

src/account/interface.ts:344


deploy​

▸ deploy(payload, details?): Promise<MultiDeployContractResponse>

Execute one or multiple calls through the account contract

Parameters​

NameTypeDescription
payloadUniversalDeployerContractPayload | UniversalDeployerContractPayload[]Single call or array of calls to execute
details?InvocationsDetailsTransaction execution options

Returns​

Promise<MultiDeployContractResponse>

Deployed contract addresses and transaction hash

Transaction hash and response

Example

const deployment = await account.deploy([
{ classHash: erc20ClassHash, constructorCalldata: [name, symbol] },
{ classHash: nftClassHash, unique: true },
]);

Defined in​

src/account/interface.ts:370


deployContract​

▸ deployContract(payload, details?): Promise<DeployContractUDCResponse>

Execute one or multiple calls through the account contract

Parameters​

NameTypeDescription
payloadUniversalDeployerContractPayload | UniversalDeployerContractPayload[]Single call or array of calls to execute
details?InvocationsDetailsTransaction execution options

Returns​

Promise<DeployContractUDCResponse>

Deployment result with contract address and UDC event details

Deployed contract addresses and transaction hash

Remarks

This method waits for transaction confirmation before returning

Example

const result = await account.deployContract({
classHash: contractClassHash,
constructorCalldata: params,
});
console.log('Deployed at:', result.address);

Defined in​

src/account/interface.ts:396


declareAndDeploy​

▸ declareAndDeploy(payload, details?): Promise<DeclareDeployUDCResponse>

Execute one or multiple calls through the account contract

Parameters​

NameTypeDescription
payloadDeclareAndDeployContractPayloadSingle call or array of calls to execute
details?InvocationsDetailsTransaction execution options

Returns​

Promise<DeclareDeployUDCResponse>

Declaration and deployment results

Transaction hash and response

Remarks

  • Automatically skips declaration if contract is already declared
  • Waits for both transactions to complete
  • Does not support batch operations

Example

const result = await account.declareAndDeploy({
contract: compiledContract,
casm: compiledCasm,
constructorCalldata: [param1, param2],
});

Defined in​

src/account/interface.ts:430


deployAccount​

▸ deployAccount(contractPayload, transactionsDetail?): Promise<DeployContractResponse>

Execute one or multiple calls through the account contract

Parameters​

NameTypeDescription
contractPayloadDeployAccountContractPayloadSingle call or array of calls to execute
transactionsDetail?InvocationsDetailsTransaction execution options

Returns​

Promise<DeployContractResponse>

Deployment transaction hash and contract address

Transaction hash and response

Remarks

Used for deploying the account contract when using a pre-funded address

Example

const deployment = await account.deployAccount({
classHash: accountClassHash,
constructorCalldata: { publicKey: pubKey },
addressSalt: pubKey,
});

Defined in​

src/account/interface.ts:459


signMessage​

▸ signMessage(typedData): Promise<Signature>

Sign a typed data message for off-chain verification

Parameters​

NameTypeDescription
typedDataTypedDataEIP-712 style typed data structure

Returns​

Promise<Signature>

Signature array [r, s]

Remarks

  • Includes domain separation to prevent signature reuse
  • Compatible with Starknet's signature verification
  • Cannot be used to sign transactions

Example

const signature = await account.signMessage({
domain: { name: 'MyDapp', chainId: 'SN_MAIN' },
types: { ... },
primaryType: 'Message',
message: { content: 'Hello Starknet!' }
});

Defined in​

src/account/interface.ts:483


hashMessage​

▸ hashMessage(typedData): Promise<string>

Hash a typed data message using Pedersen hash

Parameters​

NameTypeDescription
typedDataTypedDataEIP-712 style typed data structure

Returns​

Promise<string>

Message hash as hex string

Remarks

  • Uses Pedersen hash function (not Keccak)
  • Includes domain separation
  • Result can be used for signature verification

Example

const messageHash = await account.hashMessage(typedData);

Defined in​

src/account/interface.ts:499


getNonce​

▸ getNonce(blockIdentifier?): Promise<string>

Get the current nonce of the account

Parameters​

NameTypeDescription
blockIdentifier?BlockIdentifierBlock to query nonce at (default: 'pending')

Returns​

Promise<string>

Account nonce as hex string

Example

const nonce = await account.getNonce();
const historicalNonce = await account.getNonce('latest');

Defined in​

src/account/interface.ts:512


declareIfNot​

▸ declareIfNot(contractPayload, transactionsDetail?): Promise<{ class_hash: string ; transaction_hash: string }>

Declare a contract class if not already declared

Parameters​

NameTypeDescription
contractPayloadDeclareContractPayloadContract declaration payload
transactionsDetail?InvocationsDetailsTransaction execution options

Returns​

Promise<{ class_hash: string ; transaction_hash: string }>

Declaration result (with empty transaction_hash if already declared)

Example

const result = await account.declareIfNot({
contract: compiledContract,
casm: compiledCasm,
});

Defined in​

src/account/interface.ts:528


getChainId​

▸ getChainId(): Promise<"0x534e5f4d41494e" | "0x534e5f5345504f4c4941">

Gets the Starknet chain Id

Returns​

Promise<"0x534e5f4d41494e" | "0x534e5f5345504f4c4941">

the chain Id

Inherited from​

ProviderInterface.getChainId

Defined in​

src/provider/interface.ts:56


callContract​

▸ callContract(call, blockIdentifier?): Promise<CallContractResponse>

Calls a function on the Starknet contract.

Parameters​

NameTypeDescription
callCalltransaction to be called
blockIdentifier?BlockIdentifierblock identifier

Returns​

Promise<CallContractResponse>

the result of the function on the smart contract.

Inherited from​

ProviderInterface.callContract

Defined in​

src/provider/interface.ts:65


getBlock​

▸ getBlock(): Promise<{ transactions: string[] ; parent_hash: string ; timestamp: number ; sequencer_address: string ; l1_gas_price: RESOURCE_PRICE ; l2_gas_price: RESOURCE_PRICE ; l1_data_gas_price: RESOURCE_PRICE ; l1_da_mode: L1_DA_MODE ; starknet_version: string }>

Gets the block information

Returns​

Promise<{ transactions: string[] ; parent_hash: string ; timestamp: number ; sequencer_address: string ; l1_gas_price: RESOURCE_PRICE ; l2_gas_price: RESOURCE_PRICE ; l1_data_gas_price: RESOURCE_PRICE ; l1_da_mode: L1_DA_MODE ; starknet_version: string }>

the block object

Inherited from​

ProviderInterface.getBlock

Defined in​

src/provider/interface.ts:76

▸ getBlock(blockIdentifier): Promise<{ transactions: string[] ; parent_hash: string ; timestamp: number ; sequencer_address: string ; l1_gas_price: RESOURCE_PRICE ; l2_gas_price: RESOURCE_PRICE ; l1_data_gas_price: RESOURCE_PRICE ; l1_da_mode: L1_DA_MODE ; starknet_version: string }>

Parameters​

NameType
blockIdentifier"pre_confirmed"

Returns​

Promise<{ transactions: string[] ; parent_hash: string ; timestamp: number ; sequencer_address: string ; l1_gas_price: RESOURCE_PRICE ; l2_gas_price: RESOURCE_PRICE ; l1_data_gas_price: RESOURCE_PRICE ; l1_da_mode: L1_DA_MODE ; starknet_version: string }>

Inherited from​

ProviderInterface.getBlock

Defined in​

src/provider/interface.ts:77

▸ getBlock(blockIdentifier): Promise<{ status: EBlockStatus ; block_hash: string ; parent_hash: string ; block_number: number ; new_root: string ; timestamp: number ; sequencer_address: string ; l1_gas_price: RESOURCE_PRICE ; l2_gas_price: RESOURCE_PRICE ; l1_data_gas_price: RESOURCE_PRICE ; l1_da_mode: L1_DA_MODE ; starknet_version: string ; transactions: string[] }>

Parameters​

NameType
blockIdentifier"latest"

Returns​

Promise<{ status: EBlockStatus ; block_hash: string ; parent_hash: string ; block_number: number ; new_root: string ; timestamp: number ; sequencer_address: string ; l1_gas_price: RESOURCE_PRICE ; l2_gas_price: RESOURCE_PRICE ; l1_data_gas_price: RESOURCE_PRICE ; l1_da_mode: L1_DA_MODE ; starknet_version: string ; transactions: string[] }>

Inherited from​

ProviderInterface.getBlock

Defined in​

src/provider/interface.ts:78

▸ getBlock(blockIdentifier): Promise<GetBlockResponse>

Parameters​

NameType
blockIdentifierBlockIdentifier

Returns​

Promise<GetBlockResponse>

Inherited from​

ProviderInterface.getBlock

Defined in​

src/provider/interface.ts:79


getClassAt​

▸ getClassAt(contractAddress, blockIdentifier?): Promise<ContractClassResponse>

Gets the contract class of the deployed contract.

Parameters​

NameTypeDescription
contractAddressBigNumberishcontract address
blockIdentifier?BlockIdentifierblock identifier

Returns​

Promise<ContractClassResponse>

Contract class of compiled contract

Inherited from​

ProviderInterface.getClassAt

Defined in​

src/provider/interface.ts:88


getL1GasPrice​

▸ getL1GasPrice(blockIdentifier?): Promise<string>

Gets the price of l1 gas in the block

Parameters​

NameTypeDescription
blockIdentifier?BlockIdentifierblock identifier

Returns​

Promise<string>

gas price of the block

Inherited from​

ProviderInterface.getL1GasPrice

Defined in​

src/provider/interface.ts:99


getL1MessageHash​

▸ getL1MessageHash(l2TxHash): Promise<string>

Get L1 message hash from L2 transaction hash

Parameters​

NameTypeDescription
l2TxHashBigNumberishL2 transaction hash

Returns​

Promise<string>

Hex string of L1 message hash

Example

In Sepolia Testnet :

const result = provider.getL1MessageHash(
'0x28dfc05eb4f261b37ddad451ff22f1d08d4e3c24dc646af0ec69fa20e096819'
);
// result = '0x55b3f8b6e607fffd9b4d843dfe8f9b5c05822cd94fcad8797deb01d77805532a'

Inherited from​

ProviderInterface.getL1MessageHash

Defined in​

src/provider/interface.ts:112


getClassHashAt​

▸ getClassHashAt(contractAddress, blockIdentifier?): Promise<string>

Returns the contract class hash in the given block for the contract deployed at the given address

Parameters​

NameTypeDescription
contractAddressBigNumberishcontract address
blockIdentifier?BlockIdentifierblock identifier

Returns​

Promise<string>

Class hash

Inherited from​

ProviderInterface.getClassHashAt

Defined in​

src/provider/interface.ts:121


getClassByHash​

▸ getClassByHash(classHash): Promise<ContractClassResponse>

Returns the contract class deployed under the given class hash.

Parameters​

NameTypeDescription
classHashBigNumberishclass hash

Returns​

Promise<ContractClassResponse>

Contract class of compiled contract

Inherited from​

ProviderInterface.getClassByHash

Defined in​

src/provider/interface.ts:132


getNonceForAddress​

▸ getNonceForAddress(contractAddress, blockIdentifier?): Promise<string>

Returns the nonce associated with the given address in the given block

Parameters​

NameTypeDescription
contractAddressBigNumberishcontract address
blockIdentifier?BlockIdentifier-

Returns​

Promise<string>

the hex nonce

Inherited from​

ProviderInterface.getNonceForAddress

Defined in​

src/provider/interface.ts:140


getStorageAt​

▸ getStorageAt(contractAddress, key, blockIdentifier?): Promise<string>

Get the value of the storage (contract's variable) at the given address and key

Parameters​

NameTypeDescription
contractAddressBigNumberish
keyBigNumberishfrom getStorageVarAddress('<STORAGE_VARIABLE_NAME>') (WIP)
blockIdentifier?BlockIdentifierblock identifier

Returns​

Promise<string>

the value of the storage variable

Inherited from​

ProviderInterface.getStorageAt

Defined in​

src/provider/interface.ts:153


getTransaction​

▸ getTransaction(transactionHash): Promise<TransactionWithHash>

Gets the transaction information from a tx id.

Parameters​

NameType
transactionHashBigNumberish

Returns​

Promise<TransactionWithHash>

the transaction object { transaction_id, status, transaction, block_number?, block_number?, transaction_index?, transaction_failure_reason? }

Inherited from​

ProviderInterface.getTransaction

Defined in​

src/provider/interface.ts:165


getTransactionReceipt​

▸ getTransactionReceipt(transactionHash): Promise<GetTransactionReceiptResponse>

Gets the transaction receipt from a tx hash.

Parameters​

NameType
transactionHashBigNumberish

Returns​

Promise<GetTransactionReceiptResponse>

the transaction receipt object

Inherited from​

ProviderInterface.getTransactionReceipt

Defined in​

src/provider/interface.ts:173


deployAccountContract​

▸ deployAccountContract(payload, details): Promise<DeployContractResponse>

Deploys a given compiled Account contract (json) to starknet

Parameters​

NameTypeDescription
payloadDeployAccountContractPayloadpayload to be deployed containing: - compiled contract code - constructor calldata - address salt
detailsInvocationsDetailsWithNonce-

Returns​

Promise<DeployContractResponse>

a confirmation of sending a transaction on the starknet contract

Inherited from​

ProviderInterface.deployAccountContract

Defined in​

src/provider/interface.ts:186


invokeFunction​

▸ invokeFunction(invocation, details): Promise<{ transaction_hash: string }>

Invokes a function on starknet

Parameters​

NameTypeDescription
invocationInvocationthe invocation object containing: - contractAddress - the address of the contract - entrypoint - (optional) the entrypoint of the contract - calldata - (optional, defaults to []) the calldata - signature - (optional, defaults to []) the signature
detailsInvocationsDetailsWithNonceoptional details containing: - nonce - optional nonce - version - optional version - maxFee - optional maxFee

Returns​

Promise<{ transaction_hash: string }>

response from addTransaction

Inherited from​

ProviderInterface.invokeFunction

Defined in​

src/provider/interface.ts:205


declareContract​

▸ declareContract(transaction, details): Promise<{ class_hash: string ; transaction_hash: string }>

Declares a given compiled contract (json) to starknet

Parameters​

NameTypeDescription
transactionDeclareContractTransactiontransaction payload to be deployed containing: - compiled contract code - sender address - signature
detailsInvocationsDetailsWithNonceInvocation Details containing: - nonce - optional version - optional maxFee

Returns​

Promise<{ class_hash: string ; transaction_hash: string }>

a confirmation of sending a transaction on the starknet contract

Inherited from​

ProviderInterface.declareContract

Defined in​

src/provider/interface.ts:222


getInvokeEstimateFee​

▸ getInvokeEstimateFee(invocation, details, blockIdentifier?, skipValidate?): Promise<EstimateFeeResponseOverhead>

Estimates the fee for a given INVOKE transaction

Parameters​

NameTypeDescription
invocationInvocationthe invocation object containing: - contractAddress - the address of the contract - entrypoint - (optional) the entrypoint of the contract - calldata - (optional, defaults to []) the calldata - signature - (optional, defaults to []) the signature
detailsInvocationsDetailsWithNonceoptional details containing: - nonce - optional nonce - version - optional version
blockIdentifier?BlockIdentifier(optional) block identifier
skipValidate?boolean(optional) skip cairo validate method

Returns​

Promise<EstimateFeeResponseOverhead>

the estimated fee

Deprecated

Consider using getEstimateFeeBulk for multiple transactions

Example

const feeEstimate = await provider.getInvokeEstimateFee(invocation, details);
// Equivalent to:
const [feeEstimate] = await provider.getEstimateFeeBulk(
[{ type: ETransactionType.INVOKE, ...invocation, ...details }],
options
);

Alias

getEstimateFeeBulk - This method is an alias that calls getEstimateFeeBulk with a single transaction

Inherited from​

ProviderInterface.getInvokeEstimateFee

Defined in​

src/provider/interface.ts:250


getDeclareEstimateFee​

▸ getDeclareEstimateFee(transaction, details, blockIdentifier?, skipValidate?): Promise<EstimateFeeResponseOverhead>

Estimates the fee for a given DECLARE transaction

Parameters​

NameTypeDescription
transactionDeclareContractTransactiontransaction payload to be declared containing: - compiled contract code - sender address - signature - (defaults to []) the signature
detailsInvocationsDetailsWithNonceoptional details containing: - nonce - version - optional version - optional maxFee
blockIdentifier?BlockIdentifier(optional) block identifier
skipValidate?boolean(optional) skip cairo validate method

Returns​

Promise<EstimateFeeResponseOverhead>

the estimated fee

Deprecated

Consider using getEstimateFeeBulk for multiple transactions

Example

const feeEstimate = await provider.getDeclareEstimateFee(transaction, details);
// Equivalent to:
const [feeEstimate] = await provider.getEstimateFeeBulk(
[{ type: ETransactionType.DECLARE, ...transaction, ...details }],
options
);

Alias

getEstimateFeeBulk - This method is an alias that calls getEstimateFeeBulk with a single transaction

Inherited from​

ProviderInterface.getDeclareEstimateFee

Defined in​

src/provider/interface.ts:280


getDeployAccountEstimateFee​

▸ getDeployAccountEstimateFee(transaction, details, blockIdentifier?, skipValidate?): Promise<EstimateFeeResponseOverhead>

Estimates the fee for a given DEPLOY_ACCOUNT transaction

Parameters​

NameTypeDescription
transactionDeployAccountContractTransactiontransaction payload to be deployed containing: - classHash - constructorCalldata - addressSalt - signature - (defaults to []) the signature
detailsInvocationsDetailsWithNonceoptional details containing: - nonce - version - optional version - optional maxFee
blockIdentifier?BlockIdentifier(optional) block identifier
skipValidate?boolean(optional) skip cairo validate method

Returns​

Promise<EstimateFeeResponseOverhead>

the estimated fee

Deprecated

Consider using getEstimateFeeBulk for multiple transactions

Example

const feeEstimate = await provider.getDeployAccountEstimateFee(transaction, details);
// Equivalent to:
const [feeEstimate] = await provider.getEstimateFeeBulk(
[{ type: ETransactionType.DEPLOY_ACCOUNT, ...transaction, ...details }],
options
);

Alias

getEstimateFeeBulk - This method is an alias that calls getEstimateFeeBulk with a single transaction

Inherited from​

ProviderInterface.getDeployAccountEstimateFee

Defined in​

src/provider/interface.ts:311


getEstimateFeeBulk​

▸ getEstimateFeeBulk(invocations, options?): Promise<EstimateFeeResponseBulkOverhead>

Estimates the fee for a list of INVOKE transaction

Parameters​

NameTypeDescription
invocationsAccountInvocationsAccountInvocations - Complete invocations array with account details
options?getEstimateFeeBulkOptionsgetEstimateFeeBulkOptions - (optional) blockIdentifier - BlockIdentifier

Returns​

Promise<EstimateFeeResponseBulkOverhead>

the estimated fee

Inherited from​

ProviderInterface.getEstimateFeeBulk

Defined in​

src/provider/interface.ts:326


waitForTransaction​

▸ waitForTransaction(txHash, options?): Promise<GetTransactionReceiptResponse>

Wait for the transaction to be accepted

Parameters​

NameTypeDescription
txHashBigNumberishtransaction hash
options?waitForTransactionOptionswaitForTransactionOptions - (optional) retryInterval: number | undefined; - (optional) successStates: TransactionStatus[] | undefined;

Returns​

Promise<GetTransactionReceiptResponse>

GetTransactionReceiptResponse

Inherited from​

ProviderInterface.waitForTransaction

Defined in​

src/provider/interface.ts:339


getSimulateTransaction​

▸ getSimulateTransaction(invocations, options?): Promise<SimulateTransactionOverheadResponse>

Simulates the transaction and returns the transaction trace and estimated fee.

Parameters​

NameTypeDescription
invocationsAccountInvocationsAccountInvocations - Complete invocations array with account details
options?getSimulateTransactionOptionsgetSimulateTransactionOptions - (optional) blockIdentifier - block identifier - (optional) skipValidate - skip cairo validate method - (optional) skipExecute - skip cairo execute method

Returns​

Promise<SimulateTransactionOverheadResponse>

an array of transaction trace and estimated fee

Inherited from​

ProviderInterface.getSimulateTransaction

Defined in​

src/provider/interface.ts:354


getStateUpdate​

▸ getStateUpdate(blockIdentifier?): Promise<StateUpdateResponse>

Gets the state changes in a specific block (result of executing the requested block)

Parameters​

NameTypeDescription
blockIdentifier?BlockIdentifierblock identifier

Returns​

Promise<StateUpdateResponse>

StateUpdateResponse

Inherited from​

ProviderInterface.getStateUpdate

Defined in​

src/provider/interface.ts:365


getBlockStateUpdate​

▸ getBlockStateUpdate(): Promise<{ block_hash: string ; new_root: string ; old_root: string ; state_diff: { storage_diffs: { address: string ; storage_entries: { key: string ; value: string }[] }[] ; deprecated_declared_classes: string[] ; declared_classes: { class_hash: string ; compiled_class_hash: string }[] ; deployed_contracts: { address: string ; class_hash: string }[] ; replaced_classes: { contract_address: string ; class_hash: string }[] ; nonces: { nonce: string ; contract_address: string }[] } }>

Gets the state changes in a specific block (result of executing the requested block) Alternative method name for getStateUpdate with specific overloads

Returns​

Promise<{ block_hash: string ; new_root: string ; old_root: string ; state_diff: { storage_diffs: { address: string ; storage_entries: { key: string ; value: string }[] }[] ; deprecated_declared_classes: string[] ; declared_classes: { class_hash: string ; compiled_class_hash: string }[] ; deployed_contracts: { address: string ; class_hash: string }[] ; replaced_classes: { contract_address: string ; class_hash: string }[] ; nonces: { nonce: string ; contract_address: string }[] } }>

StateUpdateResponse

Inherited from​

ProviderInterface.getBlockStateUpdate

Defined in​

src/provider/interface.ts:374

▸ getBlockStateUpdate(blockIdentifier): Promise<PRE_CONFIRMED_STATE_UPDATE>

Parameters​

NameType
blockIdentifier"pre_confirmed"

Returns​

Promise<PRE_CONFIRMED_STATE_UPDATE>

Inherited from​

ProviderInterface.getBlockStateUpdate

Defined in​

src/provider/interface.ts:375

▸ getBlockStateUpdate(blockIdentifier): Promise<{ block_hash: string ; new_root: string ; old_root: string ; state_diff: { storage_diffs: { address: string ; storage_entries: { key: string ; value: string }[] }[] ; deprecated_declared_classes: string[] ; declared_classes: { class_hash: string ; compiled_class_hash: string }[] ; deployed_contracts: { address: string ; class_hash: string }[] ; replaced_classes: { contract_address: string ; class_hash: string }[] ; nonces: { nonce: string ; contract_address: string }[] } }>

Parameters​

NameType
blockIdentifier"latest"

Returns​

Promise<{ block_hash: string ; new_root: string ; old_root: string ; state_diff: { storage_diffs: { address: string ; storage_entries: { key: string ; value: string }[] }[] ; deprecated_declared_classes: string[] ; declared_classes: { class_hash: string ; compiled_class_hash: string }[] ; deployed_contracts: { address: string ; class_hash: string }[] ; replaced_classes: { contract_address: string ; class_hash: string }[] ; nonces: { nonce: string ; contract_address: string }[] } }>

Inherited from​

ProviderInterface.getBlockStateUpdate

Defined in​

src/provider/interface.ts:378

▸ getBlockStateUpdate(blockIdentifier?): Promise<StateUpdateResponse>

Parameters​

NameType
blockIdentifier?BlockIdentifier

Returns​

Promise<StateUpdateResponse>

Inherited from​

ProviderInterface.getBlockStateUpdate

Defined in​

src/provider/interface.ts:379


getContractVersion​

▸ getContractVersion(contractAddress, classHash?, options?): Promise<ContractVersion>

Gets the contract version from the provided address

Parameters​

NameTypeDescription
contractAddressBigNumberishstring
classHash?undefinedundefined
options?getContractVersionOptionsgetContractVersionOptions - (optional) compiler - (default true) extract compiler version using type tactic from abi - (optional) blockIdentifier - block identifier

Returns​

Promise<ContractVersion>

Inherited from​

ProviderInterface.getContractVersion

Defined in​

src/provider/interface.ts:391

▸ getContractVersion(contractAddress, classHash, options?): Promise<ContractVersion>

Gets the contract version from the provided address

Parameters​

NameTypeDescription
contractAddressundefinedundefined
classHashBigNumberish
options?getContractVersionOptionsgetContractVersionOptions - (optional) compiler - (default true) extract compiler version using type tactic from abi - (optional) blockIdentifier - block identifier

Returns​

Promise<ContractVersion>

Inherited from​

ProviderInterface.getContractVersion

Defined in​

src/provider/interface.ts:405


getBlockLatestAccepted​

▸ getBlockLatestAccepted(): Promise<{ block_hash: string ; block_number: number }>

Get the most recent accepted block hash and number

Returns​

Promise<{ block_hash: string ; block_number: number }>

Object containing block hash and number

Inherited from​

ProviderInterface.getBlockLatestAccepted

Defined in​

src/provider/interface.ts:416


getBlockNumber​

▸ getBlockNumber(): Promise<number>

Get the most recent accepted block number

Returns​

Promise<number>

Number of the latest block

Inherited from​

ProviderInterface.getBlockNumber

Defined in​

src/provider/interface.ts:422


getBlockWithTxHashes​

▸ getBlockWithTxHashes(blockIdentifier?): Promise<any>

Get block information with transaction hashes

Parameters​

NameTypeDescription
blockIdentifier?BlockIdentifierblock identifier

Returns​

Promise<any>

Block with transaction hashes

Inherited from​

ProviderInterface.getBlockWithTxHashes

Defined in​

src/provider/interface.ts:429


getBlockWithTxs​

▸ getBlockWithTxs(blockIdentifier?): Promise<any>

Get block information with full transactions

Parameters​

NameTypeDescription
blockIdentifier?BlockIdentifierblock identifier

Returns​

Promise<any>

Block with full transactions

Inherited from​

ProviderInterface.getBlockWithTxs

Defined in​

src/provider/interface.ts:436


getBlockWithReceipts​

▸ getBlockWithReceipts(blockIdentifier?): Promise<any>

Get block information with transaction receipts

Parameters​

NameTypeDescription
blockIdentifier?BlockIdentifierblock identifier

Returns​

Promise<any>

Block with transaction receipts

Inherited from​

ProviderInterface.getBlockWithReceipts

Defined in​

src/provider/interface.ts:443


getBlockTransactionsTraces​

▸ getBlockTransactionsTraces(blockIdentifier?): Promise<any>

Get transaction traces for all transactions in a block

Parameters​

NameTypeDescription
blockIdentifier?BlockIdentifierblock identifier

Returns​

Promise<any>

Array of transaction traces

Inherited from​

ProviderInterface.getBlockTransactionsTraces

Defined in​

src/provider/interface.ts:450


getBlockTransactionCount​

▸ getBlockTransactionCount(blockIdentifier?): Promise<number>

Get the number of transactions in a block

Parameters​

NameTypeDescription
blockIdentifier?BlockIdentifierblock identifier

Returns​

Promise<number>

Transaction count

Inherited from​

ProviderInterface.getBlockTransactionCount

Defined in​

src/provider/interface.ts:457


waitForBlock​

▸ waitForBlock(blockIdentifier?, retryInterval?): Promise<void>

Pause execution until a specified block is created

Parameters​

NameTypeDescription
blockIdentifier?BlockIdentifierblock number or tag
retryInterval?numbermilliseconds between requests (default: 5000)

Returns​

Promise<void>

Example

await provider.waitForBlock(12345);
await provider.waitForBlock('latest');

Inherited from​

ProviderInterface.waitForBlock

Defined in​

src/provider/interface.ts:469


getTransactionByHash​

▸ getTransactionByHash(txHash): Promise<TransactionWithHash>

Gets the transaction information from a tx hash (alias for getTransaction)

Parameters​

NameTypeDescription
txHashBigNumberishtransaction hash

Returns​

Promise<TransactionWithHash>

Transaction information

Inherited from​

ProviderInterface.getTransactionByHash

Defined in​

src/provider/interface.ts:480


getTransactionByBlockIdAndIndex​

▸ getTransactionByBlockIdAndIndex(blockIdentifier, index): Promise<TransactionWithHash>

Gets transaction by block identifier and index

Parameters​

NameTypeDescription
blockIdentifierBlockIdentifierblock identifier
indexnumbertransaction index in the block

Returns​

Promise<TransactionWithHash>

Transaction information

Inherited from​

ProviderInterface.getTransactionByBlockIdAndIndex

Defined in​

src/provider/interface.ts:488


getTransactionTrace​

▸ getTransactionTrace(txHash): Promise<TRANSACTION_TRACE | TRANSACTION_TRACE>

Gets the transaction trace

Parameters​

NameTypeDescription
txHashBigNumberishtransaction hash

Returns​

Promise<TRANSACTION_TRACE | TRANSACTION_TRACE>

Transaction trace

Inherited from​

ProviderInterface.getTransactionTrace

Defined in​

src/provider/interface.ts:498


getTransactionStatus​

▸ getTransactionStatus(transactionHash): Promise<any>

Get the status of a transaction

Parameters​

NameTypeDescription
transactionHashBigNumberishtransaction hash

Returns​

Promise<any>

Transaction status

Inherited from​

ProviderInterface.getTransactionStatus

Defined in​

src/provider/interface.ts:507


fetch​

▸ fetch(method, params?, id?): Promise<any>

Direct RPC method call

Parameters​

NameTypeDescription
methodstringRPC method name
params?objectmethod parameters
id?string | numberrequest ID

Returns​

Promise<any>

RPC response

Inherited from​

ProviderInterface.fetch

Defined in​

src/provider/interface.ts:517


readSpecVersion​

▸ readSpecVersion(): undefined | string

Read channel spec version

Returns​

undefined | string

Spec version string or undefined if not set

Inherited from​

ProviderInterface.readSpecVersion

Defined in​

src/provider/interface.ts:523


getSpecVersion​

▸ getSpecVersion(): Promise<string>

Get channel spec version

Returns​

Promise<string>

Promise resolving to spec version

Inherited from​

ProviderInterface.getSpecVersion

Defined in​

src/provider/interface.ts:529


setUpSpecVersion​

▸ setUpSpecVersion(): Promise<string>

Setup channel spec version and return it

Returns​

Promise<string>

Promise resolving to spec version

Inherited from​

ProviderInterface.setUpSpecVersion

Defined in​

src/provider/interface.ts:535


getClass​

▸ getClass(classHash, blockIdentifier?): Promise<ContractClassResponse>

Get contract class by hash with optional block identifier

Parameters​

NameTypeDescription
classHashBigNumberishclass hash
blockIdentifier?BlockIdentifierblock identifier

Returns​

Promise<ContractClassResponse>

Contract class

Inherited from​

ProviderInterface.getClass

Defined in​

src/provider/interface.ts:544


estimateMessageFee​

▸ estimateMessageFee(message, blockIdentifier?): Promise<FEE_ESTIMATE | MESSAGE_FEE_ESTIMATE>

Estimate the fee for a message from L1

Parameters​

NameTypeDescription
messageMSG_FROM_L1L1 message
blockIdentifier?BlockIdentifierblock identifier

Returns​

Promise<FEE_ESTIMATE | MESSAGE_FEE_ESTIMATE>

Fee estimate

Inherited from​

ProviderInterface.estimateMessageFee

Defined in​

src/provider/interface.ts:555


getSyncingStats​

▸ getSyncingStats(): Promise<any>

Get node synchronization status

Returns​

Promise<any>

Sync status or false if not syncing

Inherited from​

ProviderInterface.getSyncingStats

Defined in​

src/provider/interface.ts:564


getEvents​

▸ getEvents(eventFilter): Promise<EVENTS_CHUNK | EVENTS_CHUNK>

Get events matching the given filter

Parameters​

NameTypeDescription
eventFilterEventFilter | EventFilterevent filter

Returns​

Promise<EVENTS_CHUNK | EVENTS_CHUNK>

Events and pagination info

Inherited from​

ProviderInterface.getEvents

Defined in​

src/provider/interface.ts:571


verifyMessageInStarknet​

▸ verifyMessageInStarknet(message, signature, accountAddress, signatureVerificationFunctionName?, signatureVerificationResponse?): Promise<boolean>

Verify in Starknet a signature of a TypedData object or of a given hash.

Parameters​

NameTypeDescription
messageTypedData | BigNumberishTypedData object to be verified, or message hash to be verified.
signatureSignaturesignature of the message.
accountAddressBigNumberishaddress of the account that has signed the message.
signatureVerificationFunctionName?stringif account contract with non standard account verification function name.
signatureVerificationResponse?Objectif account contract with non standard response of verification function.
signatureVerificationResponse.okResponsestring[]-
signatureVerificationResponse.nokResponsestring[]-
signatureVerificationResponse.errorstring[]-

Returns​

Promise<boolean>

const myTypedMessage: TypedMessage = .... ;
const messageHash = typedData.getMessageHash(myTypedMessage,accountAddress);
const sign: WeierstrassSignatureType = ec.starkCurve.sign(messageHash, privateKey);
const accountAddress = "0x43b7240d227aa2fb8434350b3321c40ac1b88c7067982549e7609870621b535";
const result1 = await myRpcProvider.verifyMessageInStarknet(myTypedMessage, sign, accountAddress);
const result2 = await myRpcProvider.verifyMessageInStarknet(messageHash, sign, accountAddress);
// result1 = result2 = true

Inherited from​

ProviderInterface.verifyMessageInStarknet

Defined in​

src/provider/interface.ts:593


isClassDeclared​

▸ isClassDeclared(contractClassIdentifier, blockIdentifier?): Promise<boolean>

Test if class is already declared

Parameters​

NameTypeDescription
contractClassIdentifierContractClassIdentifiercontract class identifier
blockIdentifier?BlockIdentifierblock identifier

Returns​

Promise<boolean>

true if class is declared

Inherited from​

ProviderInterface.isClassDeclared

Defined in​

src/provider/interface.ts:611


prepareInvocations​

▸ prepareInvocations(invocations): Promise<Invocations>

Build bulk invocations with auto-detect declared class

Parameters​

NameTypeDescription
invocationsInvocationsarray of invocations

Returns​

Promise<Invocations>

Prepared invocations

Inherited from​

ProviderInterface.prepareInvocations

Defined in​

src/provider/interface.ts:621


getL1MessagesStatus​

▸ getL1MessagesStatus(transactionHash): Promise<L1L2MessagesStatus | L1L2MessagesStatus>

Get L1 messages status for a transaction

Parameters​

NameTypeDescription
transactionHashBigNumberishL1 transaction hash

Returns​

Promise<L1L2MessagesStatus | L1L2MessagesStatus>

L1 message status

Inherited from​

ProviderInterface.getL1MessagesStatus

Defined in​

src/provider/interface.ts:628


getStorageProof​

▸ getStorageProof(classHashes, contractAddresses, contractsStorageKeys, blockIdentifier?): Promise<StorageProof>

Get Merkle paths in state tries

Parameters​

NameTypeDescription
classHashesBigNumberish[]class hashes
contractAddressesBigNumberish[]contract addresses
contractsStorageKeysCONTRACT_STORAGE_KEYS[]storage keys
blockIdentifier?BlockIdentifierblock identifier

Returns​

Promise<StorageProof>

Storage proof

Inherited from​

ProviderInterface.getStorageProof

Defined in​

src/provider/interface.ts:640


getCompiledCasm​

▸ getCompiledCasm(classHash): Promise<CASM_COMPILED_CONTRACT_CLASS>

Get compiled CASM contract class

Parameters​

NameTypeDescription
classHashBigNumberishclass hash

Returns​

Promise<CASM_COMPILED_CONTRACT_CLASS>

Compiled CASM contract class

Inherited from​

ProviderInterface.getCompiledCasm

Defined in​

src/provider/interface.ts:652


getEstimateTip​

▸ getEstimateTip(blockIdentifier?, options?): Promise<TipEstimate>

Get transaction tip estimation based on network analysis

Parameters​

NameTypeDescription
blockIdentifier?BlockIdentifierblock identifier to analyze from
options?TipAnalysisOptionstip analysis options

Returns​

Promise<TipEstimate>

Tip estimation with statistics

Example

const tipEstimate = await provider.getEstimateTip('latest', {
maxBlocks: 10,
minTxsNecessary: 5,
});
console.log('Recommended tip:', tipEstimate.recommendedTip);

Inherited from​

ProviderInterface.getEstimateTip

Defined in​

src/provider/interface.ts:670