Class: WalletAccount
Defined in: src/wallet/account.ts:99
Deprecated
Use WalletAccountV6 (get-starknet v6) instead. This class is kept only for DAPPs that are still on get-starknet v4.
Remarks
Account that lets a wallet sign and send the transactions, using get-starknet v4. It represents the 'Selected Active' Account inside the Connected Wallet.
The private key stays in the wallet. Reads go to the RPC node given at the instantiation, writes go to the wallet. It works only in a DAPP, not in a Node.js script.
The wallet is selected with the get-starknet v4 library. Its connect() function opens a
window with the list of wallets. It returns the StarknetWindowObject (SWO) of the wallet that
the user selected. With get-starknet-core v4 you can also build your own UI and logic. See
this DAPP
for an example where only the wallets compatible with the Starknet Wallet API can be selected.
The address and the chain ID follow the wallet automatically. This can lead to reads and writes on different networks, so create a new instance each time the account or the network changes.
The wallet emits 2 events: accountsChanged and networkChanged.
A change of network emits both. A change of account emits only accountsChanged.
You can subscribe with the SWO (on) or with the onAccountChange and onNetworkChanged
methods of this class. To unsubscribe, call off on the SWO with the same function.
Needs @starknet-io/get-starknet v4.0.3 min.
Examples
import { connect } from '@starknet-io/get-starknet';
import { WalletAccount, wallet } from 'starknet';
const selectedWalletSWO = await connect({ modalMode: 'alwaysAsk', modalTheme: 'light' });
const myWalletAccount = await WalletAccount.connect(
{ nodeUrl: 'https://api.zan.top/public/starknet-sepolia/rpc/v0_10' },
selectedWalletSWO
);
// The wallet writes on this network:
const writeChainId = await wallet.requestChainId(myWalletAccount.walletProvider);
// writeChainId = '0x534e5f5345504f4c4941' (SN_SEPOLIA, if the wallet is on Sepolia)
// The provider reads on this network:
const readChainId = await myWalletAccount.provider.getChainId();
// readChainId = '0x534e5f5345504f4c4941'
// Subscribe with the wallet object (SWO). Unsubscribe with `.off` and the same function.
const handleAccount: AccountChangeEventHandler = (accounts: string[] | undefined) => {
if (accounts?.length) console.log('new address =', accounts[0]);
};
const handleNetwork: NetworkChangeEventHandler = (chainId?: string) => {
if (chainId) console.log('new chain =', chainId);
};
selectedWalletSWO.on('accountsChanged', handleAccount);
selectedWalletSWO.on('networkChanged', handleNetwork);
selectedWalletSWO.off('accountsChanged', handleAccount);
selectedWalletSWO.off('networkChanged', handleNetwork);
Extends
Constructors
Constructor
new WalletAccount(
options):WalletAccount
Defined in: src/wallet/account.ts:102
Parameters
options
WalletAccountV4Options
Returns
WalletAccount
Overrides
Properties
walletProvider
walletProvider:
StarknetWalletProvider
Defined in: src/wallet/account.ts:100
provider
provider:
RpcProvider
Defined in: src/account/default.ts:104
Provider instance for blockchain interaction
Inherited from
signer
signer:
SignerInterface
Defined in: src/account/default.ts:106
Signer instance for signing transactions and messages
Inherited from
address
address:
string
Defined in: src/account/default.ts:108
The address of the account contract on Starknet
Inherited from
cairoVersion
cairoVersion:
CairoVersion
Defined in: src/account/default.ts:112
Cairo version of the account contract implementation
Inherited from
transactionVersion
readonlytransactionVersion:"0x3"
Defined in: src/account/default.ts:114
Inherited from
deployer
deployer:
Deployer
Defined in: src/account/default.ts:116
Optional deployer instance for custom contract deployment logic
Default
Uses default UDC (Universal Deployer Contract) if not specified
Inherited from
defaultTipType
defaultTipType:
TipType
Defined in: src/account/default.ts:118
Inherited from
accountPluginManager
readonlyaccountPluginManager:PluginManager
Defined in: src/account/default.ts:121
Internal
Account-level plugin management
Inherited from
deploySelf
deploySelf: (
contractPayload,details) =>Promise<DeployContractResponse>
Defined in: src/account/default.ts:608
Deploy the account contract itself on Starknet
Parameters
contractPayload
DeployAccountContractPayload & object
Account deployment configuration
- .classHash - Account contract class hash
- .constructorCalldata - Constructor parameters
- .addressSalt - Salt for address generation
- .contractAddress - Pre-computed address
- .abi - Abi of the account contract (optional): the constructor calldata is checked against it
details?
UniversalDetails = {}
Returns
Promise<DeployContractResponse>
Deployment transaction hash and contract address
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
});
Inherited from
paymaster
paymaster:
PaymasterInterface
Defined in: src/plugins/paymaster/types/plugin.type.ts:19
The paymaster service of the account. The paymaster methods read it at each call, so you can replace it after the account is created.
Inherited from
Methods
connect()
staticconnect(provider,walletProvider,cairoVersion?,paymaster?,silentMode?):Promise<WalletAccount>
Defined in: src/wallet/account.ts:211
Parameters
provider
ProviderInterface | ProviderOptions
walletProvider
StarknetWalletProvider
cairoVersion?
paymaster?
PaymasterOptions | PaymasterInterface
silentMode?
boolean = false
Returns
Promise<WalletAccount>
connectSilent()
staticconnectSilent(provider,walletProvider,cairoVersion?,paymaster?):Promise<WalletAccount>
Defined in: src/wallet/account.ts:231
Parameters
provider
ProviderInterface | ProviderOptions
walletProvider
StarknetWalletProvider
cairoVersion?
paymaster?
PaymasterOptions | PaymasterInterface
Returns
Promise<WalletAccount>
onAccountChange()
onAccountChange(
callback):void
Defined in: src/wallet/account.ts:122
Parameters
callback
Returns
void
onNetworkChanged()
onNetworkChanged(
callback):void
Defined in: src/wallet/account.ts:126
Parameters
callback
Returns
void
requestAccounts()
requestAccounts(
silentMode?):Promise<string[]>
Defined in: src/wallet/account.ts:131
Parameters
silentMode?
boolean = false
Returns
Promise<string[]>
getPermissions()
getPermissions():
Promise<"accounts"[]>
Defined in: src/wallet/account.ts:135
Returns
Promise<"accounts"[]>
switchStarknetChain()
switchStarknetChain(
chainId):Promise<boolean>
Defined in: src/wallet/account.ts:139
Parameters
chainId
"0x534e5f4d41494e" | "0x534e5f5345504f4c4941"
Returns
Promise<boolean>
watchAsset()
watchAsset(
asset):Promise<boolean>
Defined in: src/wallet/account.ts:143
Parameters
asset
Returns
Promise<boolean>
addStarknetChain()
addStarknetChain(
chain):Promise<boolean>
Defined in: src/wallet/account.ts:147
Parameters
chain
Returns
Promise<boolean>
execute()
execute(
calls):Promise<AddInvokeTransactionResult>
Defined in: src/wallet/account.ts:152
Execute one or multiple calls through the account contract
Parameters
calls
Single call or array of calls to execute
- .contractAddress - Target contract address
- .entrypoint - Function to invoke on the contract
- .calldata - Function parameters
Returns
Promise<AddInvokeTransactionResult>
Transaction hash and response
Example
const result = await account.execute([
{ contractAddress: token, entrypoint: 'transfer', calldata: [to, amount] },
{ contractAddress: nft, entrypoint: 'mint', calldata: [recipient] }
]);
Overrides
declare()
declare(
payload):Promise<AddDeclareTransactionResult>
Defined in: src/wallet/account.ts:169
Declare a contract class on Starknet
Parameters
payload
Returns
Promise<AddDeclareTransactionResult>
Declaration transaction hash and class hash
Example
const declareResult = await account.declare({
contract: compiledSierra,
casm: compiledCasm
});
Overrides
deploy()
deploy(
payload):Promise<MultiDeployContractResponse>
Defined in: src/wallet/account.ts:195
Deploy contract(s) using the Universal Deployer Contract (UDC)
Parameters
payload
UniversalDeployerContractPayload | UniversalDeployerContractPayload[]
Single or multiple deployment configurations.
- .classHash - Class hash of declared contract.
- .constructorCalldata - Constructor parameters.
- .salt - Deployment salt (random if not specified).
- .unique - Modify salt for unique address (default: true).
- .abi - Abi of the contract (optional): the constructor calldata is checked against it. Without it, the calldata is flattened as given, with no check.
Returns
Promise<MultiDeployContractResponse>
Deployed contract addresses and transaction hash
Example
const deployment = await account.deploy([
{ classHash: erc20ClassHash, constructorCalldata: [name, symbol] },
{ classHash: nftClassHash, unique: true }
]);
Overrides
signMessage()
signMessage(
typedData):Promise<SIGNATURE>
Defined in: src/wallet/account.ts:207
Sign a typed data message for off-chain verification
Parameters
typedData
EIP-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!' }
});
Overrides
getNonce()
getNonce(
blockIdentifier?):Promise<string>
Defined in: src/account/default.ts:162
Get the current nonce of the account
Parameters
blockIdentifier?
Block to query nonce at (default: 'latest' tag)
Returns
Promise<string>
Account nonce as hex string
Example
const nonce = await account.getNonce();
const historicalNonce = await account.getNonce('latest');
Inherited from
getCairoVersion()
getCairoVersion(
classHash?):Promise<CairoVersion>
Defined in: src/account/default.ts:181
Retrieves the Cairo version from the network and sets cairoVersion if not already set in the constructor.
Parameters
classHash?
string
if provided detects Cairo version from classHash, otherwise from the account address
Returns
Promise<CairoVersion>
Inherited from
estimateInvokeFee()
estimateInvokeFee(
calls,details?):Promise<EstimateFeeResponseOverhead>
Defined in: src/account/default.ts:191
Estimate fee for executing an INVOKE transaction on Starknet
Parameters
calls
Single call or array of calls to estimate fees for
- .contractAddress - The address of the contract to invoke
- .entrypoint - The function selector of the contract method
- .calldata - The serialized function parameters (defaults to [])
details?
UniversalDetails = {}
Returns
Promise<EstimateFeeResponseOverhead>
Fee estimation including overall_fee and resourceBounds
Example
const fee = await account.estimateInvokeFee({
contractAddress: '0x123...',
entrypoint: 'transfer',
calldata: [recipient, amount]
});
Inherited from
estimateDeclareFee()
estimateDeclareFee(
payload,details?):Promise<EstimateFeeResponseOverhead>
Defined in: src/account/default.ts:201
Estimate fee for executing a DECLARE transaction on Starknet
Parameters
payload
details?
UniversalDetails = {}
Returns
Promise<EstimateFeeResponseOverhead>
Fee estimation including overall_fee and resourceBounds
Example
const fee = await account.estimateDeclareFee({
contract: compiledContract,
casm: compiledCasm
});
Inherited from
estimateAccountDeployFee()
estimateAccountDeployFee(
contractPayload,details?):Promise<EstimateFeeResponseOverhead>
Defined in: src/account/default.ts:222
Estimate fee for executing a DEPLOY_ACCOUNT transaction on Starknet
Parameters
contractPayload
DeployAccountContractPayload & object
Account deployment payload
- .classHash - Class hash of the account contract
- .constructorCalldata - Constructor parameters
- .contractAddress - Pre-computed account address
- .addressSalt - Salt for address generation
- .abi - Abi of the account contract (optional): the constructor calldata is checked against it
details?
UniversalDetails = {}
Returns
Promise<EstimateFeeResponseOverhead>
Fee estimation including overall_fee and resourceBounds
Example
const fee = await account.estimateAccountDeployFee({
classHash: accountClassHash,
constructorCalldata: { publicKey },
addressSalt: publicKey
});
Inherited from
Account.estimateAccountDeployFee
estimateDeployFee()
estimateDeployFee(
payload,details?):Promise<EstimateFeeResponseOverhead>
Defined in: src/account/default.ts:257
Estimate fee for deploying contract(s) through the Universal Deployer Contract (UDC)
Parameters
payload
UniversalDeployerContractPayload | UniversalDeployerContractPayload[]
details?
UniversalDetails = {}
Returns
Promise<EstimateFeeResponseOverhead>
Fee estimation for the deployment transaction
Example
const fee = await account.estimateDeployFee({
classHash: contractClassHash,
constructorCalldata: [param1, param2],
unique: true
});
Inherited from
estimateFeeBulk()
estimateFeeBulk(
invocations,details?):Promise<EstimateFeeBulk>
Defined in: src/account/default.ts:265
Estimate fees for executing multiple transactions in a single request
Parameters
invocations
Array of transactions to estimate
- .type - Transaction type: DECLARE, DEPLOY, INVOKE, DEPLOY_ACCOUNT
- .payload - Transaction-specific payload
details?
UniversalDetails = {}
Optional details for fee estimation
Returns
Promise<EstimateFeeBulk>
Array of fee estimations for each transaction
Example
const fees = await account.estimateFeeBulk([
{ type: 'INVOKE', payload: { contractAddress, entrypoint, calldata } },
{ type: 'DECLARE', payload: { contract, casm } }
]);
Inherited from
simulateTransaction()
simulateTransaction(
invocations,details?):Promise<SimulateTransactionOverheadResponse>
Defined in: src/account/default.ts:295
Parameters
invocations
details?
SimulateTransactionDetails = {}
Returns
Promise<SimulateTransactionOverheadResponse>
Inherited from
getSignedTransaction()
getSignedTransaction(
transactions,transactionsDetail?):Promise<INVOKE_TXN_V3>
Defined in: src/account/default.ts:430
Build a signed INVOKE_TXN_V3 transaction without submitting it to the network.
Produces a fully signed transaction object that can be inspected, stored,
or submitted later via provider.channel.sendTransaction().
Main usage is to send a virtual transaction to a proof server.
Fees are estimated automatically if not provided.
Parameters
transactions
Single call or array of calls to include in the transaction
transactionsDetail?
UniversalDetails = {}
Transaction execution options
Returns
Promise<INVOKE_TXN_V3>
A fully signed RPC.INVOKE_TXN_V3 object, ready to broadcast
Remarks
- Unlike
execute(), this method does not submit the transaction ; the account nonce is unchanged after the call. - The
afterExecuteplugin hook is intentionally not triggered. - The returned object can be broadcast with
provider.channel.sendTransaction().
Example
const signedTx = await account.getSignedTransaction(
{ contractAddress: erc20Address, entrypoint: 'transfer', calldata: [recipient, amount, 0] }
);
Inherited from
declareIfNot()
declareIfNot(
payload,transactionsDetail?):Promise<{class_hash:string;transaction_hash:string; }>
Defined in: src/account/default.ts:464
First check if contract is already declared, if not declare it If contract already declared returned transaction_hash is ''. Method will pass even if contract is already declared
A given classHash is used as is to look for the class on the node, without being checked
against contract, to save time.
Parameters
payload
transactionsDetail?
UniversalDetails = {}
(optional)
Returns
Promise<{ class_hash: string; transaction_hash: string; }>
Inherited from
deployContract()
deployContract(
payload,details?):Promise<DeployContractUDCResponse>
Defined in: src/account/default.ts:547
Deploy and wait for a contract deployment to complete
Parameters
payload
UniversalDeployerContractPayload | UniversalDeployerContractPayload[]
Deployment configuration(s)
details?
UniversalDetails & waitForTransactionOptions = {}
Transaction execution options
Returns
Promise<DeployContractUDCResponse>
Deployment result with contract address and UDC event details
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);
Inherited from
declareAndDeploy()
declareAndDeploy(
payload,details?):Promise<DeclareDeployUDCResponse>
Defined in: src/account/default.ts:558
Declare and deploy a contract in a single method
Parameters
payload
DeclareAndDeployContractPayload
Combined declare and deploy configuration
- .contract - Compiled Sierra contract
- .casm - Compiled CASM (required for Cairo 1)
- .compiledClassHash - Pre-computed CASM hash
- .classHash - Pre-computed class hash, checked against .contract: a wrong one is refused
- .constructorCalldata - Constructor parameters, or felts already compiled
- .salt - Deployment salt
- .unique - Ensure unique deployment address
details?
UniversalDetails & waitForTransactionOptions = {}
Transaction execution options
Returns
Promise<DeclareDeployUDCResponse>
Declaration and deployment results
Remarks
- Before declaring, checks the constructor calldata against the abi of
contract(felts already compiled are read back with it), and a givenclassHashagainstcontract: a mismatch fails before any transaction is sent - Automatically skips declaration if contract is already declared
- With a given
nonce, the deployment uses the next one when a declaration is sent - Waits for both transactions to complete
- Does not support batch operations
Example
const result = await account.declareAndDeploy({
contract: compiledContract,
casm: compiledCasm,
constructorCalldata: [param1, param2]
});
Inherited from
deployAccount()
deployAccount(
contractPayload,details?):Promise<DeployContractResponse>
Defined in: src/account/default.ts:610
Deploy the account contract itself on Starknet
Parameters
contractPayload
DeployAccountContractPayload & object
Account deployment configuration
- .classHash - Account contract class hash
- .constructorCalldata - Constructor parameters
- .addressSalt - Salt for address generation
- .contractAddress - Pre-computed address
- .abi - Abi of the account contract (optional): the constructor calldata is checked against it
details?
UniversalDetails = {}
Returns
Promise<DeployContractResponse>
Deployment transaction hash and contract address
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
});
Inherited from
Account.deployAccount
hashMessage()
hashMessage(
typedData):Promise<string>
Defined in: src/account/default.ts:703
Hash a typed data message using Pedersen hash
Parameters
typedData
EIP-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);
Inherited from
getSnip9Version()
getSnip9Version():
Promise<"0"|"1"|"2">
Defined in: src/account/default.ts:716
Verify if an account is compatible with SNIP-9 outside execution, and with which version of this standard.
Returns
Promise<"0" | "1" | "2">
Not compatible, V1, V2.
Example
const result = myAccount.getSnip9Version();
// result = "V1"
Inherited from
isValidSnip9Nonce()
isValidSnip9Nonce(
nonce):Promise<boolean>
Defined in: src/account/default.ts:737
Verify if a SNIP-9 nonce has not yet been used by the account.
Parameters
nonce
SNIP-9 nonce to test.
Returns
Promise<boolean>
true if SNIP-9 nonce not yet used.
Example
const result = myAccount.isValidSnip9Nonce(1234);
// result = true
Inherited from
getSnip9Nonce()
getSnip9Nonce():
Promise<string>
Defined in: src/account/default.ts:761
Outside transaction needs a specific SNIP-9 nonce, that we get in this function. A SNIP-9 nonce can be any number not yet used ; no ordering is needed.
Returns
Promise<string>
an Hex string of a SNIP-9 nonce.
Example
const result = myAccount.getSnip9Nonce();
// result = "0x28a612590dbc36927933c8ee0f357eee639c8b22b3d3aa86949eed3ada4ac55"
Inherited from
getOutsideTransaction()
getOutsideTransaction(
options,calls,version?,nonce?):Promise<OutsideTransaction>
Defined in: src/account/default.ts:798
Creates an object containing transaction(s) that can be executed by an other account with Account.executeFromOutside(), called Outside Transaction.
Parameters
options
Parameters of the transaction(s).
calls
Transaction(s) to execute.
version?
"0" | "1" | "2"
SNIP-9 version of the Account that creates the outside transaction.
nonce?
Outside Nonce.
Returns
Promise<OutsideTransaction>
and object that can be used in Account.executeFromOutside()
Example
const now_seconds = Math.floor(Date.now() / 1000);
const callOptions: OutsideExecutionOptions = {
caller: executorAccount.address, execute_after: now_seconds - 3600, execute_before: now_seconds + 3600 };
const call1: Call = { contractAddress: ethAddress, entrypoint: 'transfer', calldata: {
recipient: recipientAccount.address, amount: cairo.uint256(100) } };
const outsideTransaction1: OutsideTransaction = await signerAccount.getOutsideTransaction(callOptions, call3);
// result = {
// outsideExecution: {
// caller: '0x64b48806902a367c8598f4f95c305e8c1a1acba5f082d294a43793113115691',
// nonce: '0x28a612590dbc36927933c8ee0f357eee639c8b22b3d3aa86949eed3ada4ac55',
// execute_after: 1723650229, execute_before: 1723704229, calls: [[Object]] },
// signature: Signature {
// r: 67518627037915514985321278857825384106482999609634873287406612756843916814n,
// s: 737198738569840639192844101690009498983611654458636624293579534560862067709n, recovery: 0 },
// signerAddress: '0x655f8fd7c4013c07cf12a92184aa6c314d181443913e21f7e209a18f0c78492',
// version: '2'
// }
Inherited from
executeFromOutside()
executeFromOutside(
outsideTransaction,opts?):Promise<{transaction_hash:string; }>
Defined in: src/account/default.ts:858
An account B executes a transaction that has been signed by an account A. Fees are paid by B.
Parameters
outsideTransaction
AllowArray<OutsideTransaction>
the signed transaction generated by Account.getOutsideTransaction().
opts?
same options than Account.execute().
Returns
Promise<{ transaction_hash: string; }>
same response than Account.execute().
Example
const outsideTransaction1: OutsideTransaction = await signerAccount.getOutsideTransaction(callOptions, call1);
const outsideTransaction2: OutsideTransaction = await signerAccount.getOutsideTransaction(callOptions4, call4);
const result = await myAccount.executeFromOutside([
outsideTransaction1,
outsideTransaction2,
]);
// result = { transaction_hash: '0x11233...`}
Inherited from
buildInvocation()
buildInvocation(
call,details):Promise<Invocation>
Defined in: src/account/default.ts:894
Parameters
call
Call[]
details
Returns
Promise<Invocation>
Inherited from
buildDeclarePayload()
buildDeclarePayload(
payload,details):Promise<DeclareContractTransaction>
Defined in: src/account/default.ts:909
Parameters
payload
details
Returns
Promise<DeclareContractTransaction>
Inherited from
buildAccountDeployPayload()
buildAccountDeployPayload(
__namedParameters,details):Promise<DeployAccountContractTransaction>
Defined in: src/account/default.ts:944
Parameters
__namedParameters
DeployAccountContractPayload & object
details
Returns
Promise<DeployAccountContractTransaction>
Inherited from
Account.buildAccountDeployPayload
getStarkName()
getStarkName(
address?,StarknetIdContract?):Promise<string>
Defined in: src/plugins/starknet-id/index.ts:41
Parameters
address?
StarknetIdContract?
string
Returns
Promise<string>
Inherited from
getAddressFromStarkName()
getAddressFromStarkName(
name,StarknetIdContract?):Promise<string>
Defined in: src/plugins/starknet-id/index.ts:42
Parameters
name
string
StarknetIdContract?
string
Returns
Promise<string>
Inherited from
Account.getAddressFromStarkName
getStarkProfile()
getStarkProfile(
address,StarknetIdContract?,StarknetIdIdentityContract?,StarknetIdVerifierContract?,StarknetIdPfpContract?,StarknetIdPopContract?,StarknetIdMulticallContract?):Promise<StarkProfile>
Defined in: src/plugins/starknet-id/index.ts:43
Parameters
address
StarknetIdContract?
string
StarknetIdIdentityContract?
string
StarknetIdVerifierContract?
string
StarknetIdPfpContract?
string
StarknetIdPopContract?
string
StarknetIdMulticallContract?
string
Returns
Promise<StarkProfile>
Inherited from
getBrotherName()
getBrotherName(
address,BrotherIdContract?):Promise<string>
Defined in: src/plugins/brother-id/index.ts:47
Parameters
address
BrotherIdContract?
string
Returns
Promise<string>
Inherited from
getAddressFromBrotherName()
getAddressFromBrotherName(
name,BrotherIdContract?):Promise<string>
Defined in: src/plugins/brother-id/index.ts:48
Parameters
name
string
BrotherIdContract?
string
Returns
Promise<string>
Inherited from
Account.getAddressFromBrotherName
getBrotherProfile()
getBrotherProfile(
address,BrotherIdContract?):Promise<BrotherProfile>
Defined in: src/plugins/brother-id/index.ts:49
Parameters
address
BrotherIdContract?
string
Returns
Promise<BrotherProfile>
Inherited from
fastExecute()
fastExecute(
transactions,transactionsDetail?,waitDetail?):Promise<FastExecuteResponse>
Defined in: src/plugins/fast-execute/types.ts:119
Execute one or multiple calls through the account contract, responding as soon as a new transaction is possible with the same account. Useful for gaming usage where rapid consecutive transactions are needed.
This method requires the provider to be initialized with pre_confirmed blockIdentifier option.
RPC 0.9 minimum.
In a normal account.execute() call followed by provider.waitForTransaction(), you have immediate access
to the events and transaction report. Here, we process consecutive transactions faster, but events and
transaction reports are not available immediately.
As a consequence of the above, do not use contract/account deployment with this method.
Parameters
transactions
any
Single call or array of calls to execute
transactionsDetail?
any
Transaction execution options
waitDetail?
Options to scan the
network for the next possible transaction. retries is the number of times to retry (default: 50),
retryInterval is the time in ms between retries (default: 500).
Returns
Promise<FastExecuteResponse>
Response containing the transaction result and status for the next
transaction. If isReady is true, you can execute the next transaction immediately. If false,
timeout has been reached before the next transaction was possible.
Example
const myProvider = new RpcProvider({
nodeUrl: url,
blockIdentifier: BlockTag.PRE_CONFIRMED
});
const myAccount = new Account({
provider: myProvider,
address: accountAddress0,
signer: privateKey0
});
const resp = await myAccount.fastExecute(
call,
{ tip: recommendedTip },
{ retries: 30, retryInterval: 500 }
);
// if resp.isReady is true, you can launch immediately a new tx
if (resp.isReady) {
// send next transaction
}
Inherited from
buildPaymasterTransaction()
buildPaymasterTransaction(
calls,paymasterDetails):Promise<PreparedTransaction>
Defined in: src/plugins/paymaster/types/plugin.type.ts:36
Build a transaction for paymaster execution
Parameters
calls
Call[]
Array of calls to be sponsored
paymasterDetails
Paymaster configuration
Returns
Promise<PreparedTransaction>
Prepared transaction with typed data for signing
Example
const prepared = await account.buildPaymasterTransaction(
calls,
{ feeMode: { mode: 'default', gasToken: ETH_ADDRESS } }
);
Inherited from
Account.buildPaymasterTransaction
estimatePaymasterTransactionFee()
estimatePaymasterTransactionFee(
calls,paymasterDetails):Promise<PaymasterFeeEstimate>
Defined in: src/plugins/paymaster/types/plugin.type.ts:63
Estimate fees for a paymaster-sponsored transaction
Parameters
calls
Call[]
Array of calls to be sponsored
- .contractAddress - Target contract address
- .entrypoint - Function to invoke
- .calldata - Function parameters
paymasterDetails
Paymaster configuration
- .feeMode - Sponsorship mode: 'sponsored' or gas token
- .deploymentData - Account deployment data if needed
- .timeBounds - Valid execution time window
Returns
Promise<PaymasterFeeEstimate>
Fee estimates in both STRK and gas token
Example
const fees = await account.estimatePaymasterTransactionFee(
[{ contractAddress, entrypoint, calldata }],
{ feeMode: { mode: 'sponsored' } }
);
Inherited from
Account.estimatePaymasterTransactionFee
preparePaymasterTransaction()
preparePaymasterTransaction(
preparedTransaction,calls,paymasterDetails,maxFeeInGasToken?):Promise<ExecutableUserTransaction>
Defined in: src/plugins/paymaster/types/plugin.type.ts:92
Signs a transaction prepared by the paymaster, after checking it is safe to sign. The safety
check needs the calls and the fee details the user actually requested, so a caller that uses
this low-level method directly must pass them, the same way executePaymasterTransaction
does.
Parameters
preparedTransaction
the transaction returned by the paymaster.
calls
Call[]
the calls the user requested.
paymasterDetails
the fee mode and related paymaster details.
maxFeeInGasToken?
optional user-approved ceiling on the gas-token fee.
Returns
Promise<ExecutableUserTransaction>
The transaction to send to the paymaster, with the signed typed data.
Example
const prepared = await account.buildPaymasterTransaction(calls, paymasterDetails);
const executable = await account.preparePaymasterTransaction(
prepared,
calls,
paymasterDetails
);
const { transaction_hash } = await account.paymaster.executeTransaction(
executable,
prepared.parameters
);
Inherited from
Account.preparePaymasterTransaction
executePaymasterTransaction()
executePaymasterTransaction(
calls,paymasterDetails,maxFeeInGasToken?):Promise<{transaction_hash:string; }>
Defined in: src/plugins/paymaster/types/plugin.type.ts:122
Execute a paymaster-sponsored transaction
Parameters
calls
Call[]
Array of calls to execute
paymasterDetails
Paymaster configuration
- .feeMode - 'sponsored' or gas token payment
- .deploymentData - Deploy account if needed
- .timeBounds - Execution validity window (UNIX timestamps)
maxFeeInGasToken?
Maximum 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
);