From 3f567d7164915813fe8c7b83093b14881de538f8 Mon Sep 17 00:00:00 2001 From: CI Date: Fri, 28 Mar 2025 09:46:52 +0000 Subject: [PATCH] docs: generate documentation version --- .../version-6.24.1/API/_category_.yml | 1 + .../version-6.24.1/API/classes/Account.md | 2885 +++++++++++++++ .../API/classes/AccountInterface.md | 1302 +++++++ .../version-6.24.1/API/classes/BatchClient.md | 245 ++ .../API/classes/CairoCustomEnum.md | 95 + .../API/classes/CairoFixedArray.md | 256 ++ .../version-6.24.1/API/classes/CairoOption.md | 125 + .../version-6.24.1/API/classes/CairoResult.md | 126 + .../API/classes/CairoUint256.md | 266 ++ .../API/classes/CairoUint512.md | 296 ++ .../version-6.24.1/API/classes/CallData.md | 331 ++ .../version-6.24.1/API/classes/Contract.md | 505 +++ .../API/classes/ContractFactory.md | 165 + .../API/classes/ContractInterface.md | 383 ++ .../version-6.24.1/API/classes/CustomError.md | 171 + .../version-6.24.1/API/classes/EthSigner.md | 301 ++ .../API/classes/LedgerSigner111.md | 436 +++ .../API/classes/LedgerSigner221.md | 807 +++++ .../API/classes/LibraryError.md | 171 + .../version-6.24.1/API/classes/Provider.md | 1595 ++++++++ .../API/classes/ProviderInterface.md | 698 ++++ .../API/classes/RPC06.RpcChannel.md | 864 +++++ .../API/classes/RPC07.RpcChannel.md | 884 +++++ .../API/classes/RPCResponseParser.md | 236 ++ .../version-6.24.1/API/classes/ReceiptTx.md | 233 ++ .../API/classes/ResponseParser.md | 206 ++ .../version-6.24.1/API/classes/RpcError.md | 259 ++ .../version-6.24.1/API/classes/Signer.md | 303 ++ .../API/classes/SignerInterface.md | 246 ++ .../API/classes/WalletAccount.md | 3226 +++++++++++++++++ .../version-6.24.1/API/classes/_category_.yml | 2 + .../API/classes/merkle.MerkleTree.md | 177 + .../API/classes/provider-1.Block.md | 210 ++ .../version-6.24.1/API/enums/_category_.yml | 2 + .../API/enums/constants.BaseUrl.md | 28 + .../enums/constants.FeeMarginPercentage.md | 38 + .../API/enums/constants.NetworkName.md | 28 + .../API/enums/constants.StarknetChainId.md | 28 + .../enums/constants.TransactionHashPrefix.md | 58 + .../enums/types.OutsideExecutionVersion.md | 38 + .../version-6.24.1/API/index.md | 59 + .../API/interfaces/_category_.yml | 2 + .../ec.weierstrass.ProjConstructor.md | 175 + .../ec.weierstrass.ProjPointType.md | 406 +++ .../ec.weierstrass.SignatureType.md | 188 + .../API/interfaces/types.CallStruct.md | 38 + .../types.DeployContractResponse.md | 28 + .../API/interfaces/types.EstimateFee.md | 133 + .../interfaces/types.EstimateFeeDetails.md | 168 + .../interfaces/types.EstimateFeeResponse.md | 101 + .../API/interfaces/types.MessageToL1.md | 28 + .../API/interfaces/types.OutsideCall.md | 38 + .../API/interfaces/types.OutsideExecution.md | 58 + .../types.OutsideExecutionOptions.md | 44 + .../interfaces/types.OutsideTransaction.md | 48 + .../API/interfaces/types.Program.md | 34 + .../API/interfaces/types.ProviderOptions.md | 205 ++ ...es.RPC.RPCSPEC06.Errors.BLOCK_NOT_FOUND.md | 28 + ...RPCSPEC06.Errors.CLASS_ALREADY_DECLARED.md | 28 + ...C.RPCSPEC06.Errors.CLASS_HASH_NOT_FOUND.md | 28 + ...RPC.RPCSPEC06.Errors.COMPILATION_FAILED.md | 28 + ...C06.Errors.COMPILED_CLASS_HASH_MISMATCH.md | 28 + ...Errors.CONTRACT_CLASS_SIZE_IS_TOO_LARGE.md | 28 + ...pes.RPC.RPCSPEC06.Errors.CONTRACT_ERROR.md | 44 + ...RPC.RPCSPEC06.Errors.CONTRACT_NOT_FOUND.md | 28 + ...types.RPC.RPCSPEC06.Errors.DUPLICATE_TX.md | 28 + ....RPCSPEC06.Errors.FAILED_TO_RECEIVE_TXN.md | 28 + ...C06.Errors.INSUFFICIENT_ACCOUNT_BALANCE.md | 28 + ...C.RPCSPEC06.Errors.INSUFFICIENT_MAX_FEE.md | 28 + ...RPC.RPCSPEC06.Errors.INVALID_BLOCK_HASH.md | 28 + ....RPC.RPCSPEC06.Errors.INVALID_CALL_DATA.md | 28 + ...PEC06.Errors.INVALID_CONTINUATION_TOKEN.md | 28 + ...CSPEC06.Errors.INVALID_MESSAGE_SELECTOR.md | 28 + ...SPEC06.Errors.INVALID_TRANSACTION_NONCE.md | 28 + ....RPC.RPCSPEC06.Errors.INVALID_TXN_INDEX.md | 28 + .../types.RPC.RPCSPEC06.Errors.NON_ACCOUNT.md | 28 + .../types.RPC.RPCSPEC06.Errors.NO_BLOCKS.md | 28 + ...RPC.RPCSPEC06.Errors.NO_TRACE_AVAILABLE.md | 44 + ....RPC.RPCSPEC06.Errors.PAGE_SIZE_TOO_BIG.md | 28 + ...PCSPEC06.Errors.TOO_MANY_KEYS_IN_FILTER.md | 28 + ...EC06.Errors.TRANSACTION_EXECUTION_ERROR.md | 45 + ...RPC.RPCSPEC06.Errors.TXN_HASH_NOT_FOUND.md | 28 + ...s.RPC.RPCSPEC06.Errors.UNEXPECTED_ERROR.md | 38 + ...rors.UNSUPPORTED_CONTRACT_CLASS_VERSION.md | 28 + ...RPCSPEC06.Errors.UNSUPPORTED_TX_VERSION.md | 28 + ...RPC.RPCSPEC06.Errors.VALIDATION_FAILURE.md | 38 + ...PC.RPCSPEC07.API.Errors.BLOCK_NOT_FOUND.md | 28 + ...PEC07.API.Errors.CLASS_ALREADY_DECLARED.md | 28 + ...CSPEC07.API.Errors.CLASS_HASH_NOT_FOUND.md | 28 + ...RPCSPEC07.API.Errors.COMPILATION_FAILED.md | 28 + ...API.Errors.COMPILED_CLASS_HASH_MISMATCH.md | 28 + ...Errors.CONTRACT_CLASS_SIZE_IS_TOO_LARGE.md | 28 + ...RPC.RPCSPEC07.API.Errors.CONTRACT_ERROR.md | 44 + ...RPCSPEC07.API.Errors.CONTRACT_NOT_FOUND.md | 28 + ...s.RPC.RPCSPEC07.API.Errors.DUPLICATE_TX.md | 28 + ...SPEC07.API.Errors.FAILED_TO_RECEIVE_TXN.md | 28 + ...API.Errors.INSUFFICIENT_ACCOUNT_BALANCE.md | 28 + ...CSPEC07.API.Errors.INSUFFICIENT_MAX_FEE.md | 28 + ...RPCSPEC07.API.Errors.INVALID_BLOCK_HASH.md | 28 + ....RPCSPEC07.API.Errors.INVALID_CALL_DATA.md | 28 + ...7.API.Errors.INVALID_CONTINUATION_TOKEN.md | 28 + ...C07.API.Errors.INVALID_MESSAGE_SELECTOR.md | 28 + ...07.API.Errors.INVALID_TRANSACTION_NONCE.md | 28 + ....RPCSPEC07.API.Errors.INVALID_TXN_INDEX.md | 28 + ...es.RPC.RPCSPEC07.API.Errors.NON_ACCOUNT.md | 28 + ...ypes.RPC.RPCSPEC07.API.Errors.NO_BLOCKS.md | 28 + ...RPCSPEC07.API.Errors.NO_TRACE_AVAILABLE.md | 44 + ....RPCSPEC07.API.Errors.PAGE_SIZE_TOO_BIG.md | 28 + ...EC07.API.Errors.TOO_MANY_KEYS_IN_FILTER.md | 28 + ....API.Errors.TRANSACTION_EXECUTION_ERROR.md | 45 + ...RPCSPEC07.API.Errors.TXN_HASH_NOT_FOUND.md | 28 + ...C.RPCSPEC07.API.Errors.UNEXPECTED_ERROR.md | 38 + ...rors.UNSUPPORTED_CONTRACT_CLASS_VERSION.md | 28 + ...PEC07.API.Errors.UNSUPPORTED_TX_VERSION.md | 28 + ...RPCSPEC07.API.Errors.VALIDATION_FAILURE.md | 38 + ...C07.WALLET_API.ACCOUNT_ALREADY_DEPLOYED.md | 28 + ...07.WALLET_API.API_VERSION_NOT_SUPPORTED.md | 38 + ...SPEC07.WALLET_API.AccountDeploymentData.md | 70 + ...LET_API.AddDeclareTransactionParameters.md | 40 + ....WALLET_API.AddDeclareTransactionResult.md | 32 + ...LLET_API.AddInvokeTransactionParameters.md | 26 + ...7.WALLET_API.AddInvokeTransactionResult.md | 20 + ...7.WALLET_API.AddStarknetChainParameters.md | 118 + ....RPCSPEC07.WALLET_API.ApiVersionRequest.md | 20 + ...EC07.WALLET_API.INVALID_REQUEST_PAYLOAD.md | 28 + ...ypes.RPC.RPCSPEC07.WALLET_API.NOT_ERC20.md | 28 + ...07.WALLET_API.RequestAccountsParameters.md | 27 + ...PCSPEC07.WALLET_API.RpcTypeToMessageMap.md | 277 ++ ...RPC.RPCSPEC07.WALLET_API.StarknetDomain.md | 56 + ...CSPEC07.WALLET_API.StarknetWindowObject.md | 78 + ...ALLET_API.SwitchStarknetChainParameters.md | 18 + ...ypes.RPC.RPCSPEC07.WALLET_API.TypedData.md | 51 + ....RPC.RPCSPEC07.WALLET_API.UNKNOWN_ERROR.md | 28 + ...C.RPCSPEC07.WALLET_API.UNLISTED_NETWORK.md | 28 + ...PC.RPCSPEC07.WALLET_API.USER_REFUSED_OP.md | 28 + ...PCSPEC07.WALLET_API.WalletEventHandlers.md | 28 + ...CSPEC07.WALLET_API.WatchAssetParameters.md | 58 + .../API/interfaces/types.Uint256.md | 30 + .../API/interfaces/types.Uint512.md | 50 + .../API/interfaces/types.UniversalDetails.md | 124 + .../version-6.24.1/API/modules.md | 2020 +++++++++++ .../version-6.24.1/API/namespaces/RPC06.md | 11 + .../version-6.24.1/API/namespaces/RPC07.md | 11 + .../API/namespaces/_category_.yml | 2 + .../API/namespaces/byteArray.md | 79 + .../version-6.24.1/API/namespaces/cairo.md | 703 ++++ .../API/namespaces/constants.md | 294 ++ .../version-6.24.1/API/namespaces/ec.md | 12 + .../API/namespaces/ec.starkCurve.md | 557 +++ .../namespaces/ec.starkCurve.poseidonSmall.md | 48 + .../API/namespaces/ec.weierstrass.md | 399 ++ .../version-6.24.1/API/namespaces/encode.md | 486 +++ .../version-6.24.1/API/namespaces/eth.md | 63 + .../version-6.24.1/API/namespaces/events.md | 146 + .../version-6.24.1/API/namespaces/hash.md | 725 ++++ .../API/namespaces/hash.poseidon.md | 110 + .../version-6.24.1/API/namespaces/json.md | 139 + .../version-6.24.1/API/namespaces/merkle.md | 51 + .../version-6.24.1/API/namespaces/num.md | 688 ++++ .../API/namespaces/outsideExecution.md | 195 + .../API/namespaces/provider-1.md | 340 ++ .../version-6.24.1/API/namespaces/selector.md | 43 + .../API/namespaces/shortString.md | 296 ++ .../version-6.24.1/API/namespaces/src5.md | 42 + .../version-6.24.1/API/namespaces/stark.md | 550 +++ .../API/namespaces/starknetId.md | 522 +++ .../API/namespaces/transaction.md | 343 ++ .../API/namespaces/typedData.md | 495 +++ .../API/namespaces/types.RPC.JRPC.md | 87 + .../namespaces/types.RPC.RPCSPEC06.Errors.md | 40 + .../namespaces/types.RPC.RPCSPEC06.SPEC.md | 1775 +++++++++ .../API/namespaces/types.RPC.RPCSPEC06.md | 844 +++++ .../types.RPC.RPCSPEC07.API.Errors.md | 40 + .../types.RPC.RPCSPEC07.API.SPEC.md | 1753 +++++++++ .../API/namespaces/types.RPC.RPCSPEC07.API.md | 1056 ++++++ .../types.RPC.RPCSPEC07.WALLET_API.md | 464 +++ .../API/namespaces/types.RPC.RPCSPEC07.md | 691 ++++ .../API/namespaces/types.RPC.md | 704 ++++ .../version-6.24.1/API/namespaces/types.md | 2544 +++++++++++++ .../version-6.24.1/API/namespaces/uint256.md | 126 + .../version-6.24.1/API/namespaces/v2hash.md | 160 + .../version-6.24.1/API/namespaces/v3hash.md | 231 ++ .../version-6.24.1/API/namespaces/wallet.md | 325 ++ .../version-6.24.1/guides/L1message.md | 123 + .../version-6.24.1/guides/_category_.json | 5 + .../guides/automatic_cairo_ABI_parsing.md | 82 + .../version-6.24.1/guides/cairo_enum.md | 285 ++ .../version-6.24.1/guides/configuration.md | 91 + .../version-6.24.1/guides/connect_account.md | 88 + .../version-6.24.1/guides/connect_contract.md | 59 + .../version-6.24.1/guides/connect_network.md | 218 ++ .../version-6.24.1/guides/create_account.md | 391 ++ .../version-6.24.1/guides/create_contract.md | 204 ++ .../guides/define_call_message.md | 647 ++++ .../guides/doc_scripts/deployBraavos.ts | 197 + .../version-6.24.1/guides/estimate_fees.md | 138 + .../version-6.24.1/guides/events.md | 217 ++ .../version-6.24.1/guides/interact.md | 279 ++ .../version-6.24.1/guides/intro.md | 54 + .../version-6.24.1/guides/migrate.md | 105 + .../version-6.24.1/guides/migrate_v4.md | 195 + .../version-6.24.1/guides/multiCall.md | 54 + .../version-6.24.1/guides/outsideExecution.md | 297 ++ .../version-6.24.1/guides/pictures/ERC20.png | Bin 0 -> 59170 bytes .../guides/pictures/Interact_contract.png | Bin 0 -> 38986 bytes .../guides/pictures/LedgerConnectivity.png | Bin 0 -> 91559 bytes .../guides/pictures/LedgerTitle.png | Bin 0 -> 63053 bytes .../guides/pictures/SelectWallet.png | Bin 0 -> 24395 bytes .../pictures/WalletAccountArchitecture.png | Bin 0 -> 18177 bytes .../guides/pictures/addToken.png | Bin 0 -> 47809 bytes .../guides/pictures/createContract.png | Bin 0 -> 66099 bytes .../guides/pictures/encodeFn2.png | Bin 0 -> 170975 bytes .../guides/pictures/executeTx.png | Bin 0 -> 44695 bytes .../guides/pictures/starknet-js-chart.png | Bin 0 -> 55654 bytes .../guides/pictures/switchNetwork.png | Bin 0 -> 34036 bytes .../version-6.24.1/guides/signature.md | 277 ++ .../version-6.24.1/guides/use_ERC20.md | 117 + .../version-6.24.1/guides/walletAccount.md | 203 ++ .../guides/what_s_starknet.js.md | 34 + .../version-6.24.1-sidebars.json | 8 + www/versions.json | 2 +- 221 files changed, 47649 insertions(+), 1 deletion(-) create mode 100644 www/versioned_docs/version-6.24.1/API/_category_.yml create mode 100644 www/versioned_docs/version-6.24.1/API/classes/Account.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/AccountInterface.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/BatchClient.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/CairoCustomEnum.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/CairoFixedArray.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/CairoOption.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/CairoResult.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/CairoUint256.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/CairoUint512.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/CallData.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/Contract.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/ContractFactory.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/ContractInterface.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/CustomError.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/EthSigner.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/LedgerSigner111.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/LedgerSigner221.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/LibraryError.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/Provider.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/ProviderInterface.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/RPC06.RpcChannel.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/RPC07.RpcChannel.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/RPCResponseParser.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/ReceiptTx.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/ResponseParser.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/RpcError.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/Signer.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/SignerInterface.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/WalletAccount.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/_category_.yml create mode 100644 www/versioned_docs/version-6.24.1/API/classes/merkle.MerkleTree.md create mode 100644 www/versioned_docs/version-6.24.1/API/classes/provider-1.Block.md create mode 100644 www/versioned_docs/version-6.24.1/API/enums/_category_.yml create mode 100644 www/versioned_docs/version-6.24.1/API/enums/constants.BaseUrl.md create mode 100644 www/versioned_docs/version-6.24.1/API/enums/constants.FeeMarginPercentage.md create mode 100644 www/versioned_docs/version-6.24.1/API/enums/constants.NetworkName.md create mode 100644 www/versioned_docs/version-6.24.1/API/enums/constants.StarknetChainId.md create mode 100644 www/versioned_docs/version-6.24.1/API/enums/constants.TransactionHashPrefix.md create mode 100644 www/versioned_docs/version-6.24.1/API/enums/types.OutsideExecutionVersion.md create mode 100644 www/versioned_docs/version-6.24.1/API/index.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/_category_.yml create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/ec.weierstrass.ProjConstructor.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/ec.weierstrass.ProjPointType.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/ec.weierstrass.SignatureType.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.CallStruct.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.DeployContractResponse.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.EstimateFee.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.EstimateFeeDetails.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.EstimateFeeResponse.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.MessageToL1.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.OutsideCall.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.OutsideExecution.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.OutsideExecutionOptions.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.OutsideTransaction.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.Program.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.ProviderOptions.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.BLOCK_NOT_FOUND.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CLASS_ALREADY_DECLARED.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CLASS_HASH_NOT_FOUND.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.COMPILATION_FAILED.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.COMPILED_CLASS_HASH_MISMATCH.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CONTRACT_CLASS_SIZE_IS_TOO_LARGE.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CONTRACT_ERROR.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CONTRACT_NOT_FOUND.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.DUPLICATE_TX.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.FAILED_TO_RECEIVE_TXN.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INSUFFICIENT_ACCOUNT_BALANCE.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INSUFFICIENT_MAX_FEE.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_BLOCK_HASH.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_CALL_DATA.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_CONTINUATION_TOKEN.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_MESSAGE_SELECTOR.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_TRANSACTION_NONCE.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_TXN_INDEX.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.NON_ACCOUNT.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.NO_BLOCKS.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.NO_TRACE_AVAILABLE.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.PAGE_SIZE_TOO_BIG.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.TOO_MANY_KEYS_IN_FILTER.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.TRANSACTION_EXECUTION_ERROR.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.TXN_HASH_NOT_FOUND.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.UNEXPECTED_ERROR.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.UNSUPPORTED_CONTRACT_CLASS_VERSION.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.UNSUPPORTED_TX_VERSION.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.VALIDATION_FAILURE.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.BLOCK_NOT_FOUND.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CLASS_ALREADY_DECLARED.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CLASS_HASH_NOT_FOUND.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.COMPILATION_FAILED.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.COMPILED_CLASS_HASH_MISMATCH.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CONTRACT_CLASS_SIZE_IS_TOO_LARGE.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CONTRACT_ERROR.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CONTRACT_NOT_FOUND.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.DUPLICATE_TX.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.FAILED_TO_RECEIVE_TXN.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INSUFFICIENT_ACCOUNT_BALANCE.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INSUFFICIENT_MAX_FEE.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_BLOCK_HASH.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_CALL_DATA.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_CONTINUATION_TOKEN.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_MESSAGE_SELECTOR.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_TRANSACTION_NONCE.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_TXN_INDEX.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.NON_ACCOUNT.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.NO_BLOCKS.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.NO_TRACE_AVAILABLE.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.PAGE_SIZE_TOO_BIG.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.TOO_MANY_KEYS_IN_FILTER.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.TRANSACTION_EXECUTION_ERROR.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.TXN_HASH_NOT_FOUND.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.UNEXPECTED_ERROR.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.UNSUPPORTED_CONTRACT_CLASS_VERSION.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.UNSUPPORTED_TX_VERSION.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.VALIDATION_FAILURE.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.ACCOUNT_ALREADY_DEPLOYED.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.API_VERSION_NOT_SUPPORTED.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AccountDeploymentData.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionParameters.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionResult.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionParameters.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionResult.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddStarknetChainParameters.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.ApiVersionRequest.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.INVALID_REQUEST_PAYLOAD.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.NOT_ERC20.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.RequestAccountsParameters.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.RpcTypeToMessageMap.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetDomain.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.SwitchStarknetChainParameters.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.UNKNOWN_ERROR.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.UNLISTED_NETWORK.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.USER_REFUSED_OP.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.WalletEventHandlers.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.WatchAssetParameters.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.Uint256.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.Uint512.md create mode 100644 www/versioned_docs/version-6.24.1/API/interfaces/types.UniversalDetails.md create mode 100644 www/versioned_docs/version-6.24.1/API/modules.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/RPC06.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/RPC07.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/_category_.yml create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/byteArray.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/cairo.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/constants.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/ec.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/ec.starkCurve.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/ec.starkCurve.poseidonSmall.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/ec.weierstrass.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/encode.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/eth.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/events.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/hash.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/hash.poseidon.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/json.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/merkle.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/num.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/outsideExecution.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/provider-1.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/selector.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/shortString.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/src5.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/stark.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/starknetId.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/transaction.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/typedData.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.JRPC.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC06.Errors.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC06.SPEC.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC06.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.API.Errors.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.API.SPEC.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.API.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.WALLET_API.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/types.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/uint256.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/v2hash.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/v3hash.md create mode 100644 www/versioned_docs/version-6.24.1/API/namespaces/wallet.md create mode 100644 www/versioned_docs/version-6.24.1/guides/L1message.md create mode 100644 www/versioned_docs/version-6.24.1/guides/_category_.json create mode 100644 www/versioned_docs/version-6.24.1/guides/automatic_cairo_ABI_parsing.md create mode 100644 www/versioned_docs/version-6.24.1/guides/cairo_enum.md create mode 100644 www/versioned_docs/version-6.24.1/guides/configuration.md create mode 100644 www/versioned_docs/version-6.24.1/guides/connect_account.md create mode 100644 www/versioned_docs/version-6.24.1/guides/connect_contract.md create mode 100644 www/versioned_docs/version-6.24.1/guides/connect_network.md create mode 100644 www/versioned_docs/version-6.24.1/guides/create_account.md create mode 100644 www/versioned_docs/version-6.24.1/guides/create_contract.md create mode 100644 www/versioned_docs/version-6.24.1/guides/define_call_message.md create mode 100644 www/versioned_docs/version-6.24.1/guides/doc_scripts/deployBraavos.ts create mode 100644 www/versioned_docs/version-6.24.1/guides/estimate_fees.md create mode 100644 www/versioned_docs/version-6.24.1/guides/events.md create mode 100644 www/versioned_docs/version-6.24.1/guides/interact.md create mode 100644 www/versioned_docs/version-6.24.1/guides/intro.md create mode 100644 www/versioned_docs/version-6.24.1/guides/migrate.md create mode 100644 www/versioned_docs/version-6.24.1/guides/migrate_v4.md create mode 100644 www/versioned_docs/version-6.24.1/guides/multiCall.md create mode 100644 www/versioned_docs/version-6.24.1/guides/outsideExecution.md create mode 100644 www/versioned_docs/version-6.24.1/guides/pictures/ERC20.png create mode 100644 www/versioned_docs/version-6.24.1/guides/pictures/Interact_contract.png create mode 100644 www/versioned_docs/version-6.24.1/guides/pictures/LedgerConnectivity.png create mode 100644 www/versioned_docs/version-6.24.1/guides/pictures/LedgerTitle.png create mode 100644 www/versioned_docs/version-6.24.1/guides/pictures/SelectWallet.png create mode 100644 www/versioned_docs/version-6.24.1/guides/pictures/WalletAccountArchitecture.png create mode 100644 www/versioned_docs/version-6.24.1/guides/pictures/addToken.png create mode 100644 www/versioned_docs/version-6.24.1/guides/pictures/createContract.png create mode 100644 www/versioned_docs/version-6.24.1/guides/pictures/encodeFn2.png create mode 100644 www/versioned_docs/version-6.24.1/guides/pictures/executeTx.png create mode 100644 www/versioned_docs/version-6.24.1/guides/pictures/starknet-js-chart.png create mode 100644 www/versioned_docs/version-6.24.1/guides/pictures/switchNetwork.png create mode 100644 www/versioned_docs/version-6.24.1/guides/signature.md create mode 100644 www/versioned_docs/version-6.24.1/guides/use_ERC20.md create mode 100644 www/versioned_docs/version-6.24.1/guides/walletAccount.md create mode 100644 www/versioned_docs/version-6.24.1/guides/what_s_starknet.js.md create mode 100644 www/versioned_sidebars/version-6.24.1-sidebars.json diff --git a/www/versioned_docs/version-6.24.1/API/_category_.yml b/www/versioned_docs/version-6.24.1/API/_category_.yml new file mode 100644 index 000000000..3c0dfeba4 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/_category_.yml @@ -0,0 +1 @@ +label: 'API' diff --git a/www/versioned_docs/version-6.24.1/API/classes/Account.md b/www/versioned_docs/version-6.24.1/API/classes/Account.md new file mode 100644 index 000000000..7bb9a6b90 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/Account.md @@ -0,0 +1,2885 @@ +--- +id: 'Account' +title: 'Class: Account' +sidebar_label: 'Account' +sidebar_position: 0 +custom_edit_url: null +--- + +## Hierarchy + +- [`Provider`](Provider.md) + + ↳ **`Account`** + + ↳↳ [`WalletAccount`](WalletAccount.md) + +## Implements + +- [`AccountInterface`](AccountInterface.md) + +## Constructors + +### constructor + +• **new Account**(`providerOrOptions`, `address`, `pkOrSigner`, `cairoVersion?`, `transactionVersion?`): [`Account`](Account.md) + +#### Parameters + +| Name | Type | +| :------------------- | :--------------------------------------------------------------------------------------------------------- | +| `providerOrOptions` | [`ProviderOptions`](../interfaces/types.ProviderOptions.md) \| [`ProviderInterface`](ProviderInterface.md) | +| `address` | `string` | +| `pkOrSigner` | `string` \| `Uint8Array` \| [`SignerInterface`](SignerInterface.md) | +| `cairoVersion?` | [`CairoVersion`](../namespaces/types.md#cairoversion) | +| `transactionVersion` | `"0x2"` \| `"0x3"` | + +#### Returns + +[`Account`](Account.md) + +#### Overrides + +[Provider](Provider.md).[constructor](Provider.md#constructor) + +#### Defined in + +[src/account/default.ts:90](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L90) + +## Properties + +### signer + +• **signer**: [`SignerInterface`](SignerInterface.md) + +#### Implementation of + +[AccountInterface](AccountInterface.md).[signer](AccountInterface.md#signer) + +#### Defined in + +[src/account/default.ts:82](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L82) + +--- + +### address + +• **address**: `string` + +#### Implementation of + +[AccountInterface](AccountInterface.md).[address](AccountInterface.md#address) + +#### Defined in + +[src/account/default.ts:84](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L84) + +--- + +### cairoVersion + +• **cairoVersion**: [`CairoVersion`](../namespaces/types.md#cairoversion) + +#### Implementation of + +[AccountInterface](AccountInterface.md).[cairoVersion](AccountInterface.md#cairoversion) + +#### Defined in + +[src/account/default.ts:86](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L86) + +--- + +### transactionVersion + +• `Readonly` **transactionVersion**: `"0x2"` \| `"0x3"` + +#### Defined in + +[src/account/default.ts:88](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L88) + +--- + +### deploySelf + +• **deploySelf**: (`__namedParameters`: [`DeployAccountContractPayload`](../namespaces/types.md#deployaccountcontractpayload), `details`: [`UniversalDetails`](../interfaces/types.UniversalDetails.md)) => `Promise`<[`DeployContractResponse`](../interfaces/types.DeployContractResponse.md)\> + +#### Type declaration + +▸ (`«destructured»`, `details?`): `Promise`<[`DeployContractResponse`](../interfaces/types.DeployContractResponse.md)\> + +##### Parameters + +| Name | Type | +| :--------------- | :------------------------------------------------------------------------------------ | +| `«destructured»` | [`DeployAccountContractPayload`](../namespaces/types.md#deployaccountcontractpayload) | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | + +##### Returns + +`Promise`<[`DeployContractResponse`](../interfaces/types.DeployContractResponse.md)\> + +#### Defined in + +[src/account/default.ts:496](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L496) + +--- + +### responseParser + +• **responseParser**: [`RPCResponseParser`](RPCResponseParser.md) + +#### Inherited from + +[Provider](Provider.md).[responseParser](Provider.md#responseparser) + +#### Defined in + +[src/provider/rpc.ts:51](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L51) + +--- + +### channel + +• **channel**: [`RpcChannel`](RPC06.RpcChannel.md) \| [`RpcChannel`](RPC07.RpcChannel.md) + +#### Implementation of + +[AccountInterface](AccountInterface.md).[channel](AccountInterface.md#channel) + +#### Inherited from + +[Provider](Provider.md).[channel](Provider.md#channel) + +#### Defined in + +[src/provider/rpc.ts:53](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L53) + +--- + +### getStateUpdate + +• **getStateUpdate**: () => `Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\>(`blockIdentifier`: `"pending"`) => `Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\>(`blockIdentifier`: `"latest"`) => `Promise`<\{ `block_hash`: `string` ; `old_root`: `string` ; `new_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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\>(`blockIdentifier?`: [`BlockIdentifier`](../namespaces/types.md#blockidentifier)) => `Promise`<[`StateUpdateResponse`](../namespaces/types.md#stateupdateresponse)\> + +#### Type declaration + +▸ (): `Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +##### Returns + +`Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +▸ (`blockIdentifier`): `Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +##### Parameters + +| Name | Type | +| :---------------- | :---------- | +| `blockIdentifier` | `"pending"` | + +##### Returns + +`Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +▸ (`blockIdentifier`): `Promise`<\{ `block_hash`: `string` ; `old_root`: `string` ; `new_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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +##### Parameters + +| Name | Type | +| :---------------- | :--------- | +| `blockIdentifier` | `"latest"` | + +##### Returns + +`Promise`<\{ `block_hash`: `string` ; `old_root`: `string` ; `new_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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +▸ (`blockIdentifier?`): `Promise`<[`StateUpdateResponse`](../namespaces/types.md#stateupdateresponse)\> + +##### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +##### Returns + +`Promise`<[`StateUpdateResponse`](../namespaces/types.md#stateupdateresponse)\> + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getStateUpdate](AccountInterface.md#getstateupdate) + +#### Inherited from + +[Provider](Provider.md).[getStateUpdate](Provider.md#getstateupdate) + +#### Defined in + +[src/provider/rpc.ts:191](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L191) + +## Methods + +### getStarkName + +▸ **getStarkName**(`provider`, `address`, `StarknetIdContract?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :-------------------- | :---------------------------------------------------- | +| `provider` | [`ProviderInterface`](ProviderInterface.md) | +| `address` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `StarknetIdContract?` | `string` | + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +[Provider](Provider.md).[getStarkName](Provider.md#getstarkname) + +#### Defined in + +[src/provider/extensions/starknetId.ts:62](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/extensions/starknetId.ts#L62) + +--- + +### getAddressFromStarkName + +▸ **getAddressFromStarkName**(`provider`, `name`, `StarknetIdContract?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :-------------------- | :------------------------------------------ | +| `provider` | [`ProviderInterface`](ProviderInterface.md) | +| `name` | `string` | +| `StarknetIdContract?` | `string` | + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +[Provider](Provider.md).[getAddressFromStarkName](Provider.md#getaddressfromstarkname) + +#### Defined in + +[src/provider/extensions/starknetId.ts:96](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/extensions/starknetId.ts#L96) + +--- + +### getStarkProfile + +▸ **getStarkProfile**(`provider`, `address`, `StarknetIdContract?`, `StarknetIdIdentityContract?`, `StarknetIdVerifierContract?`, `StarknetIdPfpContract?`, `StarknetIdPopContract?`, `StarknetIdMulticallContract?`): `Promise`<[`StarkProfile`](../namespaces/types.md#starkprofile)\> + +#### Parameters + +| Name | Type | +| :----------------------------- | :---------------------------------------------------- | +| `provider` | [`ProviderInterface`](ProviderInterface.md) | +| `address` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `StarknetIdContract?` | `string` | +| `StarknetIdIdentityContract?` | `string` | +| `StarknetIdVerifierContract?` | `string` | +| `StarknetIdPfpContract?` | `string` | +| `StarknetIdPopContract?` | `string` | +| `StarknetIdMulticallContract?` | `string` | + +#### Returns + +`Promise`<[`StarkProfile`](../namespaces/types.md#starkprofile)\> + +#### Inherited from + +[Provider](Provider.md).[getStarkProfile](Provider.md#getstarkprofile) + +#### Defined in + +[src/provider/extensions/starknetId.ts:128](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/extensions/starknetId.ts#L128) + +--- + +### getPreferredVersion + +▸ **getPreferredVersion**(`type12`, `type3`): [`ETransactionVersion`](../namespaces/types.RPC.RPCSPEC07.API.md#etransactionversion-1) + +#### Parameters + +| Name | Type | +| :------- | :-------------------------------------------------------------------------------------- | +| `type12` | [`ETransactionVersion`](../namespaces/types.RPC.RPCSPEC07.API.md#etransactionversion-1) | +| `type3` | [`ETransactionVersion`](../namespaces/types.RPC.RPCSPEC07.API.md#etransactionversion-1) | + +#### Returns + +[`ETransactionVersion`](../namespaces/types.RPC.RPCSPEC07.API.md#etransactionversion-1) + +#### Defined in + +[src/account/default.ts:113](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L113) + +--- + +### getNonce + +▸ **getNonce**(`blockIdentifier?`): `Promise`<`string`\> + +Gets the nonce of the account with respect to a specific block + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :---------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | optional blockIdentifier. Defaults to 'pending' | + +#### Returns + +`Promise`<`string`\> + +nonce of the account + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getNonce](AccountInterface.md#getnonce) + +#### Defined in + +[src/account/default.ts:120](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L120) + +--- + +### getNonceSafe + +▸ **getNonceSafe**(`nonce?`): `Promise`<`bigint`\> + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `nonce?` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<`bigint`\> + +#### Defined in + +[src/account/default.ts:124](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L124) + +--- + +### getCairoVersion + +▸ **getCairoVersion**(`classHash?`): `Promise`<[`CairoVersion`](../namespaces/types.md#cairoversion)\> + +Retrieves the Cairo version from the network and sets `cairoVersion` if not already set in the constructor. + +#### Parameters + +| Name | Type | Description | +| :----------- | :------- | :----------------------------------------------------------------------------------- | +| `classHash?` | `string` | if provided detects Cairo version from classHash, otherwise from the account address | + +#### Returns + +`Promise`<[`CairoVersion`](../namespaces/types.md#cairoversion)\> + +#### Defined in + +[src/account/default.ts:137](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L137) + +--- + +### estimateFee + +▸ **estimateFee**(`calls`, `estimateFeeDetails?`): `Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +#### Parameters + +| Name | Type | +| :------------------- | :---------------------------------------------------------------------------------------- | +| `calls` | [`AllowArray`](../namespaces/types.md#allowarray)<[`Call`](../namespaces/types.md#call)\> | +| `estimateFeeDetails` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | + +#### Returns + +`Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +#### Defined in + +[src/account/default.ts:147](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L147) + +--- + +### estimateInvokeFee + +▸ **estimateInvokeFee**(`calls`, `details?`): `Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +Estimate Fee for executing an INVOKE transaction on starknet + +#### Parameters + +| Name | Type | Description | +| :-------- | :---------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `calls` | [`AllowArray`](../namespaces/types.md#allowarray)<[`Call`](../namespaces/types.md#call)\> | the invocation object containing: - contractAddress - the address of the contract - entrypoint - the entrypoint of the contract - calldata? - (defaults to []) the calldata | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | blockIdentifier? - nonce? = 0 - skipValidate? - default true - tip? - prioritize order of transactions in the mempool. - accountDeploymentData? - deploy an account contract (substitution for deploy account transaction) - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337) - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei | + +#### Returns + +`Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +response from estimate_fee + +#### Implementation of + +[AccountInterface](AccountInterface.md).[estimateInvokeFee](AccountInterface.md#estimateinvokefee) + +#### Defined in + +[src/account/default.ts:154](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L154) + +--- + +### estimateDeclareFee + +▸ **estimateDeclareFee**(`payload`, `details?`): `Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +Estimate Fee for executing a DECLARE transaction on starknet + +#### Parameters + +| Name | Type | Description | +| :-------- | :------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `payload` | [`DeclareContractPayload`](../namespaces/types.md#declarecontractpayload) | the payload object containing: - contract - the compiled contract to be declared - casm? - compiled cairo assembly. Cairo1(casm or compiledClassHash are required) - classHash? - the class hash of the compiled contract. Precalculate for faster execution. - compiledClassHash?: class hash of the cairo assembly. Cairo1(casm or compiledClassHash are required) | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | blockIdentifier? - nonce? = 0 - skipValidate? - default true - tip? - prioritize order of transactions in the mempool. - accountDeploymentData? - deploy an account contract (substitution for deploy account transaction) - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337) - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei | + +#### Returns + +`Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +response from estimate_fee + +#### Implementation of + +[AccountInterface](AccountInterface.md).[estimateDeclareFee](AccountInterface.md#estimatedeclarefee) + +#### Defined in + +[src/account/default.ts:193](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L193) + +--- + +### estimateAccountDeployFee + +▸ **estimateAccountDeployFee**(`«destructured»`, `details?`): `Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +Estimate Fee for executing a DEPLOY_ACCOUNT transaction on starknet + +#### Parameters + +| Name | Type | Description | +| :--------------- | :------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `«destructured»` | [`DeployAccountContractPayload`](../namespaces/types.md#deployaccountcontractpayload) | classHash - the class hash of the compiled contract. - constructorCalldata? - constructor data; - contractAddress? - future account contract address. Precalculate for faster execution. - addressSalt? - salt used for calculation of the contractAddress. Required if contractAddress is provided. | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | blockIdentifier? - nonce? = 0 - skipValidate? - default true - tip? - prioritize order of transactions in the mempool. - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337) - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei | + +#### Returns + +`Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +response from estimate_fee + +#### Implementation of + +[AccountInterface](AccountInterface.md).[estimateAccountDeployFee](AccountInterface.md#estimateaccountdeployfee) + +#### Defined in + +[src/account/default.ts:231](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L231) + +--- + +### estimateDeployFee + +▸ **estimateDeployFee**(`payload`, `details?`): `Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +Estimate Fee for executing a UDC DEPLOY transaction on starknet +This is different from the normal DEPLOY transaction as it goes through the Universal Deployer Contract (UDC) + +#### Parameters + +| Name | Type | Description | +| :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `payload` | [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload) \| [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload)[] | array or singular - classHash: computed class hash of compiled contract - salt: address salt - unique: bool if true ensure unique salt - constructorCalldata: constructor calldata | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | blockIdentifier? - nonce? - skipValidate? - default true - tip? - prioritize order of transactions in the mempool. - accountDeploymentData? - deploy an account contract (substitution for deploy account transaction) - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337) - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei | + +#### Returns + +`Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +#### Implementation of + +[AccountInterface](AccountInterface.md).[estimateDeployFee](AccountInterface.md#estimatedeployfee) + +#### Defined in + +[src/account/default.ts:270](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L270) + +--- + +### estimateFeeBulk + +▸ **estimateFeeBulk**(`invocations`, `details?`): `Promise`<[`EstimateFeeBulk`](../namespaces/types.md#estimatefeebulk)\> + +Estimate Fee for executing a list of transactions on starknet +Contract must be deployed for fee estimation to be possible + +#### Parameters + +| Name | Type | Description | +| :------------ | :------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `invocations` | [`Invocations`](../namespaces/types.md#invocations) | array of transaction object containing : - type - the type of transaction : 'DECLARE' \| (multi)'DEPLOY' \| (multi)'INVOKE_FUNCTION' \| 'DEPLOY_ACCOUNT' - payload - the payload of the transaction | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | blockIdentifier? - nonce? - skipValidate? - default true - tip? - prioritize order of transactions in the mempool. - accountDeploymentData? - deploy an account contract (substitution for deploy account transaction) - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337) - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei | + +#### Returns + +`Promise`<[`EstimateFeeBulk`](../namespaces/types.md#estimatefeebulk)\> + +response from estimate_fee + +#### Implementation of + +[AccountInterface](AccountInterface.md).[estimateFeeBulk](AccountInterface.md#estimatefeebulk) + +#### Defined in + +[src/account/default.ts:278](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L278) + +--- + +### simulateTransaction + +▸ **simulateTransaction**(`invocations`, `details?`): `Promise`<[`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse)\> + +Simulates an array of transaction and returns an array of transaction trace and estimated fee. + +#### Parameters + +| Name | Type | Description | +| :------------ | :-------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------- | +| `invocations` | [`Invocations`](../namespaces/types.md#invocations) | Invocations containing: - type - transaction type: DECLARE, (multi)DEPLOY, DEPLOY_ACCOUNT, (multi)INVOKE_FUNCTION | +| `details` | [`SimulateTransactionDetails`](../namespaces/types.md#simulatetransactiondetails) | SimulateTransactionDetails | + +#### Returns + +`Promise`<[`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse)\> + +response from simulate_transaction + +#### Implementation of + +[AccountInterface](AccountInterface.md).[simulateTransaction](AccountInterface.md#simulatetransaction) + +#### Defined in + +[src/account/default.ts:304](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L304) + +--- + +### execute + +▸ **execute**(`transactions`, `transactionsDetail?`): `Promise`<\{ `transaction_hash`: `string` }\> + +Invoke execute function in account contract + +#### Parameters + +| Name | Type | Description | +| :-------------------- | :---------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `transactions` | [`AllowArray`](../namespaces/types.md#allowarray)<[`Call`](../namespaces/types.md#call)\> | the invocation object or an array of them, containing: - contractAddress - the address of the contract - entrypoint - the entrypoint of the contract - calldata - (defaults to []) the calldata - signature - (defaults to []) the signature | +| `transactionsDetail?` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | Additional optional parameters for the transaction | + +#### Returns + +`Promise`<\{ `transaction_hash`: `string` }\> + +response from addTransaction + +#### Implementation of + +[AccountInterface](AccountInterface.md).[execute](AccountInterface.md#execute) + +#### Defined in + +[src/account/default.ts:331](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L331) + +▸ **execute**(`transactions`, `abis?`, `transactionsDetail?`): `Promise`<\{ `transaction_hash`: `string` }\> + +#### Parameters + +| Name | Type | Description | +| :-------------------- | :---------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `transactions` | [`AllowArray`](../namespaces/types.md#allowarray)<[`Call`](../namespaces/types.md#call)\> | the invocation object or an array of them, containing: - contractAddress - the address of the contract - entrypoint - the entrypoint of the contract - calldata - (defaults to []) the calldata - signature - (defaults to []) the signature | +| `abis?` | [`Abi`](../namespaces/types.md#abi)[] | (optional) the abi of the contract for better displaying | +| `transactionsDetail?` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | Additional optional parameters for the transaction \* | + +#### Returns + +`Promise`<\{ `transaction_hash`: `string` }\> + +response from addTransaction + +**`Deprecated`** + +#### Implementation of + +[AccountInterface](AccountInterface.md).[execute](AccountInterface.md#execute) + +#### Defined in + +[src/account/default.ts:335](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L335) + +--- + +### declareIfNot + +▸ **declareIfNot**(`payload`, `transactionsDetail?`): `Promise`<\{ `class_hash`: `string` ; `transaction_hash`: `string` }\> + +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 + +#### Parameters + +| Name | Type | Description | +| :------------------- | :------------------------------------------------------------------------ | :---------- | +| `payload` | [`DeclareContractPayload`](../namespaces/types.md#declarecontractpayload) | - | +| `transactionsDetail` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | (optional) | + +#### Returns + +`Promise`<\{ `class_hash`: `string` ; `transaction_hash`: `string` }\> + +#### Defined in + +[src/account/default.ts:397](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L397) + +--- + +### declare + +▸ **declare**(`payload`, `details?`): `Promise`<\{ `class_hash`: `string` ; `transaction_hash`: `string` }\> + +Declares a given compiled contract (json) to starknet + +#### Parameters + +| Name | Type | Description | +| :-------- | :------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `payload` | [`DeclareContractPayload`](../namespaces/types.md#declarecontractpayload) | transaction payload to be deployed containing: - contract: compiled contract code - (optional) classHash: computed class hash of compiled contract. Pre-compute it for faster execution. - (required for Cairo1 without compiledClassHash) casm: CompiledContract \| string; - (optional for Cairo1 with casm) compiledClassHash: compiled class hash from casm. Pre-compute it for faster execution. | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | InvocationsDetails | + +#### Returns + +`Promise`<\{ `class_hash`: `string` ; `transaction_hash`: `string` }\> + +a confirmation of sending a transaction on the starknet contract + +#### Implementation of + +[AccountInterface](AccountInterface.md).[declare](AccountInterface.md#declare) + +#### Defined in + +[src/account/default.ts:413](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L413) + +--- + +### deploy + +▸ **deploy**(`payload`, `details?`): `Promise`<[`MultiDeployContractResponse`](../namespaces/types.md#multideploycontractresponse)\> + +Deploys a declared contract to starknet - using Universal Deployer Contract (UDC) +support multicall + +#### Parameters + +| Name | Type | Description | +| :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `payload` | [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload) \| [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload)[] | classHash: computed class hash of compiled contract - [constructorCalldata] contract constructor calldata - [salt=pseudorandom] deploy address salt - [unique=true] ensure unique salt | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | InvocationsDetails | + +#### Returns + +`Promise`<[`MultiDeployContractResponse`](../namespaces/types.md#multideploycontractresponse)\> + +- contract_address[] +- transaction_hash + +#### Implementation of + +[AccountInterface](AccountInterface.md).[deploy](AccountInterface.md#deploy) + +#### Defined in + +[src/account/default.ts:457](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L457) + +--- + +### deployContract + +▸ **deployContract**(`payload`, `details?`): `Promise`<[`DeployContractUDCResponse`](../namespaces/types.md#deploycontractudcresponse)\> + +Simplify deploy simulating old DeployContract with same response + UDC specific response +Internal wait for L2 transaction, support multicall + +#### Parameters + +| Name | Type | Description | +| :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `payload` | [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload) \| [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload)[] | classHash: computed class hash of compiled contract - [constructorCalldata] contract constructor calldata - [salt=pseudorandom] deploy address salt - [unique=true] ensure unique salt | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | InvocationsDetails | + +#### Returns + +`Promise`<[`DeployContractUDCResponse`](../namespaces/types.md#deploycontractudcresponse)\> + +- contract_address +- transaction_hash +- address +- deployer +- unique +- classHash +- calldata_len +- calldata +- salt + +#### Implementation of + +[AccountInterface](AccountInterface.md).[deployContract](AccountInterface.md#deploycontract) + +#### Defined in + +[src/account/default.ts:470](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L470) + +--- + +### declareAndDeploy + +▸ **declareAndDeploy**(`payload`, `details?`): `Promise`<[`DeclareDeployUDCResponse`](../namespaces/types.md#declaredeployudcresponse)\> + +Declares and Deploy a given compiled contract (json) to starknet using UDC +Internal wait for L2 transaction, do not support multicall +Method will pass even if contract is already declared (internal using DeclareIfNot) + +#### Parameters + +| Name | Type | Description | +| :-------- | :------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `payload` | [`DeclareAndDeployContractPayload`](../namespaces/types.md#declareanddeploycontractpayload) | contract: compiled contract code - [casm=cairo1]: CairoAssembly \| undefined; - [compiledClassHash]: string \| undefined; - [classHash]: computed class hash of compiled contract - [constructorCalldata] contract constructor calldata - [salt=pseudorandom] deploy address salt - [unique=true] ensure unique salt | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | InvocationsDetails | + +#### Returns + +`Promise`<[`DeclareDeployUDCResponse`](../namespaces/types.md#declaredeployudcresponse)\> + +- declare + - transaction_hash +- deploy + - contract_address + - transaction_hash + - address + - deployer + - unique + - classHash + - calldata_len + - calldata + - salt + +#### Implementation of + +[AccountInterface](AccountInterface.md).[declareAndDeploy](AccountInterface.md#declareanddeploy) + +#### Defined in + +[src/account/default.ts:479](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L479) + +--- + +### deployAccount + +▸ **deployAccount**(`«destructured»`, `details?`): `Promise`<[`DeployContractResponse`](../interfaces/types.DeployContractResponse.md)\> + +Deploy the account on Starknet + +#### Parameters + +| Name | Type | Description | +| :--------------- | :------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `«destructured»` | [`DeployAccountContractPayload`](../namespaces/types.md#deployaccountcontractpayload) | transaction payload to be deployed containing: - classHash: computed class hash of compiled contract - optional constructor calldata - optional address salt - optional contractAddress | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | InvocationsDetails | + +#### Returns + +`Promise`<[`DeployContractResponse`](../interfaces/types.DeployContractResponse.md)\> + +a confirmation of sending a transaction on the starknet contract + +#### Implementation of + +[AccountInterface](AccountInterface.md).[deployAccount](AccountInterface.md#deployaccount) + +#### Defined in + +[src/account/default.ts:498](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L498) + +--- + +### signMessage + +▸ **signMessage**(`typedData`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Signs a TypedData object for off-chain usage with the Starknet private key and returns the signature +This adds a message prefix so it can't be interchanged with transactions + +#### Parameters + +| Name | Type | Description | +| :---------- | :----------------------------------------------------------------------- | :---------------------------- | +| `typedData` | [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) | TypedData object to be signed | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +the signature of the TypedData object + +**`Throws`** + +if typedData is not a valid TypedData + +#### Implementation of + +[AccountInterface](AccountInterface.md).[signMessage](AccountInterface.md#signmessage) + +#### Defined in + +[src/account/default.ts:558](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L558) + +--- + +### hashMessage + +▸ **hashMessage**(`typedData`): `Promise`<`string`\> + +Hash a TypedData object with Pedersen hash and return the hash +This adds a message prefix so it can't be interchanged with transactions + +#### Parameters + +| Name | Type | Description | +| :---------- | :----------------------------------------------------------------------- | :---------------------------- | +| `typedData` | [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) | TypedData object to be hashed | + +#### Returns + +`Promise`<`string`\> + +the hash of the TypedData object + +**`Throws`** + +if typedData is not a valid TypedData + +#### Implementation of + +[AccountInterface](AccountInterface.md).[hashMessage](AccountInterface.md#hashmessage) + +#### Defined in + +[src/account/default.ts:562](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L562) + +--- + +### verifyMessageHash + +▸ **verifyMessageHash**(`hash`, `signature`, `signatureVerificationFunctionName?`, `signatureVerificationResponse?`): `Promise`<`boolean`\> + +#### Parameters + +| Name | Type | +| :------------------------------------------ | :---------------------------------------------------- | +| `hash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `signature` | [`Signature`](../namespaces/types.md#signature) | +| `signatureVerificationFunctionName?` | `string` | +| `signatureVerificationResponse?` | `Object` | +| `signatureVerificationResponse.okResponse` | `string`[] | +| `signatureVerificationResponse.nokResponse` | `string`[] | +| `signatureVerificationResponse.error` | `string`[] | + +#### Returns + +`Promise`<`boolean`\> + +**`Deprecated`** + +To replace by `myRpcProvider.verifyMessageInStarknet()` + +#### Defined in + +[src/account/default.ts:569](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L569) + +--- + +### verifyMessage + +▸ **verifyMessage**(`typedData`, `signature`, `signatureVerificationFunctionName?`, `signatureVerificationResponse?`): `Promise`<`boolean`\> + +#### Parameters + +| Name | Type | +| :------------------------------------------ | :----------------------------------------------------------------------- | +| `typedData` | [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) | +| `signature` | [`Signature`](../namespaces/types.md#signature) | +| `signatureVerificationFunctionName?` | `string` | +| `signatureVerificationResponse?` | `Object` | +| `signatureVerificationResponse.okResponse` | `string`[] | +| `signatureVerificationResponse.nokResponse` | `string`[] | +| `signatureVerificationResponse.error` | `string`[] | + +#### Returns + +`Promise`<`boolean`\> + +**`Deprecated`** + +To replace by `myRpcProvider.verifyMessageInStarknet()` + +#### Defined in + +[src/account/default.ts:587](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L587) + +--- + +### getSnip9Version + +▸ **getSnip9Version**(): `Promise`<[`OutsideExecutionVersion`](../enums/types.OutsideExecutionVersion.md)\> + +Verify if an account is compatible with SNIP-9 outside execution, and with which version of this standard. + +#### Returns + +`Promise`<[`OutsideExecutionVersion`](../enums/types.OutsideExecutionVersion.md)\> + +Not compatible, V1, V2. + +**`Example`** + +```typescript +const result = myAccount.getSnip9Version(); +// result = "V1" +``` + +#### Defined in + +[src/account/default.ts:611](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L611) + +--- + +### isValidSnip9Nonce + +▸ **isValidSnip9Nonce**(`nonce`): `Promise`<`boolean`\> + +Verify if a SNIP-9 nonce has not yet been used by the account. + +#### Parameters + +| Name | Type | Description | +| :------ | :---------------------------------------------------- | :-------------------- | +| `nonce` | [`BigNumberish`](../namespaces/types.md#bignumberish) | SNIP-9 nonce to test. | + +#### Returns + +`Promise`<`boolean`\> + +true if SNIP-9 nonce not yet used. + +**`Example`** + +```typescript +const result = myAccount.isValidSnip9Nonce(1234); +// result = true +``` + +#### Defined in + +[src/account/default.ts:632](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L632) + +--- + +### getSnip9Nonce + +▸ **getSnip9Nonce**(): `Promise`<`string`\> + +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`** + +```typescript +const result = myAccount.getSnip9Nonce(); +// result = "0x28a612590dbc36927933c8ee0f357eee639c8b22b3d3aa86949eed3ada4ac55" +``` + +#### Defined in + +[src/account/default.ts:656](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L656) + +--- + +### getOutsideTransaction + +▸ **getOutsideTransaction**(`options`, `calls`, `version?`, `nonce?`): `Promise`<[`OutsideTransaction`](../interfaces/types.OutsideTransaction.md)\> + +Creates an object containing transaction(s) that can be executed by an other account with` Account.executeFromOutside()`, called Outside Transaction. + +#### Parameters + +| Name | Type | Description | +| :--------- | :---------------------------------------------------------------------------------------- | :------------------------------------------------------------------ | +| `options` | [`OutsideExecutionOptions`](../interfaces/types.OutsideExecutionOptions.md) | Parameters of the transaction(s). | +| `calls` | [`AllowArray`](../namespaces/types.md#allowarray)<[`Call`](../namespaces/types.md#call)\> | Transaction(s) to execute. | +| `version?` | [`OutsideExecutionVersion`](../enums/types.OutsideExecutionVersion.md) | SNIP-9 version of the Account that creates the outside transaction. | +| `nonce?` | [`BigNumberish`](../namespaces/types.md#bignumberish) | Outside Nonce. | + +#### Returns + +`Promise`<[`OutsideTransaction`](../interfaces/types.OutsideTransaction.md)\> + +and object that can be used in `Account.executeFromOutside()` + +**`Example`** + +```typescript +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' +// } +``` + +#### Defined in + +[src/account/default.ts:693](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L693) + +--- + +### executeFromOutside + +▸ **executeFromOutside**(`outsideTransaction`, `opts?`): `Promise`<\{ `transaction_hash`: `string` }\> + +An account B executes a transaction that has been signed by an account A. +Fees are paid by B. + +#### Parameters + +| Name | Type | Description | +| :------------------- | :-------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- | +| `outsideTransaction` | [`AllowArray`](../namespaces/types.md#allowarray)<[`OutsideTransaction`](../interfaces/types.OutsideTransaction.md)\> | the signed transaction generated by `Account.getOutsideTransaction()`. | +| `opts?` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | same options than `Account.execute()`. | + +#### Returns + +`Promise`<\{ `transaction_hash`: `string` }\> + +same response than `Account.execute()`. + +**`Example`** + +```typescript +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...`} +``` + +#### Defined in + +[src/account/default.ts:753](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L753) + +--- + +### getUniversalSuggestedFee + +▸ **getUniversalSuggestedFee**(`version`, `«destructured»`, `details`): `Promise`<[`UniversalSuggestedFee`](../namespaces/types.md#universalsuggestedfee)\> + +#### Parameters + +| Name | Type | +| :--------------- | :-------------------------------------------------------------------------------------- | +| `version` | [`ETransactionVersion`](../namespaces/types.RPC.RPCSPEC07.API.md#etransactionversion-1) | +| `«destructured»` | [`EstimateFeeAction`](../namespaces/types.md#estimatefeeaction) | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | + +#### Returns + +`Promise`<[`UniversalSuggestedFee`](../namespaces/types.md#universalsuggestedfee)\> + +#### Defined in + +[src/account/default.ts:765](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L765) + +--- + +### getSuggestedFee + +▸ **getSuggestedFee**(`«destructured»`, `details`): `Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +Gets Suggested Max Fee based on the transaction type + +#### Parameters + +| Name | Type | +| :--------------- | :-------------------------------------------------------------- | +| `«destructured»` | [`EstimateFeeAction`](../namespaces/types.md#estimatefeeaction) | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | + +#### Returns + +`Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +EstimateFee (...response, resourceBounds, suggestedMaxFee) + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getSuggestedFee](AccountInterface.md#getsuggestedfee) + +#### Defined in + +[src/account/default.ts:789](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L789) + +--- + +### buildInvocation + +▸ **buildInvocation**(`call`, `details`): `Promise`<[`Invocation`](../namespaces/types.md#invocation)\> + +#### Parameters + +| Name | Type | +| :-------- | :---------------------------------------------------------------------------- | +| `call` | [`Call`](../namespaces/types.md#call)[] | +| `details` | [`InvocationsSignerDetails`](../namespaces/types.md#invocationssignerdetails) | + +#### Returns + +`Promise`<[`Invocation`](../namespaces/types.md#invocation)\> + +#### Defined in + +[src/account/default.ts:820](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L820) + +--- + +### buildDeclarePayload + +▸ **buildDeclarePayload**(`payload`, `details`): `Promise`<[`DeclareContractTransaction`](../namespaces/types.md#declarecontracttransaction)\> + +#### Parameters + +| Name | Type | +| :-------- | :---------------------------------------------------------------------------- | +| `payload` | [`DeclareContractPayload`](../namespaces/types.md#declarecontractpayload) | +| `details` | [`InvocationsSignerDetails`](../namespaces/types.md#invocationssignerdetails) | + +#### Returns + +`Promise`<[`DeclareContractTransaction`](../namespaces/types.md#declarecontracttransaction)\> + +#### Defined in + +[src/account/default.ts:835](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L835) + +--- + +### buildAccountDeployPayload + +▸ **buildAccountDeployPayload**(`«destructured»`, `details`): `Promise`<[`DeployAccountContractTransaction`](../namespaces/types.md#deployaccountcontracttransaction)\> + +#### Parameters + +| Name | Type | +| :--------------- | :------------------------------------------------------------------------------------ | +| `«destructured»` | [`DeployAccountContractPayload`](../namespaces/types.md#deployaccountcontractpayload) | +| `details` | [`InvocationsSignerDetails`](../namespaces/types.md#invocationssignerdetails) | + +#### Returns + +`Promise`<[`DeployAccountContractTransaction`](../namespaces/types.md#deployaccountcontracttransaction)\> + +#### Defined in + +[src/account/default.ts:867](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L867) + +--- + +### buildUDCContractPayload + +▸ **buildUDCContractPayload**(`payload`): [`Call`](../namespaces/types.md#call)[] + +#### Parameters + +| Name | Type | +| :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `payload` | [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload) \| [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload)[] | + +#### Returns + +[`Call`](../namespaces/types.md#call)[] + +#### Defined in + +[src/account/default.ts:901](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L901) + +--- + +### accountInvocationsFactory + +▸ **accountInvocationsFactory**(`invocations`, `details`): `Promise`<[`AccountInvocations`](../namespaces/types.md#accountinvocations)\> + +#### Parameters + +| Name | Type | +| :------------ | :-------------------------------------------------------------------------------------------- | +| `invocations` | [`Invocations`](../namespaces/types.md#invocations) | +| `details` | [`AccountInvocationsFactoryDetails`](../namespaces/types.md#accountinvocationsfactorydetails) | + +#### Returns + +`Promise`<[`AccountInvocations`](../namespaces/types.md#accountinvocations)\> + +#### Defined in + +[src/account/default.ts:928](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L928) + +--- + +### getStarkName + +▸ **getStarkName**(`address?`, `StarknetIdContract?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :-------------------- | :---------------------------------------------------- | +| `address` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `StarknetIdContract?` | `string` | + +#### Returns + +`Promise`<`string`\> + +#### Overrides + +[Provider](Provider.md).[getStarkName](Provider.md#getstarkname-1) + +#### Defined in + +[src/account/default.ts:1026](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L1026) + +--- + +### fetch + +▸ **fetch**(`method`, `params?`, `id?`): `Promise`<`Response`\> + +#### Parameters + +| Name | Type | Default value | +| :-------- | :------------------- | :------------ | +| `method` | `string` | `undefined` | +| `params?` | `object` | `undefined` | +| `id` | `string` \| `number` | `0` | + +#### Returns + +`Promise`<`Response`\> + +#### Inherited from + +[Provider](Provider.md).[fetch](Provider.md#fetch) + +#### Defined in + +[src/provider/rpc.ts:68](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L68) + +--- + +### getChainId + +▸ **getChainId**(): `Promise`<[`StarknetChainId`](../enums/constants.StarknetChainId.md)\> + +Gets the Starknet chain Id + +#### Returns + +`Promise`<[`StarknetChainId`](../enums/constants.StarknetChainId.md)\> + +the chain Id + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getChainId](AccountInterface.md#getchainid) + +#### Inherited from + +[Provider](Provider.md).[getChainId](Provider.md#getchainid) + +#### Defined in + +[src/provider/rpc.ts:72](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L72) + +--- + +### getSpecVersion + +▸ **getSpecVersion**(): `Promise`<`string`\> + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +[Provider](Provider.md).[getSpecVersion](Provider.md#getspecversion) + +#### Defined in + +[src/provider/rpc.ts:76](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L76) + +--- + +### getNonceForAddress + +▸ **getNonceForAddress**(`contractAddress`, `blockIdentifier?`): `Promise`<`string`\> + +Returns the nonce associated with the given address in the given block + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | contract address | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | - | + +#### Returns + +`Promise`<`string`\> + +the hex nonce + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getNonceForAddress](AccountInterface.md#getnonceforaddress) + +#### Inherited from + +[Provider](Provider.md).[getNonceForAddress](Provider.md#getnonceforaddress) + +#### Defined in + +[src/provider/rpc.ts:80](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L80) + +--- + +### getBlock + +▸ **getBlock**(): `Promise`<[`PendingBlock`](../namespaces/types.md#pendingblock)\> + +Gets the block information + +#### Returns + +`Promise`<[`PendingBlock`](../namespaces/types.md#pendingblock)\> + +the block object + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getBlock](AccountInterface.md#getblock) + +#### Inherited from + +[Provider](Provider.md).[getBlock](Provider.md#getblock) + +#### Defined in + +[src/provider/rpc.ts:87](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L87) + +▸ **getBlock**(`blockIdentifier`): `Promise`<[`PendingBlock`](../namespaces/types.md#pendingblock)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------- | +| `blockIdentifier` | `"pending"` | + +#### Returns + +`Promise`<[`PendingBlock`](../namespaces/types.md#pendingblock)\> + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getBlock](AccountInterface.md#getblock) + +#### Inherited from + +[Provider](Provider.md).[getBlock](Provider.md#getblock) + +#### Defined in + +[src/provider/rpc.ts:88](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L88) + +▸ **getBlock**(`blockIdentifier`): `Promise`<[`Block`](../namespaces/types.md#block)\> + +#### Parameters + +| Name | Type | +| :---------------- | :--------- | +| `blockIdentifier` | `"latest"` | + +#### Returns + +`Promise`<[`Block`](../namespaces/types.md#block)\> + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getBlock](AccountInterface.md#getblock) + +#### Inherited from + +[Provider](Provider.md).[getBlock](Provider.md#getblock) + +#### Defined in + +[src/provider/rpc.ts:89](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L89) + +▸ **getBlock**(`blockIdentifier?`): `Promise`<[`GetBlockResponse`](../namespaces/types.md#getblockresponse)\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`GetBlockResponse`](../namespaces/types.md#getblockresponse)\> + +#### Implementation of + +AccountInterface.getBlock + +#### Inherited from + +[Provider](Provider.md).[getBlock](Provider.md#getblock) + +#### Defined in + +[src/provider/rpc.ts:90](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L90) + +--- + +### getBlockLatestAccepted + +▸ **getBlockLatestAccepted**(): `Promise`<[`BlockHashAndNumber`](../namespaces/types.RPC.RPCSPEC06.md#blockhashandnumber)\> + +Get the most recent accepted block hash and number + +#### Returns + +`Promise`<[`BlockHashAndNumber`](../namespaces/types.RPC.RPCSPEC06.md#blockhashandnumber)\> + +#### Inherited from + +[Provider](Provider.md).[getBlockLatestAccepted](Provider.md#getblocklatestaccepted) + +#### Defined in + +[src/provider/rpc.ts:100](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L100) + +--- + +### getBlockNumber + +▸ **getBlockNumber**(): `Promise`<`number`\> + +Get the most recent accepted block number +redundant use getBlockLatestAccepted(); + +#### Returns + +`Promise`<`number`\> + +Number of the latest block + +#### Inherited from + +[Provider](Provider.md).[getBlockNumber](Provider.md#getblocknumber) + +#### Defined in + +[src/provider/rpc.ts:109](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L109) + +--- + +### getBlockWithTxHashes + +▸ **getBlockWithTxHashes**(`blockIdentifier?`): `Promise`<[`BlockWithTxHashes`](../namespaces/types.RPC.RPCSPEC06.md#blockwithtxhashes)\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`BlockWithTxHashes`](../namespaces/types.RPC.RPCSPEC06.md#blockwithtxhashes)\> + +#### Inherited from + +[Provider](Provider.md).[getBlockWithTxHashes](Provider.md#getblockwithtxhashes) + +#### Defined in + +[src/provider/rpc.ts:113](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L113) + +--- + +### getBlockWithTxs + +▸ **getBlockWithTxs**(`blockIdentifier?`): `Promise`<[`BlockWithTxs`](../namespaces/types.RPC.RPCSPEC06.md#blockwithtxs)\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`BlockWithTxs`](../namespaces/types.RPC.RPCSPEC06.md#blockwithtxs)\> + +#### Inherited from + +[Provider](Provider.md).[getBlockWithTxs](Provider.md#getblockwithtxs) + +#### Defined in + +[src/provider/rpc.ts:117](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L117) + +--- + +### waitForBlock + +▸ **waitForBlock**(`blockIdentifier?`, `retryInterval?`): `Promise`<`void`\> + +Pause the execution of the script until a specified block is created. + +#### Parameters + +| Name | Type | Default value | Description | +| :---------------- | :---------------------------------------------------------- | :------------ | :------------------------------------------------------------------------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | `'pending'` | bloc number (BigNumberish) or 'pending' or 'latest'. Use of 'latest" or of a block already created will generate no pause. | +| `retryInterval?` | `number` | `5000` | number of milliseconds between 2 requests to the node | + +#### Returns + +`Promise`<`void`\> + +**`Example`** + +```typescript +await myProvider.waitForBlock(); +// wait the creation of the pending block +``` + +#### Inherited from + +[Provider](Provider.md).[waitForBlock](Provider.md#waitforblock) + +#### Defined in + +[src/provider/rpc.ts:132](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L132) + +--- + +### getL1GasPrice + +▸ **getL1GasPrice**(`blockIdentifier?`): `Promise`<`string`\> + +Gets the price of l1 gas in the block + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<`string`\> + +gas price of the block + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getL1GasPrice](AccountInterface.md#getl1gasprice) + +#### Inherited from + +[Provider](Provider.md).[getL1GasPrice](Provider.md#getl1gasprice) + +#### Defined in + +[src/provider/rpc.ts:162](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L162) + +--- + +### getL1MessageHash + +▸ **getL1MessageHash**(`l2TxHash`): `Promise`<`string`\> + +Get L1 message hash from L2 transaction hash + +#### Parameters + +| Name | Type | Description | +| :--------- | :---------------------------------------------------- | :------------------ | +| `l2TxHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | L2 transaction hash | + +#### Returns + +`Promise`<`string`\> + +Hex string of L1 message hash + +**`Example`** + +In Sepolia Testnet : + +```typescript +const result = provider.getL1MessageHash( + '0x28dfc05eb4f261b37ddad451ff22f1d08d4e3c24dc646af0ec69fa20e096819' +); +// result = '0x55b3f8b6e607fffd9b4d843dfe8f9b5c05822cd94fcad8797deb01d77805532a' +``` + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getL1MessageHash](AccountInterface.md#getl1messagehash) + +#### Inherited from + +[Provider](Provider.md).[getL1MessageHash](Provider.md#getl1messagehash) + +#### Defined in + +[src/provider/rpc.ts:168](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L168) + +--- + +### getBlockWithReceipts + +▸ **getBlockWithReceipts**(`blockIdentifier?`): `Promise`<[`BlockWithTxReceipts`](../namespaces/types.RPC.RPCSPEC07.API.md#blockwithtxreceipts)\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`BlockWithTxReceipts`](../namespaces/types.RPC.RPCSPEC07.API.md#blockwithtxreceipts)\> + +#### Inherited from + +[Provider](Provider.md).[getBlockWithReceipts](Provider.md#getblockwithreceipts) + +#### Defined in + +[src/provider/rpc.ts:184](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L184) + +--- + +### getBlockStateUpdate + +▸ **getBlockStateUpdate**(): `Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +#### Returns + +`Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +#### Inherited from + +[Provider](Provider.md).[getBlockStateUpdate](Provider.md#getblockstateupdate) + +#### Defined in + +[src/provider/rpc.ts:193](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L193) + +▸ **getBlockStateUpdate**(`blockIdentifier`): `Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------- | +| `blockIdentifier` | `"pending"` | + +#### Returns + +`Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +#### Inherited from + +[Provider](Provider.md).[getBlockStateUpdate](Provider.md#getblockstateupdate) + +#### Defined in + +[src/provider/rpc.ts:194](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L194) + +▸ **getBlockStateUpdate**(`blockIdentifier`): `Promise`<\{ `block_hash`: `string` ; `old_root`: `string` ; `new_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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +#### Parameters + +| Name | Type | +| :---------------- | :--------- | +| `blockIdentifier` | `"latest"` | + +#### Returns + +`Promise`<\{ `block_hash`: `string` ; `old_root`: `string` ; `new_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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +#### Inherited from + +[Provider](Provider.md).[getBlockStateUpdate](Provider.md#getblockstateupdate) + +#### Defined in + +[src/provider/rpc.ts:195](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L195) + +▸ **getBlockStateUpdate**(`blockIdentifier?`): `Promise`<[`StateUpdateResponse`](../namespaces/types.md#stateupdateresponse)\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`StateUpdateResponse`](../namespaces/types.md#stateupdateresponse)\> + +#### Inherited from + +[Provider](Provider.md).[getBlockStateUpdate](Provider.md#getblockstateupdate) + +#### Defined in + +[src/provider/rpc.ts:196](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L196) + +--- + +### getBlockTransactionsTraces + +▸ **getBlockTransactionsTraces**(`blockIdentifier?`): `Promise`<[`BlockTransactionsTraces`](../namespaces/types.RPC.RPCSPEC06.md#blocktransactionstraces)\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`BlockTransactionsTraces`](../namespaces/types.RPC.RPCSPEC06.md#blocktransactionstraces)\> + +#### Inherited from + +[Provider](Provider.md).[getBlockTransactionsTraces](Provider.md#getblocktransactionstraces) + +#### Defined in + +[src/provider/rpc.ts:201](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L201) + +--- + +### getBlockTransactionCount + +▸ **getBlockTransactionCount**(`blockIdentifier?`): `Promise`<`number`\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`number`\> + +#### Inherited from + +[Provider](Provider.md).[getBlockTransactionCount](Provider.md#getblocktransactioncount) + +#### Defined in + +[src/provider/rpc.ts:205](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L205) + +--- + +### getPendingTransactions + +▸ **getPendingTransactions**(): `Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)[]\> + +Return transactions from pending block + +#### Returns + +`Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)[]\> + +**`Deprecated`** + +Instead use getBlock(BlockTag.PENDING); (will be removed in next minor version) +Utility method, same result can be achieved using getBlockWithTxHashes(BlockTag.pending); + +#### Inherited from + +[Provider](Provider.md).[getPendingTransactions](Provider.md#getpendingtransactions) + +#### Defined in + +[src/provider/rpc.ts:214](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L214) + +--- + +### getTransaction + +▸ **getTransaction**(`txHash`): `Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +Gets the transaction information from a tx id. + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +the transaction object { transaction_id, status, transaction, block_number?, block_number?, transaction_index?, transaction_failure_reason? } + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getTransaction](AccountInterface.md#gettransaction) + +#### Inherited from + +[Provider](Provider.md).[getTransaction](Provider.md#gettransaction) + +#### Defined in + +[src/provider/rpc.ts:221](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L221) + +--- + +### getTransactionByHash + +▸ **getTransactionByHash**(`txHash`): `Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +#### Inherited from + +[Provider](Provider.md).[getTransactionByHash](Provider.md#gettransactionbyhash) + +#### Defined in + +[src/provider/rpc.ts:225](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L225) + +--- + +### getTransactionByBlockIdAndIndex + +▸ **getTransactionByBlockIdAndIndex**(`blockIdentifier`, `index`): `Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | +| `index` | `number` | + +#### Returns + +`Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +#### Inherited from + +[Provider](Provider.md).[getTransactionByBlockIdAndIndex](Provider.md#gettransactionbyblockidandindex) + +#### Defined in + +[src/provider/rpc.ts:229](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L229) + +--- + +### getTransactionReceipt + +▸ **getTransactionReceipt**(`txHash`): `Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +Gets the transaction receipt from a tx hash. + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +the transaction receipt object + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getTransactionReceipt](AccountInterface.md#gettransactionreceipt) + +#### Inherited from + +[Provider](Provider.md).[getTransactionReceipt](Provider.md#gettransactionreceipt) + +#### Defined in + +[src/provider/rpc.ts:233](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L233) + +--- + +### getTransactionTrace + +▸ **getTransactionTrace**(`txHash`): `Promise`<[`TRANSACTION_TRACE`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#transaction_trace)\> + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TRANSACTION_TRACE`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#transaction_trace)\> + +#### Inherited from + +[Provider](Provider.md).[getTransactionTrace](Provider.md#gettransactiontrace) + +#### Defined in + +[src/provider/rpc.ts:240](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L240) + +--- + +### getTransactionStatus + +▸ **getTransactionStatus**(`transactionHash`): `Promise`<[`TransactionStatus`](../namespaces/types.RPC.RPCSPEC06.md#transactionstatus)\> + +Get the status of a transaction + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------- | +| `transactionHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TransactionStatus`](../namespaces/types.RPC.RPCSPEC06.md#transactionstatus)\> + +#### Inherited from + +[Provider](Provider.md).[getTransactionStatus](Provider.md#gettransactionstatus) + +#### Defined in + +[src/provider/rpc.ts:247](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L247) + +--- + +### getSimulateTransaction + +▸ **getSimulateTransaction**(`invocations`, `options?`): `Promise`<[`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse)\> + +#### Parameters + +| Name | Type | Description | +| :------------ | :-------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `invocations` | [`AccountInvocations`](../namespaces/types.md#accountinvocations) | AccountInvocations | +| `options?` | [`getSimulateTransactionOptions`](../namespaces/types.md#getsimulatetransactionoptions) | blockIdentifier and flags to skip validation and fee charge
- blockIdentifier
- skipValidate (default false)
- skipFeeCharge (default true)
| + +#### Returns + +`Promise`<[`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse)\> + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getSimulateTransaction](AccountInterface.md#getsimulatetransaction) + +#### Inherited from + +[Provider](Provider.md).[getSimulateTransaction](Provider.md#getsimulatetransaction) + +#### Defined in + +[src/provider/rpc.ts:258](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L258) + +--- + +### waitForTransaction + +▸ **waitForTransaction**(`txHash`, `options?`): `Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +Wait for the transaction to be accepted + +#### Parameters + +| Name | Type | Description | +| :--------- | :------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | transaction hash | +| `options?` | [`waitForTransactionOptions`](../namespaces/types.md#waitfortransactionoptions) | waitForTransactionOptions - (optional) retryInterval: number \| undefined; - (optional) successStates: TransactionStatus[] \| undefined; | + +#### Returns + +`Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +GetTransactionReceiptResponse + +#### Implementation of + +[AccountInterface](AccountInterface.md).[waitForTransaction](AccountInterface.md#waitfortransaction) + +#### Inherited from + +[Provider](Provider.md).[waitForTransaction](Provider.md#waitfortransaction) + +#### Defined in + +[src/provider/rpc.ts:268](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L268) + +--- + +### getStorageAt + +▸ **getStorageAt**(`contractAddress`, `key`, `blockIdentifier?`): `Promise`<`string`\> + +Get the value of the storage (contract's variable) at the given address and key + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------------------------------------------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | | +| `key` | [`BigNumberish`](../namespaces/types.md#bignumberish) | from getStorageVarAddress('') (WIP) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<`string`\> + +the value of the storage variable + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getStorageAt](AccountInterface.md#getstorageat) + +#### Inherited from + +[Provider](Provider.md).[getStorageAt](Provider.md#getstorageat) + +#### Defined in + +[src/provider/rpc.ts:280](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L280) + +--- + +### getClassHashAt + +▸ **getClassHashAt**(`contractAddress`, `blockIdentifier?`): `Promise`<`string`\> + +Returns the contract class hash in the given block for the contract deployed at the given address + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | contract address | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<`string`\> + +Class hash + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getClassHashAt](AccountInterface.md#getclasshashat) + +#### Inherited from + +[Provider](Provider.md).[getClassHashAt](Provider.md#getclasshashat) + +#### Defined in + +[src/provider/rpc.ts:288](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L288) + +--- + +### getClassByHash + +▸ **getClassByHash**(`classHash`): `Promise`<[`LegacyContractClass`](../namespaces/types.md#legacycontractclass) \| `Omit`<[`CompiledSierra`](../namespaces/types.md#compiledsierra), `"sierra_program_debug_info"`\>\> + +Returns the contract class deployed under the given class hash. + +#### Parameters + +| Name | Type | Description | +| :---------- | :---------------------------------------------------- | :---------- | +| `classHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | class hash | + +#### Returns + +`Promise`<[`LegacyContractClass`](../namespaces/types.md#legacycontractclass) \| `Omit`<[`CompiledSierra`](../namespaces/types.md#compiledsierra), `"sierra_program_debug_info"`\>\> + +Contract class of compiled contract + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getClassByHash](AccountInterface.md#getclassbyhash) + +#### Inherited from + +[Provider](Provider.md).[getClassByHash](Provider.md#getclassbyhash) + +#### Defined in + +[src/provider/rpc.ts:292](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L292) + +--- + +### getClass + +▸ **getClass**(`classHash`, `blockIdentifier?`): `Promise`<[`LegacyContractClass`](../namespaces/types.md#legacycontractclass) \| `Omit`<[`CompiledSierra`](../namespaces/types.md#compiledsierra), `"sierra_program_debug_info"`\>\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `classHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`LegacyContractClass`](../namespaces/types.md#legacycontractclass) \| `Omit`<[`CompiledSierra`](../namespaces/types.md#compiledsierra), `"sierra_program_debug_info"`\>\> + +#### Inherited from + +[Provider](Provider.md).[getClass](Provider.md#getclass) + +#### Defined in + +[src/provider/rpc.ts:296](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L296) + +--- + +### getClassAt + +▸ **getClassAt**(`contractAddress`, `blockIdentifier?`): `Promise`<[`LegacyContractClass`](../namespaces/types.md#legacycontractclass) \| `Omit`<[`CompiledSierra`](../namespaces/types.md#compiledsierra), `"sierra_program_debug_info"`\>\> + +Gets the contract class of the deployed contract. + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | contract address | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<[`LegacyContractClass`](../namespaces/types.md#legacycontractclass) \| `Omit`<[`CompiledSierra`](../namespaces/types.md#compiledsierra), `"sierra_program_debug_info"`\>\> + +Contract class of compiled contract + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getClassAt](AccountInterface.md#getclassat) + +#### Inherited from + +[Provider](Provider.md).[getClassAt](Provider.md#getclassat) + +#### Defined in + +[src/provider/rpc.ts:302](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L302) + +--- + +### getContractVersion + +▸ **getContractVersion**(`contractAddress`, `classHash?`, `options?`): `Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +Gets the contract version from the provided address + +#### Parameters + +| Name | Type | Description | +| :---------------- | :------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | string | +| `classHash?` | `undefined` | undefined | +| `options?` | [`getContractVersionOptions`](../namespaces/types.md#getcontractversionoptions) | getContractVersionOptions - (optional) compiler - (default true) extract compiler version using type tactic from abi - (optional) blockIdentifier - block identifier | + +#### Returns + +`Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getContractVersion](AccountInterface.md#getcontractversion) + +#### Inherited from + +[Provider](Provider.md).[getContractVersion](Provider.md#getcontractversion) + +#### Defined in + +[src/provider/rpc.ts:308](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L308) + +▸ **getContractVersion**(`contractAddress`, `classHash`, `options?`): `Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +Gets the contract version from the provided address + +#### Parameters + +| Name | Type | Description | +| :---------------- | :------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `contractAddress` | `undefined` | undefined | +| `classHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | | +| `options?` | [`getContractVersionOptions`](../namespaces/types.md#getcontractversionoptions) | getContractVersionOptions - (optional) compiler - (default true) extract compiler version using type tactic from abi - (optional) blockIdentifier - block identifier | + +#### Returns + +`Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getContractVersion](AccountInterface.md#getcontractversion) + +#### Inherited from + +[Provider](Provider.md).[getContractVersion](Provider.md#getcontractversion) + +#### Defined in + +[src/provider/rpc.ts:313](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L313) + +--- + +### getEstimateFee + +▸ **getEstimateFee**(`invocation`, `invocationDetails`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +#### Parameters + +| Name | Type | +| :------------------ | :---------------------------------------------------------------------------------- | +| `invocation` | [`Invocation`](../namespaces/types.md#invocation) | +| `invocationDetails` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | +| `skipValidate?` | `boolean` | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +**`Deprecated`** + +use get*type*EstimateFee (will be refactored based on type after sequencer deprecation) + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getEstimateFee](AccountInterface.md#getestimatefee) + +#### Inherited from + +[Provider](Provider.md).[getEstimateFee](Provider.md#getestimatefee) + +#### Defined in + +[src/provider/rpc.ts:349](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L349) + +--- + +### getInvokeEstimateFee + +▸ **getInvokeEstimateFee**(`invocation`, `invocationDetails`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimates the fee for a given INVOKE transaction + +#### Parameters + +| Name | Type | Description | +| :------------------ | :---------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `invocation` | [`Invocation`](../namespaces/types.md#invocation) | the invocation object containing: - contractAddress - the address of the contract - entrypoint - the entrypoint of the contract - calldata - (defaults to []) the calldata - signature - (defaults to []) the signature | +| `invocationDetails` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | optional details containing: - nonce - optional nonce - version - optional version | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | (optional) block identifier | +| `skipValidate?` | `boolean` | (optional) skip cairo **validate** method | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +the estimated fee + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getInvokeEstimateFee](AccountInterface.md#getinvokeestimatefee) + +#### Inherited from + +[Provider](Provider.md).[getInvokeEstimateFee](Provider.md#getinvokeestimatefee) + +#### Defined in + +[src/provider/rpc.ts:358](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L358) + +--- + +### getDeclareEstimateFee + +▸ **getDeclareEstimateFee**(`invocation`, `details`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimates the fee for a given DECLARE transaction + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------ | +| `invocation` | [`DeclareContractTransaction`](../namespaces/types.md#declarecontracttransaction) | transaction payload to be declared containing: - compiled contract code - sender address - signature - (defaults to []) the signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | optional details containing: - nonce - version - optional version - optional maxFee | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | (optional) block identifier | +| `skipValidate?` | `boolean` | (optional) skip cairo **validate** method | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +the estimated fee + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getDeclareEstimateFee](AccountInterface.md#getdeclareestimatefee) + +#### Inherited from + +[Provider](Provider.md).[getDeclareEstimateFee](Provider.md#getdeclareestimatefee) + +#### Defined in + +[src/provider/rpc.ts:378](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L378) + +--- + +### getDeployAccountEstimateFee + +▸ **getDeployAccountEstimateFee**(`invocation`, `details`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimates the fee for a given DEPLOY_ACCOUNT transaction + +#### Parameters + +| Name | Type | Description | +| :----------------- | :-------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | +| `invocation` | [`DeployAccountContractTransaction`](../namespaces/types.md#deployaccountcontracttransaction) | transaction payload to be deployed containing: - classHash - constructorCalldata - addressSalt - signature - (defaults to []) the signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | optional details containing: - nonce - version - optional version - optional maxFee | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | (optional) block identifier | +| `skipValidate?` | `boolean` | (optional) skip cairo **validate** method | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +the estimated fee + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getDeployAccountEstimateFee](AccountInterface.md#getdeployaccountestimatefee) + +#### Inherited from + +[Provider](Provider.md).[getDeployAccountEstimateFee](Provider.md#getdeployaccountestimatefee) + +#### Defined in + +[src/provider/rpc.ts:398](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L398) + +--- + +### getEstimateFeeBulk + +▸ **getEstimateFeeBulk**(`invocations`, `options`): `Promise`<[`EstimateFeeResponseBulk`](../namespaces/types.md#estimatefeeresponsebulk)\> + +Estimates the fee for a list of INVOKE transaction + +#### Parameters + +| Name | Type | Description | +| :------------ | :------------------------------------------------------------------------------ | :----------------------------------------------------------------------- | +| `invocations` | [`AccountInvocations`](../namespaces/types.md#accountinvocations) | AccountInvocations - Complete invocations array with account details | +| `options` | [`getEstimateFeeBulkOptions`](../namespaces/types.md#getestimatefeebulkoptions) | getEstimateFeeBulkOptions - (optional) blockIdentifier - BlockIdentifier | + +#### Returns + +`Promise`<[`EstimateFeeResponseBulk`](../namespaces/types.md#estimatefeeresponsebulk)\> + +the estimated fee + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getEstimateFeeBulk](AccountInterface.md#getestimatefeebulk) + +#### Inherited from + +[Provider](Provider.md).[getEstimateFeeBulk](Provider.md#getestimatefeebulk) + +#### Defined in + +[src/provider/rpc.ts:418](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L418) + +--- + +### invokeFunction + +▸ **invokeFunction**(`functionInvocation`, `details`): `Promise`<[`InvokedTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#invokedtransaction)\> + +Invokes a function on starknet + +#### Parameters + +| Name | Type | Description | +| :------------------- | :---------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `functionInvocation` | [`Invocation`](../namespaces/types.md#invocation) | the invocation object containing: - contractAddress - the address of the contract - entrypoint - the entrypoint of the contract - calldata - (defaults to []) the calldata - signature - (defaults to []) the signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | optional details containing: - nonce - optional nonce - version - optional version - maxFee - optional maxFee | + +#### Returns + +`Promise`<[`InvokedTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#invokedtransaction)\> + +response from addTransaction + +**`Deprecated`** + +This method won't be supported as soon as fees are mandatory. Should not be used outside of Account class + +#### Implementation of + +[AccountInterface](AccountInterface.md).[invokeFunction](AccountInterface.md#invokefunction) + +#### Inherited from + +[Provider](Provider.md).[invokeFunction](Provider.md#invokefunction) + +#### Defined in + +[src/provider/rpc.ts:427](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L427) + +--- + +### declareContract + +▸ **declareContract**(`transaction`, `details`): `Promise`<[`DeclaredTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#declaredtransaction)\> + +Declares a given compiled contract (json) to starknet + +#### Parameters + +| Name | Type | Description | +| :------------ | :---------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------- | +| `transaction` | [`DeclareContractTransaction`](../namespaces/types.md#declarecontracttransaction) | transaction payload to be deployed containing: - compiled contract code - sender address - signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | Invocation Details containing: - nonce - optional version - optional maxFee | + +#### Returns + +`Promise`<[`DeclaredTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#declaredtransaction)\> + +a confirmation of sending a transaction on the starknet contract + +#### Implementation of + +[AccountInterface](AccountInterface.md).[declareContract](AccountInterface.md#declarecontract) + +#### Inherited from + +[Provider](Provider.md).[declareContract](Provider.md#declarecontract) + +#### Defined in + +[src/provider/rpc.ts:434](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L434) + +--- + +### deployAccountContract + +▸ **deployAccountContract**(`transaction`, `details`): `Promise`<[`DeployedAccountTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#deployedaccounttransaction)\> + +Deploys a given compiled Account contract (json) to starknet + +#### Parameters + +| Name | Type | Description | +| :------------ | :-------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------ | +| `transaction` | [`DeployAccountContractTransaction`](../namespaces/types.md#deployaccountcontracttransaction) | payload to be deployed containing: - compiled contract code - constructor calldata - address salt | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | - | + +#### Returns + +`Promise`<[`DeployedAccountTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#deployedaccounttransaction)\> + +a confirmation of sending a transaction on the starknet contract + +#### Implementation of + +[AccountInterface](AccountInterface.md).[deployAccountContract](AccountInterface.md#deployaccountcontract) + +#### Inherited from + +[Provider](Provider.md).[deployAccountContract](Provider.md#deployaccountcontract) + +#### Defined in + +[src/provider/rpc.ts:441](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L441) + +--- + +### callContract + +▸ **callContract**(`call`, `blockIdentifier?`): `Promise`<`string`[]\> + +Calls a function on the Starknet contract. + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :----------------------- | +| `call` | [`Call`](../namespaces/types.md#call) | transaction to be called | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<`string`[]\> + +the result of the function on the smart contract. + +#### Implementation of + +[AccountInterface](AccountInterface.md).[callContract](AccountInterface.md#callcontract) + +#### Inherited from + +[Provider](Provider.md).[callContract](Provider.md#callcontract) + +#### Defined in + +[src/provider/rpc.ts:451](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L451) + +--- + +### estimateMessageFee + +▸ **estimateMessageFee**(`message`, `blockIdentifier?`): `Promise`<[`FEE_ESTIMATE`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#fee_estimate)\> + +NEW: Estimate the fee for a message from L1 + +#### Parameters + +| Name | Type | Description | +| :----------------- | :------------------------------------------------------------------------- | :-------------- | +| `message` | [`MSG_FROM_L1`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#msg_from_l1) | Message From L1 | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | - | + +#### Returns + +`Promise`<[`FEE_ESTIMATE`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#fee_estimate)\> + +#### Inherited from + +[Provider](Provider.md).[estimateMessageFee](Provider.md#estimatemessagefee) + +#### Defined in + +[src/provider/rpc.ts:459](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L459) + +--- + +### getSyncingStats + +▸ **getSyncingStats**(): `Promise`<[`Syncing`](../namespaces/types.RPC.RPCSPEC06.md#syncing)\> + +Returns an object about the sync status, or false if the node is not synching + +#### Returns + +`Promise`<[`Syncing`](../namespaces/types.RPC.RPCSPEC06.md#syncing)\> + +Object with the stats data + +#### Inherited from + +[Provider](Provider.md).[getSyncingStats](Provider.md#getsyncingstats) + +#### Defined in + +[src/provider/rpc.ts:467](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L467) + +--- + +### getEvents + +▸ **getEvents**(`eventFilter`): `Promise`<[`EVENTS_CHUNK`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#events_chunk)\> + +Returns all events matching the given filter + +#### Parameters + +| Name | Type | +| :------------ | :-------------------------------------------------------------------- | +| `eventFilter` | [`EventFilter`](../namespaces/types.RPC.RPCSPEC07.API.md#eventfilter) | + +#### Returns + +`Promise`<[`EVENTS_CHUNK`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#events_chunk)\> + +events and the pagination of the events + +#### Inherited from + +[Provider](Provider.md).[getEvents](Provider.md#getevents) + +#### Defined in + +[src/provider/rpc.ts:475](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L475) + +--- + +### verifyMessageInStarknet + +▸ **verifyMessageInStarknet**(`message`, `signature`, `accountAddress`, `signatureVerificationFunctionName?`, `signatureVerificationResponse?`): `Promise`<`boolean`\> + +Verify in Starknet a signature of a TypedData object or of a given hash. + +#### Parameters + +| Name | Type | Description | +| :------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------ | +| `message` | [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) \| [`BigNumberish`](../namespaces/types.md#bignumberish) | TypedData object to be verified, or message hash to be verified. | +| `signature` | [`Signature`](../namespaces/types.md#signature) | signature of the message. | +| `accountAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | address of the account that has signed the message. | +| `signatureVerificationFunctionName?` | `string` | if account contract with non standard account verification function name. | +| `signatureVerificationResponse?` | `Object` | if account contract with non standard response of verification function. | +| `signatureVerificationResponse.okResponse` | `string`[] | - | +| `signatureVerificationResponse.nokResponse` | `string`[] | - | +| `signatureVerificationResponse.error` | `string`[] | - | + +#### Returns + +`Promise`<`boolean`\> + +```typescript +const myTypedMessage: TypedMessage = .... ; +const messageHash = typedData.getMessageHash(myTypedMessage,accountAddress); +const sign: WeierstrassSignatureType = ec.starkCurve.sign(messageHash, privateKey); +const accountAddress = "0x43b7240d227aa2fb8434350b3321c40ac1b88c7067982549e7609870621b535"; +const result1 = myRpcProvider.verifyMessageInStarknet(myTypedMessage, sign, accountAddress); +const result2 = myRpcProvider.verifyMessageInStarknet(messageHash, sign, accountAddress); +// result1 = result2 = true +``` + +#### Inherited from + +[Provider](Provider.md).[verifyMessageInStarknet](Provider.md#verifymessageinstarknet) + +#### Defined in + +[src/provider/rpc.ts:497](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L497) + +--- + +### isClassDeclared + +▸ **isClassDeclared**(`contractClassIdentifier`, `blockIdentifier?`): `Promise`<`boolean`\> + +Test if class is already declared from ContractClassIdentifier +Helper method using getClass + +#### Parameters + +| Name | Type | +| :------------------------ | :-------------------------------------------------------------------------- | +| `contractClassIdentifier` | [`ContractClassIdentifier`](../namespaces/types.md#contractclassidentifier) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`boolean`\> + +#### Inherited from + +[Provider](Provider.md).[isClassDeclared](Provider.md#isclassdeclared) + +#### Defined in + +[src/provider/rpc.ts:583](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L583) + +--- + +### prepareInvocations + +▸ **prepareInvocations**(`invocations`): `Promise`<[`Invocations`](../namespaces/types.md#invocations)\> + +Build bulk invocations with auto-detect declared class + +1. Test if class is declared if not declare it preventing already declared class error and not declared class errors +2. Order declarations first + +#### Parameters + +| Name | Type | +| :------------ | :-------------------------------------------------- | +| `invocations` | [`Invocations`](../namespaces/types.md#invocations) | + +#### Returns + +`Promise`<[`Invocations`](../namespaces/types.md#invocations)\> + +#### Inherited from + +[Provider](Provider.md).[prepareInvocations](Provider.md#prepareinvocations) + +#### Defined in + +[src/provider/rpc.ts:614](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L614) + +--- + +### getAddressFromStarkName + +▸ **getAddressFromStarkName**(`name`, `StarknetIdContract?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :-------------------- | :------- | +| `name` | `string` | +| `StarknetIdContract?` | `string` | + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +[Provider](Provider.md).[getAddressFromStarkName](Provider.md#getaddressfromstarkname-1) + +#### Defined in + +[src/provider/extensions/starknetId.ts:31](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/extensions/starknetId.ts#L31) + +--- + +### getStarkProfile + +▸ **getStarkProfile**(`address`, `StarknetIdContract?`, `StarknetIdIdentityContract?`, `StarknetIdVerifierContract?`, `StarknetIdPfpContract?`, `StarknetIdPopContract?`, `StarknetIdMulticallContract?`): `Promise`<[`StarkProfile`](../namespaces/types.md#starkprofile)\> + +#### Parameters + +| Name | Type | +| :----------------------------- | :---------------------------------------------------- | +| `address` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `StarknetIdContract?` | `string` | +| `StarknetIdIdentityContract?` | `string` | +| `StarknetIdVerifierContract?` | `string` | +| `StarknetIdPfpContract?` | `string` | +| `StarknetIdPopContract?` | `string` | +| `StarknetIdMulticallContract?` | `string` | + +#### Returns + +`Promise`<[`StarkProfile`](../namespaces/types.md#starkprofile)\> + +#### Inherited from + +[Provider](Provider.md).[getStarkProfile](Provider.md#getstarkprofile-1) + +#### Defined in + +[src/provider/extensions/starknetId.ts:40](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/extensions/starknetId.ts#L40) diff --git a/www/versioned_docs/version-6.24.1/API/classes/AccountInterface.md b/www/versioned_docs/version-6.24.1/API/classes/AccountInterface.md new file mode 100644 index 000000000..940599dd7 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/AccountInterface.md @@ -0,0 +1,1302 @@ +--- +id: 'AccountInterface' +title: 'Class: AccountInterface' +sidebar_label: 'AccountInterface' +sidebar_position: 0 +custom_edit_url: null +--- + +## Hierarchy + +- [`ProviderInterface`](ProviderInterface.md) + + ↳ **`AccountInterface`** + +## Implemented by + +- [`Account`](Account.md) +- [`WalletAccount`](WalletAccount.md) + +## Constructors + +### constructor + +• **new AccountInterface**(): [`AccountInterface`](AccountInterface.md) + +#### Returns + +[`AccountInterface`](AccountInterface.md) + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[constructor](ProviderInterface.md#constructor) + +## Properties + +### address + +• `Abstract` **address**: `string` + +#### Defined in + +[src/account/interface.ts:34](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L34) + +--- + +### signer + +• `Abstract` **signer**: [`SignerInterface`](SignerInterface.md) + +#### Defined in + +[src/account/interface.ts:36](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L36) + +--- + +### cairoVersion + +• `Abstract` **cairoVersion**: [`CairoVersion`](../namespaces/types.md#cairoversion) + +#### Defined in + +[src/account/interface.ts:38](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L38) + +--- + +### channel + +• `Abstract` **channel**: [`RpcChannel`](RPC06.RpcChannel.md) \| [`RpcChannel`](RPC07.RpcChannel.md) + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[channel](ProviderInterface.md#channel) + +#### Defined in + +[src/provider/interface.ts:37](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L37) + +## Methods + +### estimateInvokeFee + +▸ **estimateInvokeFee**(`calls`, `estimateFeeDetails?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimate Fee for executing an INVOKE transaction on starknet + +#### Parameters + +| Name | Type | Description | +| :-------------------- | :---------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `calls` | [`AllowArray`](../namespaces/types.md#allowarray)<[`Call`](../namespaces/types.md#call)\> | the invocation object containing: - contractAddress - the address of the contract - entrypoint - the entrypoint of the contract - calldata? - (defaults to []) the calldata | +| `estimateFeeDetails?` | [`EstimateFeeDetails`](../interfaces/types.EstimateFeeDetails.md) | blockIdentifier? - nonce? = 0 - skipValidate? - default true - tip? - prioritize order of transactions in the mempool. - accountDeploymentData? - deploy an account contract (substitution for deploy account transaction) - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337) - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +response from estimate_fee + +#### Defined in + +[src/account/interface.ts:61](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L61) + +--- + +### estimateDeclareFee + +▸ **estimateDeclareFee**(`contractPayload`, `estimateFeeDetails?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimate Fee for executing a DECLARE transaction on starknet + +#### Parameters + +| Name | Type | Description | +| :-------------------- | :------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `contractPayload` | [`DeclareContractPayload`](../namespaces/types.md#declarecontractpayload) | the payload object containing: - contract - the compiled contract to be declared - casm? - compiled cairo assembly. Cairo1(casm or compiledClassHash are required) - classHash? - the class hash of the compiled contract. Precalculate for faster execution. - compiledClassHash?: class hash of the cairo assembly. Cairo1(casm or compiledClassHash are required) | +| `estimateFeeDetails?` | [`EstimateFeeDetails`](../interfaces/types.EstimateFeeDetails.md) | blockIdentifier? - nonce? = 0 - skipValidate? - default true - tip? - prioritize order of transactions in the mempool. - accountDeploymentData? - deploy an account contract (substitution for deploy account transaction) - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337) - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +response from estimate_fee + +#### Defined in + +[src/account/interface.ts:88](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L88) + +--- + +### estimateAccountDeployFee + +▸ **estimateAccountDeployFee**(`contractPayload`, `estimateFeeDetails?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimate Fee for executing a DEPLOY_ACCOUNT transaction on starknet + +#### Parameters + +| Name | Type | Description | +| :-------------------- | :------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `contractPayload` | [`DeployAccountContractPayload`](../namespaces/types.md#deployaccountcontractpayload) | classHash - the class hash of the compiled contract. - constructorCalldata? - constructor data; - contractAddress? - future account contract address. Precalculate for faster execution. - addressSalt? - salt used for calculation of the contractAddress. Required if contractAddress is provided. | +| `estimateFeeDetails?` | [`EstimateFeeDetails`](../interfaces/types.EstimateFeeDetails.md) | blockIdentifier? - nonce? = 0 - skipValidate? - default true - tip? - prioritize order of transactions in the mempool. - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337) - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +response from estimate_fee + +#### Defined in + +[src/account/interface.ts:114](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L114) + +--- + +### estimateDeployFee + +▸ **estimateDeployFee**(`deployContractPayload`, `estimateFeeDetails?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimate Fee for executing a UDC DEPLOY transaction on starknet +This is different from the normal DEPLOY transaction as it goes through the Universal Deployer Contract (UDC) + +#### Parameters + +| Name | Type | Description | +| :---------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `deployContractPayload` | [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload) \| [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload)[] | array or singular - classHash: computed class hash of compiled contract - salt: address salt - unique: bool if true ensure unique salt - constructorCalldata: constructor calldata | +| `estimateFeeDetails?` | [`EstimateFeeDetails`](../interfaces/types.EstimateFeeDetails.md) | blockIdentifier? - nonce? - skipValidate? - default true - tip? - prioritize order of transactions in the mempool. - accountDeploymentData? - deploy an account contract (substitution for deploy account transaction) - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337) - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +#### Defined in + +[src/account/interface.ts:140](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L140) + +--- + +### estimateFeeBulk + +▸ **estimateFeeBulk**(`invocations`, `details?`): `Promise`<[`EstimateFeeResponseBulk`](../namespaces/types.md#estimatefeeresponsebulk)\> + +Estimate Fee for executing a list of transactions on starknet +Contract must be deployed for fee estimation to be possible + +#### Parameters + +| Name | Type | Description | +| :------------ | :---------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `invocations` | [`Invocations`](../namespaces/types.md#invocations) | array of transaction object containing : - type - the type of transaction : 'DECLARE' \| (multi)'DEPLOY' \| (multi)'INVOKE_FUNCTION' \| 'DEPLOY_ACCOUNT' - payload - the payload of the transaction | +| `details?` | [`EstimateFeeDetails`](../interfaces/types.EstimateFeeDetails.md) | blockIdentifier? - nonce? - skipValidate? - default true - tip? - prioritize order of transactions in the mempool. - accountDeploymentData? - deploy an account contract (substitution for deploy account transaction) - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337) - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei | + +#### Returns + +`Promise`<[`EstimateFeeResponseBulk`](../namespaces/types.md#estimatefeeresponsebulk)\> + +response from estimate_fee + +#### Defined in + +[src/account/interface.ts:166](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L166) + +--- + +### getSuggestedFee + +▸ **getSuggestedFee**(`estimateFeeAction`, `details`): `Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +Gets Suggested Max Fee based on the transaction type + +#### Parameters + +| Name | Type | +| :------------------ | :---------------------------------------------------------------- | +| `estimateFeeAction` | [`EstimateFeeAction`](../namespaces/types.md#estimatefeeaction) | +| `details` | [`EstimateFeeDetails`](../interfaces/types.EstimateFeeDetails.md) | + +#### Returns + +`Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +EstimateFee (...response, resourceBounds, suggestedMaxFee) + +#### Defined in + +[src/account/interface.ts:178](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L178) + +--- + +### simulateTransaction + +▸ **simulateTransaction**(`invocations`, `details?`): `Promise`<[`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse)\> + +Simulates an array of transaction and returns an array of transaction trace and estimated fee. + +#### Parameters + +| Name | Type | Description | +| :------------ | :-------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------- | +| `invocations` | [`Invocations`](../namespaces/types.md#invocations) | Invocations containing: - type - transaction type: DECLARE, (multi)DEPLOY, DEPLOY_ACCOUNT, (multi)INVOKE_FUNCTION | +| `details?` | [`SimulateTransactionDetails`](../namespaces/types.md#simulatetransactiondetails) | SimulateTransactionDetails | + +#### Returns + +`Promise`<[`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse)\> + +response from simulate_transaction + +#### Defined in + +[src/account/interface.ts:192](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L192) + +--- + +### execute + +▸ **execute**(`transactions`, `transactionsDetail?`): `Promise`<\{ `transaction_hash`: `string` }\> + +Invoke execute function in account contract + +#### Parameters + +| Name | Type | Description | +| :-------------------- | :---------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `transactions` | [`AllowArray`](../namespaces/types.md#allowarray)<[`Call`](../namespaces/types.md#call)\> | the invocation object or an array of them, containing: - contractAddress - the address of the contract - entrypoint - the entrypoint of the contract - calldata - (defaults to []) the calldata - signature - (defaults to []) the signature | +| `transactionsDetail?` | [`InvocationsDetails`](../namespaces/types.md#invocationsdetails) | Additional optional parameters for the transaction | + +#### Returns + +`Promise`<\{ `transaction_hash`: `string` }\> + +response from addTransaction + +#### Defined in + +[src/account/interface.ts:209](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L209) + +▸ **execute**(`transactions`, `abis?`, `transactionsDetail?`): `Promise`<\{ `transaction_hash`: `string` }\> + +#### Parameters + +| Name | Type | Description | +| :-------------------- | :---------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `transactions` | [`AllowArray`](../namespaces/types.md#allowarray)<[`Call`](../namespaces/types.md#call)\> | the invocation object or an array of them, containing: - contractAddress - the address of the contract - entrypoint - the entrypoint of the contract - calldata - (defaults to []) the calldata - signature - (defaults to []) the signature | +| `abis?` | [`Abi`](../namespaces/types.md#abi)[] | (optional) the abi of the contract for better displaying | +| `transactionsDetail?` | [`InvocationsDetails`](../namespaces/types.md#invocationsdetails) | Additional optional parameters for the transaction \* | + +#### Returns + +`Promise`<\{ `transaction_hash`: `string` }\> + +response from addTransaction + +**`Deprecated`** + +#### Defined in + +[src/account/interface.ts:224](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L224) + +--- + +### declare + +▸ **declare**(`contractPayload`, `transactionsDetail?`): `Promise`<\{ `class_hash`: `string` ; `transaction_hash`: `string` }\> + +Declares a given compiled contract (json) to starknet + +#### Parameters + +| Name | Type | Description | +| :-------------------- | :------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `contractPayload` | [`DeclareContractPayload`](../namespaces/types.md#declarecontractpayload) | transaction payload to be deployed containing: - contract: compiled contract code - (optional) classHash: computed class hash of compiled contract. Pre-compute it for faster execution. - (required for Cairo1 without compiledClassHash) casm: CompiledContract \| string; - (optional for Cairo1 with casm) compiledClassHash: compiled class hash from casm. Pre-compute it for faster execution. | +| `transactionsDetail?` | [`InvocationsDetails`](../namespaces/types.md#invocationsdetails) | InvocationsDetails | + +#### Returns + +`Promise`<\{ `class_hash`: `string` ; `transaction_hash`: `string` }\> + +a confirmation of sending a transaction on the starknet contract + +#### Defined in + +[src/account/interface.ts:242](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L242) + +--- + +### deploy + +▸ **deploy**(`payload`, `details?`): `Promise`<[`MultiDeployContractResponse`](../namespaces/types.md#multideploycontractresponse)\> + +Deploys a declared contract to starknet - using Universal Deployer Contract (UDC) +support multicall + +#### Parameters + +| Name | Type | Description | +| :--------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `payload` | [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload) \| [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload)[] | classHash: computed class hash of compiled contract - [constructorCalldata] contract constructor calldata - [salt=pseudorandom] deploy address salt - [unique=true] ensure unique salt | +| `details?` | [`InvocationsDetails`](../namespaces/types.md#invocationsdetails) | InvocationsDetails | + +#### Returns + +`Promise`<[`MultiDeployContractResponse`](../namespaces/types.md#multideploycontractresponse)\> + +- contract_address[] +- transaction_hash + +#### Defined in + +[src/account/interface.ts:262](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L262) + +--- + +### deployContract + +▸ **deployContract**(`payload`, `details?`): `Promise`<[`DeployContractUDCResponse`](../namespaces/types.md#deploycontractudcresponse)\> + +Simplify deploy simulating old DeployContract with same response + UDC specific response +Internal wait for L2 transaction, support multicall + +#### Parameters + +| Name | Type | Description | +| :--------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `payload` | [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload) \| [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload)[] | classHash: computed class hash of compiled contract - [constructorCalldata] contract constructor calldata - [salt=pseudorandom] deploy address salt - [unique=true] ensure unique salt | +| `details?` | [`InvocationsDetails`](../namespaces/types.md#invocationsdetails) | InvocationsDetails | + +#### Returns + +`Promise`<[`DeployContractUDCResponse`](../namespaces/types.md#deploycontractudcresponse)\> + +- contract_address +- transaction_hash +- address +- deployer +- unique +- classHash +- calldata_len +- calldata +- salt + +#### Defined in + +[src/account/interface.ts:289](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L289) + +--- + +### declareAndDeploy + +▸ **declareAndDeploy**(`payload`, `details?`): `Promise`<[`DeclareDeployUDCResponse`](../namespaces/types.md#declaredeployudcresponse)\> + +Declares and Deploy a given compiled contract (json) to starknet using UDC +Internal wait for L2 transaction, do not support multicall +Method will pass even if contract is already declared (internal using DeclareIfNot) + +#### Parameters + +| Name | Type | Description | +| :--------- | :------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `payload` | [`DeclareAndDeployContractPayload`](../namespaces/types.md#declareanddeploycontractpayload) | contract: compiled contract code - [casm=cairo1]: CairoAssembly \| undefined; - [compiledClassHash]: string \| undefined; - [classHash]: computed class hash of compiled contract - [constructorCalldata] contract constructor calldata - [salt=pseudorandom] deploy address salt - [unique=true] ensure unique salt | +| `details?` | [`InvocationsDetails`](../namespaces/types.md#invocationsdetails) | InvocationsDetails | + +#### Returns + +`Promise`<[`DeclareDeployUDCResponse`](../namespaces/types.md#declaredeployudcresponse)\> + +- declare + - transaction_hash +- deploy + - contract_address + - transaction_hash + - address + - deployer + - unique + - classHash + - calldata_len + - calldata + - salt + +#### Defined in + +[src/account/interface.ts:323](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L323) + +--- + +### deployAccount + +▸ **deployAccount**(`contractPayload`, `transactionsDetail?`): `Promise`<[`DeployContractResponse`](../interfaces/types.DeployContractResponse.md)\> + +Deploy the account on Starknet + +#### Parameters + +| Name | Type | Description | +| :-------------------- | :------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `contractPayload` | [`DeployAccountContractPayload`](../namespaces/types.md#deployaccountcontractpayload) | transaction payload to be deployed containing: - classHash: computed class hash of compiled contract - optional constructor calldata - optional address salt - optional contractAddress | +| `transactionsDetail?` | [`InvocationsDetails`](../namespaces/types.md#invocationsdetails) | InvocationsDetails | + +#### Returns + +`Promise`<[`DeployContractResponse`](../interfaces/types.DeployContractResponse.md)\> + +a confirmation of sending a transaction on the starknet contract + +#### Defined in + +[src/account/interface.ts:340](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L340) + +--- + +### signMessage + +▸ **signMessage**(`typedData`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Signs a TypedData object for off-chain usage with the Starknet private key and returns the signature +This adds a message prefix so it can't be interchanged with transactions + +#### Parameters + +| Name | Type | Description | +| :---------- | :----------------------------------------------------------------------- | :---------------------------- | +| `typedData` | [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) | TypedData object to be signed | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +the signature of the TypedData object + +**`Throws`** + +if typedData is not a valid TypedData + +#### Defined in + +[src/account/interface.ts:353](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L353) + +--- + +### hashMessage + +▸ **hashMessage**(`typedData`): `Promise`<`string`\> + +Hash a TypedData object with Pedersen hash and return the hash +This adds a message prefix so it can't be interchanged with transactions + +#### Parameters + +| Name | Type | Description | +| :---------- | :----------------------------------------------------------------------- | :---------------------------- | +| `typedData` | [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) | TypedData object to be hashed | + +#### Returns + +`Promise`<`string`\> + +the hash of the TypedData object + +**`Throws`** + +if typedData is not a valid TypedData + +#### Defined in + +[src/account/interface.ts:363](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L363) + +--- + +### getNonce + +▸ **getNonce**(`blockIdentifier?`): `Promise`<`string`\> + +Gets the nonce of the account with respect to a specific block + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :---------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | optional blockIdentifier. Defaults to 'pending' | + +#### Returns + +`Promise`<`string`\> + +nonce of the account + +#### Defined in + +[src/account/interface.ts:371](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/interface.ts#L371) + +--- + +### getChainId + +▸ **getChainId**(): `Promise`<[`StarknetChainId`](../enums/constants.StarknetChainId.md)\> + +Gets the Starknet chain Id + +#### Returns + +`Promise`<[`StarknetChainId`](../enums/constants.StarknetChainId.md)\> + +the chain Id + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getChainId](ProviderInterface.md#getchainid) + +#### Defined in + +[src/provider/interface.ts:44](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L44) + +--- + +### callContract + +▸ **callContract**(`call`, `blockIdentifier?`): `Promise`<[`CallContractResponse`](../namespaces/types.md#callcontractresponse)\> + +Calls a function on the Starknet contract. + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :----------------------- | +| `call` | [`Call`](../namespaces/types.md#call) | transaction to be called | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<[`CallContractResponse`](../namespaces/types.md#callcontractresponse)\> + +the result of the function on the smart contract. + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[callContract](ProviderInterface.md#callcontract) + +#### Defined in + +[src/provider/interface.ts:53](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L53) + +--- + +### getBlock + +▸ **getBlock**(`blockIdentifier?`): `Promise`<[`PendingBlock`](../namespaces/types.md#pendingblock)\> + +Gets the block information + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------- | :--------------- | +| `blockIdentifier?` | `"pending"` | block identifier | + +#### Returns + +`Promise`<[`PendingBlock`](../namespaces/types.md#pendingblock)\> + +the block object + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getBlock](ProviderInterface.md#getblock) + +#### Defined in + +[src/provider/interface.ts:64](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L64) + +▸ **getBlock**(`blockIdentifier`): `Promise`<[`Block`](../namespaces/types.md#block)\> + +#### Parameters + +| Name | Type | +| :---------------- | :--------- | +| `blockIdentifier` | `"latest"` | + +#### Returns + +`Promise`<[`Block`](../namespaces/types.md#block)\> + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getBlock](ProviderInterface.md#getblock) + +#### Defined in + +[src/provider/interface.ts:65](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L65) + +▸ **getBlock**(`blockIdentifier`): `Promise`<[`GetBlockResponse`](../namespaces/types.md#getblockresponse)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`GetBlockResponse`](../namespaces/types.md#getblockresponse)\> + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getBlock](ProviderInterface.md#getblock) + +#### Defined in + +[src/provider/interface.ts:66](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L66) + +--- + +### getClassAt + +▸ **getClassAt**(`contractAddress`, `blockIdentifier?`): `Promise`<[`ContractClassResponse`](../namespaces/types.md#contractclassresponse)\> + +Gets the contract class of the deployed contract. + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------- | +| `contractAddress` | `string` | contract address | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<[`ContractClassResponse`](../namespaces/types.md#contractclassresponse)\> + +Contract class of compiled contract + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getClassAt](ProviderInterface.md#getclassat) + +#### Defined in + +[src/provider/interface.ts:75](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L75) + +--- + +### getL1GasPrice + +▸ **getL1GasPrice**(`blockIdentifier`): `Promise`<`string`\> + +Gets the price of l1 gas in the block + +#### Parameters + +| Name | Type | Description | +| :---------------- | :---------------------------------------------------------- | :--------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<`string`\> + +gas price of the block + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getL1GasPrice](ProviderInterface.md#getl1gasprice) + +#### Defined in + +[src/provider/interface.ts:86](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L86) + +--- + +### getL1MessageHash + +▸ **getL1MessageHash**(`l2TxHash`): `Promise`<`string`\> + +Get L1 message hash from L2 transaction hash + +#### Parameters + +| Name | Type | Description | +| :--------- | :---------------------------------------------------- | :------------------ | +| `l2TxHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | L2 transaction hash | + +#### Returns + +`Promise`<`string`\> + +Hex string of L1 message hash + +**`Example`** + +In Sepolia Testnet : + +```typescript +const result = provider.getL1MessageHash( + '0x28dfc05eb4f261b37ddad451ff22f1d08d4e3c24dc646af0ec69fa20e096819' +); +// result = '0x55b3f8b6e607fffd9b4d843dfe8f9b5c05822cd94fcad8797deb01d77805532a' +``` + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getL1MessageHash](ProviderInterface.md#getl1messagehash) + +#### Defined in + +[src/provider/interface.ts:99](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L99) + +--- + +### getClassHashAt + +▸ **getClassHashAt**(`contractAddress`, `blockIdentifier?`): `Promise`<`string`\> + +Returns the contract class hash in the given block for the contract deployed at the given address + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------- | +| `contractAddress` | `string` | contract address | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<`string`\> + +Class hash + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getClassHashAt](ProviderInterface.md#getclasshashat) + +#### Defined in + +[src/provider/interface.ts:108](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L108) + +--- + +### getClassByHash + +▸ **getClassByHash**(`classHash`): `Promise`<[`ContractClassResponse`](../namespaces/types.md#contractclassresponse)\> + +Returns the contract class deployed under the given class hash. + +#### Parameters + +| Name | Type | Description | +| :---------- | :------- | :---------- | +| `classHash` | `string` | class hash | + +#### Returns + +`Promise`<[`ContractClassResponse`](../namespaces/types.md#contractclassresponse)\> + +Contract class of compiled contract + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getClassByHash](ProviderInterface.md#getclassbyhash) + +#### Defined in + +[src/provider/interface.ts:119](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L119) + +--- + +### getNonceForAddress + +▸ **getNonceForAddress**(`contractAddress`, `blockIdentifier?`): `Promise`<`string`\> + +Returns the nonce associated with the given address in the given block + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------- | +| `contractAddress` | `string` | contract address | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | - | + +#### Returns + +`Promise`<`string`\> + +the hex nonce + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getNonceForAddress](ProviderInterface.md#getnonceforaddress) + +#### Defined in + +[src/provider/interface.ts:127](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L127) + +--- + +### getStorageAt + +▸ **getStorageAt**(`contractAddress`, `key`, `blockIdentifier?`): `Promise`<`string`\> + +Get the value of the storage (contract's variable) at the given address and key + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------------------------------------------------- | +| `contractAddress` | `string` | | +| `key` | [`BigNumberish`](../namespaces/types.md#bignumberish) | from getStorageVarAddress('') (WIP) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<`string`\> + +the value of the storage variable + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getStorageAt](ProviderInterface.md#getstorageat) + +#### Defined in + +[src/provider/interface.ts:140](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L140) + +--- + +### getTransaction + +▸ **getTransaction**(`transactionHash`): `Promise`<`TransactionWithHash`\> + +Gets the transaction information from a tx id. + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------- | +| `transactionHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<`TransactionWithHash`\> + +the transaction object { transaction_id, status, transaction, block_number?, block_number?, transaction_index?, transaction_failure_reason? } + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getTransaction](ProviderInterface.md#gettransaction) + +#### Defined in + +[src/provider/interface.ts:152](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L152) + +--- + +### getTransactionReceipt + +▸ **getTransactionReceipt**(`transactionHash`): `Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +Gets the transaction receipt from a tx hash. + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------- | +| `transactionHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +the transaction receipt object + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getTransactionReceipt](ProviderInterface.md#gettransactionreceipt) + +#### Defined in + +[src/provider/interface.ts:160](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L160) + +--- + +### deployAccountContract + +▸ **deployAccountContract**(`payload`, `details`): `Promise`<[`DeployContractResponse`](../interfaces/types.DeployContractResponse.md)\> + +Deploys a given compiled Account contract (json) to starknet + +#### Parameters + +| Name | Type | Description | +| :-------- | :------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------ | +| `payload` | [`DeployAccountContractPayload`](../namespaces/types.md#deployaccountcontractpayload) | payload to be deployed containing: - compiled contract code - constructor calldata - address salt | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | - | + +#### Returns + +`Promise`<[`DeployContractResponse`](../interfaces/types.DeployContractResponse.md)\> + +a confirmation of sending a transaction on the starknet contract + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[deployAccountContract](ProviderInterface.md#deployaccountcontract) + +#### Defined in + +[src/provider/interface.ts:173](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L173) + +--- + +### invokeFunction + +▸ **invokeFunction**(`invocation`, `details`): `Promise`<\{ `transaction_hash`: `string` }\> + +Invokes a function on starknet + +#### Parameters + +| Name | Type | Description | +| :----------- | :---------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `invocation` | [`Invocation`](../namespaces/types.md#invocation) | the invocation object containing: - contractAddress - the address of the contract - entrypoint - the entrypoint of the contract - calldata - (defaults to []) the calldata - signature - (defaults to []) the signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | optional details containing: - nonce - optional nonce - version - optional version - maxFee - optional maxFee | + +#### Returns + +`Promise`<\{ `transaction_hash`: `string` }\> + +response from addTransaction + +**`Deprecated`** + +This method won't be supported as soon as fees are mandatory. Should not be used outside of Account class + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[invokeFunction](ProviderInterface.md#invokefunction) + +#### Defined in + +[src/provider/interface.ts:193](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L193) + +--- + +### declareContract + +▸ **declareContract**(`transaction`, `details`): `Promise`<\{ `class_hash`: `string` ; `transaction_hash`: `string` }\> + +Declares a given compiled contract (json) to starknet + +#### Parameters + +| Name | Type | Description | +| :------------ | :---------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------- | +| `transaction` | [`DeclareContractTransaction`](../namespaces/types.md#declarecontracttransaction) | transaction payload to be deployed containing: - compiled contract code - sender address - signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | Invocation 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](ProviderInterface.md).[declareContract](ProviderInterface.md#declarecontract) + +#### Defined in + +[src/provider/interface.ts:210](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L210) + +--- + +### getEstimateFee + +▸ **getEstimateFee**(`invocation`, `details`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimates the fee for a given INVOKE transaction + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `invocation` | [`Invocation`](../namespaces/types.md#invocation) | the invocation object containing: - contractAddress - the address of the contract - entrypoint - the entrypoint of the contract - calldata - (defaults to []) the calldata - signature - (defaults to []) the signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | optional details containing: - nonce - optional nonce - version - optional version | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | (optional) block identifier | +| `skipValidate?` | `boolean` | (optional) skip cairo **validate** method | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +the estimated fee + +**`Deprecated`** + +Please use getInvokeEstimateFee or getDeclareEstimateFee instead. Should not be used outside of Account class + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getEstimateFee](ProviderInterface.md#getestimatefee) + +#### Defined in + +[src/provider/interface.ts:231](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L231) + +--- + +### getInvokeEstimateFee + +▸ **getInvokeEstimateFee**(`invocation`, `details`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimates the fee for a given INVOKE transaction + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `invocation` | [`Invocation`](../namespaces/types.md#invocation) | the invocation object containing: - contractAddress - the address of the contract - entrypoint - the entrypoint of the contract - calldata - (defaults to []) the calldata - signature - (defaults to []) the signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | optional details containing: - nonce - optional nonce - version - optional version | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | (optional) block identifier | +| `skipValidate?` | `boolean` | (optional) skip cairo **validate** method | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +the estimated fee + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getInvokeEstimateFee](ProviderInterface.md#getinvokeestimatefee) + +#### Defined in + +[src/provider/interface.ts:253](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L253) + +--- + +### getDeclareEstimateFee + +▸ **getDeclareEstimateFee**(`transaction`, `details`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimates the fee for a given DECLARE transaction + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------ | +| `transaction` | [`DeclareContractTransaction`](../namespaces/types.md#declarecontracttransaction) | transaction payload to be declared containing: - compiled contract code - sender address - signature - (defaults to []) the signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | optional details containing: - nonce - version - optional version - optional maxFee | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | (optional) block identifier | +| `skipValidate?` | `boolean` | (optional) skip cairo **validate** method | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +the estimated fee + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getDeclareEstimateFee](ProviderInterface.md#getdeclareestimatefee) + +#### Defined in + +[src/provider/interface.ts:275](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L275) + +--- + +### getDeployAccountEstimateFee + +▸ **getDeployAccountEstimateFee**(`transaction`, `details`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimates the fee for a given DEPLOY_ACCOUNT transaction + +#### Parameters + +| Name | Type | Description | +| :----------------- | :-------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | +| `transaction` | [`DeployAccountContractTransaction`](../namespaces/types.md#deployaccountcontracttransaction) | transaction payload to be deployed containing: - classHash - constructorCalldata - addressSalt - signature - (defaults to []) the signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | optional details containing: - nonce - version - optional version - optional maxFee | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | (optional) block identifier | +| `skipValidate?` | `boolean` | (optional) skip cairo **validate** method | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +the estimated fee + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getDeployAccountEstimateFee](ProviderInterface.md#getdeployaccountestimatefee) + +#### Defined in + +[src/provider/interface.ts:298](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L298) + +--- + +### getEstimateFeeBulk + +▸ **getEstimateFeeBulk**(`invocations`, `options?`): `Promise`<[`EstimateFeeResponseBulk`](../namespaces/types.md#estimatefeeresponsebulk)\> + +Estimates the fee for a list of INVOKE transaction + +#### Parameters + +| Name | Type | Description | +| :------------ | :------------------------------------------------------------------------------ | :----------------------------------------------------------------------- | +| `invocations` | [`AccountInvocations`](../namespaces/types.md#accountinvocations) | AccountInvocations - Complete invocations array with account details | +| `options?` | [`getEstimateFeeBulkOptions`](../namespaces/types.md#getestimatefeebulkoptions) | getEstimateFeeBulkOptions - (optional) blockIdentifier - BlockIdentifier | + +#### Returns + +`Promise`<[`EstimateFeeResponseBulk`](../namespaces/types.md#estimatefeeresponsebulk)\> + +the estimated fee + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getEstimateFeeBulk](ProviderInterface.md#getestimatefeebulk) + +#### Defined in + +[src/provider/interface.ts:313](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L313) + +--- + +### waitForTransaction + +▸ **waitForTransaction**(`txHash`, `options?`): `Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +Wait for the transaction to be accepted + +#### Parameters + +| Name | Type | Description | +| :--------- | :------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | transaction hash | +| `options?` | [`waitForTransactionOptions`](../namespaces/types.md#waitfortransactionoptions) | waitForTransactionOptions - (optional) retryInterval: number \| undefined; - (optional) successStates: TransactionStatus[] \| undefined; | + +#### Returns + +`Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +GetTransactionReceiptResponse + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[waitForTransaction](ProviderInterface.md#waitfortransaction) + +#### Defined in + +[src/provider/interface.ts:326](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L326) + +--- + +### getSimulateTransaction + +▸ **getSimulateTransaction**(`invocations`, `options?`): `Promise`<[`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse)\> + +Simulates the transaction and returns the transaction trace and estimated fee. + +#### Parameters + +| Name | Type | Description | +| :------------ | :-------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `invocations` | [`AccountInvocations`](../namespaces/types.md#accountinvocations) | AccountInvocations - Complete invocations array with account details | +| `options?` | [`getSimulateTransactionOptions`](../namespaces/types.md#getsimulatetransactionoptions) | getSimulateTransactionOptions - (optional) blockIdentifier - block identifier - (optional) skipValidate - skip cairo **validate** method - (optional) skipExecute - skip cairo **execute** method | + +#### Returns + +`Promise`<[`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse)\> + +an array of transaction trace and estimated fee + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getSimulateTransaction](ProviderInterface.md#getsimulatetransaction) + +#### Defined in + +[src/provider/interface.ts:341](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L341) + +--- + +### getStateUpdate + +▸ **getStateUpdate**(`blockIdentifier?`): `Promise`<[`StateUpdateResponse`](../namespaces/types.md#stateupdateresponse)\> + +Gets the state changes in a specific block (result of executing the requested block) + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<[`StateUpdateResponse`](../namespaces/types.md#stateupdateresponse)\> + +StateUpdateResponse + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getStateUpdate](ProviderInterface.md#getstateupdate) + +#### Defined in + +[src/provider/interface.ts:352](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L352) + +--- + +### getContractVersion + +▸ **getContractVersion**(`contractAddress`, `classHash?`, `options?`): `Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +Gets the contract version from the provided address + +#### Parameters + +| Name | Type | Description | +| :---------------- | :------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `contractAddress` | `string` | string | +| `classHash?` | `undefined` | undefined | +| `options?` | [`getContractVersionOptions`](../namespaces/types.md#getcontractversionoptions) | getContractVersionOptions - (optional) compiler - (default true) extract compiler version using type tactic from abi - (optional) blockIdentifier - block identifier | + +#### Returns + +`Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getContractVersion](ProviderInterface.md#getcontractversion) + +#### Defined in + +[src/provider/interface.ts:362](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L362) + +▸ **getContractVersion**(`contractAddress`, `classHash`, `options?`): `Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +Gets the contract version from the provided address + +#### Parameters + +| Name | Type | Description | +| :---------------- | :------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `contractAddress` | `undefined` | undefined | +| `classHash` | `string` | | +| `options?` | [`getContractVersionOptions`](../namespaces/types.md#getcontractversionoptions) | getContractVersionOptions - (optional) compiler - (default true) extract compiler version using type tactic from abi - (optional) blockIdentifier - block identifier | + +#### Returns + +`Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +#### Inherited from + +[ProviderInterface](ProviderInterface.md).[getContractVersion](ProviderInterface.md#getcontractversion) + +#### Defined in + +[src/provider/interface.ts:376](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L376) diff --git a/www/versioned_docs/version-6.24.1/API/classes/BatchClient.md b/www/versioned_docs/version-6.24.1/API/classes/BatchClient.md new file mode 100644 index 000000000..ce0b8f2db --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/BatchClient.md @@ -0,0 +1,245 @@ +--- +id: 'BatchClient' +title: 'Class: BatchClient' +sidebar_label: 'BatchClient' +sidebar_position: 0 +custom_edit_url: null +--- + +## Constructors + +### constructor + +• **new BatchClient**(`options`): [`BatchClient`](BatchClient.md) + +#### Parameters + +| Name | Type | +| :-------- | :------------------------------------------------------- | +| `options` | [`BatchClientOptions`](../modules.md#batchclientoptions) | + +#### Returns + +[`BatchClient`](BatchClient.md) + +#### Defined in + +[src/utils/batch/index.ts:33](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/batch/index.ts#L33) + +## Properties + +### nodeUrl + +• **nodeUrl**: `string` + +#### Defined in + +[src/utils/batch/index.ts:13](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/batch/index.ts#L13) + +--- + +### headers + +• **headers**: `object` + +#### Defined in + +[src/utils/batch/index.ts:15](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/batch/index.ts#L15) + +--- + +### interval + +• **interval**: `number` + +#### Defined in + +[src/utils/batch/index.ts:17](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/batch/index.ts#L17) + +--- + +### requestId + +• **requestId**: `number` = `0` + +#### Defined in + +[src/utils/batch/index.ts:19](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/batch/index.ts#L19) + +--- + +### pendingRequests + +• `Private` **pendingRequests**: `Record`<`string` \| `number`, [`RequestBody`](../namespaces/types.RPC.JRPC.md#requestbody)\> = `{}` + +#### Defined in + +[src/utils/batch/index.ts:21](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/batch/index.ts#L21) + +--- + +### batchPromises + +• `Private` **batchPromises**: `Record`<`string` \| `number`, `Promise`<[`ResponseBody`](../namespaces/types.RPC.JRPC.md#responsebody)[]\>\> = `{}` + +#### Defined in + +[src/utils/batch/index.ts:23](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/batch/index.ts#L23) + +--- + +### delayTimer + +• `Private` `Optional` **delayTimer**: `Timeout` + +#### Defined in + +[src/utils/batch/index.ts:25](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/batch/index.ts#L25) + +--- + +### delayPromise + +• `Private` `Optional` **delayPromise**: `Promise`<`void`\> + +#### Defined in + +[src/utils/batch/index.ts:27](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/batch/index.ts#L27) + +--- + +### delayPromiseResolve + +• `Private` `Optional` **delayPromiseResolve**: () => `void` + +#### Type declaration + +▸ (): `void` + +##### Returns + +`void` + +#### Defined in + +[src/utils/batch/index.ts:29](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/batch/index.ts#L29) + +--- + +### baseFetch + +• `Private` **baseFetch**: (`input`: `RequestInfo` \| `URL`, `init?`: `RequestInit`) => `Promise`<`Response`\> + +#### Type declaration + +▸ (`input`, `init?`): `Promise`<`Response`\> + +##### Parameters + +| Name | Type | +| :------ | :--------------------- | +| `input` | `RequestInfo` \| `URL` | +| `init?` | `RequestInit` | + +##### Returns + +`Promise`<`Response`\> + +#### Defined in + +[src/utils/batch/index.ts:31](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/batch/index.ts#L31) + +## Methods + +### wait + +▸ **wait**(): `Promise`<`void`\> + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/utils/batch/index.ts:40](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/batch/index.ts#L40) + +--- + +### addPendingRequest + +▸ **addPendingRequest**<`T`\>(`method`, `params?`, `id?`): `string` \| `number` + +#### Type parameters + +| Name | Type | +| :--- | :-------------------------------------------------------------------------- | +| `T` | extends keyof `ReadMethods` \| keyof `WriteMethods` \| keyof `TraceMethods` | + +#### Parameters + +| Name | Type | +| :-------- | :------------------------------------------------------------------------------- | +| `method` | `T` | +| `params?` | [`Methods`](../namespaces/types.RPC.RPCSPEC07.API.md#methods)[`T`][``"params"``] | +| `id?` | `string` \| `number` | + +#### Returns + +`string` \| `number` + +#### Defined in + +[src/utils/batch/index.ts:66](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/batch/index.ts#L66) + +--- + +### sendBatch + +▸ **sendBatch**(`requests`): `Promise`<`any`\> + +#### Parameters + +| Name | Type | +| :--------- | :------------------------------------------------------------- | +| `requests` | [`RequestBody`](../namespaces/types.RPC.JRPC.md#requestbody)[] | + +#### Returns + +`Promise`<`any`\> + +#### Defined in + +[src/utils/batch/index.ts:83](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/batch/index.ts#L83) + +--- + +### fetch + +▸ **fetch**<`T`, `TResponse`\>(`method`, `params?`, `id?`): `Promise`<`TResponse`\> + +Automatically batches and fetches JSON-RPC calls in a single request. + +#### Type parameters + +| Name | Type | +| :---------- | :-------------------------------------------------------------------------- | +| `T` | extends keyof `ReadMethods` \| keyof `WriteMethods` \| keyof `TraceMethods` | +| `TResponse` | extends `Object` | + +#### Parameters + +| Name | Type | Description | +| :-------- | :------------------------------------------------------------------------------- | :------------------ | +| `method` | `T` | Method to call | +| `params?` | [`Methods`](../namespaces/types.RPC.RPCSPEC07.API.md#methods)[`T`][``"params"``] | Method parameters | +| `id?` | `string` \| `number` | JSON-RPC Request ID | + +#### Returns + +`Promise`<`TResponse`\> + +JSON-RPC Response + +#### Defined in + +[src/utils/batch/index.ts:100](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/batch/index.ts#L100) diff --git a/www/versioned_docs/version-6.24.1/API/classes/CairoCustomEnum.md b/www/versioned_docs/version-6.24.1/API/classes/CairoCustomEnum.md new file mode 100644 index 000000000..6024c8f3a --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/CairoCustomEnum.md @@ -0,0 +1,95 @@ +--- +id: 'CairoCustomEnum' +title: 'Class: CairoCustomEnum' +sidebar_label: 'CairoCustomEnum' +sidebar_position: 0 +custom_edit_url: null +--- + +Class to handle Cairo custom Enum + +**`Param`** + +object containing the variants and its content. Example : +{Success: 234, Warning: undefined, Error: undefined}. +Only one variant with a value, object, array. + +**`Example`** + +```typescript +const myCairoEnum = new CairoCustomEnum({ + Success: undefined, + Warning: '0x7f32ea', + Error: undefined, +}); +``` + +## Constructors + +### constructor + +• **new CairoCustomEnum**(`enumContent`): [`CairoCustomEnum`](CairoCustomEnum.md) + +#### Parameters + +| Name | Type | Description | +| :------------ | :------------------------------------------- | :----------------------------------------------------------------------------------------------- | +| `enumContent` | [`CairoEnumRaw`](../modules.md#cairoenumraw) | an object with the variants as keys and the content as value. Only one content shall be defined. | + +#### Returns + +[`CairoCustomEnum`](CairoCustomEnum.md) + +#### Defined in + +[src/utils/calldata/enum/CairoCustomEnum.ts:29](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoCustomEnum.ts#L29) + +## Properties + +### variant + +• `Readonly` **variant**: [`CairoEnumRaw`](../modules.md#cairoenumraw) + +direct readonly access to variants of the Cairo Custom Enum. + +**`Example`** + +```typescript +const successValue = myCairoEnum.variant.Success; + +#### Defined in + +[src/utils/calldata/enum/CairoCustomEnum.ts:24](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoCustomEnum.ts#L24) + +## Methods + +### unwrap + +▸ **unwrap**(): `any` + +#### Returns + +`any` + +the content of the valid variant of a Cairo custom Enum. + +#### Defined in + +[src/utils/calldata/enum/CairoCustomEnum.ts:45](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoCustomEnum.ts#L45) + +___ + +### activeVariant + +▸ **activeVariant**(): `string` + +#### Returns + +`string` + +the name of the valid variant of a Cairo custom Enum. + +#### Defined in + +[src/utils/calldata/enum/CairoCustomEnum.ts:54](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoCustomEnum.ts#L54) +``` diff --git a/www/versioned_docs/version-6.24.1/API/classes/CairoFixedArray.md b/www/versioned_docs/version-6.24.1/API/classes/CairoFixedArray.md new file mode 100644 index 000000000..f1d1f3def --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/CairoFixedArray.md @@ -0,0 +1,256 @@ +--- +id: 'CairoFixedArray' +title: 'Class: CairoFixedArray' +sidebar_label: 'CairoFixedArray' +sidebar_position: 0 +custom_edit_url: null +--- + +## Constructors + +### constructor + +• **new CairoFixedArray**(`content`, `arrayType`): [`CairoFixedArray`](CairoFixedArray.md) + +Create an instance representing a Cairo fixed Array. + +#### Parameters + +| Name | Type | Description | +| :---------- | :------- | :----------------------------------------- | +| `content` | `any`[] | JS array representing a Cairo fixed array. | +| `arrayType` | `string` | Cairo fixed array type. | + +#### Returns + +[`CairoFixedArray`](CairoFixedArray.md) + +#### Defined in + +[src/utils/cairoDataTypes/fixedArray.ts:19](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/fixedArray.ts#L19) + +## Properties + +### content + +• `Readonly` **content**: `any`[] + +JS array representing a Cairo fixed array. + +#### Defined in + +[src/utils/cairoDataTypes/fixedArray.ts:7](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/fixedArray.ts#L7) + +--- + +### arrayType + +• `Readonly` **arrayType**: `string` + +Cairo fixed array type. + +#### Defined in + +[src/utils/cairoDataTypes/fixedArray.ts:12](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/fixedArray.ts#L12) + +## Methods + +### getFixedArraySize + +▸ **getFixedArraySize**(`type`): `number` + +Retrieves the array size from the given type string representing a Cairo fixed array. + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :-------------------------- | +| `type` | `string` | The Cairo fixed array type. | + +#### Returns + +`number` + +The array size. + +**`Example`** + +```typescript +const result = CairoFixedArray.getFixedArraySize('[core::integer::u32; 8]'); +// result = 8 +``` + +#### Defined in + +[src/utils/cairoDataTypes/fixedArray.ts:56](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/fixedArray.ts#L56) + +--- + +### getFixedArrayType + +▸ **getFixedArrayType**(`type`): `string` + +Retrieve the Cairo content type from a Cairo fixed array type. + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :--------------- | +| `type` | `string` | The type string. | + +#### Returns + +`string` + +The fixed-array type. + +**`Example`** + +```typescript +const result = CairoFixedArray.getFixedArrayType('[core::integer::u32; 8]'); +// result = "core::integer::u32" +``` + +#### Defined in + +[src/utils/cairoDataTypes/fixedArray.ts:87](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/fixedArray.ts#L87) + +--- + +### compile + +▸ **compile**(`input`): `Object` + +Create an object from a Cairo fixed array. +Be sure to have an array length conform to the ABI. +To be used with CallData.compile(). + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :----------------------------------------- | +| `input` | `any`[] | JS array representing a Cairo fixed array. | + +#### Returns + +`Object` + +a specific struct representing a fixed Array. + +**`Example`** + +```typescript +const result = CairoFixedArray.compile([10, 20, 30]); +// result = { '0': 10, '1': 20, '2': 30 } +``` + +#### Defined in + +[src/utils/cairoDataTypes/fixedArray.ts:120](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/fixedArray.ts#L120) + +--- + +### isTypeFixedArray + +▸ **isTypeFixedArray**(`type`): `boolean` + +Checks if the given Cairo type is a fixed-array type. + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :----------------- | +| `type` | `string` | The type to check. | + +#### Returns + +`boolean` + +- `true` if the type is a fixed array type, `false` otherwise. + +````typescript +const result = CairoFixedArray.isTypeFixedArray("[core::integer::u32; 8]"); +// result = true + +#### Defined in + +[src/utils/cairoDataTypes/fixedArray.ts:151](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/fixedArray.ts#L151) + +___ + +### getFixedArraySize + +▸ **getFixedArraySize**(): `number` + +Retrieves the Cairo fixed array size from the CairoFixedArray instance. + +#### Returns + +`number` + +The fixed array size. + +**`Example`** + +```typescript +const fArray = new CairoFixedArray([10,20,30], "[core::integer::u32; 3]"); +const result = fArray.getFixedArraySize(); +// result = 3 +```` + +#### Defined in + +[src/utils/cairoDataTypes/fixedArray.ts:73](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/fixedArray.ts#L73) + +--- + +### getFixedArrayType + +▸ **getFixedArrayType**(): `string` + +Retrieve the Cairo content type of the Cairo fixed array. + +#### Returns + +`string` + +The fixed-array content type. + +**`Example`** + +```typescript +const fArray = new CairoFixedArray([10, 20, 30], '[core::integer::u32; 3]'); +const result = fArray.getFixedArrayType(); +// result = "core::integer::u32" +``` + +#### Defined in + +[src/utils/cairoDataTypes/fixedArray.ts:104](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/fixedArray.ts#L104) + +--- + +### compile + +▸ **compile**(): `Object` + +Generate an object from the Cairo fixed array instance. +To be used with CallData.compile(). + +#### Returns + +`Object` + +a specific struct representing a fixed array. + +**`Example`** + +```typescript +const fArray = new CairoFixedArray([10, 20, 30], '[core::integer::u32; 3]'); +const result = fArray.compile(); +// result = { '0': 10, '1': 20, '2': 30 } +``` + +#### Defined in + +[src/utils/cairoDataTypes/fixedArray.ts:138](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/fixedArray.ts#L138) diff --git a/www/versioned_docs/version-6.24.1/API/classes/CairoOption.md b/www/versioned_docs/version-6.24.1/API/classes/CairoOption.md new file mode 100644 index 000000000..5024712e6 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/CairoOption.md @@ -0,0 +1,125 @@ +--- +id: 'CairoOption' +title: 'Class: CairoOption' +sidebar_label: 'CairoOption' +sidebar_position: 0 +custom_edit_url: null +--- + +Class to handle Cairo Option + +**`Param`** + +CairoOptionVariant.Some or CairoOptionVariant.None + +**`Param`** + +value of type T. + +**`Example`** + +```typescript +const myOption = new CairoOption(CairoOptionVariant.Some, '0x54dda8'); +``` + +## Type parameters + +| Name | +| :--- | +| `T` | + +## Constructors + +### constructor + +• **new CairoOption**<`T`\>(`variant`, `content?`): [`CairoOption`](CairoOption.md)<`T`\> + +#### Type parameters + +| Name | +| :--- | +| `T` | + +#### Parameters + +| Name | Type | +| :--------- | :------- | +| `variant` | `number` | +| `content?` | `T` | + +#### Returns + +[`CairoOption`](CairoOption.md)<`T`\> + +#### Defined in + +[src/utils/calldata/enum/CairoOption.ts:26](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoOption.ts#L26) + +## Properties + +### Some + +• `Optional` `Readonly` **Some**: `T` + +#### Defined in + +[src/utils/calldata/enum/CairoOption.ts:22](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoOption.ts#L22) + +--- + +### None + +• `Optional` `Readonly` **None**: `boolean` + +#### Defined in + +[src/utils/calldata/enum/CairoOption.ts:24](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoOption.ts#L24) + +## Methods + +### unwrap + +▸ **unwrap**(): `undefined` \| `T` + +#### Returns + +`undefined` \| `T` + +the content of the valid variant of a Cairo custom Enum. +If None, returns 'undefined'. + +#### Defined in + +[src/utils/calldata/enum/CairoOption.ts:49](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoOption.ts#L49) + +--- + +### isSome + +▸ **isSome**(): `boolean` + +#### Returns + +`boolean` + +true if the valid variant is 'isSome'. + +#### Defined in + +[src/utils/calldata/enum/CairoOption.ts:57](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoOption.ts#L57) + +--- + +### isNone + +▸ **isNone**(): `boolean` + +#### Returns + +`boolean` + +true if the valid variant is 'isNone'. + +#### Defined in + +[src/utils/calldata/enum/CairoOption.ts:65](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoOption.ts#L65) diff --git a/www/versioned_docs/version-6.24.1/API/classes/CairoResult.md b/www/versioned_docs/version-6.24.1/API/classes/CairoResult.md new file mode 100644 index 000000000..e4234d043 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/CairoResult.md @@ -0,0 +1,126 @@ +--- +id: 'CairoResult' +title: 'Class: CairoResult' +sidebar_label: 'CairoResult' +sidebar_position: 0 +custom_edit_url: null +--- + +Class to handle Cairo Result + +**`Param`** + +CairoResultVariant.Ok or CairoResultVariant.Err + +**`Param`** + +value of type T or U. + +**`Example`** + +```typescript +const myOption = new CairoResult(CairoResultVariant.Ok, '0x54dda8'); +``` + +## Type parameters + +| Name | +| :--- | +| `T` | +| `U` | + +## Constructors + +### constructor + +• **new CairoResult**<`T`, `U`\>(`variant`, `resultContent`): [`CairoResult`](CairoResult.md)<`T`, `U`\> + +#### Type parameters + +| Name | +| :--- | +| `T` | +| `U` | + +#### Parameters + +| Name | Type | +| :-------------- | :--------- | +| `variant` | `number` | +| `resultContent` | `T` \| `U` | + +#### Returns + +[`CairoResult`](CairoResult.md)<`T`, `U`\> + +#### Defined in + +[src/utils/calldata/enum/CairoResult.ts:26](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoResult.ts#L26) + +## Properties + +### Ok + +• `Optional` `Readonly` **Ok**: `T` + +#### Defined in + +[src/utils/calldata/enum/CairoResult.ts:22](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoResult.ts#L22) + +--- + +### Err + +• `Optional` `Readonly` **Err**: `U` + +#### Defined in + +[src/utils/calldata/enum/CairoResult.ts:24](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoResult.ts#L24) + +## Methods + +### unwrap + +▸ **unwrap**(): `T` \| `U` + +#### Returns + +`T` \| `U` + +the content of the valid variant of a Cairo Result. + +#### Defined in + +[src/utils/calldata/enum/CairoResult.ts:43](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoResult.ts#L43) + +--- + +### isOk + +▸ **isOk**(): `boolean` + +#### Returns + +`boolean` + +true if the valid variant is 'Ok'. + +#### Defined in + +[src/utils/calldata/enum/CairoResult.ts:57](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoResult.ts#L57) + +--- + +### isErr + +▸ **isErr**(): `boolean` + +#### Returns + +`boolean` + +true if the valid variant is 'isErr'. + +#### Defined in + +[src/utils/calldata/enum/CairoResult.ts:65](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoResult.ts#L65) diff --git a/www/versioned_docs/version-6.24.1/API/classes/CairoUint256.md b/www/versioned_docs/version-6.24.1/API/classes/CairoUint256.md new file mode 100644 index 000000000..0ab0007a8 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/CairoUint256.md @@ -0,0 +1,266 @@ +--- +id: 'CairoUint256' +title: 'Class: CairoUint256' +sidebar_label: 'CairoUint256' +sidebar_position: 0 +custom_edit_url: null +--- + +## Constructors + +### constructor + +• **new CairoUint256**(`bigNumberish`): [`CairoUint256`](CairoUint256.md) + +Default constructor (Lib usage) + +#### Parameters + +| Name | Type | Description | +| :------------- | :---------------------------------------------------- | :------------------------------------- | +| `bigNumberish` | [`BigNumberish`](../namespaces/types.md#bignumberish) | BigNumberish value representing uin256 | + +#### Returns + +[`CairoUint256`](CairoUint256.md) + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:29](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L29) + +• **new CairoUint256**(`low`, `high`): [`CairoUint256`](CairoUint256.md) + +Direct props initialization (Api response) + +#### Parameters + +| Name | Type | +| :----- | :---------------------------------------------------- | +| `low` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `high` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +[`CairoUint256`](CairoUint256.md) + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:33](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L33) + +• **new CairoUint256**(`uint256`): [`CairoUint256`](CairoUint256.md) + +Initialization from Uint256 object + +#### Parameters + +| Name | Type | +| :-------- | :------------------------------------------ | +| `uint256` | [`Uint256`](../interfaces/types.Uint256.md) | + +#### Returns + +[`CairoUint256`](CairoUint256.md) + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:37](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L37) + +## Properties + +### abiSelector + +▪ `Static` **abiSelector**: `string` = `'core::integer::u256'` + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:23](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L23) + +--- + +### low + +• **low**: `bigint` + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:19](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L19) + +--- + +### high + +• **high**: `bigint` + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:21](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L21) + +## Methods + +### validate + +▸ **validate**(`bigNumberish`): `bigint` + +Validate if BigNumberish can be represented as Unit256 + +#### Parameters + +| Name | Type | +| :------------- | :---------------------------------------------------- | +| `bigNumberish` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`bigint` + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:60](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L60) + +--- + +### validateProps + +▸ **validateProps**(`low`, `high`): `Object` + +Validate if low and high can be represented as Unit256 + +#### Parameters + +| Name | Type | +| :----- | :---------------------------------------------------- | +| `low` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `high` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Object` + +| Name | Type | +| :----- | :------- | +| `low` | `bigint` | +| `high` | `bigint` | + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:70](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L70) + +--- + +### is + +▸ **is**(`bigNumberish`): `boolean` + +Check if BigNumberish can be represented as Unit256 + +#### Parameters + +| Name | Type | +| :------------- | :---------------------------------------------------- | +| `bigNumberish` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`boolean` + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:85](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L85) + +--- + +### isAbiType + +▸ **isAbiType**(`abiType`): `boolean` + +Check if provided abi type is this data type + +#### Parameters + +| Name | Type | +| :-------- | :------- | +| `abiType` | `string` | + +#### Returns + +`boolean` + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:97](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L97) + +--- + +### toBigInt + +▸ **toBigInt**(): `bigint` + +Return bigint representation + +#### Returns + +`bigint` + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:104](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L104) + +--- + +### toUint256HexString + +▸ **toUint256HexString**(): `Object` + +Return Uint256 structure with HexString props +{low: HexString, high: HexString} + +#### Returns + +`Object` + +| Name | Type | +| :----- | :------- | +| `low` | `string` | +| `high` | `string` | + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:112](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L112) + +--- + +### toUint256DecimalString + +▸ **toUint256DecimalString**(): `Object` + +Return Uint256 structure with DecimalString props +{low: DecString, high: DecString} + +#### Returns + +`Object` + +| Name | Type | +| :----- | :------- | +| `low` | `string` | +| `high` | `string` | + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:123](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L123) + +--- + +### toApiRequest + +▸ **toApiRequest**(): `string`[] + +Return api requests representation witch is felt array + +#### Returns + +`string`[] + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:133](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L133) diff --git a/www/versioned_docs/version-6.24.1/API/classes/CairoUint512.md b/www/versioned_docs/version-6.24.1/API/classes/CairoUint512.md new file mode 100644 index 000000000..a598952f4 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/CairoUint512.md @@ -0,0 +1,296 @@ +--- +id: 'CairoUint512' +title: 'Class: CairoUint512' +sidebar_label: 'CairoUint512' +sidebar_position: 0 +custom_edit_url: null +--- + +## Constructors + +### constructor + +• **new CairoUint512**(`bigNumberish`): [`CairoUint512`](CairoUint512.md) + +Default constructor (Lib usage) + +#### Parameters + +| Name | Type | Description | +| :------------- | :---------------------------------------------------- | :----------------------------------- | +| `bigNumberish` | [`BigNumberish`](../namespaces/types.md#bignumberish) | BigNumberish value representing u512 | + +#### Returns + +[`CairoUint512`](CairoUint512.md) + +#### Defined in + +[src/utils/cairoDataTypes/uint512.ts:30](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint512.ts#L30) + +• **new CairoUint512**(`limb0`, `limb1`, `limb2`, `limb3`): [`CairoUint512`](CairoUint512.md) + +Direct props initialization (Api response) + +#### Parameters + +| Name | Type | +| :------ | :---------------------------------------------------- | +| `limb0` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `limb1` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `limb2` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `limb3` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +[`CairoUint512`](CairoUint512.md) + +#### Defined in + +[src/utils/cairoDataTypes/uint512.ts:34](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint512.ts#L34) + +• **new CairoUint512**(`uint512`): [`CairoUint512`](CairoUint512.md) + +Initialization from Uint512 object + +#### Parameters + +| Name | Type | +| :-------- | :------------------------------------------ | +| `uint512` | [`Uint512`](../interfaces/types.Uint512.md) | + +#### Returns + +[`CairoUint512`](CairoUint512.md) + +#### Defined in + +[src/utils/cairoDataTypes/uint512.ts:43](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint512.ts#L43) + +## Properties + +### abiSelector + +▪ `Static` **abiSelector**: `string` = `'core::integer::u512'` + +#### Defined in + +[src/utils/cairoDataTypes/uint512.ts:24](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint512.ts#L24) + +--- + +### limb0 + +• **limb0**: `bigint` + +#### Defined in + +[src/utils/cairoDataTypes/uint512.ts:16](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint512.ts#L16) + +--- + +### limb1 + +• **limb1**: `bigint` + +#### Defined in + +[src/utils/cairoDataTypes/uint512.ts:18](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint512.ts#L18) + +--- + +### limb2 + +• **limb2**: `bigint` + +#### Defined in + +[src/utils/cairoDataTypes/uint512.ts:20](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint512.ts#L20) + +--- + +### limb3 + +• **limb3**: `bigint` + +#### Defined in + +[src/utils/cairoDataTypes/uint512.ts:22](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint512.ts#L22) + +## Methods + +### validate + +▸ **validate**(`bigNumberish`): `bigint` + +Validate if BigNumberish can be represented as Uint512 + +#### Parameters + +| Name | Type | +| :------------- | :---------------------------------------------------- | +| `bigNumberish` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`bigint` + +#### Defined in + +[src/utils/cairoDataTypes/uint512.ts:84](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint512.ts#L84) + +--- + +### validateProps + +▸ **validateProps**(`limb0`, `limb1`, `limb2`, `limb3`): `Object` + +Validate if limbs can be represented as Uint512 + +#### Parameters + +| Name | Type | +| :------ | :---------------------------------------------------- | +| `limb0` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `limb1` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `limb2` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `limb3` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------- | +| `limb0` | `bigint` | +| `limb1` | `bigint` | +| `limb2` | `bigint` | +| `limb3` | `bigint` | + +#### Defined in + +[src/utils/cairoDataTypes/uint512.ts:94](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint512.ts#L94) + +--- + +### is + +▸ **is**(`bigNumberish`): `boolean` + +Check if BigNumberish can be represented as Uint512 + +#### Parameters + +| Name | Type | +| :------------- | :---------------------------------------------------- | +| `bigNumberish` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`boolean` + +#### Defined in + +[src/utils/cairoDataTypes/uint512.ts:115](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint512.ts#L115) + +--- + +### isAbiType + +▸ **isAbiType**(`abiType`): `boolean` + +Check if provided abi type is this data type + +#### Parameters + +| Name | Type | +| :-------- | :------- | +| `abiType` | `string` | + +#### Returns + +`boolean` + +#### Defined in + +[src/utils/cairoDataTypes/uint512.ts:127](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint512.ts#L127) + +--- + +### toBigInt + +▸ **toBigInt**(): `bigint` + +Return bigint representation + +#### Returns + +`bigint` + +#### Defined in + +[src/utils/cairoDataTypes/uint512.ts:134](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint512.ts#L134) + +--- + +### toUint512HexString + +▸ **toUint512HexString**(): `Object` + +Return Uint512 structure with HexString props +limbx: HexString + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------- | +| `limb0` | `string` | +| `limb1` | `string` | +| `limb2` | `string` | +| `limb3` | `string` | + +#### Defined in + +[src/utils/cairoDataTypes/uint512.ts:142](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint512.ts#L142) + +--- + +### toUint512DecimalString + +▸ **toUint512DecimalString**(): `Object` + +Return Uint512 structure with DecimalString props +limbx DecString + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------- | +| `limb0` | `string` | +| `limb1` | `string` | +| `limb2` | `string` | +| `limb3` | `string` | + +#### Defined in + +[src/utils/cairoDataTypes/uint512.ts:155](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint512.ts#L155) + +--- + +### toApiRequest + +▸ **toApiRequest**(): `string`[] + +Return api requests representation witch is felt array + +#### Returns + +`string`[] + +#### Defined in + +[src/utils/cairoDataTypes/uint512.ts:167](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint512.ts#L167) diff --git a/www/versioned_docs/version-6.24.1/API/classes/CallData.md b/www/versioned_docs/version-6.24.1/API/classes/CallData.md new file mode 100644 index 000000000..1b8c39443 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/CallData.md @@ -0,0 +1,331 @@ +--- +id: 'CallData' +title: 'Class: CallData' +sidebar_label: 'CallData' +sidebar_position: 0 +custom_edit_url: null +--- + +## Constructors + +### constructor + +• **new CallData**(`abi`): [`CallData`](CallData.md) + +#### Parameters + +| Name | Type | +| :---- | :---------------------------------- | +| `abi` | [`Abi`](../namespaces/types.md#abi) | + +#### Returns + +[`CallData`](CallData.md) + +#### Defined in + +[src/utils/calldata/index.ts:52](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/index.ts#L52) + +## Properties + +### abi + +• **abi**: [`Abi`](../namespaces/types.md#abi) + +#### Defined in + +[src/utils/calldata/index.ts:44](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/index.ts#L44) + +--- + +### parser + +• **parser**: `AbiParserInterface` + +#### Defined in + +[src/utils/calldata/index.ts:46](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/index.ts#L46) + +--- + +### structs + +• `Protected` `Readonly` **structs**: [`AbiStructs`](../namespaces/types.md#abistructs) + +#### Defined in + +[src/utils/calldata/index.ts:48](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/index.ts#L48) + +--- + +### enums + +• `Protected` `Readonly` **enums**: [`AbiEnums`](../namespaces/types.md#abienums) + +#### Defined in + +[src/utils/calldata/index.ts:50](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/index.ts#L50) + +## Methods + +### compile + +▸ **compile**(`rawArgs`): [`Calldata`](../namespaces/types.md#calldata) + +Compile contract callData without abi + +#### Parameters + +| Name | Type | Description | +| :-------- | :------------------------------------------ | :--------------------------------------------------------------------------- | +| `rawArgs` | [`RawArgs`](../namespaces/types.md#rawargs) | RawArgs representing cairo method arguments or string array of compiled data | + +#### Returns + +[`Calldata`](../namespaces/types.md#calldata) + +Calldata + +#### Defined in + +[src/utils/calldata/index.ts:165](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/index.ts#L165) + +--- + +### getAbiStruct + +▸ **getAbiStruct**(`abi`): [`AbiStructs`](../namespaces/types.md#abistructs) + +Helper to extract structs from abi + +#### Parameters + +| Name | Type | Description | +| :---- | :---------------------------------- | :---------- | +| `abi` | [`Abi`](../namespaces/types.md#abi) | Abi | + +#### Returns + +[`AbiStructs`](../namespaces/types.md#abistructs) + +AbiStructs - structs from abi + +#### Defined in + +[src/utils/calldata/index.ts:283](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/index.ts#L283) + +--- + +### getAbiEnum + +▸ **getAbiEnum**(`abi`): [`AbiEnums`](../namespaces/types.md#abienums) + +Helper to extract enums from abi + +#### Parameters + +| Name | Type | Description | +| :---- | :---------------------------------- | :---------- | +| `abi` | [`Abi`](../namespaces/types.md#abi) | Abi | + +#### Returns + +[`AbiEnums`](../namespaces/types.md#abienums) + +AbiEnums - enums from abi + +#### Defined in + +[src/utils/calldata/index.ts:300](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/index.ts#L300) + +--- + +### toCalldata + +▸ **toCalldata**(`rawCalldata?`): [`Calldata`](../namespaces/types.md#calldata) + +Helper: Compile HexCalldata | RawCalldata | RawArgs + +#### Parameters + +| Name | Type | Default value | Description | +| :------------ | :------------------------------------------ | :------------ | :------------------------------------ | +| `rawCalldata` | [`RawArgs`](../namespaces/types.md#rawargs) | `[]` | HexCalldata \| RawCalldata \| RawArgs | + +#### Returns + +[`Calldata`](../namespaces/types.md#calldata) + +Calldata + +#### Defined in + +[src/utils/calldata/index.ts:319](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/index.ts#L319) + +--- + +### toHex + +▸ **toHex**(`raw?`): [`HexCalldata`](../namespaces/types.md#hexcalldata) + +Helper: Convert raw to HexCalldata + +#### Parameters + +| Name | Type | Default value | Description | +| :---- | :------------------------------------------ | :------------ | :------------------------------------ | +| `raw` | [`RawArgs`](../namespaces/types.md#rawargs) | `[]` | HexCalldata \| RawCalldata \| RawArgs | + +#### Returns + +[`HexCalldata`](../namespaces/types.md#hexcalldata) + +HexCalldata + +#### Defined in + +[src/utils/calldata/index.ts:328](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/index.ts#L328) + +--- + +### validate + +▸ **validate**(`type`, `method`, `args?`): `void` + +Validate arguments passed to the method as corresponding to the ones in the abi + +#### Parameters + +| Name | Type | Default value | Description | +| :------- | :-------------------------------------------------------- | :------------ | :------------------------------------------------------- | +| `type` | `"CALL"` \| `"DEPLOY"` \| `"INVOKE"` | `undefined` | ValidateType - type of the method | +| `method` | `string` | `undefined` | string - name of the method | +| `args` | [`ArgsOrCalldata`](../namespaces/types.md#argsorcalldata) | `[]` | ArgsOrCalldata - arguments that are passed to the method | + +#### Returns + +`void` + +#### Defined in + +[src/utils/calldata/index.ts:65](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/index.ts#L65) + +--- + +### compile + +▸ **compile**(`method`, `argsCalldata`): [`Calldata`](../namespaces/types.md#calldata) + +Compile contract callData with abi +Parse the calldata by using input fields from the abi for that method + +#### Parameters + +| Name | Type | Description | +| :------------- | :------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `method` | `string` | string - method name | +| `argsCalldata` | [`RawArgs`](../namespaces/types.md#rawargs) | RawArgs - arguments passed to the method. Can be an array of arguments (in the order of abi definition), or an object constructed in conformity with abi (in this case, the parameter can be in a wrong order). | + +#### Returns + +[`Calldata`](../namespaces/types.md#calldata) + +Calldata - parsed arguments in format that contract is expecting + +**`Example`** + +```typescript +const calldata = myCallData.compile('constructor', ['0x34a', [1, 3n]]); +``` + +```typescript +const calldata2 = myCallData.compile('constructor', { list: [1, 3n], balance: '0x34' }); // wrong order is valid +``` + +#### Defined in + +[src/utils/calldata/index.ts:118](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/index.ts#L118) + +--- + +### parse + +▸ **parse**(`method`, `response`): [`Result`](../namespaces/types.md#result) + +Parse elements of the response array and structuring them into response object + +#### Parameters + +| Name | Type | Description | +| :--------- | :--------- | :---------------------------------- | +| `method` | `string` | string - method name | +| `response` | `string`[] | string[] - response from the method | + +#### Returns + +[`Result`](../namespaces/types.md#result) + +Result - parsed response corresponding to the abi + +#### Defined in + +[src/utils/calldata/index.ts:249](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/index.ts#L249) + +--- + +### format + +▸ **format**(`method`, `response`, `format`): [`Result`](../namespaces/types.md#result) + +Format cairo method response data to native js values based on provided format schema + +#### Parameters + +| Name | Type | Description | +| :--------- | :--------- | :------------------------------- | +| `method` | `string` | string - cairo method name | +| `response` | `string`[] | string[] - cairo method response | +| `format` | `object` | object - formatter object schema | + +#### Returns + +[`Result`](../namespaces/types.md#result) + +Result - parsed and formatted response object + +#### Defined in + +[src/utils/calldata/index.ts:273](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/index.ts#L273) + +--- + +### decodeParameters + +▸ **decodeParameters**(`typeCairo`, `response`): [`AllowArray`](../namespaces/types.md#allowarray)<[`Result`](../namespaces/types.md#result)\> + +Parse the elements of a contract response and structure them into one or several Result. +In Cairo 0, arrays are not supported. + +#### Parameters + +| Name | Type | Description | +| :---------- | :----------------------------------------------------------- | :------------------------------------------------------------------ | +| `typeCairo` | [`AllowArray`](../namespaces/types.md#allowarray)<`string`\> | string or string[] - Cairo type name, ex : "hello::hello::UserData" | +| `response` | `string`[] | string[] - serialized data corresponding to typeCairo. | + +#### Returns + +[`AllowArray`](../namespaces/types.md#allowarray)<[`Result`](../namespaces/types.md#result)\> + +Result or Result[] - parsed response corresponding to typeData. + +**`Example`** + +```ts +const res2 = helloCallData.decodeParameters('hello::hello::UserData', ['0x123456', '0x1']); +result = { address: 1193046n, is_claimed: true }; +``` + +#### Defined in + +[src/utils/calldata/index.ts:343](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/index.ts#L343) diff --git a/www/versioned_docs/version-6.24.1/API/classes/Contract.md b/www/versioned_docs/version-6.24.1/API/classes/Contract.md new file mode 100644 index 000000000..46e1bad1c --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/Contract.md @@ -0,0 +1,505 @@ +--- +id: 'Contract' +title: 'Class: Contract' +sidebar_label: 'Contract' +sidebar_position: 0 +custom_edit_url: null +--- + +## Implements + +- [`ContractInterface`](ContractInterface.md) + +## Indexable + +▪ [key: `string`]: [`AsyncContractFunction`](../namespaces/types.md#asynccontractfunction) \| `any` + +## Constructors + +### constructor + +• **new Contract**(`abi`, `address`, `providerOrAccount?`): [`Contract`](Contract.md) + +Contract class to handle contract methods + +#### Parameters + +| Name | Type | Default value | Description | +| :------------------ | :--------------------------------------------------------------------------------------- | :---------------- | :-------------------------------------------- | +| `abi` | [`Abi`](../namespaces/types.md#abi) | `undefined` | Abi of the contract object | +| `address` | `string` | `undefined` | (optional) - address to connect to | +| `providerOrAccount` | [`ProviderInterface`](ProviderInterface.md) \| [`AccountInterface`](AccountInterface.md) | `defaultProvider` | (optional) - Provider or Account to attach to | + +#### Returns + +[`Contract`](Contract.md) + +#### Defined in + +[src/contract/default.ts:153](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L153) + +## Properties + +### abi + +• **abi**: [`Abi`](../namespaces/types.md#abi) + +#### Implementation of + +[ContractInterface](ContractInterface.md).[abi](ContractInterface.md#abi) + +#### Defined in + +[src/contract/default.ts:122](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L122) + +--- + +### address + +• **address**: `string` + +#### Implementation of + +[ContractInterface](ContractInterface.md).[address](ContractInterface.md#address) + +#### Defined in + +[src/contract/default.ts:124](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L124) + +--- + +### providerOrAccount + +• **providerOrAccount**: [`ProviderInterface`](ProviderInterface.md) \| [`AccountInterface`](AccountInterface.md) + +#### Implementation of + +[ContractInterface](ContractInterface.md).[providerOrAccount](ContractInterface.md#provideroraccount) + +#### Defined in + +[src/contract/default.ts:126](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L126) + +--- + +### deployTransactionHash + +• `Optional` **deployTransactionHash**: `string` + +#### Implementation of + +[ContractInterface](ContractInterface.md).[deployTransactionHash](ContractInterface.md#deploytransactionhash) + +#### Defined in + +[src/contract/default.ts:128](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L128) + +--- + +### structs + +• `Protected` `Readonly` **structs**: `Object` + +#### Index signature + +▪ [name: `string`]: [`AbiStruct`](../namespaces/types.md#abistruct) + +#### Defined in + +[src/contract/default.ts:130](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L130) + +--- + +### events + +• `Protected` `Readonly` **events**: [`AbiEvents`](../namespaces/types.md#abievents) + +#### Defined in + +[src/contract/default.ts:132](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L132) + +--- + +### functions + +• `Readonly` **functions**: `Object` + +#### Index signature + +▪ [name: `string`]: [`AsyncContractFunction`](../namespaces/types.md#asynccontractfunction) + +#### Implementation of + +[ContractInterface](ContractInterface.md).[functions](ContractInterface.md#functions) + +#### Defined in + +[src/contract/default.ts:134](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L134) + +--- + +### callStatic + +• `Readonly` **callStatic**: `Object` + +#### Index signature + +▪ [name: `string`]: [`AsyncContractFunction`](../namespaces/types.md#asynccontractfunction) + +#### Implementation of + +[ContractInterface](ContractInterface.md).[callStatic](ContractInterface.md#callstatic) + +#### Defined in + +[src/contract/default.ts:136](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L136) + +--- + +### populateTransaction + +• `Readonly` **populateTransaction**: `Object` + +#### Index signature + +▪ [name: `string`]: [`ContractFunction`](../namespaces/types.md#contractfunction) + +#### Implementation of + +[ContractInterface](ContractInterface.md).[populateTransaction](ContractInterface.md#populatetransaction) + +#### Defined in + +[src/contract/default.ts:138](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L138) + +--- + +### estimateFee + +• `Readonly` **estimateFee**: `Object` + +#### Index signature + +▪ [name: `string`]: [`ContractFunction`](../namespaces/types.md#contractfunction) + +#### Implementation of + +[ContractInterface](ContractInterface.md).[estimateFee](ContractInterface.md#estimatefee) + +#### Defined in + +[src/contract/default.ts:140](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L140) + +--- + +### callData + +• `Private` **callData**: [`CallData`](CallData.md) + +#### Defined in + +[src/contract/default.ts:144](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L144) + +## Methods + +### attach + +▸ **attach**(`address`): `void` + +Saves the address of the contract deployed on network that will be used for interaction + +#### Parameters + +| Name | Type | Description | +| :-------- | :------- | :---------------------- | +| `address` | `string` | address of the contract | + +#### Returns + +`void` + +#### Implementation of + +[ContractInterface](ContractInterface.md).[attach](ContractInterface.md#attach) + +#### Defined in + +[src/contract/default.ts:209](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L209) + +--- + +### connect + +▸ **connect**(`providerOrAccount`): `void` + +Attaches to new Provider or Account + +#### Parameters + +| Name | Type | Description | +| :------------------ | :--------------------------------------------------------------------------------------- | :----------------------------------- | +| `providerOrAccount` | [`ProviderInterface`](ProviderInterface.md) \| [`AccountInterface`](AccountInterface.md) | new Provider or Account to attach to | + +#### Returns + +`void` + +#### Implementation of + +[ContractInterface](ContractInterface.md).[connect](ContractInterface.md#connect) + +#### Defined in + +[src/contract/default.ts:213](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L213) + +--- + +### deployed + +▸ **deployed**(): `Promise`<[`Contract`](Contract.md)\> + +Resolves when contract is deployed on the network or when no deployment transaction is found + +#### Returns + +`Promise`<[`Contract`](Contract.md)\> + +Promise that resolves when contract is deployed on the network or when no deployment transaction is found + +**`Throws`** + +When deployment fails + +#### Implementation of + +[ContractInterface](ContractInterface.md).[deployed](ContractInterface.md#deployed) + +#### Defined in + +[src/contract/default.ts:217](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L217) + +--- + +### call + +▸ **call**(`method`, `args?`, `«destructured»?`): `Promise`<[`Result`](../namespaces/types.md#result)\> + +Calls a method on a contract + +#### Parameters + +| Name | Type | Default value | Description | +| :--------------- | :-------------------------------------------------------- | :------------ | :---------------------------------- | +| `method` | `string` | `undefined` | name of the method | +| `args` | [`ArgsOrCalldata`](../namespaces/types.md#argsorcalldata) | `[]` | Array of the arguments for the call | +| `«destructured»` | [`CallOptions`](../namespaces/types.md#calloptions) | `{}` | optional blockIdentifier | + +#### Returns + +`Promise`<[`Result`](../namespaces/types.md#result)\> + +Result of the call as an array with key value pars + +#### Implementation of + +[ContractInterface](ContractInterface.md).[call](ContractInterface.md#call) + +#### Defined in + +[src/contract/default.ts:225](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L225) + +--- + +### invoke + +▸ **invoke**(`method`, `args?`, `«destructured»?`): `Promise`<\{ `transaction_hash`: `string` }\> + +Invokes a method on a contract + +#### Parameters + +| Name | Type | Default value | Description | +| :--------------- | :-------------------------------------------------------- | :------------ | :------------------------------------------------ | +| `method` | `string` | `undefined` | name of the method | +| `args` | [`ArgsOrCalldata`](../namespaces/types.md#argsorcalldata) | `[]` | Array of the arguments for the invoke or Calldata | +| `«destructured»` | [`InvokeOptions`](../namespaces/types.md#invokeoptions) | `{}` | | + +#### Returns + +`Promise`<\{ `transaction_hash`: `string` }\> + +Add Transaction Response + +#### Implementation of + +[ContractInterface](ContractInterface.md).[invoke](ContractInterface.md#invoke) + +#### Defined in + +[src/contract/default.ts:266](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L266) + +--- + +### estimate + +▸ **estimate**(`method`, `args?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimates a method on a contract + +#### Parameters + +| Name | Type | Default value | Description | +| :------- | :-------------------------------------------------------- | :------------ | :---------------------------------------------- | +| `method` | `string` | `undefined` | name of the method | +| `args` | [`ArgsOrCalldata`](../namespaces/types.md#argsorcalldata) | `[]` | Array of the arguments for the call or Calldata | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +#### Implementation of + +[ContractInterface](ContractInterface.md).[estimate](ContractInterface.md#estimate) + +#### Defined in + +[src/contract/default.ts:308](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L308) + +--- + +### populate + +▸ **populate**(`method`, `args?`): [`Call`](../namespaces/types.md#call) + +Calls a method on a contract + +#### Parameters + +| Name | Type | Default value | Description | +| :------- | :------------------------------------------ | :------------ | :---------------------------------------------- | +| `method` | `string` | `undefined` | name of the method | +| `args` | [`RawArgs`](../namespaces/types.md#rawargs) | `[]` | Array of the arguments for the call or Calldata | + +#### Returns + +[`Call`](../namespaces/types.md#call) + +Invocation object + +#### Implementation of + +[ContractInterface](ContractInterface.md).[populate](ContractInterface.md#populate) + +#### Defined in + +[src/contract/default.ts:322](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L322) + +--- + +### parseEvents + +▸ **parseEvents**(`receipt`): [`ParsedEvents`](../namespaces/types.md#parsedevents) + +Parse contract events of a GetTransactionReceiptResponse received from waitForTransaction. Based on contract's abi + +#### Parameters + +| Name | Type | Description | +| :-------- | :----------------------------------------------------------------------------- | :------------------ | +| `receipt` | [`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse) | transaction receipt | + +#### Returns + +[`ParsedEvents`](../namespaces/types.md#parsedevents) + +Events parsed + +#### Implementation of + +[ContractInterface](ContractInterface.md).[parseEvents](ContractInterface.md#parseevents) + +#### Defined in + +[src/contract/default.ts:331](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L331) + +--- + +### isCairo1 + +▸ **isCairo1**(): `boolean` + +tells if the contract comes from a Cairo 1 contract + +#### Returns + +`boolean` + +TRUE if the contract comes from a Cairo1 contract + +**`Example`** + +```typescript +const isCairo1: boolean = myContract.isCairo1(); +``` + +#### Implementation of + +[ContractInterface](ContractInterface.md).[isCairo1](ContractInterface.md#iscairo1) + +#### Defined in + +[src/contract/default.ts:360](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L360) + +--- + +### getVersion + +▸ **getVersion**(): `Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +Retrieves the version of the contract (cairo version & compiler version) + +#### Returns + +`Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +#### Implementation of + +[ContractInterface](ContractInterface.md).[getVersion](ContractInterface.md#getversion) + +#### Defined in + +[src/contract/default.ts:364](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L364) + +--- + +### typedv2 + +▸ **typedv2**<`TAbi`\>(`tAbi`): [`TypedContractV2`](../modules.md#typedcontractv2)<`TAbi`\> + +Returns a typed instance of ContractV2 based on the supplied ABI. + +#### Type parameters + +| Name | Type | +| :----- | :------------------------------------------------------------------------------------------------------------------------------ | +| `TAbi` | extends readonly (`AbiImpl` \| `AbiFunction` \| `AbiInterface` \| `AbiConstructor` \| `AbiEvent` \| `AbiStruct` \| `AbiEnum`)[] | + +#### Parameters + +| Name | Type | Description | +| :----- | :----- | :----------------------------------------------------- | +| `tAbi` | `TAbi` | The ABI (Abstract Binary Interface) of the ContractV2. | + +#### Returns + +[`TypedContractV2`](../modules.md#typedcontractv2)<`TAbi`\> + +- A typed instance of ContractV2. + +#### Implementation of + +[ContractInterface](ContractInterface.md).[typedv2](ContractInterface.md#typedv2) + +#### Defined in + +[src/contract/default.ts:368](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L368) diff --git a/www/versioned_docs/version-6.24.1/API/classes/ContractFactory.md b/www/versioned_docs/version-6.24.1/API/classes/ContractFactory.md new file mode 100644 index 000000000..d127a9a2e --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/ContractFactory.md @@ -0,0 +1,165 @@ +--- +id: 'ContractFactory' +title: 'Class: ContractFactory' +sidebar_label: 'ContractFactory' +sidebar_position: 0 +custom_edit_url: null +--- + +## Constructors + +### constructor + +• **new ContractFactory**(`params`): [`ContractFactory`](ContractFactory.md) + +#### Parameters + +| Name | Type | Description | +| :------- | :------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `params` | [`ContractFactoryParams`](../modules.md#contractfactoryparams) | CFParams - compiledContract: CompiledContract; - account: AccountInterface; - casm?: CairoAssembly; - classHash?: string; - compiledClassHash?: string; - abi?: Abi; | + +#### Returns + +[`ContractFactory`](ContractFactory.md) + +#### Defined in + +[src/contract/contractFactory.ts:47](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/contractFactory.ts#L47) + +## Properties + +### compiledContract + +• **compiledContract**: [`CompiledContract`](../namespaces/types.md#compiledcontract) + +#### Defined in + +[src/contract/contractFactory.ts:24](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/contractFactory.ts#L24) + +--- + +### account + +• **account**: [`AccountInterface`](AccountInterface.md) + +#### Defined in + +[src/contract/contractFactory.ts:26](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/contractFactory.ts#L26) + +--- + +### abi + +• **abi**: [`Abi`](../namespaces/types.md#abi) + +#### Defined in + +[src/contract/contractFactory.ts:28](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/contractFactory.ts#L28) + +--- + +### classHash + +• `Optional` **classHash**: `string` + +#### Defined in + +[src/contract/contractFactory.ts:30](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/contractFactory.ts#L30) + +--- + +### casm + +• `Optional` **casm**: [`CairoAssembly`](../namespaces/types.md#cairoassembly) + +#### Defined in + +[src/contract/contractFactory.ts:32](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/contractFactory.ts#L32) + +--- + +### compiledClassHash + +• `Optional` **compiledClassHash**: `string` + +#### Defined in + +[src/contract/contractFactory.ts:34](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/contractFactory.ts#L34) + +--- + +### CallData + +• `Private` **CallData**: [`CallData`](CallData.md) + +#### Defined in + +[src/contract/contractFactory.ts:36](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/contractFactory.ts#L36) + +## Methods + +### deploy + +▸ **deploy**(`...args`): `Promise`<[`Contract`](Contract.md)\> + +Deploys contract and returns new instance of the Contract + +If contract is not declared it will first declare it, and then deploy + +#### Parameters + +| Name | Type | +| :-------- | :------------------------------------------------------------------------------ | +| `...args` | [`ArgsOrCalldataWithOptions`](../namespaces/types.md#argsorcalldatawithoptions) | + +#### Returns + +`Promise`<[`Contract`](Contract.md)\> + +#### Defined in + +[src/contract/contractFactory.ts:62](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/contractFactory.ts#L62) + +--- + +### connect + +▸ **connect**(`account`): [`ContractFactory`](ContractFactory.md) + +Attaches to new Account + +#### Parameters + +| Name | Type | Description | +| :-------- | :---------------------------------------- | :----------------------- | +| `account` | [`AccountInterface`](AccountInterface.md) | new Account to attach to | + +#### Returns + +[`ContractFactory`](ContractFactory.md) + +#### Defined in + +[src/contract/contractFactory.ts:101](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/contractFactory.ts#L101) + +--- + +### attach + +▸ **attach**(`address`): [`Contract`](Contract.md) + +Attaches current abi and account to the new address + +#### Parameters + +| Name | Type | +| :-------- | :------- | +| `address` | `string` | + +#### Returns + +[`Contract`](Contract.md) + +#### Defined in + +[src/contract/contractFactory.ts:109](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/contractFactory.ts#L109) diff --git a/www/versioned_docs/version-6.24.1/API/classes/ContractInterface.md b/www/versioned_docs/version-6.24.1/API/classes/ContractInterface.md new file mode 100644 index 000000000..5fe22737a --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/ContractInterface.md @@ -0,0 +1,383 @@ +--- +id: 'ContractInterface' +title: 'Class: ContractInterface' +sidebar_label: 'ContractInterface' +sidebar_position: 0 +custom_edit_url: null +--- + +## Implemented by + +- [`Contract`](Contract.md) + +## Indexable + +▪ [key: `string`]: [`AsyncContractFunction`](../namespaces/types.md#asynccontractfunction) \| `any` + +## Constructors + +### constructor + +• **new ContractInterface**(): [`ContractInterface`](ContractInterface.md) + +#### Returns + +[`ContractInterface`](ContractInterface.md) + +## Properties + +### abi + +• `Abstract` **abi**: [`Abi`](../namespaces/types.md#abi) + +#### Defined in + +[src/contract/interface.ts:49](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/interface.ts#L49) + +--- + +### address + +• `Abstract` **address**: `string` + +#### Defined in + +[src/contract/interface.ts:51](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/interface.ts#L51) + +--- + +### providerOrAccount + +• `Abstract` **providerOrAccount**: [`ProviderInterface`](ProviderInterface.md) \| [`AccountInterface`](AccountInterface.md) + +#### Defined in + +[src/contract/interface.ts:53](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/interface.ts#L53) + +--- + +### deployTransactionHash + +• `Optional` `Abstract` **deployTransactionHash**: `string` + +#### Defined in + +[src/contract/interface.ts:55](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/interface.ts#L55) + +--- + +### functions + +• `Readonly` **functions**: `Object` + +#### Index signature + +▪ [name: `string`]: [`AsyncContractFunction`](../namespaces/types.md#asynccontractfunction) + +#### Defined in + +[src/contract/interface.ts:57](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/interface.ts#L57) + +--- + +### callStatic + +• `Readonly` **callStatic**: `Object` + +#### Index signature + +▪ [name: `string`]: [`AsyncContractFunction`](../namespaces/types.md#asynccontractfunction) + +#### Defined in + +[src/contract/interface.ts:59](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/interface.ts#L59) + +--- + +### populateTransaction + +• `Readonly` **populateTransaction**: `Object` + +#### Index signature + +▪ [name: `string`]: [`ContractFunction`](../namespaces/types.md#contractfunction) + +#### Defined in + +[src/contract/interface.ts:61](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/interface.ts#L61) + +--- + +### estimateFee + +• `Readonly` **estimateFee**: `Object` + +#### Index signature + +▪ [name: `string`]: [`ContractFunction`](../namespaces/types.md#contractfunction) + +#### Defined in + +[src/contract/interface.ts:63](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/interface.ts#L63) + +## Methods + +### attach + +▸ **attach**(`address`): `void` + +Saves the address of the contract deployed on network that will be used for interaction + +#### Parameters + +| Name | Type | Description | +| :-------- | :------- | :---------------------- | +| `address` | `string` | address of the contract | + +#### Returns + +`void` + +#### Defined in + +[src/contract/interface.ts:72](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/interface.ts#L72) + +--- + +### connect + +▸ **connect**(`providerOrAccount`): `void` + +Attaches to new Provider or Account + +#### Parameters + +| Name | Type | Description | +| :------------------ | :--------------------------------------------------------------------------------------- | :----------------------------------- | +| `providerOrAccount` | [`ProviderInterface`](ProviderInterface.md) \| [`AccountInterface`](AccountInterface.md) | new Provider or Account to attach to | + +#### Returns + +`void` + +#### Defined in + +[src/contract/interface.ts:79](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/interface.ts#L79) + +--- + +### deployed + +▸ **deployed**(): `Promise`<[`ContractInterface`](ContractInterface.md)\> + +Resolves when contract is deployed on the network or when no deployment transaction is found + +#### Returns + +`Promise`<[`ContractInterface`](ContractInterface.md)\> + +Promise that resolves when contract is deployed on the network or when no deployment transaction is found + +**`Throws`** + +When deployment fails + +#### Defined in + +[src/contract/interface.ts:87](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/interface.ts#L87) + +--- + +### call + +▸ **call**(`method`, `args?`, `options?`): `Promise`<[`Result`](../namespaces/types.md#result)\> + +Calls a method on a contract + +#### Parameters + +| Name | Type | Description | +| :--------- | :-------------------------------------------------------- | :---------------------------------- | +| `method` | `string` | name of the method | +| `args?` | [`ArgsOrCalldata`](../namespaces/types.md#argsorcalldata) | Array of the arguments for the call | +| `options?` | [`CallOptions`](../namespaces/types.md#calloptions) | optional blockIdentifier | + +#### Returns + +`Promise`<[`Result`](../namespaces/types.md#result)\> + +Result of the call as an array with key value pars + +#### Defined in + +[src/contract/interface.ts:97](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/interface.ts#L97) + +--- + +### invoke + +▸ **invoke**(`method`, `args?`, `options?`): `Promise`<\{ `transaction_hash`: `string` }\> + +Invokes a method on a contract + +#### Parameters + +| Name | Type | Description | +| :--------- | :-------------------------------------------------------- | :------------------------------------------------ | +| `method` | `string` | name of the method | +| `args?` | [`ArgsOrCalldata`](../namespaces/types.md#argsorcalldata) | Array of the arguments for the invoke or Calldata | +| `options?` | [`InvokeOptions`](../namespaces/types.md#invokeoptions) | | + +#### Returns + +`Promise`<\{ `transaction_hash`: `string` }\> + +Add Transaction Response + +#### Defined in + +[src/contract/interface.ts:111](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/interface.ts#L111) + +--- + +### estimate + +▸ **estimate**(`method`, `args?`, `options?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimates a method on a contract + +#### Parameters + +| Name | Type | Description | +| :------------------------- | :---------------------------------------------------------- | :---------------------------------------------- | +| `method` | `string` | name of the method | +| `args?` | [`ArgsOrCalldata`](../namespaces/types.md#argsorcalldata) | Array of the arguments for the call or Calldata | +| `options?` | `Object` | optional blockIdentifier | +| `options.blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | - | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +#### Defined in + +[src/contract/interface.ts:124](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/interface.ts#L124) + +--- + +### populate + +▸ **populate**(`method`, `args?`): [`Invocation`](../namespaces/types.md#invocation) + +Calls a method on a contract + +#### Parameters + +| Name | Type | Description | +| :------- | :-------------------------------------------------------- | :---------------------------------------------- | +| `method` | `string` | name of the method | +| `args?` | [`ArgsOrCalldata`](../namespaces/types.md#argsorcalldata) | Array of the arguments for the call or Calldata | + +#### Returns + +[`Invocation`](../namespaces/types.md#invocation) + +Invocation object + +#### Defined in + +[src/contract/interface.ts:139](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/interface.ts#L139) + +--- + +### parseEvents + +▸ **parseEvents**(`receipt`): [`ParsedEvents`](../namespaces/types.md#parsedevents) + +Parse contract events of a GetTransactionReceiptResponse received from waitForTransaction. Based on contract's abi + +#### Parameters + +| Name | Type | Description | +| :-------- | :----------------------------------------------------------------------------- | :------------------ | +| `receipt` | [`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse) | transaction receipt | + +#### Returns + +[`ParsedEvents`](../namespaces/types.md#parsedevents) + +Events parsed + +#### Defined in + +[src/contract/interface.ts:147](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/interface.ts#L147) + +--- + +### isCairo1 + +▸ **isCairo1**(): `boolean` + +tells if the contract comes from a Cairo 1 contract + +#### Returns + +`boolean` + +TRUE if the contract comes from a Cairo1 contract + +**`Example`** + +```typescript +const isCairo1: boolean = myContract.isCairo1(); +``` + +#### Defined in + +[src/contract/interface.ts:158](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/interface.ts#L158) + +--- + +### getVersion + +▸ **getVersion**(): `Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +Retrieves the version of the contract (cairo version & compiler version) + +#### Returns + +`Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +#### Defined in + +[src/contract/interface.ts:163](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/interface.ts#L163) + +--- + +### typedv2 + +▸ **typedv2**<`TAbi`\>(`tAbi`): `TypedContractV2`<`TAbi`\> + +Returns a typed instance of ContractV2 based on the supplied ABI. + +#### Type parameters + +| Name | Type | +| :----- | :------------------------------------------------------------------------------------------------------------------------------ | +| `TAbi` | extends readonly (`AbiImpl` \| `AbiFunction` \| `AbiInterface` \| `AbiConstructor` \| `AbiEvent` \| `AbiStruct` \| `AbiEnum`)[] | + +#### Parameters + +| Name | Type | Description | +| :----- | :----- | :----------------------------------------------------- | +| `tAbi` | `TAbi` | The ABI (Abstract Binary Interface) of the ContractV2. | + +#### Returns + +`TypedContractV2`<`TAbi`\> + +- A typed instance of ContractV2. + +#### Defined in + +[src/contract/interface.ts:171](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/interface.ts#L171) diff --git a/www/versioned_docs/version-6.24.1/API/classes/CustomError.md b/www/versioned_docs/version-6.24.1/API/classes/CustomError.md new file mode 100644 index 000000000..d209f3ddb --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/CustomError.md @@ -0,0 +1,171 @@ +--- +id: 'CustomError' +title: 'Class: CustomError' +sidebar_label: 'CustomError' +sidebar_position: 0 +custom_edit_url: null +--- + +## Hierarchy + +- `Error` + + ↳ **`CustomError`** + + ↳↳ [`LibraryError`](LibraryError.md) + +## Constructors + +### constructor + +• **new CustomError**(`message?`): [`CustomError`](CustomError.md) + +#### Parameters + +| Name | Type | +| :--------- | :------- | +| `message?` | `string` | + +#### Returns + +[`CustomError`](CustomError.md) + +#### Overrides + +Error.constructor + +#### Defined in + +[src/utils/errors/index.ts:23](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/errors/index.ts#L23) + +## Properties + +### prepareStackTrace + +▪ `Static` `Optional` **prepareStackTrace**: (`err`: `Error`, `stackTraces`: `CallSite`[]) => `any` + +#### Type declaration + +▸ (`err`, `stackTraces`): `any` + +Optional override for formatting stack traces + +##### Parameters + +| Name | Type | +| :------------ | :----------- | +| `err` | `Error` | +| `stackTraces` | `CallSite`[] | + +##### Returns + +`any` + +**`See`** + +https://v8.dev/docs/stack-trace-api#customizing-stack-traces + +#### Inherited from + +Error.prepareStackTrace + +#### Defined in + +node_modules/@types/node/globals.d.ts:143 + +--- + +### stackTraceLimit + +▪ `Static` **stackTraceLimit**: `number` + +#### Inherited from + +Error.stackTraceLimit + +#### Defined in + +node_modules/@types/node/globals.d.ts:145 + +--- + +### name + +• **name**: `string` + +#### Overrides + +Error.name + +#### Defined in + +[src/utils/errors/index.ts:21](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/errors/index.ts#L21) + +--- + +### message + +• **message**: `string` + +#### Inherited from + +Error.message + +#### Defined in + +www/node_modules/typescript/lib/lib.es5.d.ts:1055 + +--- + +### stack + +• `Optional` **stack**: `string` + +#### Inherited from + +Error.stack + +#### Defined in + +www/node_modules/typescript/lib/lib.es5.d.ts:1056 + +--- + +### cause + +• `Optional` **cause**: `unknown` + +#### Inherited from + +Error.cause + +#### Defined in + +www/node_modules/typescript/lib/lib.es2022.error.d.ts:24 + +## Methods + +### captureStackTrace + +▸ **captureStackTrace**(`targetObject`, `constructorOpt?`): `void` + +Create .stack property on a target object + +#### Parameters + +| Name | Type | +| :---------------- | :--------- | +| `targetObject` | `object` | +| `constructorOpt?` | `Function` | + +#### Returns + +`void` + +#### Inherited from + +Error.captureStackTrace + +#### Defined in + +node_modules/@types/node/globals.d.ts:136 diff --git a/www/versioned_docs/version-6.24.1/API/classes/EthSigner.md b/www/versioned_docs/version-6.24.1/API/classes/EthSigner.md new file mode 100644 index 000000000..69050be1d --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/EthSigner.md @@ -0,0 +1,301 @@ +--- +id: 'EthSigner' +title: 'Class: EthSigner' +sidebar_label: 'EthSigner' +sidebar_position: 0 +custom_edit_url: null +--- + +Signer for accounts using Ethereum signature + +## Implements + +- [`SignerInterface`](SignerInterface.md) + +## Constructors + +### constructor + +• **new EthSigner**(`pk?`): [`EthSigner`](EthSigner.md) + +#### Parameters + +| Name | Type | +| :--- | :----------------------- | +| `pk` | `string` \| `Uint8Array` | + +#### Returns + +[`EthSigner`](EthSigner.md) + +#### Defined in + +[src/signer/ethSigner.ts:42](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ethSigner.ts#L42) + +## Properties + +### pk + +• `Protected` **pk**: `string` + +#### Defined in + +[src/signer/ethSigner.ts:40](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ethSigner.ts#L40) + +## Methods + +### getPubKey + +▸ **getPubKey**(): `Promise`<`string`\> + +provides the Ethereum full public key (without parity prefix) + +#### Returns + +`Promise`<`string`\> + +an hex string : 64 first characters are Point X coordinate. 64 last characters are Point Y coordinate. + +#### Implementation of + +[SignerInterface](SignerInterface.md).[getPubKey](SignerInterface.md#getpubkey) + +#### Defined in + +[src/signer/ethSigner.ts:53](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ethSigner.ts#L53) + +--- + +### signMessage + +▸ **signMessage**(`typedData`, `accountAddress`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Signs a JSON object for off-chain usage with the private key and returns the signature. +This adds a message prefix so it can't be interchanged with transactions + +#### Parameters + +| Name | Type | Description | +| :--------------- | :----------------------------------------------------------------------- | :---------------------------------- | +| `typedData` | [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) | JSON object to be signed | +| `accountAddress` | `string` | Hex string of the account's address | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +the signature of the message + +**`Example`** + +```typescript +const mySigner = new Signer('0x123'); +const myTypedData: TypedData = { + domain: { name: 'Example DApp', chainId: constants.StarknetChainId.SN_SEPOLIA, version: '0.0.3' }, + types: { + StarkNetDomain: [ + { name: 'name', type: 'string' }, + { name: 'chainId', type: 'felt' }, + { name: 'version', type: 'string' }, + ], + Message: [{ name: 'message', type: 'felt' }], + }, + primaryType: 'Message', + message: { message: '1234' }, +}; +const result = await mySigner.signMessage( + myTypedData, + '0x5d08a4e9188429da4e993c9bf25aafe5cd491ee2b501505d4d059f0c938f82d' +); +// result = Signature {r: 684915484701699003335398790608214855489903651271362390249153620883122231253n, +// s: 1399150959912500412309102776989465580949387575375484933432871778355496929189n, recovery: 1} +``` + +#### Implementation of + +[SignerInterface](SignerInterface.md).[signMessage](SignerInterface.md#signmessage) + +#### Defined in + +[src/signer/ethSigner.ts:59](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ethSigner.ts#L59) + +--- + +### signTransaction + +▸ **signTransaction**(`transactions`, `details`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Signs transactions with the private key and returns the signature + +#### Parameters + +| Name | Type | Description | +| :------------- | :---------------------------------------------------------------------------- | :------------------------------ | +| `transactions` | [`Call`](../namespaces/types.md#call)[] | array of Call objects | +| `details` | [`InvocationsSignerDetails`](../namespaces/types.md#invocationssignerdetails) | InvocationsSignerDetails object | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +the signature of the transaction + +**`Example`** + +```typescript +const mySigner = new Signer('0x123'); +const calls: Call[] = [ + { + contractAddress: '0x1234567890123456789012345678901234567890', + entrypoint: 'functionName', + calldata: [1, 2, 3], + }, +]; +const transactionsDetail: InvocationsSignerDetails = { + walletAddress: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e', + chainId: constants.StarknetChainId.SN_MAIN, + cairoVersion: '1', + maxFee: '0x1234567890abcdef', + version: '0x0', + nonce: 1, +}; +const result = await mySigner.signTransaction(calls, transactionsDetail); +// result = Signature {r: 304910226421970384958146916800275294114105560641204815169249090836676768876n, +// s: 1072798866000813654190523783606274062837012608648308896325315895472901074693n, recovery: 0} +``` + +#### Implementation of + +[SignerInterface](SignerInterface.md).[signTransaction](SignerInterface.md#signtransaction) + +#### Defined in + +[src/signer/ethSigner.ts:68](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ethSigner.ts#L68) + +--- + +### signDeployAccountTransaction + +▸ **signDeployAccountTransaction**(`details`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Signs a DEPLOY_ACCOUNT transaction with the private key and returns the signature + +#### Parameters + +| Name | Type | Description | +| :-------- | :-------------------------------------------------------------------------------- | :---------------------------- | +| `details` | [`DeployAccountSignerDetails`](../namespaces/types.md#deployaccountsignerdetails) | to deploy an account contract | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +the signature of the transaction to deploy an account + +**`Example`** + +```typescript +const mySigner = new Signer('0x123'); +const myDeployAcc: DeployAccountSignerDetails = { + contractAddress: '0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641', + version: '0x2', + chainId: constants.StarknetChainId.SN_SEPOLIA, + classHash: '0x5f3614e8671257aff9ac38e929c74d65b02d460ae966cd826c9f04a7fa8e0d4', + constructorCalldata: [1, 2], + addressSalt: 1234, + nonce: 45, + maxFee: 10 ** 15, + tip: 0, + paymasterData: [], + accountDeploymentData: [], + nonceDataAvailabilityMode: RPC.EDataAvailabilityMode.L1, + feeDataAvailabilityMode: RPC.EDataAvailabilityMode.L1, + resourceBounds: stark.estimateFeeToBounds(constants.ZERO), +}; +const result = await mySigner.signDeployAccountTransaction(myDeployAcc); +// result = Signature {r: 2871311234341436528393212130310036951068553852419934781736214693308640202748n, +// s: 1746271646048888422437132495446973163454853863041370993384284773665861377605n, recovery: 1} +``` + +#### Implementation of + +[SignerInterface](SignerInterface.md).[signDeployAccountTransaction](SignerInterface.md#signdeployaccounttransaction) + +#### Defined in + +[src/signer/ethSigner.ts:104](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ethSigner.ts#L104) + +--- + +### signDeclareTransaction + +▸ **signDeclareTransaction**(`details`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Signs a DECLARE transaction with the private key and returns the signature + +#### Parameters + +| Name | Type | Description | +| :-------- | :-------------------------------------------------------------------- | :----------------- | +| `details` | [`DeclareSignerDetails`](../namespaces/types.md#declaresignerdetails) | to declare a class | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +the signature of the transaction to declare a class + +**`Example`** + +```typescript +const mySigner = new Signer('0x123'); +const myDeclare: DeclareSignerDetails = { + version: '0x2', + chainId: constants.StarknetChainId.SN_SEPOLIA, + senderAddress: '0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641', + classHash: '0x5f3614e8671257aff9ac38e929c74d65b02d460ae966cd826c9f04a7fa8e0d4', + nonce: 45, + maxFee: 10 ** 15, + tip: 0, + paymasterData: [], + accountDeploymentData: [], + nonceDataAvailabilityMode: RPC.EDataAvailabilityMode.L1, + feeDataAvailabilityMode: RPC.EDataAvailabilityMode.L1, + resourceBounds: stark.estimateFeeToBounds(constants.ZERO), +}; +const result = await mySigner.signDeclareTransaction(myDeclare); +// result = Signature {r: 2432056944313955951711774394836075930010416436707488863728289188289211995670n, +// s: 3407649393310177489888603098175002856596469926897298636282244411990343146307n, recovery: 1} +``` + +#### Implementation of + +[SignerInterface](SignerInterface.md).[signDeclareTransaction](SignerInterface.md#signdeclaretransaction) + +#### Defined in + +[src/signer/ethSigner.ts:139](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ethSigner.ts#L139) + +--- + +### formatEthSignature + +▸ **formatEthSignature**(`ethSignature`): [`ArraySignatureType`](../namespaces/types.md#arraysignaturetype) + +Serialize the signature in conformity with starknet::eth_signature::Signature + +#### Parameters + +| Name | Type | Description | +| :------------- | :--------------------------------------------------------------------------------- | :-------------------------------------------- | +| `ethSignature` | [`RecoveredSignatureType`](../namespaces/ec.weierstrass.md#recoveredsignaturetype) | secp256k1 signature from Noble curves library | + +#### Returns + +[`ArraySignatureType`](../namespaces/types.md#arraysignaturetype) + +an array of felts, representing a Cairo Eth Signature. + +#### Defined in + +[src/signer/ethSigner.ts:175](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ethSigner.ts#L175) diff --git a/www/versioned_docs/version-6.24.1/API/classes/LedgerSigner111.md b/www/versioned_docs/version-6.24.1/API/classes/LedgerSigner111.md new file mode 100644 index 000000000..0b6169cf6 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/LedgerSigner111.md @@ -0,0 +1,436 @@ +--- +id: 'LedgerSigner111' +title: 'Class: LedgerSigner111' +sidebar_label: 'LedgerSigner111' +sidebar_position: 0 +custom_edit_url: null +--- + +Signer for accounts using a Ledger Nano S+/X signature (Starknet Ledger APP version 1.1.1) + +The Ledger has to be connected, unlocked and the Starknet APP has to be selected prior of use of this class. + +## Type parameters + +| Name | Type | +| :---------- | :-------------------------------------- | +| `Transport` | extends `Record`<`any`, `any`\> = `any` | + +## Hierarchy + +- **`LedgerSigner111`** + + ↳ [`LedgerSigner221`](LedgerSigner221.md) + +## Implements + +- [`SignerInterface`](SignerInterface.md) + +## Constructors + +### constructor + +• **new LedgerSigner111**<`Transport`\>(`transport`, `accountID`, `eip2645application?`, `pathFunction?`): [`LedgerSigner111`](LedgerSigner111.md)<`Transport`\> + +constructor of the LedgerSigner class. + +#### Type parameters + +| Name | Type | +| :---------- | :-------------------------------------- | +| `Transport` | extends `Record`<`any`, `any`\> = `any` | + +#### Parameters + +| Name | Type | Default value | Description | +| :-------------------- | :---------------------------------------------------------------------- | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------ | +| `transport` | `Transport` | `undefined` | 5 transports are available to handle USB, bluetooth, Node, Web, Mobile. See Guides for more details. | +| `accountID` | `number` | `undefined` | ID of Ledger Nano (can handle 2\*\*31 accounts). | +| `eip2645application?` | `string` | `'LedgerW'` | A wallet is defined by an ERC2645 derivation path (6 items), and one item is the `application` and can be customized. Default value is `LedgerW`. | +| `pathFunction?` | [`LedgerPathCalculation`](../namespaces/types.md#ledgerpathcalculation) | `getLedgerPathBuffer111` | defines the function that will calculate the path. By default `getLedgerPathBuffer111` is selected. | + +#### Returns + +[`LedgerSigner111`](LedgerSigner111.md)<`Transport`\> + +**`Example`** + +```typescript +import TransportNodeHid from '@ledgerhq/hw-transport-node-hid'; +const myNodeTransport = await TransportNodeHid.create(); +const myLedgerSigner = new LedgerSigner111(myNodeTransport, 0); +``` + +#### Defined in + +[src/signer/ledgerSigner111.ts:81](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L81) + +## Properties + +### transporter + +• `Readonly` **transporter**: `Transport` + +#### Defined in + +[src/signer/ledgerSigner111.ts:47](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L47) + +--- + +### \_transporter + +• `Protected` **\_transporter**: `any` + +#### Defined in + +[src/signer/ledgerSigner111.ts:50](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L50) + +--- + +### accountID + +• `Readonly` **accountID**: `number` + +#### Defined in + +[src/signer/ledgerSigner111.ts:52](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L52) + +--- + +### eip2645applicationName + +• `Readonly` **eip2645applicationName**: `string` + +#### Defined in + +[src/signer/ledgerSigner111.ts:54](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L54) + +--- + +### pathBuffer + +• `Readonly` **pathBuffer**: `Uint8Array` + +#### Defined in + +[src/signer/ledgerSigner111.ts:56](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L56) + +--- + +### appVersion + +• `Protected` **appVersion**: `string` + +#### Defined in + +[src/signer/ledgerSigner111.ts:58](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L58) + +--- + +### pubKey + +• `Protected` **pubKey**: `string` + +#### Defined in + +[src/signer/ledgerSigner111.ts:60](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L60) + +--- + +### fullPubKey + +• `Protected` **fullPubKey**: `string` + +#### Defined in + +[src/signer/ledgerSigner111.ts:62](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L62) + +## Methods + +### getPubKey + +▸ **getPubKey**(): `Promise`<`string`\> + +provides the Starknet public key + +#### Returns + +`Promise`<`string`\> + +an hex string : 64 characters are Point X coordinate. + +**`Example`** + +```typescript +const result = await myLedgerSigner.getPubKey(); +// result= "0x03681417ba3e1f050dd3ccdceb8d22b5e44fa70ee7844d472c6a768bded5174e" +``` + +#### Implementation of + +[SignerInterface](SignerInterface.md).[getPubKey](SignerInterface.md#getpubkey) + +#### Defined in + +[src/signer/ledgerSigner111.ts:109](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L109) + +--- + +### getFullPubKey + +▸ **getFullPubKey**(): `Promise`<`string`\> + +provides the full public key (with parity prefix) + +#### Returns + +`Promise`<`string`\> + +an hex string : 2 first characters are the parity, the 64 following characters are Point X coordinate. 64 last characters are Point Y coordinate. + +**`Example`** + +```typescript +const result = await myLedgerSigner.getFullPubKey(); +// result= "0x0403681417ba3e1f050dd3ccdceb8d22b5e44fa70ee7844d472c6a768bded5174e03cbc86f805dcfcb0c1922dd4daf181afa289d86223a18bc856276615bcc7787" +``` + +#### Defined in + +[src/signer/ledgerSigner111.ts:123](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L123) + +--- + +### getAppVersion + +▸ **getAppVersion**(): `Promise`<`string`\> + +Returns the version of the Starknet APP implemented in the Ledger. + +#### Returns + +`Promise`<`string`\> + +version. + +**`Example`** + +```typescript +const result = await myLedgerSigner.getAppVersion(); +// result= "1.1.1" +``` + +#### Defined in + +[src/signer/ledgerSigner111.ts:137](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L137) + +--- + +### signMessage + +▸ **signMessage**(`typedDataToHash`, `accountAddress`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Sign a TypedData message (SNIP-12) in a Ledger. + +#### Parameters + +| Name | Type | Description | +| :---------------- | :----------------------------------------------------------------------- | :------------------------------------------- | +| `typedDataToHash` | [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) | A TypedData message compatible with SNIP-12. | +| `accountAddress` | `string` | Signer account address (Hex or num string) | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +The signed message. + +**`Example`** + +```typescript +const result = myLedgerSigner.signMessage(snip12Message, account0.address); +// result = Signature { r: 611475243393396148729326917410546146405234155928298353899191529090923298688n, +// s: 798839819213540985856952481651392652149797817551686626114697493101433761982n, +// recovery: 0} +``` + +#### Implementation of + +[SignerInterface](SignerInterface.md).[signMessage](SignerInterface.md#signmessage) + +#### Defined in + +[src/signer/ledgerSigner111.ts:158](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L158) + +--- + +### signTransaction + +▸ **signTransaction**(`transactions`, `transactionsDetail`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Sign in a Ledger a V1 or a V3 transaction. This is a blind sign on the Ledger screen. + +#### Parameters + +| Name | Type | Description | +| :------------------- | :---------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- | +| `transactions` | [`Call`](../namespaces/types.md#call)[] | An array of `Call` transactions (generated for example by `myContract.populate()`). | +| `transactionsDetail` | [`InvocationsSignerDetails`](../namespaces/types.md#invocationssignerdetails) | An object that includes all the necessary inputs to hash the transaction. Can be `V2InvocationsSignerDetails` or `V3InvocationsSignerDetails` type. | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +The signed transaction. + +**`Example`** + +```typescript +const txDetailsV3: V3InvocationsSignerDetails = { + chainId: constants.StarknetChainId.SN_MAIN, + nonce: '28', + accountDeploymentData: [], + paymasterData: [], + cairoVersion: '1', + feeDataAvailabilityMode: 'L1', + nonceDataAvailabilityMode: 'L1', + resourceBounds: { + l1_gas: { + max_amount: '0x2a00', + max_price_per_unit: '0x5c00000', + }, + l2_gas: { + max_amount: '0x00', + max_price_per_unit: '0x00', + }, + }, + tip: 0, + version: '0x3', + walletAddress: account0.address, +}; +const result = myLedgerSigner.signTransaction([call0, call1], txDetailsV3); +// result = Signature { r: 611475243393396148729326917410546146405234155928298353899191529090923298688n, +// s: 798839819213540985856952481651392652149797817551686626114697493101433761982n, +// recovery: 0} +``` + +#### Implementation of + +[SignerInterface](SignerInterface.md).[signTransaction](SignerInterface.md#signtransaction) + +#### Defined in + +[src/signer/ledgerSigner111.ts:198](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L198) + +--- + +### signDeployAccountTransaction + +▸ **signDeployAccountTransaction**(`details`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Sign in a Ledger the deployment of a new account. This is a blind sign on the Ledger screen. + +#### Parameters + +| Name | Type | Description | +| :-------- | :-------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- | +| `details` | [`DeployAccountSignerDetails`](../namespaces/types.md#deployaccountsignerdetails) | An object that includes all necessary data to calculate the Hash. It can be `V2DeployAccountSignerDetails` or `V3DeployAccountSignerDetails` types. | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +The deploy account signature. + +**`Example`** + +```typescript +const result = myLedgerSigner.signDeployAccountTransaction(details); +// result = Signature { r: 611475243393396148729326917410546146405234155928298353899191529090923298688n, +// s: 798839819213540985856952481651392652149797817551686626114697493101433761982n, +// recovery: 0} +``` + +#### Implementation of + +[SignerInterface](SignerInterface.md).[signDeployAccountTransaction](SignerInterface.md#signdeployaccounttransaction) + +#### Defined in + +[src/signer/ledgerSigner111.ts:243](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L243) + +--- + +### signDeclareTransaction + +▸ **signDeclareTransaction**(`details`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Sign in a Ledger the declaration of a new class. This is a blind sign on the Ledger screen. + +#### Parameters + +| Name | Type | Description | +| :-------- | :-------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------- | +| `details` | [`DeclareSignerDetails`](../namespaces/types.md#declaresignerdetails) | An object that includes all necessary data to calculate the Hash. It can be `V3DeclareSignerDetails` or `V2DeclareSignerDetails` types. | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +The declare Signature. + +**`Example`** + +```typescript +const result = myLedgerSigner.signDeclareTransaction(details); +// result = Signature { r: 611475243393396148729326917410546146405234155928298353899191529090923298688n, +// s: 798839819213540985856952481651392652149797817551686626114697493101433761982n, +// recovery: 0} +``` + +#### Implementation of + +[SignerInterface](SignerInterface.md).[signDeclareTransaction](SignerInterface.md#signdeclaretransaction) + +#### Defined in + +[src/signer/ledgerSigner111.ts:287](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L287) + +--- + +### signRaw + +▸ **signRaw**(`msgHash`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Internal function to sign a hash in a Ledger Nano. +This is a blind sign in the Ledger ; no display of what you are signing. + +#### Parameters + +| Name | Type | +| :-------- | :------- | +| `msgHash` | `string` | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +#### Defined in + +[src/signer/ledgerSigner111.ts:316](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L316) + +--- + +### getPublicKeys + +▸ **getPublicKeys**(): `Promise`<`void`\> + +internal function to get both the Starknet public key and the full public key + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/signer/ledgerSigner111.ts:335](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L335) diff --git a/www/versioned_docs/version-6.24.1/API/classes/LedgerSigner221.md b/www/versioned_docs/version-6.24.1/API/classes/LedgerSigner221.md new file mode 100644 index 000000000..64ac9cb9e --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/LedgerSigner221.md @@ -0,0 +1,807 @@ +--- +id: 'LedgerSigner221' +title: 'Class: LedgerSigner221' +sidebar_label: 'LedgerSigner221' +sidebar_position: 0 +custom_edit_url: null +--- + +Signer for accounts using a Ledger Nano S+/X signature (Starknet Ledger APP version 2.2.1). + +The Ledger has to be connected, unlocked and the Starknet APP has to be selected prior of use of this class. + +## Type parameters + +| Name | Type | +| :---------- | :-------------------------------------- | +| `Transport` | extends `Record`<`any`, `any`\> = `any` | + +## Hierarchy + +- [`LedgerSigner111`](LedgerSigner111.md) + + ↳ **`LedgerSigner221`** + +## Implements + +- [`SignerInterface`](SignerInterface.md) + +## Constructors + +### constructor + +• **new LedgerSigner221**<`Transport`\>(`transport`, `accountID`, `eip2645application?`, `pathFunction?`): [`LedgerSigner221`](LedgerSigner221.md)<`Transport`\> + +constructor of the LedgerSigner class. + +#### Type parameters + +| Name | Type | +| :---------- | :-------------------------------------- | +| `Transport` | extends `Record`<`any`, `any`\> = `any` | + +#### Parameters + +| Name | Type | Default value | Description | +| :-------------------- | :---------------------------------------------------------------------- | :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `transport` | `Transport` | `undefined` | 5 transports are available to handle USB, bluetooth, Node, Web, Mobile. See Guides for more details. | +| `accountID` | `number` | `undefined` | ID of Ledger Nano (can handle 2\*\*31 accounts). | +| `eip2645application?` | `string` | `'LedgerW'` | A wallet is defined by an ERC2645 derivation path (6 items). One item is called `application` and can be customized. Default value is `LedgerW`. | +| `pathFunction?` | [`LedgerPathCalculation`](../namespaces/types.md#ledgerpathcalculation) | `getLedgerPathBuffer221` | defines the function that will calculate the path. By default `getLedgerPathBuffer221` is selected. If you are using APP v2.2.1 with an account created with the v1.1.1, you need to use : `typescript const myLedgerSigner = new LedgerSigner211(myNodeTransport, 0, undefined, getLedgerPathBuffer111); ` | + +#### Returns + +[`LedgerSigner221`](LedgerSigner221.md)<`Transport`\> + +**`Example`** + +```typescript +import TransportNodeHid from '@ledgerhq/hw-transport-node-hid'; +const myNodeTransport = await TransportNodeHid.create(); +const myLedgerSigner = new LedgerSigner211(myNodeTransport, 0); +``` + +#### Overrides + +[LedgerSigner111](LedgerSigner111.md).[constructor](LedgerSigner111.md#constructor) + +#### Defined in + +[src/signer/ledgerSigner221.ts:72](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner221.ts#L72) + +## Properties + +### transporter + +• `Readonly` **transporter**: `any` + +#### Inherited from + +[LedgerSigner111](LedgerSigner111.md).[transporter](LedgerSigner111.md#transporter) + +#### Defined in + +[src/signer/ledgerSigner111.ts:47](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L47) + +--- + +### \_transporter + +• `Protected` **\_transporter**: `any` + +#### Inherited from + +[LedgerSigner111](LedgerSigner111.md).[\_transporter](LedgerSigner111.md#_transporter) + +#### Defined in + +[src/signer/ledgerSigner111.ts:50](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L50) + +--- + +### accountID + +• `Readonly` **accountID**: `number` + +#### Inherited from + +[LedgerSigner111](LedgerSigner111.md).[accountID](LedgerSigner111.md#accountid) + +#### Defined in + +[src/signer/ledgerSigner111.ts:52](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L52) + +--- + +### eip2645applicationName + +• `Readonly` **eip2645applicationName**: `string` + +#### Inherited from + +[LedgerSigner111](LedgerSigner111.md).[eip2645applicationName](LedgerSigner111.md#eip2645applicationname) + +#### Defined in + +[src/signer/ledgerSigner111.ts:54](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L54) + +--- + +### pathBuffer + +• `Readonly` **pathBuffer**: `Uint8Array` + +#### Inherited from + +[LedgerSigner111](LedgerSigner111.md).[pathBuffer](LedgerSigner111.md#pathbuffer) + +#### Defined in + +[src/signer/ledgerSigner111.ts:56](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L56) + +--- + +### appVersion + +• `Protected` **appVersion**: `string` + +#### Inherited from + +[LedgerSigner111](LedgerSigner111.md).[appVersion](LedgerSigner111.md#appversion) + +#### Defined in + +[src/signer/ledgerSigner111.ts:58](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L58) + +--- + +### pubKey + +• `Protected` **pubKey**: `string` + +#### Inherited from + +[LedgerSigner111](LedgerSigner111.md).[pubKey](LedgerSigner111.md#pubkey) + +#### Defined in + +[src/signer/ledgerSigner111.ts:60](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L60) + +--- + +### fullPubKey + +• `Protected` **fullPubKey**: `string` + +#### Inherited from + +[LedgerSigner111](LedgerSigner111.md).[fullPubKey](LedgerSigner111.md#fullpubkey) + +#### Defined in + +[src/signer/ledgerSigner111.ts:62](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L62) + +## Methods + +### signTransaction + +▸ **signTransaction**(`transactions`, `transactionsDetail`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Sign in a Ledger a V1 or a V3 transaction. The details are displayed on the Ledger screen. + +#### Parameters + +| Name | Type | Description | +| :------------------- | :---------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- | +| `transactions` | [`Call`](../namespaces/types.md#call)[] | An array of `Call` transactions (generated for example by `myContract.populate()`). | +| `transactionsDetail` | [`InvocationsSignerDetails`](../namespaces/types.md#invocationssignerdetails) | An object that includes all the necessary inputs to hash the transaction. Can be `V2InvocationsSignerDetails` or `V3InvocationsSignerDetails` type. | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +The signed transaction. + +**`Example`** + +```typescript +const txDetailsV3: V3InvocationsSignerDetails = { + chainId: constants.StarknetChainId.SN_MAIN, + nonce: '28', + accountDeploymentData: [], + paymasterData: [], + cairoVersion: '1', + feeDataAvailabilityMode: 'L1', + nonceDataAvailabilityMode: 'L1', + resourceBounds: { + l1_gas: { + max_amount: '0x2a00', + max_price_per_unit: '0x5c00000', + }, + l2_gas: { + max_amount: '0x00', + max_price_per_unit: '0x00', + }, + }, + tip: 0, + version: '0x3', + walletAddress: account0.address, +}; +const result = myLedgerSigner.signTransaction([call0, call1], txDetailsV3); +// result = Signature { r: 611475243393396148729326917410546146405234155928298353899191529090923298688n, +// s: 798839819213540985856952481651392652149797817551686626114697493101433761982n, +// recovery: 0} +``` + +#### Implementation of + +[SignerInterface](SignerInterface.md).[signTransaction](SignerInterface.md#signtransaction) + +#### Overrides + +[LedgerSigner111](LedgerSigner111.md).[signTransaction](LedgerSigner111.md#signtransaction) + +#### Defined in + +[src/signer/ledgerSigner221.ts:116](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner221.ts#L116) + +--- + +### signDeployAccountTransaction + +▸ **signDeployAccountTransaction**(`details`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Sign in a Ledger the deployment of a new account. The details are displayed on the Ledger screen. + +#### Parameters + +| Name | Type | Description | +| :-------- | :-------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- | +| `details` | [`DeployAccountSignerDetails`](../namespaces/types.md#deployaccountsignerdetails) | An object that includes all necessary data to calculate the Hash. It can be `V2DeployAccountSignerDetails` or `V3DeployAccountSignerDetails` types. | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +The deploy account signature. + +**`Example`** + +```typescript +const result = myLedgerSigner.signDeployAccountTransaction(details); +// result = Signature { r: 611475243393396148729326917410546146405234155928298353899191529090923298688n, +// s: 798839819213540985856952481651392652149797817551686626114697493101433761982n, +// recovery: 0} +``` + +#### Implementation of + +[SignerInterface](SignerInterface.md).[signDeployAccountTransaction](SignerInterface.md#signdeployaccounttransaction) + +#### Overrides + +[LedgerSigner111](LedgerSigner111.md).[signDeployAccountTransaction](LedgerSigner111.md#signdeployaccounttransaction) + +#### Defined in + +[src/signer/ledgerSigner221.ts:169](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner221.ts#L169) + +--- + +### convertBnToLedger + +▸ **convertBnToLedger**(`input`): `Uint8Array` + +Internal function to convert a bigNumberish to an Uint8array of 256 bits + +#### Parameters + +| Name | Type | Description | +| :------ | :---------------------------------------------------- | :---------- | +| `input` | [`BigNumberish`](../namespaces/types.md#bignumberish) | input value | + +#### Returns + +`Uint8Array` + +a Uint8Array containing 32 bytes. + +#### Defined in + +[src/signer/ledgerSigner221.ts:215](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner221.ts#L215) + +--- + +### decodeSignatureLedger + +▸ **decodeSignatureLedger**(`respSign`): `Object` + +Internal function to decode the response of the Ledger signature + +#### Parameters + +| Name | Type | Description | +| :--------- | :----------- | :-------------------------------- | +| `respSign` | `Uint8Array` | the Buffer response of the Ledger | + +#### Returns + +`Object` + +transaction hash & signature + +| Name | Type | +| :---------- | :---------------------------------------------- | +| `hash` | `bigint` | +| `signature` | [`Signature`](../namespaces/types.md#signature) | + +#### Defined in + +[src/signer/ledgerSigner221.ts:224](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner221.ts#L224) + +--- + +### encodeCall + +▸ **encodeCall**(`call`): `Uint8Array`[] + +Internal function to convert a Call to an array of Uint8Array. + +#### Parameters + +| Name | Type | Description | +| :----- | :------------------------------------ | :----------------- | +| `call` | [`Call`](../namespaces/types.md#call) | A Call to convert. | + +#### Returns + +`Uint8Array`[] + +Call encoded in an array of Uint8Array (each containing 7 u256). + +#### Defined in + +[src/signer/ledgerSigner221.ts:238](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner221.ts#L238) + +--- + +### signTxV1 + +▸ **signTxV1**(`txDetails`, `calls`): `Promise`<\{ `hash`: `bigint` ; `signature`: [`Signature`](../namespaces/types.md#signature) }\> + +Ask the Ledger Nano to display and sign a Starknet V1 transaction. + +#### Parameters + +| Name | Type | Description | +| :---------- | :-------------------------------------------------------------------------------- | :--------------------------------- | +| `txDetails` | [`V2InvocationsSignerDetails`](../namespaces/types.md#v2invocationssignerdetails) | All the details needed for a txV1. | +| `calls` | [`Call`](../namespaces/types.md#call)[] | array of Starknet invocations | + +#### Returns + +`Promise`<\{ `hash`: `bigint` ; `signature`: [`Signature`](../namespaces/types.md#signature) }\> + +an object including the transaction Hash and the signature + +**`Example`** + +```typescript +const calls: Call[] = [ + { + contractAddress: '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7', + entrypoint: 'transfer', + calldata: [ + '0x11f5fc2a92ac03434a7937fe982f5e5293b65ad438a989c5b78fb8f04a12016', + '0x9184e72a000', + '0x0', + ], + }, +]; +const txDet: V2InvocationsSignerDetails = { + walletAddress: txDetails.accountAddress, + chainId: constants.StarknetChainId.SN_MAIN, + cairoVersion: '1', + maxFee: txDetails.max_fee, + nonce: txDetails.nonce, + version: '0x1', +}; +const res = await myLedgerSigner.signTxV1(txDet, calls); +// res = {hash: +// signature: +// } +``` + +#### Defined in + +[src/signer/ledgerSigner221.ts:284](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner221.ts#L284) + +--- + +### signTxV3 + +▸ **signTxV3**(`txDetails`, `calls`): `Promise`<\{ `hash`: `bigint` ; `signature`: [`Signature`](../namespaces/types.md#signature) }\> + +Ask to the Ledger Nano to display and sign a Starknet V3 transaction. + +#### Parameters + +| Name | Type | Description | +| :---------- | :-------------------------------------------------------------------------------- | :--------------------------------- | +| `txDetails` | [`V3InvocationsSignerDetails`](../namespaces/types.md#v3invocationssignerdetails) | All the details needed for a txV3. | +| `calls` | [`Call`](../namespaces/types.md#call)[] | array of Starknet invocations | + +#### Returns + +`Promise`<\{ `hash`: `bigint` ; `signature`: [`Signature`](../namespaces/types.md#signature) }\> + +an object including the transaction Hash and the signature + +**`Example`** + +```typescript +const calls: Call[] = [ + { + contractAddress: '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7', + entrypoint: 'transfer', + calldata: [ + '0x11f5fc2a92ac03434a7937fe982f5e5293b65ad438a989c5b78fb8f04a12016', + '0x9184e72a000', + '0x0', + ], + }, +]; +const txDetailsV3: V3InvocationsSignerDetails = { + chainId: constants.StarknetChainId.SN_MAIN, + nonce: '28', + accountDeploymentData: [], + paymasterData: [], + cairoVersion: '1', + feeDataAvailabilityMode: 'L1', + nonceDataAvailabilityMode: 'L1', + resourceBounds: { + l1_gas: { max_amount: '0x2a00', max_price_per_unit: '0x5c00000' }, + l2_gas: { max_amount: '0x00', max_price_per_unit: '0x00' }, + }, + tip: 0, + version: '0x3', + walletAddress: account0.address, +}; +const res = await myLedgerSigner.signTxV3(txDetailsV3, calls); +// res = {hash: +// signature: +// } +``` + +#### Defined in + +[src/signer/ledgerSigner221.ts:354](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner221.ts#L354) + +--- + +### signDeployAccountV1 + +▸ **signDeployAccountV1**(`deployAccountDetail`): `Promise`<\{ `hash`: `bigint` ; `signature`: [`Signature`](../namespaces/types.md#signature) }\> + +Ask the Ledger Nano to display and sign a Starknet V1 account deployment. + +#### Parameters + +| Name | Type | Description | +| :-------------------- | :------------------------------------------------------------------------------------ | :---------------------------------------------- | +| `deployAccountDetail` | [`V2DeployAccountSignerDetails`](../namespaces/types.md#v2deployaccountsignerdetails) | All the details needed for a V1 deploy account. | + +#### Returns + +`Promise`<\{ `hash`: `bigint` ; `signature`: [`Signature`](../namespaces/types.md#signature) }\> + +an object including the transaction Hash and the signature + +**`Example`** + +```typescript +const deployData: V2DeployAccountSignerDetails = { + tip: 0, + paymasterData: [], + accountDeploymentData: [], + nonceDataAvailabilityMode: 'L1', + feeDataAvailabilityMode: 'L1', + resourceBounds: { + l2_gas: { max_amount: '0x0', max_price_per_unit: '0x0' }, + l1_gas: { max_amount: '0x0', max_price_per_unit: '0x0' }, + }, + classHash: '0x540d7f5ec7ecf317e68d48564934cb99259781b1ee3cedbbc37ec5337f8e688', + constructorCalldata: [ + '89832696000889662999767022750851886674077821293893187900664573372145410755', + ], + contractAddress: '0x32c60fba64eb96831d064bbb2319375b7b7381543abe66da872e4344bcd72a0', + addressSalt: '0x0032d7efe2a9232f9b463e7206c68fdea4aeb13fec0cb308c6ba1d197d5922c3', + chainId: '0x534e5f5345504f4c4941', + maxFee: 55050000000000n, + version: '0x1', + nonce: 0n, +}; +const res = await myLedgerSigner.signDeployAccountV1(deployData); +// res = {hash: +// signature: +// } +``` + +#### Defined in + +[src/signer/ledgerSigner221.ts:460](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner221.ts#L460) + +--- + +### signDeployAccountV3 + +▸ **signDeployAccountV3**(`deployAccountDetail`): `Promise`<\{ `hash`: `bigint` ; `signature`: [`Signature`](../namespaces/types.md#signature) }\> + +Ask the Ledger Nano to display and sign a Starknet V3 account deployment. + +#### Parameters + +| Name | Type | Description | +| :-------------------- | :------------------------------------------------------------------------------------ | :---------------------------------------------- | +| `deployAccountDetail` | [`V3DeployAccountSignerDetails`](../namespaces/types.md#v3deployaccountsignerdetails) | All the details needed for a V3 deploy account. | + +#### Returns + +`Promise`<\{ `hash`: `bigint` ; `signature`: [`Signature`](../namespaces/types.md#signature) }\> + +an object including the transaction Hash and the signature + +**`Example`** + +```typescript +const deployData: V3DeployAccountSignerDetails = { + tip: 0, + paymasterData: [], + accountDeploymentData: [], + nonceDataAvailabilityMode: 'L1', + feeDataAvailabilityMode: 'L1', + resourceBounds: { + l2_gas: { max_amount: '0x0', max_price_per_unit: '0x0' }, + l1_gas: { max_amount: '0x226', max_price_per_unit: '0x22ecb25c00' }, + }, + classHash: '0x540d7f5ec7ecf317e68d48564934cb99259781b1ee3cedbbc37ec5337f8e688', + constructorCalldata: [ + '3571125127744830445572285574469842579401255431821644822726857471463672199621', + ], + contractAddress: '0x4ca062add1cf12a107be1107af17981cf6e544a24d987693230ea481d3d5e34', + addressSalt: '0x07e52f68e3160e1ef698211cdf6d3792368fe347e7e2d4a8ace14d9b248f39c5', + chainId: '0x534e5f5345504f4c4941', + maxFee: 0, + version: '0x3', + nonce: 0n, +}; +const res = await myLedgerSigner.signDeployAccountV3(deployData); +// res = {hash: +// signature: +// } +``` + +#### Defined in + +[src/signer/ledgerSigner221.ts:542](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner221.ts#L542) + +--- + +### getPubKey + +▸ **getPubKey**(): `Promise`<`string`\> + +provides the Starknet public key + +#### Returns + +`Promise`<`string`\> + +an hex string : 64 characters are Point X coordinate. + +**`Example`** + +```typescript +const result = await myLedgerSigner.getPubKey(); +// result= "0x03681417ba3e1f050dd3ccdceb8d22b5e44fa70ee7844d472c6a768bded5174e" +``` + +#### Implementation of + +[SignerInterface](SignerInterface.md).[getPubKey](SignerInterface.md#getpubkey) + +#### Inherited from + +[LedgerSigner111](LedgerSigner111.md).[getPubKey](LedgerSigner111.md#getpubkey) + +#### Defined in + +[src/signer/ledgerSigner111.ts:109](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L109) + +--- + +### getFullPubKey + +▸ **getFullPubKey**(): `Promise`<`string`\> + +provides the full public key (with parity prefix) + +#### Returns + +`Promise`<`string`\> + +an hex string : 2 first characters are the parity, the 64 following characters are Point X coordinate. 64 last characters are Point Y coordinate. + +**`Example`** + +```typescript +const result = await myLedgerSigner.getFullPubKey(); +// result= "0x0403681417ba3e1f050dd3ccdceb8d22b5e44fa70ee7844d472c6a768bded5174e03cbc86f805dcfcb0c1922dd4daf181afa289d86223a18bc856276615bcc7787" +``` + +#### Inherited from + +[LedgerSigner111](LedgerSigner111.md).[getFullPubKey](LedgerSigner111.md#getfullpubkey) + +#### Defined in + +[src/signer/ledgerSigner111.ts:123](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L123) + +--- + +### getAppVersion + +▸ **getAppVersion**(): `Promise`<`string`\> + +Returns the version of the Starknet APP implemented in the Ledger. + +#### Returns + +`Promise`<`string`\> + +version. + +**`Example`** + +```typescript +const result = await myLedgerSigner.getAppVersion(); +// result= "1.1.1" +``` + +#### Inherited from + +[LedgerSigner111](LedgerSigner111.md).[getAppVersion](LedgerSigner111.md#getappversion) + +#### Defined in + +[src/signer/ledgerSigner111.ts:137](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L137) + +--- + +### signMessage + +▸ **signMessage**(`typedDataToHash`, `accountAddress`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Sign a TypedData message (SNIP-12) in a Ledger. + +#### Parameters + +| Name | Type | Description | +| :---------------- | :----------------------------------------------------------------------- | :------------------------------------------- | +| `typedDataToHash` | [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) | A TypedData message compatible with SNIP-12. | +| `accountAddress` | `string` | Signer account address (Hex or num string) | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +The signed message. + +**`Example`** + +```typescript +const result = myLedgerSigner.signMessage(snip12Message, account0.address); +// result = Signature { r: 611475243393396148729326917410546146405234155928298353899191529090923298688n, +// s: 798839819213540985856952481651392652149797817551686626114697493101433761982n, +// recovery: 0} +``` + +#### Implementation of + +[SignerInterface](SignerInterface.md).[signMessage](SignerInterface.md#signmessage) + +#### Inherited from + +[LedgerSigner111](LedgerSigner111.md).[signMessage](LedgerSigner111.md#signmessage) + +#### Defined in + +[src/signer/ledgerSigner111.ts:158](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L158) + +--- + +### signDeclareTransaction + +▸ **signDeclareTransaction**(`details`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Sign in a Ledger the declaration of a new class. This is a blind sign on the Ledger screen. + +#### Parameters + +| Name | Type | Description | +| :-------- | :-------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------- | +| `details` | [`DeclareSignerDetails`](../namespaces/types.md#declaresignerdetails) | An object that includes all necessary data to calculate the Hash. It can be `V3DeclareSignerDetails` or `V2DeclareSignerDetails` types. | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +The declare Signature. + +**`Example`** + +```typescript +const result = myLedgerSigner.signDeclareTransaction(details); +// result = Signature { r: 611475243393396148729326917410546146405234155928298353899191529090923298688n, +// s: 798839819213540985856952481651392652149797817551686626114697493101433761982n, +// recovery: 0} +``` + +#### Implementation of + +[SignerInterface](SignerInterface.md).[signDeclareTransaction](SignerInterface.md#signdeclaretransaction) + +#### Inherited from + +[LedgerSigner111](LedgerSigner111.md).[signDeclareTransaction](LedgerSigner111.md#signdeclaretransaction) + +#### Defined in + +[src/signer/ledgerSigner111.ts:287](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L287) + +--- + +### signRaw + +▸ **signRaw**(`msgHash`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Internal function to sign a hash in a Ledger Nano. +This is a blind sign in the Ledger ; no display of what you are signing. + +#### Parameters + +| Name | Type | +| :-------- | :------- | +| `msgHash` | `string` | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +#### Inherited from + +[LedgerSigner111](LedgerSigner111.md).[signRaw](LedgerSigner111.md#signraw) + +#### Defined in + +[src/signer/ledgerSigner111.ts:316](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L316) + +--- + +### getPublicKeys + +▸ **getPublicKeys**(): `Promise`<`void`\> + +internal function to get both the Starknet public key and the full public key + +#### Returns + +`Promise`<`void`\> + +#### Inherited from + +[LedgerSigner111](LedgerSigner111.md).[getPublicKeys](LedgerSigner111.md#getpublickeys) + +#### Defined in + +[src/signer/ledgerSigner111.ts:335](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L335) diff --git a/www/versioned_docs/version-6.24.1/API/classes/LibraryError.md b/www/versioned_docs/version-6.24.1/API/classes/LibraryError.md new file mode 100644 index 000000000..f4fea7edb --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/LibraryError.md @@ -0,0 +1,171 @@ +--- +id: 'LibraryError' +title: 'Class: LibraryError' +sidebar_label: 'LibraryError' +sidebar_position: 0 +custom_edit_url: null +--- + +## Hierarchy + +- [`CustomError`](CustomError.md) + + ↳ **`LibraryError`** + + ↳↳ [`RpcError`](RpcError.md) + +## Constructors + +### constructor + +• **new LibraryError**(`message?`): [`LibraryError`](LibraryError.md) + +#### Parameters + +| Name | Type | +| :--------- | :------- | +| `message?` | `string` | + +#### Returns + +[`LibraryError`](LibraryError.md) + +#### Inherited from + +[CustomError](CustomError.md).[constructor](CustomError.md#constructor) + +#### Defined in + +[src/utils/errors/index.ts:23](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/errors/index.ts#L23) + +## Properties + +### prepareStackTrace + +▪ `Static` `Optional` **prepareStackTrace**: (`err`: `Error`, `stackTraces`: `CallSite`[]) => `any` + +#### Type declaration + +▸ (`err`, `stackTraces`): `any` + +Optional override for formatting stack traces + +##### Parameters + +| Name | Type | +| :------------ | :----------- | +| `err` | `Error` | +| `stackTraces` | `CallSite`[] | + +##### Returns + +`any` + +**`See`** + +https://v8.dev/docs/stack-trace-api#customizing-stack-traces + +#### Inherited from + +[CustomError](CustomError.md).[prepareStackTrace](CustomError.md#preparestacktrace) + +#### Defined in + +node_modules/@types/node/globals.d.ts:143 + +--- + +### stackTraceLimit + +▪ `Static` **stackTraceLimit**: `number` + +#### Inherited from + +[CustomError](CustomError.md).[stackTraceLimit](CustomError.md#stacktracelimit) + +#### Defined in + +node_modules/@types/node/globals.d.ts:145 + +--- + +### name + +• **name**: `string` + +#### Inherited from + +[CustomError](CustomError.md).[name](CustomError.md#name) + +#### Defined in + +[src/utils/errors/index.ts:21](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/errors/index.ts#L21) + +--- + +### message + +• **message**: `string` + +#### Inherited from + +[CustomError](CustomError.md).[message](CustomError.md#message) + +#### Defined in + +www/node_modules/typescript/lib/lib.es5.d.ts:1055 + +--- + +### stack + +• `Optional` **stack**: `string` + +#### Inherited from + +[CustomError](CustomError.md).[stack](CustomError.md#stack) + +#### Defined in + +www/node_modules/typescript/lib/lib.es5.d.ts:1056 + +--- + +### cause + +• `Optional` **cause**: `unknown` + +#### Inherited from + +[CustomError](CustomError.md).[cause](CustomError.md#cause) + +#### Defined in + +www/node_modules/typescript/lib/lib.es2022.error.d.ts:24 + +## Methods + +### captureStackTrace + +▸ **captureStackTrace**(`targetObject`, `constructorOpt?`): `void` + +Create .stack property on a target object + +#### Parameters + +| Name | Type | +| :---------------- | :--------- | +| `targetObject` | `object` | +| `constructorOpt?` | `Function` | + +#### Returns + +`void` + +#### Inherited from + +[CustomError](CustomError.md).[captureStackTrace](CustomError.md#capturestacktrace) + +#### Defined in + +node_modules/@types/node/globals.d.ts:136 diff --git a/www/versioned_docs/version-6.24.1/API/classes/Provider.md b/www/versioned_docs/version-6.24.1/API/classes/Provider.md new file mode 100644 index 000000000..4735e3438 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/Provider.md @@ -0,0 +1,1595 @@ +--- +id: 'Provider' +title: 'Class: Provider' +sidebar_label: 'Provider' +sidebar_position: 0 +custom_edit_url: null +--- + +## Hierarchy + +- `RpcProvider`<`this`\> & `StarknetId`<`this`\> + + ↳ **`Provider`** + + ↳↳ [`Account`](Account.md) + +## Constructors + +### constructor + +• **new Provider**(`optionsOrProvider?`): [`Provider`](Provider.md) + +#### Parameters + +| Name | Type | +| :------------------- | :-------------------------------------------------------------------------------------------------------------------------------- | +| `optionsOrProvider?` | [`RpcProviderOptions`](../namespaces/types.md#rpcprovideroptions) \| [`ProviderInterface`](ProviderInterface.md) \| `RpcProvider` | + +#### Returns + +[`Provider`](Provider.md) + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).constructor + +#### Defined in + +[src/provider/rpc.ts:55](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L55) + +• **new Provider**(): [`Provider`](Provider.md) + +#### Returns + +[`Provider`](Provider.md) + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).constructor + +## Properties + +### responseParser + +• **responseParser**: [`RPCResponseParser`](RPCResponseParser.md) + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).responseParser + +#### Defined in + +[src/provider/rpc.ts:51](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L51) + +--- + +### channel + +• **channel**: [`RpcChannel`](RPC06.RpcChannel.md) \| [`RpcChannel`](RPC07.RpcChannel.md) + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).channel + +#### Defined in + +[src/provider/rpc.ts:53](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L53) + +--- + +### getStateUpdate + +• **getStateUpdate**: () => `Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\>(`blockIdentifier`: `"pending"`) => `Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\>(`blockIdentifier`: `"latest"`) => `Promise`<\{ `block_hash`: `string` ; `old_root`: `string` ; `new_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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\>(`blockIdentifier?`: [`BlockIdentifier`](../namespaces/types.md#blockidentifier)) => `Promise`<[`StateUpdateResponse`](../namespaces/types.md#stateupdateresponse)\> + +#### Type declaration + +▸ (): `Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +##### Returns + +`Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +▸ (`blockIdentifier`): `Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +##### Parameters + +| Name | Type | +| :---------------- | :---------- | +| `blockIdentifier` | `"pending"` | + +##### Returns + +`Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +▸ (`blockIdentifier`): `Promise`<\{ `block_hash`: `string` ; `old_root`: `string` ; `new_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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +##### Parameters + +| Name | Type | +| :---------------- | :--------- | +| `blockIdentifier` | `"latest"` | + +##### Returns + +`Promise`<\{ `block_hash`: `string` ; `old_root`: `string` ; `new_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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +▸ (`blockIdentifier?`): `Promise`<[`StateUpdateResponse`](../namespaces/types.md#stateupdateresponse)\> + +##### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +##### Returns + +`Promise`<[`StateUpdateResponse`](../namespaces/types.md#stateupdateresponse)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getStateUpdate + +#### Defined in + +[src/provider/rpc.ts:191](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L191) + +## Methods + +### getStarkName + +▸ **getStarkName**(`provider`, `address`, `StarknetIdContract?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :-------------------- | :---------------------------------------------------- | +| `provider` | [`ProviderInterface`](ProviderInterface.md) | +| `address` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `StarknetIdContract?` | `string` | + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getStarkName + +#### Defined in + +[src/provider/extensions/starknetId.ts:62](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/extensions/starknetId.ts#L62) + +--- + +### getAddressFromStarkName + +▸ **getAddressFromStarkName**(`provider`, `name`, `StarknetIdContract?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :-------------------- | :------------------------------------------ | +| `provider` | [`ProviderInterface`](ProviderInterface.md) | +| `name` | `string` | +| `StarknetIdContract?` | `string` | + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getAddressFromStarkName + +#### Defined in + +[src/provider/extensions/starknetId.ts:96](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/extensions/starknetId.ts#L96) + +--- + +### getStarkProfile + +▸ **getStarkProfile**(`provider`, `address`, `StarknetIdContract?`, `StarknetIdIdentityContract?`, `StarknetIdVerifierContract?`, `StarknetIdPfpContract?`, `StarknetIdPopContract?`, `StarknetIdMulticallContract?`): `Promise`<[`StarkProfile`](../namespaces/types.md#starkprofile)\> + +#### Parameters + +| Name | Type | +| :----------------------------- | :---------------------------------------------------- | +| `provider` | [`ProviderInterface`](ProviderInterface.md) | +| `address` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `StarknetIdContract?` | `string` | +| `StarknetIdIdentityContract?` | `string` | +| `StarknetIdVerifierContract?` | `string` | +| `StarknetIdPfpContract?` | `string` | +| `StarknetIdPopContract?` | `string` | +| `StarknetIdMulticallContract?` | `string` | + +#### Returns + +`Promise`<[`StarkProfile`](../namespaces/types.md#starkprofile)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getStarkProfile + +#### Defined in + +[src/provider/extensions/starknetId.ts:128](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/extensions/starknetId.ts#L128) + +--- + +### fetch + +▸ **fetch**(`method`, `params?`, `id?`): `Promise`<`Response`\> + +#### Parameters + +| Name | Type | Default value | +| :-------- | :------------------- | :------------ | +| `method` | `string` | `undefined` | +| `params?` | `object` | `undefined` | +| `id` | `string` \| `number` | `0` | + +#### Returns + +`Promise`<`Response`\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).fetch + +#### Defined in + +[src/provider/rpc.ts:68](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L68) + +--- + +### getChainId + +▸ **getChainId**(): `Promise`<[`StarknetChainId`](../enums/constants.StarknetChainId.md)\> + +#### Returns + +`Promise`<[`StarknetChainId`](../enums/constants.StarknetChainId.md)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getChainId + +#### Defined in + +[src/provider/rpc.ts:72](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L72) + +--- + +### getSpecVersion + +▸ **getSpecVersion**(): `Promise`<`string`\> + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getSpecVersion + +#### Defined in + +[src/provider/rpc.ts:76](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L76) + +--- + +### getNonceForAddress + +▸ **getNonceForAddress**(`contractAddress`, `blockIdentifier?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getNonceForAddress + +#### Defined in + +[src/provider/rpc.ts:80](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L80) + +--- + +### getBlock + +▸ **getBlock**(): `Promise`<[`PendingBlock`](../namespaces/types.md#pendingblock)\> + +#### Returns + +`Promise`<[`PendingBlock`](../namespaces/types.md#pendingblock)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getBlock + +#### Defined in + +[src/provider/rpc.ts:87](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L87) + +▸ **getBlock**(`blockIdentifier`): `Promise`<[`PendingBlock`](../namespaces/types.md#pendingblock)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------- | +| `blockIdentifier` | `"pending"` | + +#### Returns + +`Promise`<[`PendingBlock`](../namespaces/types.md#pendingblock)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getBlock + +#### Defined in + +[src/provider/rpc.ts:88](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L88) + +▸ **getBlock**(`blockIdentifier`): `Promise`<[`Block`](../namespaces/types.md#block)\> + +#### Parameters + +| Name | Type | +| :---------------- | :--------- | +| `blockIdentifier` | `"latest"` | + +#### Returns + +`Promise`<[`Block`](../namespaces/types.md#block)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getBlock + +#### Defined in + +[src/provider/rpc.ts:89](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L89) + +▸ **getBlock**(`blockIdentifier?`): `Promise`<[`GetBlockResponse`](../namespaces/types.md#getblockresponse)\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`GetBlockResponse`](../namespaces/types.md#getblockresponse)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getBlock + +#### Defined in + +[src/provider/rpc.ts:90](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L90) + +--- + +### getBlockLatestAccepted + +▸ **getBlockLatestAccepted**(): `Promise`<[`BlockHashAndNumber`](../namespaces/types.RPC.RPCSPEC06.md#blockhashandnumber)\> + +Get the most recent accepted block hash and number + +#### Returns + +`Promise`<[`BlockHashAndNumber`](../namespaces/types.RPC.RPCSPEC06.md#blockhashandnumber)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getBlockLatestAccepted + +#### Defined in + +[src/provider/rpc.ts:100](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L100) + +--- + +### getBlockNumber + +▸ **getBlockNumber**(): `Promise`<`number`\> + +Get the most recent accepted block number +redundant use getBlockLatestAccepted(); + +#### Returns + +`Promise`<`number`\> + +Number of the latest block + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getBlockNumber + +#### Defined in + +[src/provider/rpc.ts:109](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L109) + +--- + +### getBlockWithTxHashes + +▸ **getBlockWithTxHashes**(`blockIdentifier?`): `Promise`<[`BlockWithTxHashes`](../namespaces/types.RPC.RPCSPEC06.md#blockwithtxhashes)\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`BlockWithTxHashes`](../namespaces/types.RPC.RPCSPEC06.md#blockwithtxhashes)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getBlockWithTxHashes + +#### Defined in + +[src/provider/rpc.ts:113](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L113) + +--- + +### getBlockWithTxs + +▸ **getBlockWithTxs**(`blockIdentifier?`): `Promise`<[`BlockWithTxs`](../namespaces/types.RPC.RPCSPEC06.md#blockwithtxs)\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`BlockWithTxs`](../namespaces/types.RPC.RPCSPEC06.md#blockwithtxs)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getBlockWithTxs + +#### Defined in + +[src/provider/rpc.ts:117](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L117) + +--- + +### waitForBlock + +▸ **waitForBlock**(`blockIdentifier?`, `retryInterval?`): `Promise`<`void`\> + +Pause the execution of the script until a specified block is created. + +#### Parameters + +| Name | Type | Default value | Description | +| :---------------- | :---------------------------------------------------------- | :------------ | :------------------------------------------------------------------------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | `'pending'` | bloc number (BigNumberish) or 'pending' or 'latest'. Use of 'latest" or of a block already created will generate no pause. | +| `retryInterval?` | `number` | `5000` | number of milliseconds between 2 requests to the node | + +#### Returns + +`Promise`<`void`\> + +**`Example`** + +```typescript +await myProvider.waitForBlock(); +// wait the creation of the pending block +``` + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).waitForBlock + +#### Defined in + +[src/provider/rpc.ts:132](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L132) + +--- + +### getL1GasPrice + +▸ **getL1GasPrice**(`blockIdentifier?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getL1GasPrice + +#### Defined in + +[src/provider/rpc.ts:162](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L162) + +--- + +### getL1MessageHash + +▸ **getL1MessageHash**(`l2TxHash`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :--------- | :---------------------------------------------------- | +| `l2TxHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getL1MessageHash + +#### Defined in + +[src/provider/rpc.ts:168](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L168) + +--- + +### getBlockWithReceipts + +▸ **getBlockWithReceipts**(`blockIdentifier?`): `Promise`<[`BlockWithTxReceipts`](../namespaces/types.RPC.RPCSPEC07.API.md#blockwithtxreceipts)\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`BlockWithTxReceipts`](../namespaces/types.RPC.RPCSPEC07.API.md#blockwithtxreceipts)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getBlockWithReceipts + +#### Defined in + +[src/provider/rpc.ts:184](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L184) + +--- + +### getBlockStateUpdate + +▸ **getBlockStateUpdate**(): `Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +#### Returns + +`Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getBlockStateUpdate + +#### Defined in + +[src/provider/rpc.ts:193](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L193) + +▸ **getBlockStateUpdate**(`blockIdentifier`): `Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------- | +| `blockIdentifier` | `"pending"` | + +#### Returns + +`Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getBlockStateUpdate + +#### Defined in + +[src/provider/rpc.ts:194](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L194) + +▸ **getBlockStateUpdate**(`blockIdentifier`): `Promise`<\{ `block_hash`: `string` ; `old_root`: `string` ; `new_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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +#### Parameters + +| Name | Type | +| :---------------- | :--------- | +| `blockIdentifier` | `"latest"` | + +#### Returns + +`Promise`<\{ `block_hash`: `string` ; `old_root`: `string` ; `new_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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getBlockStateUpdate + +#### Defined in + +[src/provider/rpc.ts:195](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L195) + +▸ **getBlockStateUpdate**(`blockIdentifier?`): `Promise`<[`StateUpdateResponse`](../namespaces/types.md#stateupdateresponse)\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`StateUpdateResponse`](../namespaces/types.md#stateupdateresponse)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getBlockStateUpdate + +#### Defined in + +[src/provider/rpc.ts:196](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L196) + +--- + +### getBlockTransactionsTraces + +▸ **getBlockTransactionsTraces**(`blockIdentifier?`): `Promise`<[`BlockTransactionsTraces`](../namespaces/types.RPC.RPCSPEC06.md#blocktransactionstraces)\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`BlockTransactionsTraces`](../namespaces/types.RPC.RPCSPEC06.md#blocktransactionstraces)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getBlockTransactionsTraces + +#### Defined in + +[src/provider/rpc.ts:201](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L201) + +--- + +### getBlockTransactionCount + +▸ **getBlockTransactionCount**(`blockIdentifier?`): `Promise`<`number`\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`number`\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getBlockTransactionCount + +#### Defined in + +[src/provider/rpc.ts:205](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L205) + +--- + +### getPendingTransactions + +▸ **getPendingTransactions**(): `Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)[]\> + +Return transactions from pending block + +#### Returns + +`Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)[]\> + +**`Deprecated`** + +Instead use getBlock(BlockTag.PENDING); (will be removed in next minor version) +Utility method, same result can be achieved using getBlockWithTxHashes(BlockTag.pending); + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getPendingTransactions + +#### Defined in + +[src/provider/rpc.ts:214](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L214) + +--- + +### getTransaction + +▸ **getTransaction**(`txHash`): `Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getTransaction + +#### Defined in + +[src/provider/rpc.ts:221](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L221) + +--- + +### getTransactionByHash + +▸ **getTransactionByHash**(`txHash`): `Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getTransactionByHash + +#### Defined in + +[src/provider/rpc.ts:225](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L225) + +--- + +### getTransactionByBlockIdAndIndex + +▸ **getTransactionByBlockIdAndIndex**(`blockIdentifier`, `index`): `Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | +| `index` | `number` | + +#### Returns + +`Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getTransactionByBlockIdAndIndex + +#### Defined in + +[src/provider/rpc.ts:229](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L229) + +--- + +### getTransactionReceipt + +▸ **getTransactionReceipt**(`txHash`): `Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getTransactionReceipt + +#### Defined in + +[src/provider/rpc.ts:233](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L233) + +--- + +### getTransactionTrace + +▸ **getTransactionTrace**(`txHash`): `Promise`<[`TRANSACTION_TRACE`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#transaction_trace)\> + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TRANSACTION_TRACE`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#transaction_trace)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getTransactionTrace + +#### Defined in + +[src/provider/rpc.ts:240](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L240) + +--- + +### getTransactionStatus + +▸ **getTransactionStatus**(`transactionHash`): `Promise`<[`TransactionStatus`](../namespaces/types.RPC.RPCSPEC06.md#transactionstatus)\> + +Get the status of a transaction + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------- | +| `transactionHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TransactionStatus`](../namespaces/types.RPC.RPCSPEC06.md#transactionstatus)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getTransactionStatus + +#### Defined in + +[src/provider/rpc.ts:247](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L247) + +--- + +### getSimulateTransaction + +▸ **getSimulateTransaction**(`invocations`, `options?`): `Promise`<[`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse)\> + +#### Parameters + +| Name | Type | Description | +| :------------ | :-------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `invocations` | [`AccountInvocations`](../namespaces/types.md#accountinvocations) | AccountInvocations | +| `options?` | [`getSimulateTransactionOptions`](../namespaces/types.md#getsimulatetransactionoptions) | blockIdentifier and flags to skip validation and fee charge
- blockIdentifier
- skipValidate (default false)
- skipFeeCharge (default true)
| + +#### Returns + +`Promise`<[`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getSimulateTransaction + +#### Defined in + +[src/provider/rpc.ts:258](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L258) + +--- + +### waitForTransaction + +▸ **waitForTransaction**(`txHash`, `options?`): `Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +#### Parameters + +| Name | Type | +| :--------- | :------------------------------------------------------------------------------ | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `options?` | [`waitForTransactionOptions`](../namespaces/types.md#waitfortransactionoptions) | + +#### Returns + +`Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).waitForTransaction + +#### Defined in + +[src/provider/rpc.ts:268](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L268) + +--- + +### getStorageAt + +▸ **getStorageAt**(`contractAddress`, `key`, `blockIdentifier?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `key` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getStorageAt + +#### Defined in + +[src/provider/rpc.ts:280](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L280) + +--- + +### getClassHashAt + +▸ **getClassHashAt**(`contractAddress`, `blockIdentifier?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getClassHashAt + +#### Defined in + +[src/provider/rpc.ts:288](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L288) + +--- + +### getClassByHash + +▸ **getClassByHash**(`classHash`): `Promise`<[`LegacyContractClass`](../namespaces/types.md#legacycontractclass) \| `Omit`<[`CompiledSierra`](../namespaces/types.md#compiledsierra), `"sierra_program_debug_info"`\>\> + +#### Parameters + +| Name | Type | +| :---------- | :---------------------------------------------------- | +| `classHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`LegacyContractClass`](../namespaces/types.md#legacycontractclass) \| `Omit`<[`CompiledSierra`](../namespaces/types.md#compiledsierra), `"sierra_program_debug_info"`\>\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getClassByHash + +#### Defined in + +[src/provider/rpc.ts:292](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L292) + +--- + +### getClass + +▸ **getClass**(`classHash`, `blockIdentifier?`): `Promise`<[`LegacyContractClass`](../namespaces/types.md#legacycontractclass) \| `Omit`<[`CompiledSierra`](../namespaces/types.md#compiledsierra), `"sierra_program_debug_info"`\>\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `classHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`LegacyContractClass`](../namespaces/types.md#legacycontractclass) \| `Omit`<[`CompiledSierra`](../namespaces/types.md#compiledsierra), `"sierra_program_debug_info"`\>\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getClass + +#### Defined in + +[src/provider/rpc.ts:296](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L296) + +--- + +### getClassAt + +▸ **getClassAt**(`contractAddress`, `blockIdentifier?`): `Promise`<[`LegacyContractClass`](../namespaces/types.md#legacycontractclass) \| `Omit`<[`CompiledSierra`](../namespaces/types.md#compiledsierra), `"sierra_program_debug_info"`\>\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`LegacyContractClass`](../namespaces/types.md#legacycontractclass) \| `Omit`<[`CompiledSierra`](../namespaces/types.md#compiledsierra), `"sierra_program_debug_info"`\>\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getClassAt + +#### Defined in + +[src/provider/rpc.ts:302](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L302) + +--- + +### getContractVersion + +▸ **getContractVersion**(`contractAddress`, `classHash?`, `options?`): `Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +#### Parameters + +| Name | Type | +| :---------------- | :------------------------------------------------------------------------------ | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `classHash?` | `undefined` | +| `options?` | [`getContractVersionOptions`](../namespaces/types.md#getcontractversionoptions) | + +#### Returns + +`Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getContractVersion + +#### Defined in + +[src/provider/rpc.ts:308](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L308) + +▸ **getContractVersion**(`contractAddress`, `classHash`, `options?`): `Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +#### Parameters + +| Name | Type | +| :---------------- | :------------------------------------------------------------------------------ | +| `contractAddress` | `undefined` | +| `classHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `options?` | [`getContractVersionOptions`](../namespaces/types.md#getcontractversionoptions) | + +#### Returns + +`Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getContractVersion + +#### Defined in + +[src/provider/rpc.ts:313](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L313) + +--- + +### getEstimateFee + +▸ **getEstimateFee**(`invocation`, `invocationDetails`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +#### Parameters + +| Name | Type | +| :------------------ | :---------------------------------------------------------------------------------- | +| `invocation` | [`Invocation`](../namespaces/types.md#invocation) | +| `invocationDetails` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | +| `skipValidate?` | `boolean` | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +**`Deprecated`** + +use get*type*EstimateFee (will be refactored based on type after sequencer deprecation) + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getEstimateFee + +#### Defined in + +[src/provider/rpc.ts:349](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L349) + +--- + +### getInvokeEstimateFee + +▸ **getInvokeEstimateFee**(`invocation`, `invocationDetails`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +#### Parameters + +| Name | Type | +| :------------------ | :---------------------------------------------------------------------------------- | +| `invocation` | [`Invocation`](../namespaces/types.md#invocation) | +| `invocationDetails` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | +| `skipValidate?` | `boolean` | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getInvokeEstimateFee + +#### Defined in + +[src/provider/rpc.ts:358](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L358) + +--- + +### getDeclareEstimateFee + +▸ **getDeclareEstimateFee**(`invocation`, `details`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------------------------------- | +| `invocation` | [`DeclareContractTransaction`](../namespaces/types.md#declarecontracttransaction) | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | +| `skipValidate?` | `boolean` | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getDeclareEstimateFee + +#### Defined in + +[src/provider/rpc.ts:378](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L378) + +--- + +### getDeployAccountEstimateFee + +▸ **getDeployAccountEstimateFee**(`invocation`, `details`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +#### Parameters + +| Name | Type | +| :----------------- | :-------------------------------------------------------------------------------------------- | +| `invocation` | [`DeployAccountContractTransaction`](../namespaces/types.md#deployaccountcontracttransaction) | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | +| `skipValidate?` | `boolean` | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getDeployAccountEstimateFee + +#### Defined in + +[src/provider/rpc.ts:398](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L398) + +--- + +### getEstimateFeeBulk + +▸ **getEstimateFeeBulk**(`invocations`, `options`): `Promise`<[`EstimateFeeResponseBulk`](../namespaces/types.md#estimatefeeresponsebulk)\> + +#### Parameters + +| Name | Type | +| :------------ | :------------------------------------------------------------------------------ | +| `invocations` | [`AccountInvocations`](../namespaces/types.md#accountinvocations) | +| `options` | [`getEstimateFeeBulkOptions`](../namespaces/types.md#getestimatefeebulkoptions) | + +#### Returns + +`Promise`<[`EstimateFeeResponseBulk`](../namespaces/types.md#estimatefeeresponsebulk)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getEstimateFeeBulk + +#### Defined in + +[src/provider/rpc.ts:418](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L418) + +--- + +### invokeFunction + +▸ **invokeFunction**(`functionInvocation`, `details`): `Promise`<[`InvokedTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#invokedtransaction)\> + +#### Parameters + +| Name | Type | +| :------------------- | :---------------------------------------------------------------------------------- | +| `functionInvocation` | [`Invocation`](../namespaces/types.md#invocation) | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | + +#### Returns + +`Promise`<[`InvokedTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#invokedtransaction)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).invokeFunction + +#### Defined in + +[src/provider/rpc.ts:427](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L427) + +--- + +### declareContract + +▸ **declareContract**(`transaction`, `details`): `Promise`<[`DeclaredTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#declaredtransaction)\> + +#### Parameters + +| Name | Type | +| :------------ | :---------------------------------------------------------------------------------- | +| `transaction` | [`DeclareContractTransaction`](../namespaces/types.md#declarecontracttransaction) | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | + +#### Returns + +`Promise`<[`DeclaredTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#declaredtransaction)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).declareContract + +#### Defined in + +[src/provider/rpc.ts:434](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L434) + +--- + +### deployAccountContract + +▸ **deployAccountContract**(`transaction`, `details`): `Promise`<[`DeployedAccountTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#deployedaccounttransaction)\> + +#### Parameters + +| Name | Type | +| :------------ | :-------------------------------------------------------------------------------------------- | +| `transaction` | [`DeployAccountContractTransaction`](../namespaces/types.md#deployaccountcontracttransaction) | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | + +#### Returns + +`Promise`<[`DeployedAccountTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#deployedaccounttransaction)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).deployAccountContract + +#### Defined in + +[src/provider/rpc.ts:441](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L441) + +--- + +### callContract + +▸ **callContract**(`call`, `blockIdentifier?`): `Promise`<`string`[]\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `call` | [`Call`](../namespaces/types.md#call) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`string`[]\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).callContract + +#### Defined in + +[src/provider/rpc.ts:451](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L451) + +--- + +### estimateMessageFee + +▸ **estimateMessageFee**(`message`, `blockIdentifier?`): `Promise`<[`FEE_ESTIMATE`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#fee_estimate)\> + +NEW: Estimate the fee for a message from L1 + +#### Parameters + +| Name | Type | Description | +| :----------------- | :------------------------------------------------------------------------- | :-------------- | +| `message` | [`MSG_FROM_L1`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#msg_from_l1) | Message From L1 | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | - | + +#### Returns + +`Promise`<[`FEE_ESTIMATE`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#fee_estimate)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).estimateMessageFee + +#### Defined in + +[src/provider/rpc.ts:459](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L459) + +--- + +### getSyncingStats + +▸ **getSyncingStats**(): `Promise`<[`Syncing`](../namespaces/types.RPC.RPCSPEC06.md#syncing)\> + +Returns an object about the sync status, or false if the node is not synching + +#### Returns + +`Promise`<[`Syncing`](../namespaces/types.RPC.RPCSPEC06.md#syncing)\> + +Object with the stats data + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getSyncingStats + +#### Defined in + +[src/provider/rpc.ts:467](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L467) + +--- + +### getEvents + +▸ **getEvents**(`eventFilter`): `Promise`<[`EVENTS_CHUNK`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#events_chunk)\> + +Returns all events matching the given filter + +#### Parameters + +| Name | Type | +| :------------ | :-------------------------------------------------------------------- | +| `eventFilter` | [`EventFilter`](../namespaces/types.RPC.RPCSPEC07.API.md#eventfilter) | + +#### Returns + +`Promise`<[`EVENTS_CHUNK`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#events_chunk)\> + +events and the pagination of the events + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getEvents + +#### Defined in + +[src/provider/rpc.ts:475](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L475) + +--- + +### verifyMessageInStarknet + +▸ **verifyMessageInStarknet**(`message`, `signature`, `accountAddress`, `signatureVerificationFunctionName?`, `signatureVerificationResponse?`): `Promise`<`boolean`\> + +Verify in Starknet a signature of a TypedData object or of a given hash. + +#### Parameters + +| Name | Type | Description | +| :------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------ | +| `message` | [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) \| [`BigNumberish`](../namespaces/types.md#bignumberish) | TypedData object to be verified, or message hash to be verified. | +| `signature` | [`Signature`](../namespaces/types.md#signature) | signature of the message. | +| `accountAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | address of the account that has signed the message. | +| `signatureVerificationFunctionName?` | `string` | if account contract with non standard account verification function name. | +| `signatureVerificationResponse?` | `Object` | if account contract with non standard response of verification function. | +| `signatureVerificationResponse.okResponse` | `string`[] | - | +| `signatureVerificationResponse.nokResponse` | `string`[] | - | +| `signatureVerificationResponse.error` | `string`[] | - | + +#### Returns + +`Promise`<`boolean`\> + +```typescript +const myTypedMessage: TypedMessage = .... ; +const messageHash = typedData.getMessageHash(myTypedMessage,accountAddress); +const sign: WeierstrassSignatureType = ec.starkCurve.sign(messageHash, privateKey); +const accountAddress = "0x43b7240d227aa2fb8434350b3321c40ac1b88c7067982549e7609870621b535"; +const result1 = myRpcProvider.verifyMessageInStarknet(myTypedMessage, sign, accountAddress); +const result2 = myRpcProvider.verifyMessageInStarknet(messageHash, sign, accountAddress); +// result1 = result2 = true +``` + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).verifyMessageInStarknet + +#### Defined in + +[src/provider/rpc.ts:497](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L497) + +--- + +### isClassDeclared + +▸ **isClassDeclared**(`contractClassIdentifier`, `blockIdentifier?`): `Promise`<`boolean`\> + +Test if class is already declared from ContractClassIdentifier +Helper method using getClass + +#### Parameters + +| Name | Type | +| :------------------------ | :-------------------------------------------------------------------------- | +| `contractClassIdentifier` | [`ContractClassIdentifier`](../namespaces/types.md#contractclassidentifier) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`boolean`\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).isClassDeclared + +#### Defined in + +[src/provider/rpc.ts:583](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L583) + +--- + +### prepareInvocations + +▸ **prepareInvocations**(`invocations`): `Promise`<[`Invocations`](../namespaces/types.md#invocations)\> + +Build bulk invocations with auto-detect declared class + +1. Test if class is declared if not declare it preventing already declared class error and not declared class errors +2. Order declarations first + +#### Parameters + +| Name | Type | +| :------------ | :-------------------------------------------------- | +| `invocations` | [`Invocations`](../namespaces/types.md#invocations) | + +#### Returns + +`Promise`<[`Invocations`](../namespaces/types.md#invocations)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).prepareInvocations + +#### Defined in + +[src/provider/rpc.ts:614](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L614) + +--- + +### getStarkName + +▸ **getStarkName**(`address`, `StarknetIdContract?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :-------------------- | :---------------------------------------------------- | +| `address` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `StarknetIdContract?` | `string` | + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getStarkName + +#### Defined in + +[src/provider/extensions/starknetId.ts:22](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/extensions/starknetId.ts#L22) + +--- + +### getAddressFromStarkName + +▸ **getAddressFromStarkName**(`name`, `StarknetIdContract?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :-------------------- | :------- | +| `name` | `string` | +| `StarknetIdContract?` | `string` | + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getAddressFromStarkName + +#### Defined in + +[src/provider/extensions/starknetId.ts:31](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/extensions/starknetId.ts#L31) + +--- + +### getStarkProfile + +▸ **getStarkProfile**(`address`, `StarknetIdContract?`, `StarknetIdIdentityContract?`, `StarknetIdVerifierContract?`, `StarknetIdPfpContract?`, `StarknetIdPopContract?`, `StarknetIdMulticallContract?`): `Promise`<[`StarkProfile`](../namespaces/types.md#starkprofile)\> + +#### Parameters + +| Name | Type | +| :----------------------------- | :---------------------------------------------------- | +| `address` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `StarknetIdContract?` | `string` | +| `StarknetIdIdentityContract?` | `string` | +| `StarknetIdVerifierContract?` | `string` | +| `StarknetIdPfpContract?` | `string` | +| `StarknetIdPopContract?` | `string` | +| `StarknetIdMulticallContract?` | `string` | + +#### Returns + +`Promise`<[`StarkProfile`](../namespaces/types.md#starkprofile)\> + +#### Inherited from + +Mixin(BaseRpcProvider, StarknetId).getStarkProfile + +#### Defined in + +[src/provider/extensions/starknetId.ts:40](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/extensions/starknetId.ts#L40) diff --git a/www/versioned_docs/version-6.24.1/API/classes/ProviderInterface.md b/www/versioned_docs/version-6.24.1/API/classes/ProviderInterface.md new file mode 100644 index 000000000..14e6f0633 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/ProviderInterface.md @@ -0,0 +1,698 @@ +--- +id: 'ProviderInterface' +title: 'Class: ProviderInterface' +sidebar_label: 'ProviderInterface' +sidebar_position: 0 +custom_edit_url: null +--- + +## Hierarchy + +- **`ProviderInterface`** + + ↳ [`AccountInterface`](AccountInterface.md) + +## Constructors + +### constructor + +• **new ProviderInterface**(): [`ProviderInterface`](ProviderInterface.md) + +#### Returns + +[`ProviderInterface`](ProviderInterface.md) + +## Properties + +### channel + +• `Abstract` **channel**: [`RpcChannel`](RPC06.RpcChannel.md) \| [`RpcChannel`](RPC07.RpcChannel.md) + +#### Defined in + +[src/provider/interface.ts:37](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L37) + +## Methods + +### getChainId + +▸ **getChainId**(): `Promise`<[`StarknetChainId`](../enums/constants.StarknetChainId.md)\> + +Gets the Starknet chain Id + +#### Returns + +`Promise`<[`StarknetChainId`](../enums/constants.StarknetChainId.md)\> + +the chain Id + +#### Defined in + +[src/provider/interface.ts:44](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L44) + +--- + +### callContract + +▸ **callContract**(`call`, `blockIdentifier?`): `Promise`<[`CallContractResponse`](../namespaces/types.md#callcontractresponse)\> + +Calls a function on the Starknet contract. + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :----------------------- | +| `call` | [`Call`](../namespaces/types.md#call) | transaction to be called | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<[`CallContractResponse`](../namespaces/types.md#callcontractresponse)\> + +the result of the function on the smart contract. + +#### Defined in + +[src/provider/interface.ts:53](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L53) + +--- + +### getBlock + +▸ **getBlock**(`blockIdentifier?`): `Promise`<[`PendingBlock`](../namespaces/types.md#pendingblock)\> + +Gets the block information + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------- | :--------------- | +| `blockIdentifier?` | `"pending"` | block identifier | + +#### Returns + +`Promise`<[`PendingBlock`](../namespaces/types.md#pendingblock)\> + +the block object + +#### Defined in + +[src/provider/interface.ts:64](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L64) + +▸ **getBlock**(`blockIdentifier`): `Promise`<[`Block`](../namespaces/types.md#block)\> + +#### Parameters + +| Name | Type | +| :---------------- | :--------- | +| `blockIdentifier` | `"latest"` | + +#### Returns + +`Promise`<[`Block`](../namespaces/types.md#block)\> + +#### Defined in + +[src/provider/interface.ts:65](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L65) + +▸ **getBlock**(`blockIdentifier`): `Promise`<[`GetBlockResponse`](../namespaces/types.md#getblockresponse)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`GetBlockResponse`](../namespaces/types.md#getblockresponse)\> + +#### Defined in + +[src/provider/interface.ts:66](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L66) + +--- + +### getClassAt + +▸ **getClassAt**(`contractAddress`, `blockIdentifier?`): `Promise`<[`ContractClassResponse`](../namespaces/types.md#contractclassresponse)\> + +Gets the contract class of the deployed contract. + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------- | +| `contractAddress` | `string` | contract address | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<[`ContractClassResponse`](../namespaces/types.md#contractclassresponse)\> + +Contract class of compiled contract + +#### Defined in + +[src/provider/interface.ts:75](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L75) + +--- + +### getL1GasPrice + +▸ **getL1GasPrice**(`blockIdentifier`): `Promise`<`string`\> + +Gets the price of l1 gas in the block + +#### Parameters + +| Name | Type | Description | +| :---------------- | :---------------------------------------------------------- | :--------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<`string`\> + +gas price of the block + +#### Defined in + +[src/provider/interface.ts:86](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L86) + +--- + +### getL1MessageHash + +▸ **getL1MessageHash**(`l2TxHash`): `Promise`<`string`\> + +Get L1 message hash from L2 transaction hash + +#### Parameters + +| Name | Type | Description | +| :--------- | :---------------------------------------------------- | :------------------ | +| `l2TxHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | L2 transaction hash | + +#### Returns + +`Promise`<`string`\> + +Hex string of L1 message hash + +**`Example`** + +In Sepolia Testnet : + +```typescript +const result = provider.getL1MessageHash( + '0x28dfc05eb4f261b37ddad451ff22f1d08d4e3c24dc646af0ec69fa20e096819' +); +// result = '0x55b3f8b6e607fffd9b4d843dfe8f9b5c05822cd94fcad8797deb01d77805532a' +``` + +#### Defined in + +[src/provider/interface.ts:99](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L99) + +--- + +### getClassHashAt + +▸ **getClassHashAt**(`contractAddress`, `blockIdentifier?`): `Promise`<`string`\> + +Returns the contract class hash in the given block for the contract deployed at the given address + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------- | +| `contractAddress` | `string` | contract address | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<`string`\> + +Class hash + +#### Defined in + +[src/provider/interface.ts:108](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L108) + +--- + +### getClassByHash + +▸ **getClassByHash**(`classHash`): `Promise`<[`ContractClassResponse`](../namespaces/types.md#contractclassresponse)\> + +Returns the contract class deployed under the given class hash. + +#### Parameters + +| Name | Type | Description | +| :---------- | :------- | :---------- | +| `classHash` | `string` | class hash | + +#### Returns + +`Promise`<[`ContractClassResponse`](../namespaces/types.md#contractclassresponse)\> + +Contract class of compiled contract + +#### Defined in + +[src/provider/interface.ts:119](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L119) + +--- + +### getNonceForAddress + +▸ **getNonceForAddress**(`contractAddress`, `blockIdentifier?`): `Promise`<`string`\> + +Returns the nonce associated with the given address in the given block + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------- | +| `contractAddress` | `string` | contract address | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | - | + +#### Returns + +`Promise`<`string`\> + +the hex nonce + +#### Defined in + +[src/provider/interface.ts:127](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L127) + +--- + +### getStorageAt + +▸ **getStorageAt**(`contractAddress`, `key`, `blockIdentifier?`): `Promise`<`string`\> + +Get the value of the storage (contract's variable) at the given address and key + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------------------------------------------------- | +| `contractAddress` | `string` | | +| `key` | [`BigNumberish`](../namespaces/types.md#bignumberish) | from getStorageVarAddress('') (WIP) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<`string`\> + +the value of the storage variable + +#### Defined in + +[src/provider/interface.ts:140](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L140) + +--- + +### getTransaction + +▸ **getTransaction**(`transactionHash`): `Promise`<`TransactionWithHash`\> + +Gets the transaction information from a tx id. + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------- | +| `transactionHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<`TransactionWithHash`\> + +the transaction object { transaction_id, status, transaction, block_number?, block_number?, transaction_index?, transaction_failure_reason? } + +#### Defined in + +[src/provider/interface.ts:152](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L152) + +--- + +### getTransactionReceipt + +▸ **getTransactionReceipt**(`transactionHash`): `Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +Gets the transaction receipt from a tx hash. + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------- | +| `transactionHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +the transaction receipt object + +#### Defined in + +[src/provider/interface.ts:160](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L160) + +--- + +### deployAccountContract + +▸ **deployAccountContract**(`payload`, `details`): `Promise`<[`DeployContractResponse`](../interfaces/types.DeployContractResponse.md)\> + +Deploys a given compiled Account contract (json) to starknet + +#### Parameters + +| Name | Type | Description | +| :-------- | :------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------ | +| `payload` | [`DeployAccountContractPayload`](../namespaces/types.md#deployaccountcontractpayload) | payload to be deployed containing: - compiled contract code - constructor calldata - address salt | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | - | + +#### Returns + +`Promise`<[`DeployContractResponse`](../interfaces/types.DeployContractResponse.md)\> + +a confirmation of sending a transaction on the starknet contract + +#### Defined in + +[src/provider/interface.ts:173](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L173) + +--- + +### invokeFunction + +▸ **invokeFunction**(`invocation`, `details`): `Promise`<\{ `transaction_hash`: `string` }\> + +Invokes a function on starknet + +#### Parameters + +| Name | Type | Description | +| :----------- | :---------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `invocation` | [`Invocation`](../namespaces/types.md#invocation) | the invocation object containing: - contractAddress - the address of the contract - entrypoint - the entrypoint of the contract - calldata - (defaults to []) the calldata - signature - (defaults to []) the signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | optional details containing: - nonce - optional nonce - version - optional version - maxFee - optional maxFee | + +#### Returns + +`Promise`<\{ `transaction_hash`: `string` }\> + +response from addTransaction + +**`Deprecated`** + +This method won't be supported as soon as fees are mandatory. Should not be used outside of Account class + +#### Defined in + +[src/provider/interface.ts:193](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L193) + +--- + +### declareContract + +▸ **declareContract**(`transaction`, `details`): `Promise`<\{ `class_hash`: `string` ; `transaction_hash`: `string` }\> + +Declares a given compiled contract (json) to starknet + +#### Parameters + +| Name | Type | Description | +| :------------ | :---------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------- | +| `transaction` | [`DeclareContractTransaction`](../namespaces/types.md#declarecontracttransaction) | transaction payload to be deployed containing: - compiled contract code - sender address - signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | Invocation 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 + +#### Defined in + +[src/provider/interface.ts:210](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L210) + +--- + +### getEstimateFee + +▸ **getEstimateFee**(`invocation`, `details`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimates the fee for a given INVOKE transaction + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `invocation` | [`Invocation`](../namespaces/types.md#invocation) | the invocation object containing: - contractAddress - the address of the contract - entrypoint - the entrypoint of the contract - calldata - (defaults to []) the calldata - signature - (defaults to []) the signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | optional details containing: - nonce - optional nonce - version - optional version | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | (optional) block identifier | +| `skipValidate?` | `boolean` | (optional) skip cairo **validate** method | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +the estimated fee + +**`Deprecated`** + +Please use getInvokeEstimateFee or getDeclareEstimateFee instead. Should not be used outside of Account class + +#### Defined in + +[src/provider/interface.ts:231](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L231) + +--- + +### getInvokeEstimateFee + +▸ **getInvokeEstimateFee**(`invocation`, `details`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimates the fee for a given INVOKE transaction + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `invocation` | [`Invocation`](../namespaces/types.md#invocation) | the invocation object containing: - contractAddress - the address of the contract - entrypoint - the entrypoint of the contract - calldata - (defaults to []) the calldata - signature - (defaults to []) the signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | optional details containing: - nonce - optional nonce - version - optional version | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | (optional) block identifier | +| `skipValidate?` | `boolean` | (optional) skip cairo **validate** method | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +the estimated fee + +#### Defined in + +[src/provider/interface.ts:253](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L253) + +--- + +### getDeclareEstimateFee + +▸ **getDeclareEstimateFee**(`transaction`, `details`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimates the fee for a given DECLARE transaction + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------ | +| `transaction` | [`DeclareContractTransaction`](../namespaces/types.md#declarecontracttransaction) | transaction payload to be declared containing: - compiled contract code - sender address - signature - (defaults to []) the signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | optional details containing: - nonce - version - optional version - optional maxFee | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | (optional) block identifier | +| `skipValidate?` | `boolean` | (optional) skip cairo **validate** method | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +the estimated fee + +#### Defined in + +[src/provider/interface.ts:275](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L275) + +--- + +### getDeployAccountEstimateFee + +▸ **getDeployAccountEstimateFee**(`transaction`, `details`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimates the fee for a given DEPLOY_ACCOUNT transaction + +#### Parameters + +| Name | Type | Description | +| :----------------- | :-------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | +| `transaction` | [`DeployAccountContractTransaction`](../namespaces/types.md#deployaccountcontracttransaction) | transaction payload to be deployed containing: - classHash - constructorCalldata - addressSalt - signature - (defaults to []) the signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | optional details containing: - nonce - version - optional version - optional maxFee | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | (optional) block identifier | +| `skipValidate?` | `boolean` | (optional) skip cairo **validate** method | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +the estimated fee + +#### Defined in + +[src/provider/interface.ts:298](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L298) + +--- + +### getEstimateFeeBulk + +▸ **getEstimateFeeBulk**(`invocations`, `options?`): `Promise`<[`EstimateFeeResponseBulk`](../namespaces/types.md#estimatefeeresponsebulk)\> + +Estimates the fee for a list of INVOKE transaction + +#### Parameters + +| Name | Type | Description | +| :------------ | :------------------------------------------------------------------------------ | :----------------------------------------------------------------------- | +| `invocations` | [`AccountInvocations`](../namespaces/types.md#accountinvocations) | AccountInvocations - Complete invocations array with account details | +| `options?` | [`getEstimateFeeBulkOptions`](../namespaces/types.md#getestimatefeebulkoptions) | getEstimateFeeBulkOptions - (optional) blockIdentifier - BlockIdentifier | + +#### Returns + +`Promise`<[`EstimateFeeResponseBulk`](../namespaces/types.md#estimatefeeresponsebulk)\> + +the estimated fee + +#### Defined in + +[src/provider/interface.ts:313](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L313) + +--- + +### waitForTransaction + +▸ **waitForTransaction**(`txHash`, `options?`): `Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +Wait for the transaction to be accepted + +#### Parameters + +| Name | Type | Description | +| :--------- | :------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | transaction hash | +| `options?` | [`waitForTransactionOptions`](../namespaces/types.md#waitfortransactionoptions) | waitForTransactionOptions - (optional) retryInterval: number \| undefined; - (optional) successStates: TransactionStatus[] \| undefined; | + +#### Returns + +`Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +GetTransactionReceiptResponse + +#### Defined in + +[src/provider/interface.ts:326](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L326) + +--- + +### getSimulateTransaction + +▸ **getSimulateTransaction**(`invocations`, `options?`): `Promise`<[`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse)\> + +Simulates the transaction and returns the transaction trace and estimated fee. + +#### Parameters + +| Name | Type | Description | +| :------------ | :-------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `invocations` | [`AccountInvocations`](../namespaces/types.md#accountinvocations) | AccountInvocations - Complete invocations array with account details | +| `options?` | [`getSimulateTransactionOptions`](../namespaces/types.md#getsimulatetransactionoptions) | getSimulateTransactionOptions - (optional) blockIdentifier - block identifier - (optional) skipValidate - skip cairo **validate** method - (optional) skipExecute - skip cairo **execute** method | + +#### Returns + +`Promise`<[`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse)\> + +an array of transaction trace and estimated fee + +#### Defined in + +[src/provider/interface.ts:341](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L341) + +--- + +### getStateUpdate + +▸ **getStateUpdate**(`blockIdentifier?`): `Promise`<[`StateUpdateResponse`](../namespaces/types.md#stateupdateresponse)\> + +Gets the state changes in a specific block (result of executing the requested block) + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<[`StateUpdateResponse`](../namespaces/types.md#stateupdateresponse)\> + +StateUpdateResponse + +#### Defined in + +[src/provider/interface.ts:352](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L352) + +--- + +### getContractVersion + +▸ **getContractVersion**(`contractAddress`, `classHash?`, `options?`): `Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +Gets the contract version from the provided address + +#### Parameters + +| Name | Type | Description | +| :---------------- | :------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `contractAddress` | `string` | string | +| `classHash?` | `undefined` | undefined | +| `options?` | [`getContractVersionOptions`](../namespaces/types.md#getcontractversionoptions) | getContractVersionOptions - (optional) compiler - (default true) extract compiler version using type tactic from abi - (optional) blockIdentifier - block identifier | + +#### Returns + +`Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +#### Defined in + +[src/provider/interface.ts:362](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L362) + +▸ **getContractVersion**(`contractAddress`, `classHash`, `options?`): `Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +Gets the contract version from the provided address + +#### Parameters + +| Name | Type | Description | +| :---------------- | :------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `contractAddress` | `undefined` | undefined | +| `classHash` | `string` | | +| `options?` | [`getContractVersionOptions`](../namespaces/types.md#getcontractversionoptions) | getContractVersionOptions - (optional) compiler - (default true) extract compiler version using type tactic from abi - (optional) blockIdentifier - block identifier | + +#### Returns + +`Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +#### Defined in + +[src/provider/interface.ts:376](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/interface.ts#L376) diff --git a/www/versioned_docs/version-6.24.1/API/classes/RPC06.RpcChannel.md b/www/versioned_docs/version-6.24.1/API/classes/RPC06.RpcChannel.md new file mode 100644 index 000000000..385ebcd7a --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/RPC06.RpcChannel.md @@ -0,0 +1,864 @@ +--- +id: 'RPC06.RpcChannel' +title: 'Class: RpcChannel' +sidebar_label: 'RpcChannel' +custom_edit_url: null +--- + +[RPC06](../namespaces/RPC06.md).RpcChannel + +## Constructors + +### constructor + +• **new RpcChannel**(`optionsOrProvider?`): [`RpcChannel`](RPC06.RpcChannel.md) + +#### Parameters + +| Name | Type | +| :------------------- | :---------------------------------------------------------------- | +| `optionsOrProvider?` | [`RpcProviderOptions`](../namespaces/types.md#rpcprovideroptions) | + +#### Returns + +[`RpcChannel`](RPC06.RpcChannel.md) + +#### Defined in + +[src/channel/rpc_0_6.ts:64](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L64) + +## Properties + +### nodeUrl + +• **nodeUrl**: `string` + +#### Defined in + +[src/channel/rpc_0_6.ts:42](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L42) + +--- + +### headers + +• **headers**: `object` + +#### Defined in + +[src/channel/rpc_0_6.ts:44](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L44) + +--- + +### requestId + +• **requestId**: `number` + +#### Defined in + +[src/channel/rpc_0_6.ts:46](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L46) + +--- + +### blockIdentifier + +• `Readonly` **blockIdentifier**: [`BlockIdentifier`](../namespaces/types.md#blockidentifier) + +#### Defined in + +[src/channel/rpc_0_6.ts:48](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L48) + +--- + +### retries + +• `Readonly` **retries**: `number` + +#### Defined in + +[src/channel/rpc_0_6.ts:50](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L50) + +--- + +### waitMode + +• `Readonly` **waitMode**: `boolean` + +#### Defined in + +[src/channel/rpc_0_6.ts:52](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L52) + +--- + +### chainId + +• `Private` `Optional` **chainId**: [`StarknetChainId`](../enums/constants.StarknetChainId.md) + +#### Defined in + +[src/channel/rpc_0_6.ts:54](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L54) + +--- + +### specVersion + +• `Private` `Optional` **specVersion**: `string` + +#### Defined in + +[src/channel/rpc_0_6.ts:56](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L56) + +--- + +### transactionRetryIntervalFallback + +• `Private` `Optional` **transactionRetryIntervalFallback**: `number` + +#### Defined in + +[src/channel/rpc_0_6.ts:58](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L58) + +--- + +### batchClient + +• `Private` `Optional` **batchClient**: [`BatchClient`](BatchClient.md) + +#### Defined in + +[src/channel/rpc_0_6.ts:60](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L60) + +--- + +### baseFetch + +• `Private` **baseFetch**: (`input`: `RequestInfo` \| `URL`, `init?`: `RequestInit`) => `Promise`<`Response`\> + +#### Type declaration + +▸ (`input`, `init?`): `Promise`<`Response`\> + +##### Parameters + +| Name | Type | +| :------ | :--------------------- | +| `input` | `RequestInfo` \| `URL` | +| `init?` | `RequestInit` | + +##### Returns + +`Promise`<`Response`\> + +#### Defined in + +[src/channel/rpc_0_6.ts:62](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L62) + +## Accessors + +### transactionRetryIntervalDefault + +• `get` **transactionRetryIntervalDefault**(): `number` + +#### Returns + +`number` + +#### Defined in + +[src/channel/rpc_0_6.ts:105](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L105) + +## Methods + +### setChainId + +▸ **setChainId**(`chainId`): `void` + +#### Parameters + +| Name | Type | +| :-------- | :--------------------------------------------------------- | +| `chainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | + +#### Returns + +`void` + +#### Defined in + +[src/channel/rpc_0_6.ts:109](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L109) + +--- + +### fetch + +▸ **fetch**(`method`, `params?`, `id?`): `Promise`<`Response`\> + +#### Parameters + +| Name | Type | Default value | +| :-------- | :------------------- | :------------ | +| `method` | `string` | `undefined` | +| `params?` | `object` | `undefined` | +| `id` | `string` \| `number` | `0` | + +#### Returns + +`Promise`<`Response`\> + +#### Defined in + +[src/channel/rpc_0_6.ts:113](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L113) + +--- + +### errorHandler + +▸ **errorHandler**(`method`, `params`, `rpcError?`, `otherError?`): `void` + +#### Parameters + +| Name | Type | +| :------------ | :----------------------------------------------- | +| `method` | `string` | +| `params` | `any` | +| `rpcError?` | [`Error`](../namespaces/types.RPC.JRPC.md#error) | +| `otherError?` | `any` | + +#### Returns + +`void` + +#### Defined in + +[src/channel/rpc_0_6.ts:127](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L127) + +--- + +### fetchEndpoint + +▸ **fetchEndpoint**<`T`\>(`method`, `params?`): `Promise`<[`Methods`](../namespaces/types.RPC.RPCSPEC06.md#methods)[`T`][``"result"``]\> + +#### Type parameters + +| Name | Type | +| :--- | :-------------------------------------------------------------------------- | +| `T` | extends keyof `ReadMethods` \| keyof `WriteMethods` \| keyof `TraceMethods` | + +#### Parameters + +| Name | Type | +| :-------- | :--------------------------------------------------------------------------- | +| `method` | `T` | +| `params?` | [`Methods`](../namespaces/types.RPC.RPCSPEC06.md#methods)[`T`][``"params"``] | + +#### Returns + +`Promise`<[`Methods`](../namespaces/types.RPC.RPCSPEC06.md#methods)[`T`][``"result"``]\> + +#### Defined in + +[src/channel/rpc_0_6.ts:139](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L139) + +--- + +### getChainId + +▸ **getChainId**(): `Promise`<[`StarknetChainId`](../enums/constants.StarknetChainId.md)\> + +#### Returns + +`Promise`<[`StarknetChainId`](../enums/constants.StarknetChainId.md)\> + +#### Defined in + +[src/channel/rpc_0_6.ts:164](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L164) + +--- + +### getSpecVersion + +▸ **getSpecVersion**(): `Promise`<`string`\> + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +[src/channel/rpc_0_6.ts:169](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L169) + +--- + +### getNonceForAddress + +▸ **getNonceForAddress**(`contractAddress`, `blockIdentifier?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +[src/channel/rpc_0_6.ts:174](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L174) + +--- + +### getBlockLatestAccepted + +▸ **getBlockLatestAccepted**(): `Promise`<[`BlockHashAndNumber`](../namespaces/types.RPC.RPCSPEC06.md#blockhashandnumber)\> + +Get the most recent accepted block hash and number + +#### Returns + +`Promise`<[`BlockHashAndNumber`](../namespaces/types.RPC.RPCSPEC06.md#blockhashandnumber)\> + +#### Defined in + +[src/channel/rpc_0_6.ts:189](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L189) + +--- + +### getBlockNumber + +▸ **getBlockNumber**(): `Promise`<`number`\> + +Get the most recent accepted block number +redundant use getBlockLatestAccepted(); + +#### Returns + +`Promise`<`number`\> + +Number of the latest block + +#### Defined in + +[src/channel/rpc_0_6.ts:198](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L198) + +--- + +### getBlockWithTxHashes + +▸ **getBlockWithTxHashes**(`blockIdentifier?`): `Promise`<[`BlockWithTxHashes`](../namespaces/types.RPC.RPCSPEC06.md#blockwithtxhashes)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`BlockWithTxHashes`](../namespaces/types.RPC.RPCSPEC06.md#blockwithtxhashes)\> + +#### Defined in + +[src/channel/rpc_0_6.ts:202](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L202) + +--- + +### getBlockWithTxs + +▸ **getBlockWithTxs**(`blockIdentifier?`): `Promise`<[`BlockWithTxs`](../namespaces/types.RPC.RPCSPEC06.md#blockwithtxs)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`BlockWithTxs`](../namespaces/types.RPC.RPCSPEC06.md#blockwithtxs)\> + +#### Defined in + +[src/channel/rpc_0_6.ts:207](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L207) + +--- + +### getBlockStateUpdate + +▸ **getBlockStateUpdate**(`blockIdentifier?`): `Promise`<[`StateUpdate`](../namespaces/types.RPC.RPCSPEC06.md#stateupdate)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`StateUpdate`](../namespaces/types.RPC.RPCSPEC06.md#stateupdate)\> + +#### Defined in + +[src/channel/rpc_0_6.ts:212](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L212) + +--- + +### getBlockTransactionsTraces + +▸ **getBlockTransactionsTraces**(`blockIdentifier?`): `Promise`<[`BlockTransactionsTraces`](../namespaces/types.RPC.RPCSPEC06.md#blocktransactionstraces)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`BlockTransactionsTraces`](../namespaces/types.RPC.RPCSPEC06.md#blocktransactionstraces)\> + +#### Defined in + +[src/channel/rpc_0_6.ts:217](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L217) + +--- + +### getBlockTransactionCount + +▸ **getBlockTransactionCount**(`blockIdentifier?`): `Promise`<`number`\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`number`\> + +#### Defined in + +[src/channel/rpc_0_6.ts:222](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L222) + +--- + +### getTransactionByHash + +▸ **getTransactionByHash**(`txHash`): `Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +#### Defined in + +[src/channel/rpc_0_6.ts:227](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L227) + +--- + +### getTransactionByBlockIdAndIndex + +▸ **getTransactionByBlockIdAndIndex**(`blockIdentifier`, `index`): `Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | +| `index` | `number` | + +#### Returns + +`Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +#### Defined in + +[src/channel/rpc_0_6.ts:234](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L234) + +--- + +### getTransactionReceipt + +▸ **getTransactionReceipt**(`txHash`): `Promise`<[`TransactionReceipt`](../namespaces/types.RPC.RPCSPEC06.md#transactionreceipt)\> + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TransactionReceipt`](../namespaces/types.RPC.RPCSPEC06.md#transactionreceipt)\> + +#### Defined in + +[src/channel/rpc_0_6.ts:239](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L239) + +--- + +### getTransactionTrace + +▸ **getTransactionTrace**(`txHash`): `Promise`<[`TRANSACTION_TRACE`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#transaction_trace)\> + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TRANSACTION_TRACE`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#transaction_trace)\> + +#### Defined in + +[src/channel/rpc_0_6.ts:244](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L244) + +--- + +### getTransactionStatus + +▸ **getTransactionStatus**(`transactionHash`): `Promise`<[`TransactionStatus`](../namespaces/types.RPC.RPCSPEC06.md#transactionstatus)\> + +Get the status of a transaction + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------- | +| `transactionHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TransactionStatus`](../namespaces/types.RPC.RPCSPEC06.md#transactionstatus)\> + +#### Defined in + +[src/channel/rpc_0_6.ts:252](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L252) + +--- + +### simulateTransaction + +▸ **simulateTransaction**(`invocations`, `simulateTransactionOptions?`): `Promise`<[`SimulateTransactionResponse`](../namespaces/types.RPC.RPCSPEC06.md#simulatetransactionresponse)\> + +#### Parameters + +| Name | Type | Description | +| :--------------------------- | :-------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `invocations` | [`AccountInvocations`](../namespaces/types.md#accountinvocations) | AccountInvocations | +| `simulateTransactionOptions` | [`getSimulateTransactionOptions`](../namespaces/types.md#getsimulatetransactionoptions) | blockIdentifier and flags to skip validation and fee charge
- blockIdentifier
- skipValidate (default false)
- skipFeeCharge (default true)
| + +#### Returns + +`Promise`<[`SimulateTransactionResponse`](../namespaces/types.RPC.RPCSPEC06.md#simulatetransactionresponse)\> + +#### Defined in + +[src/channel/rpc_0_6.ts:264](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L264) + +--- + +### waitForTransaction + +▸ **waitForTransaction**(`txHash`, `options?`): `Promise`<[`TXN_RECEIPT`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#txn_receipt)\> + +#### Parameters + +| Name | Type | +| :--------- | :------------------------------------------------------------------------------ | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `options?` | [`waitForTransactionOptions`](../namespaces/types.md#waitfortransactionoptions) | + +#### Returns + +`Promise`<[`TXN_RECEIPT`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#txn_receipt)\> + +#### Defined in + +[src/channel/rpc_0_6.ts:285](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L285) + +--- + +### getStorageAt + +▸ **getStorageAt**(`contractAddress`, `key`, `blockIdentifier?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `key` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +[src/channel/rpc_0_6.ts:367](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L367) + +--- + +### getClassHashAt + +▸ **getClassHashAt**(`contractAddress`, `blockIdentifier?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +[src/channel/rpc_0_6.ts:382](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L382) + +--- + +### getClass + +▸ **getClass**(`classHash`, `blockIdentifier?`): `Promise`<[`ContractClass`](../namespaces/types.RPC.RPCSPEC06.md#contractclass)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `classHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`ContractClass`](../namespaces/types.RPC.RPCSPEC06.md#contractclass)\> + +#### Defined in + +[src/channel/rpc_0_6.ts:394](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L394) + +--- + +### getClassAt + +▸ **getClassAt**(`contractAddress`, `blockIdentifier?`): `Promise`<[`ContractClass`](../namespaces/types.RPC.RPCSPEC06.md#contractclass)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`ContractClass`](../namespaces/types.RPC.RPCSPEC06.md#contractclass)\> + +#### Defined in + +[src/channel/rpc_0_6.ts:406](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L406) + +--- + +### getEstimateFee + +▸ **getEstimateFee**(`invocations`, `«destructured»`): `Promise`<[`FEE_ESTIMATE`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#fee_estimate)[]\> + +#### Parameters + +| Name | Type | +| :--------------- | :------------------------------------------------------------------------------ | +| `invocations` | [`AccountInvocations`](../namespaces/types.md#accountinvocations) | +| `«destructured»` | [`getEstimateFeeBulkOptions`](../namespaces/types.md#getestimatefeebulkoptions) | + +#### Returns + +`Promise`<[`FEE_ESTIMATE`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#fee_estimate)[]\> + +#### Defined in + +[src/channel/rpc_0_6.ts:418](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L418) + +--- + +### invoke + +▸ **invoke**(`functionInvocation`, `details`): `Promise`<[`InvokedTransaction`](../namespaces/types.RPC.RPCSPEC06.md#invokedtransaction)\> + +#### Parameters + +| Name | Type | +| :------------------- | :---------------------------------------------------------------------------------- | +| `functionInvocation` | [`Invocation`](../namespaces/types.md#invocation) | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | + +#### Returns + +`Promise`<[`InvokedTransaction`](../namespaces/types.RPC.RPCSPEC06.md#invokedtransaction)\> + +#### Defined in + +[src/channel/rpc_0_6.ts:437](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L437) + +--- + +### declare + +▸ **declare**(`«destructured»`, `details`): `Promise`<[`TXN_RECEIPT`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#txn_receipt) \| [`DeclaredTransaction`](../namespaces/types.RPC.RPCSPEC06.md#declaredtransaction)\> + +#### Parameters + +| Name | Type | +| :--------------- | :---------------------------------------------------------------------------------- | +| `«destructured»` | [`DeclareContractTransaction`](../namespaces/types.md#declarecontracttransaction) | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | + +#### Returns + +`Promise`<[`TXN_RECEIPT`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#txn_receipt) \| [`DeclaredTransaction`](../namespaces/types.RPC.RPCSPEC06.md#declaredtransaction)\> + +#### Defined in + +[src/channel/rpc_0_6.ts:480](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L480) + +--- + +### deployAccount + +▸ **deployAccount**(`«destructured»`, `details`): `Promise`<[`TXN_RECEIPT`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#txn_receipt) \| [`DeployedAccountTransaction`](../namespaces/types.RPC.RPCSPEC06.md#deployedaccounttransaction)\> + +#### Parameters + +| Name | Type | +| :--------------- | :-------------------------------------------------------------------------------------------- | +| `«destructured»` | [`DeployAccountContractTransaction`](../namespaces/types.md#deployaccountcontracttransaction) | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | + +#### Returns + +`Promise`<[`TXN_RECEIPT`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#txn_receipt) \| [`DeployedAccountTransaction`](../namespaces/types.RPC.RPCSPEC06.md#deployedaccounttransaction)\> + +#### Defined in + +[src/channel/rpc_0_6.ts:562](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L562) + +--- + +### callContract + +▸ **callContract**(`call`, `blockIdentifier?`): `Promise`<`string`[]\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `call` | [`Call`](../namespaces/types.md#call) | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`string`[]\> + +#### Defined in + +[src/channel/rpc_0_6.ts:609](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L609) + +--- + +### estimateMessageFee + +▸ **estimateMessageFee**(`message`, `blockIdentifier?`): `Promise`<[`FEE_ESTIMATE`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#fee_estimate)\> + +NEW: Estimate the fee for a message from L1 + +#### Parameters + +| Name | Type | Description | +| :---------------- | :--------------------------------------------------------------------- | :-------------- | +| `message` | [`MSG_FROM_L1`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#msg_from_l1) | Message From L1 | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | - | + +#### Returns + +`Promise`<[`FEE_ESTIMATE`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#fee_estimate)\> + +#### Defined in + +[src/channel/rpc_0_6.ts:625](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L625) + +--- + +### getSyncingStats + +▸ **getSyncingStats**(): `Promise`<[`Syncing`](../namespaces/types.RPC.RPCSPEC06.md#syncing)\> + +Returns an object about the sync status, or false if the node is not synching + +#### Returns + +`Promise`<[`Syncing`](../namespaces/types.RPC.RPCSPEC06.md#syncing)\> + +Object with the stats data + +#### Defined in + +[src/channel/rpc_0_6.ts:648](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L648) + +--- + +### getEvents + +▸ **getEvents**(`eventFilter`): `Promise`<[`EVENTS_CHUNK`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#events_chunk)\> + +Returns all events matching the given filter + +#### Parameters + +| Name | Type | +| :------------ | :---------------------------------------------------------------- | +| `eventFilter` | [`EventFilter`](../namespaces/types.RPC.RPCSPEC06.md#eventfilter) | + +#### Returns + +`Promise`<[`EVENTS_CHUNK`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#events_chunk)\> + +events and the pagination of the events + +#### Defined in + +[src/channel/rpc_0_6.ts:656](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L656) + +--- + +### buildTransaction + +▸ **buildTransaction**(`invocation`, `versionType?`): [`BROADCASTED_TXN`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#broadcasted_txn) + +#### Parameters + +| Name | Type | +| :------------- | :---------------------------------------------------------------------- | +| `invocation` | [`AccountInvocationItem`](../namespaces/types.md#accountinvocationitem) | +| `versionType?` | `"fee"` \| `"transaction"` | + +#### Returns + +[`BROADCASTED_TXN`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#broadcasted_txn) + +#### Defined in + +[src/channel/rpc_0_6.ts:660](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_6.ts#L660) diff --git a/www/versioned_docs/version-6.24.1/API/classes/RPC07.RpcChannel.md b/www/versioned_docs/version-6.24.1/API/classes/RPC07.RpcChannel.md new file mode 100644 index 000000000..aa6c24094 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/RPC07.RpcChannel.md @@ -0,0 +1,884 @@ +--- +id: 'RPC07.RpcChannel' +title: 'Class: RpcChannel' +sidebar_label: 'RpcChannel' +custom_edit_url: null +--- + +[RPC07](../namespaces/RPC07.md).RpcChannel + +## Constructors + +### constructor + +• **new RpcChannel**(`optionsOrProvider?`): [`RpcChannel`](RPC07.RpcChannel.md) + +#### Parameters + +| Name | Type | +| :------------------- | :---------------------------------------------------------------- | +| `optionsOrProvider?` | [`RpcProviderOptions`](../namespaces/types.md#rpcprovideroptions) | + +#### Returns + +[`RpcChannel`](RPC07.RpcChannel.md) + +#### Defined in + +[src/channel/rpc_0_7.ts:64](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L64) + +## Properties + +### nodeUrl + +• **nodeUrl**: `string` + +#### Defined in + +[src/channel/rpc_0_7.ts:42](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L42) + +--- + +### headers + +• **headers**: `object` + +#### Defined in + +[src/channel/rpc_0_7.ts:44](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L44) + +--- + +### requestId + +• **requestId**: `number` + +#### Defined in + +[src/channel/rpc_0_7.ts:46](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L46) + +--- + +### blockIdentifier + +• `Readonly` **blockIdentifier**: [`BlockIdentifier`](../namespaces/types.md#blockidentifier) + +#### Defined in + +[src/channel/rpc_0_7.ts:48](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L48) + +--- + +### retries + +• `Readonly` **retries**: `number` + +#### Defined in + +[src/channel/rpc_0_7.ts:50](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L50) + +--- + +### waitMode + +• `Readonly` **waitMode**: `boolean` + +#### Defined in + +[src/channel/rpc_0_7.ts:52](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L52) + +--- + +### chainId + +• `Private` `Optional` **chainId**: [`StarknetChainId`](../enums/constants.StarknetChainId.md) + +#### Defined in + +[src/channel/rpc_0_7.ts:54](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L54) + +--- + +### specVersion + +• `Private` `Optional` **specVersion**: `string` + +#### Defined in + +[src/channel/rpc_0_7.ts:56](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L56) + +--- + +### transactionRetryIntervalFallback + +• `Private` `Optional` **transactionRetryIntervalFallback**: `number` + +#### Defined in + +[src/channel/rpc_0_7.ts:58](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L58) + +--- + +### batchClient + +• `Private` `Optional` **batchClient**: [`BatchClient`](BatchClient.md) + +#### Defined in + +[src/channel/rpc_0_7.ts:60](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L60) + +--- + +### baseFetch + +• `Private` **baseFetch**: (`input`: `RequestInfo` \| `URL`, `init?`: `RequestInit`) => `Promise`<`Response`\> + +#### Type declaration + +▸ (`input`, `init?`): `Promise`<`Response`\> + +##### Parameters + +| Name | Type | +| :------ | :--------------------- | +| `input` | `RequestInfo` \| `URL` | +| `init?` | `RequestInit` | + +##### Returns + +`Promise`<`Response`\> + +#### Defined in + +[src/channel/rpc_0_7.ts:62](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L62) + +## Accessors + +### transactionRetryIntervalDefault + +• `get` **transactionRetryIntervalDefault**(): `number` + +#### Returns + +`number` + +#### Defined in + +[src/channel/rpc_0_7.ts:105](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L105) + +## Methods + +### setChainId + +▸ **setChainId**(`chainId`): `void` + +#### Parameters + +| Name | Type | +| :-------- | :--------------------------------------------------------- | +| `chainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | + +#### Returns + +`void` + +#### Defined in + +[src/channel/rpc_0_7.ts:109](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L109) + +--- + +### fetch + +▸ **fetch**(`method`, `params?`, `id?`): `Promise`<`Response`\> + +#### Parameters + +| Name | Type | Default value | +| :-------- | :------------------- | :------------ | +| `method` | `string` | `undefined` | +| `params?` | `object` | `undefined` | +| `id` | `string` \| `number` | `0` | + +#### Returns + +`Promise`<`Response`\> + +#### Defined in + +[src/channel/rpc_0_7.ts:113](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L113) + +--- + +### errorHandler + +▸ **errorHandler**(`method`, `params`, `rpcError?`, `otherError?`): `void` + +#### Parameters + +| Name | Type | +| :------------ | :----------------------------------------------- | +| `method` | `string` | +| `params` | `any` | +| `rpcError?` | [`Error`](../namespaces/types.RPC.JRPC.md#error) | +| `otherError?` | `any` | + +#### Returns + +`void` + +#### Defined in + +[src/channel/rpc_0_7.ts:127](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L127) + +--- + +### fetchEndpoint + +▸ **fetchEndpoint**<`T`\>(`method`, `params?`): `Promise`<[`Methods`](../namespaces/types.RPC.RPCSPEC07.API.md#methods)[`T`][``"result"``]\> + +#### Type parameters + +| Name | Type | +| :--- | :-------------------------------------------------------------------------- | +| `T` | extends keyof `ReadMethods` \| keyof `WriteMethods` \| keyof `TraceMethods` | + +#### Parameters + +| Name | Type | +| :-------- | :------------------------------------------------------------------------------- | +| `method` | `T` | +| `params?` | [`Methods`](../namespaces/types.RPC.RPCSPEC07.API.md#methods)[`T`][``"params"``] | + +#### Returns + +`Promise`<[`Methods`](../namespaces/types.RPC.RPCSPEC07.API.md#methods)[`T`][``"result"``]\> + +#### Defined in + +[src/channel/rpc_0_7.ts:139](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L139) + +--- + +### getChainId + +▸ **getChainId**(): `Promise`<[`StarknetChainId`](../enums/constants.StarknetChainId.md)\> + +#### Returns + +`Promise`<[`StarknetChainId`](../enums/constants.StarknetChainId.md)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:164](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L164) + +--- + +### getSpecVersion + +▸ **getSpecVersion**(): `Promise`<`string`\> + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +[src/channel/rpc_0_7.ts:169](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L169) + +--- + +### getNonceForAddress + +▸ **getNonceForAddress**(`contractAddress`, `blockIdentifier?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +[src/channel/rpc_0_7.ts:174](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L174) + +--- + +### getBlockLatestAccepted + +▸ **getBlockLatestAccepted**(): `Promise`<[`BlockHashAndNumber`](../namespaces/types.RPC.RPCSPEC07.API.md#blockhashandnumber)\> + +Get the most recent accepted block hash and number + +#### Returns + +`Promise`<[`BlockHashAndNumber`](../namespaces/types.RPC.RPCSPEC07.API.md#blockhashandnumber)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:189](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L189) + +--- + +### getBlockNumber + +▸ **getBlockNumber**(): `Promise`<`number`\> + +Get the most recent accepted block number +redundant use getBlockLatestAccepted(); + +#### Returns + +`Promise`<`number`\> + +Number of the latest block + +#### Defined in + +[src/channel/rpc_0_7.ts:198](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L198) + +--- + +### getBlockWithTxHashes + +▸ **getBlockWithTxHashes**(`blockIdentifier?`): `Promise`<[`BlockWithTxHashes`](../namespaces/types.RPC.RPCSPEC07.API.md#blockwithtxhashes)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`BlockWithTxHashes`](../namespaces/types.RPC.RPCSPEC07.API.md#blockwithtxhashes)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:202](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L202) + +--- + +### getBlockWithTxs + +▸ **getBlockWithTxs**(`blockIdentifier?`): `Promise`<[`BlockWithTxs`](../namespaces/types.RPC.RPCSPEC07.API.md#blockwithtxs)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`BlockWithTxs`](../namespaces/types.RPC.RPCSPEC07.API.md#blockwithtxs)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:207](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L207) + +--- + +### getBlockWithReceipts + +▸ **getBlockWithReceipts**(`blockIdentifier?`): `Promise`<[`BlockWithTxReceipts`](../namespaces/types.RPC.RPCSPEC07.API.md#blockwithtxreceipts)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`BlockWithTxReceipts`](../namespaces/types.RPC.RPCSPEC07.API.md#blockwithtxreceipts)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:212](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L212) + +--- + +### getBlockStateUpdate + +▸ **getBlockStateUpdate**(`blockIdentifier?`): `Promise`<[`StateUpdate`](../namespaces/types.RPC.RPCSPEC07.API.md#stateupdate)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`StateUpdate`](../namespaces/types.RPC.RPCSPEC07.API.md#stateupdate)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:217](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L217) + +--- + +### getBlockTransactionsTraces + +▸ **getBlockTransactionsTraces**(`blockIdentifier?`): `Promise`<[`BlockTransactionsTraces`](../namespaces/types.RPC.RPCSPEC07.API.md#blocktransactionstraces)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`BlockTransactionsTraces`](../namespaces/types.RPC.RPCSPEC07.API.md#blocktransactionstraces)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:222](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L222) + +--- + +### getBlockTransactionCount + +▸ **getBlockTransactionCount**(`blockIdentifier?`): `Promise`<`number`\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`number`\> + +#### Defined in + +[src/channel/rpc_0_7.ts:227](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L227) + +--- + +### getTransactionByHash + +▸ **getTransactionByHash**(`txHash`): `Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC07.API.md#transactionwithhash)\> + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC07.API.md#transactionwithhash)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:232](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L232) + +--- + +### getTransactionByBlockIdAndIndex + +▸ **getTransactionByBlockIdAndIndex**(`blockIdentifier`, `index`): `Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC07.API.md#transactionwithhash)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | +| `index` | `number` | + +#### Returns + +`Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC07.API.md#transactionwithhash)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:239](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L239) + +--- + +### getTransactionReceipt + +▸ **getTransactionReceipt**(`txHash`): `Promise`<[`TXN_RECEIPT_WITH_BLOCK_INFO`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#txn_receipt_with_block_info)\> + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TXN_RECEIPT_WITH_BLOCK_INFO`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#txn_receipt_with_block_info)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:244](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L244) + +--- + +### getTransactionTrace + +▸ **getTransactionTrace**(`txHash`): `Promise`<[`TRANSACTION_TRACE`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#transaction_trace)\> + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TRANSACTION_TRACE`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#transaction_trace)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:249](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L249) + +--- + +### getTransactionStatus + +▸ **getTransactionStatus**(`transactionHash`): `Promise`<[`TransactionStatus`](../namespaces/types.RPC.RPCSPEC07.API.md#transactionstatus)\> + +Get the status of a transaction + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------- | +| `transactionHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TransactionStatus`](../namespaces/types.RPC.RPCSPEC07.API.md#transactionstatus)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:257](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L257) + +--- + +### simulateTransaction + +▸ **simulateTransaction**(`invocations`, `simulateTransactionOptions?`): `Promise`<[`SimulateTransactionResponse`](../namespaces/types.RPC.RPCSPEC07.API.md#simulatetransactionresponse)\> + +#### Parameters + +| Name | Type | Description | +| :--------------------------- | :-------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `invocations` | [`AccountInvocations`](../namespaces/types.md#accountinvocations) | AccountInvocations | +| `simulateTransactionOptions` | [`getSimulateTransactionOptions`](../namespaces/types.md#getsimulatetransactionoptions) | blockIdentifier and flags to skip validation and fee charge
- blockIdentifier
- skipValidate (default false)
- skipFeeCharge (default true)
| + +#### Returns + +`Promise`<[`SimulateTransactionResponse`](../namespaces/types.RPC.RPCSPEC07.API.md#simulatetransactionresponse)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:269](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L269) + +--- + +### waitForTransaction + +▸ **waitForTransaction**(`txHash`, `options?`): `Promise`<[`TXN_RECEIPT`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#txn_receipt)\> + +#### Parameters + +| Name | Type | +| :--------- | :------------------------------------------------------------------------------ | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `options?` | [`waitForTransactionOptions`](../namespaces/types.md#waitfortransactionoptions) | + +#### Returns + +`Promise`<[`TXN_RECEIPT`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#txn_receipt)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:290](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L290) + +--- + +### getStorageAt + +▸ **getStorageAt**(`contractAddress`, `key`, `blockIdentifier?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `key` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +[src/channel/rpc_0_7.ts:372](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L372) + +--- + +### getClassHashAt + +▸ **getClassHashAt**(`contractAddress`, `blockIdentifier?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +[src/channel/rpc_0_7.ts:387](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L387) + +--- + +### getClass + +▸ **getClass**(`classHash`, `blockIdentifier?`): `Promise`<[`ContractClass`](../namespaces/types.RPC.RPCSPEC07.API.md#contractclass)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `classHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`ContractClass`](../namespaces/types.RPC.RPCSPEC07.API.md#contractclass)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:399](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L399) + +--- + +### getClassAt + +▸ **getClassAt**(`contractAddress`, `blockIdentifier?`): `Promise`<[`ContractClass`](../namespaces/types.RPC.RPCSPEC07.API.md#contractclass)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`ContractClass`](../namespaces/types.RPC.RPCSPEC07.API.md#contractclass)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:411](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L411) + +--- + +### getEstimateFee + +▸ **getEstimateFee**(`invocations`, `«destructured»`): `Promise`<[`FEE_ESTIMATE`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#fee_estimate)[]\> + +#### Parameters + +| Name | Type | +| :--------------- | :------------------------------------------------------------------------------ | +| `invocations` | [`AccountInvocations`](../namespaces/types.md#accountinvocations) | +| `«destructured»` | [`getEstimateFeeBulkOptions`](../namespaces/types.md#getestimatefeebulkoptions) | + +#### Returns + +`Promise`<[`FEE_ESTIMATE`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#fee_estimate)[]\> + +#### Defined in + +[src/channel/rpc_0_7.ts:423](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L423) + +--- + +### invoke + +▸ **invoke**(`functionInvocation`, `details`): `Promise`<[`InvokedTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#invokedtransaction)\> + +#### Parameters + +| Name | Type | +| :------------------- | :---------------------------------------------------------------------------------- | +| `functionInvocation` | [`Invocation`](../namespaces/types.md#invocation) | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | + +#### Returns + +`Promise`<[`InvokedTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#invokedtransaction)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:442](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L442) + +--- + +### declare + +▸ **declare**(`«destructured»`, `details`): `Promise`<[`TXN_RECEIPT`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#txn_receipt) \| [`DeclaredTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#declaredtransaction)\> + +#### Parameters + +| Name | Type | +| :--------------- | :---------------------------------------------------------------------------------- | +| `«destructured»` | [`DeclareContractTransaction`](../namespaces/types.md#declarecontracttransaction) | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | + +#### Returns + +`Promise`<[`TXN_RECEIPT`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#txn_receipt) \| [`DeclaredTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#declaredtransaction)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:485](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L485) + +--- + +### deployAccount + +▸ **deployAccount**(`«destructured»`, `details`): `Promise`<[`TXN_RECEIPT`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#txn_receipt) \| [`DeployedAccountTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#deployedaccounttransaction)\> + +#### Parameters + +| Name | Type | +| :--------------- | :-------------------------------------------------------------------------------------------- | +| `«destructured»` | [`DeployAccountContractTransaction`](../namespaces/types.md#deployaccountcontracttransaction) | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | + +#### Returns + +`Promise`<[`TXN_RECEIPT`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#txn_receipt) \| [`DeployedAccountTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#deployedaccounttransaction)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:567](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L567) + +--- + +### callContract + +▸ **callContract**(`call`, `blockIdentifier?`): `Promise`<`string`[]\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `call` | [`Call`](../namespaces/types.md#call) | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`string`[]\> + +#### Defined in + +[src/channel/rpc_0_7.ts:614](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L614) + +--- + +### estimateMessageFee + +▸ **estimateMessageFee**(`message`, `blockIdentifier?`): `Promise`<[`FEE_ESTIMATE`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#fee_estimate)\> + +NEW: Estimate the fee for a message from L1 + +#### Parameters + +| Name | Type | Description | +| :---------------- | :------------------------------------------------------------------------- | :-------------- | +| `message` | [`MSG_FROM_L1`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#msg_from_l1) | Message From L1 | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | - | + +#### Returns + +`Promise`<[`FEE_ESTIMATE`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#fee_estimate)\> + +#### Defined in + +[src/channel/rpc_0_7.ts:630](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L630) + +--- + +### getSyncingStats + +▸ **getSyncingStats**(): `Promise`<[`Syncing`](../namespaces/types.RPC.RPCSPEC07.API.md#syncing)\> + +Returns an object about the sync status, or false if the node is not synching + +#### Returns + +`Promise`<[`Syncing`](../namespaces/types.RPC.RPCSPEC07.API.md#syncing)\> + +Object with the stats data + +#### Defined in + +[src/channel/rpc_0_7.ts:653](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L653) + +--- + +### getEvents + +▸ **getEvents**(`eventFilter`): `Promise`<[`EVENTS_CHUNK`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#events_chunk)\> + +Returns all events matching the given filter + +#### Parameters + +| Name | Type | +| :------------ | :-------------------------------------------------------------------- | +| `eventFilter` | [`EventFilter`](../namespaces/types.RPC.RPCSPEC07.API.md#eventfilter) | + +#### Returns + +`Promise`<[`EVENTS_CHUNK`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#events_chunk)\> + +events and the pagination of the events + +#### Defined in + +[src/channel/rpc_0_7.ts:661](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L661) + +--- + +### buildTransaction + +▸ **buildTransaction**(`invocation`, `versionType?`): [`BROADCASTED_TXN`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#broadcasted_txn) + +#### Parameters + +| Name | Type | +| :------------- | :---------------------------------------------------------------------- | +| `invocation` | [`AccountInvocationItem`](../namespaces/types.md#accountinvocationitem) | +| `versionType?` | `"fee"` \| `"transaction"` | + +#### Returns + +[`BROADCASTED_TXN`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#broadcasted_txn) + +#### Defined in + +[src/channel/rpc_0_7.ts:665](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/channel/rpc_0_7.ts#L665) diff --git a/www/versioned_docs/version-6.24.1/API/classes/RPCResponseParser.md b/www/versioned_docs/version-6.24.1/API/classes/RPCResponseParser.md new file mode 100644 index 000000000..f610c3ad7 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/RPCResponseParser.md @@ -0,0 +1,236 @@ +--- +id: 'RPCResponseParser' +title: 'Class: RPCResponseParser' +sidebar_label: 'RPCResponseParser' +sidebar_position: 0 +custom_edit_url: null +--- + +## Implements + +- `Omit`<[`ResponseParser`](ResponseParser.md), `"parseDeclareContractResponse"` \| `"parseDeployContractResponse"` \| `"parseInvokeFunctionResponse"` \| `"parseGetTransactionReceiptResponse"` \| `"parseGetTransactionResponse"` \| `"parseCallContractResponse"`\> + +## Constructors + +### constructor + +• **new RPCResponseParser**(`margin?`): [`RPCResponseParser`](RPCResponseParser.md) + +#### Parameters + +| Name | Type | +| :------------------------------ | :------- | +| `margin?` | `Object` | +| `margin.l1BoundMaxAmount` | `number` | +| `margin.l1BoundMaxPricePerUnit` | `number` | +| `margin.maxFee` | `number` | + +#### Returns + +[`RPCResponseParser`](RPCResponseParser.md) + +#### Defined in + +[src/utils/responseParser/rpc.ts:38](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/rpc.ts#L38) + +## Properties + +### margin + +• `Private` **margin**: `undefined` \| \{ `l1BoundMaxAmount`: `number` ; `l1BoundMaxPricePerUnit`: `number` ; `maxFee`: `number` } + +#### Defined in + +[src/utils/responseParser/rpc.ts:36](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/rpc.ts#L36) + +## Methods + +### estimatedFeeToMaxFee + +▸ **estimatedFeeToMaxFee**(`estimatedFee`): `bigint` + +#### Parameters + +| Name | Type | +| :------------- | :---------------------------------------------------- | +| `estimatedFee` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`bigint` + +#### Defined in + +[src/utils/responseParser/rpc.ts:42](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/rpc.ts#L42) + +--- + +### estimateFeeToBounds + +▸ **estimateFeeToBounds**(`estimate`): [`RESOURCE_BOUNDS_MAPPING`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#resource_bounds_mapping) + +#### Parameters + +| Name | Type | +| :--------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `estimate` | `0n` \| \{ `unit`: `"WEI"` \| `"FRI"` ; `gas_consumed`: `string` ; `gas_price`: `string` ; `overall_fee`: `string` ; `data_gas_consumed`: `undefined` \| `string` ; `data_gas_price`: `undefined` \| `string` } | + +#### Returns + +[`RESOURCE_BOUNDS_MAPPING`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#resource_bounds_mapping) + +#### Defined in + +[src/utils/responseParser/rpc.ts:46](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/rpc.ts#L46) + +--- + +### parseGetBlockResponse + +▸ **parseGetBlockResponse**(`res`): [`GetBlockResponse`](../namespaces/types.md#getblockresponse) + +#### Parameters + +| Name | Type | +| :---- | :-------------------------------------------------------------- | +| `res` | [`BlockWithTxHashes`](../namespaces/types.md#blockwithtxhashes) | + +#### Returns + +[`GetBlockResponse`](../namespaces/types.md#getblockresponse) + +#### Implementation of + +Omit.parseGetBlockResponse + +#### Defined in + +[src/utils/responseParser/rpc.ts:54](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/rpc.ts#L54) + +--- + +### parseTransactionReceipt + +▸ **parseTransactionReceipt**(`res`): [`GetTxReceiptResponseWithoutHelper`](../namespaces/types.md#gettxreceiptresponsewithouthelper) + +#### Parameters + +| Name | Type | +| :---- | :---------------------------------------------------------------- | +| `res` | [`TransactionReceipt`](../namespaces/types.md#transactionreceipt) | + +#### Returns + +[`GetTxReceiptResponseWithoutHelper`](../namespaces/types.md#gettxreceiptresponsewithouthelper) + +#### Defined in + +[src/utils/responseParser/rpc.ts:58](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/rpc.ts#L58) + +--- + +### parseFeeEstimateResponse + +▸ **parseFeeEstimateResponse**(`res`): [`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md) + +#### Parameters + +| Name | Type | +| :---- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `res` | \{ `unit`: `"WEI"` \| `"FRI"` ; `gas_consumed`: `string` ; `gas_price`: `string` ; `overall_fee`: `string` ; `data_gas_consumed`: `undefined` \| `string` ; `data_gas_price`: `undefined` \| `string` }[] | + +#### Returns + +[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md) + +#### Implementation of + +Omit.parseFeeEstimateResponse + +#### Defined in + +[src/utils/responseParser/rpc.ts:74](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/rpc.ts#L74) + +--- + +### parseFeeEstimateBulkResponse + +▸ **parseFeeEstimateBulkResponse**(`res`): [`EstimateFeeResponseBulk`](../namespaces/types.md#estimatefeeresponsebulk) + +#### Parameters + +| Name | Type | +| :---- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `res` | \{ `unit`: `"WEI"` \| `"FRI"` ; `gas_consumed`: `string` ; `gas_price`: `string` ; `overall_fee`: `string` ; `data_gas_consumed`: `undefined` \| `string` ; `data_gas_price`: `undefined` \| `string` }[] | + +#### Returns + +[`EstimateFeeResponseBulk`](../namespaces/types.md#estimatefeeresponsebulk) + +#### Defined in + +[src/utils/responseParser/rpc.ts:88](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/rpc.ts#L88) + +--- + +### parseSimulateTransactionResponse + +▸ **parseSimulateTransactionResponse**(`res`): [`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse) + +#### Parameters + +| Name | Type | +| :---- | :---- | +| `res` | `any` | + +#### Returns + +[`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse) + +#### Implementation of + +Omit.parseSimulateTransactionResponse + +#### Defined in + +[src/utils/responseParser/rpc.ts:101](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/rpc.ts#L101) + +--- + +### parseContractClassResponse + +▸ **parseContractClassResponse**(`res`): [`ContractClassResponse`](../namespaces/types.md#contractclassresponse) + +#### Parameters + +| Name | Type | +| :---- | :-------------------------------------------------------------------- | +| `res` | [`ContractClassPayload`](../namespaces/types.md#contractclasspayload) | + +#### Returns + +[`ContractClassResponse`](../namespaces/types.md#contractclassresponse) + +#### Defined in + +[src/utils/responseParser/rpc.ts:118](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/rpc.ts#L118) + +--- + +### parseL1GasPriceResponse + +▸ **parseL1GasPriceResponse**(`res`): `string` + +#### Parameters + +| Name | Type | +| :---- | :-------------------------------------------------------------- | +| `res` | [`BlockWithTxHashes`](../namespaces/types.md#blockwithtxhashes) | + +#### Returns + +`string` + +#### Defined in + +[src/utils/responseParser/rpc.ts:125](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/rpc.ts#L125) diff --git a/www/versioned_docs/version-6.24.1/API/classes/ReceiptTx.md b/www/versioned_docs/version-6.24.1/API/classes/ReceiptTx.md new file mode 100644 index 000000000..3175d1109 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/ReceiptTx.md @@ -0,0 +1,233 @@ +--- +id: 'ReceiptTx' +title: 'Class: ReceiptTx' +sidebar_label: 'ReceiptTx' +sidebar_position: 0 +custom_edit_url: null +--- + +Utility that analyses transaction receipt response and provides helpers to process it + +**`Example`** + +```typescript +const responseTx = new ReceiptTx(receipt); +responseTx.match({ + success: (txR: SuccessfulTransactionReceiptResponse) => { }, + rejected: (txR: RejectedTransactionReceiptResponse) => { }, + reverted: (txR: RevertedTransactionReceiptResponse) => { }, + error: (err: Error) => { }, +}); +responseTx.match({ + success: (txR: SuccessfulTransactionReceiptResponse) => { }, + _: () => { }, +} +``` + +## Implements + +- [`TransactionReceiptUtilityInterface`](../namespaces/types.md#transactionreceiptutilityinterface) + +## Constructors + +### constructor + +• **new ReceiptTx**(`receipt`): [`ReceiptTx`](ReceiptTx.md) + +#### Parameters + +| Name | Type | +| :-------- | :---------------------------------------------------------------------------------------------- | +| `receipt` | [`GetTxReceiptResponseWithoutHelper`](../namespaces/types.md#gettxreceiptresponsewithouthelper) | + +#### Returns + +[`ReceiptTx`](ReceiptTx.md) + +#### Defined in + +[src/utils/transactionReceipt.ts:39](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transactionReceipt.ts#L39) + +## Properties + +### statusReceipt + +• `Readonly` **statusReceipt**: keyof [`TransactionStatusReceiptSets`](../namespaces/types.md#transactionstatusreceiptsets) + +#### Implementation of + +TransactionReceiptUtilityInterface.statusReceipt + +#### Defined in + +[src/utils/transactionReceipt.ts:35](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transactionReceipt.ts#L35) + +--- + +### value + +• `Readonly` **value**: [`TransactionReceiptValue`](../namespaces/types.md#transactionreceiptvalue) + +#### Implementation of + +TransactionReceiptUtilityInterface.value + +#### Defined in + +[src/utils/transactionReceipt.ts:37](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transactionReceipt.ts#L37) + +## Methods + +### isSuccess + +▸ **isSuccess**(`transactionReceipt`): transactionReceipt is SuccessfulTransactionReceiptResponse + +#### Parameters + +| Name | Type | +| :------------------- | :---------------------------------------------------------------------------------------------- | +| `transactionReceipt` | [`GetTxReceiptResponseWithoutHelper`](../namespaces/types.md#gettxreceiptresponsewithouthelper) | + +#### Returns + +transactionReceipt is SuccessfulTransactionReceiptResponse + +#### Defined in + +[src/utils/transactionReceipt.ts:86](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transactionReceipt.ts#L86) + +--- + +### isReverted + +▸ **isReverted**(`transactionReceipt`): transactionReceipt is RevertedTransactionReceiptResponse + +#### Parameters + +| Name | Type | +| :------------------- | :---------------------------------------------------------------------------------------------- | +| `transactionReceipt` | [`GetTxReceiptResponseWithoutHelper`](../namespaces/types.md#gettxreceiptresponsewithouthelper) | + +#### Returns + +transactionReceipt is RevertedTransactionReceiptResponse + +#### Defined in + +[src/utils/transactionReceipt.ts:95](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transactionReceipt.ts#L95) + +--- + +### isRejected + +▸ **isRejected**(`transactionReceipt`): transactionReceipt is RejectedTransactionReceiptResponse + +#### Parameters + +| Name | Type | +| :------------------- | :---------------------------------------------------------------------------------------------- | +| `transactionReceipt` | [`GetTxReceiptResponseWithoutHelper`](../namespaces/types.md#gettxreceiptresponsewithouthelper) | + +#### Returns + +transactionReceipt is RejectedTransactionReceiptResponse + +#### Defined in + +[src/utils/transactionReceipt.ts:104](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transactionReceipt.ts#L104) + +--- + +### match + +▸ **match**(`callbacks`): `void` + +#### Parameters + +| Name | Type | +| :---------- | :---------------------------------------------------------------------------------- | +| `callbacks` | [`TransactionReceiptCallbacks`](../namespaces/types.md#transactionreceiptcallbacks) | + +#### Returns + +`void` + +#### Implementation of + +TransactionReceiptUtilityInterface.match + +#### Defined in + +[src/utils/transactionReceipt.ts:63](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transactionReceipt.ts#L63) + +--- + +### isSuccess + +▸ **isSuccess**(): this is SuccessfulTransactionReceiptResponse + +#### Returns + +this is SuccessfulTransactionReceiptResponse + +#### Implementation of + +TransactionReceiptUtilityInterface.isSuccess + +#### Defined in + +[src/utils/transactionReceipt.ts:70](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transactionReceipt.ts#L70) + +--- + +### isReverted + +▸ **isReverted**(): this is RevertedTransactionReceiptResponse + +#### Returns + +this is RevertedTransactionReceiptResponse + +#### Implementation of + +TransactionReceiptUtilityInterface.isReverted + +#### Defined in + +[src/utils/transactionReceipt.ts:74](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transactionReceipt.ts#L74) + +--- + +### isRejected + +▸ **isRejected**(): this is RejectedTransactionReceiptResponse + +#### Returns + +this is RejectedTransactionReceiptResponse + +#### Implementation of + +TransactionReceiptUtilityInterface.isRejected + +#### Defined in + +[src/utils/transactionReceipt.ts:78](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transactionReceipt.ts#L78) + +--- + +### isError + +▸ **isError**(): `boolean` + +#### Returns + +`boolean` + +#### Implementation of + +TransactionReceiptUtilityInterface.isError + +#### Defined in + +[src/utils/transactionReceipt.ts:82](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transactionReceipt.ts#L82) diff --git a/www/versioned_docs/version-6.24.1/API/classes/ResponseParser.md b/www/versioned_docs/version-6.24.1/API/classes/ResponseParser.md new file mode 100644 index 000000000..6ffaa1f3a --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/ResponseParser.md @@ -0,0 +1,206 @@ +--- +id: 'ResponseParser' +title: 'Class: ResponseParser' +sidebar_label: 'ResponseParser' +sidebar_position: 0 +custom_edit_url: null +--- + +## Constructors + +### constructor + +• **new ResponseParser**(): [`ResponseParser`](ResponseParser.md) + +#### Returns + +[`ResponseParser`](ResponseParser.md) + +## Methods + +### parseGetBlockResponse + +▸ **parseGetBlockResponse**(`res`): [`GetBlockResponse`](../namespaces/types.md#getblockresponse) + +#### Parameters + +| Name | Type | +| :---- | :-------------------------------------------------------------- | +| `res` | [`BlockWithTxHashes`](../namespaces/types.md#blockwithtxhashes) | + +#### Returns + +[`GetBlockResponse`](../namespaces/types.md#getblockresponse) + +#### Defined in + +[src/utils/responseParser/interface.ts:16](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/interface.ts#L16) + +--- + +### parseGetTransactionResponse + +▸ **parseGetTransactionResponse**(`res`): `TransactionWithHash` + +#### Parameters + +| Name | Type | +| :---- | :---- | +| `res` | `any` | + +#### Returns + +`TransactionWithHash` + +#### Defined in + +[src/utils/responseParser/interface.ts:18](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/interface.ts#L18) + +--- + +### parseGetTransactionReceiptResponse + +▸ **parseGetTransactionReceiptResponse**(`res`): [`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse) + +#### Parameters + +| Name | Type | +| :---- | :---- | +| `res` | `any` | + +#### Returns + +[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse) + +#### Defined in + +[src/utils/responseParser/interface.ts:20](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/interface.ts#L20) + +--- + +### parseFeeEstimateResponse + +▸ **parseFeeEstimateResponse**(`res`): [`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md) + +#### Parameters + +| Name | Type | +| :---- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `res` | \{ `unit`: `"WEI"` \| `"FRI"` ; `gas_consumed`: `string` ; `gas_price`: `string` ; `overall_fee`: `string` ; `data_gas_consumed`: `undefined` \| `string` ; `data_gas_price`: `undefined` \| `string` }[] | + +#### Returns + +[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md) + +#### Defined in + +[src/utils/responseParser/interface.ts:22](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/interface.ts#L22) + +--- + +### parseCallContractResponse + +▸ **parseCallContractResponse**(`res`): [`CallContractResponse`](../namespaces/types.md#callcontractresponse) + +#### Parameters + +| Name | Type | +| :---- | :---- | +| `res` | `any` | + +#### Returns + +[`CallContractResponse`](../namespaces/types.md#callcontractresponse) + +#### Defined in + +[src/utils/responseParser/interface.ts:24](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/interface.ts#L24) + +--- + +### parseInvokeFunctionResponse + +▸ **parseInvokeFunctionResponse**(`res`): `Object` + +#### Parameters + +| Name | Type | +| :---- | :---- | +| `res` | `any` | + +#### Returns + +`Object` + +| Name | Type | +| :----------------- | :------- | +| `transaction_hash` | `string` | + +#### Defined in + +[src/utils/responseParser/interface.ts:26](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/interface.ts#L26) + +--- + +### parseDeployContractResponse + +▸ **parseDeployContractResponse**(`res`): [`DeployContractResponse`](../interfaces/types.DeployContractResponse.md) + +#### Parameters + +| Name | Type | +| :---- | :---- | +| `res` | `any` | + +#### Returns + +[`DeployContractResponse`](../interfaces/types.DeployContractResponse.md) + +#### Defined in + +[src/utils/responseParser/interface.ts:28](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/interface.ts#L28) + +--- + +### parseDeclareContractResponse + +▸ **parseDeclareContractResponse**(`res`): `Object` + +#### Parameters + +| Name | Type | +| :---- | :---- | +| `res` | `any` | + +#### Returns + +`Object` + +| Name | Type | +| :----------------- | :------- | +| `class_hash` | `string` | +| `transaction_hash` | `string` | + +#### Defined in + +[src/utils/responseParser/interface.ts:30](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/interface.ts#L30) + +--- + +### parseSimulateTransactionResponse + +▸ **parseSimulateTransactionResponse**(`res`): [`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse) + +#### Parameters + +| Name | Type | +| :---- | :---- | +| `res` | `any` | + +#### Returns + +[`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse) + +#### Defined in + +[src/utils/responseParser/interface.ts:32](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/responseParser/interface.ts#L32) diff --git a/www/versioned_docs/version-6.24.1/API/classes/RpcError.md b/www/versioned_docs/version-6.24.1/API/classes/RpcError.md new file mode 100644 index 000000000..c1a541461 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/RpcError.md @@ -0,0 +1,259 @@ +--- +id: 'RpcError' +title: 'Class: RpcError' +sidebar_label: 'RpcError' +sidebar_position: 0 +custom_edit_url: null +--- + +## Type parameters + +| Name | Type | +| :----------- | :-------------------------------------------------------------------------------------------------------- | +| `BaseErrorT` | extends [`RPC_ERROR`](../namespaces/types.md#rpc_error) = [`RPC_ERROR`](../namespaces/types.md#rpc_error) | + +## Hierarchy + +- [`LibraryError`](LibraryError.md) + + ↳ **`RpcError`** + +## Constructors + +### constructor + +• **new RpcError**<`BaseErrorT`\>(`baseError`, `method`, `params`): [`RpcError`](RpcError.md)<`BaseErrorT`\> + +#### Type parameters + +| Name | Type | +| :----------- | :-------------------------------------------------------------------------------------------------------- | +| `BaseErrorT` | extends [`RPC_ERROR`](../namespaces/types.md#rpc_error) = [`RPC_ERROR`](../namespaces/types.md#rpc_error) | + +#### Parameters + +| Name | Type | +| :---------- | :----------- | +| `baseError` | `BaseErrorT` | +| `method` | `string` | +| `params` | `any` | + +#### Returns + +[`RpcError`](RpcError.md)<`BaseErrorT`\> + +#### Overrides + +[LibraryError](LibraryError.md).[constructor](LibraryError.md#constructor) + +#### Defined in + +[src/utils/errors/index.ts:50](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/errors/index.ts#L50) + +## Properties + +### prepareStackTrace + +▪ `Static` `Optional` **prepareStackTrace**: (`err`: `Error`, `stackTraces`: `CallSite`[]) => `any` + +#### Type declaration + +▸ (`err`, `stackTraces`): `any` + +Optional override for formatting stack traces + +##### Parameters + +| Name | Type | +| :------------ | :----------- | +| `err` | `Error` | +| `stackTraces` | `CallSite`[] | + +##### Returns + +`any` + +**`See`** + +https://v8.dev/docs/stack-trace-api#customizing-stack-traces + +#### Inherited from + +[LibraryError](LibraryError.md).[prepareStackTrace](LibraryError.md#preparestacktrace) + +#### Defined in + +node_modules/@types/node/globals.d.ts:143 + +--- + +### stackTraceLimit + +▪ `Static` **stackTraceLimit**: `number` + +#### Inherited from + +[LibraryError](LibraryError.md).[stackTraceLimit](LibraryError.md#stacktracelimit) + +#### Defined in + +node_modules/@types/node/globals.d.ts:145 + +--- + +### request + +• `Readonly` **request**: `Object` + +#### Type declaration + +| Name | Type | +| :------- | :------- | +| `method` | `string` | +| `params` | `any` | + +#### Defined in + +[src/utils/errors/index.ts:45](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/errors/index.ts#L45) + +--- + +### baseError + +• `Readonly` **baseError**: `BaseErrorT` + +#### Defined in + +[src/utils/errors/index.ts:51](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/errors/index.ts#L51) + +--- + +### name + +• **name**: `string` + +#### Inherited from + +[LibraryError](LibraryError.md).[name](LibraryError.md#name) + +#### Defined in + +[src/utils/errors/index.ts:21](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/errors/index.ts#L21) + +--- + +### message + +• **message**: `string` + +#### Inherited from + +[LibraryError](LibraryError.md).[message](LibraryError.md#message) + +#### Defined in + +www/node_modules/typescript/lib/lib.es5.d.ts:1055 + +--- + +### stack + +• `Optional` **stack**: `string` + +#### Inherited from + +[LibraryError](LibraryError.md).[stack](LibraryError.md#stack) + +#### Defined in + +www/node_modules/typescript/lib/lib.es5.d.ts:1056 + +--- + +### cause + +• `Optional` **cause**: `unknown` + +#### Inherited from + +[LibraryError](LibraryError.md).[cause](LibraryError.md#cause) + +#### Defined in + +www/node_modules/typescript/lib/lib.es2022.error.d.ts:24 + +## Accessors + +### code + +• `get` **code**(): `1` \| `32` \| `10` \| `20` \| `24` \| `27` \| `28` \| `29` \| `31` \| `33` \| `34` \| `40` \| `41` \| `51` \| `52` \| `53` \| `54` \| `55` \| `56` \| `57` \| `58` \| `59` \| `60` \| `61` \| `62` \| `63` + +#### Returns + +`1` \| `32` \| `10` \| `20` \| `24` \| `27` \| `28` \| `29` \| `31` \| `33` \| `34` \| `40` \| `41` \| `51` \| `52` \| `53` \| `54` \| `55` \| `56` \| `57` \| `58` \| `59` \| `60` \| `61` \| `62` \| `63` + +#### Defined in + +[src/utils/errors/index.ts:62](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/errors/index.ts#L62) + +## Methods + +### captureStackTrace + +▸ **captureStackTrace**(`targetObject`, `constructorOpt?`): `void` + +Create .stack property on a target object + +#### Parameters + +| Name | Type | +| :---------------- | :--------- | +| `targetObject` | `object` | +| `constructorOpt?` | `Function` | + +#### Returns + +`void` + +#### Inherited from + +[LibraryError](LibraryError.md).[captureStackTrace](LibraryError.md#capturestacktrace) + +#### Defined in + +node_modules/@types/node/globals.d.ts:136 + +--- + +### isType + +▸ **isType**<`N`, `C`\>(`typeName`): this is RpcError + +Verifies the underlying RPC error, also serves as a type guard for the _baseError_ property + +#### Type parameters + +| Name | Type | +| :--- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `N` | extends keyof [`RPC_ERROR_SET`](../namespaces/types.md#rpc_error_set) | +| `C` | extends `1` \| `32` \| `10` \| `20` \| `24` \| `27` \| `28` \| `29` \| `31` \| `33` \| `34` \| `40` \| `41` \| `51` \| `52` \| `53` \| `54` \| `55` \| `56` \| `57` \| `58` \| `59` \| `60` \| `61` \| `62` \| `63` | + +#### Parameters + +| Name | Type | +| :--------- | :--- | +| `typeName` | `N` | + +#### Returns + +this is RpcError + +**`Example`** + +```typescript +SomeError.isType('UNEXPECTED_ERROR'); +``` + +#### Defined in + +[src/utils/errors/index.ts:73](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/errors/index.ts#L73) diff --git a/www/versioned_docs/version-6.24.1/API/classes/Signer.md b/www/versioned_docs/version-6.24.1/API/classes/Signer.md new file mode 100644 index 000000000..ccf014579 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/Signer.md @@ -0,0 +1,303 @@ +--- +id: 'Signer' +title: 'Class: Signer' +sidebar_label: 'Signer' +sidebar_position: 0 +custom_edit_url: null +--- + +## Implements + +- [`SignerInterface`](SignerInterface.md) + +## Constructors + +### constructor + +• **new Signer**(`pk?`): [`Signer`](Signer.md) + +#### Parameters + +| Name | Type | +| :--- | :----------------------- | +| `pk` | `string` \| `Uint8Array` | + +#### Returns + +[`Signer`](Signer.md) + +#### Defined in + +[src/signer/default.ts:33](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/default.ts#L33) + +## Properties + +### pk + +• `Protected` **pk**: `string` \| `Uint8Array` + +#### Defined in + +[src/signer/default.ts:31](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/default.ts#L31) + +## Methods + +### getPubKey + +▸ **getPubKey**(): `Promise`<`string`\> + +Method to get the public key of the signer + +#### Returns + +`Promise`<`string`\> + +hex-string + +**`Example`** + +```typescript +const mySigner = new Signer('0x123'); +const result = await mySigner.getPubKey(); +// result = "0x566d69d8c99f62bc71118399bab25c1f03719463eab8d6a444cd11ece131616" +``` + +#### Implementation of + +[SignerInterface](SignerInterface.md).[getPubKey](SignerInterface.md#getpubkey) + +#### Defined in + +[src/signer/default.ts:37](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/default.ts#L37) + +--- + +### signMessage + +▸ **signMessage**(`typedData`, `accountAddress`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Signs a JSON object for off-chain usage with the private key and returns the signature. +This adds a message prefix so it can't be interchanged with transactions + +#### Parameters + +| Name | Type | Description | +| :--------------- | :----------------------------------------------------------------------- | :---------------------------------- | +| `typedData` | [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) | JSON object to be signed | +| `accountAddress` | `string` | Hex string of the account's address | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +the signature of the message + +**`Example`** + +```typescript +const mySigner = new Signer('0x123'); +const myTypedData: TypedData = { + domain: { name: 'Example DApp', chainId: constants.StarknetChainId.SN_SEPOLIA, version: '0.0.3' }, + types: { + StarkNetDomain: [ + { name: 'name', type: 'string' }, + { name: 'chainId', type: 'felt' }, + { name: 'version', type: 'string' }, + ], + Message: [{ name: 'message', type: 'felt' }], + }, + primaryType: 'Message', + message: { message: '1234' }, +}; +const result = await mySigner.signMessage( + myTypedData, + '0x5d08a4e9188429da4e993c9bf25aafe5cd491ee2b501505d4d059f0c938f82d' +); +// result = Signature {r: 684915484701699003335398790608214855489903651271362390249153620883122231253n, +// s: 1399150959912500412309102776989465580949387575375484933432871778355496929189n, recovery: 1} +``` + +#### Implementation of + +[SignerInterface](SignerInterface.md).[signMessage](SignerInterface.md#signmessage) + +#### Defined in + +[src/signer/default.ts:41](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/default.ts#L41) + +--- + +### signTransaction + +▸ **signTransaction**(`transactions`, `details`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Signs transactions with the private key and returns the signature + +#### Parameters + +| Name | Type | Description | +| :------------- | :---------------------------------------------------------------------------- | :------------------------------ | +| `transactions` | [`Call`](../namespaces/types.md#call)[] | array of Call objects | +| `details` | [`InvocationsSignerDetails`](../namespaces/types.md#invocationssignerdetails) | InvocationsSignerDetails object | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +the signature of the transaction + +**`Example`** + +```typescript +const mySigner = new Signer('0x123'); +const calls: Call[] = [ + { + contractAddress: '0x1234567890123456789012345678901234567890', + entrypoint: 'functionName', + calldata: [1, 2, 3], + }, +]; +const transactionsDetail: InvocationsSignerDetails = { + walletAddress: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e', + chainId: constants.StarknetChainId.SN_MAIN, + cairoVersion: '1', + maxFee: '0x1234567890abcdef', + version: '0x0', + nonce: 1, +}; +const result = await mySigner.signTransaction(calls, transactionsDetail); +// result = Signature {r: 304910226421970384958146916800275294114105560641204815169249090836676768876n, +// s: 1072798866000813654190523783606274062837012608648308896325315895472901074693n, recovery: 0} +``` + +#### Implementation of + +[SignerInterface](SignerInterface.md).[signTransaction](SignerInterface.md#signtransaction) + +#### Defined in + +[src/signer/default.ts:46](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/default.ts#L46) + +--- + +### signDeployAccountTransaction + +▸ **signDeployAccountTransaction**(`details`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Signs a DEPLOY_ACCOUNT transaction with the private key and returns the signature + +#### Parameters + +| Name | Type | Description | +| :-------- | :-------------------------------------------------------------------------------- | :---------------------------- | +| `details` | [`DeployAccountSignerDetails`](../namespaces/types.md#deployaccountsignerdetails) | to deploy an account contract | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +the signature of the transaction to deploy an account + +**`Example`** + +```typescript +const mySigner = new Signer('0x123'); +const myDeployAcc: DeployAccountSignerDetails = { + contractAddress: '0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641', + version: '0x2', + chainId: constants.StarknetChainId.SN_SEPOLIA, + classHash: '0x5f3614e8671257aff9ac38e929c74d65b02d460ae966cd826c9f04a7fa8e0d4', + constructorCalldata: [1, 2], + addressSalt: 1234, + nonce: 45, + maxFee: 10 ** 15, + tip: 0, + paymasterData: [], + accountDeploymentData: [], + nonceDataAvailabilityMode: RPC.EDataAvailabilityMode.L1, + feeDataAvailabilityMode: RPC.EDataAvailabilityMode.L1, + resourceBounds: stark.estimateFeeToBounds(constants.ZERO), +}; +const result = await mySigner.signDeployAccountTransaction(myDeployAcc); +// result = Signature {r: 2871311234341436528393212130310036951068553852419934781736214693308640202748n, +// s: 1746271646048888422437132495446973163454853863041370993384284773665861377605n, recovery: 1} +``` + +#### Implementation of + +[SignerInterface](SignerInterface.md).[signDeployAccountTransaction](SignerInterface.md#signdeployaccounttransaction) + +#### Defined in + +[src/signer/default.ts:79](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/default.ts#L79) + +--- + +### signDeclareTransaction + +▸ **signDeclareTransaction**(`details`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Signs a DECLARE transaction with the private key and returns the signature + +#### Parameters + +| Name | Type | Description | +| :-------- | :-------------------------------------------------------------------- | :----------------- | +| `details` | [`DeclareSignerDetails`](../namespaces/types.md#declaresignerdetails) | to declare a class | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +the signature of the transaction to declare a class + +**`Example`** + +```typescript +const mySigner = new Signer('0x123'); +const myDeclare: DeclareSignerDetails = { + version: '0x2', + chainId: constants.StarknetChainId.SN_SEPOLIA, + senderAddress: '0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641', + classHash: '0x5f3614e8671257aff9ac38e929c74d65b02d460ae966cd826c9f04a7fa8e0d4', + nonce: 45, + maxFee: 10 ** 15, + tip: 0, + paymasterData: [], + accountDeploymentData: [], + nonceDataAvailabilityMode: RPC.EDataAvailabilityMode.L1, + feeDataAvailabilityMode: RPC.EDataAvailabilityMode.L1, + resourceBounds: stark.estimateFeeToBounds(constants.ZERO), +}; +const result = await mySigner.signDeclareTransaction(myDeclare); +// result = Signature {r: 2432056944313955951711774394836075930010416436707488863728289188289211995670n, +// s: 3407649393310177489888603098175002856596469926897298636282244411990343146307n, recovery: 1} +``` + +#### Implementation of + +[SignerInterface](SignerInterface.md).[signDeclareTransaction](SignerInterface.md#signdeclaretransaction) + +#### Defined in + +[src/signer/default.ts:111](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/default.ts#L111) + +--- + +### signRaw + +▸ **signRaw**(`msgHash`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +#### Parameters + +| Name | Type | +| :-------- | :------- | +| `msgHash` | `string` | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +#### Defined in + +[src/signer/default.ts:138](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/default.ts#L138) diff --git a/www/versioned_docs/version-6.24.1/API/classes/SignerInterface.md b/www/versioned_docs/version-6.24.1/API/classes/SignerInterface.md new file mode 100644 index 000000000..c109f4a0a --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/SignerInterface.md @@ -0,0 +1,246 @@ +--- +id: 'SignerInterface' +title: 'Class: SignerInterface' +sidebar_label: 'SignerInterface' +sidebar_position: 0 +custom_edit_url: null +--- + +## Implemented by + +- [`EthSigner`](EthSigner.md) +- [`LedgerSigner111`](LedgerSigner111.md) +- [`LedgerSigner221`](LedgerSigner221.md) +- [`Signer`](Signer.md) + +## Constructors + +### constructor + +• **new SignerInterface**(): [`SignerInterface`](SignerInterface.md) + +#### Returns + +[`SignerInterface`](SignerInterface.md) + +## Methods + +### getPubKey + +▸ **getPubKey**(): `Promise`<`string`\> + +Method to get the public key of the signer + +#### Returns + +`Promise`<`string`\> + +hex-string + +**`Example`** + +```typescript +const mySigner = new Signer('0x123'); +const result = await mySigner.getPubKey(); +// result = "0x566d69d8c99f62bc71118399bab25c1f03719463eab8d6a444cd11ece131616" +``` + +#### Defined in + +[src/signer/interface.ts:22](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/interface.ts#L22) + +--- + +### signMessage + +▸ **signMessage**(`typedData`, `accountAddress`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Signs a JSON object for off-chain usage with the private key and returns the signature. +This adds a message prefix so it can't be interchanged with transactions + +#### Parameters + +| Name | Type | Description | +| :--------------- | :----------------------------------------------------------------------- | :---------------------------------- | +| `typedData` | [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) | JSON object to be signed | +| `accountAddress` | `string` | Hex string of the account's address | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +the signature of the message + +**`Example`** + +```typescript +const mySigner = new Signer('0x123'); +const myTypedData: TypedData = { + domain: { name: 'Example DApp', chainId: constants.StarknetChainId.SN_SEPOLIA, version: '0.0.3' }, + types: { + StarkNetDomain: [ + { name: 'name', type: 'string' }, + { name: 'chainId', type: 'felt' }, + { name: 'version', type: 'string' }, + ], + Message: [{ name: 'message', type: 'felt' }], + }, + primaryType: 'Message', + message: { message: '1234' }, +}; +const result = await mySigner.signMessage( + myTypedData, + '0x5d08a4e9188429da4e993c9bf25aafe5cd491ee2b501505d4d059f0c938f82d' +); +// result = Signature {r: 684915484701699003335398790608214855489903651271362390249153620883122231253n, +// s: 1399150959912500412309102776989465580949387575375484933432871778355496929189n, recovery: 1} +``` + +#### Defined in + +[src/signer/interface.ts:50](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/interface.ts#L50) + +--- + +### signTransaction + +▸ **signTransaction**(`transactions`, `transactionsDetail`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Signs transactions with the private key and returns the signature + +#### Parameters + +| Name | Type | Description | +| :------------------- | :---------------------------------------------------------------------------- | :------------------------------ | +| `transactions` | [`Call`](../namespaces/types.md#call)[] | array of Call objects | +| `transactionsDetail` | [`InvocationsSignerDetails`](../namespaces/types.md#invocationssignerdetails) | InvocationsSignerDetails object | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +the signature of the transaction + +**`Example`** + +```typescript +const mySigner = new Signer('0x123'); +const calls: Call[] = [ + { + contractAddress: '0x1234567890123456789012345678901234567890', + entrypoint: 'functionName', + calldata: [1, 2, 3], + }, +]; +const transactionsDetail: InvocationsSignerDetails = { + walletAddress: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e', + chainId: constants.StarknetChainId.SN_MAIN, + cairoVersion: '1', + maxFee: '0x1234567890abcdef', + version: '0x0', + nonce: 1, +}; +const result = await mySigner.signTransaction(calls, transactionsDetail); +// result = Signature {r: 304910226421970384958146916800275294114105560641204815169249090836676768876n, +// s: 1072798866000813654190523783606274062837012608648308896325315895472901074693n, recovery: 0} +``` + +#### Defined in + +[src/signer/interface.ts:77](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/interface.ts#L77) + +--- + +### signDeployAccountTransaction + +▸ **signDeployAccountTransaction**(`transaction`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Signs a DEPLOY_ACCOUNT transaction with the private key and returns the signature + +#### Parameters + +| Name | Type | Description | +| :------------ | :-------------------------------------------------------------------------------- | :---------------------------- | +| `transaction` | [`DeployAccountSignerDetails`](../namespaces/types.md#deployaccountsignerdetails) | to deploy an account contract | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +the signature of the transaction to deploy an account + +**`Example`** + +```typescript +const mySigner = new Signer('0x123'); +const myDeployAcc: DeployAccountSignerDetails = { + contractAddress: '0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641', + version: '0x2', + chainId: constants.StarknetChainId.SN_SEPOLIA, + classHash: '0x5f3614e8671257aff9ac38e929c74d65b02d460ae966cd826c9f04a7fa8e0d4', + constructorCalldata: [1, 2], + addressSalt: 1234, + nonce: 45, + maxFee: 10 ** 15, + tip: 0, + paymasterData: [], + accountDeploymentData: [], + nonceDataAvailabilityMode: RPC.EDataAvailabilityMode.L1, + feeDataAvailabilityMode: RPC.EDataAvailabilityMode.L1, + resourceBounds: stark.estimateFeeToBounds(constants.ZERO), +}; +const result = await mySigner.signDeployAccountTransaction(myDeployAcc); +// result = Signature {r: 2871311234341436528393212130310036951068553852419934781736214693308640202748n, +// s: 1746271646048888422437132495446973163454853863041370993384284773665861377605n, recovery: 1} +``` + +#### Defined in + +[src/signer/interface.ts:105](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/interface.ts#L105) + +--- + +### signDeclareTransaction + +▸ **signDeclareTransaction**(`transaction`): `Promise`<[`Signature`](../namespaces/types.md#signature)\> + +Signs a DECLARE transaction with the private key and returns the signature + +#### Parameters + +| Name | Type | Description | +| :------------ | :-------------------------------------------------------------------- | :----------------- | +| `transaction` | [`DeclareSignerDetails`](../namespaces/types.md#declaresignerdetails) | to declare a class | + +#### Returns + +`Promise`<[`Signature`](../namespaces/types.md#signature)\> + +the signature of the transaction to declare a class + +**`Example`** + +```typescript +const mySigner = new Signer('0x123'); +const myDeclare: DeclareSignerDetails = { + version: '0x2', + chainId: constants.StarknetChainId.SN_SEPOLIA, + senderAddress: '0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641', + classHash: '0x5f3614e8671257aff9ac38e929c74d65b02d460ae966cd826c9f04a7fa8e0d4', + nonce: 45, + maxFee: 10 ** 15, + tip: 0, + paymasterData: [], + accountDeploymentData: [], + nonceDataAvailabilityMode: RPC.EDataAvailabilityMode.L1, + feeDataAvailabilityMode: RPC.EDataAvailabilityMode.L1, + resourceBounds: stark.estimateFeeToBounds(constants.ZERO), +}; +const result = await mySigner.signDeclareTransaction(myDeclare); +// result = Signature {r: 2432056944313955951711774394836075930010416436707488863728289188289211995670n, +// s: 3407649393310177489888603098175002856596469926897298636282244411990343146307n, recovery: 1} +``` + +#### Defined in + +[src/signer/interface.ts:131](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/interface.ts#L131) diff --git a/www/versioned_docs/version-6.24.1/API/classes/WalletAccount.md b/www/versioned_docs/version-6.24.1/API/classes/WalletAccount.md new file mode 100644 index 000000000..6def6276d --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/WalletAccount.md @@ -0,0 +1,3226 @@ +--- +id: 'WalletAccount' +title: 'Class: WalletAccount' +sidebar_label: 'WalletAccount' +sidebar_position: 0 +custom_edit_url: null +--- + +## Hierarchy + +- [`Account`](Account.md) + + ↳ **`WalletAccount`** + +## Implements + +- [`AccountInterface`](AccountInterface.md) + +## Constructors + +### constructor + +• **new WalletAccount**(`providerOrOptions`, `walletProvider`, `cairoVersion?`): [`WalletAccount`](WalletAccount.md) + +#### Parameters + +| Name | Type | +| :------------------ | :--------------------------------------------------------------------------------------------------------- | +| `providerOrOptions` | [`ProviderOptions`](../interfaces/types.ProviderOptions.md) \| [`ProviderInterface`](ProviderInterface.md) | +| `walletProvider` | `StarknetWalletProvider` | +| `cairoVersion?` | [`CairoVersion`](../namespaces/types.md#cairoversion) | + +#### Returns + +[`WalletAccount`](WalletAccount.md) + +**`Deprecated`** + +Use static method WalletAccount.connect or WalletAccount.connectSilent instead. Constructor WalletAccount.(format:2). + +#### Overrides + +[Account](Account.md).[constructor](Account.md#constructor) + +#### Defined in + +[src/wallet/account.ts:49](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/account.ts#L49) + +• **new WalletAccount**(`providerOrOptions`, `walletProvider`, `cairoVersion?`, `address?`): [`WalletAccount`](WalletAccount.md) + +#### Parameters + +| Name | Type | +| :------------------ | :--------------------------------------------------------------------------------------------------------- | +| `providerOrOptions` | [`ProviderOptions`](../interfaces/types.ProviderOptions.md) \| [`ProviderInterface`](ProviderInterface.md) | +| `walletProvider` | `StarknetWalletProvider` | +| `cairoVersion?` | [`CairoVersion`](../namespaces/types.md#cairoversion) | +| `address?` | `string` | + +#### Returns + +[`WalletAccount`](WalletAccount.md) + +#### Overrides + +Account.constructor + +#### Defined in + +[src/wallet/account.ts:54](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/account.ts#L54) + +## Properties + +### walletProvider + +• **walletProvider**: `StarknetWalletProvider` + +#### Defined in + +[src/wallet/account.ts:44](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/account.ts#L44) + +--- + +### signer + +• **signer**: [`SignerInterface`](SignerInterface.md) + +#### Implementation of + +[AccountInterface](AccountInterface.md).[signer](AccountInterface.md#signer) + +#### Inherited from + +[Account](Account.md).[signer](Account.md#signer) + +#### Defined in + +[src/account/default.ts:82](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L82) + +--- + +### address + +• **address**: `string` + +#### Implementation of + +[AccountInterface](AccountInterface.md).[address](AccountInterface.md#address) + +#### Inherited from + +[Account](Account.md).[address](Account.md#address) + +#### Defined in + +[src/account/default.ts:84](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L84) + +--- + +### cairoVersion + +• **cairoVersion**: [`CairoVersion`](../namespaces/types.md#cairoversion) + +#### Implementation of + +[AccountInterface](AccountInterface.md).[cairoVersion](AccountInterface.md#cairoversion) + +#### Inherited from + +[Account](Account.md).[cairoVersion](Account.md#cairoversion) + +#### Defined in + +[src/account/default.ts:86](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L86) + +--- + +### transactionVersion + +• `Readonly` **transactionVersion**: `"0x2"` \| `"0x3"` + +#### Inherited from + +[Account](Account.md).[transactionVersion](Account.md#transactionversion) + +#### Defined in + +[src/account/default.ts:88](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L88) + +--- + +### deploySelf + +• **deploySelf**: (`__namedParameters`: [`DeployAccountContractPayload`](../namespaces/types.md#deployaccountcontractpayload), `details`: [`UniversalDetails`](../interfaces/types.UniversalDetails.md)) => `Promise`<[`DeployContractResponse`](../interfaces/types.DeployContractResponse.md)\> + +#### Type declaration + +▸ (`«destructured»`, `details?`): `Promise`<[`DeployContractResponse`](../interfaces/types.DeployContractResponse.md)\> + +##### Parameters + +| Name | Type | +| :--------------- | :------------------------------------------------------------------------------------ | +| `«destructured»` | [`DeployAccountContractPayload`](../namespaces/types.md#deployaccountcontractpayload) | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | + +##### Returns + +`Promise`<[`DeployContractResponse`](../interfaces/types.DeployContractResponse.md)\> + +#### Inherited from + +[Account](Account.md).[deploySelf](Account.md#deployself) + +#### Defined in + +[src/account/default.ts:496](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L496) + +--- + +### responseParser + +• **responseParser**: [`RPCResponseParser`](RPCResponseParser.md) + +#### Inherited from + +[Account](Account.md).[responseParser](Account.md#responseparser) + +#### Defined in + +[src/provider/rpc.ts:51](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L51) + +--- + +### channel + +• **channel**: [`RpcChannel`](RPC06.RpcChannel.md) \| [`RpcChannel`](RPC07.RpcChannel.md) + +#### Implementation of + +[AccountInterface](AccountInterface.md).[channel](AccountInterface.md#channel) + +#### Inherited from + +[Account](Account.md).[channel](Account.md#channel) + +#### Defined in + +[src/provider/rpc.ts:53](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L53) + +--- + +### getStateUpdate + +• **getStateUpdate**: () => `Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\>(`blockIdentifier`: `"pending"`) => `Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\>(`blockIdentifier`: `"latest"`) => `Promise`<\{ `block_hash`: `string` ; `old_root`: `string` ; `new_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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\>(`blockIdentifier?`: [`BlockIdentifier`](../namespaces/types.md#blockidentifier)) => `Promise`<[`StateUpdateResponse`](../namespaces/types.md#stateupdateresponse)\> + +#### Type declaration + +▸ (): `Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +##### Returns + +`Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +▸ (`blockIdentifier`): `Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +##### Parameters + +| Name | Type | +| :---------------- | :---------- | +| `blockIdentifier` | `"pending"` | + +##### Returns + +`Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +▸ (`blockIdentifier`): `Promise`<\{ `block_hash`: `string` ; `old_root`: `string` ; `new_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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +##### Parameters + +| Name | Type | +| :---------------- | :--------- | +| `blockIdentifier` | `"latest"` | + +##### Returns + +`Promise`<\{ `block_hash`: `string` ; `old_root`: `string` ; `new_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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +▸ (`blockIdentifier?`): `Promise`<[`StateUpdateResponse`](../namespaces/types.md#stateupdateresponse)\> + +##### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +##### Returns + +`Promise`<[`StateUpdateResponse`](../namespaces/types.md#stateupdateresponse)\> + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getStateUpdate](AccountInterface.md#getstateupdate) + +#### Inherited from + +[Account](Account.md).[getStateUpdate](Account.md#getstateupdate) + +#### Defined in + +[src/provider/rpc.ts:191](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L191) + +## Methods + +### connect + +▸ **connect**(`provider`, `walletProvider`, `cairoVersion?`, `silentMode?`): `Promise`<[`WalletAccount`](WalletAccount.md)\> + +#### Parameters + +| Name | Type | Default value | +| :--------------- | :---------------------------------------------------- | :------------ | +| `provider` | [`ProviderInterface`](ProviderInterface.md) | `undefined` | +| `walletProvider` | `StarknetWalletProvider` | `undefined` | +| `cairoVersion?` | [`CairoVersion`](../namespaces/types.md#cairoversion) | `undefined` | +| `silentMode` | `boolean` | `false` | + +#### Returns + +`Promise`<[`WalletAccount`](WalletAccount.md)\> + +#### Defined in + +[src/wallet/account.ts:186](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/account.ts#L186) + +--- + +### connectSilent + +▸ **connectSilent**(`provider`, `walletProvider`, `cairoVersion?`): `Promise`<[`WalletAccount`](WalletAccount.md)\> + +#### Parameters + +| Name | Type | +| :--------------- | :---------------------------------------------------- | +| `provider` | [`ProviderInterface`](ProviderInterface.md) | +| `walletProvider` | `StarknetWalletProvider` | +| `cairoVersion?` | [`CairoVersion`](../namespaces/types.md#cairoversion) | + +#### Returns + +`Promise`<[`WalletAccount`](WalletAccount.md)\> + +#### Defined in + +[src/wallet/account.ts:196](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/account.ts#L196) + +--- + +### getStarkName + +▸ **getStarkName**(`provider`, `address`, `StarknetIdContract?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :-------------------- | :---------------------------------------------------- | +| `provider` | [`ProviderInterface`](ProviderInterface.md) | +| `address` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `StarknetIdContract?` | `string` | + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +[Account](Account.md).[getStarkName](Account.md#getstarkname) + +#### Defined in + +[src/provider/extensions/starknetId.ts:62](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/extensions/starknetId.ts#L62) + +--- + +### getAddressFromStarkName + +▸ **getAddressFromStarkName**(`provider`, `name`, `StarknetIdContract?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :-------------------- | :------------------------------------------ | +| `provider` | [`ProviderInterface`](ProviderInterface.md) | +| `name` | `string` | +| `StarknetIdContract?` | `string` | + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +[Account](Account.md).[getAddressFromStarkName](Account.md#getaddressfromstarkname) + +#### Defined in + +[src/provider/extensions/starknetId.ts:96](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/extensions/starknetId.ts#L96) + +--- + +### getStarkProfile + +▸ **getStarkProfile**(`provider`, `address`, `StarknetIdContract?`, `StarknetIdIdentityContract?`, `StarknetIdVerifierContract?`, `StarknetIdPfpContract?`, `StarknetIdPopContract?`, `StarknetIdMulticallContract?`): `Promise`<[`StarkProfile`](../namespaces/types.md#starkprofile)\> + +#### Parameters + +| Name | Type | +| :----------------------------- | :---------------------------------------------------- | +| `provider` | [`ProviderInterface`](ProviderInterface.md) | +| `address` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `StarknetIdContract?` | `string` | +| `StarknetIdIdentityContract?` | `string` | +| `StarknetIdVerifierContract?` | `string` | +| `StarknetIdPfpContract?` | `string` | +| `StarknetIdPopContract?` | `string` | +| `StarknetIdMulticallContract?` | `string` | + +#### Returns + +`Promise`<[`StarkProfile`](../namespaces/types.md#starkprofile)\> + +#### Inherited from + +[Account](Account.md).[getStarkProfile](Account.md#getstarkprofile) + +#### Defined in + +[src/provider/extensions/starknetId.ts:128](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/extensions/starknetId.ts#L128) + +--- + +### onAccountChange + +▸ **onAccountChange**(`callback`): `void` + +WALLET EVENTS + +#### Parameters + +| Name | Type | +| :--------- | :------------------------------------------------------------------------------------------------------- | +| `callback` | [`AccountChangeEventHandler`](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md#accountchangeeventhandler) | + +#### Returns + +`void` + +#### Defined in + +[src/wallet/account.ts:96](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/account.ts#L96) + +--- + +### onNetworkChanged + +▸ **onNetworkChanged**(`callback`): `void` + +#### Parameters + +| Name | Type | +| :--------- | :------------------------------------------------------------------------------------------------------- | +| `callback` | [`NetworkChangeEventHandler`](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md#networkchangeeventhandler) | + +#### Returns + +`void` + +#### Defined in + +[src/wallet/account.ts:100](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/account.ts#L100) + +--- + +### requestAccounts + +▸ **requestAccounts**(`silentMode?`): `Promise`<`string`[]\> + +WALLET SPECIFIC METHODS + +#### Parameters + +| Name | Type | Default value | +| :----------- | :-------- | :------------ | +| `silentMode` | `boolean` | `false` | + +#### Returns + +`Promise`<`string`[]\> + +#### Defined in + +[src/wallet/account.ts:107](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/account.ts#L107) + +--- + +### getPermissions + +▸ **getPermissions**(): `Promise`<`"accounts"`[]\> + +#### Returns + +`Promise`<`"accounts"`[]\> + +#### Defined in + +[src/wallet/account.ts:111](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/account.ts#L111) + +--- + +### switchStarknetChain + +▸ **switchStarknetChain**(`chainId`): `Promise`<`boolean`\> + +#### Parameters + +| Name | Type | +| :-------- | :--------------------------------------------------------- | +| `chainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | + +#### Returns + +`Promise`<`boolean`\> + +#### Defined in + +[src/wallet/account.ts:115](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/account.ts#L115) + +--- + +### watchAsset + +▸ **watchAsset**(`asset`): `Promise`<`boolean`\> + +#### Parameters + +| Name | Type | +| :------ | :--------------------------------------------------------------------------------------------- | +| `asset` | [`WatchAssetParameters`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.WatchAssetParameters.md) | + +#### Returns + +`Promise`<`boolean`\> + +#### Defined in + +[src/wallet/account.ts:119](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/account.ts#L119) + +--- + +### addStarknetChain + +▸ **addStarknetChain**(`chain`): `Promise`<`boolean`\> + +#### Parameters + +| Name | Type | +| :------ | :--------------------------------------------------------------------------------------------------------- | +| `chain` | [`AddStarknetChainParameters`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddStarknetChainParameters.md) | + +#### Returns + +`Promise`<`boolean`\> + +#### Defined in + +[src/wallet/account.ts:123](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/account.ts#L123) + +--- + +### execute + +▸ **execute**(`calls`): `Promise`<[`AddInvokeTransactionResult`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionResult.md)\> + +ACCOUNT METHODS + +#### Parameters + +| Name | Type | +| :------ | :---------------------------------------------------------------------------------------- | +| `calls` | [`AllowArray`](../namespaces/types.md#allowarray)<[`Call`](../namespaces/types.md#call)\> | + +#### Returns + +`Promise`<[`AddInvokeTransactionResult`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionResult.md)\> + +#### Implementation of + +[AccountInterface](AccountInterface.md).[execute](AccountInterface.md#execute) + +#### Overrides + +[Account](Account.md).[execute](Account.md#execute) + +#### Defined in + +[src/wallet/account.ts:130](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/account.ts#L130) + +--- + +### declare + +▸ **declare**(`payload`): `Promise`<[`AddDeclareTransactionResult`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionResult.md)\> + +Declares a given compiled contract (json) to starknet + +#### Parameters + +| Name | Type | Description | +| :-------- | :------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `payload` | [`DeclareContractPayload`](../namespaces/types.md#declarecontractpayload) | transaction payload to be deployed containing: - contract: compiled contract code - (optional) classHash: computed class hash of compiled contract. Pre-compute it for faster execution. - (required for Cairo1 without compiledClassHash) casm: CompiledContract \| string; - (optional for Cairo1 with casm) compiledClassHash: compiled class hash from casm. Pre-compute it for faster execution. | + +#### Returns + +`Promise`<[`AddDeclareTransactionResult`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionResult.md)\> + +a confirmation of sending a transaction on the starknet contract + +#### Implementation of + +[AccountInterface](AccountInterface.md).[declare](AccountInterface.md#declare) + +#### Overrides + +[Account](Account.md).[declare](Account.md#declare) + +#### Defined in + +[src/wallet/account.ts:147](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/account.ts#L147) + +--- + +### deploy + +▸ **deploy**(`payload`): `Promise`<[`MultiDeployContractResponse`](../namespaces/types.md#multideploycontractresponse)\> + +Deploys a declared contract to starknet - using Universal Deployer Contract (UDC) +support multicall + +#### Parameters + +| Name | Type | Description | +| :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `payload` | [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload) \| [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload)[] | classHash: computed class hash of compiled contract - [constructorCalldata] contract constructor calldata - [salt=pseudorandom] deploy address salt - [unique=true] ensure unique salt | + +#### Returns + +`Promise`<[`MultiDeployContractResponse`](../namespaces/types.md#multideploycontractresponse)\> + +- contract_address[] +- transaction_hash + +#### Implementation of + +[AccountInterface](AccountInterface.md).[deploy](AccountInterface.md#deploy) + +#### Overrides + +[Account](Account.md).[deploy](Account.md#deploy) + +#### Defined in + +[src/wallet/account.ts:170](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/account.ts#L170) + +--- + +### signMessage + +▸ **signMessage**(`typedData`): `Promise`<[`SIGNATURE`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#signature)\> + +Signs a TypedData object for off-chain usage with the Starknet private key and returns the signature +This adds a message prefix so it can't be interchanged with transactions + +#### Parameters + +| Name | Type | Description | +| :---------- | :----------------------------------------------------------------------- | :---------------------------- | +| `typedData` | [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) | TypedData object to be signed | + +#### Returns + +`Promise`<[`SIGNATURE`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#signature)\> + +the signature of the TypedData object + +**`Throws`** + +if typedData is not a valid TypedData + +#### Implementation of + +[AccountInterface](AccountInterface.md).[signMessage](AccountInterface.md#signmessage) + +#### Overrides + +[Account](Account.md).[signMessage](Account.md#signmessage) + +#### Defined in + +[src/wallet/account.ts:182](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/account.ts#L182) + +--- + +### getPreferredVersion + +▸ **getPreferredVersion**(`type12`, `type3`): [`ETransactionVersion`](../namespaces/types.RPC.RPCSPEC07.API.md#etransactionversion-1) + +#### Parameters + +| Name | Type | +| :------- | :-------------------------------------------------------------------------------------- | +| `type12` | [`ETransactionVersion`](../namespaces/types.RPC.RPCSPEC07.API.md#etransactionversion-1) | +| `type3` | [`ETransactionVersion`](../namespaces/types.RPC.RPCSPEC07.API.md#etransactionversion-1) | + +#### Returns + +[`ETransactionVersion`](../namespaces/types.RPC.RPCSPEC07.API.md#etransactionversion-1) + +#### Inherited from + +[Account](Account.md).[getPreferredVersion](Account.md#getpreferredversion) + +#### Defined in + +[src/account/default.ts:113](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L113) + +--- + +### getNonce + +▸ **getNonce**(`blockIdentifier?`): `Promise`<`string`\> + +Gets the nonce of the account with respect to a specific block + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :---------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | optional blockIdentifier. Defaults to 'pending' | + +#### Returns + +`Promise`<`string`\> + +nonce of the account + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getNonce](AccountInterface.md#getnonce) + +#### Inherited from + +[Account](Account.md).[getNonce](Account.md#getnonce) + +#### Defined in + +[src/account/default.ts:120](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L120) + +--- + +### getNonceSafe + +▸ **getNonceSafe**(`nonce?`): `Promise`<`bigint`\> + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `nonce?` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<`bigint`\> + +#### Inherited from + +[Account](Account.md).[getNonceSafe](Account.md#getnoncesafe) + +#### Defined in + +[src/account/default.ts:124](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L124) + +--- + +### getCairoVersion + +▸ **getCairoVersion**(`classHash?`): `Promise`<[`CairoVersion`](../namespaces/types.md#cairoversion)\> + +Retrieves the Cairo version from the network and sets `cairoVersion` if not already set in the constructor. + +#### Parameters + +| Name | Type | Description | +| :----------- | :------- | :----------------------------------------------------------------------------------- | +| `classHash?` | `string` | if provided detects Cairo version from classHash, otherwise from the account address | + +#### Returns + +`Promise`<[`CairoVersion`](../namespaces/types.md#cairoversion)\> + +#### Inherited from + +[Account](Account.md).[getCairoVersion](Account.md#getcairoversion) + +#### Defined in + +[src/account/default.ts:137](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L137) + +--- + +### estimateFee + +▸ **estimateFee**(`calls`, `estimateFeeDetails?`): `Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +#### Parameters + +| Name | Type | +| :------------------- | :---------------------------------------------------------------------------------------- | +| `calls` | [`AllowArray`](../namespaces/types.md#allowarray)<[`Call`](../namespaces/types.md#call)\> | +| `estimateFeeDetails` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | + +#### Returns + +`Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +#### Inherited from + +[Account](Account.md).[estimateFee](Account.md#estimatefee) + +#### Defined in + +[src/account/default.ts:147](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L147) + +--- + +### estimateInvokeFee + +▸ **estimateInvokeFee**(`calls`, `details?`): `Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +Estimate Fee for executing an INVOKE transaction on starknet + +#### Parameters + +| Name | Type | Description | +| :-------- | :---------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `calls` | [`AllowArray`](../namespaces/types.md#allowarray)<[`Call`](../namespaces/types.md#call)\> | the invocation object containing: - contractAddress - the address of the contract - entrypoint - the entrypoint of the contract - calldata? - (defaults to []) the calldata | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | blockIdentifier? - nonce? = 0 - skipValidate? - default true - tip? - prioritize order of transactions in the mempool. - accountDeploymentData? - deploy an account contract (substitution for deploy account transaction) - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337) - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei | + +#### Returns + +`Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +response from estimate_fee + +#### Implementation of + +[AccountInterface](AccountInterface.md).[estimateInvokeFee](AccountInterface.md#estimateinvokefee) + +#### Inherited from + +[Account](Account.md).[estimateInvokeFee](Account.md#estimateinvokefee) + +#### Defined in + +[src/account/default.ts:154](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L154) + +--- + +### estimateDeclareFee + +▸ **estimateDeclareFee**(`payload`, `details?`): `Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +Estimate Fee for executing a DECLARE transaction on starknet + +#### Parameters + +| Name | Type | Description | +| :-------- | :------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `payload` | [`DeclareContractPayload`](../namespaces/types.md#declarecontractpayload) | the payload object containing: - contract - the compiled contract to be declared - casm? - compiled cairo assembly. Cairo1(casm or compiledClassHash are required) - classHash? - the class hash of the compiled contract. Precalculate for faster execution. - compiledClassHash?: class hash of the cairo assembly. Cairo1(casm or compiledClassHash are required) | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | blockIdentifier? - nonce? = 0 - skipValidate? - default true - tip? - prioritize order of transactions in the mempool. - accountDeploymentData? - deploy an account contract (substitution for deploy account transaction) - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337) - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei | + +#### Returns + +`Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +response from estimate_fee + +#### Implementation of + +[AccountInterface](AccountInterface.md).[estimateDeclareFee](AccountInterface.md#estimatedeclarefee) + +#### Inherited from + +[Account](Account.md).[estimateDeclareFee](Account.md#estimatedeclarefee) + +#### Defined in + +[src/account/default.ts:193](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L193) + +--- + +### estimateAccountDeployFee + +▸ **estimateAccountDeployFee**(`«destructured»`, `details?`): `Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +Estimate Fee for executing a DEPLOY_ACCOUNT transaction on starknet + +#### Parameters + +| Name | Type | Description | +| :--------------- | :------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `«destructured»` | [`DeployAccountContractPayload`](../namespaces/types.md#deployaccountcontractpayload) | classHash - the class hash of the compiled contract. - constructorCalldata? - constructor data; - contractAddress? - future account contract address. Precalculate for faster execution. - addressSalt? - salt used for calculation of the contractAddress. Required if contractAddress is provided. | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | blockIdentifier? - nonce? = 0 - skipValidate? - default true - tip? - prioritize order of transactions in the mempool. - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337) - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei | + +#### Returns + +`Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +response from estimate_fee + +#### Implementation of + +[AccountInterface](AccountInterface.md).[estimateAccountDeployFee](AccountInterface.md#estimateaccountdeployfee) + +#### Inherited from + +[Account](Account.md).[estimateAccountDeployFee](Account.md#estimateaccountdeployfee) + +#### Defined in + +[src/account/default.ts:231](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L231) + +--- + +### estimateDeployFee + +▸ **estimateDeployFee**(`payload`, `details?`): `Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +Estimate Fee for executing a UDC DEPLOY transaction on starknet +This is different from the normal DEPLOY transaction as it goes through the Universal Deployer Contract (UDC) + +#### Parameters + +| Name | Type | Description | +| :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `payload` | [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload) \| [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload)[] | array or singular - classHash: computed class hash of compiled contract - salt: address salt - unique: bool if true ensure unique salt - constructorCalldata: constructor calldata | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | blockIdentifier? - nonce? - skipValidate? - default true - tip? - prioritize order of transactions in the mempool. - accountDeploymentData? - deploy an account contract (substitution for deploy account transaction) - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337) - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei | + +#### Returns + +`Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +#### Implementation of + +[AccountInterface](AccountInterface.md).[estimateDeployFee](AccountInterface.md#estimatedeployfee) + +#### Inherited from + +[Account](Account.md).[estimateDeployFee](Account.md#estimatedeployfee) + +#### Defined in + +[src/account/default.ts:270](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L270) + +--- + +### estimateFeeBulk + +▸ **estimateFeeBulk**(`invocations`, `details?`): `Promise`<[`EstimateFeeBulk`](../namespaces/types.md#estimatefeebulk)\> + +Estimate Fee for executing a list of transactions on starknet +Contract must be deployed for fee estimation to be possible + +#### Parameters + +| Name | Type | Description | +| :------------ | :------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `invocations` | [`Invocations`](../namespaces/types.md#invocations) | array of transaction object containing : - type - the type of transaction : 'DECLARE' \| (multi)'DEPLOY' \| (multi)'INVOKE_FUNCTION' \| 'DEPLOY_ACCOUNT' - payload - the payload of the transaction | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | blockIdentifier? - nonce? - skipValidate? - default true - tip? - prioritize order of transactions in the mempool. - accountDeploymentData? - deploy an account contract (substitution for deploy account transaction) - paymasterData? - entity other than the transaction sender to pay the transaction fees(EIP-4337) - nonceDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - feeDataAvailabilityMode? - allows users to choose their preferred data availability mode (Volition) - version? - specify ETransactionVersion - V3 Transactions fee is in fri, oldV transactions fee is in wei | + +#### Returns + +`Promise`<[`EstimateFeeBulk`](../namespaces/types.md#estimatefeebulk)\> + +response from estimate_fee + +#### Implementation of + +[AccountInterface](AccountInterface.md).[estimateFeeBulk](AccountInterface.md#estimatefeebulk) + +#### Inherited from + +[Account](Account.md).[estimateFeeBulk](Account.md#estimatefeebulk) + +#### Defined in + +[src/account/default.ts:278](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L278) + +--- + +### simulateTransaction + +▸ **simulateTransaction**(`invocations`, `details?`): `Promise`<[`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse)\> + +Simulates an array of transaction and returns an array of transaction trace and estimated fee. + +#### Parameters + +| Name | Type | Description | +| :------------ | :-------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------- | +| `invocations` | [`Invocations`](../namespaces/types.md#invocations) | Invocations containing: - type - transaction type: DECLARE, (multi)DEPLOY, DEPLOY_ACCOUNT, (multi)INVOKE_FUNCTION | +| `details` | [`SimulateTransactionDetails`](../namespaces/types.md#simulatetransactiondetails) | SimulateTransactionDetails | + +#### Returns + +`Promise`<[`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse)\> + +response from simulate_transaction + +#### Implementation of + +[AccountInterface](AccountInterface.md).[simulateTransaction](AccountInterface.md#simulatetransaction) + +#### Inherited from + +[Account](Account.md).[simulateTransaction](Account.md#simulatetransaction) + +#### Defined in + +[src/account/default.ts:304](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L304) + +--- + +### declareIfNot + +▸ **declareIfNot**(`payload`, `transactionsDetail?`): `Promise`<\{ `class_hash`: `string` ; `transaction_hash`: `string` }\> + +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 + +#### Parameters + +| Name | Type | Description | +| :------------------- | :------------------------------------------------------------------------ | :---------- | +| `payload` | [`DeclareContractPayload`](../namespaces/types.md#declarecontractpayload) | - | +| `transactionsDetail` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | (optional) | + +#### Returns + +`Promise`<\{ `class_hash`: `string` ; `transaction_hash`: `string` }\> + +#### Inherited from + +[Account](Account.md).[declareIfNot](Account.md#declareifnot) + +#### Defined in + +[src/account/default.ts:397](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L397) + +--- + +### deployContract + +▸ **deployContract**(`payload`, `details?`): `Promise`<[`DeployContractUDCResponse`](../namespaces/types.md#deploycontractudcresponse)\> + +Simplify deploy simulating old DeployContract with same response + UDC specific response +Internal wait for L2 transaction, support multicall + +#### Parameters + +| Name | Type | Description | +| :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `payload` | [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload) \| [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload)[] | classHash: computed class hash of compiled contract - [constructorCalldata] contract constructor calldata - [salt=pseudorandom] deploy address salt - [unique=true] ensure unique salt | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | InvocationsDetails | + +#### Returns + +`Promise`<[`DeployContractUDCResponse`](../namespaces/types.md#deploycontractudcresponse)\> + +- contract_address +- transaction_hash +- address +- deployer +- unique +- classHash +- calldata_len +- calldata +- salt + +#### Implementation of + +[AccountInterface](AccountInterface.md).[deployContract](AccountInterface.md#deploycontract) + +#### Inherited from + +[Account](Account.md).[deployContract](Account.md#deploycontract) + +#### Defined in + +[src/account/default.ts:470](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L470) + +--- + +### declareAndDeploy + +▸ **declareAndDeploy**(`payload`, `details?`): `Promise`<[`DeclareDeployUDCResponse`](../namespaces/types.md#declaredeployudcresponse)\> + +Declares and Deploy a given compiled contract (json) to starknet using UDC +Internal wait for L2 transaction, do not support multicall +Method will pass even if contract is already declared (internal using DeclareIfNot) + +#### Parameters + +| Name | Type | Description | +| :-------- | :------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `payload` | [`DeclareAndDeployContractPayload`](../namespaces/types.md#declareanddeploycontractpayload) | contract: compiled contract code - [casm=cairo1]: CairoAssembly \| undefined; - [compiledClassHash]: string \| undefined; - [classHash]: computed class hash of compiled contract - [constructorCalldata] contract constructor calldata - [salt=pseudorandom] deploy address salt - [unique=true] ensure unique salt | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | InvocationsDetails | + +#### Returns + +`Promise`<[`DeclareDeployUDCResponse`](../namespaces/types.md#declaredeployudcresponse)\> + +- declare + - transaction_hash +- deploy + - contract_address + - transaction_hash + - address + - deployer + - unique + - classHash + - calldata_len + - calldata + - salt + +#### Implementation of + +[AccountInterface](AccountInterface.md).[declareAndDeploy](AccountInterface.md#declareanddeploy) + +#### Inherited from + +[Account](Account.md).[declareAndDeploy](Account.md#declareanddeploy) + +#### Defined in + +[src/account/default.ts:479](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L479) + +--- + +### deployAccount + +▸ **deployAccount**(`«destructured»`, `details?`): `Promise`<[`DeployContractResponse`](../interfaces/types.DeployContractResponse.md)\> + +Deploy the account on Starknet + +#### Parameters + +| Name | Type | Description | +| :--------------- | :------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `«destructured»` | [`DeployAccountContractPayload`](../namespaces/types.md#deployaccountcontractpayload) | transaction payload to be deployed containing: - classHash: computed class hash of compiled contract - optional constructor calldata - optional address salt - optional contractAddress | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | InvocationsDetails | + +#### Returns + +`Promise`<[`DeployContractResponse`](../interfaces/types.DeployContractResponse.md)\> + +a confirmation of sending a transaction on the starknet contract + +#### Implementation of + +[AccountInterface](AccountInterface.md).[deployAccount](AccountInterface.md#deployaccount) + +#### Inherited from + +[Account](Account.md).[deployAccount](Account.md#deployaccount) + +#### Defined in + +[src/account/default.ts:498](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L498) + +--- + +### hashMessage + +▸ **hashMessage**(`typedData`): `Promise`<`string`\> + +Hash a TypedData object with Pedersen hash and return the hash +This adds a message prefix so it can't be interchanged with transactions + +#### Parameters + +| Name | Type | Description | +| :---------- | :----------------------------------------------------------------------- | :---------------------------- | +| `typedData` | [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) | TypedData object to be hashed | + +#### Returns + +`Promise`<`string`\> + +the hash of the TypedData object + +**`Throws`** + +if typedData is not a valid TypedData + +#### Implementation of + +[AccountInterface](AccountInterface.md).[hashMessage](AccountInterface.md#hashmessage) + +#### Inherited from + +[Account](Account.md).[hashMessage](Account.md#hashmessage) + +#### Defined in + +[src/account/default.ts:562](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L562) + +--- + +### verifyMessageHash + +▸ **verifyMessageHash**(`hash`, `signature`, `signatureVerificationFunctionName?`, `signatureVerificationResponse?`): `Promise`<`boolean`\> + +#### Parameters + +| Name | Type | +| :------------------------------------------ | :---------------------------------------------------- | +| `hash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `signature` | [`Signature`](../namespaces/types.md#signature) | +| `signatureVerificationFunctionName?` | `string` | +| `signatureVerificationResponse?` | `Object` | +| `signatureVerificationResponse.okResponse` | `string`[] | +| `signatureVerificationResponse.nokResponse` | `string`[] | +| `signatureVerificationResponse.error` | `string`[] | + +#### Returns + +`Promise`<`boolean`\> + +**`Deprecated`** + +To replace by `myRpcProvider.verifyMessageInStarknet()` + +#### Inherited from + +[Account](Account.md).[verifyMessageHash](Account.md#verifymessagehash) + +#### Defined in + +[src/account/default.ts:569](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L569) + +--- + +### verifyMessage + +▸ **verifyMessage**(`typedData`, `signature`, `signatureVerificationFunctionName?`, `signatureVerificationResponse?`): `Promise`<`boolean`\> + +#### Parameters + +| Name | Type | +| :------------------------------------------ | :----------------------------------------------------------------------- | +| `typedData` | [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) | +| `signature` | [`Signature`](../namespaces/types.md#signature) | +| `signatureVerificationFunctionName?` | `string` | +| `signatureVerificationResponse?` | `Object` | +| `signatureVerificationResponse.okResponse` | `string`[] | +| `signatureVerificationResponse.nokResponse` | `string`[] | +| `signatureVerificationResponse.error` | `string`[] | + +#### Returns + +`Promise`<`boolean`\> + +**`Deprecated`** + +To replace by `myRpcProvider.verifyMessageInStarknet()` + +#### Inherited from + +[Account](Account.md).[verifyMessage](Account.md#verifymessage) + +#### Defined in + +[src/account/default.ts:587](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L587) + +--- + +### getSnip9Version + +▸ **getSnip9Version**(): `Promise`<[`OutsideExecutionVersion`](../enums/types.OutsideExecutionVersion.md)\> + +Verify if an account is compatible with SNIP-9 outside execution, and with which version of this standard. + +#### Returns + +`Promise`<[`OutsideExecutionVersion`](../enums/types.OutsideExecutionVersion.md)\> + +Not compatible, V1, V2. + +**`Example`** + +```typescript +const result = myAccount.getSnip9Version(); +// result = "V1" +``` + +#### Inherited from + +[Account](Account.md).[getSnip9Version](Account.md#getsnip9version) + +#### Defined in + +[src/account/default.ts:611](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L611) + +--- + +### isValidSnip9Nonce + +▸ **isValidSnip9Nonce**(`nonce`): `Promise`<`boolean`\> + +Verify if a SNIP-9 nonce has not yet been used by the account. + +#### Parameters + +| Name | Type | Description | +| :------ | :---------------------------------------------------- | :-------------------- | +| `nonce` | [`BigNumberish`](../namespaces/types.md#bignumberish) | SNIP-9 nonce to test. | + +#### Returns + +`Promise`<`boolean`\> + +true if SNIP-9 nonce not yet used. + +**`Example`** + +```typescript +const result = myAccount.isValidSnip9Nonce(1234); +// result = true +``` + +#### Inherited from + +[Account](Account.md).[isValidSnip9Nonce](Account.md#isvalidsnip9nonce) + +#### Defined in + +[src/account/default.ts:632](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L632) + +--- + +### getSnip9Nonce + +▸ **getSnip9Nonce**(): `Promise`<`string`\> + +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`** + +```typescript +const result = myAccount.getSnip9Nonce(); +// result = "0x28a612590dbc36927933c8ee0f357eee639c8b22b3d3aa86949eed3ada4ac55" +``` + +#### Inherited from + +[Account](Account.md).[getSnip9Nonce](Account.md#getsnip9nonce) + +#### Defined in + +[src/account/default.ts:656](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L656) + +--- + +### getOutsideTransaction + +▸ **getOutsideTransaction**(`options`, `calls`, `version?`, `nonce?`): `Promise`<[`OutsideTransaction`](../interfaces/types.OutsideTransaction.md)\> + +Creates an object containing transaction(s) that can be executed by an other account with` Account.executeFromOutside()`, called Outside Transaction. + +#### Parameters + +| Name | Type | Description | +| :--------- | :---------------------------------------------------------------------------------------- | :------------------------------------------------------------------ | +| `options` | [`OutsideExecutionOptions`](../interfaces/types.OutsideExecutionOptions.md) | Parameters of the transaction(s). | +| `calls` | [`AllowArray`](../namespaces/types.md#allowarray)<[`Call`](../namespaces/types.md#call)\> | Transaction(s) to execute. | +| `version?` | [`OutsideExecutionVersion`](../enums/types.OutsideExecutionVersion.md) | SNIP-9 version of the Account that creates the outside transaction. | +| `nonce?` | [`BigNumberish`](../namespaces/types.md#bignumberish) | Outside Nonce. | + +#### Returns + +`Promise`<[`OutsideTransaction`](../interfaces/types.OutsideTransaction.md)\> + +and object that can be used in `Account.executeFromOutside()` + +**`Example`** + +```typescript +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 + +[Account](Account.md).[getOutsideTransaction](Account.md#getoutsidetransaction) + +#### Defined in + +[src/account/default.ts:693](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L693) + +--- + +### executeFromOutside + +▸ **executeFromOutside**(`outsideTransaction`, `opts?`): `Promise`<\{ `transaction_hash`: `string` }\> + +An account B executes a transaction that has been signed by an account A. +Fees are paid by B. + +#### Parameters + +| Name | Type | Description | +| :------------------- | :-------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- | +| `outsideTransaction` | [`AllowArray`](../namespaces/types.md#allowarray)<[`OutsideTransaction`](../interfaces/types.OutsideTransaction.md)\> | the signed transaction generated by `Account.getOutsideTransaction()`. | +| `opts?` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | same options than `Account.execute()`. | + +#### Returns + +`Promise`<\{ `transaction_hash`: `string` }\> + +same response than `Account.execute()`. + +**`Example`** + +```typescript +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 + +[Account](Account.md).[executeFromOutside](Account.md#executefromoutside) + +#### Defined in + +[src/account/default.ts:753](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L753) + +--- + +### getUniversalSuggestedFee + +▸ **getUniversalSuggestedFee**(`version`, `«destructured»`, `details`): `Promise`<[`UniversalSuggestedFee`](../namespaces/types.md#universalsuggestedfee)\> + +#### Parameters + +| Name | Type | +| :--------------- | :-------------------------------------------------------------------------------------- | +| `version` | [`ETransactionVersion`](../namespaces/types.RPC.RPCSPEC07.API.md#etransactionversion-1) | +| `«destructured»` | [`EstimateFeeAction`](../namespaces/types.md#estimatefeeaction) | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | + +#### Returns + +`Promise`<[`UniversalSuggestedFee`](../namespaces/types.md#universalsuggestedfee)\> + +#### Inherited from + +[Account](Account.md).[getUniversalSuggestedFee](Account.md#getuniversalsuggestedfee) + +#### Defined in + +[src/account/default.ts:765](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L765) + +--- + +### getSuggestedFee + +▸ **getSuggestedFee**(`«destructured»`, `details`): `Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +Gets Suggested Max Fee based on the transaction type + +#### Parameters + +| Name | Type | +| :--------------- | :-------------------------------------------------------------- | +| `«destructured»` | [`EstimateFeeAction`](../namespaces/types.md#estimatefeeaction) | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | + +#### Returns + +`Promise`<[`EstimateFee`](../interfaces/types.EstimateFee.md)\> + +EstimateFee (...response, resourceBounds, suggestedMaxFee) + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getSuggestedFee](AccountInterface.md#getsuggestedfee) + +#### Inherited from + +[Account](Account.md).[getSuggestedFee](Account.md#getsuggestedfee) + +#### Defined in + +[src/account/default.ts:789](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L789) + +--- + +### buildInvocation + +▸ **buildInvocation**(`call`, `details`): `Promise`<[`Invocation`](../namespaces/types.md#invocation)\> + +#### Parameters + +| Name | Type | +| :-------- | :---------------------------------------------------------------------------- | +| `call` | [`Call`](../namespaces/types.md#call)[] | +| `details` | [`InvocationsSignerDetails`](../namespaces/types.md#invocationssignerdetails) | + +#### Returns + +`Promise`<[`Invocation`](../namespaces/types.md#invocation)\> + +#### Inherited from + +[Account](Account.md).[buildInvocation](Account.md#buildinvocation) + +#### Defined in + +[src/account/default.ts:820](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L820) + +--- + +### buildDeclarePayload + +▸ **buildDeclarePayload**(`payload`, `details`): `Promise`<[`DeclareContractTransaction`](../namespaces/types.md#declarecontracttransaction)\> + +#### Parameters + +| Name | Type | +| :-------- | :---------------------------------------------------------------------------- | +| `payload` | [`DeclareContractPayload`](../namespaces/types.md#declarecontractpayload) | +| `details` | [`InvocationsSignerDetails`](../namespaces/types.md#invocationssignerdetails) | + +#### Returns + +`Promise`<[`DeclareContractTransaction`](../namespaces/types.md#declarecontracttransaction)\> + +#### Inherited from + +[Account](Account.md).[buildDeclarePayload](Account.md#builddeclarepayload) + +#### Defined in + +[src/account/default.ts:835](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L835) + +--- + +### buildAccountDeployPayload + +▸ **buildAccountDeployPayload**(`«destructured»`, `details`): `Promise`<[`DeployAccountContractTransaction`](../namespaces/types.md#deployaccountcontracttransaction)\> + +#### Parameters + +| Name | Type | +| :--------------- | :------------------------------------------------------------------------------------ | +| `«destructured»` | [`DeployAccountContractPayload`](../namespaces/types.md#deployaccountcontractpayload) | +| `details` | [`InvocationsSignerDetails`](../namespaces/types.md#invocationssignerdetails) | + +#### Returns + +`Promise`<[`DeployAccountContractTransaction`](../namespaces/types.md#deployaccountcontracttransaction)\> + +#### Inherited from + +[Account](Account.md).[buildAccountDeployPayload](Account.md#buildaccountdeploypayload) + +#### Defined in + +[src/account/default.ts:867](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L867) + +--- + +### buildUDCContractPayload + +▸ **buildUDCContractPayload**(`payload`): [`Call`](../namespaces/types.md#call)[] + +#### Parameters + +| Name | Type | +| :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `payload` | [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload) \| [`UniversalDeployerContractPayload`](../namespaces/types.md#universaldeployercontractpayload)[] | + +#### Returns + +[`Call`](../namespaces/types.md#call)[] + +#### Inherited from + +[Account](Account.md).[buildUDCContractPayload](Account.md#buildudccontractpayload) + +#### Defined in + +[src/account/default.ts:901](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L901) + +--- + +### accountInvocationsFactory + +▸ **accountInvocationsFactory**(`invocations`, `details`): `Promise`<[`AccountInvocations`](../namespaces/types.md#accountinvocations)\> + +#### Parameters + +| Name | Type | +| :------------ | :-------------------------------------------------------------------------------------------- | +| `invocations` | [`Invocations`](../namespaces/types.md#invocations) | +| `details` | [`AccountInvocationsFactoryDetails`](../namespaces/types.md#accountinvocationsfactorydetails) | + +#### Returns + +`Promise`<[`AccountInvocations`](../namespaces/types.md#accountinvocations)\> + +#### Inherited from + +[Account](Account.md).[accountInvocationsFactory](Account.md#accountinvocationsfactory) + +#### Defined in + +[src/account/default.ts:928](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L928) + +--- + +### getStarkName + +▸ **getStarkName**(`address?`, `StarknetIdContract?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :-------------------- | :---------------------------------------------------- | +| `address` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `StarknetIdContract?` | `string` | + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +[Account](Account.md).[getStarkName](Account.md#getstarkname-1) + +#### Defined in + +[src/account/default.ts:1026](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/account/default.ts#L1026) + +--- + +### fetch + +▸ **fetch**(`method`, `params?`, `id?`): `Promise`<`Response`\> + +#### Parameters + +| Name | Type | Default value | +| :-------- | :------------------- | :------------ | +| `method` | `string` | `undefined` | +| `params?` | `object` | `undefined` | +| `id` | `string` \| `number` | `0` | + +#### Returns + +`Promise`<`Response`\> + +#### Inherited from + +[Account](Account.md).[fetch](Account.md#fetch) + +#### Defined in + +[src/provider/rpc.ts:68](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L68) + +--- + +### getChainId + +▸ **getChainId**(): `Promise`<[`StarknetChainId`](../enums/constants.StarknetChainId.md)\> + +Gets the Starknet chain Id + +#### Returns + +`Promise`<[`StarknetChainId`](../enums/constants.StarknetChainId.md)\> + +the chain Id + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getChainId](AccountInterface.md#getchainid) + +#### Inherited from + +[Account](Account.md).[getChainId](Account.md#getchainid) + +#### Defined in + +[src/provider/rpc.ts:72](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L72) + +--- + +### getSpecVersion + +▸ **getSpecVersion**(): `Promise`<`string`\> + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +[Account](Account.md).[getSpecVersion](Account.md#getspecversion) + +#### Defined in + +[src/provider/rpc.ts:76](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L76) + +--- + +### getNonceForAddress + +▸ **getNonceForAddress**(`contractAddress`, `blockIdentifier?`): `Promise`<`string`\> + +Returns the nonce associated with the given address in the given block + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | contract address | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | - | + +#### Returns + +`Promise`<`string`\> + +the hex nonce + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getNonceForAddress](AccountInterface.md#getnonceforaddress) + +#### Inherited from + +[Account](Account.md).[getNonceForAddress](Account.md#getnonceforaddress) + +#### Defined in + +[src/provider/rpc.ts:80](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L80) + +--- + +### getBlock + +▸ **getBlock**(): `Promise`<[`PendingBlock`](../namespaces/types.md#pendingblock)\> + +Gets the block information + +#### Returns + +`Promise`<[`PendingBlock`](../namespaces/types.md#pendingblock)\> + +the block object + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getBlock](AccountInterface.md#getblock) + +#### Inherited from + +[Account](Account.md).[getBlock](Account.md#getblock) + +#### Defined in + +[src/provider/rpc.ts:87](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L87) + +▸ **getBlock**(`blockIdentifier`): `Promise`<[`PendingBlock`](../namespaces/types.md#pendingblock)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------- | +| `blockIdentifier` | `"pending"` | + +#### Returns + +`Promise`<[`PendingBlock`](../namespaces/types.md#pendingblock)\> + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getBlock](AccountInterface.md#getblock) + +#### Inherited from + +[Account](Account.md).[getBlock](Account.md#getblock) + +#### Defined in + +[src/provider/rpc.ts:88](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L88) + +▸ **getBlock**(`blockIdentifier`): `Promise`<[`Block`](../namespaces/types.md#block)\> + +#### Parameters + +| Name | Type | +| :---------------- | :--------- | +| `blockIdentifier` | `"latest"` | + +#### Returns + +`Promise`<[`Block`](../namespaces/types.md#block)\> + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getBlock](AccountInterface.md#getblock) + +#### Inherited from + +[Account](Account.md).[getBlock](Account.md#getblock) + +#### Defined in + +[src/provider/rpc.ts:89](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L89) + +▸ **getBlock**(`blockIdentifier?`): `Promise`<[`GetBlockResponse`](../namespaces/types.md#getblockresponse)\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`GetBlockResponse`](../namespaces/types.md#getblockresponse)\> + +#### Implementation of + +AccountInterface.getBlock + +#### Inherited from + +[Account](Account.md).[getBlock](Account.md#getblock) + +#### Defined in + +[src/provider/rpc.ts:90](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L90) + +--- + +### getBlockLatestAccepted + +▸ **getBlockLatestAccepted**(): `Promise`<[`BlockHashAndNumber`](../namespaces/types.RPC.RPCSPEC06.md#blockhashandnumber)\> + +Get the most recent accepted block hash and number + +#### Returns + +`Promise`<[`BlockHashAndNumber`](../namespaces/types.RPC.RPCSPEC06.md#blockhashandnumber)\> + +#### Inherited from + +[Account](Account.md).[getBlockLatestAccepted](Account.md#getblocklatestaccepted) + +#### Defined in + +[src/provider/rpc.ts:100](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L100) + +--- + +### getBlockNumber + +▸ **getBlockNumber**(): `Promise`<`number`\> + +Get the most recent accepted block number +redundant use getBlockLatestAccepted(); + +#### Returns + +`Promise`<`number`\> + +Number of the latest block + +#### Inherited from + +[Account](Account.md).[getBlockNumber](Account.md#getblocknumber) + +#### Defined in + +[src/provider/rpc.ts:109](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L109) + +--- + +### getBlockWithTxHashes + +▸ **getBlockWithTxHashes**(`blockIdentifier?`): `Promise`<[`BlockWithTxHashes`](../namespaces/types.RPC.RPCSPEC06.md#blockwithtxhashes)\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`BlockWithTxHashes`](../namespaces/types.RPC.RPCSPEC06.md#blockwithtxhashes)\> + +#### Inherited from + +[Account](Account.md).[getBlockWithTxHashes](Account.md#getblockwithtxhashes) + +#### Defined in + +[src/provider/rpc.ts:113](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L113) + +--- + +### getBlockWithTxs + +▸ **getBlockWithTxs**(`blockIdentifier?`): `Promise`<[`BlockWithTxs`](../namespaces/types.RPC.RPCSPEC06.md#blockwithtxs)\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`BlockWithTxs`](../namespaces/types.RPC.RPCSPEC06.md#blockwithtxs)\> + +#### Inherited from + +[Account](Account.md).[getBlockWithTxs](Account.md#getblockwithtxs) + +#### Defined in + +[src/provider/rpc.ts:117](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L117) + +--- + +### waitForBlock + +▸ **waitForBlock**(`blockIdentifier?`, `retryInterval?`): `Promise`<`void`\> + +Pause the execution of the script until a specified block is created. + +#### Parameters + +| Name | Type | Default value | Description | +| :---------------- | :---------------------------------------------------------- | :------------ | :------------------------------------------------------------------------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | `'pending'` | bloc number (BigNumberish) or 'pending' or 'latest'. Use of 'latest" or of a block already created will generate no pause. | +| `retryInterval?` | `number` | `5000` | number of milliseconds between 2 requests to the node | + +#### Returns + +`Promise`<`void`\> + +**`Example`** + +```typescript +await myProvider.waitForBlock(); +// wait the creation of the pending block +``` + +#### Inherited from + +[Account](Account.md).[waitForBlock](Account.md#waitforblock) + +#### Defined in + +[src/provider/rpc.ts:132](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L132) + +--- + +### getL1GasPrice + +▸ **getL1GasPrice**(`blockIdentifier?`): `Promise`<`string`\> + +Gets the price of l1 gas in the block + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<`string`\> + +gas price of the block + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getL1GasPrice](AccountInterface.md#getl1gasprice) + +#### Inherited from + +[Account](Account.md).[getL1GasPrice](Account.md#getl1gasprice) + +#### Defined in + +[src/provider/rpc.ts:162](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L162) + +--- + +### getL1MessageHash + +▸ **getL1MessageHash**(`l2TxHash`): `Promise`<`string`\> + +Get L1 message hash from L2 transaction hash + +#### Parameters + +| Name | Type | Description | +| :--------- | :---------------------------------------------------- | :------------------ | +| `l2TxHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | L2 transaction hash | + +#### Returns + +`Promise`<`string`\> + +Hex string of L1 message hash + +**`Example`** + +In Sepolia Testnet : + +```typescript +const result = provider.getL1MessageHash( + '0x28dfc05eb4f261b37ddad451ff22f1d08d4e3c24dc646af0ec69fa20e096819' +); +// result = '0x55b3f8b6e607fffd9b4d843dfe8f9b5c05822cd94fcad8797deb01d77805532a' +``` + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getL1MessageHash](AccountInterface.md#getl1messagehash) + +#### Inherited from + +[Account](Account.md).[getL1MessageHash](Account.md#getl1messagehash) + +#### Defined in + +[src/provider/rpc.ts:168](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L168) + +--- + +### getBlockWithReceipts + +▸ **getBlockWithReceipts**(`blockIdentifier?`): `Promise`<[`BlockWithTxReceipts`](../namespaces/types.RPC.RPCSPEC07.API.md#blockwithtxreceipts)\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`BlockWithTxReceipts`](../namespaces/types.RPC.RPCSPEC07.API.md#blockwithtxreceipts)\> + +#### Inherited from + +[Account](Account.md).[getBlockWithReceipts](Account.md#getblockwithreceipts) + +#### Defined in + +[src/provider/rpc.ts:184](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L184) + +--- + +### getBlockStateUpdate + +▸ **getBlockStateUpdate**(): `Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +#### Returns + +`Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +#### Inherited from + +[Account](Account.md).[getBlockStateUpdate](Account.md#getblockstateupdate) + +#### Defined in + +[src/provider/rpc.ts:193](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L193) + +▸ **getBlockStateUpdate**(`blockIdentifier`): `Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------- | +| `blockIdentifier` | `"pending"` | + +#### Returns + +`Promise`<\{ `block_hash`: `never` ; `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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +#### Inherited from + +[Account](Account.md).[getBlockStateUpdate](Account.md#getblockstateupdate) + +#### Defined in + +[src/provider/rpc.ts:194](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L194) + +▸ **getBlockStateUpdate**(`blockIdentifier`): `Promise`<\{ `block_hash`: `string` ; `old_root`: `string` ; `new_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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +#### Parameters + +| Name | Type | +| :---------------- | :--------- | +| `blockIdentifier` | `"latest"` | + +#### Returns + +`Promise`<\{ `block_hash`: `string` ; `old_root`: `string` ; `new_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: \{ ...; }[]; replaced_classes: \{ ...; }[]; nonces: \{ ...; }[]; } }\> + +#### Inherited from + +[Account](Account.md).[getBlockStateUpdate](Account.md#getblockstateupdate) + +#### Defined in + +[src/provider/rpc.ts:195](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L195) + +▸ **getBlockStateUpdate**(`blockIdentifier?`): `Promise`<[`StateUpdateResponse`](../namespaces/types.md#stateupdateresponse)\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`StateUpdateResponse`](../namespaces/types.md#stateupdateresponse)\> + +#### Inherited from + +[Account](Account.md).[getBlockStateUpdate](Account.md#getblockstateupdate) + +#### Defined in + +[src/provider/rpc.ts:196](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L196) + +--- + +### getBlockTransactionsTraces + +▸ **getBlockTransactionsTraces**(`blockIdentifier?`): `Promise`<[`BlockTransactionsTraces`](../namespaces/types.RPC.RPCSPEC06.md#blocktransactionstraces)\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`BlockTransactionsTraces`](../namespaces/types.RPC.RPCSPEC06.md#blocktransactionstraces)\> + +#### Inherited from + +[Account](Account.md).[getBlockTransactionsTraces](Account.md#getblocktransactionstraces) + +#### Defined in + +[src/provider/rpc.ts:201](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L201) + +--- + +### getBlockTransactionCount + +▸ **getBlockTransactionCount**(`blockIdentifier?`): `Promise`<`number`\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`number`\> + +#### Inherited from + +[Account](Account.md).[getBlockTransactionCount](Account.md#getblocktransactioncount) + +#### Defined in + +[src/provider/rpc.ts:205](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L205) + +--- + +### getPendingTransactions + +▸ **getPendingTransactions**(): `Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)[]\> + +Return transactions from pending block + +#### Returns + +`Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)[]\> + +**`Deprecated`** + +Instead use getBlock(BlockTag.PENDING); (will be removed in next minor version) +Utility method, same result can be achieved using getBlockWithTxHashes(BlockTag.pending); + +#### Inherited from + +[Account](Account.md).[getPendingTransactions](Account.md#getpendingtransactions) + +#### Defined in + +[src/provider/rpc.ts:214](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L214) + +--- + +### getTransaction + +▸ **getTransaction**(`txHash`): `Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +Gets the transaction information from a tx id. + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +the transaction object { transaction_id, status, transaction, block_number?, block_number?, transaction_index?, transaction_failure_reason? } + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getTransaction](AccountInterface.md#gettransaction) + +#### Inherited from + +[Account](Account.md).[getTransaction](Account.md#gettransaction) + +#### Defined in + +[src/provider/rpc.ts:221](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L221) + +--- + +### getTransactionByHash + +▸ **getTransactionByHash**(`txHash`): `Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +#### Inherited from + +[Account](Account.md).[getTransactionByHash](Account.md#gettransactionbyhash) + +#### Defined in + +[src/provider/rpc.ts:225](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L225) + +--- + +### getTransactionByBlockIdAndIndex + +▸ **getTransactionByBlockIdAndIndex**(`blockIdentifier`, `index`): `Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------------- | +| `blockIdentifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | +| `index` | `number` | + +#### Returns + +`Promise`<[`TransactionWithHash`](../namespaces/types.RPC.RPCSPEC06.md#transactionwithhash)\> + +#### Inherited from + +[Account](Account.md).[getTransactionByBlockIdAndIndex](Account.md#gettransactionbyblockidandindex) + +#### Defined in + +[src/provider/rpc.ts:229](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L229) + +--- + +### getTransactionReceipt + +▸ **getTransactionReceipt**(`txHash`): `Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +Gets the transaction receipt from a tx hash. + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +the transaction receipt object + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getTransactionReceipt](AccountInterface.md#gettransactionreceipt) + +#### Inherited from + +[Account](Account.md).[getTransactionReceipt](Account.md#gettransactionreceipt) + +#### Defined in + +[src/provider/rpc.ts:233](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L233) + +--- + +### getTransactionTrace + +▸ **getTransactionTrace**(`txHash`): `Promise`<[`TRANSACTION_TRACE`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#transaction_trace)\> + +#### Parameters + +| Name | Type | +| :------- | :---------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TRANSACTION_TRACE`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#transaction_trace)\> + +#### Inherited from + +[Account](Account.md).[getTransactionTrace](Account.md#gettransactiontrace) + +#### Defined in + +[src/provider/rpc.ts:240](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L240) + +--- + +### getTransactionStatus + +▸ **getTransactionStatus**(`transactionHash`): `Promise`<[`TransactionStatus`](../namespaces/types.RPC.RPCSPEC06.md#transactionstatus)\> + +Get the status of a transaction + +#### Parameters + +| Name | Type | +| :---------------- | :---------------------------------------------------- | +| `transactionHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +#### Returns + +`Promise`<[`TransactionStatus`](../namespaces/types.RPC.RPCSPEC06.md#transactionstatus)\> + +#### Inherited from + +[Account](Account.md).[getTransactionStatus](Account.md#gettransactionstatus) + +#### Defined in + +[src/provider/rpc.ts:247](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L247) + +--- + +### getSimulateTransaction + +▸ **getSimulateTransaction**(`invocations`, `options?`): `Promise`<[`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse)\> + +#### Parameters + +| Name | Type | Description | +| :------------ | :-------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `invocations` | [`AccountInvocations`](../namespaces/types.md#accountinvocations) | AccountInvocations | +| `options?` | [`getSimulateTransactionOptions`](../namespaces/types.md#getsimulatetransactionoptions) | blockIdentifier and flags to skip validation and fee charge
- blockIdentifier
- skipValidate (default false)
- skipFeeCharge (default true)
| + +#### Returns + +`Promise`<[`SimulateTransactionResponse`](../namespaces/types.md#simulatetransactionresponse)\> + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getSimulateTransaction](AccountInterface.md#getsimulatetransaction) + +#### Inherited from + +[Account](Account.md).[getSimulateTransaction](Account.md#getsimulatetransaction) + +#### Defined in + +[src/provider/rpc.ts:258](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L258) + +--- + +### waitForTransaction + +▸ **waitForTransaction**(`txHash`, `options?`): `Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +Wait for the transaction to be accepted + +#### Parameters + +| Name | Type | Description | +| :--------- | :------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------- | +| `txHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | transaction hash | +| `options?` | [`waitForTransactionOptions`](../namespaces/types.md#waitfortransactionoptions) | waitForTransactionOptions - (optional) retryInterval: number \| undefined; - (optional) successStates: TransactionStatus[] \| undefined; | + +#### Returns + +`Promise`<[`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse)\> + +GetTransactionReceiptResponse + +#### Implementation of + +[AccountInterface](AccountInterface.md).[waitForTransaction](AccountInterface.md#waitfortransaction) + +#### Inherited from + +[Account](Account.md).[waitForTransaction](Account.md#waitfortransaction) + +#### Defined in + +[src/provider/rpc.ts:268](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L268) + +--- + +### getStorageAt + +▸ **getStorageAt**(`contractAddress`, `key`, `blockIdentifier?`): `Promise`<`string`\> + +Get the value of the storage (contract's variable) at the given address and key + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------------------------------------------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | | +| `key` | [`BigNumberish`](../namespaces/types.md#bignumberish) | from getStorageVarAddress('') (WIP) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<`string`\> + +the value of the storage variable + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getStorageAt](AccountInterface.md#getstorageat) + +#### Inherited from + +[Account](Account.md).[getStorageAt](Account.md#getstorageat) + +#### Defined in + +[src/provider/rpc.ts:280](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L280) + +--- + +### getClassHashAt + +▸ **getClassHashAt**(`contractAddress`, `blockIdentifier?`): `Promise`<`string`\> + +Returns the contract class hash in the given block for the contract deployed at the given address + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | contract address | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<`string`\> + +Class hash + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getClassHashAt](AccountInterface.md#getclasshashat) + +#### Inherited from + +[Account](Account.md).[getClassHashAt](Account.md#getclasshashat) + +#### Defined in + +[src/provider/rpc.ts:288](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L288) + +--- + +### getClassByHash + +▸ **getClassByHash**(`classHash`): `Promise`<[`LegacyContractClass`](../namespaces/types.md#legacycontractclass) \| `Omit`<[`CompiledSierra`](../namespaces/types.md#compiledsierra), `"sierra_program_debug_info"`\>\> + +Returns the contract class deployed under the given class hash. + +#### Parameters + +| Name | Type | Description | +| :---------- | :---------------------------------------------------- | :---------- | +| `classHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | class hash | + +#### Returns + +`Promise`<[`LegacyContractClass`](../namespaces/types.md#legacycontractclass) \| `Omit`<[`CompiledSierra`](../namespaces/types.md#compiledsierra), `"sierra_program_debug_info"`\>\> + +Contract class of compiled contract + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getClassByHash](AccountInterface.md#getclassbyhash) + +#### Inherited from + +[Account](Account.md).[getClassByHash](Account.md#getclassbyhash) + +#### Defined in + +[src/provider/rpc.ts:292](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L292) + +--- + +### getClass + +▸ **getClass**(`classHash`, `blockIdentifier?`): `Promise`<[`LegacyContractClass`](../namespaces/types.md#legacycontractclass) \| `Omit`<[`CompiledSierra`](../namespaces/types.md#compiledsierra), `"sierra_program_debug_info"`\>\> + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `classHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<[`LegacyContractClass`](../namespaces/types.md#legacycontractclass) \| `Omit`<[`CompiledSierra`](../namespaces/types.md#compiledsierra), `"sierra_program_debug_info"`\>\> + +#### Inherited from + +[Account](Account.md).[getClass](Account.md#getclass) + +#### Defined in + +[src/provider/rpc.ts:296](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L296) + +--- + +### getClassAt + +▸ **getClassAt**(`contractAddress`, `blockIdentifier?`): `Promise`<[`LegacyContractClass`](../namespaces/types.md#legacycontractclass) \| `Omit`<[`CompiledSierra`](../namespaces/types.md#compiledsierra), `"sierra_program_debug_info"`\>\> + +Gets the contract class of the deployed contract. + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :--------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | contract address | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<[`LegacyContractClass`](../namespaces/types.md#legacycontractclass) \| `Omit`<[`CompiledSierra`](../namespaces/types.md#compiledsierra), `"sierra_program_debug_info"`\>\> + +Contract class of compiled contract + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getClassAt](AccountInterface.md#getclassat) + +#### Inherited from + +[Account](Account.md).[getClassAt](Account.md#getclassat) + +#### Defined in + +[src/provider/rpc.ts:302](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L302) + +--- + +### getContractVersion + +▸ **getContractVersion**(`contractAddress`, `classHash?`, `options?`): `Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +Gets the contract version from the provided address + +#### Parameters + +| Name | Type | Description | +| :---------------- | :------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `contractAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | string | +| `classHash?` | `undefined` | undefined | +| `options?` | [`getContractVersionOptions`](../namespaces/types.md#getcontractversionoptions) | getContractVersionOptions - (optional) compiler - (default true) extract compiler version using type tactic from abi - (optional) blockIdentifier - block identifier | + +#### Returns + +`Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getContractVersion](AccountInterface.md#getcontractversion) + +#### Inherited from + +[Account](Account.md).[getContractVersion](Account.md#getcontractversion) + +#### Defined in + +[src/provider/rpc.ts:308](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L308) + +▸ **getContractVersion**(`contractAddress`, `classHash`, `options?`): `Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +Gets the contract version from the provided address + +#### Parameters + +| Name | Type | Description | +| :---------------- | :------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `contractAddress` | `undefined` | undefined | +| `classHash` | [`BigNumberish`](../namespaces/types.md#bignumberish) | | +| `options?` | [`getContractVersionOptions`](../namespaces/types.md#getcontractversionoptions) | getContractVersionOptions - (optional) compiler - (default true) extract compiler version using type tactic from abi - (optional) blockIdentifier - block identifier | + +#### Returns + +`Promise`<[`ContractVersion`](../namespaces/types.md#contractversion)\> + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getContractVersion](AccountInterface.md#getcontractversion) + +#### Inherited from + +[Account](Account.md).[getContractVersion](Account.md#getcontractversion) + +#### Defined in + +[src/provider/rpc.ts:313](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L313) + +--- + +### getEstimateFee + +▸ **getEstimateFee**(`invocation`, `invocationDetails`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +#### Parameters + +| Name | Type | +| :------------------ | :---------------------------------------------------------------------------------- | +| `invocation` | [`Invocation`](../namespaces/types.md#invocation) | +| `invocationDetails` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | +| `skipValidate?` | `boolean` | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +**`Deprecated`** + +use get*type*EstimateFee (will be refactored based on type after sequencer deprecation) + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getEstimateFee](AccountInterface.md#getestimatefee) + +#### Inherited from + +[Account](Account.md).[getEstimateFee](Account.md#getestimatefee) + +#### Defined in + +[src/provider/rpc.ts:349](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L349) + +--- + +### getInvokeEstimateFee + +▸ **getInvokeEstimateFee**(`invocation`, `invocationDetails`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimates the fee for a given INVOKE transaction + +#### Parameters + +| Name | Type | Description | +| :------------------ | :---------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `invocation` | [`Invocation`](../namespaces/types.md#invocation) | the invocation object containing: - contractAddress - the address of the contract - entrypoint - the entrypoint of the contract - calldata - (defaults to []) the calldata - signature - (defaults to []) the signature | +| `invocationDetails` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | optional details containing: - nonce - optional nonce - version - optional version | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | (optional) block identifier | +| `skipValidate?` | `boolean` | (optional) skip cairo **validate** method | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +the estimated fee + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getInvokeEstimateFee](AccountInterface.md#getinvokeestimatefee) + +#### Inherited from + +[Account](Account.md).[getInvokeEstimateFee](Account.md#getinvokeestimatefee) + +#### Defined in + +[src/provider/rpc.ts:358](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L358) + +--- + +### getDeclareEstimateFee + +▸ **getDeclareEstimateFee**(`invocation`, `details`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimates the fee for a given DECLARE transaction + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------ | +| `invocation` | [`DeclareContractTransaction`](../namespaces/types.md#declarecontracttransaction) | transaction payload to be declared containing: - compiled contract code - sender address - signature - (defaults to []) the signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | optional details containing: - nonce - version - optional version - optional maxFee | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | (optional) block identifier | +| `skipValidate?` | `boolean` | (optional) skip cairo **validate** method | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +the estimated fee + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getDeclareEstimateFee](AccountInterface.md#getdeclareestimatefee) + +#### Inherited from + +[Account](Account.md).[getDeclareEstimateFee](Account.md#getdeclareestimatefee) + +#### Defined in + +[src/provider/rpc.ts:378](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L378) + +--- + +### getDeployAccountEstimateFee + +▸ **getDeployAccountEstimateFee**(`invocation`, `details`, `blockIdentifier?`, `skipValidate?`): `Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +Estimates the fee for a given DEPLOY_ACCOUNT transaction + +#### Parameters + +| Name | Type | Description | +| :----------------- | :-------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | +| `invocation` | [`DeployAccountContractTransaction`](../namespaces/types.md#deployaccountcontracttransaction) | transaction payload to be deployed containing: - classHash - constructorCalldata - addressSalt - signature - (defaults to []) the signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | optional details containing: - nonce - version - optional version - optional maxFee | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | (optional) block identifier | +| `skipValidate?` | `boolean` | (optional) skip cairo **validate** method | + +#### Returns + +`Promise`<[`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)\> + +the estimated fee + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getDeployAccountEstimateFee](AccountInterface.md#getdeployaccountestimatefee) + +#### Inherited from + +[Account](Account.md).[getDeployAccountEstimateFee](Account.md#getdeployaccountestimatefee) + +#### Defined in + +[src/provider/rpc.ts:398](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L398) + +--- + +### getEstimateFeeBulk + +▸ **getEstimateFeeBulk**(`invocations`, `options`): `Promise`<[`EstimateFeeResponseBulk`](../namespaces/types.md#estimatefeeresponsebulk)\> + +Estimates the fee for a list of INVOKE transaction + +#### Parameters + +| Name | Type | Description | +| :------------ | :------------------------------------------------------------------------------ | :----------------------------------------------------------------------- | +| `invocations` | [`AccountInvocations`](../namespaces/types.md#accountinvocations) | AccountInvocations - Complete invocations array with account details | +| `options` | [`getEstimateFeeBulkOptions`](../namespaces/types.md#getestimatefeebulkoptions) | getEstimateFeeBulkOptions - (optional) blockIdentifier - BlockIdentifier | + +#### Returns + +`Promise`<[`EstimateFeeResponseBulk`](../namespaces/types.md#estimatefeeresponsebulk)\> + +the estimated fee + +#### Implementation of + +[AccountInterface](AccountInterface.md).[getEstimateFeeBulk](AccountInterface.md#getestimatefeebulk) + +#### Inherited from + +[Account](Account.md).[getEstimateFeeBulk](Account.md#getestimatefeebulk) + +#### Defined in + +[src/provider/rpc.ts:418](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L418) + +--- + +### invokeFunction + +▸ **invokeFunction**(`functionInvocation`, `details`): `Promise`<[`InvokedTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#invokedtransaction)\> + +Invokes a function on starknet + +#### Parameters + +| Name | Type | Description | +| :------------------- | :---------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `functionInvocation` | [`Invocation`](../namespaces/types.md#invocation) | the invocation object containing: - contractAddress - the address of the contract - entrypoint - the entrypoint of the contract - calldata - (defaults to []) the calldata - signature - (defaults to []) the signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | optional details containing: - nonce - optional nonce - version - optional version - maxFee - optional maxFee | + +#### Returns + +`Promise`<[`InvokedTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#invokedtransaction)\> + +response from addTransaction + +**`Deprecated`** + +This method won't be supported as soon as fees are mandatory. Should not be used outside of Account class + +#### Implementation of + +[AccountInterface](AccountInterface.md).[invokeFunction](AccountInterface.md#invokefunction) + +#### Inherited from + +[Account](Account.md).[invokeFunction](Account.md#invokefunction) + +#### Defined in + +[src/provider/rpc.ts:427](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L427) + +--- + +### declareContract + +▸ **declareContract**(`transaction`, `details`): `Promise`<[`DeclaredTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#declaredtransaction)\> + +Declares a given compiled contract (json) to starknet + +#### Parameters + +| Name | Type | Description | +| :------------ | :---------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------- | +| `transaction` | [`DeclareContractTransaction`](../namespaces/types.md#declarecontracttransaction) | transaction payload to be deployed containing: - compiled contract code - sender address - signature | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | Invocation Details containing: - nonce - optional version - optional maxFee | + +#### Returns + +`Promise`<[`DeclaredTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#declaredtransaction)\> + +a confirmation of sending a transaction on the starknet contract + +#### Implementation of + +[AccountInterface](AccountInterface.md).[declareContract](AccountInterface.md#declarecontract) + +#### Inherited from + +[Account](Account.md).[declareContract](Account.md#declarecontract) + +#### Defined in + +[src/provider/rpc.ts:434](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L434) + +--- + +### deployAccountContract + +▸ **deployAccountContract**(`transaction`, `details`): `Promise`<[`DeployedAccountTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#deployedaccounttransaction)\> + +Deploys a given compiled Account contract (json) to starknet + +#### Parameters + +| Name | Type | Description | +| :------------ | :-------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------ | +| `transaction` | [`DeployAccountContractTransaction`](../namespaces/types.md#deployaccountcontracttransaction) | payload to be deployed containing: - compiled contract code - constructor calldata - address salt | +| `details` | [`InvocationsDetailsWithNonce`](../namespaces/types.md#invocationsdetailswithnonce) | - | + +#### Returns + +`Promise`<[`DeployedAccountTransaction`](../namespaces/types.RPC.RPCSPEC07.API.md#deployedaccounttransaction)\> + +a confirmation of sending a transaction on the starknet contract + +#### Implementation of + +[AccountInterface](AccountInterface.md).[deployAccountContract](AccountInterface.md#deployaccountcontract) + +#### Inherited from + +[Account](Account.md).[deployAccountContract](Account.md#deployaccountcontract) + +#### Defined in + +[src/provider/rpc.ts:441](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L441) + +--- + +### callContract + +▸ **callContract**(`call`, `blockIdentifier?`): `Promise`<`string`[]\> + +Calls a function on the Starknet contract. + +#### Parameters + +| Name | Type | Description | +| :----------------- | :---------------------------------------------------------- | :----------------------- | +| `call` | [`Call`](../namespaces/types.md#call) | transaction to be called | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | block identifier | + +#### Returns + +`Promise`<`string`[]\> + +the result of the function on the smart contract. + +#### Implementation of + +[AccountInterface](AccountInterface.md).[callContract](AccountInterface.md#callcontract) + +#### Inherited from + +[Account](Account.md).[callContract](Account.md#callcontract) + +#### Defined in + +[src/provider/rpc.ts:451](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L451) + +--- + +### estimateMessageFee + +▸ **estimateMessageFee**(`message`, `blockIdentifier?`): `Promise`<[`FEE_ESTIMATE`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#fee_estimate)\> + +NEW: Estimate the fee for a message from L1 + +#### Parameters + +| Name | Type | Description | +| :----------------- | :------------------------------------------------------------------------- | :-------------- | +| `message` | [`MSG_FROM_L1`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#msg_from_l1) | Message From L1 | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | - | + +#### Returns + +`Promise`<[`FEE_ESTIMATE`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#fee_estimate)\> + +#### Inherited from + +[Account](Account.md).[estimateMessageFee](Account.md#estimatemessagefee) + +#### Defined in + +[src/provider/rpc.ts:459](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L459) + +--- + +### getSyncingStats + +▸ **getSyncingStats**(): `Promise`<[`Syncing`](../namespaces/types.RPC.RPCSPEC06.md#syncing)\> + +Returns an object about the sync status, or false if the node is not synching + +#### Returns + +`Promise`<[`Syncing`](../namespaces/types.RPC.RPCSPEC06.md#syncing)\> + +Object with the stats data + +#### Inherited from + +[Account](Account.md).[getSyncingStats](Account.md#getsyncingstats) + +#### Defined in + +[src/provider/rpc.ts:467](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L467) + +--- + +### getEvents + +▸ **getEvents**(`eventFilter`): `Promise`<[`EVENTS_CHUNK`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#events_chunk)\> + +Returns all events matching the given filter + +#### Parameters + +| Name | Type | +| :------------ | :-------------------------------------------------------------------- | +| `eventFilter` | [`EventFilter`](../namespaces/types.RPC.RPCSPEC07.API.md#eventfilter) | + +#### Returns + +`Promise`<[`EVENTS_CHUNK`](../namespaces/types.RPC.RPCSPEC06.SPEC.md#events_chunk)\> + +events and the pagination of the events + +#### Inherited from + +[Account](Account.md).[getEvents](Account.md#getevents) + +#### Defined in + +[src/provider/rpc.ts:475](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L475) + +--- + +### verifyMessageInStarknet + +▸ **verifyMessageInStarknet**(`message`, `signature`, `accountAddress`, `signatureVerificationFunctionName?`, `signatureVerificationResponse?`): `Promise`<`boolean`\> + +Verify in Starknet a signature of a TypedData object or of a given hash. + +#### Parameters + +| Name | Type | Description | +| :------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------ | +| `message` | [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) \| [`BigNumberish`](../namespaces/types.md#bignumberish) | TypedData object to be verified, or message hash to be verified. | +| `signature` | [`Signature`](../namespaces/types.md#signature) | signature of the message. | +| `accountAddress` | [`BigNumberish`](../namespaces/types.md#bignumberish) | address of the account that has signed the message. | +| `signatureVerificationFunctionName?` | `string` | if account contract with non standard account verification function name. | +| `signatureVerificationResponse?` | `Object` | if account contract with non standard response of verification function. | +| `signatureVerificationResponse.okResponse` | `string`[] | - | +| `signatureVerificationResponse.nokResponse` | `string`[] | - | +| `signatureVerificationResponse.error` | `string`[] | - | + +#### Returns + +`Promise`<`boolean`\> + +```typescript +const myTypedMessage: TypedMessage = .... ; +const messageHash = typedData.getMessageHash(myTypedMessage,accountAddress); +const sign: WeierstrassSignatureType = ec.starkCurve.sign(messageHash, privateKey); +const accountAddress = "0x43b7240d227aa2fb8434350b3321c40ac1b88c7067982549e7609870621b535"; +const result1 = myRpcProvider.verifyMessageInStarknet(myTypedMessage, sign, accountAddress); +const result2 = myRpcProvider.verifyMessageInStarknet(messageHash, sign, accountAddress); +// result1 = result2 = true +``` + +#### Inherited from + +[Account](Account.md).[verifyMessageInStarknet](Account.md#verifymessageinstarknet) + +#### Defined in + +[src/provider/rpc.ts:497](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L497) + +--- + +### isClassDeclared + +▸ **isClassDeclared**(`contractClassIdentifier`, `blockIdentifier?`): `Promise`<`boolean`\> + +Test if class is already declared from ContractClassIdentifier +Helper method using getClass + +#### Parameters + +| Name | Type | +| :------------------------ | :-------------------------------------------------------------------------- | +| `contractClassIdentifier` | [`ContractClassIdentifier`](../namespaces/types.md#contractclassidentifier) | +| `blockIdentifier?` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`Promise`<`boolean`\> + +#### Inherited from + +[Account](Account.md).[isClassDeclared](Account.md#isclassdeclared) + +#### Defined in + +[src/provider/rpc.ts:583](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L583) + +--- + +### prepareInvocations + +▸ **prepareInvocations**(`invocations`): `Promise`<[`Invocations`](../namespaces/types.md#invocations)\> + +Build bulk invocations with auto-detect declared class + +1. Test if class is declared if not declare it preventing already declared class error and not declared class errors +2. Order declarations first + +#### Parameters + +| Name | Type | +| :------------ | :-------------------------------------------------- | +| `invocations` | [`Invocations`](../namespaces/types.md#invocations) | + +#### Returns + +`Promise`<[`Invocations`](../namespaces/types.md#invocations)\> + +#### Inherited from + +[Account](Account.md).[prepareInvocations](Account.md#prepareinvocations) + +#### Defined in + +[src/provider/rpc.ts:614](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/rpc.ts#L614) + +--- + +### getAddressFromStarkName + +▸ **getAddressFromStarkName**(`name`, `StarknetIdContract?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :-------------------- | :------- | +| `name` | `string` | +| `StarknetIdContract?` | `string` | + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +[Account](Account.md).[getAddressFromStarkName](Account.md#getaddressfromstarkname-1) + +#### Defined in + +[src/provider/extensions/starknetId.ts:31](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/extensions/starknetId.ts#L31) + +--- + +### getStarkProfile + +▸ **getStarkProfile**(`address`, `StarknetIdContract?`, `StarknetIdIdentityContract?`, `StarknetIdVerifierContract?`, `StarknetIdPfpContract?`, `StarknetIdPopContract?`, `StarknetIdMulticallContract?`): `Promise`<[`StarkProfile`](../namespaces/types.md#starkprofile)\> + +#### Parameters + +| Name | Type | +| :----------------------------- | :---------------------------------------------------- | +| `address` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `StarknetIdContract?` | `string` | +| `StarknetIdIdentityContract?` | `string` | +| `StarknetIdVerifierContract?` | `string` | +| `StarknetIdPfpContract?` | `string` | +| `StarknetIdPopContract?` | `string` | +| `StarknetIdMulticallContract?` | `string` | + +#### Returns + +`Promise`<[`StarkProfile`](../namespaces/types.md#starkprofile)\> + +#### Inherited from + +[Account](Account.md).[getStarkProfile](Account.md#getstarkprofile-1) + +#### Defined in + +[src/provider/extensions/starknetId.ts:40](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/extensions/starknetId.ts#L40) diff --git a/www/versioned_docs/version-6.24.1/API/classes/_category_.yml b/www/versioned_docs/version-6.24.1/API/classes/_category_.yml new file mode 100644 index 000000000..4ddfa3005 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/_category_.yml @@ -0,0 +1,2 @@ +label: 'Classes' +position: 3 diff --git a/www/versioned_docs/version-6.24.1/API/classes/merkle.MerkleTree.md b/www/versioned_docs/version-6.24.1/API/classes/merkle.MerkleTree.md new file mode 100644 index 000000000..4a5ae24e8 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/merkle.MerkleTree.md @@ -0,0 +1,177 @@ +--- +id: 'merkle.MerkleTree' +title: 'Class: MerkleTree' +sidebar_label: 'MerkleTree' +custom_edit_url: null +--- + +[merkle](../namespaces/merkle.md).MerkleTree + +## Constructors + +### constructor + +• **new MerkleTree**(`leafHashes`, `hashMethod?`): [`MerkleTree`](merkle.MerkleTree.md) + +Create a Merkle tree + +#### Parameters + +| Name | Type | Default value | Description | +| :----------- | :----------------------------------------------------------------------------------------------------------------------------------- | :-------------------- | :------------------------------------ | +| `leafHashes` | `string`[] | `undefined` | hex-string array | +| `hashMethod` | (`a`: [`BigNumberish`](../namespaces/types.md#bignumberish), `b`: [`BigNumberish`](../namespaces/types.md#bignumberish)) => `string` | `computePedersenHash` | hash method to use, default: Pedersen | + +#### Returns + +[`MerkleTree`](merkle.MerkleTree.md) + +created Merkle tree + +**`Example`** + +```typescript +const leaves = ['0x1', '0x2', '0x3', '0x4', '0x5', '0x6', '0x7']; +const tree = new MerkleTree(leaves); +// tree = { +// branches: [['0x5bb9440e2...', '0x262697b88...', ...], ['0x38118a340...', ...], ...], +// leaves: ['0x1', '0x2', '0x3', '0x4', '0x5', '0x6', '0x7'], +// root: '0x7f748c75e5bdb7ae28013f076b8ab650c4e01d3530c6e5ab665f9f1accbe7d4', +// hashMethod: [Function computePedersenHash], +// } +``` + +#### Defined in + +[src/utils/merkle.ts:31](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/merkle.ts#L31) + +## Properties + +### leaves + +• **leaves**: `string`[] + +#### Defined in + +[src/utils/merkle.ts:5](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/merkle.ts#L5) + +--- + +### branches + +• **branches**: `string`[][] = `[]` + +#### Defined in + +[src/utils/merkle.ts:7](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/merkle.ts#L7) + +--- + +### root + +• **root**: `string` + +#### Defined in + +[src/utils/merkle.ts:9](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/merkle.ts#L9) + +--- + +### hashMethod + +• **hashMethod**: (`a`: [`BigNumberish`](../namespaces/types.md#bignumberish), `b`: [`BigNumberish`](../namespaces/types.md#bignumberish)) => `string` + +#### Type declaration + +▸ (`a`, `b`): `string` + +##### Parameters + +| Name | Type | +| :--- | :---------------------------------------------------- | +| `a` | [`BigNumberish`](../namespaces/types.md#bignumberish) | +| `b` | [`BigNumberish`](../namespaces/types.md#bignumberish) | + +##### Returns + +`string` + +#### Defined in + +[src/utils/merkle.ts:11](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/merkle.ts#L11) + +## Methods + +### hash + +▸ **hash**(`a`, `b`, `hashMethod?`): `string` + +Calculate hash from ordered a and b, Pedersen hash default + +#### Parameters + +| Name | Type | Default value | Description | +| :----------- | :----------------------------------------------------------------------------------------------------------------------------------- | :-------------------- | :------------------------------------ | +| `a` | [`BigNumberish`](../namespaces/types.md#bignumberish) | `undefined` | first value | +| `b` | [`BigNumberish`](../namespaces/types.md#bignumberish) | `undefined` | second value | +| `hashMethod` | (`a`: [`BigNumberish`](../namespaces/types.md#bignumberish), `b`: [`BigNumberish`](../namespaces/types.md#bignumberish)) => `string` | `computePedersenHash` | hash method to use, default: Pedersen | + +#### Returns + +`string` + +result of the hash function + +**`Example`** + +```typescript +const result1 = MerkleTree.hash('0xabc', '0xdef'); +// result1 = '0x484f029da7914ada038b1adf67fc83632364a3ebc2cd9349b41ab61626d9e82' + +const customHashMethod = (a, b) => `custom_${a}_${b}`; +const result2 = MerkleTree.hash('0xabc', '0xdef', customHashMethod); +// result2 = 'custom_2748_3567' +``` + +#### Defined in + +[src/utils/merkle.ts:76](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/merkle.ts#L76) + +--- + +### getProof + +▸ **getProof**(`leaf`, `branch?`, `hashPath?`): `string`[] + +Calculates the merkle membership proof path + +#### Parameters + +| Name | Type | Default value | Description | +| :--------- | :--------- | :------------ | :--------------- | +| `leaf` | `string` | `undefined` | hex-string | +| `branch` | `string`[] | `undefined` | hex-string array | +| `hashPath` | `string`[] | `[]` | hex-string array | + +#### Returns + +`string`[] + +collection of merkle proof hex-string hashes + +**`Example`** + +```typescript +const leaves = ['0x1', '0x2', '0x3', '0x4', '0x5', '0x6', '0x7']; +const tree = new MerkleTree(leaves); +const result = tree.getProof('0x3'); +// result = [ +// '0x4', +// '0x5bb9440e27889a364bcb678b1f679ecd1347acdedcbf36e83494f857cc58026', +// '0x8c0e46dd2df9aaf3a8ebfbc25408a582ad7fa7171f0698ddbbc5130b4b4e60', +// ] +``` + +#### Defined in + +[src/utils/merkle.ts:104](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/merkle.ts#L104) diff --git a/www/versioned_docs/version-6.24.1/API/classes/provider-1.Block.md b/www/versioned_docs/version-6.24.1/API/classes/provider-1.Block.md new file mode 100644 index 000000000..b941bafc3 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/classes/provider-1.Block.md @@ -0,0 +1,210 @@ +--- +id: 'provider-1.Block' +title: 'Class: Block' +sidebar_label: 'Block' +custom_edit_url: null +--- + +[provider](../namespaces/provider-1.md).Block + +This class is formatting the identifier of a block. + +hex string and BigInt are detected as block hashes. identifier return { block_hash: hash } + +decimal string and number are detected as block numbers. identifier return { block_number: number } + +text string are detected as block tag. identifier return tag + +null is detected as 'pending' block tag. identifier return 'pending' + +**`Example`** + +```typescript +const result = new provider.Block(null).identifier; +// result = "pending" +``` + +## Constructors + +### constructor + +• **new Block**(`_identifier`): [`Block`](provider-1.Block.md) + +Create a Block instance + +#### Parameters + +| Name | Type | Description | +| :------------ | :---------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `_identifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | hex string and BigInt are detected as block hashes. decimal string and number are detected as block numbers. text string are detected as block tag. null is considered as a 'pending' block tag. | + +#### Returns + +[`Block`](provider-1.Block.md) + +#### Defined in + +[src/utils/provider.ts:197](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L197) + +## Properties + +### hash + +• **hash**: [`BlockIdentifier`](../namespaces/types.md#blockidentifier) = `null` + +**`Param`** + +if not null, contains the block hash + +#### Defined in + +[src/utils/provider.ts:154](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L154) + +--- + +### number + +• **number**: [`BlockIdentifier`](../namespaces/types.md#blockidentifier) = `null` + +**`Param`** + +if not null, contains the block number + +#### Defined in + +[src/utils/provider.ts:159](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L159) + +--- + +### tag + +• **tag**: [`BlockIdentifier`](../namespaces/types.md#blockidentifier) = `null` + +**`Param`** + +if not null, contains "pending" or "latest" + +#### Defined in + +[src/utils/provider.ts:164](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L164) + +## Accessors + +### queryIdentifier + +• `get` **queryIdentifier**(): `any` + +#### Returns + +`any` + +the identifier as a string + +**`Example`** + +```typescript +const result = new provider.Block(123456n).queryIdentifier; +// result = "blockHash=0x1e240" +``` + +#### Defined in + +[src/utils/provider.ts:210](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L210) + +--- + +### identifier + +• `get` **identifier**(): `any` + +#### Returns + +`any` + +the identifier as an object + +**`Example`** + +```typescript +const result = new provider.Block(56789).identifier; +// result = { block_number: 56789 } +``` + +#### Defined in + +[src/utils/provider.ts:231](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L231) + +• `set` **identifier**(`_identifier`): `void` + +change the identifier of an existing Block instance + +#### Parameters + +| Name | Type | +| :------------ | :---------------------------------------------------------- | +| `_identifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`void` + +**`Example`** + +```typescript +const myBlock = new provider.Block('latest'); +myBlock.identifier = '0x3456789abc'; +const result = myBlock.identifier; +// result = { block_hash: '0x3456789abc' } +``` + +#### Defined in + +[src/utils/provider.ts:253](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L253) + +## Methods + +### setIdentifier + +▸ **setIdentifier**(`__identifier`): `void` + +#### Parameters + +| Name | Type | +| :------------- | :---------------------------------------------------------- | +| `__identifier` | [`BlockIdentifier`](../namespaces/types.md#blockidentifier) | + +#### Returns + +`void` + +#### Defined in + +[src/utils/provider.ts:166](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L166) + +--- + +### valueOf + +▸ **valueOf**(): [`BlockIdentifier`](../namespaces/types.md#blockidentifier) + +#### Returns + +[`BlockIdentifier`](../namespaces/types.md#blockidentifier) + +#### Defined in + +[src/utils/provider.ts:257](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L257) + +--- + +### toString + +▸ **toString**(): [`BlockIdentifier`](../namespaces/types.md#blockidentifier) + +#### Returns + +[`BlockIdentifier`](../namespaces/types.md#blockidentifier) + +#### Defined in + +[src/utils/provider.ts:259](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L259) diff --git a/www/versioned_docs/version-6.24.1/API/enums/_category_.yml b/www/versioned_docs/version-6.24.1/API/enums/_category_.yml new file mode 100644 index 000000000..195776cfb --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/enums/_category_.yml @@ -0,0 +1,2 @@ +label: 'Enumerations' +position: 2 diff --git a/www/versioned_docs/version-6.24.1/API/enums/constants.BaseUrl.md b/www/versioned_docs/version-6.24.1/API/enums/constants.BaseUrl.md new file mode 100644 index 000000000..114c847df --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/enums/constants.BaseUrl.md @@ -0,0 +1,28 @@ +--- +id: 'constants.BaseUrl' +title: 'Enumeration: BaseUrl' +sidebar_label: 'BaseUrl' +custom_edit_url: null +--- + +[constants](../namespaces/constants.md).BaseUrl + +## Enumeration Members + +### SN_MAIN + +• **SN_MAIN** = `"https://alpha-mainnet.starknet.io"` + +#### Defined in + +[src/global/constants.ts:35](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L35) + +--- + +### SN_SEPOLIA + +• **SN_SEPOLIA** = `"https://alpha-sepolia.starknet.io"` + +#### Defined in + +[src/global/constants.ts:36](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L36) diff --git a/www/versioned_docs/version-6.24.1/API/enums/constants.FeeMarginPercentage.md b/www/versioned_docs/version-6.24.1/API/enums/constants.FeeMarginPercentage.md new file mode 100644 index 000000000..b5ece98a0 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/enums/constants.FeeMarginPercentage.md @@ -0,0 +1,38 @@ +--- +id: 'constants.FeeMarginPercentage' +title: 'Enumeration: FeeMarginPercentage' +sidebar_label: 'FeeMarginPercentage' +custom_edit_url: null +--- + +[constants](../namespaces/constants.md).FeeMarginPercentage + +## Enumeration Members + +### L1_BOUND_MAX_AMOUNT + +• **L1_BOUND_MAX_AMOUNT** = `50` + +#### Defined in + +[src/global/constants.ts:58](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L58) + +--- + +### L1_BOUND_MAX_PRICE_PER_UNIT + +• **L1_BOUND_MAX_PRICE_PER_UNIT** = `50` + +#### Defined in + +[src/global/constants.ts:59](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L59) + +--- + +### MAX_FEE + +• **MAX_FEE** = `50` + +#### Defined in + +[src/global/constants.ts:60](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L60) diff --git a/www/versioned_docs/version-6.24.1/API/enums/constants.NetworkName.md b/www/versioned_docs/version-6.24.1/API/enums/constants.NetworkName.md new file mode 100644 index 000000000..cfa0c9ee4 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/enums/constants.NetworkName.md @@ -0,0 +1,28 @@ +--- +id: 'constants.NetworkName' +title: 'Enumeration: NetworkName' +sidebar_label: 'NetworkName' +custom_edit_url: null +--- + +[constants](../namespaces/constants.md).NetworkName + +## Enumeration Members + +### SN_MAIN + +• **SN_MAIN** = `"SN_MAIN"` + +#### Defined in + +[src/global/constants.ts:40](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L40) + +--- + +### SN_SEPOLIA + +• **SN_SEPOLIA** = `"SN_SEPOLIA"` + +#### Defined in + +[src/global/constants.ts:41](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L41) diff --git a/www/versioned_docs/version-6.24.1/API/enums/constants.StarknetChainId.md b/www/versioned_docs/version-6.24.1/API/enums/constants.StarknetChainId.md new file mode 100644 index 000000000..5e604c4eb --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/enums/constants.StarknetChainId.md @@ -0,0 +1,28 @@ +--- +id: 'constants.StarknetChainId' +title: 'Enumeration: StarknetChainId' +sidebar_label: 'StarknetChainId' +custom_edit_url: null +--- + +[constants](../namespaces/constants.md).StarknetChainId + +## Enumeration Members + +### SN_MAIN + +• **SN_MAIN** = `"0x534e5f4d41494e"` + +#### Defined in + +[src/global/constants.ts:45](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L45) + +--- + +### SN_SEPOLIA + +• **SN_SEPOLIA** = `"0x534e5f5345504f4c4941"` + +#### Defined in + +[src/global/constants.ts:46](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L46) diff --git a/www/versioned_docs/version-6.24.1/API/enums/constants.TransactionHashPrefix.md b/www/versioned_docs/version-6.24.1/API/enums/constants.TransactionHashPrefix.md new file mode 100644 index 000000000..1b152d0cc --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/enums/constants.TransactionHashPrefix.md @@ -0,0 +1,58 @@ +--- +id: 'constants.TransactionHashPrefix' +title: 'Enumeration: TransactionHashPrefix' +sidebar_label: 'TransactionHashPrefix' +custom_edit_url: null +--- + +[constants](../namespaces/constants.md).TransactionHashPrefix + +## Enumeration Members + +### DECLARE + +• **DECLARE** = `"0x6465636c617265"` + +#### Defined in + +[src/global/constants.ts:50](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L50) + +--- + +### DEPLOY + +• **DEPLOY** = `"0x6465706c6f79"` + +#### Defined in + +[src/global/constants.ts:51](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L51) + +--- + +### DEPLOY_ACCOUNT + +• **DEPLOY_ACCOUNT** = `"0x6465706c6f795f6163636f756e74"` + +#### Defined in + +[src/global/constants.ts:52](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L52) + +--- + +### INVOKE + +• **INVOKE** = `"0x696e766f6b65"` + +#### Defined in + +[src/global/constants.ts:53](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L53) + +--- + +### L1_HANDLER + +• **L1_HANDLER** = `"0x6c315f68616e646c6572"` + +#### Defined in + +[src/global/constants.ts:54](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L54) diff --git a/www/versioned_docs/version-6.24.1/API/enums/types.OutsideExecutionVersion.md b/www/versioned_docs/version-6.24.1/API/enums/types.OutsideExecutionVersion.md new file mode 100644 index 000000000..1022d7a57 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/enums/types.OutsideExecutionVersion.md @@ -0,0 +1,38 @@ +--- +id: 'types.OutsideExecutionVersion' +title: 'Enumeration: OutsideExecutionVersion' +sidebar_label: 'OutsideExecutionVersion' +custom_edit_url: null +--- + +[types](../namespaces/types.md).OutsideExecutionVersion + +## Enumeration Members + +### UNSUPPORTED + +• **UNSUPPORTED** = `"0"` + +#### Defined in + +[src/types/outsideExecution.ts:78](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L78) + +--- + +### V1 + +• **V1** = `"1"` + +#### Defined in + +[src/types/outsideExecution.ts:79](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L79) + +--- + +### V2 + +• **V2** = `"2"` + +#### Defined in + +[src/types/outsideExecution.ts:80](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L80) diff --git a/www/versioned_docs/version-6.24.1/API/index.md b/www/versioned_docs/version-6.24.1/API/index.md new file mode 100644 index 000000000..9fc168060 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/index.md @@ -0,0 +1,59 @@ +--- +id: 'index' +title: 'Starknet.js API' +sidebar_label: 'Readme' +sidebar_position: 0 +custom_edit_url: null +--- + +This API is based on the [Starknet.js V3](https://github.com/starknet-io/starknet.js/discussions/102) Interface write up by [Janek](https://twitter.com/0xjanek) of [Argent](https://www.argent.xyz/) + +## Provider + +The Provider [**API**](./classes/Provider.md) allows you to interact with the Starknet network, without signing transactions or messages. + +Typically, these are _read_ calls on the blockchain. + +Guide is [**here**](../guides/connect_network.md). + +## Account + +An Account extends [`Provider`](./classes/Provider) and inherits all of its methods. + +It also introduces new methods that allow Accounts to create and verify signatures with a custom [`Signer`](./classes/Signer), declare and deploy Contract and deploy new Account + +This [**API**](./classes/Account.md) is the primary way to interact with an account contract on Starknet. + +Guide is [**here**](../guides/create_account.md). + +## Contract + +Contracts [**API**](./classes/Contract.md) can do data transformations in JavaScript based on an ABI. They can also call and invoke to Starknet through a provided Signer. + +Contracts allow you to transform Cairo values, like `Uint256` to `BigNumber`. It could also allow users to pass their own transformers, similar to `JSON.parse`. + +Guide is [**here**](../guides/create_contract.md). + +## Signer + +The Signer [**API**](./classes/Signer.md) allows you to sign transactions and messages, and also allows you to get the public key. + +## Utils + +Util functions are provided so you can use various low level functions in your application: + +### [elliptic curve](./namespaces/ec.md) + +### [hash](./namespaces/hash.md) + +### [num](./namespaces/num.md) + +### [encode](./namespaces/encode.md) + +### [merkle](./namespaces/merkle.md) + +### [shortString](./namespaces/shortString.md) + +### [stark](./namespaces/stark.md) + +### [uint256](./namespaces/uint256.md) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/_category_.yml b/www/versioned_docs/version-6.24.1/API/interfaces/_category_.yml new file mode 100644 index 000000000..8ad053b07 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/_category_.yml @@ -0,0 +1,2 @@ +label: 'Interfaces' +position: 4 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/ec.weierstrass.ProjConstructor.md b/www/versioned_docs/version-6.24.1/API/interfaces/ec.weierstrass.ProjConstructor.md new file mode 100644 index 000000000..d16948bad --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/ec.weierstrass.ProjConstructor.md @@ -0,0 +1,175 @@ +--- +id: 'ec.weierstrass.ProjConstructor' +title: 'Interface: ProjConstructor' +sidebar_label: 'ProjConstructor' +custom_edit_url: null +--- + +[ec](../namespaces/ec.md).[weierstrass](../namespaces/ec.weierstrass.md).ProjConstructor + +## Type parameters + +| Name | +| :--- | +| `T` | + +## Hierarchy + +- `GroupConstructor`<[`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\>\> + + ↳ **`ProjConstructor`** + +## Constructors + +### constructor + +• **new ProjConstructor**(`x`, `y`, `z`): [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Parameters + +| Name | Type | +| :--- | :--- | +| `x` | `T` | +| `y` | `T` | +| `z` | `T` | + +#### Returns + +[`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Inherited from + +GroupConstructor\>.constructor + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:76 + +## Properties + +### BASE + +• **BASE**: [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Inherited from + +GroupConstructor.BASE + +#### Defined in + +node_modules/@noble/curves/esm/abstract/curve.d.ts:19 + +--- + +### ZERO + +• **ZERO**: [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Inherited from + +GroupConstructor.ZERO + +#### Defined in + +node_modules/@noble/curves/esm/abstract/curve.d.ts:20 + +## Methods + +### fromAffine + +▸ **fromAffine**(`p`): [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Parameters + +| Name | Type | +| :--- | :----------------------------------------------------------------- | +| `p` | [`AffinePoint`](../namespaces/ec.weierstrass.md#affinepoint)<`T`\> | + +#### Returns + +[`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:77 + +--- + +### fromHex + +▸ **fromHex**(`hex`): [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Parameters + +| Name | Type | +| :---- | :---- | +| `hex` | `Hex` | + +#### Returns + +[`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:78 + +--- + +### fromPrivateKey + +▸ **fromPrivateKey**(`privateKey`): [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Parameters + +| Name | Type | +| :----------- | :-------- | +| `privateKey` | `PrivKey` | + +#### Returns + +[`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:79 + +--- + +### normalizeZ + +▸ **normalizeZ**(`points`): [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\>[] + +#### Parameters + +| Name | Type | +| :------- | :--------------------------------------------------------- | +| `points` | [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\>[] | + +#### Returns + +[`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\>[] + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:80 + +--- + +### msm + +▸ **msm**(`points`, `scalars`): [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Parameters + +| Name | Type | +| :-------- | :--------------------------------------------------------- | +| `points` | [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\>[] | +| `scalars` | `bigint`[] | + +#### Returns + +[`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:81 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/ec.weierstrass.ProjPointType.md b/www/versioned_docs/version-6.24.1/API/interfaces/ec.weierstrass.ProjPointType.md new file mode 100644 index 000000000..9c68e3805 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/ec.weierstrass.ProjPointType.md @@ -0,0 +1,406 @@ +--- +id: 'ec.weierstrass.ProjPointType' +title: 'Interface: ProjPointType' +sidebar_label: 'ProjPointType' +custom_edit_url: null +--- + +[ec](../namespaces/ec.md).[weierstrass](../namespaces/ec.weierstrass.md).ProjPointType + +### Design rationale for types + +- Interaction between classes from different curves should fail: + `k256.Point.BASE.add(p256.Point.BASE)` +- For this purpose we want to use `instanceof` operator, which is fast and works during runtime +- Different calls of `curve()` would return different classes - + `curve(params) !== curve(params)`: if somebody decided to monkey-patch their curve, + it won't affect others + +TypeScript can't infer types for classes created inside a function. Classes is one instance of nominative types in TypeScript and interfaces only check for shape, so it's hard to create unique type for every function call. + +We can use generic types via some param, like curve opts, but that would: 1. Enable interaction between `curve(params)` and `curve(params)` (curves of same params) +which is hard to debug. 2. Params can be generic and we can't enforce them to be constant value: +if somebody creates curve from non-constant params, +it would be allowed to interact with other curves with non-constant params + +TODO: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#unique-symbol + +## Type parameters + +| Name | +| :--- | +| `T` | + +## Hierarchy + +- `Group`<[`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\>\> + + ↳ **`ProjPointType`** + +## Properties + +### px + +• `Readonly` **px**: `T` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:58 + +--- + +### py + +• `Readonly` **py**: `T` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:59 + +--- + +### pz + +• `Readonly` **pz**: `T` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:60 + +## Accessors + +### x + +• `get` **x**(): `T` + +#### Returns + +`T` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:61 + +--- + +### y + +• `get` **y**(): `T` + +#### Returns + +`T` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:62 + +## Methods + +### multiply + +▸ **multiply**(`scalar`): [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Parameters + +| Name | Type | +| :------- | :------- | +| `scalar` | `bigint` | + +#### Returns + +[`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Overrides + +Group.multiply + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:63 + +--- + +### toAffine + +▸ **toAffine**(`iz?`): [`AffinePoint`](../namespaces/ec.weierstrass.md#affinepoint)<`T`\> + +#### Parameters + +| Name | Type | +| :---- | :--- | +| `iz?` | `T` | + +#### Returns + +[`AffinePoint`](../namespaces/ec.weierstrass.md#affinepoint)<`T`\> + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:64 + +--- + +### isTorsionFree + +▸ **isTorsionFree**(): `boolean` + +#### Returns + +`boolean` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:65 + +--- + +### clearCofactor + +▸ **clearCofactor**(): [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Returns + +[`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:66 + +--- + +### assertValidity + +▸ **assertValidity**(): `void` + +#### Returns + +`void` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:67 + +--- + +### hasEvenY + +▸ **hasEvenY**(): `boolean` + +#### Returns + +`boolean` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:68 + +--- + +### toRawBytes + +▸ **toRawBytes**(`isCompressed?`): `Uint8Array` + +#### Parameters + +| Name | Type | +| :-------------- | :-------- | +| `isCompressed?` | `boolean` | + +#### Returns + +`Uint8Array` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:69 + +--- + +### toHex + +▸ **toHex**(`isCompressed?`): `string` + +#### Parameters + +| Name | Type | +| :-------------- | :-------- | +| `isCompressed?` | `boolean` | + +#### Returns + +`string` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:70 + +--- + +### multiplyUnsafe + +▸ **multiplyUnsafe**(`scalar`): [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Parameters + +| Name | Type | +| :------- | :------- | +| `scalar` | `bigint` | + +#### Returns + +[`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:71 + +--- + +### multiplyAndAddUnsafe + +▸ **multiplyAndAddUnsafe**(`Q`, `a`, `b`): `undefined` \| [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Parameters + +| Name | Type | +| :--- | :------------------------------------------------------- | +| `Q` | [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> | +| `a` | `bigint` | +| `b` | `bigint` | + +#### Returns + +`undefined` \| [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:72 + +--- + +### \_setWindowSize + +▸ **\_setWindowSize**(`windowSize`): `void` + +#### Parameters + +| Name | Type | +| :----------- | :------- | +| `windowSize` | `number` | + +#### Returns + +`void` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:73 + +--- + +### double + +▸ **double**(): [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Returns + +[`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Inherited from + +Group.double + +#### Defined in + +node_modules/@noble/curves/esm/abstract/curve.d.ts:11 + +--- + +### negate + +▸ **negate**(): [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Returns + +[`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Inherited from + +Group.negate + +#### Defined in + +node_modules/@noble/curves/esm/abstract/curve.d.ts:12 + +--- + +### add + +▸ **add**(`other`): [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Parameters + +| Name | Type | +| :------ | :------------------------------------------------------- | +| `other` | [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> | + +#### Returns + +[`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Inherited from + +Group.add + +#### Defined in + +node_modules/@noble/curves/esm/abstract/curve.d.ts:13 + +--- + +### subtract + +▸ **subtract**(`other`): [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Parameters + +| Name | Type | +| :------ | :------------------------------------------------------- | +| `other` | [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> | + +#### Returns + +[`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> + +#### Inherited from + +Group.subtract + +#### Defined in + +node_modules/@noble/curves/esm/abstract/curve.d.ts:14 + +--- + +### equals + +▸ **equals**(`other`): `boolean` + +#### Parameters + +| Name | Type | +| :------ | :------------------------------------------------------- | +| `other` | [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`T`\> | + +#### Returns + +`boolean` + +#### Inherited from + +Group.equals + +#### Defined in + +node_modules/@noble/curves/esm/abstract/curve.d.ts:15 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/ec.weierstrass.SignatureType.md b/www/versioned_docs/version-6.24.1/API/interfaces/ec.weierstrass.SignatureType.md new file mode 100644 index 000000000..87f24c80d --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/ec.weierstrass.SignatureType.md @@ -0,0 +1,188 @@ +--- +id: 'ec.weierstrass.SignatureType' +title: 'Interface: SignatureType' +sidebar_label: 'SignatureType' +custom_edit_url: null +--- + +[ec](../namespaces/ec.md).[weierstrass](../namespaces/ec.weierstrass.md).SignatureType + +## Properties + +### r + +• `Readonly` **r**: `bigint` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:152 + +--- + +### s + +• `Readonly` **s**: `bigint` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:153 + +--- + +### recovery + +• `Optional` `Readonly` **recovery**: `number` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:154 + +## Methods + +### assertValidity + +▸ **assertValidity**(): `void` + +#### Returns + +`void` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:155 + +--- + +### addRecoveryBit + +▸ **addRecoveryBit**(`recovery`): [`RecoveredSignatureType`](../namespaces/ec.weierstrass.md#recoveredsignaturetype) + +#### Parameters + +| Name | Type | +| :--------- | :------- | +| `recovery` | `number` | + +#### Returns + +[`RecoveredSignatureType`](../namespaces/ec.weierstrass.md#recoveredsignaturetype) + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:156 + +--- + +### hasHighS + +▸ **hasHighS**(): `boolean` + +#### Returns + +`boolean` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:157 + +--- + +### normalizeS + +▸ **normalizeS**(): [`SignatureType`](ec.weierstrass.SignatureType.md) + +#### Returns + +[`SignatureType`](ec.weierstrass.SignatureType.md) + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:158 + +--- + +### recoverPublicKey + +▸ **recoverPublicKey**(`msgHash`): [`ProjPointType`](ec.weierstrass.ProjPointType.md)<`bigint`\> + +#### Parameters + +| Name | Type | +| :-------- | :---- | +| `msgHash` | `Hex` | + +#### Returns + +[`ProjPointType`](ec.weierstrass.ProjPointType.md)<`bigint`\> + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:159 + +--- + +### toCompactRawBytes + +▸ **toCompactRawBytes**(): `Uint8Array` + +#### Returns + +`Uint8Array` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:160 + +--- + +### toCompactHex + +▸ **toCompactHex**(): `string` + +#### Returns + +`string` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:161 + +--- + +### toDERRawBytes + +▸ **toDERRawBytes**(`isCompressed?`): `Uint8Array` + +#### Parameters + +| Name | Type | +| :-------------- | :-------- | +| `isCompressed?` | `boolean` | + +#### Returns + +`Uint8Array` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:162 + +--- + +### toDERHex + +▸ **toDERHex**(`isCompressed?`): `string` + +#### Parameters + +| Name | Type | +| :-------------- | :-------- | +| `isCompressed?` | `boolean` | + +#### Returns + +`string` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:163 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.CallStruct.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.CallStruct.md new file mode 100644 index 000000000..f401f41e4 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.CallStruct.md @@ -0,0 +1,38 @@ +--- +id: 'types.CallStruct' +title: 'Interface: CallStruct' +sidebar_label: 'CallStruct' +custom_edit_url: null +--- + +[types](../namespaces/types.md).CallStruct + +## Properties + +### to + +• **to**: `string` + +#### Defined in + +[src/types/lib/index.ts:301](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L301) + +--- + +### selector + +• **selector**: `string` + +#### Defined in + +[src/types/lib/index.ts:302](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L302) + +--- + +### calldata + +• **calldata**: `string`[] + +#### Defined in + +[src/types/lib/index.ts:303](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L303) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.DeployContractResponse.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.DeployContractResponse.md new file mode 100644 index 000000000..be0bd5aa8 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.DeployContractResponse.md @@ -0,0 +1,28 @@ +--- +id: 'types.DeployContractResponse' +title: 'Interface: DeployContractResponse' +sidebar_label: 'DeployContractResponse' +custom_edit_url: null +--- + +[types](../namespaces/types.md).DeployContractResponse + +## Properties + +### contract_address + +• **contract_address**: `string` + +#### Defined in + +[src/types/account.ts:49](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L49) + +--- + +### transaction_hash + +• **transaction_hash**: `string` + +#### Defined in + +[src/types/account.ts:50](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L50) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.EstimateFee.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.EstimateFee.md new file mode 100644 index 000000000..e670093f3 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.EstimateFee.md @@ -0,0 +1,133 @@ +--- +id: 'types.EstimateFee' +title: 'Interface: EstimateFee' +sidebar_label: 'EstimateFee' +custom_edit_url: null +--- + +[types](../namespaces/types.md).EstimateFee + +## Hierarchy + +- [`EstimateFeeResponse`](types.EstimateFeeResponse.md) + + ↳ **`EstimateFee`** + +## Properties + +### gas_consumed + +• **gas_consumed**: `bigint` + +#### Inherited from + +[EstimateFeeResponse](types.EstimateFeeResponse.md).[gas_consumed](types.EstimateFeeResponse.md#gas_consumed) + +#### Defined in + +[src/types/provider/response.ts:118](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L118) + +--- + +### overall_fee + +• **overall_fee**: `bigint` + +#### Inherited from + +[EstimateFeeResponse](types.EstimateFeeResponse.md).[overall_fee](types.EstimateFeeResponse.md#overall_fee) + +#### Defined in + +[src/types/provider/response.ts:119](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L119) + +--- + +### gas_price + +• **gas_price**: `bigint` + +#### Inherited from + +[EstimateFeeResponse](types.EstimateFeeResponse.md).[gas_price](types.EstimateFeeResponse.md#gas_price) + +#### Defined in + +[src/types/provider/response.ts:120](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L120) + +--- + +### unit + +• **unit**: `PRICE_UNIT` + +#### Inherited from + +[EstimateFeeResponse](types.EstimateFeeResponse.md).[unit](types.EstimateFeeResponse.md#unit) + +#### Defined in + +[src/types/provider/response.ts:121](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L121) + +--- + +### suggestedMaxFee + +• **suggestedMaxFee**: `bigint` + +#### Inherited from + +[EstimateFeeResponse](types.EstimateFeeResponse.md).[suggestedMaxFee](types.EstimateFeeResponse.md#suggestedmaxfee) + +#### Defined in + +[src/types/provider/response.ts:122](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L122) + +--- + +### resourceBounds + +• **resourceBounds**: `Object` + +#### Type declaration + +| Name | Type | +| :------- | :--------------------------------------------------- | +| `l1_gas` | \{ max_amount: string; max_price_per_unit: string; } | +| `l2_gas` | \{ max_amount: string; max_price_per_unit: string; } | + +#### Inherited from + +[EstimateFeeResponse](types.EstimateFeeResponse.md).[resourceBounds](types.EstimateFeeResponse.md#resourcebounds) + +#### Defined in + +[src/types/provider/response.ts:123](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L123) + +--- + +### data_gas_consumed + +• **data_gas_consumed**: `bigint` + +#### Inherited from + +[EstimateFeeResponse](types.EstimateFeeResponse.md).[data_gas_consumed](types.EstimateFeeResponse.md#data_gas_consumed) + +#### Defined in + +[src/types/provider/response.ts:124](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L124) + +--- + +### data_gas_price + +• **data_gas_price**: `bigint` + +#### Inherited from + +[EstimateFeeResponse](types.EstimateFeeResponse.md).[data_gas_price](types.EstimateFeeResponse.md#data_gas_price) + +#### Defined in + +[src/types/provider/response.ts:125](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L125) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.EstimateFeeDetails.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.EstimateFeeDetails.md new file mode 100644 index 000000000..9a2240aa2 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.EstimateFeeDetails.md @@ -0,0 +1,168 @@ +--- +id: 'types.EstimateFeeDetails' +title: 'Interface: EstimateFeeDetails' +sidebar_label: 'EstimateFeeDetails' +custom_edit_url: null +--- + +[types](../namespaces/types.md).EstimateFeeDetails + +## Hierarchy + +- [`UniversalDetails`](types.UniversalDetails.md) + + ↳ **`EstimateFeeDetails`** + +## Properties + +### nonce + +• `Optional` **nonce**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +#### Inherited from + +[UniversalDetails](types.UniversalDetails.md).[nonce](types.UniversalDetails.md#nonce) + +#### Defined in + +[src/types/account.ts:33](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L33) + +--- + +### blockIdentifier + +• `Optional` **blockIdentifier**: [`BlockIdentifier`](../namespaces/types.md#blockidentifier) + +#### Inherited from + +[UniversalDetails](types.UniversalDetails.md).[blockIdentifier](types.UniversalDetails.md#blockidentifier) + +#### Defined in + +[src/types/account.ts:34](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L34) + +--- + +### maxFee + +• `Optional` **maxFee**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +#### Inherited from + +[UniversalDetails](types.UniversalDetails.md).[maxFee](types.UniversalDetails.md#maxfee) + +#### Defined in + +[src/types/account.ts:35](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L35) + +--- + +### tip + +• `Optional` **tip**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +#### Inherited from + +[UniversalDetails](types.UniversalDetails.md).[tip](types.UniversalDetails.md#tip) + +#### Defined in + +[src/types/account.ts:36](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L36) + +--- + +### paymasterData + +• `Optional` **paymasterData**: [`BigNumberish`](../namespaces/types.md#bignumberish)[] + +#### Inherited from + +[UniversalDetails](types.UniversalDetails.md).[paymasterData](types.UniversalDetails.md#paymasterdata) + +#### Defined in + +[src/types/account.ts:37](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L37) + +--- + +### accountDeploymentData + +• `Optional` **accountDeploymentData**: [`BigNumberish`](../namespaces/types.md#bignumberish)[] + +#### Inherited from + +[UniversalDetails](types.UniversalDetails.md).[accountDeploymentData](types.UniversalDetails.md#accountdeploymentdata) + +#### Defined in + +[src/types/account.ts:38](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L38) + +--- + +### nonceDataAvailabilityMode + +• `Optional` **nonceDataAvailabilityMode**: [`EDataAvailabilityMode`](../namespaces/types.RPC.RPCSPEC07.API.md#edataavailabilitymode-1) + +#### Inherited from + +[UniversalDetails](types.UniversalDetails.md).[nonceDataAvailabilityMode](types.UniversalDetails.md#noncedataavailabilitymode) + +#### Defined in + +[src/types/account.ts:39](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L39) + +--- + +### feeDataAvailabilityMode + +• `Optional` **feeDataAvailabilityMode**: [`EDataAvailabilityMode`](../namespaces/types.RPC.RPCSPEC07.API.md#edataavailabilitymode-1) + +#### Inherited from + +[UniversalDetails](types.UniversalDetails.md).[feeDataAvailabilityMode](types.UniversalDetails.md#feedataavailabilitymode) + +#### Defined in + +[src/types/account.ts:40](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L40) + +--- + +### version + +• `Optional` **version**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +#### Inherited from + +[UniversalDetails](types.UniversalDetails.md).[version](types.UniversalDetails.md#version) + +#### Defined in + +[src/types/account.ts:41](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L41) + +--- + +### resourceBounds + +• `Optional` **resourceBounds**: [`RESOURCE_BOUNDS_MAPPING`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#resource_bounds_mapping) + +#### Inherited from + +[UniversalDetails](types.UniversalDetails.md).[resourceBounds](types.UniversalDetails.md#resourcebounds) + +#### Defined in + +[src/types/account.ts:42](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L42) + +--- + +### skipValidate + +• `Optional` **skipValidate**: `boolean` + +#### Inherited from + +[UniversalDetails](types.UniversalDetails.md).[skipValidate](types.UniversalDetails.md#skipvalidate) + +#### Defined in + +[src/types/account.ts:43](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L43) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.EstimateFeeResponse.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.EstimateFeeResponse.md new file mode 100644 index 000000000..a8806f4ca --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.EstimateFeeResponse.md @@ -0,0 +1,101 @@ +--- +id: 'types.EstimateFeeResponse' +title: 'Interface: EstimateFeeResponse' +sidebar_label: 'EstimateFeeResponse' +custom_edit_url: null +--- + +[types](../namespaces/types.md).EstimateFeeResponse + +## Hierarchy + +- **`EstimateFeeResponse`** + + ↳ [`EstimateFee`](types.EstimateFee.md) + +## Properties + +### gas_consumed + +• **gas_consumed**: `bigint` + +#### Defined in + +[src/types/provider/response.ts:118](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L118) + +--- + +### overall_fee + +• **overall_fee**: `bigint` + +#### Defined in + +[src/types/provider/response.ts:119](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L119) + +--- + +### gas_price + +• **gas_price**: `bigint` + +#### Defined in + +[src/types/provider/response.ts:120](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L120) + +--- + +### unit + +• **unit**: `PRICE_UNIT` + +#### Defined in + +[src/types/provider/response.ts:121](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L121) + +--- + +### suggestedMaxFee + +• **suggestedMaxFee**: `bigint` + +#### Defined in + +[src/types/provider/response.ts:122](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L122) + +--- + +### resourceBounds + +• **resourceBounds**: `Object` + +#### Type declaration + +| Name | Type | +| :------- | :--------------------------------------------------- | +| `l1_gas` | \{ max_amount: string; max_price_per_unit: string; } | +| `l2_gas` | \{ max_amount: string; max_price_per_unit: string; } | + +#### Defined in + +[src/types/provider/response.ts:123](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L123) + +--- + +### data_gas_consumed + +• **data_gas_consumed**: `bigint` + +#### Defined in + +[src/types/provider/response.ts:124](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L124) + +--- + +### data_gas_price + +• **data_gas_price**: `bigint` + +#### Defined in + +[src/types/provider/response.ts:125](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L125) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.MessageToL1.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.MessageToL1.md new file mode 100644 index 000000000..15d0a2d4c --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.MessageToL1.md @@ -0,0 +1,28 @@ +--- +id: 'types.MessageToL1' +title: 'Interface: MessageToL1' +sidebar_label: 'MessageToL1' +custom_edit_url: null +--- + +[types](../namespaces/types.md).MessageToL1 + +## Properties + +### to_address + +• **to_address**: `string` + +#### Defined in + +[src/types/provider/response.ts:68](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L68) + +--- + +### payload + +• **payload**: `string`[] + +#### Defined in + +[src/types/provider/response.ts:69](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L69) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.OutsideCall.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.OutsideCall.md new file mode 100644 index 000000000..193c8aadd --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.OutsideCall.md @@ -0,0 +1,38 @@ +--- +id: 'types.OutsideCall' +title: 'Interface: OutsideCall' +sidebar_label: 'OutsideCall' +custom_edit_url: null +--- + +[types](../namespaces/types.md).OutsideCall + +## Properties + +### to + +• **to**: `string` + +#### Defined in + +[src/types/outsideExecution.ts:13](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L13) + +--- + +### selector + +• **selector**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +#### Defined in + +[src/types/outsideExecution.ts:14](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L14) + +--- + +### calldata + +• **calldata**: [`RawArgs`](../namespaces/types.md#rawargs) + +#### Defined in + +[src/types/outsideExecution.ts:15](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L15) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.OutsideExecution.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.OutsideExecution.md new file mode 100644 index 000000000..5520a5681 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.OutsideExecution.md @@ -0,0 +1,58 @@ +--- +id: 'types.OutsideExecution' +title: 'Interface: OutsideExecution' +sidebar_label: 'OutsideExecution' +custom_edit_url: null +--- + +[types](../namespaces/types.md).OutsideExecution + +## Properties + +### caller + +• **caller**: `string` + +#### Defined in + +[src/types/outsideExecution.ts:19](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L19) + +--- + +### nonce + +• **nonce**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +#### Defined in + +[src/types/outsideExecution.ts:20](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L20) + +--- + +### execute_after + +• **execute_after**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +#### Defined in + +[src/types/outsideExecution.ts:21](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L21) + +--- + +### execute_before + +• **execute_before**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +#### Defined in + +[src/types/outsideExecution.ts:22](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L22) + +--- + +### calls + +• **calls**: [`OutsideCall`](types.OutsideCall.md)[] + +#### Defined in + +[src/types/outsideExecution.ts:23](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L23) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.OutsideExecutionOptions.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.OutsideExecutionOptions.md new file mode 100644 index 000000000..7ba2b0b9d --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.OutsideExecutionOptions.md @@ -0,0 +1,44 @@ +--- +id: 'types.OutsideExecutionOptions' +title: 'Interface: OutsideExecutionOptions' +sidebar_label: 'OutsideExecutionOptions' +custom_edit_url: null +--- + +[types](../namespaces/types.md).OutsideExecutionOptions + +## Properties + +### caller + +• **caller**: `string` + +authorized executer of the transaction(s): Hex address or "ANY_CALLER" or shortString.encodeShortString(constants.OutsideExecutionCallerAny) + +#### Defined in + +[src/types/outsideExecution.ts:5](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L5) + +--- + +### execute_after + +• **execute_after**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +Unix timestamp of the beginning of the timeframe + +#### Defined in + +[src/types/outsideExecution.ts:7](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L7) + +--- + +### execute_before + +• **execute_before**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +Unix timestamp of the end of the timeframe + +#### Defined in + +[src/types/outsideExecution.ts:9](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L9) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.OutsideTransaction.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.OutsideTransaction.md new file mode 100644 index 000000000..6e9895749 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.OutsideTransaction.md @@ -0,0 +1,48 @@ +--- +id: 'types.OutsideTransaction' +title: 'Interface: OutsideTransaction' +sidebar_label: 'OutsideTransaction' +custom_edit_url: null +--- + +[types](../namespaces/types.md).OutsideTransaction + +## Properties + +### outsideExecution + +• **outsideExecution**: [`OutsideExecution`](types.OutsideExecution.md) + +#### Defined in + +[src/types/outsideExecution.ts:27](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L27) + +--- + +### signature + +• **signature**: [`Signature`](../namespaces/types.md#signature) + +#### Defined in + +[src/types/outsideExecution.ts:28](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L28) + +--- + +### signerAddress + +• **signerAddress**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +#### Defined in + +[src/types/outsideExecution.ts:29](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L29) + +--- + +### version + +• **version**: [`OutsideExecutionVersion`](../enums/types.OutsideExecutionVersion.md) + +#### Defined in + +[src/types/outsideExecution.ts:30](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L30) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.Program.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.Program.md new file mode 100644 index 000000000..087345de2 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.Program.md @@ -0,0 +1,34 @@ +--- +id: 'types.Program' +title: 'Interface: Program' +sidebar_label: 'Program' +custom_edit_url: null +--- + +[types](../namespaces/types.md).Program + +## Hierarchy + +- `Record`<`string`, `any`\> + + ↳ **`Program`** + +## Properties + +### builtins + +• **builtins**: `string`[] + +#### Defined in + +[src/types/lib/contract/legacy.ts:37](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/legacy.ts#L37) + +--- + +### data + +• **data**: `string`[] + +#### Defined in + +[src/types/lib/contract/legacy.ts:38](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/legacy.ts#L38) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.ProviderOptions.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.ProviderOptions.md new file mode 100644 index 000000000..a257b9635 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.ProviderOptions.md @@ -0,0 +1,205 @@ +--- +id: 'types.ProviderOptions' +title: 'Interface: ProviderOptions' +sidebar_label: 'ProviderOptions' +custom_edit_url: null +--- + +[types](../namespaces/types.md).ProviderOptions + +## Hierarchy + +- [`RpcProviderOptions`](../namespaces/types.md#rpcprovideroptions) + + ↳ **`ProviderOptions`** + +## Properties + +### nodeUrl + +• `Optional` **nodeUrl**: `string` + +#### Inherited from + +RpcProviderOptions.nodeUrl + +#### Defined in + +[src/types/provider/configuration.ts:7](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/configuration.ts#L7) + +--- + +### retries + +• `Optional` **retries**: `number` + +#### Inherited from + +RpcProviderOptions.retries + +#### Defined in + +[src/types/provider/configuration.ts:8](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/configuration.ts#L8) + +--- + +### transactionRetryIntervalFallback + +• `Optional` **transactionRetryIntervalFallback**: `number` + +#### Inherited from + +RpcProviderOptions.transactionRetryIntervalFallback + +#### Defined in + +[src/types/provider/configuration.ts:9](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/configuration.ts#L9) + +--- + +### headers + +• `Optional` **headers**: `object` + +#### Inherited from + +RpcProviderOptions.headers + +#### Defined in + +[src/types/provider/configuration.ts:10](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/configuration.ts#L10) + +--- + +### blockIdentifier + +• `Optional` **blockIdentifier**: [`BlockIdentifier`](../namespaces/types.md#blockidentifier) + +#### Inherited from + +RpcProviderOptions.blockIdentifier + +#### Defined in + +[src/types/provider/configuration.ts:11](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/configuration.ts#L11) + +--- + +### chainId + +• `Optional` **chainId**: [`StarknetChainId`](../enums/constants.StarknetChainId.md) + +#### Inherited from + +RpcProviderOptions.chainId + +#### Defined in + +[src/types/provider/configuration.ts:12](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/configuration.ts#L12) + +--- + +### specVersion + +• `Optional` **specVersion**: `string` + +#### Inherited from + +RpcProviderOptions.specVersion + +#### Defined in + +[src/types/provider/configuration.ts:13](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/configuration.ts#L13) + +--- + +### default + +• `Optional` **default**: `boolean` + +#### Inherited from + +RpcProviderOptions.default + +#### Defined in + +[src/types/provider/configuration.ts:14](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/configuration.ts#L14) + +--- + +### waitMode + +• `Optional` **waitMode**: `boolean` + +#### Inherited from + +RpcProviderOptions.waitMode + +#### Defined in + +[src/types/provider/configuration.ts:15](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/configuration.ts#L15) + +--- + +### baseFetch + +• `Optional` **baseFetch**: (`input`: `RequestInfo` \| `URL`, `init?`: `RequestInit`) => `Promise`<`Response`\> + +#### Type declaration + +▸ (`input`, `init?`): `Promise`<`Response`\> + +##### Parameters + +| Name | Type | +| :------ | :--------------------- | +| `input` | `RequestInfo` \| `URL` | +| `init?` | `RequestInit` | + +##### Returns + +`Promise`<`Response`\> + +#### Inherited from + +RpcProviderOptions.baseFetch + +#### Defined in + +[src/types/provider/configuration.ts:16](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/configuration.ts#L16) + +--- + +### feeMarginPercentage + +• `Optional` **feeMarginPercentage**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------------- | :------- | +| `l1BoundMaxAmount` | `number` | +| `l1BoundMaxPricePerUnit` | `number` | +| `maxFee` | `number` | + +#### Inherited from + +RpcProviderOptions.feeMarginPercentage + +#### Defined in + +[src/types/provider/configuration.ts:17](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/configuration.ts#L17) + +--- + +### batch + +• `Optional` **batch**: `number` \| `false` + +#### Inherited from + +RpcProviderOptions.batch + +#### Defined in + +[src/types/provider/configuration.ts:22](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/configuration.ts#L22) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.BLOCK_NOT_FOUND.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.BLOCK_NOT_FOUND.md new file mode 100644 index 000000000..c99459769 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.BLOCK_NOT_FOUND.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.BLOCK_NOT_FOUND' +title: 'Interface: BLOCK_NOT_FOUND' +sidebar_label: 'BLOCK_NOT_FOUND' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).BLOCK_NOT_FOUND + +## Properties + +### code + +• **code**: `24` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:30](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L30) + +--- + +### message + +• **message**: `"Block not found"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:31](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L31) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CLASS_ALREADY_DECLARED.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CLASS_ALREADY_DECLARED.md new file mode 100644 index 000000000..5c3e230ee --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CLASS_ALREADY_DECLARED.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.CLASS_ALREADY_DECLARED' +title: 'Interface: CLASS_ALREADY_DECLARED' +sidebar_label: 'CLASS_ALREADY_DECLARED' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).CLASS_ALREADY_DECLARED + +## Properties + +### code + +• **code**: `51` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:92](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L92) + +--- + +### message + +• **message**: `"Class already declared"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:93](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L93) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CLASS_HASH_NOT_FOUND.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CLASS_HASH_NOT_FOUND.md new file mode 100644 index 000000000..038400790 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CLASS_HASH_NOT_FOUND.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.CLASS_HASH_NOT_FOUND' +title: 'Interface: CLASS_HASH_NOT_FOUND' +sidebar_label: 'CLASS_HASH_NOT_FOUND' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).CLASS_HASH_NOT_FOUND + +## Properties + +### code + +• **code**: `28` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:45](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L45) + +--- + +### message + +• **message**: `"Class hash not found"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:46](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L46) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.COMPILATION_FAILED.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.COMPILATION_FAILED.md new file mode 100644 index 000000000..2c5d0e8d6 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.COMPILATION_FAILED.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.COMPILATION_FAILED' +title: 'Interface: COMPILATION_FAILED' +sidebar_label: 'COMPILATION_FAILED' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).COMPILATION_FAILED + +## Properties + +### code + +• **code**: `56` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:118](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L118) + +--- + +### message + +• **message**: `"Compilation failed"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:119](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L119) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.COMPILED_CLASS_HASH_MISMATCH.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.COMPILED_CLASS_HASH_MISMATCH.md new file mode 100644 index 000000000..4b22379d1 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.COMPILED_CLASS_HASH_MISMATCH.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.COMPILED_CLASS_HASH_MISMATCH' +title: 'Interface: COMPILED_CLASS_HASH_MISMATCH' +sidebar_label: 'COMPILED_CLASS_HASH_MISMATCH' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).COMPILED_CLASS_HASH_MISMATCH + +## Properties + +### code + +• **code**: `60` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:138](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L138) + +--- + +### message + +• **message**: `"the compiled class hash did not match the one supplied in the transaction"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:139](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L139) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CONTRACT_CLASS_SIZE_IS_TOO_LARGE.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CONTRACT_CLASS_SIZE_IS_TOO_LARGE.md new file mode 100644 index 000000000..d3d7b2963 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CONTRACT_CLASS_SIZE_IS_TOO_LARGE.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.CONTRACT_CLASS_SIZE_IS_TOO_LARGE' +title: 'Interface: CONTRACT_CLASS_SIZE_IS_TOO_LARGE' +sidebar_label: 'CONTRACT_CLASS_SIZE_IS_TOO_LARGE' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).CONTRACT_CLASS_SIZE_IS_TOO_LARGE + +## Properties + +### code + +• **code**: `57` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:123](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L123) + +--- + +### message + +• **message**: `"Contract class size it too large"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:124](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L124) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CONTRACT_ERROR.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CONTRACT_ERROR.md new file mode 100644 index 000000000..5ba1c0116 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CONTRACT_ERROR.md @@ -0,0 +1,44 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.CONTRACT_ERROR' +title: 'Interface: CONTRACT_ERROR' +sidebar_label: 'CONTRACT_ERROR' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).CONTRACT_ERROR + +## Properties + +### code + +• **code**: `40` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:75](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L75) + +--- + +### message + +• **message**: `"Contract error"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:76](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L76) + +--- + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | +| :------------- | :------- | +| `revert_error` | `string` | + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:77](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L77) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CONTRACT_NOT_FOUND.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CONTRACT_NOT_FOUND.md new file mode 100644 index 000000000..28913aacd --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.CONTRACT_NOT_FOUND.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.CONTRACT_NOT_FOUND' +title: 'Interface: CONTRACT_NOT_FOUND' +sidebar_label: 'CONTRACT_NOT_FOUND' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).CONTRACT_NOT_FOUND + +## Properties + +### code + +• **code**: `20` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:15](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L15) + +--- + +### message + +• **message**: `"Contract not found"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:16](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L16) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.DUPLICATE_TX.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.DUPLICATE_TX.md new file mode 100644 index 000000000..876d798ea --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.DUPLICATE_TX.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.DUPLICATE_TX' +title: 'Interface: DUPLICATE_TX' +sidebar_label: 'DUPLICATE_TX' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).DUPLICATE_TX + +## Properties + +### code + +• **code**: `59` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:133](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L133) + +--- + +### message + +• **message**: `"A transaction with the same hash already exists in the mempool"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:134](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L134) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.FAILED_TO_RECEIVE_TXN.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.FAILED_TO_RECEIVE_TXN.md new file mode 100644 index 000000000..15f8ed086 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.FAILED_TO_RECEIVE_TXN.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.FAILED_TO_RECEIVE_TXN' +title: 'Interface: FAILED_TO_RECEIVE_TXN' +sidebar_label: 'FAILED_TO_RECEIVE_TXN' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).FAILED_TO_RECEIVE_TXN + +## Properties + +### code + +• **code**: `1` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:2](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L2) + +--- + +### message + +• **message**: `"Failed to write transaction"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:3](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L3) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INSUFFICIENT_ACCOUNT_BALANCE.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INSUFFICIENT_ACCOUNT_BALANCE.md new file mode 100644 index 000000000..354eddcb3 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INSUFFICIENT_ACCOUNT_BALANCE.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.INSUFFICIENT_ACCOUNT_BALANCE' +title: 'Interface: INSUFFICIENT_ACCOUNT_BALANCE' +sidebar_label: 'INSUFFICIENT_ACCOUNT_BALANCE' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).INSUFFICIENT_ACCOUNT_BALANCE + +## Properties + +### code + +• **code**: `54` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:107](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L107) + +--- + +### message + +• **message**: `"Account balance is smaller than the transaction's max_fee"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:108](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L108) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INSUFFICIENT_MAX_FEE.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INSUFFICIENT_MAX_FEE.md new file mode 100644 index 000000000..17f0bfbbc --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INSUFFICIENT_MAX_FEE.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.INSUFFICIENT_MAX_FEE' +title: 'Interface: INSUFFICIENT_MAX_FEE' +sidebar_label: 'INSUFFICIENT_MAX_FEE' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).INSUFFICIENT_MAX_FEE + +## Properties + +### code + +• **code**: `53` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:102](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L102) + +--- + +### message + +• **message**: `"Max fee is smaller than the minimal transaction cost (validation plus fee transfer)"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:103](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L103) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_BLOCK_HASH.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_BLOCK_HASH.md new file mode 100644 index 000000000..35b891fa5 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_BLOCK_HASH.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.INVALID_BLOCK_HASH' +title: 'Interface: INVALID_BLOCK_HASH' +sidebar_label: 'INVALID_BLOCK_HASH' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).INVALID_BLOCK_HASH + +## Properties + +### code + +• **code**: `26` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:35](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L35) + +--- + +### message + +• **message**: `"Invalid block hash"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:36](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L36) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_CALL_DATA.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_CALL_DATA.md new file mode 100644 index 000000000..58c54f8aa --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_CALL_DATA.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.INVALID_CALL_DATA' +title: 'Interface: INVALID_CALL_DATA' +sidebar_label: 'INVALID_CALL_DATA' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).INVALID_CALL_DATA + +## Properties + +### code + +• **code**: `22` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:25](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L25) + +--- + +### message + +• **message**: `"Invalid call data"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:26](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L26) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_CONTINUATION_TOKEN.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_CONTINUATION_TOKEN.md new file mode 100644 index 000000000..a0aeb41fc --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_CONTINUATION_TOKEN.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.INVALID_CONTINUATION_TOKEN' +title: 'Interface: INVALID_CONTINUATION_TOKEN' +sidebar_label: 'INVALID_CONTINUATION_TOKEN' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).INVALID_CONTINUATION_TOKEN + +## Properties + +### code + +• **code**: `33` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:65](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L65) + +--- + +### message + +• **message**: `"The supplied continuation token is invalid or unknown"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:66](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L66) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_MESSAGE_SELECTOR.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_MESSAGE_SELECTOR.md new file mode 100644 index 000000000..493d2e6a8 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_MESSAGE_SELECTOR.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.INVALID_MESSAGE_SELECTOR' +title: 'Interface: INVALID_MESSAGE_SELECTOR' +sidebar_label: 'INVALID_MESSAGE_SELECTOR' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).INVALID_MESSAGE_SELECTOR + +## Properties + +### code + +• **code**: `21` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:20](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L20) + +--- + +### message + +• **message**: `"Invalid message selector"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:21](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L21) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_TRANSACTION_NONCE.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_TRANSACTION_NONCE.md new file mode 100644 index 000000000..588537a63 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_TRANSACTION_NONCE.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.INVALID_TRANSACTION_NONCE' +title: 'Interface: INVALID_TRANSACTION_NONCE' +sidebar_label: 'INVALID_TRANSACTION_NONCE' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).INVALID_TRANSACTION_NONCE + +## Properties + +### code + +• **code**: `52` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:97](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L97) + +--- + +### message + +• **message**: `"Invalid transaction nonce"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:98](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L98) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_TXN_INDEX.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_TXN_INDEX.md new file mode 100644 index 000000000..5130f1117 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.INVALID_TXN_INDEX.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.INVALID_TXN_INDEX' +title: 'Interface: INVALID_TXN_INDEX' +sidebar_label: 'INVALID_TXN_INDEX' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).INVALID_TXN_INDEX + +## Properties + +### code + +• **code**: `27` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:40](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L40) + +--- + +### message + +• **message**: `"Invalid transaction index in a block"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:41](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L41) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.NON_ACCOUNT.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.NON_ACCOUNT.md new file mode 100644 index 000000000..727f48b0c --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.NON_ACCOUNT.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.NON_ACCOUNT' +title: 'Interface: NON_ACCOUNT' +sidebar_label: 'NON_ACCOUNT' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).NON_ACCOUNT + +## Properties + +### code + +• **code**: `58` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:128](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L128) + +--- + +### message + +• **message**: `"Sender address in not an account contract"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:129](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L129) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.NO_BLOCKS.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.NO_BLOCKS.md new file mode 100644 index 000000000..e84b0838c --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.NO_BLOCKS.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.NO_BLOCKS' +title: 'Interface: NO_BLOCKS' +sidebar_label: 'NO_BLOCKS' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).NO_BLOCKS + +## Properties + +### code + +• **code**: `32` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:60](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L60) + +--- + +### message + +• **message**: `"There are no blocks"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:61](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L61) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.NO_TRACE_AVAILABLE.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.NO_TRACE_AVAILABLE.md new file mode 100644 index 000000000..39a854121 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.NO_TRACE_AVAILABLE.md @@ -0,0 +1,44 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.NO_TRACE_AVAILABLE' +title: 'Interface: NO_TRACE_AVAILABLE' +sidebar_label: 'NO_TRACE_AVAILABLE' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).NO_TRACE_AVAILABLE + +## Properties + +### code + +• **code**: `10` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:7](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L7) + +--- + +### message + +• **message**: `"No trace available for transaction"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:8](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L8) + +--- + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | +| :------- | :--------------------------- | +| `status` | `"RECEIVED"` \| `"REJECTED"` | + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:9](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L9) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.PAGE_SIZE_TOO_BIG.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.PAGE_SIZE_TOO_BIG.md new file mode 100644 index 000000000..832a49f2f --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.PAGE_SIZE_TOO_BIG.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.PAGE_SIZE_TOO_BIG' +title: 'Interface: PAGE_SIZE_TOO_BIG' +sidebar_label: 'PAGE_SIZE_TOO_BIG' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).PAGE_SIZE_TOO_BIG + +## Properties + +### code + +• **code**: `31` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:55](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L55) + +--- + +### message + +• **message**: `"Requested page size is too big"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:56](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L56) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.TOO_MANY_KEYS_IN_FILTER.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.TOO_MANY_KEYS_IN_FILTER.md new file mode 100644 index 000000000..b265a1a84 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.TOO_MANY_KEYS_IN_FILTER.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.TOO_MANY_KEYS_IN_FILTER' +title: 'Interface: TOO_MANY_KEYS_IN_FILTER' +sidebar_label: 'TOO_MANY_KEYS_IN_FILTER' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).TOO_MANY_KEYS_IN_FILTER + +## Properties + +### code + +• **code**: `34` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:70](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L70) + +--- + +### message + +• **message**: `"Too many keys provided in a filter"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:71](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L71) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.TRANSACTION_EXECUTION_ERROR.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.TRANSACTION_EXECUTION_ERROR.md new file mode 100644 index 000000000..112f8b0e9 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.TRANSACTION_EXECUTION_ERROR.md @@ -0,0 +1,45 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.TRANSACTION_EXECUTION_ERROR' +title: 'Interface: TRANSACTION_EXECUTION_ERROR' +sidebar_label: 'TRANSACTION_EXECUTION_ERROR' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).TRANSACTION_EXECUTION_ERROR + +## Properties + +### code + +• **code**: `41` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:83](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L83) + +--- + +### message + +• **message**: `"Transaction execution error"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:84](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L84) + +--- + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------ | :------- | +| `transaction_index` | `number` | +| `execution_error` | `string` | + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:85](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L85) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.TXN_HASH_NOT_FOUND.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.TXN_HASH_NOT_FOUND.md new file mode 100644 index 000000000..f192c1e0b --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.TXN_HASH_NOT_FOUND.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.TXN_HASH_NOT_FOUND' +title: 'Interface: TXN_HASH_NOT_FOUND' +sidebar_label: 'TXN_HASH_NOT_FOUND' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).TXN_HASH_NOT_FOUND + +## Properties + +### code + +• **code**: `29` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:50](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L50) + +--- + +### message + +• **message**: `"Transaction hash not found"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:51](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L51) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.UNEXPECTED_ERROR.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.UNEXPECTED_ERROR.md new file mode 100644 index 000000000..f1d4509d3 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.UNEXPECTED_ERROR.md @@ -0,0 +1,38 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.UNEXPECTED_ERROR' +title: 'Interface: UNEXPECTED_ERROR' +sidebar_label: 'UNEXPECTED_ERROR' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).UNEXPECTED_ERROR + +## Properties + +### code + +• **code**: `63` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:153](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L153) + +--- + +### message + +• **message**: `"An unexpected error occurred"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:154](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L154) + +--- + +### data + +• **data**: `string` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:155](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L155) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.UNSUPPORTED_CONTRACT_CLASS_VERSION.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.UNSUPPORTED_CONTRACT_CLASS_VERSION.md new file mode 100644 index 000000000..8d78d538c --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.UNSUPPORTED_CONTRACT_CLASS_VERSION.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.UNSUPPORTED_CONTRACT_CLASS_VERSION' +title: 'Interface: UNSUPPORTED_CONTRACT_CLASS_VERSION' +sidebar_label: 'UNSUPPORTED_CONTRACT_CLASS_VERSION' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).UNSUPPORTED_CONTRACT_CLASS_VERSION + +## Properties + +### code + +• **code**: `62` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:148](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L148) + +--- + +### message + +• **message**: `"the contract class version is not supported"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:149](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L149) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.UNSUPPORTED_TX_VERSION.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.UNSUPPORTED_TX_VERSION.md new file mode 100644 index 000000000..f70a30597 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.UNSUPPORTED_TX_VERSION.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.UNSUPPORTED_TX_VERSION' +title: 'Interface: UNSUPPORTED_TX_VERSION' +sidebar_label: 'UNSUPPORTED_TX_VERSION' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).UNSUPPORTED_TX_VERSION + +## Properties + +### code + +• **code**: `61` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:143](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L143) + +--- + +### message + +• **message**: `"the transaction version is not supported"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:144](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L144) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.VALIDATION_FAILURE.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.VALIDATION_FAILURE.md new file mode 100644 index 000000000..4cd00b47d --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC06.Errors.VALIDATION_FAILURE.md @@ -0,0 +1,38 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors.VALIDATION_FAILURE' +title: 'Interface: VALIDATION_FAILURE' +sidebar_label: 'VALIDATION_FAILURE' +custom_edit_url: null +--- + +[RPCSPEC06](../namespaces/types.RPC.RPCSPEC06.md).[Errors](../namespaces/types.RPC.RPCSPEC06.Errors.md).VALIDATION_FAILURE + +## Properties + +### code + +• **code**: `55` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:112](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L112) + +--- + +### message + +• **message**: `"Account validation failed"` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:113](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L113) + +--- + +### data + +• **data**: `string` + +#### Defined in + +[src/types/api/rpcspec_0_6/errors.ts:114](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/errors.ts#L114) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.BLOCK_NOT_FOUND.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.BLOCK_NOT_FOUND.md new file mode 100644 index 000000000..ada99fb54 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.BLOCK_NOT_FOUND.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.BLOCK_NOT_FOUND' +title: 'Interface: BLOCK_NOT_FOUND' +sidebar_label: 'BLOCK_NOT_FOUND' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).BLOCK_NOT_FOUND + +## Properties + +### code + +• **code**: `24` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:25 + +--- + +### message + +• **message**: `"Block not found"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:26 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CLASS_ALREADY_DECLARED.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CLASS_ALREADY_DECLARED.md new file mode 100644 index 000000000..f078fea58 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CLASS_ALREADY_DECLARED.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.CLASS_ALREADY_DECLARED' +title: 'Interface: CLASS_ALREADY_DECLARED' +sidebar_label: 'CLASS_ALREADY_DECLARED' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).CLASS_ALREADY_DECLARED + +## Properties + +### code + +• **code**: `51` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:76 + +--- + +### message + +• **message**: `"Class already declared"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:77 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CLASS_HASH_NOT_FOUND.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CLASS_HASH_NOT_FOUND.md new file mode 100644 index 000000000..6b38a7c29 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CLASS_HASH_NOT_FOUND.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.CLASS_HASH_NOT_FOUND' +title: 'Interface: CLASS_HASH_NOT_FOUND' +sidebar_label: 'CLASS_HASH_NOT_FOUND' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).CLASS_HASH_NOT_FOUND + +## Properties + +### code + +• **code**: `28` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:37 + +--- + +### message + +• **message**: `"Class hash not found"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:38 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.COMPILATION_FAILED.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.COMPILATION_FAILED.md new file mode 100644 index 000000000..5db49b204 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.COMPILATION_FAILED.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.COMPILATION_FAILED' +title: 'Interface: COMPILATION_FAILED' +sidebar_label: 'COMPILATION_FAILED' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).COMPILATION_FAILED + +## Properties + +### code + +• **code**: `56` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:97 + +--- + +### message + +• **message**: `"Compilation failed"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:98 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.COMPILED_CLASS_HASH_MISMATCH.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.COMPILED_CLASS_HASH_MISMATCH.md new file mode 100644 index 000000000..03bfc70c8 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.COMPILED_CLASS_HASH_MISMATCH.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.COMPILED_CLASS_HASH_MISMATCH' +title: 'Interface: COMPILED_CLASS_HASH_MISMATCH' +sidebar_label: 'COMPILED_CLASS_HASH_MISMATCH' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).COMPILED_CLASS_HASH_MISMATCH + +## Properties + +### code + +• **code**: `60` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:113 + +--- + +### message + +• **message**: `"the compiled class hash did not match the one supplied in the transaction"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:114 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CONTRACT_CLASS_SIZE_IS_TOO_LARGE.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CONTRACT_CLASS_SIZE_IS_TOO_LARGE.md new file mode 100644 index 000000000..1d4b57f1e --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CONTRACT_CLASS_SIZE_IS_TOO_LARGE.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.CONTRACT_CLASS_SIZE_IS_TOO_LARGE' +title: 'Interface: CONTRACT_CLASS_SIZE_IS_TOO_LARGE' +sidebar_label: 'CONTRACT_CLASS_SIZE_IS_TOO_LARGE' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).CONTRACT_CLASS_SIZE_IS_TOO_LARGE + +## Properties + +### code + +• **code**: `57` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:101 + +--- + +### message + +• **message**: `"Contract class size it too large"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:102 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CONTRACT_ERROR.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CONTRACT_ERROR.md new file mode 100644 index 000000000..80525864f --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CONTRACT_ERROR.md @@ -0,0 +1,44 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.CONTRACT_ERROR' +title: 'Interface: CONTRACT_ERROR' +sidebar_label: 'CONTRACT_ERROR' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).CONTRACT_ERROR + +## Properties + +### code + +• **code**: `40` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:61 + +--- + +### message + +• **message**: `"Contract error"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:62 + +--- + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | +| :------------- | :------- | +| `revert_error` | `string` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:63 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CONTRACT_NOT_FOUND.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CONTRACT_NOT_FOUND.md new file mode 100644 index 000000000..1367993ca --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.CONTRACT_NOT_FOUND.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.CONTRACT_NOT_FOUND' +title: 'Interface: CONTRACT_NOT_FOUND' +sidebar_label: 'CONTRACT_NOT_FOUND' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).CONTRACT_NOT_FOUND + +## Properties + +### code + +• **code**: `20` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:13 + +--- + +### message + +• **message**: `"Contract not found"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:14 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.DUPLICATE_TX.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.DUPLICATE_TX.md new file mode 100644 index 000000000..20e241219 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.DUPLICATE_TX.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.DUPLICATE_TX' +title: 'Interface: DUPLICATE_TX' +sidebar_label: 'DUPLICATE_TX' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).DUPLICATE_TX + +## Properties + +### code + +• **code**: `59` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:109 + +--- + +### message + +• **message**: `"A transaction with the same hash already exists in the mempool"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:110 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.FAILED_TO_RECEIVE_TXN.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.FAILED_TO_RECEIVE_TXN.md new file mode 100644 index 000000000..7ca304d75 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.FAILED_TO_RECEIVE_TXN.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.FAILED_TO_RECEIVE_TXN' +title: 'Interface: FAILED_TO_RECEIVE_TXN' +sidebar_label: 'FAILED_TO_RECEIVE_TXN' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).FAILED_TO_RECEIVE_TXN + +## Properties + +### code + +• **code**: `1` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:2 + +--- + +### message + +• **message**: `"Failed to write transaction"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:3 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INSUFFICIENT_ACCOUNT_BALANCE.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INSUFFICIENT_ACCOUNT_BALANCE.md new file mode 100644 index 000000000..32217ff6c --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INSUFFICIENT_ACCOUNT_BALANCE.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.INSUFFICIENT_ACCOUNT_BALANCE' +title: 'Interface: INSUFFICIENT_ACCOUNT_BALANCE' +sidebar_label: 'INSUFFICIENT_ACCOUNT_BALANCE' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).INSUFFICIENT_ACCOUNT_BALANCE + +## Properties + +### code + +• **code**: `54` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:88 + +--- + +### message + +• **message**: `"Account balance is smaller than the transaction's max_fee"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:89 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INSUFFICIENT_MAX_FEE.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INSUFFICIENT_MAX_FEE.md new file mode 100644 index 000000000..e99cacb3f --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INSUFFICIENT_MAX_FEE.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.INSUFFICIENT_MAX_FEE' +title: 'Interface: INSUFFICIENT_MAX_FEE' +sidebar_label: 'INSUFFICIENT_MAX_FEE' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).INSUFFICIENT_MAX_FEE + +## Properties + +### code + +• **code**: `53` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:84 + +--- + +### message + +• **message**: `"Max fee is smaller than the minimal transaction cost (validation plus fee transfer)"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:85 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_BLOCK_HASH.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_BLOCK_HASH.md new file mode 100644 index 000000000..9d595a85b --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_BLOCK_HASH.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.INVALID_BLOCK_HASH' +title: 'Interface: INVALID_BLOCK_HASH' +sidebar_label: 'INVALID_BLOCK_HASH' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).INVALID_BLOCK_HASH + +## Properties + +### code + +• **code**: `26` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:29 + +--- + +### message + +• **message**: `"Invalid block hash"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:30 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_CALL_DATA.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_CALL_DATA.md new file mode 100644 index 000000000..634b873fe --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_CALL_DATA.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.INVALID_CALL_DATA' +title: 'Interface: INVALID_CALL_DATA' +sidebar_label: 'INVALID_CALL_DATA' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).INVALID_CALL_DATA + +## Properties + +### code + +• **code**: `22` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:21 + +--- + +### message + +• **message**: `"Invalid call data"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:22 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_CONTINUATION_TOKEN.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_CONTINUATION_TOKEN.md new file mode 100644 index 000000000..4435e3361 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_CONTINUATION_TOKEN.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.INVALID_CONTINUATION_TOKEN' +title: 'Interface: INVALID_CONTINUATION_TOKEN' +sidebar_label: 'INVALID_CONTINUATION_TOKEN' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).INVALID_CONTINUATION_TOKEN + +## Properties + +### code + +• **code**: `33` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:53 + +--- + +### message + +• **message**: `"The supplied continuation token is invalid or unknown"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:54 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_MESSAGE_SELECTOR.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_MESSAGE_SELECTOR.md new file mode 100644 index 000000000..e9559da65 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_MESSAGE_SELECTOR.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.INVALID_MESSAGE_SELECTOR' +title: 'Interface: INVALID_MESSAGE_SELECTOR' +sidebar_label: 'INVALID_MESSAGE_SELECTOR' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).INVALID_MESSAGE_SELECTOR + +## Properties + +### code + +• **code**: `21` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:17 + +--- + +### message + +• **message**: `"Invalid message selector"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:18 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_TRANSACTION_NONCE.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_TRANSACTION_NONCE.md new file mode 100644 index 000000000..bc7df67db --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_TRANSACTION_NONCE.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.INVALID_TRANSACTION_NONCE' +title: 'Interface: INVALID_TRANSACTION_NONCE' +sidebar_label: 'INVALID_TRANSACTION_NONCE' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).INVALID_TRANSACTION_NONCE + +## Properties + +### code + +• **code**: `52` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:80 + +--- + +### message + +• **message**: `"Invalid transaction nonce"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:81 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_TXN_INDEX.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_TXN_INDEX.md new file mode 100644 index 000000000..887f5c21f --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_TXN_INDEX.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.INVALID_TXN_INDEX' +title: 'Interface: INVALID_TXN_INDEX' +sidebar_label: 'INVALID_TXN_INDEX' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).INVALID_TXN_INDEX + +## Properties + +### code + +• **code**: `27` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:33 + +--- + +### message + +• **message**: `"Invalid transaction index in a block"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:34 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.NON_ACCOUNT.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.NON_ACCOUNT.md new file mode 100644 index 000000000..1a2077700 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.NON_ACCOUNT.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.NON_ACCOUNT' +title: 'Interface: NON_ACCOUNT' +sidebar_label: 'NON_ACCOUNT' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).NON_ACCOUNT + +## Properties + +### code + +• **code**: `58` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:105 + +--- + +### message + +• **message**: `"Sender address in not an account contract"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:106 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.NO_BLOCKS.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.NO_BLOCKS.md new file mode 100644 index 000000000..570f022cb --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.NO_BLOCKS.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.NO_BLOCKS' +title: 'Interface: NO_BLOCKS' +sidebar_label: 'NO_BLOCKS' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).NO_BLOCKS + +## Properties + +### code + +• **code**: `32` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:49 + +--- + +### message + +• **message**: `"There are no blocks"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:50 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.NO_TRACE_AVAILABLE.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.NO_TRACE_AVAILABLE.md new file mode 100644 index 000000000..205422b65 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.NO_TRACE_AVAILABLE.md @@ -0,0 +1,44 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.NO_TRACE_AVAILABLE' +title: 'Interface: NO_TRACE_AVAILABLE' +sidebar_label: 'NO_TRACE_AVAILABLE' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).NO_TRACE_AVAILABLE + +## Properties + +### code + +• **code**: `10` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:6 + +--- + +### message + +• **message**: `"No trace available for transaction"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:7 + +--- + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | +| :------- | :--------------------------- | +| `status` | `"RECEIVED"` \| `"REJECTED"` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:8 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.PAGE_SIZE_TOO_BIG.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.PAGE_SIZE_TOO_BIG.md new file mode 100644 index 000000000..a3366b580 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.PAGE_SIZE_TOO_BIG.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.PAGE_SIZE_TOO_BIG' +title: 'Interface: PAGE_SIZE_TOO_BIG' +sidebar_label: 'PAGE_SIZE_TOO_BIG' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).PAGE_SIZE_TOO_BIG + +## Properties + +### code + +• **code**: `31` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:45 + +--- + +### message + +• **message**: `"Requested page size is too big"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:46 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.TOO_MANY_KEYS_IN_FILTER.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.TOO_MANY_KEYS_IN_FILTER.md new file mode 100644 index 000000000..0439f16f4 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.TOO_MANY_KEYS_IN_FILTER.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.TOO_MANY_KEYS_IN_FILTER' +title: 'Interface: TOO_MANY_KEYS_IN_FILTER' +sidebar_label: 'TOO_MANY_KEYS_IN_FILTER' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).TOO_MANY_KEYS_IN_FILTER + +## Properties + +### code + +• **code**: `34` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:57 + +--- + +### message + +• **message**: `"Too many keys provided in a filter"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:58 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.TRANSACTION_EXECUTION_ERROR.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.TRANSACTION_EXECUTION_ERROR.md new file mode 100644 index 000000000..bd39690bc --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.TRANSACTION_EXECUTION_ERROR.md @@ -0,0 +1,45 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.TRANSACTION_EXECUTION_ERROR' +title: 'Interface: TRANSACTION_EXECUTION_ERROR' +sidebar_label: 'TRANSACTION_EXECUTION_ERROR' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).TRANSACTION_EXECUTION_ERROR + +## Properties + +### code + +• **code**: `41` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:68 + +--- + +### message + +• **message**: `"Transaction execution error"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:69 + +--- + +### data + +• **data**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------ | :------- | +| `transaction_index` | `number` | +| `execution_error` | `string` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:70 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.TXN_HASH_NOT_FOUND.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.TXN_HASH_NOT_FOUND.md new file mode 100644 index 000000000..971f62108 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.TXN_HASH_NOT_FOUND.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.TXN_HASH_NOT_FOUND' +title: 'Interface: TXN_HASH_NOT_FOUND' +sidebar_label: 'TXN_HASH_NOT_FOUND' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).TXN_HASH_NOT_FOUND + +## Properties + +### code + +• **code**: `29` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:41 + +--- + +### message + +• **message**: `"Transaction hash not found"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:42 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.UNEXPECTED_ERROR.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.UNEXPECTED_ERROR.md new file mode 100644 index 000000000..ee4c8079d --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.UNEXPECTED_ERROR.md @@ -0,0 +1,38 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.UNEXPECTED_ERROR' +title: 'Interface: UNEXPECTED_ERROR' +sidebar_label: 'UNEXPECTED_ERROR' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).UNEXPECTED_ERROR + +## Properties + +### code + +• **code**: `63` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:125 + +--- + +### message + +• **message**: `"An unexpected error occurred"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:126 + +--- + +### data + +• **data**: `string` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:127 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.UNSUPPORTED_CONTRACT_CLASS_VERSION.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.UNSUPPORTED_CONTRACT_CLASS_VERSION.md new file mode 100644 index 000000000..e122363a9 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.UNSUPPORTED_CONTRACT_CLASS_VERSION.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.UNSUPPORTED_CONTRACT_CLASS_VERSION' +title: 'Interface: UNSUPPORTED_CONTRACT_CLASS_VERSION' +sidebar_label: 'UNSUPPORTED_CONTRACT_CLASS_VERSION' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).UNSUPPORTED_CONTRACT_CLASS_VERSION + +## Properties + +### code + +• **code**: `62` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:121 + +--- + +### message + +• **message**: `"the contract class version is not supported"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:122 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.UNSUPPORTED_TX_VERSION.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.UNSUPPORTED_TX_VERSION.md new file mode 100644 index 000000000..3800e2d59 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.UNSUPPORTED_TX_VERSION.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.UNSUPPORTED_TX_VERSION' +title: 'Interface: UNSUPPORTED_TX_VERSION' +sidebar_label: 'UNSUPPORTED_TX_VERSION' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).UNSUPPORTED_TX_VERSION + +## Properties + +### code + +• **code**: `61` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:117 + +--- + +### message + +• **message**: `"the transaction version is not supported"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:118 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.VALIDATION_FAILURE.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.VALIDATION_FAILURE.md new file mode 100644 index 000000000..dd0189ef8 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.API.Errors.VALIDATION_FAILURE.md @@ -0,0 +1,38 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors.VALIDATION_FAILURE' +title: 'Interface: VALIDATION_FAILURE' +sidebar_label: 'VALIDATION_FAILURE' +custom_edit_url: null +--- + +[API](../namespaces/types.RPC.RPCSPEC07.API.md).[Errors](../namespaces/types.RPC.RPCSPEC07.API.Errors.md).VALIDATION_FAILURE + +## Properties + +### code + +• **code**: `55` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:92 + +--- + +### message + +• **message**: `"Account validation failed"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:93 + +--- + +### data + +• **data**: `string` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/errors.d.ts:94 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.ACCOUNT_ALREADY_DEPLOYED.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.ACCOUNT_ALREADY_DEPLOYED.md new file mode 100644 index 000000000..ef75d6bab --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.ACCOUNT_ALREADY_DEPLOYED.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.ACCOUNT_ALREADY_DEPLOYED' +title: 'Interface: ACCOUNT_ALREADY_DEPLOYED' +sidebar_label: 'ACCOUNT_ALREADY_DEPLOYED' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).ACCOUNT_ALREADY_DEPLOYED + +## Properties + +### code + +• **code**: `115` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/errors.d.ts:18 + +--- + +### message + +• **message**: `"An error occurred (ACCOUNT_ALREADY_DEPLOYED)"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/errors.d.ts:19 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.API_VERSION_NOT_SUPPORTED.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.API_VERSION_NOT_SUPPORTED.md new file mode 100644 index 000000000..42c59b2be --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.API_VERSION_NOT_SUPPORTED.md @@ -0,0 +1,38 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.API_VERSION_NOT_SUPPORTED' +title: 'Interface: API_VERSION_NOT_SUPPORTED' +sidebar_label: 'API_VERSION_NOT_SUPPORTED' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).API_VERSION_NOT_SUPPORTED + +## Properties + +### code + +• **code**: `162` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/errors.d.ts:22 + +--- + +### message + +• **message**: `"An error occurred (API_VERSION_NOT_SUPPORTED)"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/errors.d.ts:23 + +--- + +### data + +• **data**: `"string"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/errors.d.ts:24 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AccountDeploymentData.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AccountDeploymentData.md new file mode 100644 index 000000000..81b05a19b --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AccountDeploymentData.md @@ -0,0 +1,70 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.AccountDeploymentData' +title: 'Interface: AccountDeploymentData' +sidebar_label: 'AccountDeploymentData' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).AccountDeploymentData + +SPEC: ACCOUNT_DEPLOYMENT_DATA + +## Properties + +### address + +• **address**: `string` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:119 + +--- + +### class_hash + +• **class_hash**: `string` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:120 + +--- + +### salt + +• **salt**: `string` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:121 + +--- + +### calldata + +• **calldata**: `string`[] + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:122 + +--- + +### sigdata + +• `Optional` **sigdata**: `string`[] + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:123 + +--- + +### version + +• **version**: `0` \| `1` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:124 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionParameters.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionParameters.md new file mode 100644 index 000000000..b48985573 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionParameters.md @@ -0,0 +1,40 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionParameters' +title: 'Interface: AddDeclareTransactionParameters' +sidebar_label: 'AddDeclareTransactionParameters' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).AddDeclareTransactionParameters + +SPEC: DECLARE_TXN + +## Properties + +### compiled_class_hash + +• **compiled_class_hash**: `string` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:75 + +--- + +### class_hash + +• `Optional` **class_hash**: `string` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:76 + +--- + +### contract_class + +• **contract_class**: [`CONTRACT_CLASS`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#contract_class) + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:77 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionResult.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionResult.md new file mode 100644 index 000000000..9e9a7a43e --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionResult.md @@ -0,0 +1,32 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionResult' +title: 'Interface: AddDeclareTransactionResult' +sidebar_label: 'AddDeclareTransactionResult' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).AddDeclareTransactionResult + +## Properties + +### transaction_hash + +• **transaction_hash**: `string` + +The hash of the declare transaction + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:83 + +--- + +### class_hash + +• **class_hash**: `string` + +The hash of the declared class + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:87 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionParameters.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionParameters.md new file mode 100644 index 000000000..8d5ae63bc --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionParameters.md @@ -0,0 +1,26 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionParameters' +title: 'Interface: AddInvokeTransactionParameters' +sidebar_label: 'AddInvokeTransactionParameters' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).AddInvokeTransactionParameters + +INVOKE_TXN_V1 + +**`See`** + +https://github.com/starkware-libs/starknet-specs/blob/master/api/starknet_api_openrpc.json + +## Properties + +### calls + +• **calls**: [`Call`](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md#call)[] + +Calls to invoke by the account + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:63 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionResult.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionResult.md new file mode 100644 index 000000000..c4f9fd937 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionResult.md @@ -0,0 +1,20 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionResult' +title: 'Interface: AddInvokeTransactionResult' +sidebar_label: 'AddInvokeTransactionResult' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).AddInvokeTransactionResult + +## Properties + +### transaction_hash + +• **transaction_hash**: `string` + +The hash of the invoke transaction + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:69 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddStarknetChainParameters.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddStarknetChainParameters.md new file mode 100644 index 000000000..4ca386b81 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.AddStarknetChainParameters.md @@ -0,0 +1,118 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.AddStarknetChainParameters' +title: 'Interface: AddStarknetChainParameters' +sidebar_label: 'AddStarknetChainParameters' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).AddStarknetChainParameters + +EIP-3085: + +**`See`** + +https://github.com/ethereum/EIPs/blob/master/EIPS/eip-3085.md + +## Hierarchy + +- [`StarknetChain`](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md#starknetchain) + + ↳ **`AddStarknetChainParameters`** + +## Properties + +### id + +• **id**: `string` + +#### Inherited from + +StarknetChain.id + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:42 + +--- + +### chain_id + +• **chain_id**: `string` + +#### Inherited from + +StarknetChain.chain_id + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:43 + +--- + +### chain_name + +• **chain_name**: `string` + +#### Inherited from + +StarknetChain.chain_name + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:44 + +--- + +### rpc_urls + +• `Optional` **rpc_urls**: `string`[] + +#### Inherited from + +StarknetChain.rpc_urls + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:45 + +--- + +### block_explorer_url + +• `Optional` **block_explorer_url**: `string`[] + +#### Inherited from + +StarknetChain.block_explorer_url + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:46 + +--- + +### native_currency + +• `Optional` **native_currency**: [`Asset`](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md#asset) + +#### Inherited from + +StarknetChain.native_currency + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:47 + +--- + +### icon_urls + +• `Optional` **icon_urls**: `string`[] + +#### Inherited from + +StarknetChain.icon_urls + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:48 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.ApiVersionRequest.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.ApiVersionRequest.md new file mode 100644 index 000000000..e7f154601 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.ApiVersionRequest.md @@ -0,0 +1,20 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.ApiVersionRequest' +title: 'Interface: ApiVersionRequest' +sidebar_label: 'ApiVersionRequest' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).ApiVersionRequest + +The version of wallet API the request expecting. If not specified, the latest is assumed + +## Properties + +### api_version + +• `Optional` **api_version**: `string` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:131 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.INVALID_REQUEST_PAYLOAD.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.INVALID_REQUEST_PAYLOAD.md new file mode 100644 index 000000000..885c637f9 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.INVALID_REQUEST_PAYLOAD.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.INVALID_REQUEST_PAYLOAD' +title: 'Interface: INVALID_REQUEST_PAYLOAD' +sidebar_label: 'INVALID_REQUEST_PAYLOAD' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).INVALID_REQUEST_PAYLOAD + +## Properties + +### code + +• **code**: `114` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/errors.d.ts:14 + +--- + +### message + +• **message**: `"An error occurred (INVALID_REQUEST_PAYLOAD)"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/errors.d.ts:15 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.NOT_ERC20.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.NOT_ERC20.md new file mode 100644 index 000000000..3ab504374 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.NOT_ERC20.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.NOT_ERC20' +title: 'Interface: NOT_ERC20' +sidebar_label: 'NOT_ERC20' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).NOT_ERC20 + +## Properties + +### code + +• **code**: `111` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/errors.d.ts:2 + +--- + +### message + +• **message**: `"An error occurred (NOT_ERC20)"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/errors.d.ts:3 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.RequestAccountsParameters.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.RequestAccountsParameters.md new file mode 100644 index 000000000..d9021d7fd --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.RequestAccountsParameters.md @@ -0,0 +1,27 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.RequestAccountsParameters' +title: 'Interface: RequestAccountsParameters' +sidebar_label: 'RequestAccountsParameters' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).RequestAccountsParameters + +EIP-1102: + +**`See`** + +https://eips.ethereum.org/EIPS/eip-1102 + +## Properties + +### silent_mode + +• `Optional` **silent_mode**: `boolean` + +If true, the wallet will not show the wallet-unlock UI in case of a locked wallet, +nor the dApp-approve UI in case of a non-allowed dApp. + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:98 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.RpcTypeToMessageMap.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.RpcTypeToMessageMap.md new file mode 100644 index 000000000..dec9ec494 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.RpcTypeToMessageMap.md @@ -0,0 +1,277 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.RpcTypeToMessageMap' +title: 'Interface: RpcTypeToMessageMap' +sidebar_label: 'RpcTypeToMessageMap' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).RpcTypeToMessageMap + +Maps each RPC message type to its corresponding parameters and result type. + +## Properties + +### wallet_getPermissions + +• **wallet_getPermissions**: `Object` + +Get permissions from the wallet. + +#### Type declaration + +| Name | Type | +| :-------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `params?` | [`ApiVersionRequest`](types.RPC.RPCSPEC07.WALLET_API.ApiVersionRequest.md) | +| `result` | [] \| `"accounts"`[] | +| `errors` | [`API_VERSION_NOT_SUPPORTED`](types.RPC.RPCSPEC07.WALLET_API.API_VERSION_NOT_SUPPORTED.md) \| [`UNKNOWN_ERROR`](types.RPC.RPCSPEC07.WALLET_API.UNKNOWN_ERROR.md) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/methods.d.ts:14 + +--- + +### wallet_requestAccounts + +• **wallet_requestAccounts**: `Object` + +Request active accounts from the wallet. + +**`Param`** + +Optional parameters for requesting accounts. + +#### Type declaration + +| Name | Type | +| :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `params?` | [`RequestAccountsParameters`](types.RPC.RPCSPEC07.WALLET_API.RequestAccountsParameters.md) & [`ApiVersionRequest`](types.RPC.RPCSPEC07.WALLET_API.ApiVersionRequest.md) | +| `result` | `string`[] | +| `errors` | [`API_VERSION_NOT_SUPPORTED`](types.RPC.RPCSPEC07.WALLET_API.API_VERSION_NOT_SUPPORTED.md) \| [`UNKNOWN_ERROR`](types.RPC.RPCSPEC07.WALLET_API.UNKNOWN_ERROR.md) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/methods.d.ts:24 + +--- + +### wallet_watchAsset + +• **wallet_watchAsset**: `Object` + +Watch an asset in the wallet. + +**`Param`** + +The parameters required to watch an asset. + +#### Type declaration + +| Name | Type | +| :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `params` | [`WatchAssetParameters`](types.RPC.RPCSPEC07.WALLET_API.WatchAssetParameters.md) & [`ApiVersionRequest`](types.RPC.RPCSPEC07.WALLET_API.ApiVersionRequest.md) | +| `result` | `boolean` | +| `errors` | [`NOT_ERC20`](types.RPC.RPCSPEC07.WALLET_API.NOT_ERC20.md) \| [`USER_REFUSED_OP`](types.RPC.RPCSPEC07.WALLET_API.USER_REFUSED_OP.md) \| [`INVALID_REQUEST_PAYLOAD`](types.RPC.RPCSPEC07.WALLET_API.INVALID_REQUEST_PAYLOAD.md) \| [`API_VERSION_NOT_SUPPORTED`](types.RPC.RPCSPEC07.WALLET_API.API_VERSION_NOT_SUPPORTED.md) \| [`UNKNOWN_ERROR`](types.RPC.RPCSPEC07.WALLET_API.UNKNOWN_ERROR.md) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/methods.d.ts:34 + +--- + +### wallet_addStarknetChain + +• **wallet_addStarknetChain**: `Object` + +Add a new Starknet chain to the wallet. + +**`Param`** + +The parameters required to add a new chain. + +#### Type declaration + +| Name | Type | +| :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `params` | [`AddStarknetChainParameters`](types.RPC.RPCSPEC07.WALLET_API.AddStarknetChainParameters.md) & [`ApiVersionRequest`](types.RPC.RPCSPEC07.WALLET_API.ApiVersionRequest.md) | +| `result` | `boolean` | +| `errors` | [`USER_REFUSED_OP`](types.RPC.RPCSPEC07.WALLET_API.USER_REFUSED_OP.md) \| [`INVALID_REQUEST_PAYLOAD`](types.RPC.RPCSPEC07.WALLET_API.INVALID_REQUEST_PAYLOAD.md) \| [`API_VERSION_NOT_SUPPORTED`](types.RPC.RPCSPEC07.WALLET_API.API_VERSION_NOT_SUPPORTED.md) \| [`UNKNOWN_ERROR`](types.RPC.RPCSPEC07.WALLET_API.UNKNOWN_ERROR.md) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/methods.d.ts:44 + +--- + +### wallet_switchStarknetChain + +• **wallet_switchStarknetChain**: `Object` + +Switch the current Starknet chain in the wallet. + +**`Param`** + +The parameters required to switch chains. + +#### Type declaration + +| Name | Type | +| :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `params` | [`SwitchStarknetChainParameters`](types.RPC.RPCSPEC07.WALLET_API.SwitchStarknetChainParameters.md) & [`ApiVersionRequest`](types.RPC.RPCSPEC07.WALLET_API.ApiVersionRequest.md) | +| `result` | `boolean` | +| `errors` | [`UNLISTED_NETWORK`](types.RPC.RPCSPEC07.WALLET_API.UNLISTED_NETWORK.md) \| [`USER_REFUSED_OP`](types.RPC.RPCSPEC07.WALLET_API.USER_REFUSED_OP.md) \| [`API_VERSION_NOT_SUPPORTED`](types.RPC.RPCSPEC07.WALLET_API.API_VERSION_NOT_SUPPORTED.md) \| [`UNKNOWN_ERROR`](types.RPC.RPCSPEC07.WALLET_API.UNKNOWN_ERROR.md) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/methods.d.ts:54 + +--- + +### wallet_requestChainId + +• **wallet_requestChainId**: `Object` + +Request the current chain ID from the wallet. + +#### Type declaration + +| Name | Type | +| :-------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `params?` | [`ApiVersionRequest`](types.RPC.RPCSPEC07.WALLET_API.ApiVersionRequest.md) | +| `result` | `string` | +| `errors` | [`API_VERSION_NOT_SUPPORTED`](types.RPC.RPCSPEC07.WALLET_API.API_VERSION_NOT_SUPPORTED.md) \| [`UNKNOWN_ERROR`](types.RPC.RPCSPEC07.WALLET_API.UNKNOWN_ERROR.md) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/methods.d.ts:63 + +--- + +### wallet_deploymentData + +• **wallet_deploymentData**: `Object` + +Get deployment data for a contract. + +#### Type declaration + +| Name | Type | +| :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `params?` | [`ApiVersionRequest`](types.RPC.RPCSPEC07.WALLET_API.ApiVersionRequest.md) | +| `result` | [`AccountDeploymentData`](types.RPC.RPCSPEC07.WALLET_API.AccountDeploymentData.md) | +| `errors` | [`ACCOUNT_ALREADY_DEPLOYED`](types.RPC.RPCSPEC07.WALLET_API.ACCOUNT_ALREADY_DEPLOYED.md) \| [`API_VERSION_NOT_SUPPORTED`](types.RPC.RPCSPEC07.WALLET_API.API_VERSION_NOT_SUPPORTED.md) \| [`UNKNOWN_ERROR`](types.RPC.RPCSPEC07.WALLET_API.UNKNOWN_ERROR.md) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/methods.d.ts:72 + +--- + +### wallet_addInvokeTransaction + +• **wallet_addInvokeTransaction**: `Object` + +Add an invoke transaction to the wallet. + +**`Param`** + +The parameters required for the invoke transaction. + +#### Type declaration + +| Name | Type | +| :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `params` | [`AddInvokeTransactionParameters`](types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionParameters.md) & [`ApiVersionRequest`](types.RPC.RPCSPEC07.WALLET_API.ApiVersionRequest.md) | +| `result` | [`AddInvokeTransactionResult`](types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionResult.md) | +| `errors` | [`USER_REFUSED_OP`](types.RPC.RPCSPEC07.WALLET_API.USER_REFUSED_OP.md) \| [`INVALID_REQUEST_PAYLOAD`](types.RPC.RPCSPEC07.WALLET_API.INVALID_REQUEST_PAYLOAD.md) \| [`API_VERSION_NOT_SUPPORTED`](types.RPC.RPCSPEC07.WALLET_API.API_VERSION_NOT_SUPPORTED.md) \| [`UNKNOWN_ERROR`](types.RPC.RPCSPEC07.WALLET_API.UNKNOWN_ERROR.md) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/methods.d.ts:82 + +--- + +### wallet_addDeclareTransaction + +• **wallet_addDeclareTransaction**: `Object` + +Add a declare transaction to the wallet. + +**`Param`** + +The parameters required for the declare transaction. + +#### Type declaration + +| Name | Type | +| :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `params` | [`AddDeclareTransactionParameters`](types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionParameters.md) & [`ApiVersionRequest`](types.RPC.RPCSPEC07.WALLET_API.ApiVersionRequest.md) | +| `result` | [`AddDeclareTransactionResult`](types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionResult.md) | +| `errors` | [`USER_REFUSED_OP`](types.RPC.RPCSPEC07.WALLET_API.USER_REFUSED_OP.md) \| [`INVALID_REQUEST_PAYLOAD`](types.RPC.RPCSPEC07.WALLET_API.INVALID_REQUEST_PAYLOAD.md) \| [`API_VERSION_NOT_SUPPORTED`](types.RPC.RPCSPEC07.WALLET_API.API_VERSION_NOT_SUPPORTED.md) \| [`UNKNOWN_ERROR`](types.RPC.RPCSPEC07.WALLET_API.UNKNOWN_ERROR.md) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/methods.d.ts:92 + +--- + +### wallet_signTypedData + +• **wallet_signTypedData**: `Object` + +Sign typed data using the wallet. + +**`Param`** + +The typed data to sign. + +#### Type declaration + +| Name | Type | +| :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `params` | [`TypedData`](types.RPC.RPCSPEC07.WALLET_API.TypedData.md) & [`ApiVersionRequest`](types.RPC.RPCSPEC07.WALLET_API.ApiVersionRequest.md) | +| `result` | [`SIGNATURE`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#signature) | +| `errors` | [`USER_REFUSED_OP`](types.RPC.RPCSPEC07.WALLET_API.USER_REFUSED_OP.md) \| [`INVALID_REQUEST_PAYLOAD`](types.RPC.RPCSPEC07.WALLET_API.INVALID_REQUEST_PAYLOAD.md) \| [`API_VERSION_NOT_SUPPORTED`](types.RPC.RPCSPEC07.WALLET_API.API_VERSION_NOT_SUPPORTED.md) \| [`UNKNOWN_ERROR`](types.RPC.RPCSPEC07.WALLET_API.UNKNOWN_ERROR.md) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/methods.d.ts:102 + +--- + +### wallet_supportedSpecs + +• **wallet_supportedSpecs**: `Object` + +Get the list of supported RPC specification versions. + +#### Type declaration + +| Name | Type | +| :-------- | :---------- | +| `params?` | `undefined` | +| `result` | `string`[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/methods.d.ts:111 + +--- + +### wallet_supportedWalletApi + +• **wallet_supportedWalletApi**: `Object` + +Returns a list of wallet api versions compatible with the wallet. +Notice this might be different from Starknet JSON-RPC spec + +#### Type declaration + +| Name | Type | +| :-------- | :---------- | +| `params?` | `undefined` | +| `result` | `string`[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/methods.d.ts:120 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetDomain.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetDomain.md new file mode 100644 index 000000000..c98e4a5f6 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetDomain.md @@ -0,0 +1,56 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.StarknetDomain' +title: 'Interface: StarknetDomain' +sidebar_label: 'StarknetDomain' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).StarknetDomain + +The EIP712 domain struct. Any of these fields are optional, but it must contain at least one field. + +## Hierarchy + +- `Record`<`string`, `unknown`\> + + ↳ **`StarknetDomain`** + +## Properties + +### name + +• `Optional` **name**: `string` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/typedData.d.ts:30 + +--- + +### version + +• `Optional` **version**: `string` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/typedData.d.ts:31 + +--- + +### chainId + +• `Optional` **chainId**: `string` \| `number` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/typedData.d.ts:32 + +--- + +### revision + +• `Optional` **revision**: `string` \| `number` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/typedData.d.ts:33 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md new file mode 100644 index 000000000..3b0da967e --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md @@ -0,0 +1,78 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject' +title: 'Interface: StarknetWindowObject' +sidebar_label: 'StarknetWindowObject' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).StarknetWindowObject + +## Properties + +### id + +• **id**: `string` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/StarknetWindowObject.d.ts:4 + +--- + +### name + +• **name**: `string` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/StarknetWindowObject.d.ts:5 + +--- + +### version + +• **version**: `string` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/StarknetWindowObject.d.ts:6 + +--- + +### icon + +• **icon**: `string` \| \{ `dark`: `string` ; `light`: `string` } + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/StarknetWindowObject.d.ts:7 + +--- + +### request + +• **request**: [`RequestFn`](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md#requestfn) + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/StarknetWindowObject.d.ts:11 + +--- + +### on + +• **on**: [`WalletEventListener`](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md#walleteventlistener) + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/StarknetWindowObject.d.ts:12 + +--- + +### off + +• **off**: [`WalletEventListener`](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md#walleteventlistener) + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/StarknetWindowObject.d.ts:13 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.SwitchStarknetChainParameters.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.SwitchStarknetChainParameters.md new file mode 100644 index 000000000..57eeafcb1 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.SwitchStarknetChainParameters.md @@ -0,0 +1,18 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.SwitchStarknetChainParameters' +title: 'Interface: SwitchStarknetChainParameters' +sidebar_label: 'SwitchStarknetChainParameters' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).SwitchStarknetChainParameters + +## Properties + +### chainId + +• **chainId**: `string` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:113 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md new file mode 100644 index 000000000..6327503b6 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md @@ -0,0 +1,51 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.TypedData' +title: 'Interface: TypedData' +sidebar_label: 'TypedData' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).TypedData + +SPEC: TYPED_DATA +The complete typed data, with all the structs, domain data, primary type of the message, and the message itself. + +## Properties + +### types + +• **types**: `Record`<`string`, [`StarknetType`](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md#starknettype)[]\> + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/typedData.d.ts:40 + +--- + +### primaryType + +• **primaryType**: `string` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/typedData.d.ts:41 + +--- + +### domain + +• **domain**: [`StarknetDomain`](types.RPC.RPCSPEC07.WALLET_API.StarknetDomain.md) + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/typedData.d.ts:42 + +--- + +### message + +• **message**: `object` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/typedData.d.ts:43 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.UNKNOWN_ERROR.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.UNKNOWN_ERROR.md new file mode 100644 index 000000000..430a575f6 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.UNKNOWN_ERROR.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.UNKNOWN_ERROR' +title: 'Interface: UNKNOWN_ERROR' +sidebar_label: 'UNKNOWN_ERROR' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).UNKNOWN_ERROR + +## Properties + +### code + +• **code**: `163` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/errors.d.ts:27 + +--- + +### message + +• **message**: `"An error occurred (UNKNOWN_ERROR)"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/errors.d.ts:28 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.UNLISTED_NETWORK.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.UNLISTED_NETWORK.md new file mode 100644 index 000000000..ac16d5e42 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.UNLISTED_NETWORK.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.UNLISTED_NETWORK' +title: 'Interface: UNLISTED_NETWORK' +sidebar_label: 'UNLISTED_NETWORK' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).UNLISTED_NETWORK + +## Properties + +### code + +• **code**: `112` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/errors.d.ts:6 + +--- + +### message + +• **message**: `"An error occurred (UNLISTED_NETWORK)"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/errors.d.ts:7 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.USER_REFUSED_OP.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.USER_REFUSED_OP.md new file mode 100644 index 000000000..337c18c9c --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.USER_REFUSED_OP.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.USER_REFUSED_OP' +title: 'Interface: USER_REFUSED_OP' +sidebar_label: 'USER_REFUSED_OP' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).USER_REFUSED_OP + +## Properties + +### code + +• **code**: `113` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/errors.d.ts:10 + +--- + +### message + +• **message**: `"An error occurred (USER_REFUSED_OP)"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/errors.d.ts:11 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.WalletEventHandlers.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.WalletEventHandlers.md new file mode 100644 index 000000000..6660d3d7d --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.WalletEventHandlers.md @@ -0,0 +1,28 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.WalletEventHandlers' +title: 'Interface: WalletEventHandlers' +sidebar_label: 'WalletEventHandlers' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).WalletEventHandlers + +## Properties + +### accountsChanged + +• **accountsChanged**: [`AccountChangeEventHandler`](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md#accountchangeeventhandler) + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/events.d.ts:5 + +--- + +### networkChanged + +• **networkChanged**: [`NetworkChangeEventHandler`](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md#networkchangeeventhandler) + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/events.d.ts:6 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.WatchAssetParameters.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.WatchAssetParameters.md new file mode 100644 index 000000000..df4dc218a --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.RPC.RPCSPEC07.WALLET_API.WatchAssetParameters.md @@ -0,0 +1,58 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API.WatchAssetParameters' +title: 'Interface: WatchAssetParameters' +sidebar_label: 'WatchAssetParameters' +custom_edit_url: null +--- + +[RPCSPEC07](../namespaces/types.RPC.RPCSPEC07.md).[WALLET_API](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md).WatchAssetParameters + +EIP-747: + +**`See`** + +https://github.com/ethereum/EIPs/blob/master/EIPS/eip-747.md + +## Hierarchy + +- [`Asset`](../namespaces/types.RPC.RPCSPEC07.WALLET_API.md#asset) + + ↳ **`WatchAssetParameters`** + +## Properties + +### type + +• **type**: `"ERC20"` + +#### Inherited from + +Asset.type + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:32 + +--- + +### options + +• **options**: `Object` + +#### Type declaration + +| Name | Type | +| :---------- | :------- | +| `address` | `string` | +| `symbol?` | `string` | +| `decimals?` | `number` | +| `image?` | `string` | +| `name?` | `string` | + +#### Inherited from + +Asset.options + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:33 diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.Uint256.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.Uint256.md new file mode 100644 index 000000000..81e369cce --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.Uint256.md @@ -0,0 +1,30 @@ +--- +id: 'types.Uint256' +title: 'Interface: Uint256' +sidebar_label: 'Uint256' +custom_edit_url: null +--- + +[types](../namespaces/types.md).Uint256 + +Represents an integer in the range [0, 2^256) + +## Properties + +### low + +• **low**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +#### Defined in + +[src/types/lib/index.ts:32](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L32) + +--- + +### high + +• **high**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +#### Defined in + +[src/types/lib/index.ts:34](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L34) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.Uint512.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.Uint512.md new file mode 100644 index 000000000..202f280ca --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.Uint512.md @@ -0,0 +1,50 @@ +--- +id: 'types.Uint512' +title: 'Interface: Uint512' +sidebar_label: 'Uint512' +custom_edit_url: null +--- + +[types](../namespaces/types.md).Uint512 + +Represents an integer in the range [0, 2^256) + +## Properties + +### limb0 + +• **limb0**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +#### Defined in + +[src/types/lib/index.ts:42](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L42) + +--- + +### limb1 + +• **limb1**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +#### Defined in + +[src/types/lib/index.ts:43](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L43) + +--- + +### limb2 + +• **limb2**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +#### Defined in + +[src/types/lib/index.ts:44](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L44) + +--- + +### limb3 + +• **limb3**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +#### Defined in + +[src/types/lib/index.ts:46](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L46) diff --git a/www/versioned_docs/version-6.24.1/API/interfaces/types.UniversalDetails.md b/www/versioned_docs/version-6.24.1/API/interfaces/types.UniversalDetails.md new file mode 100644 index 000000000..8c7f70cef --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/interfaces/types.UniversalDetails.md @@ -0,0 +1,124 @@ +--- +id: 'types.UniversalDetails' +title: 'Interface: UniversalDetails' +sidebar_label: 'UniversalDetails' +custom_edit_url: null +--- + +[types](../namespaces/types.md).UniversalDetails + +## Hierarchy + +- **`UniversalDetails`** + + ↳ [`EstimateFeeDetails`](types.EstimateFeeDetails.md) + +## Properties + +### nonce + +• `Optional` **nonce**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +#### Defined in + +[src/types/account.ts:33](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L33) + +--- + +### blockIdentifier + +• `Optional` **blockIdentifier**: [`BlockIdentifier`](../namespaces/types.md#blockidentifier) + +#### Defined in + +[src/types/account.ts:34](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L34) + +--- + +### maxFee + +• `Optional` **maxFee**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +#### Defined in + +[src/types/account.ts:35](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L35) + +--- + +### tip + +• `Optional` **tip**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +#### Defined in + +[src/types/account.ts:36](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L36) + +--- + +### paymasterData + +• `Optional` **paymasterData**: [`BigNumberish`](../namespaces/types.md#bignumberish)[] + +#### Defined in + +[src/types/account.ts:37](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L37) + +--- + +### accountDeploymentData + +• `Optional` **accountDeploymentData**: [`BigNumberish`](../namespaces/types.md#bignumberish)[] + +#### Defined in + +[src/types/account.ts:38](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L38) + +--- + +### nonceDataAvailabilityMode + +• `Optional` **nonceDataAvailabilityMode**: [`EDataAvailabilityMode`](../namespaces/types.RPC.RPCSPEC07.API.md#edataavailabilitymode-1) + +#### Defined in + +[src/types/account.ts:39](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L39) + +--- + +### feeDataAvailabilityMode + +• `Optional` **feeDataAvailabilityMode**: [`EDataAvailabilityMode`](../namespaces/types.RPC.RPCSPEC07.API.md#edataavailabilitymode-1) + +#### Defined in + +[src/types/account.ts:40](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L40) + +--- + +### version + +• `Optional` **version**: [`BigNumberish`](../namespaces/types.md#bignumberish) + +#### Defined in + +[src/types/account.ts:41](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L41) + +--- + +### resourceBounds + +• `Optional` **resourceBounds**: [`RESOURCE_BOUNDS_MAPPING`](../namespaces/types.RPC.RPCSPEC07.API.SPEC.md#resource_bounds_mapping) + +#### Defined in + +[src/types/account.ts:42](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L42) + +--- + +### skipValidate + +• `Optional` **skipValidate**: `boolean` + +#### Defined in + +[src/types/account.ts:43](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L43) diff --git a/www/versioned_docs/version-6.24.1/API/modules.md b/www/versioned_docs/version-6.24.1/API/modules.md new file mode 100644 index 000000000..d87f5dc44 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/modules.md @@ -0,0 +1,2020 @@ +--- +id: 'modules' +title: 'Starknet.js API - v6.24.1' +sidebar_label: 'Exports' +sidebar_position: 0.5 +custom_edit_url: null +--- + +## Namespaces + +- [types](namespaces/types.md) +- [constants](namespaces/constants.md) +- [encode](namespaces/encode.md) +- [hash](namespaces/hash.md) +- [v3hash](namespaces/v3hash.md) +- [v2hash](namespaces/v2hash.md) +- [json](namespaces/json.md) +- [num](namespaces/num.md) +- [transaction](namespaces/transaction.md) +- [stark](namespaces/stark.md) +- [eth](namespaces/eth.md) +- [merkle](namespaces/merkle.md) +- [uint256](namespaces/uint256.md) +- [shortString](namespaces/shortString.md) +- [typedData](namespaces/typedData.md) +- [ec](namespaces/ec.md) +- [starknetId](namespaces/starknetId.md) +- [provider](namespaces/provider-1.md) +- [selector](namespaces/selector.md) +- [events](namespaces/events.md) +- [outsideExecution](namespaces/outsideExecution.md) +- [src5](namespaces/src5.md) +- [wallet](namespaces/wallet.md) +- [RPC06](namespaces/RPC06.md) +- [RPC07](namespaces/RPC07.md) +- [cairo](namespaces/cairo.md) +- [byteArray](namespaces/byteArray.md) + +## Classes + +- [WalletAccount](classes/WalletAccount.md) +- [Account](classes/Account.md) +- [AccountInterface](classes/AccountInterface.md) +- [Contract](classes/Contract.md) +- [ContractInterface](classes/ContractInterface.md) +- [ContractFactory](classes/ContractFactory.md) +- [Provider](classes/Provider.md) +- [CustomError](classes/CustomError.md) +- [LibraryError](classes/LibraryError.md) +- [RpcError](classes/RpcError.md) +- [ProviderInterface](classes/ProviderInterface.md) +- [LedgerSigner111](classes/LedgerSigner111.md) +- [LedgerSigner221](classes/LedgerSigner221.md) +- [SignerInterface](classes/SignerInterface.md) +- [Signer](classes/Signer.md) +- [EthSigner](classes/EthSigner.md) +- [BatchClient](classes/BatchClient.md) +- [ResponseParser](classes/ResponseParser.md) +- [RPCResponseParser](classes/RPCResponseParser.md) +- [CairoUint256](classes/CairoUint256.md) +- [CairoUint512](classes/CairoUint512.md) +- [CairoFixedArray](classes/CairoFixedArray.md) +- [CallData](classes/CallData.md) +- [CairoCustomEnum](classes/CairoCustomEnum.md) +- [CairoOption](classes/CairoOption.md) +- [CairoResult](classes/CairoResult.md) +- [ReceiptTx](classes/ReceiptTx.md) + +## References + +### RpcProvider + +Renames and re-exports [Provider](classes/Provider.md) + +--- + +### LedgerSigner + +Renames and re-exports [LedgerSigner111](classes/LedgerSigner111.md) + +--- + +### getLedgerPathBuffer + +Renames and re-exports [getLedgerPathBuffer111](modules.md#getledgerpathbuffer111) + +--- + +### RpcChannel + +Re-exports [RpcChannel](classes/RPC07.RpcChannel.md) + +--- + +### RPC + +Re-exports [RPC](namespaces/types.RPC.md) + +--- + +### WeierstrassSignatureType + +Re-exports [WeierstrassSignatureType](namespaces/types.md#weierstrasssignaturetype) + +--- + +### ArraySignatureType + +Re-exports [ArraySignatureType](namespaces/types.md#arraysignaturetype) + +--- + +### Signature + +Re-exports [Signature](namespaces/types.md#signature) + +--- + +### BigNumberish + +Re-exports [BigNumberish](namespaces/types.md#bignumberish) + +--- + +### ByteArray + +Re-exports [ByteArray](namespaces/types.md#bytearray) + +--- + +### Calldata + +Re-exports [Calldata](namespaces/types.md#calldata) + +--- + +### Uint256 + +Re-exports [Uint256](interfaces/types.Uint256.md) + +--- + +### Uint512 + +Re-exports [Uint512](interfaces/types.Uint512.md) + +--- + +### RawCalldata + +Re-exports [RawCalldata](namespaces/types.md#rawcalldata) + +--- + +### HexCalldata + +Re-exports [HexCalldata](namespaces/types.md#hexcalldata) + +--- + +### AllowArray + +Re-exports [AllowArray](namespaces/types.md#allowarray) + +--- + +### OptionalPayload + +Re-exports [OptionalPayload](namespaces/types.md#optionalpayload) + +--- + +### RawArgs + +Re-exports [RawArgs](namespaces/types.md#rawargs) + +--- + +### RawArgsObject + +Re-exports [RawArgsObject](namespaces/types.md#rawargsobject) + +--- + +### RawArgsArray + +Re-exports [RawArgsArray](namespaces/types.md#rawargsarray) + +--- + +### MultiType + +Re-exports [MultiType](namespaces/types.md#multitype) + +--- + +### UniversalDeployerContractPayload + +Re-exports [UniversalDeployerContractPayload](namespaces/types.md#universaldeployercontractpayload) + +--- + +### DeployAccountContractPayload + +Re-exports [DeployAccountContractPayload](namespaces/types.md#deployaccountcontractpayload) + +--- + +### DeployAccountContractTransaction + +Re-exports [DeployAccountContractTransaction](namespaces/types.md#deployaccountcontracttransaction) + +--- + +### DeclareContractPayload + +Re-exports [DeclareContractPayload](namespaces/types.md#declarecontractpayload) + +--- + +### ContractClassIdentifier + +Re-exports [ContractClassIdentifier](namespaces/types.md#contractclassidentifier) + +--- + +### CompleteDeclareContractPayload + +Re-exports [CompleteDeclareContractPayload](namespaces/types.md#completedeclarecontractpayload) + +--- + +### DeclareAndDeployContractPayload + +Re-exports [DeclareAndDeployContractPayload](namespaces/types.md#declareanddeploycontractpayload) + +--- + +### DeclareContractTransaction + +Re-exports [DeclareContractTransaction](namespaces/types.md#declarecontracttransaction) + +--- + +### CallDetails + +Re-exports [CallDetails](namespaces/types.md#calldetails) + +--- + +### Invocation + +Re-exports [Invocation](namespaces/types.md#invocation) + +--- + +### Call + +Re-exports [Call](namespaces/types.md#call) + +--- + +### CairoVersion + +Re-exports [CairoVersion](namespaces/types.md#cairoversion) + +--- + +### CompilerVersion + +Re-exports [CompilerVersion](namespaces/types.md#compilerversion) + +--- + +### InvocationsDetails + +Re-exports [InvocationsDetails](namespaces/types.md#invocationsdetails) + +--- + +### V3TransactionDetails + +Re-exports [V3TransactionDetails](namespaces/types.md#v3transactiondetails) + +--- + +### Details + +Re-exports [Details](namespaces/types.md#details) + +--- + +### InvocationsDetailsWithNonce + +Re-exports [InvocationsDetailsWithNonce](namespaces/types.md#invocationsdetailswithnonce) + +--- + +### TransactionType + +Re-exports [TransactionType](namespaces/types.md#transactiontype-1) + +--- + +### TransactionStatus + +Re-exports [TransactionStatus](namespaces/types.md#transactionstatus-1) + +--- + +### TransactionFinalityStatus + +Re-exports [TransactionFinalityStatus](namespaces/types.md#transactionfinalitystatus-1) + +--- + +### TransactionExecutionStatus + +Re-exports [TransactionExecutionStatus](namespaces/types.md#transactionexecutionstatus-1) + +--- + +### BlockStatus + +Re-exports [BlockStatus](namespaces/types.md#blockstatus-1) + +--- + +### BlockTag + +Re-exports [BlockTag](namespaces/types.md#blocktag-1) + +--- + +### BlockNumber + +Re-exports [BlockNumber](namespaces/types.md#blocknumber) + +--- + +### BlockIdentifier + +Re-exports [BlockIdentifier](namespaces/types.md#blockidentifier) + +--- + +### AccountInvocationItem + +Re-exports [AccountInvocationItem](namespaces/types.md#accountinvocationitem) + +--- + +### AccountInvocations + +Re-exports [AccountInvocations](namespaces/types.md#accountinvocations) + +--- + +### Invocations + +Re-exports [Invocations](namespaces/types.md#invocations) + +--- + +### Tupled + +Re-exports [Tupled](namespaces/types.md#tupled) + +--- + +### Args + +Re-exports [Args](namespaces/types.md#args) + +--- + +### ParsedStruct + +Re-exports [ParsedStruct](namespaces/types.md#parsedstruct) + +--- + +### waitForTransactionOptions + +Re-exports [waitForTransactionOptions](namespaces/types.md#waitfortransactionoptions) + +--- + +### getSimulateTransactionOptions + +Re-exports [getSimulateTransactionOptions](namespaces/types.md#getsimulatetransactionoptions) + +--- + +### getContractVersionOptions + +Re-exports [getContractVersionOptions](namespaces/types.md#getcontractversionoptions) + +--- + +### getEstimateFeeBulkOptions + +Re-exports [getEstimateFeeBulkOptions](namespaces/types.md#getestimatefeebulkoptions) + +--- + +### CallStruct + +Re-exports [CallStruct](interfaces/types.CallStruct.md) + +--- + +### ContractVersion + +Re-exports [ContractVersion](namespaces/types.md#contractversion) + +--- + +### ContractClass + +Re-exports [ContractClass](namespaces/types.md#contractclass) + +--- + +### CompiledContract + +Re-exports [CompiledContract](namespaces/types.md#compiledcontract) + +--- + +### CairoContract + +Re-exports [CairoContract](namespaces/types.md#cairocontract) + +--- + +### EntryPointType + +Re-exports [EntryPointType](namespaces/types.md#entrypointtype-1) + +--- + +### Abi + +Re-exports [Abi](namespaces/types.md#abi) + +--- + +### AbiEntry + +Re-exports [AbiEntry](namespaces/types.md#abientry) + +--- + +### EventEntry + +Re-exports [EventEntry](namespaces/types.md#evententry) + +--- + +### FunctionAbi + +Re-exports [FunctionAbi](namespaces/types.md#functionabi) + +--- + +### AbiStructs + +Re-exports [AbiStructs](namespaces/types.md#abistructs) + +--- + +### AbiStruct + +Re-exports [AbiStruct](namespaces/types.md#abistruct) + +--- + +### AbiInterfaces + +Re-exports [AbiInterfaces](namespaces/types.md#abiinterfaces) + +--- + +### InterfaceAbi + +Re-exports [InterfaceAbi](namespaces/types.md#interfaceabi) + +--- + +### AbiEnums + +Re-exports [AbiEnums](namespaces/types.md#abienums) + +--- + +### AbiEnum + +Re-exports [AbiEnum](namespaces/types.md#abienum) + +--- + +### AbiEvents + +Re-exports [AbiEvents](namespaces/types.md#abievents) + +--- + +### AbiEvent + +Re-exports [AbiEvent](namespaces/types.md#abievent) + +--- + +### CairoEvent + +Re-exports [CairoEvent](namespaces/types.md#cairoevent) + +--- + +### CairoEventDefinition + +Re-exports [CairoEventDefinition](namespaces/types.md#cairoeventdefinition) + +--- + +### CairoEventVariant + +Re-exports [CairoEventVariant](namespaces/types.md#cairoeventvariant) + +--- + +### LegacyEvent + +Re-exports [LegacyEvent](namespaces/types.md#legacyevent) + +--- + +### LegacyContractClass + +Re-exports [LegacyContractClass](namespaces/types.md#legacycontractclass) + +--- + +### LegacyCompiledContract + +Re-exports [LegacyCompiledContract](namespaces/types.md#legacycompiledcontract) + +--- + +### Builtins + +Re-exports [Builtins](namespaces/types.md#builtins) + +--- + +### CompressedProgram + +Re-exports [CompressedProgram](namespaces/types.md#compressedprogram) + +--- + +### EntryPointsByType + +Re-exports [EntryPointsByType](namespaces/types.md#entrypointsbytype) + +--- + +### ContractEntryPointFields + +Re-exports [ContractEntryPointFields](namespaces/types.md#contractentrypointfields) + +--- + +### Program + +Re-exports [Program](interfaces/types.Program.md) + +--- + +### CairoAssembly + +Re-exports [CairoAssembly](namespaces/types.md#cairoassembly) + +--- + +### CompiledSierra + +Re-exports [CompiledSierra](namespaces/types.md#compiledsierra) + +--- + +### SierraContractClass + +Re-exports [SierraContractClass](namespaces/types.md#sierracontractclass) + +--- + +### CompiledSierraCasm + +Re-exports [CompiledSierraCasm](namespaces/types.md#compiledsierracasm) + +--- + +### ByteCode + +Re-exports [ByteCode](namespaces/types.md#bytecode) + +--- + +### PythonicHints + +Re-exports [PythonicHints](namespaces/types.md#pythonichints) + +--- + +### SierraProgramDebugInfo + +Re-exports [SierraProgramDebugInfo](namespaces/types.md#sierraprogramdebuginfo) + +--- + +### SierraEntryPointsByType + +Re-exports [SierraEntryPointsByType](namespaces/types.md#sierraentrypointsbytype) + +--- + +### SierraContractEntryPointFields + +Re-exports [SierraContractEntryPointFields](namespaces/types.md#sierracontractentrypointfields) + +--- + +### ProviderOptions + +Re-exports [ProviderOptions](interfaces/types.ProviderOptions.md) + +--- + +### RpcProviderOptions + +Re-exports [RpcProviderOptions](namespaces/types.md#rpcprovideroptions) + +--- + +### BlockWithTxHashes + +Re-exports [BlockWithTxHashes](namespaces/types.md#blockwithtxhashes) + +--- + +### ContractClassPayload + +Re-exports [ContractClassPayload](namespaces/types.md#contractclasspayload) + +--- + +### FeeEstimate + +Re-exports [FeeEstimate](namespaces/types.md#feeestimate) + +--- + +### TransactionReceipt + +Re-exports [TransactionReceipt](namespaces/types.md#transactionreceipt) + +--- + +### GetBlockResponse + +Re-exports [GetBlockResponse](namespaces/types.md#getblockresponse) + +--- + +### PendingBlock + +Re-exports [PendingBlock](namespaces/types.md#pendingblock) + +--- + +### Block + +Re-exports [Block](namespaces/types.md#block) + +--- + +### MessageToL1 + +Re-exports [MessageToL1](interfaces/types.MessageToL1.md) + +--- + +### RevertedTransactionReceiptResponse + +Re-exports [RevertedTransactionReceiptResponse](namespaces/types.md#revertedtransactionreceiptresponse) + +--- + +### RejectedTransactionReceiptResponse + +Re-exports [RejectedTransactionReceiptResponse](namespaces/types.md#rejectedtransactionreceiptresponse) + +--- + +### GetTxReceiptResponseWithoutHelper + +Re-exports [GetTxReceiptResponseWithoutHelper](namespaces/types.md#gettxreceiptresponsewithouthelper) + +--- + +### SuccessfulTransactionReceiptResponse + +Re-exports [SuccessfulTransactionReceiptResponse](namespaces/types.md#successfultransactionreceiptresponse) + +--- + +### GetTransactionResponse + +Re-exports [GetTransactionResponse](namespaces/types.md#gettransactionresponse) + +--- + +### InvokeTransactionReceiptResponse + +Re-exports [InvokeTransactionReceiptResponse](namespaces/types.md#invoketransactionreceiptresponse) + +--- + +### DeclareTransactionReceiptResponse + +Re-exports [DeclareTransactionReceiptResponse](namespaces/types.md#declaretransactionreceiptresponse) + +--- + +### DeployTransactionReceiptResponse + +Re-exports [DeployTransactionReceiptResponse](namespaces/types.md#deploytransactionreceiptresponse) + +--- + +### DeployAccountTransactionReceiptResponse + +Re-exports [DeployAccountTransactionReceiptResponse](namespaces/types.md#deployaccounttransactionreceiptresponse) + +--- + +### L1HandlerTransactionReceiptResponse + +Re-exports [L1HandlerTransactionReceiptResponse](namespaces/types.md#l1handlertransactionreceiptresponse) + +--- + +### EstimateFeeResponse + +Re-exports [EstimateFeeResponse](interfaces/types.EstimateFeeResponse.md) + +--- + +### EstimateFeeResponseBulk + +Re-exports [EstimateFeeResponseBulk](namespaces/types.md#estimatefeeresponsebulk) + +--- + +### InvokeFunctionResponse + +Re-exports [InvokeFunctionResponse](namespaces/types.md#invokefunctionresponse) + +--- + +### DeclareContractResponse + +Re-exports [DeclareContractResponse](namespaces/types.md#declarecontractresponse) + +--- + +### CallContractResponse + +Re-exports [CallContractResponse](namespaces/types.md#callcontractresponse) + +--- + +### Storage + +Re-exports [Storage](namespaces/types.md#storage) + +--- + +### Nonce + +Re-exports [Nonce](namespaces/types.md#nonce) + +--- + +### SIMULATION_FLAG + +Re-exports [SIMULATION_FLAG](namespaces/types.md#simulation_flag) + +--- + +### SimulationFlags + +Re-exports [SimulationFlags](namespaces/types.md#simulationflags) + +--- + +### SimulatedTransaction + +Re-exports [SimulatedTransaction](namespaces/types.md#simulatedtransaction) + +--- + +### SimulateTransactionResponse + +Re-exports [SimulateTransactionResponse](namespaces/types.md#simulatetransactionresponse) + +--- + +### StateUpdateResponse + +Re-exports [StateUpdateResponse](namespaces/types.md#stateupdateresponse) + +--- + +### StateUpdate + +Re-exports [StateUpdate](namespaces/types.md#stateupdate) + +--- + +### PendingStateUpdate + +Re-exports [PendingStateUpdate](namespaces/types.md#pendingstateupdate) + +--- + +### ContractClassResponse + +Re-exports [ContractClassResponse](namespaces/types.md#contractclassresponse) + +--- + +### EstimateFee + +Re-exports [EstimateFee](interfaces/types.EstimateFee.md) + +--- + +### UniversalSuggestedFee + +Re-exports [UniversalSuggestedFee](namespaces/types.md#universalsuggestedfee) + +--- + +### EstimateFeeBulk + +Re-exports [EstimateFeeBulk](namespaces/types.md#estimatefeebulk) + +--- + +### AccountInvocationsFactoryDetails + +Re-exports [AccountInvocationsFactoryDetails](namespaces/types.md#accountinvocationsfactorydetails) + +--- + +### UniversalDetails + +Re-exports [UniversalDetails](interfaces/types.UniversalDetails.md) + +--- + +### EstimateFeeDetails + +Re-exports [EstimateFeeDetails](interfaces/types.EstimateFeeDetails.md) + +--- + +### DeployContractResponse + +Re-exports [DeployContractResponse](interfaces/types.DeployContractResponse.md) + +--- + +### MultiDeployContractResponse + +Re-exports [MultiDeployContractResponse](namespaces/types.md#multideploycontractresponse) + +--- + +### DeployContractUDCResponse + +Re-exports [DeployContractUDCResponse](namespaces/types.md#deploycontractudcresponse) + +--- + +### DeclareDeployUDCResponse + +Re-exports [DeclareDeployUDCResponse](namespaces/types.md#declaredeployudcresponse) + +--- + +### SimulateTransactionDetails + +Re-exports [SimulateTransactionDetails](namespaces/types.md#simulatetransactiondetails) + +--- + +### EstimateFeeAction + +Re-exports [EstimateFeeAction](namespaces/types.md#estimatefeeaction) + +--- + +### StarkProfile + +Re-exports [StarkProfile](namespaces/types.md#starkprofile) + +--- + +### CairoEnum + +Re-exports [CairoEnum](namespaces/types.md#cairoenum) + +--- + +### ValidateType + +Re-exports [ValidateType](namespaces/types.md#validatetype-1) + +--- + +### Uint + +Re-exports [Uint](namespaces/types.md#uint-1) + +--- + +### Literal + +Re-exports [Literal](namespaces/types.md#literal-1) + +--- + +### ETH_ADDRESS + +Re-exports [ETH_ADDRESS](namespaces/types.md#eth_address) + +--- + +### NON_ZERO_PREFIX + +Re-exports [NON_ZERO_PREFIX](namespaces/types.md#non_zero_prefix) + +--- + +### AsyncContractFunction + +Re-exports [AsyncContractFunction](namespaces/types.md#asynccontractfunction) + +--- + +### ContractFunction + +Re-exports [ContractFunction](namespaces/types.md#contractfunction) + +--- + +### Result + +Re-exports [Result](namespaces/types.md#result) + +--- + +### ArgsOrCalldata + +Re-exports [ArgsOrCalldata](namespaces/types.md#argsorcalldata) + +--- + +### ArgsOrCalldataWithOptions + +Re-exports [ArgsOrCalldataWithOptions](namespaces/types.md#argsorcalldatawithoptions) + +--- + +### ContractOptions + +Re-exports [ContractOptions](namespaces/types.md#contractoptions) + +--- + +### CallOptions + +Re-exports [CallOptions](namespaces/types.md#calloptions) + +--- + +### InvokeOptions + +Re-exports [InvokeOptions](namespaces/types.md#invokeoptions) + +--- + +### ParsedEvent + +Re-exports [ParsedEvent](namespaces/types.md#parsedevent) + +--- + +### ParsedEvents + +Re-exports [ParsedEvents](namespaces/types.md#parsedevents) + +--- + +### RPC_ERROR_SET + +Re-exports [RPC_ERROR_SET](namespaces/types.md#rpc_error_set) + +--- + +### RPC_ERROR + +Re-exports [RPC_ERROR](namespaces/types.md#rpc_error) + +--- + +### OutsideExecutionOptions + +Re-exports [OutsideExecutionOptions](interfaces/types.OutsideExecutionOptions.md) + +--- + +### OutsideCall + +Re-exports [OutsideCall](interfaces/types.OutsideCall.md) + +--- + +### OutsideExecution + +Re-exports [OutsideExecution](interfaces/types.OutsideExecution.md) + +--- + +### OutsideTransaction + +Re-exports [OutsideTransaction](interfaces/types.OutsideTransaction.md) + +--- + +### OutsideExecutionTypesV1 + +Re-exports [OutsideExecutionTypesV1](namespaces/types.md#outsideexecutiontypesv1) + +--- + +### OutsideExecutionTypesV2 + +Re-exports [OutsideExecutionTypesV2](namespaces/types.md#outsideexecutiontypesv2) + +--- + +### OutsideExecutionVersion + +Re-exports [OutsideExecutionVersion](enums/types.OutsideExecutionVersion.md) + +--- + +### InvocationsSignerDetails + +Re-exports [InvocationsSignerDetails](namespaces/types.md#invocationssignerdetails) + +--- + +### V2InvocationsSignerDetails + +Re-exports [V2InvocationsSignerDetails](namespaces/types.md#v2invocationssignerdetails) + +--- + +### V3InvocationsSignerDetails + +Re-exports [V3InvocationsSignerDetails](namespaces/types.md#v3invocationssignerdetails) + +--- + +### DeclareSignerDetails + +Re-exports [DeclareSignerDetails](namespaces/types.md#declaresignerdetails) + +--- + +### V2DeclareSignerDetails + +Re-exports [V2DeclareSignerDetails](namespaces/types.md#v2declaresignerdetails) + +--- + +### V3DeclareSignerDetails + +Re-exports [V3DeclareSignerDetails](namespaces/types.md#v3declaresignerdetails) + +--- + +### DeployAccountSignerDetails + +Re-exports [DeployAccountSignerDetails](namespaces/types.md#deployaccountsignerdetails) + +--- + +### V2DeployAccountSignerDetails + +Re-exports [V2DeployAccountSignerDetails](namespaces/types.md#v2deployaccountsignerdetails) + +--- + +### V3DeployAccountSignerDetails + +Re-exports [V3DeployAccountSignerDetails](namespaces/types.md#v3deployaccountsignerdetails) + +--- + +### LedgerPathCalculation + +Re-exports [LedgerPathCalculation](namespaces/types.md#ledgerpathcalculation) + +--- + +### TransactionStatusReceiptSets + +Re-exports [TransactionStatusReceiptSets](namespaces/types.md#transactionstatusreceiptsets) + +--- + +### TransactionReceiptStatus + +Re-exports [TransactionReceiptStatus](namespaces/types.md#transactionreceiptstatus) + +--- + +### TransactionReceiptValue + +Re-exports [TransactionReceiptValue](namespaces/types.md#transactionreceiptvalue) + +--- + +### TransactionReceiptCallbacksDefined + +Re-exports [TransactionReceiptCallbacksDefined](namespaces/types.md#transactionreceiptcallbacksdefined) + +--- + +### TransactionReceiptCallbacksDefault + +Re-exports [TransactionReceiptCallbacksDefault](namespaces/types.md#transactionreceiptcallbacksdefault) + +--- + +### TransactionReceiptCallbacks + +Re-exports [TransactionReceiptCallbacks](namespaces/types.md#transactionreceiptcallbacks) + +--- + +### TransactionReceiptUtilityInterface + +Re-exports [TransactionReceiptUtilityInterface](namespaces/types.md#transactionreceiptutilityinterface) + +--- + +### TypedDataRevision + +Re-exports [TypedDataRevision](namespaces/types.RPC.RPCSPEC07.WALLET_API.md#typeddatarevision-1) + +--- + +### StarknetEnumType + +Re-exports [StarknetEnumType](namespaces/types.RPC.RPCSPEC07.WALLET_API.md#starknetenumtype) + +--- + +### StarknetMerkleType + +Re-exports [StarknetMerkleType](namespaces/types.RPC.RPCSPEC07.WALLET_API.md#starknetmerkletype) + +--- + +### StarknetType + +Re-exports [StarknetType](namespaces/types.RPC.RPCSPEC07.WALLET_API.md#starknettype) + +--- + +### StarknetDomain + +Re-exports [StarknetDomain](interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetDomain.md) + +--- + +### TypedData + +Re-exports [TypedData](interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) + +--- + +### UINT_128_MAX + +Re-exports [UINT_128_MAX](namespaces/uint256.md#uint_128_max) + +--- + +### UINT_256_MAX + +Re-exports [UINT_256_MAX](namespaces/uint256.md#uint_256_max) + +## Type Aliases + +### TypedContractV2 + +Ƭ **TypedContractV2**<`TAbi`\>: `AbiWanTypedContract`<`TAbi`\> & [`Contract`](classes/Contract.md) + +#### Type parameters + +| Name | Type | +| :----- | :------------------ | +| `TAbi` | extends `AbiKanabi` | + +#### Defined in + +[src/contract/default.ts:38](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L38) + +--- + +### ContractFactoryParams + +Ƭ **ContractFactoryParams**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------- | :--------------------------------------------------------- | +| `compiledContract` | [`CompiledContract`](namespaces/types.md#compiledcontract) | +| `account` | `any` | +| `casm?` | [`CairoAssembly`](namespaces/types.md#cairoassembly) | +| `classHash?` | `string` | +| `compiledClassHash?` | `string` | +| `abi?` | [`Abi`](namespaces/types.md#abi) | + +#### Defined in + +[src/contract/contractFactory.ts:14](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/contractFactory.ts#L14) + +--- + +### BatchClientOptions + +Ƭ **BatchClientOptions**: `Object` + +#### Type declaration + +| Name | Type | +| :---------- | :---------------------------------------------------------------------------------------------- | +| `nodeUrl` | `string` | +| `headers` | `object` | +| `interval` | `number` | +| `baseFetch` | `NonNullable`<[`RpcProviderOptions`](namespaces/types.md#rpcprovideroptions)[``"baseFetch"``]\> | + +#### Defined in + +[src/utils/batch/index.ts:5](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/batch/index.ts#L5) + +--- + +### CairoEnumRaw + +Ƭ **CairoEnumRaw**: `Record`<`string`, `any`\> + +#### Defined in + +[src/utils/calldata/enum/CairoCustomEnum.ts:3](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoCustomEnum.ts#L3) + +--- + +### CairoOptionVariant + +Ƭ **CairoOptionVariant**: `ValuesType` + +#### Defined in + +[src/utils/calldata/enum/CairoOption.ts:4](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoOption.ts#L4) + +[src/utils/calldata/enum/CairoOption.ts:9](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoOption.ts#L9) + +--- + +### CairoResultVariant + +Ƭ **CairoResultVariant**: `ValuesType` + +#### Defined in + +[src/utils/calldata/enum/CairoResult.ts:4](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoResult.ts#L4) + +[src/utils/calldata/enum/CairoResult.ts:9](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoResult.ts#L9) + +--- + +### GetTransactionReceiptResponse + +Ƭ **GetTransactionReceiptResponse**: [`GetTxReceiptResponseWithoutHelper`](namespaces/types.md#gettxreceiptresponsewithouthelper) & [`ReceiptTx`](classes/ReceiptTx.md) + +#### Defined in + +[src/utils/transactionReceipt.ts:114](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transactionReceipt.ts#L114) + +--- + +### LogLevelIndex + +Ƭ **LogLevelIndex**: `ValuesType` + +#### Defined in + +[src/global/logger.type.ts:3](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/logger.type.ts#L3) + +[src/global/logger.type.ts:12](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/logger.type.ts#L12) + +--- + +### LogLevel + +Ƭ **LogLevel**: keyof typeof [`LogLevelIndex`](modules.md#loglevelindex-1) + +#### Defined in + +[src/global/logger.type.ts:14](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/logger.type.ts#L14) + +## Variables + +### number + +• `Const` **number**: [`num`](namespaces/num.md) = `num` + +**`Deprecated`** + +prefer the 'num' naming + +#### Defined in + +[src/index.ts:62](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/index.ts#L62) + +--- + +### defaultProvider + +• `Const` **defaultProvider**: `RpcProvider` + +#### Defined in + +[src/provider/index.ts:8](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/provider/index.ts#L8) + +--- + +### UINT_256_MIN + +• `Const` **UINT_256_MIN**: `0n` + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:12](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L12) + +--- + +### UINT_256_LOW_MAX + +• `Const` **UINT_256_LOW_MAX**: `340282366920938463463374607431768211455n` + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:13](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L13) + +--- + +### UINT_256_HIGH_MAX + +• `Const` **UINT_256_HIGH_MAX**: `340282366920938463463374607431768211455n` + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:14](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L14) + +--- + +### UINT_256_LOW_MIN + +• `Const` **UINT_256_LOW_MIN**: `0n` + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:15](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L15) + +--- + +### UINT_256_HIGH_MIN + +• `Const` **UINT_256_HIGH_MIN**: `0n` + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:16](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L16) + +--- + +### UINT_512_MAX + +• `Const` **UINT_512_MAX**: `bigint` + +#### Defined in + +[src/utils/cairoDataTypes/uint512.ts:11](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint512.ts#L11) + +--- + +### UINT_512_MIN + +• `Const` **UINT_512_MIN**: `0n` + +#### Defined in + +[src/utils/cairoDataTypes/uint512.ts:12](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint512.ts#L12) + +--- + +### UINT_128_MIN + +• `Const` **UINT_128_MIN**: `0n` + +#### Defined in + +[src/utils/cairoDataTypes/uint512.ts:13](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint512.ts#L13) + +--- + +### CairoOptionVariant + +• `Const` **CairoOptionVariant**: `Object` + +#### Type declaration + +| Name | Type | +| :----- | :--- | +| `Some` | `0` | +| `None` | `1` | + +#### Defined in + +[src/utils/calldata/enum/CairoOption.ts:4](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoOption.ts#L4) + +[src/utils/calldata/enum/CairoOption.ts:9](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoOption.ts#L9) + +--- + +### CairoResultVariant + +• `Const` **CairoResultVariant**: `Object` + +#### Type declaration + +| Name | Type | +| :---- | :--- | +| `Ok` | `0` | +| `Err` | `1` | + +#### Defined in + +[src/utils/calldata/enum/CairoResult.ts:4](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoResult.ts#L4) + +[src/utils/calldata/enum/CairoResult.ts:9](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/enum/CairoResult.ts#L9) + +--- + +### config + +• `Const` **config**: `Configuration` + +#### Defined in + +[src/global/config.ts:69](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/config.ts#L69) + +--- + +### logger + +• `Const` **logger**: `Logger` + +Logger instance, use for the system logging. +Higher the logger level index, higher the LogLevel required to display log. +Default should be INFO + +DEBUG: 5, +INFO: 4, +WARN: 3, +ERROR: 2, +FATAL: 1, + +#### Defined in + +[src/global/logger.ts:166](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/logger.ts#L166) + +--- + +### LogLevelIndex + +• `Const` **LogLevelIndex**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------- | +| `DEBUG` | `number` | +| `INFO` | `number` | +| `WARN` | `number` | +| `ERROR` | `number` | +| `FATAL` | `number` | +| `OFF` | `number` | + +#### Defined in + +[src/global/logger.type.ts:3](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/logger.type.ts#L3) + +[src/global/logger.type.ts:12](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/logger.type.ts#L12) + +## Functions + +### getCalldata + +▸ **getCalldata**(`args`, `callback`): [`Calldata`](namespaces/types.md#calldata) + +#### Parameters + +| Name | Type | +| :--------- | :--------------------------------------- | +| `args` | [`RawArgs`](namespaces/types.md#rawargs) | +| `callback` | `Function` | + +#### Returns + +[`Calldata`](namespaces/types.md#calldata) + +#### Defined in + +[src/contract/default.ts:113](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L113) + +--- + +### splitArgsAndOptions + +▸ **splitArgsAndOptions**(`args`): \{ `args`: [`ArgsOrCalldata`](namespaces/types.md#argsorcalldata) ; `options`: [`ContractOptions`](namespaces/types.md#contractoptions) } \| \{ `args`: [`ArgsOrCalldata`](namespaces/types.md#argsorcalldata) ; `options?`: `undefined` } + +#### Parameters + +| Name | Type | +| :----- | :--------------------------------------------------------------------------- | +| `args` | [`ArgsOrCalldataWithOptions`](namespaces/types.md#argsorcalldatawithoptions) | + +#### Returns + +\{ `args`: [`ArgsOrCalldata`](namespaces/types.md#argsorcalldata) ; `options`: [`ContractOptions`](namespaces/types.md#contractoptions) } \| \{ `args`: [`ArgsOrCalldata`](namespaces/types.md#argsorcalldata) ; `options?`: `undefined` } + +#### Defined in + +[src/contract/default.ts:40](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/contract/default.ts#L40) + +--- + +### fixStack + +▸ **fixStack**(`target`, `fn?`): `void` + +#### Parameters + +| Name | Type | Default value | +| :------- | :--------- | :------------------- | +| `target` | `Error` | `undefined` | +| `fn` | `Function` | `target.constructor` | + +#### Returns + +`void` + +#### Defined in + +[src/utils/errors/index.ts:7](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/errors/index.ts#L7) + +--- + +### fixProto + +▸ **fixProto**(`target`, `prototype`): `void` + +#### Parameters + +| Name | Type | +| :---------- | :------- | +| `target` | `Error` | +| `prototype` | `Object` | + +#### Returns + +`void` + +#### Defined in + +[src/utils/errors/index.ts:13](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/errors/index.ts#L13) + +--- + +### getLedgerPathBuffer111 + +▸ **getLedgerPathBuffer111**(`accountId`, `applicationName?`): `Uint8Array` + +Format the Ledger wallet path to an Uint8Array +for a Ledger Starknet DAPP v1.1.1. + +EIP2645 path = 2645'/starknet/application/0/accountId/0 + +#### Parameters + +| Name | Type | Default value | Description | +| :----------------- | :------- | :------------ | :------------------------------- | +| `accountId` | `number` | `undefined` | Id of account. < 2\*\*31. | +| `applicationName?` | `string` | `'LedgerW'` | utf8 string of application name. | + +#### Returns + +`Uint8Array` + +an Uint8array of 24 bytes. + +**`Example`** + +```typescript +const result = getLedgerPathBuffer111(0); +// result = Uint8Array(24) [ + 128, 0, 10, 85, 71, 65, 233, 201, + 43, 206, 231, 219, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +] +``` + +#### Defined in + +[src/signer/ledgerSigner111.ts:363](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner111.ts#L363) + +--- + +### getLedgerPathBuffer221 + +▸ **getLedgerPathBuffer221**(`accountId`, `applicationName?`): `Uint8Array` + +Format the Ledger wallet path to an Uint8Array. +for a Ledger Starknet DAPP v2.2.0 +EIP2645 path = 2645'/starknet'/application'/0'/accountId'/0 + +#### Parameters + +| Name | Type | Default value | Description | +| :----------------- | :------- | :------------ | :------------------------------- | +| `accountId` | `number` | `undefined` | Id of account. < 2\*\*31. | +| `applicationName?` | `string` | `'LedgerW'` | utf8 string of application name. | + +#### Returns + +`Uint8Array` + +an Uint8array of 24 bytes. + +**`Example`** + +```typescript +const result = getLedgerPathBuffer211(0); +// result = Uint8Array(24) [ + 128, 0, 10, 85, 199, 65, 233, 201, + 171, 206, 231, 219, 128, 0, 0, 0, + 128, 0, 0, 0, 0, 0, 0, 0 +] +``` + +#### Defined in + +[src/signer/ledgerSigner221.ts:640](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/signer/ledgerSigner221.ts#L640) + +--- + +### addAddressPadding + +▸ **addAddressPadding**(`address`): `string` + +Format a hex number to '0x' and 64 characters, adding leading zeros if necessary. + +#### Parameters + +| Name | Type | +| :-------- | :------------------------------------------------- | +| `address` | [`BigNumberish`](namespaces/types.md#bignumberish) | + +#### Returns + +`string` + +Hex string : 0x followed by 64 characters. No upper case characters in the response. + +**`Example`** + +```typescript +const address = '0x90591d9fa3efc87067d95a643f8455e0b8190eb8cb7bfd39e4fb7571fdf'; +const result = addAddressPadding(address); +// result = "0x0000090591d9fa3efc87067d95a643f8455e0b8190eb8cb7bfd39e4fb7571fdf" +``` + +#### Defined in + +[src/utils/address.ts:22](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/address.ts#L22) + +--- + +### validateAndParseAddress + +▸ **validateAndParseAddress**(`address`): `string` + +Check the validity of a Starknet address, and format it as a hex number : '0x' and 64 characters, adding leading zeros if necessary. + +#### Parameters + +| Name | Type | +| :-------- | :------------------------------------------------- | +| `address` | [`BigNumberish`](namespaces/types.md#bignumberish) | + +#### Returns + +`string` + +Hex string : 0x followed by 64 characters. No upper case characters in the response. + +**`Throws`** + +address argument must be a valid address inside the address range bound + +**`Example`** + +```typescript +const address = '0x90591d9fa3efc87067d95a643f8455e0b8190eb8cb7bfd39e4fb7571fdf'; +const result = validateAndParseAddress(address); +// result = "0x0000090591d9fa3efc87067d95a643f8455e0b8190eb8cb7bfd39e4fb7571fdf" +``` + +#### Defined in + +[src/utils/address.ts:41](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/address.ts#L41) + +--- + +### getChecksumAddress + +▸ **getChecksumAddress**(`address`): `string` + +Convert an address to her checksum representation which uses a specific pattern of uppercase and lowercase letters within +a given address to reduce the risk of errors introduced from typing an address or cut and paste issues. + +#### Parameters + +| Name | Type | +| :-------- | :------------------------------------------------- | +| `address` | [`BigNumberish`](namespaces/types.md#bignumberish) | + +#### Returns + +`string` + +Hex string : 0x followed by 64 characters. Mix of uppercase and lowercase + +**`Example`** + +```typescript +const address = '0x90591d9fa3efc87067d95a643f8455e0b8190eb8cb7bfd39e4fb7571fdf'; +const result = getChecksumAddress(address); +// result = "0x0000090591D9fA3EfC87067d95a643f8455E0b8190eb8Cb7bFd39e4fb7571fDF" +``` + +#### Defined in + +[src/utils/address.ts:66](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/address.ts#L66) + +--- + +### validateChecksumAddress + +▸ **validateChecksumAddress**(`address`): `boolean` + +If the casing of an address is mixed, it is a Checksum Address, which uses a specific pattern of uppercase and lowercase letters within +a given address to reduce the risk of errors introduced from typing an address or cut and paste issues. + +#### Parameters + +| Name | Type | Description | +| :-------- | :------- | :---------- | +| `address` | `string` | string | + +#### Returns + +`boolean` + +true if the ChecksumAddress is valid + +**`Example`** + +```typescript +const address = '0x0000090591D9fA3EfC87067d95a643f8455E0b8190eb8Cb7bFd39e4fb7571fDF'; +const result = validateChecksumAddress(address); +// result = true +``` + +#### Defined in + +[src/utils/address.ts:96](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/address.ts#L96) + +--- + +### parseCalldataField + +▸ **parseCalldataField**(`argsIterator`, `input`, `structs`, `enums`): `string` \| `string`[] + +Parse one field of the calldata by using input field from the abi for that method + +#### Parameters + +| Name | Type | Description | +| :------------- | :--------------------------------------------- | :------------------------------------------------------------------------ | +| `argsIterator` | `Iterator`<`any`, `any`, `undefined`\> | Iterator for value of the field | +| `input` | [`AbiEntry`](namespaces/types.md#abientry) | input(field) information from the abi that will be used to parse the data | +| `structs` | [`AbiStructs`](namespaces/types.md#abistructs) | structs from abi | +| `enums` | [`AbiEnums`](namespaces/types.md#abienums) | enums from abi | + +#### Returns + +`string` \| `string`[] + +- parsed arguments in format that contract is expecting + +**`Example`** + +```ts +const abiEntry = { name: 'test', type: 'struct' }; +const abiStructs: AbiStructs = { + struct: { + members: [ + { + name: 'test_name', + type: 'test_type', + offset: 1, + }, + ], + size: 2, + name: 'cairo__struct', + type: 'struct', + }, +}; + +const abiEnums: AbiEnums = { + enum: { + variants: [ + { + name: 'test_name', + type: 'cairo_struct_variant', + offset: 1, + }, + ], + size: 2, + name: 'test_cairo', + type: 'enum', + }, +}; + +const args = [{ test_name: 'test' }]; +const argsIterator = args[Symbol.iterator](); +const parsedField = parseCalldataField(argsIterator, abiEntry, abiStructs, abiEnums); +// parsedField === ['1952805748'] +``` + +#### Defined in + +[src/utils/calldata/requestParser.ts:352](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/requestParser.ts#L352) + +--- + +### isSierra + +▸ **isSierra**(`contract`): contract is CompiledSierra \| SierraContractClass + +Checks if a given contract is in Sierra (Safe Intermediate Representation) format. + +#### Parameters + +| Name | Type | Description | +| :--------- | :--------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------ | +| `contract` | `string` \| [`CairoContract`](namespaces/types.md#cairocontract) | The contract to check. Can be either a CairoContract object or a string representation of the contract. | + +#### Returns + +contract is CompiledSierra \| SierraContractClass + +- Returns true if the contract is a Sierra contract, otherwise false. + +**`Example`** + +```typescript +const result = isSierra(contract); +// result = true | false +``` + +#### Defined in + +[src/utils/contract.ts:26](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/contract.ts#L26) + +--- + +### extractContractHashes + +▸ **extractContractHashes**(`payload`): [`CompleteDeclareContractPayload`](namespaces/types.md#completedeclarecontractpayload) + +Extracts contract hashes from `DeclareContractPayload`. + +#### Parameters + +| Name | Type | Description | +| :-------- | :--------------------------------------------------------------------- | :------------------------------------------- | +| `payload` | [`DeclareContractPayload`](namespaces/types.md#declarecontractpayload) | The payload containing contract information. | + +#### Returns + +[`CompleteDeclareContractPayload`](namespaces/types.md#completedeclarecontractpayload) + +- The `CompleteDeclareContractPayload` with extracted contract hashes. + +**`Throws`** + +- If extraction of compiledClassHash or classHash fails. + +**`Example`** + +```typescript +const result = extractContractHashes(contract); +// result = { +// contract: ..., +// classHash: ..., +// casm: ..., +// compiledClassHash: ..., +// } +``` + +#### Defined in + +[src/utils/contract.ts:50](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/contract.ts#L50) + +--- + +### contractClassResponseToLegacyCompiledContract + +▸ **contractClassResponseToLegacyCompiledContract**(`ccr`): [`LegacyCompiledContract`](namespaces/types.md#legacycompiledcontract) + +Helper to redeclare response Cairo0 contract + +#### Parameters + +| Name | Type | +| :---- | :------------------------------------------------------------------- | +| `ccr` | [`ContractClassResponse`](namespaces/types.md#contractclassresponse) | + +#### Returns + +[`LegacyCompiledContract`](namespaces/types.md#legacycompiledcontract) + +#### Defined in + +[src/utils/contract.ts:75](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/contract.ts#L75) + +--- + +### units + +▸ **units**(`amount`, `simbol?`): `string` + +Convert strk to fri or fri to strk + +#### Parameters + +| Name | Type | Default value | +| :------- | :------------------- | :------------ | +| `amount` | `string` \| `bigint` | `undefined` | +| `simbol` | `"fri"` \| `"strk"` | `'fri'` | + +#### Returns + +`string` + +**`Example`** + +```typescript +units(1000n, 'fri'); // '0.000000000000001' strk +units('1', 'strk'); // '1000000000000000000' fri +``` + +#### Defined in + +[src/utils/units.ts:11](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/units.ts#L11) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/RPC06.md b/www/versioned_docs/version-6.24.1/API/namespaces/RPC06.md new file mode 100644 index 000000000..df3991a45 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/RPC06.md @@ -0,0 +1,11 @@ +--- +id: 'RPC06' +title: 'Namespace: RPC06' +sidebar_label: 'RPC06' +sidebar_position: 0 +custom_edit_url: null +--- + +## Classes + +- [RpcChannel](../classes/RPC06.RpcChannel.md) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/RPC07.md b/www/versioned_docs/version-6.24.1/API/namespaces/RPC07.md new file mode 100644 index 000000000..06da030d4 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/RPC07.md @@ -0,0 +1,11 @@ +--- +id: 'RPC07' +title: 'Namespace: RPC07' +sidebar_label: 'RPC07' +sidebar_position: 0 +custom_edit_url: null +--- + +## Classes + +- [RpcChannel](../classes/RPC07.RpcChannel.md) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/_category_.yml b/www/versioned_docs/version-6.24.1/API/namespaces/_category_.yml new file mode 100644 index 000000000..fdb625823 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/_category_.yml @@ -0,0 +1,2 @@ +label: 'Namespaces' +position: 1 diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/byteArray.md b/www/versioned_docs/version-6.24.1/API/namespaces/byteArray.md new file mode 100644 index 000000000..93a652595 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/byteArray.md @@ -0,0 +1,79 @@ +--- +id: 'byteArray' +title: 'Namespace: byteArray' +sidebar_label: 'byteArray' +sidebar_position: 0 +custom_edit_url: null +--- + +## Functions + +### stringFromByteArray + +▸ **stringFromByteArray**(`myByteArray`): `string` + +convert a Cairo ByteArray to a JS string + +#### Parameters + +| Name | Type | Description | +| :------------ | :-------------------------------- | :----------------------------------- | +| `myByteArray` | [`ByteArray`](types.md#bytearray) | Cairo representation of a LongString | + +#### Returns + +`string` + +a JS string + +**`Example`** + +```typescript +const myByteArray = { + data: [], + pending_word: '0x414243444546474849', + pending_word_len: 9, +}; +const result: String = stringFromByteArray(myByteArray); // ABCDEFGHI +``` + +#### Defined in + +[src/utils/calldata/byteArray.ts:19](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/byteArray.ts#L19) + +--- + +### byteArrayFromString + +▸ **byteArrayFromString**(`targetString`): [`ByteArray`](types.md#bytearray) + +convert a JS string to a Cairo ByteArray + +#### Parameters + +| Name | Type | Description | +| :------------- | :------- | :---------- | +| `targetString` | `string` | a JS string | + +#### Returns + +[`ByteArray`](types.md#bytearray) + +Cairo representation of a LongString + +**`Example`** + +```typescript +const myByteArray: ByteArray = byteArrayFromString('ABCDEFGHI'); +``` + +Result is : +{ +data: [], +pending_word: '0x414243444546474849', +pending_word_len: 9 +} + +#### Defined in + +[src/utils/calldata/byteArray.ts:48](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/byteArray.ts#L48) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/cairo.md b/www/versioned_docs/version-6.24.1/API/namespaces/cairo.md new file mode 100644 index 000000000..749cdff41 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/cairo.md @@ -0,0 +1,703 @@ +--- +id: 'cairo' +title: 'Namespace: cairo' +sidebar_label: 'cairo' +sidebar_position: 0 +custom_edit_url: null +--- + +## Functions + +### isCairo1Abi + +▸ **isCairo1Abi**(`abi`): `boolean` + +Test if an ABI comes from a Cairo 1 contract + +#### Parameters + +| Name | Type | Description | +| :---- | :-------------------- | :--------------------------------------------- | +| `abi` | [`Abi`](types.md#abi) | representing the interface of a Cairo contract | + +#### Returns + +`boolean` + +TRUE if it is an ABI from a Cairo1 contract + +**`Example`** + +```typescript +const isCairo1: boolean = isCairo1Abi(myAbi: Abi); +``` + +#### Defined in + +[src/utils/calldata/cairo.ts:179](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L179) + +--- + +### isTypeNonZero + +▸ **isTypeNonZero**(`type`): `boolean` + +Checks if the given type is a NonZero type. + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :----------------- | +| `type` | `string` | The type to check. | + +#### Returns + +`boolean` + +`true` if the type is NonZero type, `false` otherwise. + +**`Example`** + +```typescript +const result = cairo.isTypeNonZero('core::zeroable::NonZero::'); +//result = true +``` + +#### Defined in + +[src/utils/calldata/cairo.ts:198](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L198) + +--- + +### getAbiContractVersion + +▸ **getAbiContractVersion**(`abi`): [`ContractVersion`](types.md#contractversion) + +Return ContractVersion (Abi version) based on Abi +or undefined for unknown version + +#### Parameters + +| Name | Type | +| :---- | :-------------------- | +| `abi` | [`Abi`](types.md#abi) | + +#### Returns + +[`ContractVersion`](types.md#contractversion) + +string + +#### Defined in + +[src/utils/calldata/cairo.ts:208](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L208) + +--- + +### felt + +▸ **felt**(`it`): `string` + +Create felt Cairo type (cairo type helper) + +#### Parameters + +| Name | Type | +| :--- | :-------------------------------------- | +| `it` | [`BigNumberish`](types.md#bignumberish) | + +#### Returns + +`string` + +format: felt-string + +#### Defined in + +[src/utils/calldata/cairo.ts:277](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L277) + +--- + +### isLen + +▸ **isLen**(`name`): `boolean` + +Checks if the given name ends with "\_len". + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :---------------------- | +| `name` | `string` | The name to be checked. | + +#### Returns + +`boolean` + +- True if the name ends with "\_len", false otherwise. + +#### Defined in + +[src/utils/calldata/cairo.ts:25](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L25) + +--- + +### isTypeFelt + +▸ **isTypeFelt**(`type`): `boolean` + +Checks if a given type is felt. + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :----------------- | +| `type` | `string` | The type to check. | + +#### Returns + +`boolean` + +- True if the type is felt, false otherwise. + +#### Defined in + +[src/utils/calldata/cairo.ts:32](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L32) + +--- + +### isTypeArray + +▸ **isTypeArray**(`type`): `boolean` + +Checks if the given type is an array type. + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :----------------- | +| `type` | `string` | The type to check. | + +#### Returns + +`boolean` + +- `true` if the type is an array type, `false` otherwise. + +#### Defined in + +[src/utils/calldata/cairo.ts:39](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L39) + +--- + +### isTypeTuple + +▸ **isTypeTuple**(`type`): `boolean` + +Checks if the given type is a tuple type. + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :---------------------- | +| `type` | `string` | The type to be checked. | + +#### Returns + +`boolean` + +- `true` if the type is a tuple type, otherwise `false`. + +#### Defined in + +[src/utils/calldata/cairo.ts:50](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L50) + +--- + +### isTypeNamedTuple + +▸ **isTypeNamedTuple**(`type`): `boolean` + +Checks whether a given type is a named tuple. + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :---------------------- | +| `type` | `string` | The type to be checked. | + +#### Returns + +`boolean` + +- True if the type is a named tuple, false otherwise. + +#### Defined in + +[src/utils/calldata/cairo.ts:57](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L57) + +--- + +### isTypeStruct + +▸ **isTypeStruct**(`type`, `structs`): `boolean` + +Checks if a given type is a struct. + +#### Parameters + +| Name | Type | Description | +| :-------- | :---------------------------------- | :-------------------------------------- | +| `type` | `string` | The type to check for existence. | +| `structs` | [`AbiStructs`](types.md#abistructs) | The collection of structs to search in. | + +#### Returns + +`boolean` + +- True if the type exists in the structs, false otherwise. + +#### Defined in + +[src/utils/calldata/cairo.ts:65](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L65) + +--- + +### isTypeEnum + +▸ **isTypeEnum**(`type`, `enums`): `boolean` + +Checks if a given type is an enum. + +#### Parameters + +| Name | Type | Description | +| :------ | :------------------------------ | :---------------------------- | +| `type` | `string` | The type to check. | +| `enums` | [`AbiEnums`](types.md#abienums) | The enumeration to search in. | + +#### Returns + +`boolean` + +- True if the type exists in the enumeration, otherwise false. + +#### Defined in + +[src/utils/calldata/cairo.ts:73](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L73) + +--- + +### isTypeOption + +▸ **isTypeOption**(`type`): `boolean` + +Determines if the given type is an Option type. + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :----------------- | +| `type` | `string` | The type to check. | + +#### Returns + +`boolean` + +- True if the type is an Option type, false otherwise. + +#### Defined in + +[src/utils/calldata/cairo.ts:80](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L80) + +--- + +### isTypeResult + +▸ **isTypeResult**(`type`): `boolean` + +Checks whether a given type starts with 'core::result::Result::'. + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :----------------- | +| `type` | `string` | The type to check. | + +#### Returns + +`boolean` + +- True if the type starts with 'core::result::Result::', false otherwise. + +#### Defined in + +[src/utils/calldata/cairo.ts:87](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L87) + +--- + +### isTypeUint + +▸ **isTypeUint**(`type`): `boolean` + +Checks if the given value is a valid Uint type. + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :------------------ | +| `type` | `string` | The value to check. | + +#### Returns + +`boolean` + +- Returns true if the value is a valid Uint type, otherwise false. + +#### Defined in + +[src/utils/calldata/cairo.ts:94](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L94) + +--- + +### isTypeUint256 + +▸ **isTypeUint256**(`type`): `boolean` + +Checks if the given type is `uint256`. + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :---------------------- | +| `type` | `string` | The type to be checked. | + +#### Returns + +`boolean` + +- Returns true if the type is `uint256`, otherwise false. + +#### Defined in + +[src/utils/calldata/cairo.ts:102](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L102) + +--- + +### isTypeLiteral + +▸ **isTypeLiteral**(`type`): `boolean` + +Checks if the given type is a literal type. + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :----------------- | +| `type` | `string` | The type to check. | + +#### Returns + +`boolean` + +- True if the type is a literal type, false otherwise. + +#### Defined in + +[src/utils/calldata/cairo.ts:109](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L109) + +--- + +### isTypeBool + +▸ **isTypeBool**(`type`): `boolean` + +Checks if the given type is a boolean type. + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :---------------------- | +| `type` | `string` | The type to be checked. | + +#### Returns + +`boolean` + +- Returns true if the type is a boolean type, otherwise false. + +#### Defined in + +[src/utils/calldata/cairo.ts:116](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L116) + +--- + +### isTypeContractAddress + +▸ **isTypeContractAddress**(`type`): `boolean` + +Checks if the provided type is equal to 'core::starknet::contract_address::ContractAddress'. + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :---------------------- | +| `type` | `string` | The type to be checked. | + +#### Returns + +`boolean` + +- true if the type matches 'core::starknet::contract_address::ContractAddress', false otherwise. + +#### Defined in + +[src/utils/calldata/cairo.ts:122](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L122) + +--- + +### isTypeEthAddress + +▸ **isTypeEthAddress**(`type`): `boolean` + +Determines if the given type is an Ethereum address type. + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :----------------- | +| `type` | `string` | The type to check. | + +#### Returns + +`boolean` + +- Returns true if the given type is 'core::starknet::eth_address::EthAddress', otherwise false. + +#### Defined in + +[src/utils/calldata/cairo.ts:129](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L129) + +--- + +### isTypeBytes31 + +▸ **isTypeBytes31**(`type`): `boolean` + +Checks if the given type is 'core::bytes_31::bytes31'. + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :----------------- | +| `type` | `string` | The type to check. | + +#### Returns + +`boolean` + +- True if the type is 'core::bytes_31::bytes31', false otherwise. + +#### Defined in + +[src/utils/calldata/cairo.ts:136](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L136) + +--- + +### isTypeByteArray + +▸ **isTypeByteArray**(`type`): `boolean` + +Checks if the given type is equal to the 'core::byte_array::ByteArray'. + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :----------------- | +| `type` | `string` | The type to check. | + +#### Returns + +`boolean` + +- True if the given type is equal to 'core::byte_array::ByteArray', false otherwise. + +#### Defined in + +[src/utils/calldata/cairo.ts:143](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L143) + +--- + +### isTypeU96 + +▸ **isTypeU96**(`type`): `boolean` + +Checks if the given type is equal to the u96 type + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :----------------- | +| `type` | `string` | The type to check. | + +#### Returns + +`boolean` + +- True if the given type is equal to u96, false otherwise. + +#### Defined in + +[src/utils/calldata/cairo.ts:151](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L151) + +--- + +### isTypeSecp256k1Point + +▸ **isTypeSecp256k1Point**(`type`): `boolean` + +#### Parameters + +| Name | Type | +| :----- | :------- | +| `type` | `string` | + +#### Returns + +`boolean` + +#### Defined in + +[src/utils/calldata/cairo.ts:154](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L154) + +--- + +### isCairo1Type + +▸ **isCairo1Type**(`type`): `boolean` + +#### Parameters + +| Name | Type | +| :----- | :------- | +| `type` | `string` | + +#### Returns + +`boolean` + +#### Defined in + +[src/utils/calldata/cairo.ts:156](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L156) + +--- + +### getArrayType + +▸ **getArrayType**(`type`): `string` + +Retrieves the array type from the given type string. + +Works also for core::zeroable::NonZero type. + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :--------------- | +| `type` | `string` | The type string. | + +#### Returns + +`string` + +- The array type. + +#### Defined in + +[src/utils/calldata/cairo.ts:164](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L164) + +--- + +### uint256 + +▸ **uint256**(`it`): [`Uint256`](../interfaces/types.Uint256.md) + +Create Uint256 Cairo type (helper for common struct type) + +#### Parameters + +| Name | Type | +| :--- | :-------------------------------------- | +| `it` | [`BigNumberish`](types.md#bignumberish) | + +#### Returns + +[`Uint256`](../interfaces/types.Uint256.md) + +**`Example`** + +```typescript +uint256('892349863487563453485768723498'); +``` + +#### Defined in + +[src/utils/calldata/cairo.ts:245](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L245) + +--- + +### uint512 + +▸ **uint512**(`it`): [`Uint512`](../interfaces/types.Uint512.md) + +Create Uint512 Cairo type (helper for common struct type) + +#### Parameters + +| Name | Type | Description | +| :--- | :-------------------------------------- | :-------------------------------------------------------- | +| `it` | [`BigNumberish`](types.md#bignumberish) | BigNumberish representation of a 512 bits unsigned number | + +#### Returns + +[`Uint512`](../interfaces/types.Uint512.md) + +Uint512 struct + +**`Example`** + +```typescript +uint512('345745685892349863487563453485768723498'); +``` + +#### Defined in + +[src/utils/calldata/cairo.ts:258](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L258) + +--- + +### tuple + +▸ **tuple**(`...args`): `Record`<`number`, `boolean` \| `object` \| [`BigNumberish`](types.md#bignumberish)\> + +Create unnamed tuple Cairo type (helper same as common struct type) + +#### Parameters + +| Name | Type | +| :-------- | :------------------------------------------------------------------- | +| `...args` | (`boolean` \| `object` \| [`BigNumberish`](types.md#bignumberish))[] | + +#### Returns + +`Record`<`number`, `boolean` \| `object` \| [`BigNumberish`](types.md#bignumberish)\> + +**`Example`** + +```typescript +tuple(1, '0x101', 16); +``` + +#### Defined in + +[src/utils/calldata/cairo.ts:269](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/calldata/cairo.ts#L269) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/constants.md b/www/versioned_docs/version-6.24.1/API/namespaces/constants.md new file mode 100644 index 000000000..01ecdb2da --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/constants.md @@ -0,0 +1,294 @@ +--- +id: 'constants' +title: 'Namespace: constants' +sidebar_label: 'constants' +sidebar_position: 0 +custom_edit_url: null +--- + +Utils + +## Enumerations + +- [BaseUrl](../enums/constants.BaseUrl.md) +- [NetworkName](../enums/constants.NetworkName.md) +- [StarknetChainId](../enums/constants.StarknetChainId.md) +- [TransactionHashPrefix](../enums/constants.TransactionHashPrefix.md) +- [FeeMarginPercentage](../enums/constants.FeeMarginPercentage.md) + +## References + +### TRANSACTION_VERSION + +Renames and re-exports [ETransactionVersion](types.RPC.RPCSPEC07.API.md#etransactionversion-1) + +## Variables + +### IS_BROWSER + +• `Const` **IS_BROWSER**: `boolean` + +#### Defined in + +[src/utils/encode.ts:3](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/encode.ts#L3) + +--- + +### TEXT_TO_FELT_MAX_LEN + +• `Const` **TEXT_TO_FELT_MAX_LEN**: `31` + +Cairo Felt support storing max 31 character + +#### Defined in + +[src/global/constants.ts:9](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L9) + +--- + +### ZERO + +• `Const` **ZERO**: `0n` + +#### Defined in + +[src/global/constants.ts:18](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L18) + +--- + +### MASK_250 + +• `Const` **MASK_250**: `bigint` + +#### Defined in + +[src/global/constants.ts:19](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L19) + +--- + +### MASK_31 + +• `Const` **MASK_31**: `bigint` + +#### Defined in + +[src/global/constants.ts:20](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L20) + +--- + +### API_VERSION + +• `Const` **API_VERSION**: `0n` + +#### Defined in + +[src/global/constants.ts:21](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L21) + +--- + +### PRIME + +• `Const` **PRIME**: `bigint` + +#### Defined in + +[src/global/constants.ts:22](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L22) + +--- + +### MAX_STORAGE_ITEM_SIZE + +• `Const` **MAX_STORAGE_ITEM_SIZE**: `256n` + +#### Defined in + +[src/global/constants.ts:25](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L25) + +--- + +### ADDR_BOUND + +• `Const` **ADDR_BOUND**: `bigint` + +#### Defined in + +[src/global/constants.ts:26](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L26) + +--- + +### RANGE_FELT + +• `Const` **RANGE_FELT**: `Object` + +#### Type declaration + +| Name | Type | +| :---- | :------- | +| `min` | `bigint` | +| `max` | `bigint` | + +#### Defined in + +[src/global/constants.ts:30](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L30) + +--- + +### RANGE_I128 + +• `Const` **RANGE_I128**: `Object` + +#### Type declaration + +| Name | Type | +| :---- | :------- | +| `min` | `bigint` | +| `max` | `bigint` | + +#### Defined in + +[src/global/constants.ts:31](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L31) + +--- + +### RANGE_U128 + +• `Const` **RANGE_U128**: `Object` + +#### Type declaration + +| Name | Type | +| :---- | :------- | +| `min` | `bigint` | +| `max` | `bigint` | + +#### Defined in + +[src/global/constants.ts:32](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L32) + +--- + +### UDC + +• `Const` **UDC**: `Object` + +#### Type declaration + +| Name | Type | +| :----------- | :--------------------------------------------------------------------- | +| `ADDRESS` | `"0x041a78e741e5af2fec34b695679bc6891742439f7afb8484ecd7766661ad02bf"` | +| `ENTRYPOINT` | `"deployContract"` | + +#### Defined in + +[src/global/constants.ts:63](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L63) + +--- + +### RPC_DEFAULT_VERSION + +• `Const` **RPC_DEFAULT_VERSION**: `"v0_7"` + +#### Defined in + +[src/global/constants.ts:68](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L68) + +--- + +### RPC_NODES + +• `Const` **RPC_NODES**: `Object` + +#### Type declaration + +| Name | Type | +| :----------- | :---------------------------------------------------------------------------------------------------------------------------- | +| `SN_MAIN` | readonly [``"https://starknet-mainnet.public.blastapi.io/rpc/v0_7"``, ``"https://free-rpc.nethermind.io/mainnet-juno/v0_7"``] | +| `SN_SEPOLIA` | readonly [``"https://starknet-sepolia.public.blastapi.io/rpc/v0_7"``, ``"https://free-rpc.nethermind.io/sepolia-juno/v0_7"``] | + +#### Defined in + +[src/global/constants.ts:70](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L70) + +--- + +### OutsideExecutionCallerAny + +• `Const` **OutsideExecutionCallerAny**: `"0x414e595f43414c4c4552"` + +#### Defined in + +[src/global/constants.ts:81](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L81) + +--- + +### SNIP9_V1_INTERFACE_ID + +• `Const` **SNIP9_V1_INTERFACE_ID**: `"0x68cfd18b92d1907b8ba3cc324900277f5a3622099431ea85dd8089255e4181"` + +#### Defined in + +[src/global/constants.ts:82](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L82) + +--- + +### SNIP9_V2_INTERFACE_ID + +• `Const` **SNIP9_V2_INTERFACE_ID**: `"0x1d1144bb2138366ff28d8e9ab57456b1d332ac42196230c3a602003c89872"` + +#### Defined in + +[src/global/constants.ts:84](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L84) + +--- + +### HARDENING_BYTE + +• `Const` **HARDENING_BYTE**: `128` + +#### Defined in + +[src/global/constants.ts:89](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L89) + +--- + +### HARDENING_4BYTES + +• `Const` **HARDENING_4BYTES**: `2147483648n` + +#### Defined in + +[src/global/constants.ts:91](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L91) + +--- + +### DEFAULT_GLOBAL_CONFIG + +• `Const` **DEFAULT_GLOBAL_CONFIG**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :------------------------------------------------------------------------------------------- | +| `legacyMode` | `boolean` | +| `logLevel` | [`LogLevel`](../modules.md#loglevel) | +| `accountTxVersion` | typeof [`V2`](types.RPC.RPCSPEC07.API.md#v2) \| typeof [`V3`](types.RPC.RPCSPEC07.API.md#v3) | + +#### Defined in + +[src/global/constants.ts:94](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L94) + +--- + +### SYSTEM_MESSAGES + +• `Const` **SYSTEM_MESSAGES**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------------- | :------- | +| `legacyTxWarningMessage` | `string` | + +#### Defined in + +[src/global/constants.ts:105](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/global/constants.ts#L105) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/ec.md b/www/versioned_docs/version-6.24.1/API/namespaces/ec.md new file mode 100644 index 000000000..c06a61efe --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/ec.md @@ -0,0 +1,12 @@ +--- +id: 'ec' +title: 'Namespace: ec' +sidebar_label: 'ec' +sidebar_position: 0 +custom_edit_url: null +--- + +## Namespaces + +- [starkCurve](ec.starkCurve.md) +- [weierstrass](ec.weierstrass.md) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/ec.starkCurve.md b/www/versioned_docs/version-6.24.1/API/namespaces/ec.starkCurve.md new file mode 100644 index 000000000..574ae94f9 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/ec.starkCurve.md @@ -0,0 +1,557 @@ +--- +id: 'ec.starkCurve' +title: 'Namespace: starkCurve' +sidebar_label: 'starkCurve' +custom_edit_url: null +--- + +[ec](ec.md).starkCurve + +## Namespaces + +- [poseidonSmall](ec.starkCurve.poseidonSmall.md) + +## Type Aliases + +### ProjectivePoint + +Ƭ **ProjectivePoint**: [`ProjPointType`](../interfaces/ec.weierstrass.ProjPointType.md)<`bigint`\> + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:6 + +node_modules/@scure/starknet/lib/esm/index.d.ts:46 + +--- + +### PoseidonOpts + +Ƭ **PoseidonOpts**: `Object` + +#### Type declaration + +| Name | Type | +| :-------------- | :------------------ | +| `Fp` | `IField`<`bigint`\> | +| `rate` | `number` | +| `capacity` | `number` | +| `roundsFull` | `number` | +| `roundsPartial` | `number` | + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:63 + +--- + +### PoseidonFn + +Ƭ **PoseidonFn**: `ReturnType` & \{ `m`: `number` ; `rate`: `number` ; `capacity`: `number` } + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:70 + +## Variables + +### MAX_VALUE + +• `Const` **MAX_VALUE**: `bigint` + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:7 + +--- + +### \_starkCurve + +• `Const` **\_starkCurve**: [`weierstrass`](ec.weierstrass.md) + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:8 + +--- + +### CURVE + +• `Const` **CURVE**: `Readonly`<\{ `nBitLength`: `number` ; `nByteLength`: `number` ; `Fp`: `IField`<`bigint`\> ; `n`: `bigint` ; `h`: `bigint` ; `hEff?`: `bigint` ; `Gx`: `bigint` ; `Gy`: `bigint` ; `allowInfinityPoint?`: `boolean` ; `a`: `bigint` ; `b`: `bigint` ; `allowedPrivateKeyLengths?`: readonly `number`[] ; `wrapPrivateKey?`: `boolean` ; `endo?`: \{ `beta`: `bigint` ; `splitScalar`: (`k`: `bigint`) => \{ `k1neg`: `boolean` ; `k1`: `bigint` ; `k2neg`: `boolean` ; `k2`: `bigint` } } ; `isTorsionFree?`: (`c`: [`weierstrass`](ec.weierstrass.md), `point`: [`ProjPointType`](../interfaces/ec.weierstrass.ProjPointType.md)<`bigint`\>) => `boolean` ; `clearCofactor?`: (`c`: [`weierstrass`](ec.weierstrass.md), `point`: [`ProjPointType`](../interfaces/ec.weierstrass.ProjPointType.md)<`bigint`\>) => [`ProjPointType`](../interfaces/ec.weierstrass.ProjPointType.md)<`bigint`\> ; `hash`: `u.CHash` ; `hmac`: (`key`: `Uint8Array`, ...`messages`: `Uint8Array`[]) => `Uint8Array` ; `randomBytes`: (`bytesLength?`: `number`) => `Uint8Array` ; `lowS`: `boolean` ; `bits2int?`: (`bytes`: `Uint8Array`) => `bigint` ; `bits2int_modN?`: (`bytes`: `Uint8Array`) => `bigint` ; `p`: `bigint` }\> + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:14 + +--- + +### ProjectivePoint + +• **ProjectivePoint**: [`ProjConstructor`](../interfaces/ec.weierstrass.ProjConstructor.md)<`bigint`\> + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:6 + +node_modules/@scure/starknet/lib/esm/index.d.ts:46 + +--- + +### Signature + +• `Const` **Signature**: [`weierstrass`](ec.weierstrass.md) + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:46 + +--- + +### utils + +• `Const` **utils**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `normPrivateKeyToScalar` | (`key`: `u.PrivKey`) => `bigint` | +| `randomPrivateKey` | () => `Uint8Array` | +| `precompute` | (`windowSize?`: `number`, `point?`: [`ProjPointType`](../interfaces/ec.weierstrass.ProjPointType.md)<`bigint`\>) => [`ProjPointType`](../interfaces/ec.weierstrass.ProjPointType.md)<`bigint`\> | +| `isValidPrivateKey` | (`privateKey`: `PrivKey`) => `boolean` | + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:46 + +--- + +### Fp251 + +• `Const` **Fp251**: `Readonly`<`IField`<`bigint`\> & `Required`<`Pick`<`IField`<`bigint`\>, `"isOdd"`\>\>\> + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:61 + +## Functions + +### normalizePrivateKey + +▸ **normalizePrivateKey**(`privKey`): `string` + +#### Parameters + +| Name | Type | +| :-------- | :---- | +| `privKey` | `Hex` | + +#### Returns + +`string` + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:9 + +--- + +### getPublicKey + +▸ **getPublicKey**(`privKey`, `isCompressed?`): `Uint8Array` + +#### Parameters + +| Name | Type | +| :-------------- | :-------- | +| `privKey` | `Hex` | +| `isCompressed?` | `boolean` | + +#### Returns + +`Uint8Array` + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:10 + +--- + +### getSharedSecret + +▸ **getSharedSecret**(`privKeyA`, `pubKeyB`): `Uint8Array` + +#### Parameters + +| Name | Type | +| :--------- | :---- | +| `privKeyA` | `Hex` | +| `pubKeyB` | `Hex` | + +#### Returns + +`Uint8Array` + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:11 + +--- + +### sign + +▸ **sign**(`msgHash`, `privKey`, `opts?`): [`SignatureType`](../interfaces/ec.weierstrass.SignatureType.md) + +#### Parameters + +| Name | Type | +| :-------- | :---- | +| `msgHash` | `Hex` | +| `privKey` | `Hex` | +| `opts?` | `any` | + +#### Returns + +[`SignatureType`](../interfaces/ec.weierstrass.SignatureType.md) + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:12 + +--- + +### verify + +▸ **verify**(`signature`, `msgHash`, `pubKey`): `boolean` + +#### Parameters + +| Name | Type | +| :---------- | :------------------------------------------------------------------------ | +| `signature` | `Hex` \| [`SignatureType`](../interfaces/ec.weierstrass.SignatureType.md) | +| `msgHash` | `Hex` | +| `pubKey` | `Hex` | + +#### Returns + +`boolean` + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:13 + +--- + +### grindKey + +▸ **grindKey**(`seed`): `string` + +#### Parameters + +| Name | Type | +| :----- | :---- | +| `seed` | `Hex` | + +#### Returns + +`string` + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:53 + +--- + +### getStarkKey + +▸ **getStarkKey**(`privateKey`): `string` + +#### Parameters + +| Name | Type | +| :----------- | :---- | +| `privateKey` | `Hex` | + +#### Returns + +`string` + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:54 + +--- + +### ethSigToPrivate + +▸ **ethSigToPrivate**(`signature`): `string` + +#### Parameters + +| Name | Type | +| :---------- | :------- | +| `signature` | `string` | + +#### Returns + +`string` + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:55 + +--- + +### getAccountPath + +▸ **getAccountPath**(`layer`, `application`, `ethereumAddress`, `index`): `string` + +#### Parameters + +| Name | Type | +| :---------------- | :------- | +| `layer` | `string` | +| `application` | `string` | +| `ethereumAddress` | `string` | +| `index` | `number` | + +#### Returns + +`string` + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:56 + +--- + +### pedersen + +▸ **pedersen**(`x`, `y`): `string` + +#### Parameters + +| Name | Type | +| :--- | :------------ | +| `x` | `PedersenArg` | +| `y` | `PedersenArg` | + +#### Returns + +`string` + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:58 + +--- + +### \_poseidonMDS + +▸ **\_poseidonMDS**(`Fp`, `name`, `m`, `attempt?`): `bigint`[][] + +#### Parameters + +| Name | Type | +| :--------- | :------------------ | +| `Fp` | `IField`<`bigint`\> | +| `name` | `string` | +| `m` | `number` | +| `attempt?` | `number` | + +#### Returns + +`bigint`[][] + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:62 + +--- + +### poseidonBasic + +▸ **poseidonBasic**(`opts`, `mds`): [`PoseidonFn`](ec.starkCurve.md#poseidonfn) + +#### Parameters + +| Name | Type | +| :----- | :---------------------------------------------- | +| `opts` | [`PoseidonOpts`](ec.starkCurve.md#poseidonopts) | +| `mds` | `bigint`[][] | + +#### Returns + +[`PoseidonFn`](ec.starkCurve.md#poseidonfn) + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:75 + +--- + +### poseidonCreate + +▸ **poseidonCreate**(`opts`, `mdsAttempt?`): [`PoseidonFn`](ec.starkCurve.md#poseidonfn) + +#### Parameters + +| Name | Type | +| :------------ | :---------------------------------------------- | +| `opts` | [`PoseidonOpts`](ec.starkCurve.md#poseidonopts) | +| `mdsAttempt?` | `number` | + +#### Returns + +[`PoseidonFn`](ec.starkCurve.md#poseidonfn) + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:76 + +--- + +### poseidonHash + +▸ **poseidonHash**(`x`, `y`, `fn?`): `bigint` + +#### Parameters + +| Name | Type | +| :---- | :------------------------------------------ | +| `x` | `bigint` | +| `y` | `bigint` | +| `fn?` | [`PoseidonFn`](ec.starkCurve.md#poseidonfn) | + +#### Returns + +`bigint` + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:78 + +--- + +### poseidonHashFunc + +▸ **poseidonHashFunc**(`x`, `y`, `fn?`): `Uint8Array` + +#### Parameters + +| Name | Type | +| :---- | :------------------------------------------ | +| `x` | `Uint8Array` | +| `y` | `Uint8Array` | +| `fn?` | [`PoseidonFn`](ec.starkCurve.md#poseidonfn) | + +#### Returns + +`Uint8Array` + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:79 + +--- + +### poseidonHashSingle + +▸ **poseidonHashSingle**(`x`, `fn?`): `bigint` + +#### Parameters + +| Name | Type | +| :---- | :------------------------------------------ | +| `x` | `bigint` | +| `fn?` | [`PoseidonFn`](ec.starkCurve.md#poseidonfn) | + +#### Returns + +`bigint` + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:80 + +--- + +### poseidonHashMany + +▸ **poseidonHashMany**(`values`, `fn?`): `bigint` + +#### Parameters + +| Name | Type | +| :------- | :------------------------------------------ | +| `values` | `bigint`[] | +| `fn?` | [`PoseidonFn`](ec.starkCurve.md#poseidonfn) | + +#### Returns + +`bigint` + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:81 + +--- + +### computeHashOnElements + +▸ **computeHashOnElements**(`data`, `fn?`): `PedersenArg` + +#### Parameters + +| Name | Type | +| :----- | :--------------------------------------------------- | +| `data` | `PedersenArg`[] | +| `fn?` | (`x`: `PedersenArg`, `y`: `PedersenArg`) => `string` | + +#### Returns + +`PedersenArg` + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:59 + +--- + +### keccak + +▸ **keccak**(`data`): `bigint` + +#### Parameters + +| Name | Type | +| :----- | :----------- | +| `data` | `Uint8Array` | + +#### Returns + +`bigint` + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:60 + +--- + +### poseidonSmall + +▸ **poseidonSmall**(`values`): `bigint`[] + +#### Parameters + +| Name | Type | +| :------- | :--------- | +| `values` | `bigint`[] | + +#### Returns + +`bigint`[] + +#### Defined in + +node_modules/@noble/curves/esm/abstract/poseidon.d.ts:27 diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/ec.starkCurve.poseidonSmall.md b/www/versioned_docs/version-6.24.1/API/namespaces/ec.starkCurve.poseidonSmall.md new file mode 100644 index 000000000..344c960c5 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/ec.starkCurve.poseidonSmall.md @@ -0,0 +1,48 @@ +--- +id: 'ec.starkCurve.poseidonSmall' +title: 'Namespace: poseidonSmall' +sidebar_label: 'poseidonSmall' +custom_edit_url: null +--- + +[ec](ec.md).[starkCurve](ec.starkCurve.md).poseidonSmall + +## Variables + +### roundConstants + +• **roundConstants**: `bigint`[][] + +#### Defined in + +node_modules/@noble/curves/esm/abstract/poseidon.d.ts:28 + +--- + +### m + +• **m**: `number` + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:71 + +--- + +### rate + +• **rate**: `number` + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:72 + +--- + +### capacity + +• **capacity**: `number` + +#### Defined in + +node_modules/@scure/starknet/lib/esm/index.d.ts:73 diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/ec.weierstrass.md b/www/versioned_docs/version-6.24.1/API/namespaces/ec.weierstrass.md new file mode 100644 index 000000000..097a3b98b --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/ec.weierstrass.md @@ -0,0 +1,399 @@ +--- +id: 'ec.weierstrass' +title: 'Namespace: weierstrass' +sidebar_label: 'weierstrass' +custom_edit_url: null +--- + +[ec](ec.md).weierstrass + +## Interfaces + +- [ProjPointType](../interfaces/ec.weierstrass.ProjPointType.md) +- [ProjConstructor](../interfaces/ec.weierstrass.ProjConstructor.md) +- [SignatureType](../interfaces/ec.weierstrass.SignatureType.md) + +## Type Aliases + +### AffinePoint + +Ƭ **AffinePoint**<`T`\>: \{ `x`: `T` ; `y`: `T` } & \{ `z?`: `never` ; `t?`: `never` } + +#### Type parameters + +| Name | +| :--- | +| `T` | + +#### Defined in + +node_modules/@noble/curves/esm/abstract/curve.d.ts:3 + +--- + +### BasicWCurve + +Ƭ **BasicWCurve**<`T`\>: `BasicCurve`<`T`\> & \{ `a`: `T` ; `b`: `T` ; `allowedPrivateKeyLengths?`: readonly `number`[] ; `wrapPrivateKey?`: `boolean` ; `endo?`: `EndomorphismOpts` ; `isTorsionFree?`: (`c`: [`ProjConstructor`](../interfaces/ec.weierstrass.ProjConstructor.md)<`T`\>, `point`: [`ProjPointType`](../interfaces/ec.weierstrass.ProjPointType.md)<`T`\>) => `boolean` ; `clearCofactor?`: (`c`: [`ProjConstructor`](../interfaces/ec.weierstrass.ProjConstructor.md)<`T`\>, `point`: [`ProjPointType`](../interfaces/ec.weierstrass.ProjPointType.md)<`T`\>) => [`ProjPointType`](../interfaces/ec.weierstrass.ProjPointType.md)<`T`\> } + +#### Type parameters + +| Name | +| :--- | +| `T` | + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:16 + +--- + +### SignOpts + +Ƭ **SignOpts**: `Object` + +#### Type declaration + +| Name | Type | +| :-------------- | :-------- | +| `lowS?` | `boolean` | +| `extraEntropy?` | `Entropy` | +| `prehash?` | `boolean` | + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:26 + +--- + +### VerOpts + +Ƭ **VerOpts**: `Object` + +#### Type declaration + +| Name | Type | +| :--------- | :--------------------- | +| `lowS?` | `boolean` | +| `prehash?` | `boolean` | +| `format?` | `"compact"` \| `"der"` | + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:31 + +--- + +### CurvePointsType + +Ƭ **CurvePointsType**<`T`\>: [`BasicWCurve`](ec.weierstrass.md#basicwcurve)<`T`\> & \{ `fromBytes?`: (`bytes`: `Uint8Array`) => [`AffinePoint`](ec.weierstrass.md#affinepoint)<`T`\> ; `toBytes?`: (`c`: [`ProjConstructor`](../interfaces/ec.weierstrass.ProjConstructor.md)<`T`\>, `point`: [`ProjPointType`](../interfaces/ec.weierstrass.ProjPointType.md)<`T`\>, `isCompressed`: `boolean`) => `Uint8Array` } + +#### Type parameters + +| Name | +| :--- | +| `T` | + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:83 + +--- + +### CurvePointsRes + +Ƭ **CurvePointsRes**<`T`\>: `Object` + +#### Type parameters + +| Name | +| :--- | +| `T` | + +#### Type declaration + +| Name | Type | +| :----------------------- | :------------------------------------------------------------------------- | +| `CURVE` | `ReturnType` | +| `ProjectivePoint` | [`ProjConstructor`](../interfaces/ec.weierstrass.ProjConstructor.md)<`T`\> | +| `normPrivateKeyToScalar` | (`key`: `PrivKey`) => `bigint` | +| `weierstrassEquation` | (`x`: `T`) => `T` | +| `isWithinCurveOrder` | (`num`: `bigint`) => `boolean` | + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:108 + +--- + +### RecoveredSignatureType + +Ƭ **RecoveredSignatureType**: [`SignatureType`](../interfaces/ec.weierstrass.SignatureType.md) & \{ `recovery`: `number` } + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:165 + +--- + +### SignatureConstructor + +Ƭ **SignatureConstructor**: `Object` + +#### Call signature + +• **new SignatureConstructor**(`r`, `s`): [`SignatureType`](../interfaces/ec.weierstrass.SignatureType.md) + +##### Parameters + +| Name | Type | +| :--- | :------- | +| `r` | `bigint` | +| `s` | `bigint` | + +##### Returns + +[`SignatureType`](../interfaces/ec.weierstrass.SignatureType.md) + +#### Type declaration + +| Name | Type | +| :------------ | :--------------------------------------------------------------------------------- | +| `fromCompact` | (`hex`: `Hex`) => [`SignatureType`](../interfaces/ec.weierstrass.SignatureType.md) | +| `fromDER` | (`hex`: `Hex`) => [`SignatureType`](../interfaces/ec.weierstrass.SignatureType.md) | + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:168 + +--- + +### PubKey + +Ƭ **PubKey**: `Hex` \| [`ProjPointType`](../interfaces/ec.weierstrass.ProjPointType.md)<`bigint`\> + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:177 + +--- + +### CurveType + +Ƭ **CurveType**: [`BasicWCurve`](ec.weierstrass.md#basicwcurve)<`bigint`\> & \{ `hash`: `CHash` ; `hmac`: `HmacFnSync` ; `randomBytes`: (`bytesLength?`: `number`) => `Uint8Array` ; `lowS?`: `boolean` ; `bits2int?`: (`bytes`: `Uint8Array`) => `bigint` ; `bits2int_modN?`: (`bytes`: `Uint8Array`) => `bigint` } + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:178 + +--- + +### CurveFn + +Ƭ **CurveFn**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `CURVE` | `ReturnType` | +| `getPublicKey` | (`privateKey`: `PrivKey`, `isCompressed?`: `boolean`) => `Uint8Array` | +| `getSharedSecret` | (`privateA`: `PrivKey`, `publicB`: `Hex`, `isCompressed?`: `boolean`) => `Uint8Array` | +| `sign` | (`msgHash`: `Hex`, `privKey`: `PrivKey`, `opts?`: [`SignOpts`](ec.weierstrass.md#signopts)) => [`RecoveredSignatureType`](ec.weierstrass.md#recoveredsignaturetype) | +| `verify` | (`signature`: `Hex` \| `SignatureLike`, `msgHash`: `Hex`, `publicKey`: `Hex`, `opts?`: [`VerOpts`](ec.weierstrass.md#veropts)) => `boolean` | +| `ProjectivePoint` | [`ProjConstructor`](../interfaces/ec.weierstrass.ProjConstructor.md)<`bigint`\> | +| `Signature` | [`SignatureConstructor`](ec.weierstrass.md#signatureconstructor) | +| `utils` | \{ `normPrivateKeyToScalar`: (`key`: `PrivKey`) => `bigint` ; `randomPrivateKey`: () => `Uint8Array` ; `precompute`: (`windowSize?`: `number`, `point?`: [`ProjPointType`](../interfaces/ec.weierstrass.ProjPointType.md)<`bigint`\>) => [`ProjPointType`](../interfaces/ec.weierstrass.ProjPointType.md)<`bigint`\> ; `isValidPrivateKey`: (`privateKey`: `PrivKey`) => `boolean` } | +| `utils.normPrivateKeyToScalar` | (`key`: `PrivKey`) => `bigint` | +| `utils.randomPrivateKey` | () => `Uint8Array` | +| `utils.precompute` | (`windowSize?`: `number`, `point?`: [`ProjPointType`](../interfaces/ec.weierstrass.ProjPointType.md)<`bigint`\>) => [`ProjPointType`](../interfaces/ec.weierstrass.ProjPointType.md)<`bigint`\> | +| `utils.isValidPrivateKey` | [object Object] | + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:211 + +## Variables + +### DER + +• `Const` **DER**: `Object` + +ASN.1 DER encoding utilities. ASN is very complex & fragile. Format: + + [0x30 (SEQUENCE), bytelength, 0x02 (INTEGER), intLength, R, 0x02 (INTEGER), intLength, S] + +Docs: https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/, https://luca.ntop.org/Teaching/Appunti/asn1.html + +#### Type declaration + +| Name | Type | +| :------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Err` | (`m?`: `string`) => \{ `name`: `string` ; `message`: `string` ; `stack?`: `string` } | +| `_tlv` | \{ `encode`: (`tag`: `number`, `data`: `string`) => `string` ; `decode`: (`tag`: `number`, `data`: `Uint8Array`) => \{ `v`: `Uint8Array` ; `l`: `Uint8Array` } } | +| `_tlv.encode` | (`tag`: `number`, `data`: `string`) => `string` | +| `_tlv.decode` | [object Object] | +| `_int` | \{ `encode`: (`num`: `bigint`) => `string` ; `decode`: (`data`: `Uint8Array`) => `bigint` } | +| `_int.encode` | [object Object] | +| `_int.decode` | [object Object] | +| `toSig` | (`hex`: `string` \| `Uint8Array`) => \{ `r`: `bigint` ; `s`: `bigint` } | +| `hexFromSig` | (`sig`: \{ `r`: `bigint` ; `s`: `bigint` }) => `string` | + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:122 + +## Functions + +### weierstrassPoints + +▸ **weierstrassPoints**<`T`\>(`opts`): [`CurvePointsRes`](ec.weierstrass.md#curvepointsres)<`T`\> + +#### Type parameters + +| Name | +| :--- | +| `T` | + +#### Parameters + +| Name | Type | +| :----- | :----------------------------------------------------------- | +| `opts` | [`CurvePointsType`](ec.weierstrass.md#curvepointstype)<`T`\> | + +#### Returns + +[`CurvePointsRes`](ec.weierstrass.md#curvepointsres)<`T`\> + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:150 + +--- + +### weierstrass + +▸ **weierstrass**(`curveDef`): [`CurveFn`](ec.weierstrass.md#curvefn) + +Creates short weierstrass curve and ECDSA signature methods for it. + +#### Parameters + +| Name | Type | +| :--------- | :----------------------------------------- | +| `curveDef` | [`CurveType`](ec.weierstrass.md#curvetype) | + +#### Returns + +[`CurveFn`](ec.weierstrass.md#curvefn) + +**`Example`** + +```ts +import { Field } from '@noble/curves/abstract/modular'; +// Before that, define BigInt-s: a, b, p, n, Gx, Gy +const curve = weierstrass({ a, b, Fp: Field(p), n, Gx, Gy, h: 1n }); +``` + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:233 + +--- + +### SWUFpSqrtRatio + +▸ **SWUFpSqrtRatio**<`T`\>(`Fp`, `Z`): (`u`: `T`, `v`: `T`) => \{ `isValid`: `boolean` ; `value`: `T` } + +Implementation of the Shallue and van de Woestijne method for any weierstrass curve. +TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular. +b = True and y = sqrt(u / v) if (u / v) is square in F, and +b = False and y = sqrt(Z \* (u / v)) otherwise. + +#### Type parameters + +| Name | +| :--- | +| `T` | + +#### Parameters + +| Name | Type | +| :--- | :------------- | +| `Fp` | `IField`<`T`\> | +| `Z` | `T` | + +#### Returns + +`fn` + +▸ (`u`, `v`): `Object` + +##### Parameters + +| Name | Type | +| :--- | :--- | +| `u` | `T` | +| `v` | `T` | + +##### Returns + +`Object` + +| Name | Type | +| :-------- | :-------- | +| `isValid` | `boolean` | +| `value` | `T` | + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:243 + +--- + +### mapToCurveSimpleSWU + +▸ **mapToCurveSimpleSWU**<`T`\>(`Fp`, `opts`): (`u`: `T`) => \{ `x`: `T` ; `y`: `T` } + +Simplified Shallue-van de Woestijne-Ulas Method +https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2 + +#### Type parameters + +| Name | +| :--- | +| `T` | + +#### Parameters + +| Name | Type | +| :------- | :------------- | +| `Fp` | `IField`<`T`\> | +| `opts` | `Object` | +| `opts.A` | `T` | +| `opts.B` | `T` | +| `opts.Z` | `T` | + +#### Returns + +`fn` + +▸ (`u`): `Object` + +##### Parameters + +| Name | Type | +| :--- | :--- | +| `u` | `T` | + +##### Returns + +`Object` + +| Name | Type | +| :--- | :--- | +| `x` | `T` | +| `y` | `T` | + +#### Defined in + +node_modules/@noble/curves/esm/abstract/weierstrass.d.ts:251 diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/encode.md b/www/versioned_docs/version-6.24.1/API/namespaces/encode.md new file mode 100644 index 000000000..8fd7a3966 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/encode.md @@ -0,0 +1,486 @@ +--- +id: 'encode' +title: 'Namespace: encode' +sidebar_label: 'encode' +sidebar_position: 0 +custom_edit_url: null +--- + +## References + +### IS_BROWSER + +Re-exports [IS_BROWSER](constants.md#is_browser) + +## Functions + +### arrayBufferToString + +▸ **arrayBufferToString**(`array`): `string` + +Convert array buffer to string + +_[internal usage]_ + +#### Parameters + +| Name | Type | Description | +| :------ | :------------ | :------------------------------------ | +| `array` | `ArrayBuffer` | The ArrayBuffer to convert to string. | + +#### Returns + +`string` + +The converted string. + +**`Example`** + +```typescript +const buffer = new ArrayBuffer(5); +const view = new Uint8Array(buffer); +[72, 101, 108, 108, 111].forEach((x, idx) => (view[idx] = x)); +const result = encode.arrayBufferToString(buffer); +// result = "Hello" +``` + +#### Defined in + +[src/utils/encode.ts:29](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/encode.ts#L29) + +--- + +### utf8ToArray + +▸ **utf8ToArray**(`str`): `Uint8Array` + +Convert utf8-string to Uint8Array + +_[internal usage]_ + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :--------------------------- | +| `str` | `string` | The UTF-8 string to convert. | + +#### Returns + +`Uint8Array` + +The encoded Uint8Array. + +**`Example`** + +```typescript +const myString = 'Hi'; +const result = encode.utf8ToArray(myString); +// result = Uint8Array(2) [ 72, 105 ] +``` + +#### Defined in + +[src/utils/encode.ts:48](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/encode.ts#L48) + +--- + +### stringToArrayBuffer + +▸ **stringToArrayBuffer**(`str`): `Uint8Array` + +Convert utf8-string to Uint8Array + +#### Parameters + +| Name | Type | +| :---- | :------- | +| `str` | `string` | + +#### Returns + +`Uint8Array` + +**`Deprecated`** + +equivalent to 'utf8ToArray', alias will be removed + +#### Defined in + +[src/utils/encode.ts:57](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/encode.ts#L57) + +--- + +### atobUniversal + +▸ **atobUniversal**(`a`): `Uint8Array` + +Convert string to array buffer (browser and node compatible) + +#### Parameters + +| Name | Type | Description | +| :--- | :------- | :------------------------------------ | +| `a` | `string` | The Base64 encoded string to convert. | + +#### Returns + +`Uint8Array` + +The decoded Uint8Array. + +**`Example`** + +```typescript +const base64String = 'SGVsbG8='; // 'Hello' in Base64 +const result = encode.atobUniversal(base64String); +// result = Uint8Array(5) [ 72, 101, 108, 108, 111 ] +``` + +#### Defined in + +[src/utils/encode.ts:74](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/encode.ts#L74) + +--- + +### btoaUniversal + +▸ **btoaUniversal**(`b`): `string` + +Convert array buffer to string (browser and node compatible) + +#### Parameters + +| Name | Type | Description | +| :--- | :------------ | :---------------- | +| `b` | `ArrayBuffer` | The Array buffer. | + +#### Returns + +`string` + +The Base64 encoded string. + +**`Example`** + +```typescript +const buffer = new Uint8Array([72, 101, 108, 108, 111]); // Array with ASCII values for 'Hello' +const result = encode.btoaUniversal(buffer); +// result = "SGVsbG8=" +``` + +#### Defined in + +[src/utils/encode.ts:91](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/encode.ts#L91) + +--- + +### buf2hex + +▸ **buf2hex**(`buffer`): `string` + +Convert array buffer to hex-string + +#### Parameters + +| Name | Type | Description | +| :------- | :----------- | :---------------------- | +| `buffer` | `Uint8Array` | The encoded Uint8Array. | + +#### Returns + +`string` + +The hex-string + +**`Example`** + +```typescript +const buffer = new Uint8Array([72, 101, 108, 108, 111]); // Array with ASCII values for 'Hello' +const result = encode.buf2hex(buffer); +// result = "48656c6c6f" +``` + +#### Defined in + +[src/utils/encode.ts:108](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/encode.ts#L108) + +--- + +### removeHexPrefix + +▸ **removeHexPrefix**(`hex`): `string` + +Remove hex prefix '0x' from hex-string + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :---------- | +| `hex` | `string` | hex-string | + +#### Returns + +`string` + +The hex-string + +**`Example`** + +```typescript +const hexStringWithPrefix = '0x48656c6c6f'; +const result = encode.removeHexPrefix(hexStringWithPrefix); +// result: "48656c6c6f" +``` + +#### Defined in + +[src/utils/encode.ts:124](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/encode.ts#L124) + +--- + +### addHexPrefix + +▸ **addHexPrefix**(`hex`): `string` + +Add hex prefix '0x' to base16-string + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :------------ | +| `hex` | `string` | base16-string | + +#### Returns + +`string` + +The hex-string + +**`Example`** + +```typescript +const plainHexString = '48656c6c6f'; +const result = encode.addHexPrefix(plainHexString); +// result: "0x48656c6c6f" +``` + +#### Defined in + +[src/utils/encode.ts:140](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/encode.ts#L140) + +--- + +### padLeft + +▸ **padLeft**(`str`, `length`, `padding?`): `string` + +Prepend string (default with '0') + +Pads a string to a certain length with a specific string. +The padding can be applied only to the left of the input string. + +#### Parameters + +| Name | Type | Default value | Description | +| :--------- | :------- | :------------ | :---------------------------------------------- | +| `str` | `string` | `undefined` | The string to pad. | +| `length` | `number` | `undefined` | The target length for the padded string. | +| `padding?` | `string` | `STRING_ZERO` | The string to use for padding. Defaults to '0'. | + +#### Returns + +`string` + +The padded string. + +**`Example`** + +```typescript +const myString = '1A3F'; +const result = encode.padLeft(myString, 10); +// result: '0000001A3F' +``` + +#### Defined in + +[src/utils/encode.ts:197](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/encode.ts#L197) + +--- + +### calcByteLength + +▸ **calcByteLength**(`str`, `byteSize?`): `number` + +Calculate byte length of string + +_[no internal usage]_ + +Calculates the byte length of a string based on a specified byte size. +The function rounds up the byte count to the nearest multiple of the specified byte size. + +#### Parameters + +| Name | Type | Default value | Description | +| :---------- | :------- | :------------ | :-------------------------------------------------------- | +| `str` | `string` | `undefined` | The string whose byte length is to be calculated. | +| `byteSize?` | `number` | `8` | The size of the byte block to round up to. Defaults to 8. | + +#### Returns + +`number` + +The calculated byte length, rounded to the nearest multiple of byteSize. + +**`Example`** + +```typescript +const myString = 'Hello'; +const result = encode.calcByteLength(myString, 4); +// result = 8 (rounded up to the nearest multiple of 4) +``` + +#### Defined in + +[src/utils/encode.ts:221](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/encode.ts#L221) + +--- + +### sanitizeBytes + +▸ **sanitizeBytes**(`str`, `byteSize?`, `padding?`): `string` + +Prepend '0' to string bytes + +_[no internal usage]_ + +- Prepends padding to the left of a string to ensure it matches a specific byte length. + The function uses a specified padding character and rounds up the string length to the nearest multiple of `byteSize`. + +#### Parameters + +| Name | Type | Default value | Description | +| :---------- | :------- | :------------ | :---------------------------------------------------------------------------------- | +| `str` | `string` | `undefined` | The string to be padded. | +| `byteSize?` | `number` | `8` | The byte block size to which the string length should be rounded up. Defaults to 8. | +| `padding?` | `string` | `STRING_ZERO` | The character to use for padding. Defaults to '0'. | + +#### Returns + +`string` + +The padded string. + +**`Example`** + +```typescript +const myString = '123'; +const result = encode.sanitizeBytes(myString); +// result: '00000123' (padded to 8 characters) +``` + +#### Defined in + +[src/utils/encode.ts:248](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/encode.ts#L248) + +--- + +### sanitizeHex + +▸ **sanitizeHex**(`hex`): `string` + +Sanitizes a hex-string by removing any existing '0x' prefix, padding the string with '0' to ensure it has even length, +and then re-adding the '0x' prefix. + +_[no internal usage]_ + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :---------- | +| `hex` | `string` | hex-string | + +#### Returns + +`string` + +format: hex-string + +**`Example`** + +```typescript +const unevenHex = '0x23abc'; +const result = encode.sanitizeHex(unevenHex); +// result = '0x023abc' (padded to ensure even length) +``` + +#### Defined in + +[src/utils/encode.ts:271](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/encode.ts#L271) + +--- + +### concatenateArrayBuffer + +▸ **concatenateArrayBuffer**(`uint8arrays`): `Uint8Array` + +Combine multiple Uint8Arrays into one. +Useful for wallet path creation. + +#### Parameters + +| Name | Type | Description | +| :------------ | :------------- | :---------------------- | +| `uint8arrays` | `Uint8Array`[] | An array of Uint8Array. | + +#### Returns + +`Uint8Array` + +all the Uint8Arrays joined. + +**`Example`** + +```typescript +const path0buff = new Uint8Array([128, 0, 10, 85]); +const path1buff = new Uint8Array([71, 65, 233, 201]); +const result = encode.concatenateArrayBuffer([path0buff, path1buff]); +// result = Uint8Array(8) [128, 0, 10, 85, 71, 65, 233, 201] +``` + +#### Defined in + +[src/utils/encode.ts:313](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/encode.ts#L313) + +--- + +### pascalToSnake + +▸ **pascalToSnake**(`text`): `string` + +String transformation util + +Pascal case to screaming snake case + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :-------------------------------- | +| `text` | `string` | The PascalCase string to convert. | + +#### Returns + +`string` + +The converted snake_case string in uppercase. + +**`Example`** + +```typescript +const pascalString = 'PascalCaseExample'; +const result = encode.pascalToSnake(pascalString); +// result: 'PASCAL_CASE_EXAMPLE' +``` + +#### Defined in + +[src/utils/encode.ts:292](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/encode.ts#L292) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/eth.md b/www/versioned_docs/version-6.24.1/API/namespaces/eth.md new file mode 100644 index 000000000..26235dd77 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/eth.md @@ -0,0 +1,63 @@ +--- +id: 'eth' +title: 'Namespace: eth' +sidebar_label: 'eth' +sidebar_position: 0 +custom_edit_url: null +--- + +## Functions + +### ethRandomPrivateKey + +▸ **ethRandomPrivateKey**(): `string` + +Get random Ethereum private Key. + +#### Returns + +`string` + +an Hex string + +**`Example`** + +```typescript +const myPK: string = randomAddress(); +// result = "0xf04e69ac152fba37c02929c2ae78c9a481461dda42dbc6c6e286be6eb2a8ab83" +``` + +#### Defined in + +[src/utils/eth.ts:18](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/eth.ts#L18) + +--- + +### validateAndParseEthAddress + +▸ **validateAndParseEthAddress**(`address`): `string` + +Get a string formatted for an Ethereum address, without uppercase characters. + +#### Parameters + +| Name | Type | Description | +| :-------- | :-------------------------------------- | :------------------------------ | +| `address` | [`BigNumberish`](types.md#bignumberish) | Address of an Ethereum account. | + +#### Returns + +`string` + +an Hex string coded on 20 bytes + +**`Example`** + +```typescript +const myEthAddress: string = validateAndParseEthAddress('0x8359E4B0152ed5A731162D3c7B0D8D56edB165'); +// result = "0x008359e4b0152ed5a731162d3c7b0d8d56edb165" +``` + +#### Defined in + +[src/utils/eth.ts:32](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/eth.ts#L32) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/events.md b/www/versioned_docs/version-6.24.1/API/namespaces/events.md new file mode 100644 index 000000000..f9b42d4a0 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/events.md @@ -0,0 +1,146 @@ +--- +id: 'events' +title: 'Namespace: events' +sidebar_label: 'events' +sidebar_position: 0 +custom_edit_url: null +--- + +## Functions + +### isAbiEvent + +▸ **isAbiEvent**(`object`): `boolean` + +Check if an ABI entry is related to events. + +#### Parameters + +| Name | Type | Description | +| :------- | :------------------------------ | :----------- | +| `object` | [`AbiEntry`](types.md#abientry) | an Abi entry | + +#### Returns + +`boolean` + +true if this Abi Entry is related to an event + +**`Example`** + +```typescript +// use of a transaction receipt +``` + +#### Defined in + +[src/utils/events/index.ts:36](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/events/index.ts#L36) + +--- + +### getAbiEvents + +▸ **getAbiEvents**(`abi`): [`AbiEvents`](types.md#abievents) + +Retrieves the events from the given ABI (from Cairo 0 or Cairo 1 contract). + +Is able to handle Cairo 1 events nested in Cairo components. + +#### Parameters + +| Name | Type | Description | +| :---- | :-------------------- | :------------------------------ | +| `abi` | [`Abi`](types.md#abi) | The ABI to extract events from. | + +#### Returns + +[`AbiEvents`](types.md#abievents) + +- An object containing the hashes and the definition of the events. + +**`Example`** + +```typescript +const result = events.getAbiEvents(abi); +// result = { +// '0x22ea134d4126804c60797e633195f8c9aa5fd6d1567e299f4961d0e96f373ee': +// { '0x34e55c1cd55f1338241b50d352f0e91c7e4ffad0e4271d64eb347589ebdfd16': { +// kind: 'struct', type: 'event', +// name: 'ka::ExComponent::ex_logic_component::Mint', +// members: [{ +// name: 'spender', +// type: 'core::starknet::contract_address::ContractAddress', +// kind: 'key'}, +// { name: 'value', type: 'core::integer::u256', kind: 'data' }]}, +// ... +``` + +#### Defined in + +[src/utils/events/index.ts:154](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/events/index.ts#L154) + +--- + +### parseEvents + +▸ **parseEvents**(`providerReceivedEvents`, `abiEvents`, `abiStructs`, `abiEnums`): [`ParsedEvents`](types.md#parsedevents) + +Parse raw events and structure them into response object based on a contract structs and defined events + +#### Parameters + +| Name | Type | Description | +| :----------------------- | :----------------------------------------------------------------- | :------------------------- | +| `providerReceivedEvents` | [`EMITTED_EVENT`](types.RPC.RPCSPEC07.API.SPEC.md#emitted_event)[] | Array of raw events | +| `abiEvents` | [`AbiEvents`](types.md#abievents) | Events defined in the abi | +| `abiStructs` | [`AbiStructs`](types.md#abistructs) | Structs defined in the abi | +| `abiEnums` | [`AbiEnums`](types.md#abienums) | Enums defined in the abi | + +#### Returns + +[`ParsedEvents`](types.md#parsedevents) + +parsed events corresponding to the abi + +**`Example`** + +```typescript +const abiEvents = events.getAbiEvents(sierra.abi); +const abiStructs = CallData.getAbiStruct(sierra.abi); +const abiEnums = CallData.getAbiEnum(sierra.abi); +const result = events.parseEvents(myEvents, abiEvents, abiStructs, abiEnums); +// result = [{test::ExCh::ex_ch::Trade: { + maker: 7548613724711489396448209137n, + taker: 6435850562375218974960297344n, + router_maker: 0n, + }}] +``` + +#### Defined in + +[src/utils/events/index.ts:196](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/events/index.ts#L196) + +--- + +### parseUDCEvent + +▸ **parseUDCEvent**(`txReceipt`): [`DeployContractUDCResponse`](types.md#deploycontractudcresponse) + +Parse Transaction Receipt Event from UDC invoke transaction and +create DeployContractResponse compatible response with addition of the UDC Event data + +#### Parameters + +| Name | Type | +| :---------- | :------------------------------------------------------------------------------ | +| `txReceipt` | [`InvokeTransactionReceiptResponse`](types.md#invoketransactionreceiptresponse) | + +#### Returns + +[`DeployContractUDCResponse`](types.md#deploycontractudcresponse) + +parsed UDC event data + +#### Defined in + +[src/utils/events/index.ts:263](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/events/index.ts#L263) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/hash.md b/www/versioned_docs/version-6.24.1/API/namespaces/hash.md new file mode 100644 index 000000000..04ac924c1 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/hash.md @@ -0,0 +1,725 @@ +--- +id: 'hash' +title: 'Namespace: hash' +sidebar_label: 'hash' +sidebar_position: 0 +custom_edit_url: null +--- + +## Namespaces + +- [poseidon](hash.poseidon.md) + +## Functions + +### keccakBn + +▸ **keccakBn**(`value`): `string` + +Calculate the hex-string Starknet Keccak hash for a given BigNumberish + +#### Parameters + +| Name | Type | Description | +| :------ | :-------------------------------------- | :------------ | +| `value` | [`BigNumberish`](types.md#bignumberish) | value to hash | + +#### Returns + +`string` + +hex-string Keccak hash + +**`Example`** + +```typescript +const result = keccakBn('0xabc'); +// result = '0x11cf08aac85935e32397f410e48217a127b6855d41b1e3877eb4179c0904b77' +``` + +#### Defined in + +[src/utils/hash/selector.ts:21](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/selector.ts#L21) + +--- + +### starknetKeccak + +▸ **starknetKeccak**(`str`): `bigint` + +Calculate the BigInt Starknet Keccak hash for a given string +[Reference](https://github.com/starkware-libs/cairo-lang/blob/master/src/starkware/starknet/public/abi.py#L38) + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :------------ | +| `str` | `string` | value to hash | + +#### Returns + +`bigint` + +BigInt Keccak hash + +**`Example`** + +```typescript +const result = starknetKeccak('test').toString(); +// result = '61835310290161785288773114225739080147441215596947647498723774891619563096' +``` + +#### Defined in + +[src/utils/hash/selector.ts:50](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/selector.ts#L50) + +--- + +### getSelectorFromName + +▸ **getSelectorFromName**(`funcName`): `string` + +Calculate the hex-string selector for a given abi function name +[Reference](https://github.com/starkware-libs/cairo-lang/blob/master/src/starkware/starknet/public/abi.py#L46) + +#### Parameters + +| Name | Type | Description | +| :--------- | :------- | :---------------- | +| `funcName` | `string` | abi function name | + +#### Returns + +`string` + +hex-string selector + +**`Example`** + +```typescript +const result = getSelectorFromName('myFunction'); +// result = '0xc14cfe23f3fa7ce7b1f8db7d7682305b1692293f71a61cc06637f0d8d8b6c8' +``` + +#### Defined in + +[src/utils/hash/selector.ts:68](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/selector.ts#L68) + +--- + +### getSelector + +▸ **getSelector**(`value`): `string` + +Calculate the hex-string selector from a given abi function name or of any representation of number. + +#### Parameters + +| Name | Type | Description | +| :------ | :-------------------------------------- | :----------------------------------------------------------- | +| `value` | [`BigNumberish`](types.md#bignumberish) | ascii-string \| hex-string \| dec-string \| number \| BigInt | + +#### Returns + +`string` + +hex-string selector + +**`Example`** + +```typescript +const selector1: string = getSelector('myFunction'); +// selector1 = "0xc14cfe23f3fa7ce7b1f8db7d7682305b1692293f71a61cc06637f0d8d8b6c8" + +const selector2: string = getSelector('0x123abc'); +// selector2 = "0x123abc" + +const selector3: string = getSelector('123456'); +// selector3 = "0x1e240" + +const selector4: string = getSelector(123456n); +// selector4 = "0x1e240" +``` + +#### Defined in + +[src/utils/hash/selector.ts:93](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/selector.ts#L93) + +--- + +### solidityUint256PackedKeccak256 + +▸ **solidityUint256PackedKeccak256**(`params`): `string` + +Solidity hash of an array of uint256 + +#### Parameters + +| Name | Type | Description | +| :------- | :---------------------------------------- | :-------------------------- | +| `params` | [`BigNumberish`](types.md#bignumberish)[] | an array of uint256 numbers | + +#### Returns + +`string` + +the hash of the array of Solidity uint256 + +**`Example`** + +```typescript +const result = hash.solidityUint256PackedKeccak256(['0x100', '200', 300, 400n]); +// result = '0xd1e6cb422b65269603c491b0c85463295edabebfb2a6844e4fdc389ff1dcdd97' +``` + +#### Defined in + +[src/utils/hash/selector.ts:110](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/selector.ts#L110) + +--- + +### getL2MessageHash + +▸ **getL2MessageHash**(`l1FromAddress`, `l2ToAddress`, `l2Selector`, `l2Calldata`, `l1Nonce`): `string` + +Calculate the L2 message hash related by a message L1->L2 + +#### Parameters + +| Name | Type | Description | +| :-------------- | :---------------------------------------- | :--------------------------------------------------------------------------- | +| `l1FromAddress` | [`BigNumberish`](types.md#bignumberish) | L1 account address that paid the message. | +| `l2ToAddress` | [`BigNumberish`](types.md#bignumberish) | L2 contract address to execute. | +| `l2Selector` | [`BigNumberish`](types.md#bignumberish) | can be a function name ("bridge_withdraw") or a number (BigNumberish). | +| `l2Calldata` | [`BigNumberish`](types.md#bignumberish)[] | an array of BigNumberish of the raw parameters passed to the above function. | +| `l1Nonce` | [`BigNumberish`](types.md#bignumberish) | The nonce of the L1 account. | + +#### Returns + +`string` + +hex-string of the L2 transaction hash + +**`Example`** + +```typescript +const l1FromAddress = '0x0000000000000000000000008453fc6cd1bcfe8d4dfc069c400b433054d47bdc'; +const l2ToAddress = 2158142789748719025684046545159279785659305214176670733242887773692203401023n; +const l2Selector = 774397379524139446221206168840917193112228400237242521560346153613428128537n; +const payload = [ + 4543560n, + 829565602143178078434185452406102222830667255948n, + 3461886633118033953192540141609307739580461579986333346825796013261542798665n, + 9000000000000000n, + 0n, +]; +const l1Nonce = 8288n; +const result = hash.getL2MessageHash(l1FromAddress, l2ToAddress, l2Selector, payload, l1Nonce); +// result = "0x2e350fa9d830482605cb68be4fdb9f0cb3e1f95a0c51623ac1a5d1bd997c2090" +``` + +#### Defined in + +[src/utils/hash/selector.ts:145](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/selector.ts#L145) + +--- + +### calculateInvokeTransactionHash + +▸ **calculateInvokeTransactionHash**(`args`): `string` + +#### Parameters + +| Name | Type | +| :----- | :--------------------- | +| `args` | `CalcInvokeTxHashArgs` | + +#### Returns + +`string` + +#### Defined in + +[src/utils/hash/transactionHash/index.ts:61](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/transactionHash/index.ts#L61) + +--- + +### calculateDeclareTransactionHash + +▸ **calculateDeclareTransactionHash**(`args`): `string` + +#### Parameters + +| Name | Type | +| :----- | :---------------------- | +| `args` | `CalcDeclareTxHashArgs` | + +#### Returns + +`string` + +#### Defined in + +[src/utils/hash/transactionHash/index.ts:121](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/transactionHash/index.ts#L121) + +--- + +### calculateDeployAccountTransactionHash + +▸ **calculateDeployAccountTransactionHash**(`args`): `string` + +#### Parameters + +| Name | Type | +| :----- | :---------------------------- | +| `args` | `CalcDeployAccountTxHashArgs` | + +#### Returns + +`string` + +#### Defined in + +[src/utils/hash/transactionHash/index.ts:188](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/transactionHash/index.ts#L188) + +--- + +### calculateL2MessageTxHash + +▸ **calculateL2MessageTxHash**(`l1FromAddress`, `l2ToAddress`, `l2Selector`, `l2Calldata`, `l2ChainId`, `l1Nonce`): `string` + +Calculate the L2 transaction hash generated by a message L1->L2 + +#### Parameters + +| Name | Type | Description | +| :-------------- | :--------------------------------------------------------- | :--------------------------------------------------------------------------- | +| `l1FromAddress` | [`BigNumberish`](types.md#bignumberish) | L1 account address that paid the message. | +| `l2ToAddress` | [`BigNumberish`](types.md#bignumberish) | L2 contract address to execute. | +| `l2Selector` | [`BigNumberish`](types.md#bignumberish) | can be a function name ("bridge_withdraw") or a number (BigNumberish). | +| `l2Calldata` | [`RawCalldata`](types.md#rawcalldata) | an array of BigNumberish of the raw parameters passed to the above function. | +| `l2ChainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | L2 chain ID : from constants.StarknetChainId.xxx | +| `l1Nonce` | [`BigNumberish`](types.md#bignumberish) | The nonce of the L1 account. | + +#### Returns + +`string` + +hex-string of the L2 transaction hash + +**`Example`** + +```typescript +const l1FromAddress = '0x0000000000000000000000008453fc6cd1bcfe8d4dfc069c400b433054d47bdc'; +const l2ToAddress = 2158142789748719025684046545159279785659305214176670733242887773692203401023n; +const l2Selector = 774397379524139446221206168840917193112228400237242521560346153613428128537n; +const payload = [ + 4543560n, + 829565602143178078434185452406102222830667255948n, + 3461886633118033953192540141609307739580461579986333346825796013261542798665n, + 9000000000000000n, + 0n, +]; +const l1Nonce = 8288n; +const result = hash.calculateL2MessageTxHash( + l1FromAddress, + l2ToAddress, + l2Selector, + payload, + constants.StarknetChainId.SN_SEPOLIA, + l1Nonce +); +// result = "0x67d959200d65d4ad293aa4b0da21bb050a1f669bce37d215c6edbf041269c07" +``` + +#### Defined in + +[src/utils/hash/transactionHash/v2.ts:158](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/transactionHash/v2.ts#L158) + +--- + +### computePedersenHash + +▸ **computePedersenHash**(`a`, `b`): `string` + +#### Parameters + +| Name | Type | +| :--- | :-------------------------------------- | +| `a` | [`BigNumberish`](types.md#bignumberish) | +| `b` | [`BigNumberish`](types.md#bignumberish) | + +#### Returns + +`string` + +#### Defined in + +[src/utils/hash/classHash.ts:28](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/classHash.ts#L28) + +--- + +### computePoseidonHash + +▸ **computePoseidonHash**(`a`, `b`): `string` + +#### Parameters + +| Name | Type | +| :--- | :-------------------------------------- | +| `a` | [`BigNumberish`](types.md#bignumberish) | +| `b` | [`BigNumberish`](types.md#bignumberish) | + +#### Returns + +`string` + +#### Defined in + +[src/utils/hash/classHash.ts:32](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/classHash.ts#L32) + +--- + +### computeHashOnElements + +▸ **computeHashOnElements**(`data`): `string` + +Compute Pedersen hash from data + +#### Parameters + +| Name | Type | Description | +| :----- | :---------------------------------------- | :---------------------------------------- | +| `data` | [`BigNumberish`](types.md#bignumberish)[] | Array of data to compute Pedersen hash on | + +#### Returns + +`string` + +hex-string of Pedersen hash + +**`Example`** + +```typescript +const result = hash.computeHashOnElements(['0xabc', '0x123', '0xabc123']); +// result = 0x148141e8f7db29d005a0187669a56f0790d7e8c2c5b2d780e4d8b9e436a5521 +``` + +#### Defined in + +[src/utils/hash/classHash.ts:48](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/classHash.ts#L48) + +--- + +### computePoseidonHashOnElements + +▸ **computePoseidonHashOnElements**(`data`): `string` + +#### Parameters + +| Name | Type | +| :----- | :---------------------------------------- | +| `data` | [`BigNumberish`](types.md#bignumberish)[] | + +#### Returns + +`string` + +#### Defined in + +[src/utils/hash/classHash.ts:56](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/classHash.ts#L56) + +--- + +### calculateContractAddressFromHash + +▸ **calculateContractAddressFromHash**(`salt`, `classHash`, `constructorCalldata`, `deployerAddress`): `string` + +Calculate contract address from class hash + +#### Parameters + +| Name | Type | Description | +| :-------------------- | :-------------------------------------- | :--------------------------------------------- | +| `salt` | [`BigNumberish`](types.md#bignumberish) | Salt to be used for hashing | +| `classHash` | [`BigNumberish`](types.md#bignumberish) | Class hash of contract to generate address for | +| `constructorCalldata` | [`RawArgs`](types.md#rawargs) | Call data for contract constructor | +| `deployerAddress` | [`BigNumberish`](types.md#bignumberish) | Address of contract deployer | + +#### Returns + +`string` + +hex-string + +**`Example`** + +```typescript +const result = hash.calculateContractAddressFromHash( + 1234, + 0x1cf4fe5d37868d25524cdacb89518d88bf217a9240a1e6fde71cc22c429e0e3, + [1234, true, false], + 0x052fb1a9ab0db3c4f81d70fea6a2f6e55f57c709a46089b25eeec0e959db3695 +); +// result = 0x5fb03d3a88d8e474976932f927ff6a9e332e06ed36642ea3e8c7e38bf010f76 +``` + +#### Defined in + +[src/utils/hash/classHash.ts:74](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/classHash.ts#L74) + +--- + +### formatSpaces + +▸ **formatSpaces**(`json`): `string` + +Format json-string without spaces to conform starknet json-string + +#### Parameters + +| Name | Type | Description | +| :----- | :------- | :------------------------- | +| `json` | `string` | json-string without spaces | + +#### Returns + +`string` + +json-string with additional spaces after `:` and `,` + +**`Example`** + +```typescript +const result = hash.formatSpaces("{'onchain':true,'isStarknet':true}"); +// result = "{'onchain': true, 'isStarknet': true}" +``` + +#### Defined in + +[src/utils/hash/classHash.ts:117](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/classHash.ts#L117) + +--- + +### computeHintedClassHash + +▸ **computeHintedClassHash**(`compiledContract`): `string` + +Compute hinted class hash for legacy compiled contract (Cairo 0) + +#### Parameters + +| Name | Type | +| :----------------- | :---------------------------------------------------------- | +| `compiledContract` | [`LegacyCompiledContract`](types.md#legacycompiledcontract) | + +#### Returns + +`string` + +hex-string + +**`Example`** + +```typescript +const compiledCairo0 = json.parse(fs.readFileSync('./cairo0contract.json').toString('ascii')); +const result = hash.computeHintedClassHash(compiledCairo0); +// result = "0x293eabb06955c0a1e55557014675aa4e7a1fd69896147382b29b2b6b166a2ac" +``` + +#### Defined in + +[src/utils/hash/classHash.ts:145](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/classHash.ts#L145) + +--- + +### computeLegacyContractClassHash + +▸ **computeLegacyContractClassHash**(`contract`): `string` + +Computes the class hash for legacy compiled contract (Cairo 0) + +#### Parameters + +| Name | Type | Description | +| :--------- | :---------------------------------------------------------------------- | :------------------------------- | +| `contract` | `string` \| [`LegacyCompiledContract`](types.md#legacycompiledcontract) | legacy compiled contract content | + +#### Returns + +`string` + +hex-string of class hash + +**`Example`** + +```typescript +const compiledCairo0 = json.parse(fs.readFileSync('./cairo0contract.json').toString('ascii')); +const result = hash.computeLegacyContractClassHash(compiledCairo0); +// result = "0x4a5cae61fa8312b0a3d0c44658b403d3e4197be80027fd5020ffcdf0c803331" +``` + +#### Defined in + +[src/utils/hash/classHash.ts:163](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/classHash.ts#L163) + +--- + +### hashByteCodeSegments + +▸ **hashByteCodeSegments**(`casm`): `bigint` + +Compute hash of the bytecode for Sierra v1.5.0 onwards (Cairo 2.6.0) +Each segment is Poseidon hashed. +The global hash is : 1 + PoseidonHash(len0, h0, len1, h1, ...) + +#### Parameters + +| Name | Type | Description | +| :----- | :---------------------------------------- | :--------------------------------- | +| `casm` | [`CairoAssembly`](types.md#cairoassembly) | compiled Sierra CASM file content. | + +#### Returns + +`bigint` + +the bytecode hash as bigint. + +**`Example`** + +```typescript +const compiledCasm = json.parse(fs.readFileSync('./contractC260.casm.json').toString('ascii')); +const result = hash.hashByteCodeSegments(compiledCasm); +// result = 80499149343908132326491548897246987792410240503053732367044713070598981699n +``` + +#### Defined in + +[src/utils/hash/classHash.ts:231](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/classHash.ts#L231) + +--- + +### computeCompiledClassHash + +▸ **computeCompiledClassHash**(`casm`): `string` + +Compute compiled class hash for contract (Cairo 1) + +#### Parameters + +| Name | Type | Description | +| :----- | :---------------------------------------- | :-------------------------------- | +| `casm` | [`CairoAssembly`](types.md#cairoassembly) | Cairo 1 compiled contract content | + +#### Returns + +`string` + +hex-string of class hash + +**`Example`** + +```typescript +const compiledCasm = json.parse(fs.readFileSync('./cairo260.casm.json').toString('ascii')); +const result = hash.computeCompiledClassHash(compiledCasm); +// result = "0x4087905743b4fa2b3affc1fc71333f1390c8c5d1e8ea47d6ba70786de3fc01a" +``` + +#### Defined in + +[src/utils/hash/classHash.ts:253](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/classHash.ts#L253) + +--- + +### computeSierraContractClassHash + +▸ **computeSierraContractClassHash**(`sierra`): `string` + +Compute sierra contract class hash (Cairo 1) + +#### Parameters + +| Name | Type | Description | +| :------- | :------------------------------------------ | :------------------------------ | +| `sierra` | [`CompiledSierra`](types.md#compiledsierra) | Cairo 1 Sierra contract content | + +#### Returns + +`string` + +hex-string of class hash + +**`Example`** + +```typescript +const compiledSierra = json.parse(fs.readFileSync('./cairo260.sierra.json').toString('ascii')); +const result = hash.computeSierraContractClassHash(compiledSierra); +// result = "0x67b6b4f02baded46f02feeed58c4f78e26c55364e59874d8abfd3532d85f1ba" +``` + +#### Defined in + +[src/utils/hash/classHash.ts:307](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/classHash.ts#L307) + +--- + +### computeContractClassHash + +▸ **computeContractClassHash**(`contract`): `string` + +Compute ClassHash (sierra or legacy) based on provided contract + +#### Parameters + +| Name | Type | Description | +| :--------- | :---------------------------------------------------------- | :----------------------- | +| `contract` | `string` \| [`CompiledContract`](types.md#compiledcontract) | Cairo 1 contract content | + +#### Returns + +`string` + +hex-string of class hash + +**`Example`** + +```typescript +const compiledSierra = json.parse(fs.readFileSync('./cairo260.sierra.json').toString('ascii')); +const result = hash.computeContractClassHash(compiledSierra); +// result = "0x67b6b4f02baded46f02feeed58c4f78e26c55364e59874d8abfd3532d85f1ba" +``` + +#### Defined in + +[src/utils/hash/classHash.ts:351](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/classHash.ts#L351) + +--- + +### computePedersenHashOnElements + +▸ **computePedersenHashOnElements**(`data`): `string` + +Compute Pedersen hash from data + +#### Parameters + +| Name | Type | Description | +| :----- | :---------------------------------------- | :---------------------------------------- | +| `data` | [`BigNumberish`](types.md#bignumberish)[] | Array of data to compute Pedersen hash on | + +#### Returns + +`string` + +hex-string of Pedersen hash + +**`Example`** + +```typescript +const result = hash.computeHashOnElements(['0xabc', '0x123', '0xabc123']); +// result = 0x148141e8f7db29d005a0187669a56f0790d7e8c2c5b2d780e4d8b9e436a5521 +``` + +#### Defined in + +[src/utils/hash/classHash.ts:48](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/classHash.ts#L48) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/hash.poseidon.md b/www/versioned_docs/version-6.24.1/API/namespaces/hash.poseidon.md new file mode 100644 index 000000000..874435236 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/hash.poseidon.md @@ -0,0 +1,110 @@ +--- +id: 'hash.poseidon' +title: 'Namespace: poseidon' +sidebar_label: 'poseidon' +custom_edit_url: null +--- + +[hash](hash.md).poseidon + +Hashes Exports + +## Type Aliases + +### PoseidonOpts + +Ƭ **PoseidonOpts**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------------- | :------------------ | +| `Fp` | `IField`<`bigint`\> | +| `t` | `number` | +| `roundsFull` | `number` | +| `roundsPartial` | `number` | +| `sboxPower?` | `number` | +| `reversePartialPowIdx?` | `boolean` | +| `mds` | `bigint`[][] | +| `roundConstants` | `bigint`[][] | + +#### Defined in + +node_modules/@noble/curves/esm/abstract/poseidon.d.ts:3 + +## Functions + +### validateOpts + +▸ **validateOpts**(`opts`): `Readonly`<\{ `rounds`: `number` ; `sboxFn`: (`n`: `bigint`) => `bigint` ; `roundConstants`: `bigint`[][] ; `mds`: `bigint`[][] ; `Fp`: `IField`<`bigint`\> ; `t`: `number` ; `roundsFull`: `number` ; `roundsPartial`: `number` ; `sboxPower?`: `number` ; `reversePartialPowIdx?`: `boolean` }\> + +#### Parameters + +| Name | Type | +| :----- | :---------------------------------------------- | +| `opts` | [`PoseidonOpts`](hash.poseidon.md#poseidonopts) | + +#### Returns + +`Readonly`<\{ `rounds`: `number` ; `sboxFn`: (`n`: `bigint`) => `bigint` ; `roundConstants`: `bigint`[][] ; `mds`: `bigint`[][] ; `Fp`: `IField`<`bigint`\> ; `t`: `number` ; `roundsFull`: `number` ; `roundsPartial`: `number` ; `sboxPower?`: `number` ; `reversePartialPowIdx?`: `boolean` }\> + +#### Defined in + +node_modules/@noble/curves/esm/abstract/poseidon.d.ts:13 + +--- + +### splitConstants + +▸ **splitConstants**(`rc`, `t`): `bigint`[][] + +#### Parameters + +| Name | Type | +| :--- | :--------- | +| `rc` | `bigint`[] | +| `t` | `number` | + +#### Returns + +`bigint`[][] + +#### Defined in + +node_modules/@noble/curves/esm/abstract/poseidon.d.ts:25 + +--- + +### poseidon + +▸ **poseidon**(`opts`): (`values`: `bigint`[]) => `bigint`[] + +#### Parameters + +| Name | Type | +| :----- | :---------------------------------------------- | +| `opts` | [`PoseidonOpts`](hash.poseidon.md#poseidonopts) | + +#### Returns + +`fn` + +▸ (`values`): `bigint`[] + +##### Parameters + +| Name | Type | +| :------- | :--------- | +| `values` | `bigint`[] | + +##### Returns + +`bigint`[] + +| Name | Type | +| :--------------- | :----------- | +| `roundConstants` | `bigint`[][] | + +#### Defined in + +node_modules/@noble/curves/esm/abstract/poseidon.d.ts:26 diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/json.md b/www/versioned_docs/version-6.24.1/API/namespaces/json.md new file mode 100644 index 000000000..193713546 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/json.md @@ -0,0 +1,139 @@ +--- +id: 'json' +title: 'Namespace: json' +sidebar_label: 'json' +sidebar_position: 0 +custom_edit_url: null +--- + +## Functions + +### parse + +▸ **parse**(`str`): `any` + +Convert JSON string to JSON object + +NOTE: the String() wrapping is used so the behavior conforms to JSON.parse() +which can accept simple data types but is not represented in the default typing + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :---------- | +| `str` | `string` | JSON string | + +#### Returns + +`any` + +Parsed json object + +**`Example`** + +```typescript +const str = '[123, 12.3, 11223344556677889900]'; +const result = parse(str); +// result = [123, 12.3, 11223344556677890048n] +``` + +#### Defined in + +[src/utils/json.ts:27](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/json.ts#L27) + +--- + +### parseAlwaysAsBig + +▸ **parseAlwaysAsBig**(`str`): `any` + +Convert JSON string to JSON object with all numbers as bigint + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :---------- | +| `str` | `string` | JSON string | + +#### Returns + +`any` + +Parsed json object + +**`Example`** + +```typescript +const str = '[123, 12.3, 1234567890]'; +const result = parseAlwaysAsBig(str); +// result = [123n, 12.3, 1234567890n] +``` + +#### Defined in + +[src/utils/json.ts:41](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/json.ts#L41) + +--- + +### stringify + +▸ **stringify**(`value`, `replacer?`, `space?`, `numberStringifiers?`): `string` + +Convert JSON object to JSON string + +NOTE: the not-null assertion is used so the return type conforms to JSON.stringify() +which can also return undefined but is not represented in the default typing + +#### Parameters + +| Name | Type | Description | +| :-------------------- | :-------------------- | :------------------------------------------------------------------------------------------------ | +| `value` | `unknown` | JSON object | +| `replacer?` | `any` | Function that alters the behavior of the stringification process | +| `space?` | `string` \| `number` | Used to insert white space into the output JSON string | +| `numberStringifiers?` | `NumberStringifier`[] | Function used to stringify numbers (returning undefined will delete the property from the object) | + +#### Returns + +`string` + +JSON string + +**`Example`** + +```typescript +const value = [123, 12.3, 1234567890]; +const result = stringify(value); +// result = '[123,12.3,1234567890]' +``` + +#### Defined in + +[src/utils/json.ts:62](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/json.ts#L62) + +--- + +### stringifyAlwaysAsBig + +▸ **stringifyAlwaysAsBig**(`value`, `replacer?`, `space?`, `numberStringifiers?`): `string` + +#### Parameters + +| Name | Type | +| :-------------------- | :-------------------- | +| `value` | `unknown` | +| `replacer?` | `any` | +| `space?` | `string` \| `number` | +| `numberStringifiers?` | `NumberStringifier`[] | + +#### Returns + +`string` + +**`Deprecated`** + +equivalent to 'stringify', alias will be removed + +#### Defined in + +[src/utils/json.ts:62](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/json.ts#L62) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/merkle.md b/www/versioned_docs/version-6.24.1/API/namespaces/merkle.md new file mode 100644 index 000000000..5afd846c7 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/merkle.md @@ -0,0 +1,51 @@ +--- +id: 'merkle' +title: 'Namespace: merkle' +sidebar_label: 'merkle' +sidebar_position: 0 +custom_edit_url: null +--- + +## Classes + +- [MerkleTree](../classes/merkle.MerkleTree.md) + +## Functions + +### proofMerklePath + +▸ **proofMerklePath**(`root`, `leaf`, `path`, `hashMethod?`): `boolean` + +Tests a Merkle tree path + +#### Parameters + +| Name | Type | Default value | Description | +| :----------- | :------------------------------------------------------------------------------------------------------- | :-------------------- | :------------------------------------ | +| `root` | `string` | `undefined` | hex-string | +| `leaf` | `string` | `undefined` | hex-string | +| `path` | `string`[] | `undefined` | hex-string array | +| `hashMethod` | (`a`: [`BigNumberish`](types.md#bignumberish), `b`: [`BigNumberish`](types.md#bignumberish)) => `string` | `computePedersenHash` | hash method to use, default: Pedersen | + +#### Returns + +`boolean` + +true if the path is valid, false otherwise + +**`Example`** + +```typescript +const leaves = ['0x1', '0x2', '0x3', '0x4', '0x5', '0x6', '0x7']; +const tree = new MerkleTree(leaves); +const result = proofMerklePath(tree.root, '0x3', [ + '0x4', + '0x5bb9440e27889a364bcb678b1f679ecd1347acdedcbf36e83494f857cc58026', + '0x8c0e46dd2df9aaf3a8ebfbc25408a582ad7fa7171f0698ddbbc5130b4b4e60', +]); +// result = true +``` + +#### Defined in + +[src/utils/merkle.ts:148](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/merkle.ts#L148) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/num.md b/www/versioned_docs/version-6.24.1/API/namespaces/num.md new file mode 100644 index 000000000..125f0ca93 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/num.md @@ -0,0 +1,688 @@ +--- +id: 'num' +title: 'Namespace: num' +sidebar_label: 'num' +sidebar_position: 0 +custom_edit_url: null +--- + +## References + +### BigNumberish + +Re-exports [BigNumberish](types.md#bignumberish) + +## Functions + +### isHex + +▸ **isHex**(`hex`): `boolean` + +Test if string is hex-string + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :---------- | +| `hex` | `string` | hex-string | + +#### Returns + +`boolean` + +true if the input string is a hexadecimal string, false otherwise + +**`Example`** + +```typescript +const hexString1 = '0x2fd23d9182193775423497fc0c472e156c57c69e4089a1967fb288a2d84e914'; +const result1 = isHex(hexString1); +// result1 = true + +const hexString2 = '2fd23d9182193775423497fc0c472e156c57c69e4089a1967fb288a2d84e914'; +const result2 = isHex(hexString2); +// result2 = false +``` + +#### Defined in + +[src/utils/num.ts:29](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L29) + +--- + +### toBigInt + +▸ **toBigInt**(`value`): `bigint` + +Convert BigNumberish to bigint + +#### Parameters + +| Name | Type | Description | +| :------ | :-------------------------------------- | :--------------- | +| `value` | [`BigNumberish`](types.md#bignumberish) | value to convert | + +#### Returns + +`bigint` + +converted value + +**`Example`** + +```typescript +const str = '123'; +const result = toBigInt(str); +// result = 123n +``` + +#### Defined in + +[src/utils/num.ts:45](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L45) + +--- + +### toHex + +▸ **toHex**(`value`): `string` + +Convert BigNumberish to hex-string + +#### Parameters + +| Name | Type | Description | +| :------ | :-------------------------------------- | :--------------- | +| `value` | [`BigNumberish`](types.md#bignumberish) | value to convert | + +#### Returns + +`string` + +converted number in hex-string format + +**`Example`** + +```typescript +toHex(100); // '0x64' +toHex('200'); // '0xc8' +``` + +#### Defined in + +[src/utils/num.ts:60](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L60) + +--- + +### toStorageKey + +▸ **toStorageKey**(`number`): `string` + +Convert BigNumberish to storage-key-string + +Same as toHex but conforming to the STORAGE_KEY pattern `^0x0[0-7]{1}[a-fA-F0-9]{0,62}$`. + +A storage key is represented as up to 62 hex digits, 3 bits, and 5 leading zeroes: +`0x0 + [0-7] + 62 hex = 0x + 64 hex` + +#### Parameters + +| Name | Type | +| :------- | :-------------------------------------- | +| `number` | [`BigNumberish`](types.md#bignumberish) | + +#### Returns + +`string` + +format: storage-key-string + +**`Example`** + +```typescript +toStorageKey(0x123); // '0x0000000000000000000000000000000000000000000000000000000000000123' +toStorageKey(123); // '0x000000000000000000000000000000000000000000000000000000000000007b' +toStorageKey('test'); // 'Error' +``` + +#### Defined in + +[src/utils/num.ts:84](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L84) + +--- + +### toHex64 + +▸ **toHex64**(`number`): `string` + +Convert BigNumberish to hex format 0x + 64 hex chars + +Similar as toStorageKey but conforming to exactly 0x(64 hex chars). + +#### Parameters + +| Name | Type | +| :------- | :-------------------------------------- | +| `number` | [`BigNumberish`](types.md#bignumberish) | + +#### Returns + +`string` + +format: hex-0x(64)-string + +**`Example`** + +```typescript +toHex64(123); // '0x000000000000000000000000000000000000000000000000000000000000007b' +toHex64(123n); // '0x000000000000000000000000000000000000000000000000000000000000007b' +toHex64('test'); // 'Error' +``` + +#### Defined in + +[src/utils/num.ts:102](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L102) + +--- + +### hexToDecimalString + +▸ **hexToDecimalString**(`hex`): `string` + +Convert hexadecimal string to decimal string + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :-------------------- | +| `hex` | `string` | hex-string to convert | + +#### Returns + +`string` + +converted number in decimal string format + +**`Example`** + +```typescript +hexToDecimalString('64'); // '100' +hexToDecimalString('c8'); // '200' +``` + +#### Defined in + +[src/utils/num.ts:119](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L119) + +--- + +### cleanHex + +▸ **cleanHex**(`hex`): `string` + +Remove hex-string leading zeroes and lowercase it + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :---------- | +| `hex` | `string` | hex-string | + +#### Returns + +`string` + +updated string in hex-string format + +**`Example`** + +```typescript +cleanHex('0x00023AB'); // '0x23ab' +``` + +#### Defined in + +[src/utils/num.ts:133](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L133) + +--- + +### assertInRange + +▸ **assertInRange**(`input`, `lowerBound`, `upperBound`, `inputName?`): `void` + +Asserts input is equal to or greater then lowerBound and lower then upperBound. + +The `inputName` parameter is used in the assertion message. + +#### Parameters + +| Name | Type | Default value | Description | +| :----------- | :-------------------------------------- | :------------ | :---------------------------------- | +| `input` | [`BigNumberish`](types.md#bignumberish) | `undefined` | Value to check | +| `lowerBound` | [`BigNumberish`](types.md#bignumberish) | `undefined` | Lower bound value | +| `upperBound` | [`BigNumberish`](types.md#bignumberish) | `undefined` | Upper bound value | +| `inputName` | `string` | `''` | Name of the input for error message | + +#### Returns + +`void` + +**`Throws`** + +Error if input is out of range + +**`Example`** + +```typescript +const input1: BigNumberish = 10; +assertInRange(input1, 5, 20, 'value'); + +const input2: BigNumberish = 25; +assertInRange(input2, 5, 20, 'value'); +// throws Error: Message not signable, invalid value length. +``` + +#### Defined in + +[src/utils/num.ts:156](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L156) + +--- + +### bigNumberishArrayToDecimalStringArray + +▸ **bigNumberishArrayToDecimalStringArray**(`data`): `string`[] + +Convert BigNumberish array to decimal string array + +#### Parameters + +| Name | Type | Description | +| :----- | :---------------------------------------- | :------------------------------ | +| `data` | [`BigNumberish`](types.md#bignumberish)[] | array of big-numberish elements | + +#### Returns + +`string`[] + +array of decimal strings + +**`Example`** + +```typescript +const data = [100, 200n]; +const result = bigNumberishArrayToDecimalStringArray(data); +// result = ['100', '200'] +``` + +#### Defined in + +[src/utils/num.ts:185](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L185) + +--- + +### bigNumberishArrayToHexadecimalStringArray + +▸ **bigNumberishArrayToHexadecimalStringArray**(`data`): `string`[] + +Convert BigNumberish array to hexadecimal string array + +#### Parameters + +| Name | Type | Description | +| :----- | :---------------------------------------- | :------------------------------ | +| `data` | [`BigNumberish`](types.md#bignumberish)[] | array of big-numberish elements | + +#### Returns + +`string`[] + +array of hex-strings + +**`Example`** + +```typescript +const data = [100, 200n]; +const result = bigNumberishArrayToHexadecimalStringArray(data); +// result = ['0x64', '0xc8'] +``` + +#### Defined in + +[src/utils/num.ts:201](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L201) + +--- + +### isStringWholeNumber + +▸ **isStringWholeNumber**(`str`): `boolean` + +Test if string is a whole number (0, 1, 2, 3...) + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :------------- | +| `str` | `string` | string to test | + +#### Returns + +`boolean` + +: true if string is a whole number, false otherwise + +**`Example`** + +```typescript +isStringWholeNumber('100'); // true +isStringWholeNumber('10.0'); // false +isStringWholeNumber('test'); // false +``` + +#### Defined in + +[src/utils/num.ts:217](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L217) + +--- + +### getDecimalString + +▸ **getDecimalString**(`str`): `string` + +Convert string to decimal string + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :---------------- | +| `str` | `string` | string to convert | + +#### Returns + +`string` + +converted string in decimal format + +**`Throws`** + +str needs to be a number string in hex or whole number format + +**`Example`** + +```typescript +const result = getDecimalString('0x1a'); +// result = "26" + +const result2 = getDecimalString('Hello'); +// throws Error: "Hello needs to be a hex-string or whole-number-string" +``` + +#### Defined in + +[src/utils/num.ts:236](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L236) + +--- + +### getHexString + +▸ **getHexString**(`str`): `string` + +Convert string to hexadecimal string + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :---------------- | +| `str` | `string` | string to convert | + +#### Returns + +`string` + +converted hex-string + +**`Throws`** + +str needs to be a number string in hex or whole number format + +**`Example`** + +```typescript +const result = getHexString('123'); +// result = "0x7b" + +const result2 = getHexString('Hello'); +// throws Error: Hello needs to be a hex-string or whole-number-string +``` + +#### Defined in + +[src/utils/num.ts:261](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L261) + +--- + +### getHexStringArray + +▸ **getHexStringArray**(`array`): `string`[] + +Convert string array to hex-string array + +#### Parameters + +| Name | Type | Description | +| :------ | :--------- | :----------------------- | +| `array` | `string`[] | array of string elements | + +#### Returns + +`string`[] + +array of converted elements in hex-string format + +**`Example`** + +```typescript +const data = ['100', '200', '0xaa']; +const result = getHexStringArray(data); +// result = ['0x64', '0xc8', '0xaa'] +``` + +#### Defined in + +[src/utils/num.ts:283](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L283) + +--- + +### toCairoBool + +▸ **toCairoBool**(`value`): `string` + +Convert boolean to "0" or "1" + +#### Parameters + +| Name | Type | Description | +| :------ | :-------- | :--------------------------------- | +| `value` | `boolean` | The boolean value to be converted. | + +#### Returns + +`string` + +Returns true if the value is a number, otherwise returns false. + +**`Example`** + +```typescript +const result = toCairoBool(true); +// result ="1" + +const result2 = toCairoBool(false); +// result2 = "0" +``` + +#### Defined in + +[src/utils/num.ts:301](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L301) + +--- + +### hexToBytes + +▸ **hexToBytes**(`str`): `Uint8Array` + +Convert hex-string to an array of Bytes (Uint8Array) + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :---------- | +| `str` | `string` | hex-string | + +#### Returns + +`Uint8Array` + +array containing the converted elements + +**`Throws`** + +str must be a hex-string + +**`Example`** + +```typescript +let result; + +result = hexToBytes('0x64'); +// result = [100] + +result = hexToBytes('test'); +// throws Error: test needs to be a hex-string +``` + +#### Defined in + +[src/utils/num.ts:322](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L322) + +--- + +### addPercent + +▸ **addPercent**(`number`, `percent`): `bigint` + +Adds a percentage amount to the value + +#### Parameters + +| Name | Type | Description | +| :-------- | :-------------------------------------- | :-------------------------------- | +| `number` | [`BigNumberish`](types.md#bignumberish) | value to be modified | +| `percent` | `number` | integer as percent ex. 50 for 50% | + +#### Returns + +`bigint` + +modified value + +**`Example`** + +```typescript +addPercent(100, 50); // 150n +addPercent(100, 100); // 200n +addPercent(200, 50); // 300n +addPercent(200, -50); // 100n +addPercent(200, -100); // 0n +addPercent(200, -150); // -100n +``` + +#### Defined in + +[src/utils/num.ts:348](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L348) + +--- + +### stringToSha256ToArrayBuff4 + +▸ **stringToSha256ToArrayBuff4**(`str`): `Uint8Array` + +Calculate the sha256 hash of an utf8 string, then encode the +result in an uint8Array of 4 elements. +Useful in wallet path calculation. + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :------------------------------------ | +| `str` | `string` | utf8 string (hex string not handled). | + +#### Returns + +`Uint8Array` + +a uint8Array of 4 bytes. + +**`Example`** + +```typescript +const ledgerPathApplicationName = 'LedgerW'; +const path2Buffer = num.stringToSha256ToArrayBuff4(ledgerPathApplicationName); +// path2Buffer = Uint8Array(4) [43, 206, 231, 219] +``` + +#### Defined in + +[src/utils/num.ts:366](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L366) + +--- + +### isBigNumberish + +▸ **isBigNumberish**(`input`): input is BigNumberish + +Checks if a given value is of BigNumberish type. +234, 234n, "234", "0xea" are valid + +#### Parameters + +| Name | Type | Description | +| :------ | :-------- | :---------- | +| `input` | `unknown` | a value | + +#### Returns + +input is BigNumberish + +true if type of input is `BigNumberish` + +**`Example`** + +```typescript +const res = num.isBigNumberish('ZERO'); +// res = false +``` + +#### Defined in + +[src/utils/num.ts:384](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L384) + +--- + +### toHexString + +▸ **toHexString**(`value`): `string` + +Alias of ToHex + +#### Parameters + +| Name | Type | +| :------ | :-------------------------------------- | +| `value` | [`BigNumberish`](types.md#bignumberish) | + +#### Returns + +`string` + +#### Defined in + +[src/utils/num.ts:60](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/num.ts#L60) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/outsideExecution.md b/www/versioned_docs/version-6.24.1/API/namespaces/outsideExecution.md new file mode 100644 index 000000000..9ffada00a --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/outsideExecution.md @@ -0,0 +1,195 @@ +--- +id: 'outsideExecution' +title: 'Namespace: outsideExecution' +sidebar_label: 'outsideExecution' +sidebar_position: 0 +custom_edit_url: null +--- + +## Functions + +### getOutsideCall + +▸ **getOutsideCall**(`call`): [`OutsideCall`](../interfaces/types.OutsideCall.md) + +Converts a Call object to an OutsideCall object that can be used for an Outside Execution. + +#### Parameters + +| Name | Type | Description | +| :----- | :---------------------- | :---------------------- | +| `call` | [`Call`](types.md#call) | transaction to proceed. | + +#### Returns + +[`OutsideCall`](../interfaces/types.OutsideCall.md) + +transaction formatted in conformity to SNIP-9 + +**`Example`** + +```typescript +const call1: Call = { + contractAddress: '0x0123', + entrypoint: 'transfer', + calldata: { recipient: '0xabcd', amount: cairo.uint256(10) }, +}; +const result = outsideExecution.getOutsideCall(call1); +// result = { +// to: '0x0123', +// selector: getSelectorFromName(call1.entrypoint), +// calldata: ['43981', '10', '0'], +//} +``` + +#### Defined in + +[src/utils/outsideExecution.ts:35](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/outsideExecution.ts#L35) + +--- + +### getTypedData + +▸ **getTypedData**(`chainId`, `options`, `nonce`, `myCalls`, `version`): [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) + +Build a TypedData message that will be used for an Outside execution. + +#### Parameters + +| Name | Type | Description | +| :-------- | :-------------------------------------------------------------------------- | :---------------------------------------------------------------------- | +| `chainId` | `string` | The encoded string of the name of network. | +| `options` | [`OutsideExecutionOptions`](../interfaces/types.OutsideExecutionOptions.md) | Parameters related to an Outside Execution. | +| `nonce` | [`BigNumberish`](types.md#bignumberish) | Outside execution nonce (not to confuse with normal transaction nonce). | +| `myCalls` | [`Call`](types.md#call)[] | transaction(s) to proceed. | +| `version` | [`OutsideExecutionVersion`](../enums/types.OutsideExecutionVersion.md) | SNIP-9 V1 or V2. | + +#### Returns + +[`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) + +SNIP-12 message conform to SNIP-9. + +**`Example`** + +```typescript +const callOptions: OutsideExecutionOptions = { + caller: '0x1234', + execute_after: 100, + execute_before: 200, +}; +const result: TypedData = outsideExecution.getTypedData( + constants.StarknetChainId.SN_SEPOLIA, + callOptions, + 21, + [call1], + EOutsideExecutionVersion.V2 +); +// result = { +// domain: { +// chainId: '0x534e5f5345504f4c4941', +// name: 'Account.execute_from_outside', +// revision: '1', +// version: '2', +// }, +// message: { +// Caller: '0x1234', +// ... +``` + +#### Defined in + +[src/utils/outsideExecution.ts:105](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/outsideExecution.ts#L105) + +--- + +### buildExecuteFromOutsideCallData + +▸ **buildExecuteFromOutsideCallData**(`outsideTransaction`): [`Calldata`](types.md#calldata) + +Builds a Calldata for the execute_from_outside() entrypoint. + +#### Parameters + +| Name | Type | Description | +| :------------------- | :---------------------------------------------------------------- | :------------------------------------------------------------ | +| `outsideTransaction` | [`OutsideTransaction`](../interfaces/types.OutsideTransaction.md) | an object that contains all the data for a Outside Execution. | + +#### Returns + +[`Calldata`](types.md#calldata) + +The Calldata related to this Outside transaction + +**`Example`** + +```typescript +const outsideTransaction: OutsideTransaction = { + outsideExecution: { + caller: '0x64b48806902a367c8598f4f95c305e8c1a1acba5f082d294a43793113115691', + nonce: '0x7d0b4b4fce4b236e63d2bb5fc321935d52935cd3b268248cf9cf29c496bd0ae', + execute_after: 500, + execute_before: 600, + calls: [{ to: '0x678', selector: '0x890', calldata: [12, 13] }], + }, + signature: ['0x123', '0x456'], + signerAddress: '0x3b278ebae434f283f9340587a7f2dd4282658ac8e03cb9b0956db23a0a83657', + version: EOutsideExecutionVersion.V2, +}; + +const result: Calldata = outsideExecution.buildExecuteFromOutsideCallData(outsideTransaction); +// result = ['2846891009026995430665703316224827616914889274105712248413538305735679628945', +// '3534941323322368687588030484849371698982661160919690922146419787802417549486', +// '500', '600', '1', '1656', '2192', '2', '12', '13', '2', '291', '1110'] +``` + +#### Defined in + +[src/utils/outsideExecution.ts:163](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/outsideExecution.ts#L163) + +--- + +### buildExecuteFromOutsideCall + +▸ **buildExecuteFromOutsideCall**(`outsideTransaction`): [`Call`](types.md#call)[] + +Builds a Call for execute(), estimateFee() and simulateTransaction() functions. + +#### Parameters + +| Name | Type | Description | +| :------------------- | :------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------- | +| `outsideTransaction` | [`AllowArray`](types.md#allowarray)<[`OutsideTransaction`](../interfaces/types.OutsideTransaction.md)\> | an object that contains all the data for an Outside Execution. | + +#### Returns + +[`Call`](types.md#call)[] + +The Call related to this Outside transaction + +**`Example`** + +```typescript +const outsideTransaction: OutsideTransaction = { + outsideExecution: { + caller: '0x64b48806902a367c8598f4f95c305e8c1a1acba5f082d294a43793113115691', + nonce: '0x7d0b4b4fce4b236e63d2bb5fc321935d52935cd3b268248cf9cf29c496bd0ae', + execute_after: 500, + execute_before: 600, + calls: [{ to: '0x678', selector: '0x890', calldata: [12, 13] }], + }, + signature: ['0x123', '0x456'], + signerAddress: '0x3b278ebae434f283f9340587a7f2dd4282658ac8e03cb9b0956db23a0a83657', + version: EOutsideExecutionVersion.V2, +}; + +const result: Call[] = outsideExecution.buildExecuteFromOutsideCall(outsideTransaction); +// result = [{contractAddress: '0x64b48806902a367c8598f4f95c305e8c1a1acba5f082d294a43793113115691', +// entrypoint: 'execute_from_outside_v2', +// calldata: [ ... ], +// }] +``` + +#### Defined in + +[src/utils/outsideExecution.ts:197](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/outsideExecution.ts#L197) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/provider-1.md b/www/versioned_docs/version-6.24.1/API/namespaces/provider-1.md new file mode 100644 index 000000000..ad02e1af3 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/provider-1.md @@ -0,0 +1,340 @@ +--- +id: 'provider-1' +title: 'Namespace: provider' +sidebar_label: 'provider' +sidebar_position: 0 +custom_edit_url: null +--- + +## Classes + +- [Block](../classes/provider-1.Block.md) + +## Variables + +### validBlockTags + +• `Const` **validBlockTags**: (`"pending"` \| `"latest"`)[] + +#### Defined in + +[src/utils/provider.ts:132](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L132) + +## Functions + +### wait + +▸ **wait**(`delay`): `Promise`<`unknown`\> + +Helper - Async Sleep for 'delay' time + +#### Parameters + +| Name | Type | Description | +| :------ | :------- | :------------------------------ | +| `delay` | `number` | Number of milliseconds to delay | + +#### Returns + +`Promise`<`unknown`\> + +**`Example`** + +```typescript +await provider.wait(1000); // 1000 milliseconds == 1 second +``` + +#### Defined in + +[src/utils/provider.ts:38](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L38) + +--- + +### createSierraContractClass + +▸ **createSierraContractClass**(`contract`): [`SierraContractClass`](types.md#sierracontractclass) + +Create Sierra compressed Contract Class from a given Compiled Sierra + +CompiledSierra -> SierraContractClass + +#### Parameters + +| Name | Type | Description | +| :--------- | :------------------------------------------ | :---------------------------------- | +| `contract` | [`CompiledSierra`](types.md#compiledsierra) | sierra code from the Cairo compiler | + +#### Returns + +[`SierraContractClass`](types.md#sierracontractclass) + +compressed Sierra + +**`Example`** + +```typescript +const result = provider.createSierraContractClass({ + "sierra_program": [ + "0x1", + "0x4", + "0x0", + "0x2", + "0x4", + "0x1", + "0x3b4", + "0x4c", + "0x65", + "0x52616e6765436865636b",...}) +// result = {sierra_program: 'H4sIAAAAAAAAA6x9WZbsrI7uVGqd53qgb8ZynwzYY7jDv5JAAmxHZuQ+96yq/L0jIzEINZ8axP/5j/q/+j//+z/wH9f/o/p/zPbh+Iot49+u9v8G3//rTdDhDDF4Z0MKPthQ+m+S2v6n1S//638VvdXW2PQ6RvxuDG+jiybCXKJ7Hef6ZRi9E+Q89WmKLilfqbrsL6PUCf8...} +``` + +#### Defined in + +[src/utils/provider.ts:68](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L68) + +--- + +### parseContract + +▸ **parseContract**(`contract`): [`ContractClass`](types.md#contractclass) + +Create a compressed contract from a given compiled Cairo 0 & 1 contract or a string. + +#### Parameters + +| Name | Type | Description | +| :--------- | :---------------------------------------------------------- | :---------------------------------------------- | +| `contract` | `string` \| [`CompiledContract`](types.md#compiledcontract) | Compiled Cairo 0 or Cairo 1 contract, or string | + +#### Returns + +[`ContractClass`](types.md#contractclass) + +Cairo 0 or Cairo 1 compressed contract + +**`Example`** + +```typescript +const result = provider.parseContract({ + "sierra_program": [ + "0x1", + "0x4", + "0x0", + "0x2", + "0x4", + "0x1", + "0x3b4", + "0x4c", + "0x65", + "0x52616e6765436865636b",...}) +// result = {sierra_program: 'H4sIAAAAAAAAA6x9WZbsrI7uVGqd53qgb8ZynwzYY7jDv5JAAmxHZuQ+96yq/L0jIzEINZ8axP/5j/q/+j//+z/wH9f/o/p/zPbh+Iot49+u9v8G3//rTdDhDDF4Z0MKPthQ+m+S2v6n1S//638VvdXW2PQ6RvxuDG+jiybCXKJ7Hef6ZRi9E+Q89WmKLilfqbrsL6PUCf8...} +``` + +#### Defined in + +[src/utils/provider.ts:98](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L98) + +--- + +### isV3Tx + +▸ **isV3Tx**(`details`): details is V3TransactionDetails + +Check if the given transaction details is a V3 transaction. + +#### Parameters + +| Name | Type | Description | +| :-------- | :-------------------------------------------------------------------- | :------------------------------------- | +| `details` | [`InvocationsDetailsWithNonce`](types.md#invocationsdetailswithnonce) | The transaction details to be checked. | + +#### Returns + +details is V3TransactionDetails + +Returns true if the transaction is a V3 transaction, otherwise false. + +**`Example`** + +```typescript +const invocation: InvocationsDetailsWithNonce = { + nonce: 1, + version: 3, + maxFee: 10 ** 15, + feeDataAvailabilityMode: RPC.EDataAvailabilityMode.L1, + tip: 10 ** 13, + paymasterData: [], + resourceBounds: { + l1_gas: { max_amount: num.toHex(10 ** 14), max_price_per_unit: num.toHex(50) }, + l2_gas: { max_amount: num.toHex(0), max_price_per_unit: num.toHex(0) }, + }, +}; +const result = provider.isV3Tx(invocation); +// result = true +``` + +#### Defined in + +[src/utils/provider.ts:283](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L283) + +--- + +### isVersion + +▸ **isVersion**(`version`, `response`): `boolean` + +Determines if the given response matches the specified version. + +#### Parameters + +| Name | Type | Description | +| :--------- | :---------------------------- | :------------------------------------------- | +| `version` | `"0.5"` \| `"0.6"` \| `"0.7"` | The version to compare against the response. | +| `response` | `string` | The response to check against the version. | + +#### Returns + +`boolean` + +True if the response matches the version, false otherwise. + +**`Example`** + +```typescript +const result = provider.isVersion('0.7', '0_7'); +// result = false +``` + +#### Defined in + +[src/utils/provider.ts:300](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L300) + +--- + +### isPendingBlock + +▸ **isPendingBlock**(`response`): response is PendingBlock + +Guard Pending Block + +#### Parameters + +| Name | Type | Description | +| :--------- | :---------------------------------------------- | :------------------------------ | +| `response` | [`GetBlockResponse`](types.md#getblockresponse) | answer of myProvider.getBlock() | + +#### Returns + +response is PendingBlock + +true if block is the pending block + +**`Example`** + +```typescript +const block = await myProvider.getBlock('pending'); +const result = provider.isPendingBlock(block); +// result = true +``` + +#### Defined in + +[src/utils/provider.ts:318](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L318) + +--- + +### isPendingTransaction + +▸ **isPendingTransaction**(`response`): `boolean` + +Guard Pending Transaction + +#### Parameters + +| Name | Type | Description | +| :--------- | :----------------------------------------------------------------------------- | :------------------ | +| `response` | [`GetTransactionReceiptResponse`](../modules.md#gettransactionreceiptresponse) | transaction Receipt | + +#### Returns + +`boolean` + +true if the transaction is part of the pending block + +**`Example`** + +```typescript +const block = await myProvider.getBlockWithTxs('pending'); +const txR = await myProvider.getTransactionReceipt(block.transactions[0].transaction_hash); +const result = provider.isPendingTransaction(txR); +// result = true +``` + +#### Defined in + +[src/utils/provider.ts:334](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L334) + +--- + +### isPendingStateUpdate + +▸ **isPendingStateUpdate**(`response`): response is Object + +Guard Pending State Update + +#### Parameters + +| Name | Type | Description | +| :--------- | :---------------------------------------------------- | :--------------- | +| `response` | [`StateUpdateResponse`](types.md#stateupdateresponse) | State of a block | + +#### Returns + +response is Object + +true if the block is pending + +**`Example`** + +```typescript +const state: StateUpdateResponse = await myProvider.getStateUpdate('pending'); +const result = provider.isPendingStateUpdate(state); +// result = true +``` + +#### Defined in + +[src/utils/provider.ts:349](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L349) + +--- + +### getDefaultNodeUrl + +▸ **getDefaultNodeUrl**(`networkName?`, `mute?`): `string` + +Return randomly select available public node + +#### Parameters + +| Name | Type | Default value | Description | +| :------------- | :------------------------------------------------- | :------------ | :----------------------- | +| `networkName?` | [`NetworkName`](../enums/constants.NetworkName.md) | `undefined` | NetworkName | +| `mute` | `boolean` | `false` | mute public node warning | + +#### Returns + +`string` + +default node url + +**`Example`** + +```typescript +const result = provider.getDefaultNodeUrl(constants.NetworkName.SN_MAIN, false); +// console : "Using default public node url, please provide nodeUrl in provider options!" +// result = "https://starknet-mainnet.public.blastapi.io/rpc/v0_7" +``` + +#### Defined in + +[src/utils/provider.ts:123](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/provider.ts#L123) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/selector.md b/www/versioned_docs/version-6.24.1/API/namespaces/selector.md new file mode 100644 index 000000000..7988536a9 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/selector.md @@ -0,0 +1,43 @@ +--- +id: 'selector' +title: 'Namespace: selector' +sidebar_label: 'selector' +sidebar_position: 0 +custom_edit_url: null +--- + +## References + +### keccakBn + +Re-exports [keccakBn](hash.md#keccakbn) + +--- + +### starknetKeccak + +Re-exports [starknetKeccak](hash.md#starknetkeccak) + +--- + +### getSelectorFromName + +Re-exports [getSelectorFromName](hash.md#getselectorfromname) + +--- + +### getSelector + +Re-exports [getSelector](hash.md#getselector) + +--- + +### solidityUint256PackedKeccak256 + +Re-exports [solidityUint256PackedKeccak256](hash.md#solidityuint256packedkeccak256) + +--- + +### getL2MessageHash + +Re-exports [getL2MessageHash](hash.md#getl2messagehash) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/shortString.md b/www/versioned_docs/version-6.24.1/API/namespaces/shortString.md new file mode 100644 index 000000000..ad90fc92e --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/shortString.md @@ -0,0 +1,296 @@ +--- +id: 'shortString' +title: 'Namespace: shortString' +sidebar_label: 'shortString' +sidebar_position: 0 +custom_edit_url: null +--- + +## Functions + +### isASCII + +▸ **isASCII**(`str`): `boolean` + +Test if string contains only ASCII characters (string can be ascii text) + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :----------------- | +| `str` | `string` | The string to test | + +#### Returns + +`boolean` + +Returns true if the string contains only ASCII characters, otherwise false + +**`Example`** + +```typescript +const result = shortString.isASCII('Hello, world!'); +// result = true +const result = shortString.isASCII('Hello, 世界!'); +// result = false +``` + +#### Defined in + +[src/utils/shortString.ts:18](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/shortString.ts#L18) + +--- + +### isShortString + +▸ **isShortString**(`str`): `boolean` + +Test if a string is a Cairo short string (string with less or equal 31 characters) + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :----------------- | +| `str` | `string` | the string to test | + +#### Returns + +`boolean` + +Returns true if the string has less than or equal to 31 characters, otherwise false. + +**`Example`** + +```typescript +const result = shortString.isShortString('Hello, world!'); +// result = true +``` + +#### Defined in + +[src/utils/shortString.ts:33](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/shortString.ts#L33) + +--- + +### isDecimalString + +▸ **isDecimalString**(`str`): `boolean` + +Test if string contains only numbers (string can be converted to decimal integer number) + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :------------------ | +| `str` | `string` | the string to test. | + +#### Returns + +`boolean` + +Returns true if the string contains only numbers, otherwise false. + +**`Example`** + +```typescript +const result = shortString.isDecimalString('12345'); +// result = true +const result = shortString.isDecimalString('12a45'); +// result = false +``` + +#### Defined in + +[src/utils/shortString.ts:49](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/shortString.ts#L49) + +--- + +### isText + +▸ **isText**(`val`): `boolean` + +Test if value is a pure string text, and not a hex string or number string + +#### Parameters + +| Name | Type | Description | +| :---- | :---- | :---------------- | +| `val` | `any` | the value to test | + +#### Returns + +`boolean` + +returns true if the value is a free-form string text, otherwise false + +**`Example`** + +```typescript +const result = shortString.isText('Hello, world!'); +// result = true +const result = shortString.isText('0x7aec92f706'); +// result = false +``` + +#### Defined in + +[src/utils/shortString.ts:65](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/shortString.ts#L65) + +--- + +### splitLongString + +▸ **splitLongString**(`longStr`): `string`[] + +Split long text (string greater than 31 characters) into short strings (string lesser or equal 31 characters) + +#### Parameters + +| Name | Type | Description | +| :-------- | :------- | :--------------------------------------------------------- | +| `longStr` | `string` | the long text (string greater than 31 characters) to split | + +#### Returns + +`string`[] + +an array of short strings (string lesser or equal 31 characters). + +**`Example`** + +```typescript +const result = shortString.splitLongString( + 'Hello, world! we just testing splitLongString function.' +); +// result = [ 'Hello, world! we just testing s', 'plitLongString function.' ] +``` + +#### Defined in + +[src/utils/shortString.ts:103](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/shortString.ts#L103) + +--- + +### encodeShortString + +▸ **encodeShortString**(`str`): `string` + +Convert an ASCII short string to a hexadecimal string. + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :--------------------------------------------- | +| `str` | `string` | short string (ASCII string, 31 characters max) | + +#### Returns + +`string` + +hex-string with 248 bits max + +**`Example`** + +```typescript +const result = shortString.encodeShortString('uri/pict/t38.jpg'); +// result = "0x7572692f706963742f7433382e6a7067" +``` + +#### Defined in + +[src/utils/shortString.ts:118](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/shortString.ts#L118) + +--- + +### decodeShortString + +▸ **decodeShortString**(`str`): `string` + +Convert a hexadecimal or decimal string to an ASCII string. + +#### Parameters + +| Name | Type | Description | +| :---- | :------- | :----------------------------------------------------------------------------- | +| `str` | `string` | representing a 248 bit max number (ex. "0x1A4F64EA56" or "236942575435676423") | + +#### Returns + +`string` + +short string; 31 characters max + +**`Example`** + +```typescript +const result = shortString.decodeShortString('0x7572692f706963742f7433382e6a7067'); +// result = "uri/pict/t38.jpg" +``` + +#### Defined in + +[src/utils/shortString.ts:134](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/shortString.ts#L134) + +--- + +### isShortText + +▸ **isShortText**(`val`): `boolean` + +Test if value is short text + +#### Parameters + +| Name | Type | Description | +| :---- | :---- | :--------------- | +| `val` | `any` | The item to test | + +#### Returns + +`boolean` + +Returns true if the value is a short text (string has less or equal 31 characters), otherwise false + +**`Example`** + +```typescript +const result = shortString.isShortText('Hello, world!'); +// result = true +``` + +#### Defined in + +[src/utils/shortString.ts:79](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/shortString.ts#L79) + +--- + +### isLongText + +▸ **isLongText**(`val`): `boolean` + +Test if value is long text + +#### Parameters + +| Name | Type | Description | +| :---- | :---- | :---------------- | +| `val` | `any` | the value to test | + +#### Returns + +`boolean` + +returns true if the value is a long text(string has more than 31 characters), otherwise false. + +**`Example`** + +```typescript +const result = shortString.isLongText( + 'Hello, world! this is some random long string to enable you test isLongText function.' +); +// result = true +``` + +#### Defined in + +[src/utils/shortString.ts:91](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/shortString.ts#L91) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/src5.md b/www/versioned_docs/version-6.24.1/API/namespaces/src5.md new file mode 100644 index 000000000..49eda7621 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/src5.md @@ -0,0 +1,42 @@ +--- +id: 'src5' +title: 'Namespace: src5' +sidebar_label: 'src5' +sidebar_position: 0 +custom_edit_url: null +--- + +## Functions + +### supportsInterface + +▸ **supportsInterface**(`provider`, `contractAddress`, `interfaceId`): `Promise`<`boolean`\> + +Implementation of ERC165 introspection. +Verify if a contract has implemented some standard functionalities. + +#### Parameters + +| Name | Type | Description | +| :---------------- | :-------------------------------------- | :-------------------------------------- | +| `provider` | [`Provider`](../classes/Provider.md) | the provider to access to Starknet. | +| `contractAddress` | [`BigNumberish`](types.md#bignumberish) | the address of the contract to check. | +| `interfaceId` | [`BigNumberish`](types.md#bignumberish) | the hash of the functionality to check. | + +#### Returns + +`Promise`<`boolean`\> + +true if the interfaceId is implemented in this contract. + +**`Example`** + +```typescript +const snip9InterfaceV2Id = constants.SNIP9_V2_INTERFACE_ID; +const result = src5.supportsInterface(myProvider, accountContractAddress, snip9InterfaceV2Id); +// result = true +``` + +#### Defined in + +[src/utils/src5.ts:19](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/src5.ts#L19) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/stark.md b/www/versioned_docs/version-6.24.1/API/namespaces/stark.md new file mode 100644 index 000000000..b0997a73b --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/stark.md @@ -0,0 +1,550 @@ +--- +id: 'stark' +title: 'Namespace: stark' +sidebar_label: 'stark' +sidebar_position: 0 +custom_edit_url: null +--- + +## Functions + +### compressProgram + +▸ **compressProgram**(`jsonProgram`): [`CompressedProgram`](types.md#compressedprogram) + +Compress compiled Cairo 0 program + +[Reference](https://github.com/starkware-libs/cairo-lang/blob/master/src/starkware/starknet/services/api/gateway/transaction.py#L54-L58) + +#### Parameters + +| Name | Type | Description | +| :------------ | :------------------------------------------------------ | :---------------------------------------- | +| `jsonProgram` | `string` \| [`Program`](../interfaces/types.Program.md) | Representing the compiled Cairo 0 program | + +#### Returns + +[`CompressedProgram`](types.md#compressedprogram) + +Compressed Cairo 0 program + +**`Example`** + +```typescript +const contractCairo0 = json.parse(fs.readFileSync('./cairo0contract.json').toString('ascii')); +const result = stark.compressProgram(contractCairo0); +// result = "H4sIAAAAAAAAA+1dC4/bOJL+K4aBu01me7r5EEUyixzQk/TuB..." +``` + +#### Defined in + +[src/utils/stark.ts:50](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/stark.ts#L50) + +--- + +### decompressProgram + +▸ **decompressProgram**(`base64`): `any` + +Decompress compressed compiled Cairo 0 program + +#### Parameters + +| Name | Type | Description | +| :------- | :--------------------- | :------------------------- | +| `base64` | `string` \| `string`[] | Compressed Cairo 0 program | + +#### Returns + +`any` + +Parsed decompressed compiled Cairo 0 program + +**`Example`** + +```typescript +const contractCairo0 = json.parse(fs.readFileSync('./cairo0contract.json').toString('ascii')); +const compressedCairo0 = stark.compressProgram(contractCairo0); +const result = stark.decompressProgram(compressedCairo0); +// result = { +// abi: [ +// { +// inputs: [Array], +// name: 'increase_balance', +// outputs: [], +// type: 'function' +// } +// ], +// entry_points_by_type: { CONSTRUCTOR: [], EXTERNAL: [ [Object], [Object] ], L1_HANDLER: [] }, +// program: { +// attributes: [], +// builtins: [ 'pedersen', 'range_check' ], +// compiler_version: '0.10.2', +// data: [ +// '0x480680017fff8000', +// ... +``` + +#### Defined in + +[src/utils/stark.ts:84](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/stark.ts#L84) + +--- + +### randomAddress + +▸ **randomAddress**(): `string` + +Random Address based on random keyPair + +#### Returns + +`string` + +an hex string of a random Starknet address + +**`Example`** + +```typescript +const result = stark.randomAddress(); +// result = "0x51fc8126a13cd5ddb29a71ca399cb1e814f086f5af1b502d7151c14929554f" +``` + +#### Defined in + +[src/utils/stark.ts:99](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/stark.ts#L99) + +--- + +### makeAddress + +▸ **makeAddress**(`input`): `string` + +Lowercase and hex prefix string + +#### Parameters + +| Name | Type | +| :------ | :------- | +| `input` | `string` | + +#### Returns + +`string` + +**`Deprecated`** + +Not used internally, naming is confusing based on functionality + +#### Defined in + +[src/utils/stark.ts:109](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/stark.ts#L109) + +--- + +### formatSignature + +▸ **formatSignature**(`sig?`): [`ArraySignatureType`](types.md#arraysignaturetype) + +Format Signature to standard type (hex array) + +#### Parameters + +| Name | Type | +| :----- | :-------------------------------- | +| `sig?` | [`Signature`](types.md#signature) | + +#### Returns + +[`ArraySignatureType`](types.md#arraysignaturetype) + +Custom hex string array + +**`Throws`** + +if sig not defined, or wrong format + +**`Example`** + +```typescript +const signature = ec.starkCurve.sign('0x12de34', '0x3487123eac'); +const result = stark.formatSignature(signature); +// result = ['0xba8eecee2d69c417e8c6a20cf331c821f716b58ba9e47166c7476afdb38997', +// '0x69ef7438c94104839a6e2aa2385482a77399d2f46e894ae4f50ab6d69239d1c'] +``` + +#### Defined in + +[src/utils/stark.ts:126](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/stark.ts#L126) + +--- + +### signatureToDecimalArray + +▸ **signatureToDecimalArray**(`sig?`): [`ArraySignatureType`](types.md#arraysignaturetype) + +Format Signature to decimal string array + +#### Parameters + +| Name | Type | +| :----- | :-------------------------------- | +| `sig?` | [`Signature`](types.md#signature) | + +#### Returns + +[`ArraySignatureType`](types.md#arraysignaturetype) + +Custom hex string array + +**`Throws`** + +if sig not defined, or wrong format + +**`Example`** + +```typescript +const signature = ec.starkCurve.sign('0x12de34', '0x3487123eac'); +const result = stark.signatureToDecimalArray(signature); +// result = ['329619989660444495690615805546674399714973829707166906185976654753023887767', +// '2994745480203297689255012826403147585778741462125743754529207781488706428188'] +``` + +#### Defined in + +[src/utils/stark.ts:152](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/stark.ts#L152) + +--- + +### signatureToHexArray + +▸ **signatureToHexArray**(`sig?`): [`ArraySignatureType`](types.md#arraysignaturetype) + +Format Signature to hex string array + +#### Parameters + +| Name | Type | +| :----- | :-------------------------------- | +| `sig?` | [`Signature`](types.md#signature) | + +#### Returns + +[`ArraySignatureType`](types.md#arraysignaturetype) + +Custom hex string array + +**`Throws`** + +if sig not defined, or wrong format + +**`Example`** + +```typescript +const signature = ec.starkCurve.sign('0x12de34', '0x3487123eac'); +const result = stark.signatureToHexArray(signature); +// result = ['0xba8eecee2d69c417e8c6a20cf331c821f716b58ba9e47166c7476afdb38997', +// '0x69ef7438c94104839a6e2aa2385482a77399d2f46e894ae4f50ab6d69239d1c'] +``` + +#### Defined in + +[src/utils/stark.ts:169](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/stark.ts#L169) + +--- + +### estimatedFeeToMaxFee + +▸ **estimatedFeeToMaxFee**(`estimatedFee`, `overhead?`): `bigint` + +Convert estimated fee to max fee including a margin + +#### Parameters + +| Name | Type | Default value | Description | +| :------------- | :-------------------------------------- | :---------------------------- | :---------------------------- | +| `estimatedFee` | [`BigNumberish`](types.md#bignumberish) | `undefined` | The estimated fee | +| `overhead?` | `number` | `FeeMarginPercentage.MAX_FEE` | The overhead added to the gas | + +#### Returns + +`bigint` + +The maximum fee with the margin + +**`Example`** + +```typescript +const result = stark.estimatedFeeToMaxFee('8982300000000', 50); +// result = "13473450000000n" +``` + +#### Defined in + +[src/utils/stark.ts:184](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/stark.ts#L184) + +--- + +### estimateFeeToBounds + +▸ **estimateFeeToBounds**(`estimate`, `amountOverhead?`, `priceOverhead?`): [`ResourceBounds`](types.RPC.RPCSPEC07.API.md#resourcebounds) + +Calculates the maximum resource bounds for fee estimation. + +#### Parameters + +| Name | Type | Default value | Description | +| :---------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------ | :------------------------------------------------------------------------------------------- | +| `estimate` | `0n` \| \{ `unit`: `"WEI"` \| `"FRI"` ; `gas_consumed`: `string` ; `gas_price`: `string` ; `overall_fee`: `string` ; `data_gas_consumed`: `undefined` \| `string` ; `data_gas_price`: `undefined` \| `string` } | `undefined` | The estimate for the fee. If a BigInt is provided, the returned bounds will be set to '0x0'. | +| `amountOverhead?` | `number` | `FeeMarginPercentage.L1_BOUND_MAX_AMOUNT` | The percentage overhead added to the gas consumed or overall fee amount. | +| `priceOverhead?` | `number` | `FeeMarginPercentage.L1_BOUND_MAX_PRICE_PER_UNIT` | The percentage overhead added to the gas price per unit. | + +#### Returns + +[`ResourceBounds`](types.RPC.RPCSPEC07.API.md#resourcebounds) + +The maximum resource bounds for fee estimation. + +**`Throws`** + +If the estimate object is undefined or does not have the required properties. + +**`Example`** + +```typescript +const feeEstimated: FeeEstimate = { + gas_consumed: '0x3456a', + gas_price: '0xa45567567567ae4', + overall_fee: '0x2198F463A77A899A5668', + unit: 'WEI', +}; +const result = stark.estimateFeeToBounds(feeEstimated, 70, 50); +// result = { +// l2_gas: { max_amount: '0x0', max_price_per_unit: '0x0' }, +// l1_gas: { max_amount: '0x58f9a', max_price_per_unit: '0xf6801b01b01b856' } +// } +``` + +#### Defined in + +[src/utils/stark.ts:214](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/stark.ts#L214) + +--- + +### intDAM + +▸ **intDAM**(`dam`): [`EDAMode`](types.RPC.RPCSPEC07.API.md#edamode-1) + +Converts the data availability mode from EDataAvailabilityMode to EDAMode. + +#### Parameters + +| Name | Type | Description | +| :---- | :---------------------------------------------------------------------------- | :------------------------------------------ | +| `dam` | [`EDataAvailabilityMode`](types.RPC.RPCSPEC07.API.md#edataavailabilitymode-1) | The data availability mode to be converted. | + +#### Returns + +[`EDAMode`](types.RPC.RPCSPEC07.API.md#edamode-1) + +The converted data availability mode. + +**`Throws`** + +If the data availability mode is not a valid value. + +**`Example`** + +```typescript +const result = stark.intDAM(RPC.EDataAvailabilityMode.L1); +// result = 0 +``` + +#### Defined in + +[src/utils/stark.ts:253](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/stark.ts#L253) + +--- + +### toTransactionVersion + +▸ **toTransactionVersion**(`defaultVersion`, `providedVersion?`): [`ETransactionVersion`](types.RPC.RPCSPEC07.API.md#etransactionversion-1) + +Convert to ETransactionVersion or throw an error. +Return providedVersion is specified else return defaultVersion + +#### Parameters + +| Name | Type | Description | +| :----------------- | :-------------------------------------- | :----------------------------------- | +| `defaultVersion` | [`BigNumberish`](types.md#bignumberish) | default estimate transaction version | +| `providedVersion?` | [`BigNumberish`](types.md#bignumberish) | estimate transaction version | + +#### Returns + +[`ETransactionVersion`](types.RPC.RPCSPEC07.API.md#etransactionversion-1) + +if providedVersion is not provided, returns the default estimate version, else return the provided version + +**`Throws`** + +if estimate transaction version or default estimate transaction version is unknown + +**`Example`** + +```typescript +const result = stark.toTransactionVersion( + '0x100000000000000000000000000000003', + stark.toFeeVersion(2) +); +// result = "0x100000000000000000000000000000002" +``` + +#### Defined in + +[src/utils/stark.ts:272](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/stark.ts#L272) + +--- + +### toFeeVersion + +▸ **toFeeVersion**(`providedVersion?`): [`ETransactionVersion`](types.RPC.RPCSPEC07.API.md#etransactionversion-1) \| `undefined` + +Convert Transaction version to Fee version or throw an error + +#### Parameters + +| Name | Type | Description | +| :----------------- | :-------------------------------------- | :----------------------------------------------- | +| `providedVersion?` | [`BigNumberish`](types.md#bignumberish) | 0..3 number representing the transaction version | + +#### Returns + +[`ETransactionVersion`](types.RPC.RPCSPEC07.API.md#etransactionversion-1) \| `undefined` + +the fee estimation version corresponding to the transaction version provided + +**`Throws`** + +if the transaction version is unknown + +**`Example`** + +```typescript +const result = stark.toFeeVersion(2); +// result = "0x100000000000000000000000000000002" +``` + +#### Defined in + +[src/utils/stark.ts:300](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/stark.ts#L300) + +--- + +### v3Details + +▸ **v3Details**(`details`): `V3Details` + +Return provided or default v3 tx details + +#### Parameters + +| Name | Type | Description | +| :-------- | :------------------------------------------------------------ | :------------------------- | +| `details` | [`UniversalDetails`](../interfaces/types.UniversalDetails.md) | details of the transaction | + +#### Returns + +`V3Details` + +an object including the V3 transaction details. + +**`Example`** + +```typescript +const detail: UniversalDetails = { tip: 3456n }; +const result = stark.v3Details(detail); +// result = { +// tip: 3456n, +// paymasterData: [], +// accountDeploymentData: [], +// nonceDataAvailabilityMode: 'L1', +// feeDataAvailabilityMode: 'L1', +// resourceBounds: { +// l2_gas: { max_amount: '0x0', max_price_per_unit: '0x0' }, +// l1_gas: { max_amount: '0x0', max_price_per_unit: '0x0' } +// } +// } +``` + +#### Defined in + +[src/utils/stark.ts:334](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/stark.ts#L334) + +--- + +### reduceV2 + +▸ **reduceV2**(`providedVersion`): [`ETransactionVersion`](types.RPC.RPCSPEC07.API.md#etransactionversion-1) + +It will reduce V2 to V1, else (V3) stay the same +F2 -> F1 +V2 -> V1 +F3 -> F3 +V3 -> V3 + +#### Parameters + +| Name | Type | +| :---------------- | :------------------------------------------------------------------------ | +| `providedVersion` | [`ETransactionVersion`](types.RPC.RPCSPEC07.API.md#etransactionversion-1) | + +#### Returns + +[`ETransactionVersion`](types.RPC.RPCSPEC07.API.md#etransactionversion-1) + +if v2 then returns v1. if v3 then return v3 + +**`Example`** + +```typescript +const result = stark.reduceV2(constants.TRANSACTION_VERSION.V2); +// result = "0x1" +``` + +#### Defined in + +[src/utils/stark.ts:359](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/stark.ts#L359) + +--- + +### getFullPublicKey + +▸ **getFullPublicKey**(`privateKey`): `string` + +get the hex string of the full public key related to a Starknet private key. + +#### Parameters + +| Name | Type | Description | +| :----------- | :-------------------------------------- | :---------------------- | +| `privateKey` | [`BigNumberish`](types.md#bignumberish) | a 252 bits private key. | + +#### Returns + +`string` + +an hex string of a 520 bit number, representing the full public key related to `privateKey`. + +**`Example`** + +```typescript +const result = ec.getFullPublicKey( + '0x43b7240d227aa2fb8434350b3321c40ac1b88c7067982549e7609870621b535' +); +// result = "0x0400b730bd22358612b5a67f8ad52ce80f9e8e893639ade263537e6ef35852e5d3057795f6b090f7c6985ee143f798608a53b3659222c06693c630857a10a92acf" +``` + +#### Defined in + +[src/utils/stark.ts:375](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/stark.ts#L375) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/starknetId.md b/www/versioned_docs/version-6.24.1/API/namespaces/starknetId.md new file mode 100644 index 000000000..74af96251 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/starknetId.md @@ -0,0 +1,522 @@ +--- +id: 'starknetId' +title: 'Namespace: starknetId' +sidebar_label: 'starknetId' +sidebar_position: 0 +custom_edit_url: null +--- + +## Variables + +### StarknetIdContract + +• `Const` **StarknetIdContract**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------- | :-------------------------------------------------------------------- | +| `MAINNET` | `"0x6ac597f8116f886fa1c97a23fa4e08299975ecaf6b598873ca6792b9bbfb678"` | +| `TESTNET_SEPOLIA` | `"0x154bc2e1af9260b9e66af0e9c46fc757ff893b3ff6a85718a810baf1474"` | + +#### Defined in + +[src/utils/starknetId.ts:127](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/starknetId.ts#L127) + +--- + +### StarknetIdIdentityContract + +• `Const` **StarknetIdIdentityContract**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------- | :--------------------------------------------------------------------- | +| `MAINNET` | `"0x05dbdedc203e92749e2e746e2d40a768d966bd243df04a6b712e222bc040a9af"` | +| `TESTNET_SEPOLIA` | `"0x3697660a0981d734780731949ecb2b4a38d6a58fc41629ed611e8defda"` | + +#### Defined in + +[src/utils/starknetId.ts:157](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/starknetId.ts#L157) + +--- + +### StarknetIdMulticallContract + +• `Const` **StarknetIdMulticallContract**: `"0x034ffb8f4452df7a613a0210824d6414dbadcddce6c6e19bf4ddc9e22ce5f970"` + +#### Defined in + +[src/utils/starknetId.ts:189](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/starknetId.ts#L189) + +--- + +### StarknetIdVerifierContract + +• `Const` **StarknetIdVerifierContract**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------- | :--------------------------------------------------------------------- | +| `MAINNET` | `"0x07d14dfd8ee95b41fce179170d88ba1f0d5a512e13aeb232f19cfeec0a88f8bf"` | +| `TESTNET_SEPOLIA` | `"0x60B94fEDe525f815AE5E8377A463e121C787cCCf3a36358Aa9B18c12c4D566"` | + +#### Defined in + +[src/utils/starknetId.ts:217](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/starknetId.ts#L217) + +--- + +### StarknetIdPfpContract + +• `Const` **StarknetIdPfpContract**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------- | :--------------------------------------------------------------------- | +| `MAINNET` | `"0x070aaa20ec4a46da57c932d9fd89ca5e6bb9ca3188d3df361a32306aff7d59c7"` | +| `TESTNET_SEPOLIA` | `"0x9e7bdb8dabd02ea8cfc23b1d1c5278e46490f193f87516ed5ff2dfec02"` | + +#### Defined in + +[src/utils/starknetId.ts:247](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/starknetId.ts#L247) + +--- + +### StarknetIdPopContract + +• `Const` **StarknetIdPopContract**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------- | :--------------------------------------------------------------------- | +| `MAINNET` | `"0x0293eb2ba9862f762bd3036586d5755a782bd22e6f5028320f1d0405fd47bff4"` | +| `TESTNET_SEPOLIA` | `"0x15ae88ae054caa74090b89025c1595683f12edf7a4ed2ad0274de3e1d4a"` | + +#### Defined in + +[src/utils/starknetId.ts:279](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/starknetId.ts#L279) + +## Functions + +### useDecoded + +▸ **useDecoded**(`encoded`): `string` + +Decodes an array of BigInts into a string using the given algorithm. + +#### Parameters + +| Name | Type | Description | +| :-------- | :--------- | :---------------------------- | +| `encoded` | `bigint`[] | The encoded array of BigInts. | + +#### Returns + +`string` + +The decoded string. + +**`Example`** + +```typescript +const result = starknetId.useDecoded([3015206943634620n]); +// result = "starknetjs.stark" +``` + +#### Defined in + +[src/utils/starknetId.ts:33](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/starknetId.ts#L33) + +--- + +### useEncoded + +▸ **useEncoded**(`decoded`): `bigint` + +Encodes a string into a bigint value. + +#### Parameters + +| Name | Type | Description | +| :-------- | :------- | :------------------------ | +| `decoded` | `string` | The string to be encoded. | + +#### Returns + +`bigint` + +The encoded bigint value. + +**`Example`** + +```typescript +const result = starknetId.useEncoded('starknet.js'); +// result = 3015206943634620n +``` + +#### Defined in + +[src/utils/starknetId.ts:85](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/starknetId.ts#L85) + +--- + +### getStarknetIdContract + +▸ **getStarknetIdContract**(`chainId`): `string` + +Returns the Starknet ID contract address based on the provided chain ID. + +#### Parameters + +| Name | Type | Description | +| :-------- | :--------------------------------------------------------- | :------------------------------------ | +| `chainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | The chain ID of the Starknet network. | + +#### Returns + +`string` + +The Starknet ID contract address. + +**`Throws`** + +Throws an error if the Starknet ID contract is not deployed on the network. + +**`Example`** + +```typescript +const result = starknetId.getStarknetIdContract(constants.StarknetChainId.SN_SEPOLIA); +// result = "0x154bc2e1af9260b9e66af0e9c46fc757ff893b3ff6a85718a810baf1474" +``` + +#### Defined in + +[src/utils/starknetId.ts:144](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/starknetId.ts#L144) + +--- + +### getStarknetIdIdentityContract + +▸ **getStarknetIdIdentityContract**(`chainId`): `string` + +Returns the Starknet ID identity contract address for the given chain ID. + +#### Parameters + +| Name | Type | Description | +| :-------- | :--------------------------------------------------------- | :-------------------------------------- | +| `chainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | The chain ID for the specified network. | + +#### Returns + +`string` + +The Starknet ID identity contract address for the specified network. + +**`Throws`** + +If the Starknet ID verifier contract is not deployed on the network. + +**`Example`** + +```typescript +const result = starknetId.getStarknetIdIdentityContract(constants.StarknetChainId.SN_SEPOLIA); +// result = "0x3697660a0981d734780731949ecb2b4a38d6a58fc41629ed611e8defda" +``` + +#### Defined in + +[src/utils/starknetId.ts:176](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/starknetId.ts#L176) + +--- + +### getStarknetIdMulticallContract + +▸ **getStarknetIdMulticallContract**(`chainId`): `string` + +Returns the Starknet.id multicall contract address based on the provided chainId. + +#### Parameters + +| Name | Type | Description | +| :-------- | :--------------------------------------------------------- | :-------------------------- | +| `chainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | The chainId of the network. | + +#### Returns + +`string` + +- The address of the Starknet.id multicall contract. + +**`Throws`** + +- If the Starknet.id multicall contract is not deployed on the network. + +**`Example`** + +```typescript +const result = starknetId.getStarknetIdMulticallContract(constants.StarknetChainId.SN_SEPOLIA); +// result = "0x034ffb8f4452df7a613a0210824d6414dbadcddce6c6e19bf4ddc9e22ce5f970" +``` + +#### Defined in + +[src/utils/starknetId.ts:204](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/starknetId.ts#L204) + +--- + +### getStarknetIdVerifierContract + +▸ **getStarknetIdVerifierContract**(`chainId`): `string` + +Returns the address of the Starknet ID Verifier contract based on the specified chain ID. + +#### Parameters + +| Name | Type | Description | +| :-------- | :--------------------------------------------------------- | :---------------------------- | +| `chainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | The ID of the Starknet chain. | + +#### Returns + +`string` + +- The address of the Starknet ID Verifier contract. + +**`Throws`** + +- If the Starknet ID Verifier contract is not deployed on the specified network. + +**`Example`** + +```typescript +const result = starknetId.getStarknetIdVerifierContract(constants.StarknetChainId.SN_SEPOLIA); +// result = "0x60B94fEDe525f815AE5E8377A463e121C787cCCf3a36358Aa9B18c12c4D566" +``` + +#### Defined in + +[src/utils/starknetId.ts:234](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/starknetId.ts#L234) + +--- + +### getStarknetIdPfpContract + +▸ **getStarknetIdPfpContract**(`chainId`): `string` + +Retrieves the contract address of the Starknet.id profile picture verifier contract based on the given chain ID. + +#### Parameters + +| Name | Type | Description | +| :-------- | :--------------------------------------------------------- | :--------------------------- | +| `chainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | The chain ID of the network. | + +#### Returns + +`string` + +- The contract address of the Starknet.id profile picture verifier contract. + +**`Throws`** + +- Throws an error if the Starknet.id profile picture verifier contract is not yet deployed on the network. + +**`Example`** + +```typescript +const result = starknetId.getStarknetIdPfpContract(constants.StarknetChainId.SN_SEPOLIA); +// result = "0x9e7bdb8dabd02ea8cfc23b1d1c5278e46490f193f87516ed5ff2dfec02" +``` + +#### Defined in + +[src/utils/starknetId.ts:264](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/starknetId.ts#L264) + +--- + +### getStarknetIdPopContract + +▸ **getStarknetIdPopContract**(`chainId`): `string` + +Retrieves the Starknet ID Proof of Personhood (IdPop) verifier contract address for the given chain ID. + +#### Parameters + +| Name | Type | Description | +| :-------- | :--------------------------------------------------------- | :------------------------------------ | +| `chainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | The chain ID of the Starknet network. | + +#### Returns + +`string` + +- The Starknet ID Pop contract address. + +**`Throws`** + +- If the Starknet ID Pop contract is not deployed on the specified network. + +**`Example`** + +```typescript +const result = starknetId.getStarknetIdPopContract(constants.StarknetChainId.SN_SEPOLIA); +// result = "0x15ae88ae054caa74090b89025c1595683f12edf7a4ed2ad0274de3e1d4a" +``` + +#### Defined in + +[src/utils/starknetId.ts:296](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/starknetId.ts#L296) + +--- + +### execution + +▸ **execution**(`staticEx?`, `ifEqual?`, `ifNotEqual?`): [`CairoCustomEnum`](../classes/CairoCustomEnum.md) + +Returns a CairoCustomEnum object. + +Functions to build CairoCustomEnum for multiCall contracts + +#### Parameters + +| Name | Type | Default value | Description | +| :------------ | :--------- | :------------ | :------------------------------------------------------------------------ | +| `staticEx?` | `Object` | `undefined` | An optional object defining the "Static" value of the CairoCustomEnum. | +| `ifEqual?` | `number`[] | `undefined` | An optional array defining the "IfEqual" value of the CairoCustomEnum. | +| `ifNotEqual?` | `number`[] | `undefined` | An optional array defining the "IfNotEqual" value of the CairoCustomEnum. | + +#### Returns + +[`CairoCustomEnum`](../classes/CairoCustomEnum.md) + +- The created CairoCustomEnum object. + +**`Example`** + +```typescript +const result: CairoCustomEnum = starknetId.execution(undefined, [1, 2, 3], undefined); +// result = CairoCustomEnum { +// variant: { +// Static: undefined, +// IfEqual: { '0': 1, '1': 2, '2': 3 }, +// IfNotEqual: undefined +// } +// } +``` + +#### Defined in + +[src/utils/starknetId.ts:331](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/starknetId.ts#L331) + +--- + +### dynamicFelt + +▸ **dynamicFelt**(`hardcoded?`, `reference?`): [`CairoCustomEnum`](../classes/CairoCustomEnum.md) + +Creates a new instance of CairoCustomEnum. + +#### Parameters + +| Name | Type | Default value | Description | +| :----------- | :-------------------------------------- | :------------ | :------------------------------------------- | +| `hardcoded?` | [`BigNumberish`](types.md#bignumberish) | `undefined` | The hardcoded value for the CairoCustomEnum. | +| `reference?` | `number`[] | `undefined` | The reference array for the CairoCustomEnum. | + +#### Returns + +[`CairoCustomEnum`](../classes/CairoCustomEnum.md) + +The new instance of CairoCustomEnum. + +**`Example`** + +```typescript +const result: CairoCustomEnum = starknetId.dynamicFelt(undefined, [1, 2]); +// result = CairoCustomEnum { +// variant: { Hardcoded: undefined, Reference: { '0': 1, '1': 2 } } +// } +``` + +#### Defined in + +[src/utils/starknetId.ts:357](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/starknetId.ts#L357) + +--- + +### dynamicCallData + +▸ **dynamicCallData**(`hardcoded?`, `reference?`, `arrayReference?`): [`CairoCustomEnum`](../classes/CairoCustomEnum.md) + +Creates a new instance of CairoCustomEnum with the given parameters. + +#### Parameters + +| Name | Type | Default value | Description | +| :---------------- | :---------------------------------------- | :------------ | :------------------------------------ | +| `hardcoded?` | [`BigNumberish`](types.md#bignumberish) | `undefined` | The hardcoded value. | +| `reference?` | [`BigNumberish`](types.md#bignumberish)[] | `undefined` | The reference value (optional). | +| `arrayReference?` | [`BigNumberish`](types.md#bignumberish)[] | `undefined` | The array reference value (optional). | + +#### Returns + +[`CairoCustomEnum`](../classes/CairoCustomEnum.md) + +The new instance of CairoCustomEnum. + +**`Example`** + +```typescript +const result: CairoCustomEnum = starknetId.dynamicCallData(undefined, [1, 2], undefined); +// result = CairoCustomEnum { +// variant: { +// Hardcoded: undefined, +// Reference: { '0': 1, '1': 2 }, +// ArrayReference: undefined +// } +// } +``` + +#### Defined in + +[src/utils/starknetId.ts:385](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/starknetId.ts#L385) + +--- + +### isStarkDomain + +▸ **isStarkDomain**(`domain`): `boolean` + +Check if a given string is a valid Starknet.id domain. + +#### Parameters + +| Name | Type | Description | +| :------- | :------- | :----------------------------- | +| `domain` | `string` | The domain string to validate. | + +#### Returns + +`boolean` + +- True if the domain is a valid Starknet.id domain, false otherwise. + +**`Example`** + +```typescript +const result = starknetId.isStarkDomain('example.stark'); +// result = true + +const result2 = starknetId.isStarkDomain('invalid-domain'); +// result2 = false +``` + +#### Defined in + +[src/utils/starknetId.ts:411](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/starknetId.ts#L411) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/transaction.md b/www/versioned_docs/version-6.24.1/API/namespaces/transaction.md new file mode 100644 index 000000000..f699bd151 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/transaction.md @@ -0,0 +1,343 @@ +--- +id: 'transaction' +title: 'Namespace: transaction' +sidebar_label: 'transaction' +sidebar_position: 0 +custom_edit_url: null +--- + +## Functions + +### buildUDCCall + +▸ **buildUDCCall**(`payload`, `address`): `Object` + +Builds a UDCCall object. + +#### Parameters + +| Name | Type | Description | +| :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------- | +| `payload` | [`UniversalDeployerContractPayload`](types.md#universaldeployercontractpayload) \| [`UniversalDeployerContractPayload`](types.md#universaldeployercontractpayload)[] | the payload data for the UDCCall. Can be a single payload object or an array of payload objects. | +| `address` | `string` | the address to be used in the UDCCall | + +#### Returns + +`Object` + +the UDCCall object containing an array of calls and an array of addresses. + +| Name | Type | +| :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `calls` | \{ `contractAddress`: `"0x041a78e741e5af2fec34b695679bc6891742439f7afb8484ecd7766661ad02bf"` = UDC.ADDRESS; `entrypoint`: `"deployContract"` = UDC.ENTRYPOINT; `calldata`: [`BigNumberish`](types.md#bignumberish)[] }[] | +| `addresses` | `string`[] | + +**`Example`** + +```typescript +const payload: UniversalDeployerContractPayload = { + classHash: '0x1234567890123456789012345678901234567890', + salt: '0x0987654321098765432109876543210987654321', + unique: true, + constructorCalldata: [1, 2, 3], +}; +const address = '0xABCDEF1234567890ABCDEF1234567890ABCDEF12'; +const result = transaction.buildUDCCall(payload, address); +// result = { +// calls: [ +// { +// contractAddress: "0xABCDEF1234567890ABCDEF1234567890ABCDEF12", +// entrypoint: "functionName", +// calldata: [classHash, salt, true, 3, 1, 2, 3] +// }], +// addresses: ["0x6fD084B56a7EDc5C06B3eB40f97Ae5A0C707A865"] +// } +``` + +#### Defined in + +[src/utils/transaction.ts:222](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transaction.ts#L222) + +--- + +### getVersionsByType + +▸ **getVersionsByType**(`versionType?`): \{ `v1`: `"0x100000000000000000000000000000001"` = ETransactionVersion.F1; `v2`: `"0x100000000000000000000000000000002"` = ETransactionVersion.F2; `v3`: `"0x100000000000000000000000000000003"` = ETransactionVersion.F3 } \| \{ `v1`: `"0x1"` = ETransactionVersion.V1; `v2`: `"0x2"` = ETransactionVersion.V2; `v3`: `"0x3"` = ETransactionVersion.V3 } + +Return transaction versions based on version type, default version type is 'transaction'. + +#### Parameters + +| Name | Type | Description | +| :------------- | :------------------------- | :------------------------------------------- | +| `versionType?` | `"fee"` \| `"transaction"` | the type of version ("fee" or "transaction") | + +#### Returns + +\{ `v1`: `"0x100000000000000000000000000000001"` = ETransactionVersion.F1; `v2`: `"0x100000000000000000000000000000002"` = ETransactionVersion.F2; `v3`: `"0x100000000000000000000000000000003"` = ETransactionVersion.F3 } \| \{ `v1`: `"0x1"` = ETransactionVersion.V1; `v2`: `"0x2"` = ETransactionVersion.V2; `v3`: `"0x3"` = ETransactionVersion.V3 } + +an object containing the transaction versions. + +**`Example`** + +```typescript +const result = transaction.getVersionsByType('fee'); +// result = { +// v1: '0x100000000000000000000000000000001', +// v2: '0x100000000000000000000000000000002', +// v3: '0x100000000000000000000000000000003' +// } +``` + +#### Defined in + +[src/utils/transaction.ts:278](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transaction.ts#L278) + +--- + +### transformCallsToMulticallArrays + +▸ **transformCallsToMulticallArrays**(`calls`): `Object` + +Transforms a list of Calls, each with their own calldata, into +two arrays: one with the entry points, and one with the concatenated calldata + +#### Parameters + +| Name | Type | Description | +| :------ | :------------------------ | :------------------------------ | +| `calls` | [`Call`](types.md#call)[] | the list of calls to transform. | + +#### Returns + +`Object` + +An object containing two arrays: callArray and calldata. + +| Name | Type | +| :---------- | :---------------------------------------- | +| `callArray` | [`ParsedStruct`](types.md#parsedstruct)[] | +| `calldata` | [`Calldata`](types.md#calldata) | + +**`Example`** + +```typescript +const calls: Call[] = [ + { + contractAddress: '0x1234567890123456789012345678901234567890', + entrypoint: 'functionName', + calldata: [1, 2, 3], + }, + { + contractAddress: '0x0987654321098765432109876543210987654321', + entrypoint: 'anotherFunction', + calldata: [4, 5, 6], + }, +]; +const result = transaction.transformCallsToMulticallArrays(calls); +// result = { +// callArray: [ +// { to: "0x1234567890123456789012345678901234567890", selector: "1234567890", +// data_offset: "0", data_len: "3" }, +// { to: "0x0987654321098765432109876543210987654321", selector: "1234567890", +// data_offset: "0987654321", data_offset: "3", data_len: "3"} +// ], calldata: [1, 2, 3, 4, 5, 6] +// } +``` + +#### Defined in + +[src/utils/transaction.ts:49](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transaction.ts#L49) + +--- + +### fromCallsToExecuteCalldata + +▸ **fromCallsToExecuteCalldata**(`calls`): [`Calldata`](types.md#calldata) + +Transforms a list of calls into the Cairo 0 `__execute__` calldata. + +#### Parameters + +| Name | Type | Description | +| :------ | :------------------------ | :----------------------------- | +| `calls` | [`Call`](types.md#call)[] | the list of calls to transform | + +#### Returns + +[`Calldata`](types.md#calldata) + +the Cairo 0 `__execute__` calldata + +**`Example`** + +```typescript +const calls: Call[] = [ + { + contractAddress: '0x1234567890123456789012345678901234567890', + entrypoint: 'functionName', + calldata: [1, 2, 3], + }, + { + contractAddress: '0x0987654321098765432109876543210987654321', + entrypoint: 'anotherFunction', + calldata: [4, 5, 6], + }, +]; +const result = transaction.fromCallsToExecuteCalldata(calls); +// result = ['2', '103929005307130220006098923584552504982110632080', +// '784552248838722632831848474045274978537388011177294206940059575485454596699', '0', +// '3', '54400338722927882010739357306608455014511100705', +// '836430224577382061379420368022192503799782058803937958828224424676927281484', +// '3', '3', '6', '1', '2', '3', '4', '5', '6'] +``` + +#### Defined in + +[src/utils/transaction.ts:94](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transaction.ts#L94) + +--- + +### fromCallsToExecuteCalldataWithNonce + +▸ **fromCallsToExecuteCalldataWithNonce**(`calls`, `nonce`): [`Calldata`](types.md#calldata) + +Transforms a list of calls into the Cairo 0 `__execute__` calldata including nonce. + +#### Parameters + +| Name | Type | +| :------ | :-------------------------------------- | +| `calls` | [`Call`](types.md#call)[] | +| `nonce` | [`BigNumberish`](types.md#bignumberish) | + +#### Returns + +[`Calldata`](types.md#calldata) + +**`Deprecated`** + +#### Defined in + +[src/utils/transaction.ts:104](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transaction.ts#L104) + +--- + +### transformCallsToMulticallArrays_cairo1 + +▸ **transformCallsToMulticallArrays_cairo1**(`calls`): [`CallStruct`](../interfaces/types.CallStruct.md)[] + +Format Data inside Calls + +#### Parameters + +| Name | Type | +| :------ | :------------------------ | +| `calls` | [`Call`](types.md#call)[] | + +#### Returns + +[`CallStruct`](../interfaces/types.CallStruct.md)[] + +**`Deprecated`** + +Not required for getting execute Calldata + +#### Defined in + +[src/utils/transaction.ts:112](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transaction.ts#L112) + +--- + +### fromCallsToExecuteCalldata_cairo1 + +▸ **fromCallsToExecuteCalldata_cairo1**(`calls`): [`Calldata`](types.md#calldata) + +Transforms a list of calls into the Cairo 1 `__execute__` calldata. + +#### Parameters + +| Name | Type | Description | +| :------ | :------------------------ | :------------------------------ | +| `calls` | [`Call`](types.md#call)[] | the list of calls to transform. | + +#### Returns + +[`Calldata`](types.md#calldata) + +the Cairo 1 `__execute__` calldata. + +**`Example`** + +```typescript +const calls: Call[] = [ + { + contractAddress: '0x1234567890123456789012345678901234567890', + entrypoint: 'functionName', + calldata: [1, 2, 3], + }, + { + contractAddress: '0x0987654321098765432109876543210987654321', + entrypoint: 'anotherFunction', + calldata: [4, 5, 6], + }, +]; +const result = transaction.fromCallsToExecuteCalldata_cairo1(calls); +// result = ['2', '103929005307130220006098923584552504982110632080', +// '784552248838722632831848474045274978537388011177294206940059575485454596699', +// '3', '1', '2', '3', '54400338722927882010739357306608455014511100705', +// '836430224577382061379420368022192503799782058803937958828224424676927281484', +// '3', '4', '5', '6'] +``` + +#### Defined in + +[src/utils/transaction.ts:147](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transaction.ts#L147) + +--- + +### getExecuteCalldata + +▸ **getExecuteCalldata**(`calls`, `cairoVersion?`): [`Calldata`](types.md#calldata) + +Create `__execute__` Calldata from Calls based on Cairo versions. + +#### Parameters + +| Name | Type | Default value | Description | +| :------------- | :-------------------------------------- | :------------ | :----------------------------- | +| `calls` | [`Call`](types.md#call)[] | `undefined` | the list of calls to transform | +| `cairoVersion` | [`CairoVersion`](types.md#cairoversion) | `'0'` | the Cairo version | + +#### Returns + +[`Calldata`](types.md#calldata) + +the `__execute__` calldata. + +**`Example`** + +```typescript +const calls: Call[] = [ + { + contractAddress: '0x1234567890123456789012345678901234567890', + entrypoint: 'functionName', + calldata: [1, 2, 3], + }, + { + contractAddress: '0x0987654321098765432109876543210987654321', + entrypoint: 'anotherFunction', + calldata: [4, 5, 6], + }, +]; +const result = transaction.getExecuteCalldata(calls, '1'); +// result = ['2', '103929005307130220006098923584552504982110632080', +// '784552248838722632831848474045274978537388011177294206940059575485454596699', +// '3', '1', '2', '3', '54400338722927882010739357306608455014511100705', +// '836430224577382061379420368022192503799782058803937958828224424676927281484', +// '3', '4', '5', '6'] +``` + +#### Defined in + +[src/utils/transaction.ts:188](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/transaction.ts#L188) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/typedData.md b/www/versioned_docs/version-6.24.1/API/namespaces/typedData.md new file mode 100644 index 000000000..8243376a2 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/typedData.md @@ -0,0 +1,495 @@ +--- +id: 'typedData' +title: 'Namespace: typedData' +sidebar_label: 'typedData' +sidebar_position: 0 +custom_edit_url: null +--- + +## References + +### TypedDataRevision + +Re-exports [TypedDataRevision](types.RPC.RPCSPEC07.WALLET_API.md#typeddatarevision-1) + +--- + +### StarknetEnumType + +Re-exports [StarknetEnumType](types.RPC.RPCSPEC07.WALLET_API.md#starknetenumtype) + +--- + +### StarknetMerkleType + +Re-exports [StarknetMerkleType](types.RPC.RPCSPEC07.WALLET_API.md#starknetmerkletype) + +--- + +### StarknetType + +Re-exports [StarknetType](types.RPC.RPCSPEC07.WALLET_API.md#starknettype) + +--- + +### StarknetDomain + +Re-exports [StarknetDomain](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetDomain.md) + +--- + +### TypedData + +Re-exports [TypedData](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) + +## Functions + +### validateTypedData + +▸ **validateTypedData**(`data`): data is TypedData + +Validates that `data` matches the EIP-712 JSON schema. + +#### Parameters + +| Name | Type | +| :----- | :-------- | +| `data` | `unknown` | + +#### Returns + +data is TypedData + +#### Defined in + +[src/utils/typedData.ts:102](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/typedData.ts#L102) + +--- + +### prepareSelector + +▸ **prepareSelector**(`selector`): `string` + +Prepares the selector for later use, if it's not already in correct format. +The selector in correct format is the starknet_keccak hash of the function name, encoded in ASCII. + +#### Parameters + +| Name | Type | Description | +| :--------- | :------- | :--------------------------- | +| `selector` | `string` | The selector to be prepared. | + +#### Returns + +`string` + +The prepared selector. + +**`Example`** + +```typescript +const result1 = prepareSelector('0xc14cfe23f3fa7ce7b1f8db7d7682305b1692293f71a61cc06637f0d8d8b6c8'); +// result1 = '0xc14cfe23f3fa7ce7b1f8db7d7682305b1692293f71a61cc06637f0d8d8b6c8' + +const result2 = prepareSelector('myFunction'); +// result2 = '0xc14cfe23f3fa7ce7b1f8db7d7682305b1692293f71a61cc06637f0d8d8b6c8' +``` + +#### Defined in + +[src/utils/typedData.ts:125](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/typedData.ts#L125) + +--- + +### isMerkleTreeType + +▸ **isMerkleTreeType**(`type`): type is StarknetMerkleType + +Checks if the given Starknet type is a Merkle tree type. + +#### Parameters + +| Name | Type | Description | +| :----- | :--------------------------------------------------------------- | :-------------------------- | +| `type` | [`StarknetType`](types.RPC.RPCSPEC07.WALLET_API.md#starknettype) | The StarkNet type to check. | + +#### Returns + +type is StarknetMerkleType + +- True if the type is a Merkle tree type, false otherwise. + +**`Example`** + +```typescript +const type = { name: 'test', type: 'merkletree' }; +const result1 = isMerkleTreeType(type); +// result1 = true + +const type2 = { name: 'test', type: 'non-merkletree' }; +const result2 = isMerkleTreeType(type2); +// result2 = false +``` + +#### Defined in + +[src/utils/typedData.ts:147](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/typedData.ts#L147) + +--- + +### getDependencies + +▸ **getDependencies**(`types`, `type`, `dependencies?`, `contains?`, `revision?`): `string`[] + +Get the dependencies of a struct type. If a struct has the same dependency multiple times, it's only included once +in the resulting array. + +#### Parameters + +| Name | Type | Default value | Description | +| :-------------- | :-------------------------------------------------------------------------------------- | :---------------- | :--------------------------------------------- | +| `types` | `Record`<`string`, [`StarknetType`](types.RPC.RPCSPEC07.WALLET_API.md#starknettype)[]\> | `undefined` | The types object containing all defined types. | +| `type` | `string` | `undefined` | The name of the type to get dependencies for. | +| `dependencies?` | `string`[] | `[]` | The array to store dependencies. | +| `contains?` | `string` | `''` | The type contained within the struct. | +| `revision?` | [`TypedDataRevision`](types.RPC.RPCSPEC07.WALLET_API.md#typeddatarevision-1) | `Revision.LEGACY` | The revision of the TypedData. | + +#### Returns + +`string`[] + +The array of dependencies. + +#### Defined in + +[src/utils/typedData.ts:163](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/typedData.ts#L163) + +--- + +### encodeType + +▸ **encodeType**(`types`, `type`, `revision?`): `string` + +Encode a type to a string. All dependent types are alphabetically sorted. + +#### Parameters + +| Name | Type | Default value | Description | +| :---------- | :-------------------------------------------------------------------------------------- | :---------------- | :--------------------------------------------- | +| `types` | `Record`<`string`, [`StarknetType`](types.RPC.RPCSPEC07.WALLET_API.md#starknettype)[]\> | `undefined` | The types object containing all defined types. | +| `type` | `string` | `undefined` | The name of the type to encode. | +| `revision?` | [`TypedDataRevision`](types.RPC.RPCSPEC07.WALLET_API.md#typeddatarevision-1) | `Revision.LEGACY` | The revision of the TypedData. | + +#### Returns + +`string` + +The encoded string. + +**`Example`** + +```typescript +import typedDataExample from '../../__mocks__/typedData/baseExample.json'; + +const result = encodeType(typedDataExample.types, 'Mail'); +// result = "Mail(from:Person,to:Person,contents:felt)Person(name:felt,wallet:felt)"; +``` + +#### Defined in + +[src/utils/typedData.ts:245](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/typedData.ts#L245) + +--- + +### getTypeHash + +▸ **getTypeHash**(`types`, `type`, `revision?`): `string` + +Get a type string as hash. + +#### Parameters + +| Name | Type | Default value | Description | +| :---------- | :-------------------------------------------------------------------------------------- | :---------------- | :--------------------------------------------- | +| `types` | `Record`<`string`, [`StarknetType`](types.RPC.RPCSPEC07.WALLET_API.md#starknettype)[]\> | `undefined` | The types object containing all defined types. | +| `type` | `string` | `undefined` | The name of the type to hash. | +| `revision?` | [`TypedDataRevision`](types.RPC.RPCSPEC07.WALLET_API.md#typeddatarevision-1) | `Revision.LEGACY` | The revision of the TypedData. | + +#### Returns + +`string` + +The hash. + +**`Example`** + +```typescript +import typedDataExample from '../../__mocks__/typedData/baseExample.json'; + +const result = getTypeHash(typedDataExample.types, 'StarkNetDomain'); +// result = "0x1bfc207425a47a5dfa1a50a4f5241203f50624ca5fdf5e18755765416b8e288"; +``` + +#### Defined in + +[src/utils/typedData.ts:304](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/typedData.ts#L304) + +--- + +### encodeValue + +▸ **encodeValue**(`types`, `type`, `data`, `ctx?`, `revision?`): [`string`, `string`] + +Encodes a single value to an ABI serialisable string, number or Buffer. Returns the data as a tuple, which consists of +an array of ABI compatible types, and an array of corresponding values. + +#### Parameters + +| Name | Type | Default value | Description | +| :---------- | :-------------------------------------------------------------------------------------- | :---------------- | :--------------------------------------------- | +| `types` | `Record`<`string`, [`StarknetType`](types.RPC.RPCSPEC07.WALLET_API.md#starknettype)[]\> | `undefined` | The types object containing all defined types. | +| `type` | `string` | `undefined` | The name of the type to encode. | +| `data` | `unknown` | `undefined` | The data to encode. | +| `ctx?` | `Context` | `{}` | The context of the encoding process. | +| `revision?` | [`TypedDataRevision`](types.RPC.RPCSPEC07.WALLET_API.md#typeddatarevision-1) | `Revision.LEGACY` | The revision of the TypedData. | + +#### Returns + +[`string`, `string`] + +The ABI compatible type and corresponding value. + +**`Example`** + +```typescript +import { getSelectorFromName } from '../../src/utils/hash'; + +const selector = 'transfer'; +const selectorHash = getSelectorFromName(selector); +const result1 = encodeValue({}, 'felt', selectorHash); + +// result1 = ['felt', '0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e'] +``` + +#### Defined in + +[src/utils/typedData.ts:335](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/typedData.ts#L335) + +--- + +### encodeData + +▸ **encodeData**<`T`\>(`types`, `type`, `data`, `revision?`): [`string`[], `string`[]] + +Encode the data to an ABI encoded Buffer. The data should be a key -> value object with all the required values. +All dependent types are automatically encoded. + +#### Type parameters + +| Name | Type | +| :--- | :------------------------------------------------------------------------------- | +| `T` | extends [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) | + +#### Parameters + +| Name | Type | Default value | Description | +| :---------- | :--------------------------------------------------------------------------- | :---------------- | :--------------------------------------------- | +| `types` | `T`[``"types"``] | `undefined` | The types object containing all defined types. | +| `type` | `string` | `undefined` | The name of the type to encode. | +| `data` | `T`[``"message"``] | `undefined` | The data to encode. | +| `revision?` | [`TypedDataRevision`](types.RPC.RPCSPEC07.WALLET_API.md#typeddatarevision-1) | `Revision.LEGACY` | The revision of the TypedData. | + +#### Returns + +[`string`[], `string`[]] + +The ABI compatible types and corresponding values. + +#### Defined in + +[src/utils/typedData.ts:473](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/typedData.ts#L473) + +--- + +### getStructHash + +▸ **getStructHash**<`T`\>(`types`, `type`, `data`, `revision?`): `string` + +Get encoded data as a hash. The data should be a key -> value object with all the required values. +All dependent types are automatically encoded. + +#### Type parameters + +| Name | Type | +| :--- | :------------------------------------------------------------------------------- | +| `T` | extends [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) | + +#### Parameters + +| Name | Type | Default value | Description | +| :---------- | :--------------------------------------------------------------------------- | :---------------- | :--------------------------------------------- | +| `types` | `T`[``"types"``] | `undefined` | The types object containing all defined types. | +| `type` | `string` | `undefined` | The name of the type to hash. | +| `data` | `T`[``"message"``] | `undefined` | The data to hash. | +| `revision?` | [`TypedDataRevision`](types.RPC.RPCSPEC07.WALLET_API.md#typeddatarevision-1) | `Revision.LEGACY` | The revision of the TypedData. | + +#### Returns + +`string` + +The hash of the encoded data. + +**`Example`** + +```typescript +import exampleBaseTypes from '../../__mocks__/typedData/example_baseTypes.json'; + +const result = getStructHash( + exampleBaseTypes.types, + 'StarknetDomain', + exampleBaseTypes.domain as StarknetDomain, + TypedDataRevision.ACTIVE +); +// result = "0x555f72e550b308e50c1a4f8611483a174026c982a9893a05c185eeb85399657"; +``` + +#### Defined in + +[src/utils/typedData.ts:528](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/typedData.ts#L528) + +--- + +### getMessageHash + +▸ **getMessageHash**(`typedData`, `account`): `string` + +Get the SNIP-12 encoded message to sign, from the typedData object. + +#### Parameters + +| Name | Type | Description | +| :---------- | :----------------------------------------------------------------------- | :------------------------------- | +| `typedData` | [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) | The TypedData object. | +| `account` | [`BigNumberish`](types.md#bignumberish) | The account to sign the message. | + +#### Returns + +`string` + +The hash of the message to sign. + +**`Throws`** + +Will throw an error if the typedData does not match the JSON schema. + +**`Example`** + +```typescript +const exampleAddress = '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826'; +const typedDataStringExample = { + types: { + StarkNetDomain: [ + { name: 'name', type: 'felt' }, + { name: 'version', type: 'felt' }, + { name: 'chainId', type: 'felt' }, + ], + Person: [ + { name: 'name', type: 'felt' }, + { name: 'wallet', type: 'felt' }, + ], + String: [ + { name: 'len', type: 'felt' }, + { name: 'data', type: 'felt*' }, + ], + Mail: [ + { name: 'from', type: 'Person' }, + { name: 'to', type: 'Person' }, + { name: 'contents', type: 'String' }, + ], + }, + primaryType: 'Mail', + domain: { + name: 'StarkNet Mail', + version: '1', + chainId: 1, + }, + message: { + from: { + name: 'Cow', + wallet: exampleAddress, + }, + to: { + name: 'Bob', + wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB', + }, + contents: stringToStringStruct( + 'this is way longer than just 32 characters, to test if that is possible within a typedData struct.' + ), + }, +}; + +const result = getMessageHash(typedDataStringExample, exampleAddress); +// result = "0x70338fb11b8f70b68b261de8a322bcb004bd85e88ac47d9147982c7f5ac66fd" +``` + +#### Defined in + +[src/utils/typedData.ts:595](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/typedData.ts#L595) + +--- + +### verifyMessage + +▸ **verifyMessage**(`message`, `signature`, `fullPublicKey`, `accountAddress?`): `boolean` + +Checks if a signed EIP712 message is related to an account. +Valid for a standard Starknet signature. + +#### Parameters + +| Name | Type | Description | +| :---------------- | :----------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------- | +| `message` | [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) | a TypedMessage message, or the hash of an EIP712 message (SNIP-12). | +| `signature` | [`Signature`](types.md#signature) | a WeierstrassSignatureType signature, or an array of 2 strings. | +| `fullPublicKey` | [`BigNumberish`](types.md#bignumberish) | a number coded on 520 bits (from ec.getFullPublicKey()). | +| `accountAddress?` | [`BigNumberish`](types.md#bignumberish) | address of the account that has signed the message. Not needed with a message hash is provided in `message` | + +#### Returns + +`boolean` + +true if the message is verified. + +**`Example`** + +```typescript +const myTypedMessage: TypedMessage = .... ; +const sign: Signature = ["0x123...abc", "0x345...def"]; +const fullPubK = "0x0400b730bd22358612b5a67f8ad52ce80f9e8e893639ade263537e6ef35852e5d3057795f6b090f7c6985ee143f798608a53b3659222c06693c630857a10a92acf"; +const accountAddress = "0x43b7240d227aa2fb8434350b3321c40ac1b88c7067982549e7609870621b535"; +const result1 = typedData.verifyMessage(myTypedMessage, sign, fullPubK, accountAddress); +const result2 = typedData.verifyMessage(messageHash, sign, fullPubK); +// result1 = result2 = true +``` + +#### Defined in + +[src/utils/typedData.ts:632](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/typedData.ts#L632) + +▸ **verifyMessage**(`message`, `signature`, `fullPublicKey`): `boolean` + +#### Parameters + +| Name | Type | +| :-------------- | :-------------------------------------- | +| `message` | [`BigNumberish`](types.md#bignumberish) | +| `signature` | [`Signature`](types.md#signature) | +| `fullPublicKey` | [`BigNumberish`](types.md#bignumberish) | + +#### Returns + +`boolean` + +#### Defined in + +[src/utils/typedData.ts:638](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/typedData.ts#L638) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.JRPC.md b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.JRPC.md new file mode 100644 index 000000000..e085d344b --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.JRPC.md @@ -0,0 +1,87 @@ +--- +id: 'types.RPC.JRPC' +title: 'Namespace: JRPC' +sidebar_label: 'JRPC' +custom_edit_url: null +--- + +[types](types.md).[RPC](types.RPC.md).JRPC + +## Type Aliases + +### RequestBody + +Ƭ **RequestBody**: `Object` + +#### Type declaration + +| Name | Type | +| :-------- | :------------------- | +| `id` | `number` \| `string` | +| `jsonrpc` | `"2.0"` | +| `method` | `string` | +| `params?` | {} | + +#### Defined in + +[src/types/api/jsonrpc/index.ts:1](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/jsonrpc/index.ts#L1) + +--- + +### ResponseBody + +Ƭ **ResponseBody**: \{ `id`: `number` \| `string` ; `jsonrpc`: `"2.0"` } & [`SuccessResponseBody`](types.RPC.JRPC.md#successresponsebody) \| [`ErrorResponseBody`](types.RPC.JRPC.md#errorresponsebody) + +#### Defined in + +[src/types/api/jsonrpc/index.ts:8](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/jsonrpc/index.ts#L8) + +--- + +### SuccessResponseBody + +Ƭ **SuccessResponseBody**: `Object` + +#### Type declaration + +| Name | Type | +| :------- | :-------- | +| `result` | `unknown` | + +#### Defined in + +[src/types/api/jsonrpc/index.ts:13](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/jsonrpc/index.ts#L13) + +--- + +### ErrorResponseBody + +Ƭ **ErrorResponseBody**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :--------------------------------- | +| `error` | [`Error`](types.RPC.JRPC.md#error) | + +#### Defined in + +[src/types/api/jsonrpc/index.ts:17](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/jsonrpc/index.ts#L17) + +--- + +### Error + +Ƭ **Error**: `Object` + +#### Type declaration + +| Name | Type | +| :-------- | :-------- | +| `code` | `number` | +| `message` | `string` | +| `data?` | `unknown` | + +#### Defined in + +[src/types/api/jsonrpc/index.ts:21](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/jsonrpc/index.ts#L21) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC06.Errors.md b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC06.Errors.md new file mode 100644 index 000000000..a13ce556c --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC06.Errors.md @@ -0,0 +1,40 @@ +--- +id: 'types.RPC.RPCSPEC06.Errors' +title: 'Namespace: Errors' +sidebar_label: 'Errors' +custom_edit_url: null +--- + +[RPC](types.RPC.md).[RPCSPEC06](types.RPC.RPCSPEC06.md).Errors + +## Interfaces + +- [FAILED_TO_RECEIVE_TXN](../interfaces/types.RPC.RPCSPEC06.Errors.FAILED_TO_RECEIVE_TXN.md) +- [NO_TRACE_AVAILABLE](../interfaces/types.RPC.RPCSPEC06.Errors.NO_TRACE_AVAILABLE.md) +- [CONTRACT_NOT_FOUND](../interfaces/types.RPC.RPCSPEC06.Errors.CONTRACT_NOT_FOUND.md) +- [INVALID_MESSAGE_SELECTOR](../interfaces/types.RPC.RPCSPEC06.Errors.INVALID_MESSAGE_SELECTOR.md) +- [INVALID_CALL_DATA](../interfaces/types.RPC.RPCSPEC06.Errors.INVALID_CALL_DATA.md) +- [BLOCK_NOT_FOUND](../interfaces/types.RPC.RPCSPEC06.Errors.BLOCK_NOT_FOUND.md) +- [INVALID_BLOCK_HASH](../interfaces/types.RPC.RPCSPEC06.Errors.INVALID_BLOCK_HASH.md) +- [INVALID_TXN_INDEX](../interfaces/types.RPC.RPCSPEC06.Errors.INVALID_TXN_INDEX.md) +- [CLASS_HASH_NOT_FOUND](../interfaces/types.RPC.RPCSPEC06.Errors.CLASS_HASH_NOT_FOUND.md) +- [TXN_HASH_NOT_FOUND](../interfaces/types.RPC.RPCSPEC06.Errors.TXN_HASH_NOT_FOUND.md) +- [PAGE_SIZE_TOO_BIG](../interfaces/types.RPC.RPCSPEC06.Errors.PAGE_SIZE_TOO_BIG.md) +- [NO_BLOCKS](../interfaces/types.RPC.RPCSPEC06.Errors.NO_BLOCKS.md) +- [INVALID_CONTINUATION_TOKEN](../interfaces/types.RPC.RPCSPEC06.Errors.INVALID_CONTINUATION_TOKEN.md) +- [TOO_MANY_KEYS_IN_FILTER](../interfaces/types.RPC.RPCSPEC06.Errors.TOO_MANY_KEYS_IN_FILTER.md) +- [CONTRACT_ERROR](../interfaces/types.RPC.RPCSPEC06.Errors.CONTRACT_ERROR.md) +- [TRANSACTION_EXECUTION_ERROR](../interfaces/types.RPC.RPCSPEC06.Errors.TRANSACTION_EXECUTION_ERROR.md) +- [CLASS_ALREADY_DECLARED](../interfaces/types.RPC.RPCSPEC06.Errors.CLASS_ALREADY_DECLARED.md) +- [INVALID_TRANSACTION_NONCE](../interfaces/types.RPC.RPCSPEC06.Errors.INVALID_TRANSACTION_NONCE.md) +- [INSUFFICIENT_MAX_FEE](../interfaces/types.RPC.RPCSPEC06.Errors.INSUFFICIENT_MAX_FEE.md) +- [INSUFFICIENT_ACCOUNT_BALANCE](../interfaces/types.RPC.RPCSPEC06.Errors.INSUFFICIENT_ACCOUNT_BALANCE.md) +- [VALIDATION_FAILURE](../interfaces/types.RPC.RPCSPEC06.Errors.VALIDATION_FAILURE.md) +- [COMPILATION_FAILED](../interfaces/types.RPC.RPCSPEC06.Errors.COMPILATION_FAILED.md) +- [CONTRACT_CLASS_SIZE_IS_TOO_LARGE](../interfaces/types.RPC.RPCSPEC06.Errors.CONTRACT_CLASS_SIZE_IS_TOO_LARGE.md) +- [NON_ACCOUNT](../interfaces/types.RPC.RPCSPEC06.Errors.NON_ACCOUNT.md) +- [DUPLICATE_TX](../interfaces/types.RPC.RPCSPEC06.Errors.DUPLICATE_TX.md) +- [COMPILED_CLASS_HASH_MISMATCH](../interfaces/types.RPC.RPCSPEC06.Errors.COMPILED_CLASS_HASH_MISMATCH.md) +- [UNSUPPORTED_TX_VERSION](../interfaces/types.RPC.RPCSPEC06.Errors.UNSUPPORTED_TX_VERSION.md) +- [UNSUPPORTED_CONTRACT_CLASS_VERSION](../interfaces/types.RPC.RPCSPEC06.Errors.UNSUPPORTED_CONTRACT_CLASS_VERSION.md) +- [UNEXPECTED_ERROR](../interfaces/types.RPC.RPCSPEC06.Errors.UNEXPECTED_ERROR.md) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC06.SPEC.md b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC06.SPEC.md new file mode 100644 index 000000000..e391785ee --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC06.SPEC.md @@ -0,0 +1,1775 @@ +--- +id: 'types.RPC.RPCSPEC06.SPEC' +title: 'Namespace: SPEC' +sidebar_label: 'SPEC' +custom_edit_url: null +--- + +[RPC](types.RPC.md).[RPCSPEC06](types.RPC.RPCSPEC06.md).SPEC + +## Type Aliases + +### FELT + +Ƭ **FELT**: `string` + +A field element. represented by at most 63 hex digits + +**`Pattern`** + +^0x(0|[a-fA-F1-9]{1}[a-fA-F0-9]{0,62})$ + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:9](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L9) + +--- + +### ETH_ADDRESS + +Ƭ **ETH_ADDRESS**: `string` + +an ethereum address represented as 40 hex digits + +**`Pattern`** + +^0x[a-fA-F0-9]{40}$ + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:14](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L14) + +--- + +### STORAGE_KEY + +Ƭ **STORAGE_KEY**: `string` + +A storage key. Represented as up to 62 hex digits, 3 bits, and 5 leading zeroes. + +**`Pattern`** + +^0x0[0-7]{1}[a-fA-F0-9]{0,62}$ + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:19](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L19) + +--- + +### ADDRESS + +Ƭ **ADDRESS**: [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:20](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L20) + +--- + +### NUM_AS_HEX + +Ƭ **NUM_AS_HEX**: `string` + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:21](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L21) + +--- + +### u64 + +Ƭ **u64**: `string` + +64 bit integers, represented by hex string of length at most 16 +"pattern": "^0x(0|[a-fA-F1-9]{1}[a-fA-F0-9]{0,15})$" + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:26](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L26) + +--- + +### u128 + +Ƭ **u128**: `string` + +64 bit integers, represented by hex string of length at most 32 +"pattern": "^0x(0|[a-fA-F1-9]{1}[a-fA-F0-9]{0,31})$" + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:31](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L31) + +--- + +### SIGNATURE + +Ƭ **SIGNATURE**: [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:32](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L32) + +--- + +### BLOCK_NUMBER + +Ƭ **BLOCK_NUMBER**: `number` + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:33](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L33) + +--- + +### BLOCK_HASH + +Ƭ **BLOCK_HASH**: [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:34](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L34) + +--- + +### TXN_HASH + +Ƭ **TXN_HASH**: [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:35](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L35) + +--- + +### CHAIN_ID + +Ƭ **CHAIN_ID**: [`NUM_AS_HEX`](types.RPC.RPCSPEC06.SPEC.md#num_as_hex) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:36](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L36) + +--- + +### STRUCT_ABI_TYPE + +Ƭ **STRUCT_ABI_TYPE**: `"struct"` + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:37](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L37) + +--- + +### EVENT_ABI_TYPE + +Ƭ **EVENT_ABI_TYPE**: `"event"` + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:38](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L38) + +--- + +### FUNCTION_ABI_TYPE + +Ƭ **FUNCTION_ABI_TYPE**: `"function"` \| `"l1_handler"` \| `"constructor"` + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:39](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L39) + +--- + +### ENTRY_POINT_TYPE + +Ƭ **ENTRY_POINT_TYPE**: `"EXTERNAL"` \| `"L1_HANDLER"` \| `"CONSTRUCTOR"` + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:41](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L41) + +--- + +### CALL_TYPE + +Ƭ **CALL_TYPE**: `"DELEGATE"` \| `"LIBRARY_CALL"` \| `"CALL"` + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:43](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L43) + +--- + +### TXN_STATUS + +Ƭ **TXN_STATUS**: `"RECEIVED"` \| `"REJECTED"` \| `"ACCEPTED_ON_L2"` \| `"ACCEPTED_ON_L1"` + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:45](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L45) + +--- + +### SIMULATION_FLAG + +Ƭ **SIMULATION_FLAG**: `"SKIP_VALIDATE"` \| `"SKIP_FEE_CHARGE"` + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:47](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L47) + +--- + +### DA_MODE + +Ƭ **DA_MODE**: `"L1"` \| `"L2"` + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:49](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L49) + +--- + +### TXN_TYPE + +Ƭ **TXN_TYPE**: `"DECLARE"` \| `"DEPLOY"` \| `"DEPLOY_ACCOUNT"` \| `"INVOKE"` \| `"L1_HANDLER"` + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:50](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L50) + +--- + +### TXN_FINALITY_STATUS + +Ƭ **TXN_FINALITY_STATUS**: `"ACCEPTED_ON_L2"` \| `"ACCEPTED_ON_L1"` + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:51](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L51) + +--- + +### TXN_EXECUTION_STATUS + +Ƭ **TXN_EXECUTION_STATUS**: `"SUCCEEDED"` \| `"REVERTED"` + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:52](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L52) + +--- + +### BLOCK_STATUS + +Ƭ **BLOCK_STATUS**: `"PENDING"` \| `"ACCEPTED_ON_L2"` \| `"ACCEPTED_ON_L1"` \| `"REJECTED"` + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:53](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L53) + +--- + +### BLOCK_TAG + +Ƭ **BLOCK_TAG**: `"latest"` \| `"pending"` + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:54](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L54) + +--- + +### EVENTS_CHUNK + +Ƭ **EVENTS_CHUNK**: `Object` + +READ API + +#### Type declaration + +| Name | Type | +| :-------------------- | :------------------------------------------------------------- | +| `events` | [`EMITTED_EVENT`](types.RPC.RPCSPEC06.SPEC.md#emitted_event)[] | +| `continuation_token?` | `string` | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:60](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L60) + +--- + +### RESULT_PAGE_REQUEST + +Ƭ **RESULT_PAGE_REQUEST**: `Object` + +#### Type declaration + +| Name | Type | +| :-------------------- | :------- | +| `continuation_token?` | `string` | +| `chunk_size` | `number` | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:67](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L67) + +--- + +### EMITTED_EVENT + +Ƭ **EMITTED_EVENT**: [`EVENT`](types.RPC.RPCSPEC06.SPEC.md#event) & \{ `block_hash`: [`BLOCK_HASH`](types.RPC.RPCSPEC06.SPEC.md#block_hash) ; `block_number`: [`BLOCK_NUMBER`](types.RPC.RPCSPEC06.SPEC.md#block_number) ; `transaction_hash`: [`TXN_HASH`](types.RPC.RPCSPEC06.SPEC.md#txn_hash) } + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:74](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L74) + +--- + +### EVENT + +Ƭ **EVENT**: \{ `from_address`: [`ADDRESS`](types.RPC.RPCSPEC06.SPEC.md#address) } & [`EVENT_CONTENT`](types.RPC.RPCSPEC06.SPEC.md#event_content) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:80](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L80) + +--- + +### EVENT_CONTENT + +Ƭ **EVENT_CONTENT**: `Object` + +#### Type declaration + +| Name | Type | +| :----- | :------------------------------------------- | +| `keys` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | +| `data` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:84](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L84) + +--- + +### EVENT_FILTER + +Ƭ **EVENT_FILTER**: `Object` + +#### Type declaration + +| Name | Type | +| :------------ | :------------------------------------------------- | +| `from_block?` | [`BLOCK_ID`](types.RPC.RPCSPEC06.SPEC.md#block_id) | +| `to_block?` | [`BLOCK_ID`](types.RPC.RPCSPEC06.SPEC.md#block_id) | +| `address?` | [`ADDRESS`](types.RPC.RPCSPEC06.SPEC.md#address) | +| `keys?` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[][] | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:89](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L89) + +--- + +### BLOCK_ID + +Ƭ **BLOCK_ID**: \{ `block_hash?`: [`BLOCK_HASH`](types.RPC.RPCSPEC06.SPEC.md#block_hash) ; `block_number?`: [`BLOCK_NUMBER`](types.RPC.RPCSPEC06.SPEC.md#block_number) } \| [`BLOCK_TAG`](types.RPC.RPCSPEC06.SPEC.md#block_tag) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:96](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L96) + +--- + +### SYNC_STATUS + +Ƭ **SYNC_STATUS**: `Object` + +#### Type declaration + +| Name | Type | +| :-------------------- | :--------------------------------------------------------- | +| `starting_block_hash` | [`BLOCK_HASH`](types.RPC.RPCSPEC06.SPEC.md#block_hash) | +| `starting_block_num` | [`BLOCK_NUMBER`](types.RPC.RPCSPEC06.SPEC.md#block_number) | +| `current_block_hash` | [`BLOCK_HASH`](types.RPC.RPCSPEC06.SPEC.md#block_hash) | +| `current_block_num` | [`BLOCK_NUMBER`](types.RPC.RPCSPEC06.SPEC.md#block_number) | +| `highest_block_hash` | [`BLOCK_HASH`](types.RPC.RPCSPEC06.SPEC.md#block_hash) | +| `highest_block_num` | [`BLOCK_NUMBER`](types.RPC.RPCSPEC06.SPEC.md#block_number) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:103](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L103) + +--- + +### NEW_CLASSES + +Ƭ **NEW_CLASSES**: `Object` + +#### Type declaration + +| Name | Type | +| :-------------------- | :----------------------------------------- | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `compiled_class_hash` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:112](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L112) + +--- + +### REPLACED_CLASS + +Ƭ **REPLACED_CLASS**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :----------------------------------------- | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `contract_address` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:117](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L117) + +--- + +### NONCE_UPDATE + +Ƭ **NONCE_UPDATE**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :----------------------------------------------- | +| `contract_address` | [`ADDRESS`](types.RPC.RPCSPEC06.SPEC.md#address) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:122](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L122) + +--- + +### STATE_DIFF + +Ƭ **STATE_DIFF**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------------------- | :--------------------------------------------------------------------------------------- | +| `storage_diffs` | [`CONTRACT_STORAGE_DIFF_ITEM`](types.RPC.RPCSPEC06.SPEC.md#contract_storage_diff_item)[] | +| `deprecated_declared_classes` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | +| `declared_classes` | [`NEW_CLASSES`](types.RPC.RPCSPEC06.SPEC.md#new_classes)[] | +| `deployed_contracts` | [`DEPLOYED_CONTRACT_ITEM`](types.RPC.RPCSPEC06.SPEC.md#deployed_contract_item)[] | +| `replaced_classes` | [`REPLACED_CLASS`](types.RPC.RPCSPEC06.SPEC.md#replaced_class)[] | +| `nonces` | [`NONCE_UPDATE`](types.RPC.RPCSPEC06.SPEC.md#nonce_update)[] | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:127](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L127) + +--- + +### PENDING_STATE_UPDATE + +Ƭ **PENDING_STATE_UPDATE**: `Object` + +#### Type declaration + +| Name | Type | +| :----------- | :----------------------------------------------------- | +| `old_root` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `state_diff` | [`STATE_DIFF`](types.RPC.RPCSPEC06.SPEC.md#state_diff) | +| `block_hash` | `never` | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:136](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L136) + +--- + +### STATE_UPDATE + +Ƭ **STATE_UPDATE**: `Object` + +#### Type declaration + +| Name | Type | +| :----------- | :----------------------------------------------------- | +| `block_hash` | [`BLOCK_HASH`](types.RPC.RPCSPEC06.SPEC.md#block_hash) | +| `old_root` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `new_root` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `state_diff` | [`STATE_DIFF`](types.RPC.RPCSPEC06.SPEC.md#state_diff) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:142](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L142) + +--- + +### BLOCK_BODY_WITH_TX_HASHES + +Ƭ **BLOCK_BODY_WITH_TX_HASHES**: `Object` + +#### Type declaration + +| Name | Type | +| :------------- | :--------------------------------------------------- | +| `transactions` | [`TXN_HASH`](types.RPC.RPCSPEC06.SPEC.md#txn_hash)[] | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:149](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L149) + +--- + +### BLOCK_BODY_WITH_TXS + +Ƭ **BLOCK_BODY_WITH_TXS**: `Object` + +#### Type declaration + +| Name | Type | +| :------------- | :----------------------------------------------------------------------------------------------------------------------- | +| `transactions` | [`TXN`](types.RPC.RPCSPEC06.SPEC.md#txn) & \{ `transaction_hash`: [`TXN_HASH`](types.RPC.RPCSPEC06.SPEC.md#txn_hash) }[] | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:153](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L153) + +--- + +### BLOCK_HEADER + +Ƭ **BLOCK_HEADER**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------ | :------------------------------------------------------------- | +| `block_hash` | [`BLOCK_HASH`](types.RPC.RPCSPEC06.SPEC.md#block_hash) | +| `parent_hash` | [`BLOCK_HASH`](types.RPC.RPCSPEC06.SPEC.md#block_hash) | +| `block_number` | [`BLOCK_NUMBER`](types.RPC.RPCSPEC06.SPEC.md#block_number) | +| `new_root` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `timestamp` | `number` | +| `sequencer_address` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `l1_gas_price` | [`RESOURCE_PRICE`](types.RPC.RPCSPEC06.SPEC.md#resource_price) | +| `starknet_version` | `string` | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:159](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L159) + +--- + +### PENDING_BLOCK_HEADER + +Ƭ **PENDING_BLOCK_HEADER**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------ | :------------------------------------------------------------- | +| `parent_hash` | [`BLOCK_HASH`](types.RPC.RPCSPEC06.SPEC.md#block_hash) | +| `timestamp` | `number` | +| `sequencer_address` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `l1_gas_price` | [`RESOURCE_PRICE`](types.RPC.RPCSPEC06.SPEC.md#resource_price) | +| `starknet_version` | `string` | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:170](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L170) + +--- + +### BLOCK_WITH_TX_HASHES + +Ƭ **BLOCK_WITH_TX_HASHES**: \{ `status`: [`BLOCK_STATUS`](types.RPC.RPCSPEC06.SPEC.md#block_status) } & [`BLOCK_HEADER`](types.RPC.RPCSPEC06.SPEC.md#block_header) & [`BLOCK_BODY_WITH_TX_HASHES`](types.RPC.RPCSPEC06.SPEC.md#block_body_with_tx_hashes) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:178](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L178) + +--- + +### BLOCK_WITH_TXS + +Ƭ **BLOCK_WITH_TXS**: \{ `status`: [`BLOCK_STATUS`](types.RPC.RPCSPEC06.SPEC.md#block_status) } & [`BLOCK_HEADER`](types.RPC.RPCSPEC06.SPEC.md#block_header) & [`BLOCK_BODY_WITH_TXS`](types.RPC.RPCSPEC06.SPEC.md#block_body_with_txs) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:181](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L181) + +--- + +### PENDING_BLOCK_WITH_TX_HASHES + +Ƭ **PENDING_BLOCK_WITH_TX_HASHES**: [`BLOCK_BODY_WITH_TX_HASHES`](types.RPC.RPCSPEC06.SPEC.md#block_body_with_tx_hashes) & [`PENDING_BLOCK_HEADER`](types.RPC.RPCSPEC06.SPEC.md#pending_block_header) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:183](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L183) + +--- + +### PENDING_BLOCK_WITH_TXS + +Ƭ **PENDING_BLOCK_WITH_TXS**: [`BLOCK_BODY_WITH_TXS`](types.RPC.RPCSPEC06.SPEC.md#block_body_with_txs) & [`PENDING_BLOCK_HEADER`](types.RPC.RPCSPEC06.SPEC.md#pending_block_header) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:185](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L185) + +--- + +### DEPLOYED_CONTRACT_ITEM + +Ƭ **DEPLOYED_CONTRACT_ITEM**: `Object` + +#### Type declaration + +| Name | Type | +| :----------- | :----------------------------------------- | +| `address` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:187](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L187) + +--- + +### CONTRACT_STORAGE_DIFF_ITEM + +Ƭ **CONTRACT_STORAGE_DIFF_ITEM**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------- | :----------------------------------------------------------------- | +| `address` | `string` | +| `storage_entries` | [`StorageDiffItem`](types.RPC.RPCSPEC06.SPEC.md#storagediffitem)[] | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:192](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L192) + +--- + +### StorageDiffItem + +Ƭ **StorageDiffItem**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------- | +| `key` | `string` | +| `value` | `string` | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:199](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L199) + +--- + +### TXN + +Ƭ **TXN**: [`INVOKE_TXN`](types.RPC.RPCSPEC06.SPEC.md#invoke_txn) \| [`L1_HANDLER_TXN`](types.RPC.RPCSPEC06.SPEC.md#l1_handler_txn) \| [`DECLARE_TXN`](types.RPC.RPCSPEC06.SPEC.md#declare_txn) \| [`DEPLOY_TXN`](types.RPC.RPCSPEC06.SPEC.md#deploy_txn) \| [`DEPLOY_ACCOUNT_TXN`](types.RPC.RPCSPEC06.SPEC.md#deploy_account_txn) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:206](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L206) + +--- + +### DECLARE_TXN + +Ƭ **DECLARE_TXN**: [`DECLARE_TXN_V0`](types.RPC.RPCSPEC06.SPEC.md#declare_txn_v0) \| [`DECLARE_TXN_V1`](types.RPC.RPCSPEC06.SPEC.md#declare_txn_v1) \| [`DECLARE_TXN_V2`](types.RPC.RPCSPEC06.SPEC.md#declare_txn_v2) \| [`DECLARE_TXN_V3`](types.RPC.RPCSPEC06.SPEC.md#declare_txn_v3) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:208](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L208) + +--- + +### DECLARE_TXN_V0 + +Ƭ **DECLARE_TXN_V0**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :--------------------------------------------------- | +| `type` | `"DECLARE"` | +| `sender_address` | [`ADDRESS`](types.RPC.RPCSPEC06.SPEC.md#address) | +| `max_fee` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `version` | `"0x0"` \| `"0x100000000000000000000000000000000"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC06.SPEC.md#signature) | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:210](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L210) + +--- + +### DECLARE_TXN_V1 + +Ƭ **DECLARE_TXN_V1**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :--------------------------------------------------- | +| `type` | `"DECLARE"` | +| `sender_address` | [`ADDRESS`](types.RPC.RPCSPEC06.SPEC.md#address) | +| `max_fee` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `version` | `"0x1"` \| `"0x100000000000000000000000000000001"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC06.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:219](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L219) + +--- + +### DECLARE_TXN_V2 + +Ƭ **DECLARE_TXN_V2**: `Object` + +#### Type declaration + +| Name | Type | +| :-------------------- | :--------------------------------------------------- | +| `type` | `"DECLARE"` | +| `sender_address` | [`ADDRESS`](types.RPC.RPCSPEC06.SPEC.md#address) | +| `compiled_class_hash` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `max_fee` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `version` | `"0x2"` \| `"0x100000000000000000000000000000002"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC06.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:229](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L229) + +--- + +### DECLARE_TXN_V3 + +Ƭ **DECLARE_TXN_V3**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------------------- | :------------------------------------------------------------------------------- | +| `type` | `"DECLARE"` | +| `sender_address` | [`ADDRESS`](types.RPC.RPCSPEC06.SPEC.md#address) | +| `compiled_class_hash` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `version` | `"0x3"` \| `"0x100000000000000000000000000000003"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC06.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `resource_bounds` | [`RESOURCE_BOUNDS_MAPPING`](types.RPC.RPCSPEC06.SPEC.md#resource_bounds_mapping) | +| `tip` | [`u64`](types.RPC.RPCSPEC06.SPEC.md#u64) | +| `paymaster_data` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | +| `account_deployment_data` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | +| `nonce_data_availability_mode` | [`DA_MODE`](types.RPC.RPCSPEC06.SPEC.md#da_mode) | +| `fee_data_availability_mode` | [`DA_MODE`](types.RPC.RPCSPEC06.SPEC.md#da_mode) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:240](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L240) + +--- + +### BROADCASTED_TXN + +Ƭ **BROADCASTED_TXN**: [`BROADCASTED_INVOKE_TXN`](types.RPC.RPCSPEC06.SPEC.md#broadcasted_invoke_txn) \| [`BROADCASTED_DECLARE_TXN`](types.RPC.RPCSPEC06.SPEC.md#broadcasted_declare_txn) \| [`BROADCASTED_DEPLOY_ACCOUNT_TXN`](types.RPC.RPCSPEC06.SPEC.md#broadcasted_deploy_account_txn) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:257](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L257) + +--- + +### BROADCASTED_INVOKE_TXN + +Ƭ **BROADCASTED_INVOKE_TXN**: [`INVOKE_TXN`](types.RPC.RPCSPEC06.SPEC.md#invoke_txn) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:262](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L262) + +--- + +### BROADCASTED_DEPLOY_ACCOUNT_TXN + +Ƭ **BROADCASTED_DEPLOY_ACCOUNT_TXN**: [`DEPLOY_ACCOUNT_TXN`](types.RPC.RPCSPEC06.SPEC.md#deploy_account_txn) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:264](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L264) + +--- + +### BROADCASTED_DECLARE_TXN + +Ƭ **BROADCASTED_DECLARE_TXN**: [`BROADCASTED_DECLARE_TXN_V1`](types.RPC.RPCSPEC06.SPEC.md#broadcasted_declare_txn_v1) \| [`BROADCASTED_DECLARE_TXN_V2`](types.RPC.RPCSPEC06.SPEC.md#broadcasted_declare_txn_v2) \| [`BROADCASTED_DECLARE_TXN_V3`](types.RPC.RPCSPEC06.SPEC.md#broadcasted_declare_txn_v3) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:266](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L266) + +--- + +### BROADCASTED_DECLARE_TXN_V1 + +Ƭ **BROADCASTED_DECLARE_TXN_V1**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :----------------------------------------------------------------------------------- | +| `type` | `"DECLARE"` | +| `sender_address` | [`ADDRESS`](types.RPC.RPCSPEC06.SPEC.md#address) | +| `max_fee` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `version` | `"0x1"` \| `"0x100000000000000000000000000000001"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC06.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `contract_class` | [`DEPRECATED_CONTRACT_CLASS`](types.RPC.RPCSPEC06.SPEC.md#deprecated_contract_class) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:271](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L271) + +--- + +### BROADCASTED_DECLARE_TXN_V2 + +Ƭ **BROADCASTED_DECLARE_TXN_V2**: `Object` + +#### Type declaration + +| Name | Type | +| :-------------------- | :------------------------------------------------------------- | +| `type` | `"DECLARE"` | +| `sender_address` | [`ADDRESS`](types.RPC.RPCSPEC06.SPEC.md#address) | +| `compiled_class_hash` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `max_fee` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `version` | `"0x2"` \| `"0x100000000000000000000000000000002"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC06.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `contract_class` | [`CONTRACT_CLASS`](types.RPC.RPCSPEC06.SPEC.md#contract_class) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:282](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L282) + +--- + +### BROADCASTED_DECLARE_TXN_V3 + +Ƭ **BROADCASTED_DECLARE_TXN_V3**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------------------- | :------------------------------------------------------------------------------- | +| `type` | `"DECLARE"` | +| `sender_address` | [`ADDRESS`](types.RPC.RPCSPEC06.SPEC.md#address) | +| `compiled_class_hash` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `version` | `"0x3"` \| `"0x100000000000000000000000000000003"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC06.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `contract_class` | [`CONTRACT_CLASS`](types.RPC.RPCSPEC06.SPEC.md#contract_class) | +| `resource_bounds` | [`RESOURCE_BOUNDS_MAPPING`](types.RPC.RPCSPEC06.SPEC.md#resource_bounds_mapping) | +| `tip` | [`u64`](types.RPC.RPCSPEC06.SPEC.md#u64) | +| `paymaster_data` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | +| `account_deployment_data` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | +| `nonce_data_availability_mode` | [`DA_MODE`](types.RPC.RPCSPEC06.SPEC.md#da_mode) | +| `fee_data_availability_mode` | [`DA_MODE`](types.RPC.RPCSPEC06.SPEC.md#da_mode) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:293](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L293) + +--- + +### DEPLOY_ACCOUNT_TXN + +Ƭ **DEPLOY_ACCOUNT_TXN**: [`DEPLOY_ACCOUNT_TXN_V1`](types.RPC.RPCSPEC06.SPEC.md#deploy_account_txn_v1) \| [`DEPLOY_ACCOUNT_TXN_V3`](types.RPC.RPCSPEC06.SPEC.md#deploy_account_txn_v3) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:310](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L310) + +--- + +### DEPLOY_ACCOUNT_TXN_V1 + +Ƭ **DEPLOY_ACCOUNT_TXN_V1**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------------- | :--------------------------------------------------- | +| `type` | `"DEPLOY_ACCOUNT"` | +| `max_fee` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `version` | `"0x1"` \| `"0x100000000000000000000000000000001"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC06.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `contract_address_salt` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `constructor_calldata` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:312](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L312) + +--- + +### DEPLOY_ACCOUNT_TXN_V3 + +Ƭ **DEPLOY_ACCOUNT_TXN_V3**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------------------- | :------------------------------------------------------------------------------- | +| `type` | `"DEPLOY_ACCOUNT"` | +| `version` | `"0x3"` \| `"0x100000000000000000000000000000003"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC06.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `contract_address_salt` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `constructor_calldata` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `resource_bounds` | [`RESOURCE_BOUNDS_MAPPING`](types.RPC.RPCSPEC06.SPEC.md#resource_bounds_mapping) | +| `tip` | [`u64`](types.RPC.RPCSPEC06.SPEC.md#u64) | +| `paymaster_data` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | +| `nonce_data_availability_mode` | [`DA_MODE`](types.RPC.RPCSPEC06.SPEC.md#da_mode) | +| `fee_data_availability_mode` | [`DA_MODE`](types.RPC.RPCSPEC06.SPEC.md#da_mode) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:323](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L323) + +--- + +### DEPLOY_TXN + +Ƭ **DEPLOY_TXN**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------------- | :------------------------------------------- | +| `type` | `"DEPLOY"` | +| `version` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `contract_address_salt` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `constructor_calldata` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:338](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L338) + +--- + +### INVOKE_TXN + +Ƭ **INVOKE_TXN**: [`INVOKE_TXN_V0`](types.RPC.RPCSPEC06.SPEC.md#invoke_txn_v0) \| [`INVOKE_TXN_V1`](types.RPC.RPCSPEC06.SPEC.md#invoke_txn_v1) \| [`INVOKE_TXN_V3`](types.RPC.RPCSPEC06.SPEC.md#invoke_txn_v3) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:346](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L346) + +--- + +### INVOKE_TXN_V0 + +Ƭ **INVOKE_TXN_V0**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------------- | :--------------------------------------------------- | +| `type` | `"INVOKE"` | +| `max_fee` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `version` | `"0x0"` \| `"0x100000000000000000000000000000000"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC06.SPEC.md#signature) | +| `contract_address` | [`ADDRESS`](types.RPC.RPCSPEC06.SPEC.md#address) | +| `entry_point_selector` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `calldata` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:348](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L348) + +--- + +### INVOKE_TXN_V1 + +Ƭ **INVOKE_TXN_V1**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :--------------------------------------------------- | +| `type` | `"INVOKE"` | +| `sender_address` | [`ADDRESS`](types.RPC.RPCSPEC06.SPEC.md#address) | +| `calldata` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | +| `max_fee` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `version` | `"0x1"` \| `"0x100000000000000000000000000000001"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC06.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:358](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L358) + +--- + +### INVOKE_TXN_V3 + +Ƭ **INVOKE_TXN_V3**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------------------- | :------------------------------------------------------------------------------- | +| `type` | `"INVOKE"` | +| `sender_address` | [`ADDRESS`](types.RPC.RPCSPEC06.SPEC.md#address) | +| `calldata` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | +| `version` | `"0x3"` \| `"0x100000000000000000000000000000003"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC06.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `resource_bounds` | [`RESOURCE_BOUNDS_MAPPING`](types.RPC.RPCSPEC06.SPEC.md#resource_bounds_mapping) | +| `tip` | [`u64`](types.RPC.RPCSPEC06.SPEC.md#u64) | +| `paymaster_data` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | +| `account_deployment_data` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | +| `nonce_data_availability_mode` | [`DA_MODE`](types.RPC.RPCSPEC06.SPEC.md#da_mode) | +| `fee_data_availability_mode` | [`DA_MODE`](types.RPC.RPCSPEC06.SPEC.md#da_mode) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:368](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L368) + +--- + +### L1_HANDLER_TXN + +Ƭ **L1_HANDLER_TXN**: \{ `version`: [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) ; `type`: `"L1_HANDLER"` ; `nonce`: [`NUM_AS_HEX`](types.RPC.RPCSPEC06.SPEC.md#num_as_hex) } & [`FUNCTION_CALL`](types.RPC.RPCSPEC06.SPEC.md#function_call) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:383](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L383) + +--- + +### COMMON_RECEIPT_PROPERTIES + +Ƭ **COMMON_RECEIPT_PROPERTIES**: `Object` + +#### Type declaration + +| Name | Type | +| :-------------------- | :------------------------------------------------------------------------- | +| `transaction_hash` | [`TXN_HASH`](types.RPC.RPCSPEC06.SPEC.md#txn_hash) | +| `actual_fee` | [`FEE_PAYMENT`](types.RPC.RPCSPEC06.SPEC.md#fee_payment) | +| `execution_status` | [`TXN_EXECUTION_STATUS`](types.RPC.RPCSPEC06.SPEC.md#txn_execution_status) | +| `finality_status` | [`TXN_FINALITY_STATUS`](types.RPC.RPCSPEC06.SPEC.md#txn_finality_status) | +| `block_hash` | [`BLOCK_HASH`](types.RPC.RPCSPEC06.SPEC.md#block_hash) | +| `block_number` | [`BLOCK_NUMBER`](types.RPC.RPCSPEC06.SPEC.md#block_number) | +| `messages_sent` | [`MSG_TO_L1`](types.RPC.RPCSPEC06.SPEC.md#msg_to_l1)[] | +| `revert_reason?` | `string` | +| `events` | [`EVENT`](types.RPC.RPCSPEC06.SPEC.md#event)[] | +| `execution_resources` | [`EXECUTION_RESOURCES`](types.RPC.RPCSPEC06.SPEC.md#execution_resources) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:389](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L389) + +--- + +### PENDING_COMMON_RECEIPT_PROPERTIES + +Ƭ **PENDING_COMMON_RECEIPT_PROPERTIES**: `Object` + +#### Type declaration + +| Name | Type | +| :-------------------- | :------------------------------------------------------------------------- | +| `transaction_hash` | [`TXN_HASH`](types.RPC.RPCSPEC06.SPEC.md#txn_hash) | +| `actual_fee` | [`FEE_PAYMENT`](types.RPC.RPCSPEC06.SPEC.md#fee_payment) | +| `messages_sent` | [`MSG_TO_L1`](types.RPC.RPCSPEC06.SPEC.md#msg_to_l1)[] | +| `events` | [`EVENT`](types.RPC.RPCSPEC06.SPEC.md#event)[] | +| `revert_reason?` | `string` | +| `finality_status` | `"ACCEPTED_ON_L2"` | +| `execution_status` | [`TXN_EXECUTION_STATUS`](types.RPC.RPCSPEC06.SPEC.md#txn_execution_status) | +| `execution_resources` | [`EXECUTION_RESOURCES`](types.RPC.RPCSPEC06.SPEC.md#execution_resources) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:402](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L402) + +--- + +### INVOKE_TXN_RECEIPT + +Ƭ **INVOKE_TXN_RECEIPT**: \{ `type`: `"INVOKE"` } & [`COMMON_RECEIPT_PROPERTIES`](types.RPC.RPCSPEC06.SPEC.md#common_receipt_properties) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:413](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L413) + +--- + +### PENDING_INVOKE_TXN_RECEIPT + +Ƭ **PENDING_INVOKE_TXN_RECEIPT**: \{ `type`: `"INVOKE"` } & [`PENDING_COMMON_RECEIPT_PROPERTIES`](types.RPC.RPCSPEC06.SPEC.md#pending_common_receipt_properties) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:417](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L417) + +--- + +### DECLARE_TXN_RECEIPT + +Ƭ **DECLARE_TXN_RECEIPT**: \{ `type`: `"DECLARE"` } & [`COMMON_RECEIPT_PROPERTIES`](types.RPC.RPCSPEC06.SPEC.md#common_receipt_properties) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:421](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L421) + +--- + +### PENDING_DECLARE_TXN_RECEIPT + +Ƭ **PENDING_DECLARE_TXN_RECEIPT**: \{ `type`: `"DECLARE"` } & [`PENDING_COMMON_RECEIPT_PROPERTIES`](types.RPC.RPCSPEC06.SPEC.md#pending_common_receipt_properties) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:425](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L425) + +--- + +### DEPLOY_ACCOUNT_TXN_RECEIPT + +Ƭ **DEPLOY_ACCOUNT_TXN_RECEIPT**: \{ `type`: `"DEPLOY_ACCOUNT"` ; `contract_address`: [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) } & [`COMMON_RECEIPT_PROPERTIES`](types.RPC.RPCSPEC06.SPEC.md#common_receipt_properties) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:429](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L429) + +--- + +### PENDING_DEPLOY_ACCOUNT_TXN_RECEIPT + +Ƭ **PENDING_DEPLOY_ACCOUNT_TXN_RECEIPT**: \{ `type`: `"DEPLOY_ACCOUNT"` ; `contract_address`: [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) } & [`PENDING_COMMON_RECEIPT_PROPERTIES`](types.RPC.RPCSPEC06.SPEC.md#pending_common_receipt_properties) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:434](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L434) + +--- + +### DEPLOY_TXN_RECEIPT + +Ƭ **DEPLOY_TXN_RECEIPT**: \{ `type`: `"DEPLOY"` ; `contract_address`: [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) } & [`COMMON_RECEIPT_PROPERTIES`](types.RPC.RPCSPEC06.SPEC.md#common_receipt_properties) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:439](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L439) + +--- + +### L1_HANDLER_TXN_RECEIPT + +Ƭ **L1_HANDLER_TXN_RECEIPT**: \{ `type`: `"L1_HANDLER"` ; `message_hash`: [`NUM_AS_HEX`](types.RPC.RPCSPEC06.SPEC.md#num_as_hex) } & [`COMMON_RECEIPT_PROPERTIES`](types.RPC.RPCSPEC06.SPEC.md#common_receipt_properties) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:444](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L444) + +--- + +### PENDING_L1_HANDLER_TXN_RECEIPT + +Ƭ **PENDING_L1_HANDLER_TXN_RECEIPT**: \{ `type`: `"L1_HANDLER"` ; `message_hash`: [`NUM_AS_HEX`](types.RPC.RPCSPEC06.SPEC.md#num_as_hex) } & [`PENDING_COMMON_RECEIPT_PROPERTIES`](types.RPC.RPCSPEC06.SPEC.md#pending_common_receipt_properties) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:449](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L449) + +--- + +### TXN_RECEIPT + +Ƭ **TXN_RECEIPT**: [`INVOKE_TXN_RECEIPT`](types.RPC.RPCSPEC06.SPEC.md#invoke_txn_receipt) \| [`L1_HANDLER_TXN_RECEIPT`](types.RPC.RPCSPEC06.SPEC.md#l1_handler_txn_receipt) \| [`DECLARE_TXN_RECEIPT`](types.RPC.RPCSPEC06.SPEC.md#declare_txn_receipt) \| [`DEPLOY_TXN_RECEIPT`](types.RPC.RPCSPEC06.SPEC.md#deploy_txn_receipt) \| [`DEPLOY_ACCOUNT_TXN_RECEIPT`](types.RPC.RPCSPEC06.SPEC.md#deploy_account_txn_receipt) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:454](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L454) + +--- + +### PENDING_TXN_RECEIPT + +Ƭ **PENDING_TXN_RECEIPT**: [`PENDING_INVOKE_TXN_RECEIPT`](types.RPC.RPCSPEC06.SPEC.md#pending_invoke_txn_receipt) \| [`PENDING_L1_HANDLER_TXN_RECEIPT`](types.RPC.RPCSPEC06.SPEC.md#pending_l1_handler_txn_receipt) \| [`PENDING_DECLARE_TXN_RECEIPT`](types.RPC.RPCSPEC06.SPEC.md#pending_declare_txn_receipt) \| [`PENDING_DEPLOY_ACCOUNT_TXN_RECEIPT`](types.RPC.RPCSPEC06.SPEC.md#pending_deploy_account_txn_receipt) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:461](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L461) + +--- + +### MSG_TO_L1 + +Ƭ **MSG_TO_L1**: `Object` + +#### Type declaration + +| Name | Type | +| :------------- | :------------------------------------------- | +| `from_address` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `to_address` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `payload` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:467](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L467) + +--- + +### MSG_FROM_L1 + +Ƭ **MSG_FROM_L1**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------------- | :------------------------------------------------------- | +| `from_address` | [`ETH_ADDRESS`](types.RPC.RPCSPEC06.SPEC.md#eth_address) | +| `to_address` | [`ADDRESS`](types.RPC.RPCSPEC06.SPEC.md#address) | +| `entry_point_selector` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `payload` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:473](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L473) + +--- + +### FUNCTION_CALL + +Ƭ **FUNCTION_CALL**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------------- | :----------------------------------------------- | +| `contract_address` | [`ADDRESS`](types.RPC.RPCSPEC06.SPEC.md#address) | +| `entry_point_selector` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `calldata` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:480](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L480) + +--- + +### CONTRACT_CLASS + +Ƭ **CONTRACT_CLASS**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sierra_program` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] | +| `contract_class_version` | `string` | +| `entry_points_by_type` | \{ `CONSTRUCTOR`: [`SIERRA_ENTRY_POINT`](types.RPC.RPCSPEC06.SPEC.md#sierra_entry_point)[] ; `EXTERNAL`: [`SIERRA_ENTRY_POINT`](types.RPC.RPCSPEC06.SPEC.md#sierra_entry_point)[] ; `L1_HANDLER`: [`SIERRA_ENTRY_POINT`](types.RPC.RPCSPEC06.SPEC.md#sierra_entry_point)[] } | +| `entry_points_by_type.CONSTRUCTOR` | [`SIERRA_ENTRY_POINT`](types.RPC.RPCSPEC06.SPEC.md#sierra_entry_point)[] | +| `entry_points_by_type.EXTERNAL` | [`SIERRA_ENTRY_POINT`](types.RPC.RPCSPEC06.SPEC.md#sierra_entry_point)[] | +| `entry_points_by_type.L1_HANDLER` | [`SIERRA_ENTRY_POINT`](types.RPC.RPCSPEC06.SPEC.md#sierra_entry_point)[] | +| `abi` | `string` | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:486](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L486) + +--- + +### DEPRECATED_CONTRACT_CLASS + +Ƭ **DEPRECATED_CONTRACT_CLASS**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `program` | `string` | +| `entry_points_by_type` | \{ `CONSTRUCTOR`: [`DEPRECATED_CAIRO_ENTRY_POINT`](types.RPC.RPCSPEC06.SPEC.md#deprecated_cairo_entry_point)[] ; `EXTERNAL`: [`DEPRECATED_CAIRO_ENTRY_POINT`](types.RPC.RPCSPEC06.SPEC.md#deprecated_cairo_entry_point)[] ; `L1_HANDLER`: [`DEPRECATED_CAIRO_ENTRY_POINT`](types.RPC.RPCSPEC06.SPEC.md#deprecated_cairo_entry_point)[] } | +| `entry_points_by_type.CONSTRUCTOR` | [`DEPRECATED_CAIRO_ENTRY_POINT`](types.RPC.RPCSPEC06.SPEC.md#deprecated_cairo_entry_point)[] | +| `entry_points_by_type.EXTERNAL` | [`DEPRECATED_CAIRO_ENTRY_POINT`](types.RPC.RPCSPEC06.SPEC.md#deprecated_cairo_entry_point)[] | +| `entry_points_by_type.L1_HANDLER` | [`DEPRECATED_CAIRO_ENTRY_POINT`](types.RPC.RPCSPEC06.SPEC.md#deprecated_cairo_entry_point)[] | +| `abi` | [`CONTRACT_ABI`](types.RPC.RPCSPEC06.SPEC.md#contract_abi) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:497](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L497) + +--- + +### DEPRECATED_CAIRO_ENTRY_POINT + +Ƭ **DEPRECATED_CAIRO_ENTRY_POINT**: `Object` + +#### Type declaration + +| Name | Type | +| :--------- | :----------------------------------------------------------------- | +| `offset` | [`NUM_AS_HEX`](types.RPC.RPCSPEC06.SPEC.md#num_as_hex) \| `number` | +| `selector` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:507](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L507) + +--- + +### SIERRA_ENTRY_POINT + +Ƭ **SIERRA_ENTRY_POINT**: `Object` + +#### Type declaration + +| Name | Type | +| :------------- | :----------------------------------------- | +| `selector` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `function_idx` | `number` | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:512](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L512) + +--- + +### CONTRACT_ABI + +Ƭ **CONTRACT_ABI**: readonly [`CONTRACT_ABI_ENTRY`](types.RPC.RPCSPEC06.SPEC.md#contract_abi_entry)[] + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:517](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L517) + +--- + +### CONTRACT_ABI_ENTRY + +Ƭ **CONTRACT_ABI_ENTRY**: `Object` + +#### Type declaration + +| Name | Type | +| :--------- | :----------------------------------------- | +| `selector` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `input` | `string` | +| `output` | `string` | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:519](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L519) + +--- + +### STRUCT_ABI_ENTRY + +Ƭ **STRUCT_ABI_ENTRY**: `Object` + +#### Type declaration + +| Name | Type | +| :-------- | :--------------------------------------------------------------- | +| `type` | [`STRUCT_ABI_TYPE`](types.RPC.RPCSPEC06.SPEC.md#struct_abi_type) | +| `name` | `string` | +| `size` | `number` | +| `members` | [`STRUCT_MEMBER`](types.RPC.RPCSPEC06.SPEC.md#struct_member)[] | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:525](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L525) + +--- + +### STRUCT_MEMBER + +Ƭ **STRUCT_MEMBER**: [`TYPED_PARAMETER`](types.RPC.RPCSPEC06.SPEC.md#typed_parameter) & \{ `offset`: `number` } + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:532](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L532) + +--- + +### EVENT_ABI_ENTRY + +Ƭ **EVENT_ABI_ENTRY**: `Object` + +#### Type declaration + +| Name | Type | +| :----- | :----------------------------------------------------------------- | +| `type` | [`EVENT_ABI_TYPE`](types.RPC.RPCSPEC06.SPEC.md#event_abi_type) | +| `name` | `string` | +| `keys` | [`TYPED_PARAMETER`](types.RPC.RPCSPEC06.SPEC.md#typed_parameter)[] | +| `data` | [`TYPED_PARAMETER`](types.RPC.RPCSPEC06.SPEC.md#typed_parameter)[] | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:536](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L536) + +--- + +### FUNCTION_STATE_MUTABILITY + +Ƭ **FUNCTION_STATE_MUTABILITY**: `"view"` + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:543](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L543) + +--- + +### FUNCTION_ABI_ENTRY + +Ƭ **FUNCTION_ABI_ENTRY**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------- | :----------------------------------------------------------------------------------- | +| `type` | [`FUNCTION_ABI_TYPE`](types.RPC.RPCSPEC06.SPEC.md#function_abi_type) | +| `name` | `string` | +| `inputs` | [`TYPED_PARAMETER`](types.RPC.RPCSPEC06.SPEC.md#typed_parameter)[] | +| `outputs` | [`TYPED_PARAMETER`](types.RPC.RPCSPEC06.SPEC.md#typed_parameter)[] | +| `stateMutability` | [`FUNCTION_STATE_MUTABILITY`](types.RPC.RPCSPEC06.SPEC.md#function_state_mutability) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:545](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L545) + +--- + +### TYPED_PARAMETER + +Ƭ **TYPED_PARAMETER**: `Object` + +#### Type declaration + +| Name | Type | +| :----- | :------- | +| `name` | `string` | +| `type` | `string` | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:553](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L553) + +--- + +### SIMULATION_FLAG_FOR_ESTIMATE_FEE + +Ƭ **SIMULATION_FLAG_FOR_ESTIMATE_FEE**: `"SKIP_VALIDATE"` + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:558](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L558) + +--- + +### PRICE_UNIT + +Ƭ **PRICE_UNIT**: `"WEI"` \| `"FRI"` + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:559](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L559) + +--- + +### FEE_ESTIMATE + +Ƭ **FEE_ESTIMATE**: `Object` + +#### Type declaration + +| Name | Type | +| :------------- | :----------------------------------------------------- | +| `gas_consumed` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `gas_price` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `overall_fee` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `unit` | [`PRICE_UNIT`](types.RPC.RPCSPEC06.SPEC.md#price_unit) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:561](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L561) + +--- + +### FEE_PAYMENT + +Ƭ **FEE_PAYMENT**: `Object` + +#### Type declaration + +| Name | Type | +| :------- | :----------------------------------------------------- | +| `amount` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `unit` | [`PRICE_UNIT`](types.RPC.RPCSPEC06.SPEC.md#price_unit) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:568](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L568) + +--- + +### RESOURCE_BOUNDS_MAPPING + +Ƭ **RESOURCE_BOUNDS_MAPPING**: `Object` + +#### Type declaration + +| Name | Type | +| :------- | :--------------------------------------------------------------- | +| `l1_gas` | [`RESOURCE_BOUNDS`](types.RPC.RPCSPEC06.SPEC.md#resource_bounds) | +| `l2_gas` | [`RESOURCE_BOUNDS`](types.RPC.RPCSPEC06.SPEC.md#resource_bounds) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:573](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L573) + +--- + +### RESOURCE_BOUNDS + +Ƭ **RESOURCE_BOUNDS**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------- | :----------------------------------------- | +| `max_amount` | [`u64`](types.RPC.RPCSPEC06.SPEC.md#u64) | +| `max_price_per_unit` | [`u128`](types.RPC.RPCSPEC06.SPEC.md#u128) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:578](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L578) + +--- + +### RESOURCE_PRICE + +Ƭ **RESOURCE_PRICE**: `Object` + +#### Type declaration + +| Name | Type | +| :------------- | :----------------------------------------- | +| `price_in_fri` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | +| `price_in_wei` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:583](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L583) + +--- + +### EXECUTION_RESOURCES + +Ƭ **EXECUTION_RESOURCES**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------------------------- | :------- | +| `steps` | `number` | +| `memory_holes?` | `number` | +| `range_check_builtin_applications?` | `number` | +| `pedersen_builtin_applications?` | `number` | +| `poseidon_builtin_applications?` | `number` | +| `ec_op_builtin_applications?` | `number` | +| `ecdsa_builtin_applications?` | `number` | +| `bitwise_builtin_applications?` | `number` | +| `keccak_builtin_applications?` | `number` | +| `segment_arena_builtin?` | `number` | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:588](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L588) + +--- + +### TRANSACTION_TRACE + +Ƭ **TRANSACTION_TRACE**: `Object` + +TRACE API + +#### Type declaration + +| Name | Type | +| :------------------------- | :--------------------------------------------------------------------------------- | +| `invoke_tx_trace?` | [`INVOKE_TXN_TRACE`](types.RPC.RPCSPEC06.SPEC.md#invoke_txn_trace) | +| `declare_tx_trace?` | [`DECLARE_TXN_TRACE`](types.RPC.RPCSPEC06.SPEC.md#declare_txn_trace) | +| `deploy_account_tx_trace?` | [`DEPLOY_ACCOUNT_TXN_TRACE`](types.RPC.RPCSPEC06.SPEC.md#deploy_account_txn_trace) | +| `l1_handler_tx_trace?` | [`L1_HANDLER_TXN_TRACE`](types.RPC.RPCSPEC06.SPEC.md#l1_handler_txn_trace) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:606](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L606) + +--- + +### INVOKE_TXN_TRACE + +Ƭ **INVOKE_TXN_TRACE**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------------- | :--------------------------------------------------------------------------------------------------------- | +| `type` | `"INVOKE"` | +| `execute_invocation` | [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC06.SPEC.md#function_invocation) \| \{ `revert_reason`: `string` } | +| `validate_invocation?` | [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC06.SPEC.md#function_invocation) | +| `fee_transfer_invocation?` | [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC06.SPEC.md#function_invocation) | +| `state_diff?` | [`STATE_DIFF`](types.RPC.RPCSPEC06.SPEC.md#state_diff) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:614](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L614) + +--- + +### DECLARE_TXN_TRACE + +Ƭ **DECLARE_TXN_TRACE**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------------- | :----------------------------------------------------------------------- | +| `type` | `"DECLARE"` | +| `validate_invocation?` | [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC06.SPEC.md#function_invocation) | +| `fee_transfer_invocation?` | [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC06.SPEC.md#function_invocation) | +| `state_diff?` | [`STATE_DIFF`](types.RPC.RPCSPEC06.SPEC.md#state_diff) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:623](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L623) + +--- + +### DEPLOY_ACCOUNT_TXN_TRACE + +Ƭ **DEPLOY_ACCOUNT_TXN_TRACE**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------------- | :----------------------------------------------------------------------- | +| `type` | `"DEPLOY_ACCOUNT"` | +| `constructor_invocation` | [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC06.SPEC.md#function_invocation) | +| `validate_invocation?` | [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC06.SPEC.md#function_invocation) | +| `fee_transfer_invocation?` | [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC06.SPEC.md#function_invocation) | +| `state_diff?` | [`STATE_DIFF`](types.RPC.RPCSPEC06.SPEC.md#state_diff) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:631](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L631) + +--- + +### L1_HANDLER_TXN_TRACE + +Ƭ **L1_HANDLER_TXN_TRACE**: `Object` + +#### Type declaration + +| Name | Type | +| :-------------------- | :----------------------------------------------------------------------- | +| `type` | `"L1_HANDLER"` | +| `function_invocation` | [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC06.SPEC.md#function_invocation) | +| `state_diff?` | [`STATE_DIFF`](types.RPC.RPCSPEC06.SPEC.md#state_diff) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:640](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L640) + +--- + +### NESTED_CALL + +Ƭ **NESTED_CALL**: [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC06.SPEC.md#function_invocation) + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:647](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L647) + +--- + +### FUNCTION_INVOCATION + +Ƭ **FUNCTION_INVOCATION**: [`FUNCTION_CALL`](types.RPC.RPCSPEC06.SPEC.md#function_call) & \{ `caller_address`: `string` ; `class_hash`: `string` ; `entry_point_type`: [`ENTRY_POINT_TYPE`](types.RPC.RPCSPEC06.SPEC.md#entry_point_type) ; `call_type`: [`CALL_TYPE`](types.RPC.RPCSPEC06.SPEC.md#call_type) ; `result`: `string`[] ; `calls`: [`NESTED_CALL`](types.RPC.RPCSPEC06.SPEC.md#nested_call)[] ; `events`: [`ORDERED_EVENT`](types.RPC.RPCSPEC06.SPEC.md#ordered_event)[] ; `messages`: [`ORDERED_MESSAGE`](types.RPC.RPCSPEC06.SPEC.md#ordered_message)[] ; `execution_resources`: [`EXECUTION_RESOURCES`](types.RPC.RPCSPEC06.SPEC.md#execution_resources) } + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:650](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L650) + +--- + +### ORDERED_EVENT + +Ƭ **ORDERED_EVENT**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------------------------------------------- | +| `order` | `number` | +| `event` | [`EVENT`](types.RPC.RPCSPEC06.SPEC.md#event) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:663](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L663) + +--- + +### ORDERED_MESSAGE + +Ƭ **ORDERED_MESSAGE**: `Object` + +#### Type declaration + +| Name | Type | +| :-------- | :--------------------------------------------------- | +| `order` | `number` | +| `message` | [`MSG_TO_L1`](types.RPC.RPCSPEC06.SPEC.md#msg_to_l1) | + +#### Defined in + +[src/types/api/rpcspec_0_6/components.ts:669](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/components.ts#L669) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC06.md b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC06.md new file mode 100644 index 000000000..8718377d2 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC06.md @@ -0,0 +1,844 @@ +--- +id: 'types.RPC.RPCSPEC06' +title: 'Namespace: RPCSPEC06' +sidebar_label: 'RPCSPEC06' +custom_edit_url: null +--- + +[types](types.md).[RPC](types.RPC.md).RPCSPEC06 + +## Namespaces + +- [Errors](types.RPC.RPCSPEC06.Errors.md) +- [SPEC](types.RPC.RPCSPEC06.SPEC.md) + +## Type Aliases + +### Methods + +Ƭ **Methods**: `ReadMethods` & `WriteMethods` & `TraceMethods` + +#### Defined in + +[src/types/api/rpcspec_0_6/methods.ts:330](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/methods.ts#L330) + +--- + +### ABI + +Ƭ **ABI**: (`FUNCTION` \| `CONSTRUCTOR` \| `L1_HANDLER` \| `EVENT` \| `STRUCT` \| `ENUM` \| `INTERFACE` \| `IMPL`)[] + +TypeScript Representation of Cairo1 v2+ Starknet Contract ABI + +starknet_metadata.json - tags/v0.5.0 + +'starknet-specs' (OpenRpc protocol types) +https://github.com/starkware-libs/starknet-specs + +#### Defined in + +[src/types/api/rpcspec_0_6/contract.ts:10](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/contract.ts#L10) + +--- + +### ContractClass + +Ƭ **ContractClass**: [`CONTRACT_CLASS`](types.RPC.RPCSPEC06.SPEC.md#contract_class) \| [`DEPRECATED_CONTRACT_CLASS`](types.RPC.RPCSPEC06.SPEC.md#deprecated_contract_class) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:46](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L46) + +--- + +### SimulateTransaction + +Ƭ **SimulateTransaction**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------ | :------------------------------------------------------------------- | +| `transaction_trace` | [`TRANSACTION_TRACE`](types.RPC.RPCSPEC06.SPEC.md#transaction_trace) | +| `fee_estimation` | [`FEE_ESTIMATE`](types.RPC.RPCSPEC06.SPEC.md#fee_estimate) | + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:48](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L48) + +--- + +### SimulateTransactionResponse + +Ƭ **SimulateTransactionResponse**: [`SimulateTransaction`](types.RPC.RPCSPEC06.md#simulatetransaction)[] + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:52](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L52) + +--- + +### FeeEstimate + +Ƭ **FeeEstimate**: [`FEE_ESTIMATE`](types.RPC.RPCSPEC06.SPEC.md#fee_estimate) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:54](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L54) + +--- + +### TransactionWithHash + +Ƭ **TransactionWithHash**: [`TXN`](types.RPC.RPCSPEC06.SPEC.md#txn) & \{ `transaction_hash`: [`TXN_HASH`](types.RPC.RPCSPEC06.SPEC.md#txn_hash) } + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:56](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L56) + +--- + +### BlockHashAndNumber + +Ƭ **BlockHashAndNumber**: `Object` + +#### Type declaration + +| Name | Type | +| :------------- | :--------------------------------------------------------- | +| `block_hash` | [`BLOCK_HASH`](types.RPC.RPCSPEC06.SPEC.md#block_hash) | +| `block_number` | [`BLOCK_NUMBER`](types.RPC.RPCSPEC06.SPEC.md#block_number) | + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:58](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L58) + +--- + +### BlockWithTxs + +Ƭ **BlockWithTxs**: [`BLOCK_WITH_TXS`](types.RPC.RPCSPEC06.SPEC.md#block_with_txs) \| [`PENDING_BLOCK_WITH_TXS`](types.RPC.RPCSPEC06.SPEC.md#pending_block_with_txs) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:60](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L60) + +--- + +### BlockWithTxHashes + +Ƭ **BlockWithTxHashes**: [`BLOCK_WITH_TX_HASHES`](types.RPC.RPCSPEC06.SPEC.md#block_with_tx_hashes) \| [`PENDING_BLOCK_WITH_TX_HASHES`](types.RPC.RPCSPEC06.SPEC.md#pending_block_with_tx_hashes) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:62](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L62) + +--- + +### StateUpdate + +Ƭ **StateUpdate**: [`STATE_UPDATE`](types.RPC.RPCSPEC06.SPEC.md#state_update) \| [`PENDING_STATE_UPDATE`](types.RPC.RPCSPEC06.SPEC.md#pending_state_update) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:64](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L64) + +--- + +### BlockTransactionsTraces + +Ƭ **BlockTransactionsTraces**: \{ `transaction_hash`: [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) ; `trace_root`: [`TRANSACTION_TRACE`](types.RPC.RPCSPEC06.SPEC.md#transaction_trace) }[] + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:66](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L66) + +--- + +### Syncing + +Ƭ **Syncing**: `false` \| [`SYNC_STATUS`](types.RPC.RPCSPEC06.SPEC.md#sync_status) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:68](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L68) + +--- + +### Events + +Ƭ **Events**: [`EVENTS_CHUNK`](types.RPC.RPCSPEC06.SPEC.md#events_chunk) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:70](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L70) + +--- + +### EmittedEvent + +Ƭ **EmittedEvent**: [`EMITTED_EVENT`](types.RPC.RPCSPEC06.SPEC.md#emitted_event) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:71](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L71) + +--- + +### Event + +Ƭ **Event**: [`EVENT`](types.RPC.RPCSPEC06.SPEC.md#event) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:72](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L72) + +--- + +### InvokedTransaction + +Ƭ **InvokedTransaction**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :------------------------------------------------- | +| `transaction_hash` | [`TXN_HASH`](types.RPC.RPCSPEC06.SPEC.md#txn_hash) | + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:74](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L74) + +--- + +### DeclaredTransaction + +Ƭ **DeclaredTransaction**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :------------------------------------------------- | +| `transaction_hash` | [`TXN_HASH`](types.RPC.RPCSPEC06.SPEC.md#txn_hash) | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:76](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L76) + +--- + +### DeployedAccountTransaction + +Ƭ **DeployedAccountTransaction**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :------------------------------------------------- | +| `transaction_hash` | [`TXN_HASH`](types.RPC.RPCSPEC06.SPEC.md#txn_hash) | +| `contract_address` | [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) | + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:78](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L78) + +--- + +### ContractAddress + +Ƭ **ContractAddress**: [`ADDRESS`](types.RPC.RPCSPEC06.SPEC.md#address) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:81](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L81) + +--- + +### Felt + +Ƭ **Felt**: [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:82](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L82) + +--- + +### Nonce + +Ƭ **Nonce**: [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:83](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L83) + +--- + +### TransactionHash + +Ƭ **TransactionHash**: [`TXN_HASH`](types.RPC.RPCSPEC06.SPEC.md#txn_hash) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:84](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L84) + +--- + +### TransactionTrace + +Ƭ **TransactionTrace**: [`TRANSACTION_TRACE`](types.RPC.RPCSPEC06.SPEC.md#transaction_trace) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:85](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L85) + +--- + +### BlockHash + +Ƭ **BlockHash**: [`BLOCK_HASH`](types.RPC.RPCSPEC06.SPEC.md#block_hash) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:86](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L86) + +--- + +### TransactionReceipt + +Ƭ **TransactionReceipt**: [`TXN_RECEIPT`](types.RPC.RPCSPEC06.SPEC.md#txn_receipt) \| [`PENDING_TXN_RECEIPT`](types.RPC.RPCSPEC06.SPEC.md#pending_txn_receipt) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:87](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L87) + +--- + +### Receipt + +Ƭ **Receipt**: [`TXN_RECEIPT`](types.RPC.RPCSPEC06.SPEC.md#txn_receipt) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:88](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L88) + +--- + +### PendingReceipt + +Ƭ **PendingReceipt**: [`PENDING_TXN_RECEIPT`](types.RPC.RPCSPEC06.SPEC.md#pending_txn_receipt) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:89](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L89) + +--- + +### EventFilter + +Ƭ **EventFilter**: [`EVENT_FILTER`](types.RPC.RPCSPEC06.SPEC.md#event_filter) & [`RESULT_PAGE_REQUEST`](types.RPC.RPCSPEC06.SPEC.md#result_page_request) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:90](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L90) + +--- + +### SimulationFlags + +Ƭ **SimulationFlags**: [`SIMULATION_FLAG`](types.RPC.RPCSPEC06.SPEC.md#simulation_flag)[] + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:91](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L91) + +--- + +### L1Message + +Ƭ **L1Message**: [`MSG_FROM_L1`](types.RPC.RPCSPEC06.SPEC.md#msg_from_l1) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:92](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L92) + +--- + +### BaseTransaction + +Ƭ **BaseTransaction**: [`BROADCASTED_TXN`](types.RPC.RPCSPEC06.SPEC.md#broadcasted_txn) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:93](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L93) + +--- + +### ChainId + +Ƭ **ChainId**: [`CHAIN_ID`](types.RPC.RPCSPEC06.SPEC.md#chain_id) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:94](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L94) + +--- + +### Transaction + +Ƭ **Transaction**: [`TXN`](types.RPC.RPCSPEC06.SPEC.md#txn) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:95](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L95) + +--- + +### TransactionStatus + +Ƭ **TransactionStatus**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------ | :------------------------------------------------------------------------- | +| `finality_status` | [`TXN_STATUS`](types.RPC.RPCSPEC06.SPEC.md#txn_status) | +| `execution_status?` | [`TXN_EXECUTION_STATUS`](types.RPC.RPCSPEC06.SPEC.md#txn_execution_status) | + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:96](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L96) + +--- + +### ResourceBounds + +Ƭ **ResourceBounds**: [`RESOURCE_BOUNDS_MAPPING`](types.RPC.RPCSPEC06.SPEC.md#resource_bounds_mapping) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:100](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L100) + +--- + +### FeePayment + +Ƭ **FeePayment**: [`FEE_PAYMENT`](types.RPC.RPCSPEC06.SPEC.md#fee_payment) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:101](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L101) + +--- + +### PriceUnit + +Ƭ **PriceUnit**: [`PRICE_UNIT`](types.RPC.RPCSPEC06.SPEC.md#price_unit) + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:102](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L102) + +--- + +### StorageDiffs + +Ƭ **StorageDiffs**: [`CONTRACT_STORAGE_DIFF_ITEM`](types.RPC.RPCSPEC06.SPEC.md#contract_storage_diff_item)[] + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:105](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L105) + +--- + +### DeprecatedDeclaredClasses + +Ƭ **DeprecatedDeclaredClasses**: [`FELT`](types.RPC.RPCSPEC06.SPEC.md#felt)[] + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:106](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L106) + +--- + +### NonceUpdates + +Ƭ **NonceUpdates**: [`NONCE_UPDATE`](types.RPC.RPCSPEC06.SPEC.md#nonce_update)[] + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:107](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L107) + +--- + +### ReplacedClasses + +Ƭ **ReplacedClasses**: [`REPLACED_CLASS`](types.RPC.RPCSPEC06.SPEC.md#replaced_class)[] + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:108](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L108) + +--- + +### ETransactionType + +Ƭ **ETransactionType**: `ValuesType` + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:111](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L111) + +[src/types/api/rpcspec_0_6/nonspec.ts:119](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L119) + +--- + +### ESimulationFlag + +Ƭ **ESimulationFlag**: `ValuesType` + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:121](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L121) + +[src/types/api/rpcspec_0_6/nonspec.ts:126](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L126) + +--- + +### ETransactionStatus + +Ƭ **ETransactionStatus**: `ValuesType` + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:128](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L128) + +[src/types/api/rpcspec_0_6/nonspec.ts:135](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L135) + +--- + +### ETransactionFinalityStatus + +Ƭ **ETransactionFinalityStatus**: `ValuesType` + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:137](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L137) + +[src/types/api/rpcspec_0_6/nonspec.ts:142](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L142) + +--- + +### ETransactionExecutionStatus + +Ƭ **ETransactionExecutionStatus**: `ValuesType` + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:144](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L144) + +[src/types/api/rpcspec_0_6/nonspec.ts:149](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L149) + +--- + +### EBlockTag + +Ƭ **EBlockTag**: `ValuesType` + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:151](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L151) + +[src/types/api/rpcspec_0_6/nonspec.ts:156](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L156) + +--- + +### EDataAvailabilityMode + +Ƭ **EDataAvailabilityMode**: `ValuesType` + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:159](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L159) + +[src/types/api/rpcspec_0_6/nonspec.ts:164](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L164) + +--- + +### EDAMode + +Ƭ **EDAMode**: `ValuesType` + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:167](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L167) + +[src/types/api/rpcspec_0_6/nonspec.ts:172](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L172) + +--- + +### ETransactionVersion + +Ƭ **ETransactionVersion**: `ValuesType` + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:178](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L178) + +[src/types/api/rpcspec_0_6/nonspec.ts:189](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L189) + +--- + +### ETransactionVersion2 + +Ƭ **ETransactionVersion2**: `ValuesType` + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:194](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L194) + +[src/types/api/rpcspec_0_6/nonspec.ts:203](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L203) + +--- + +### ETransactionVersion3 + +Ƭ **ETransactionVersion3**: `ValuesType` + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:208](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L208) + +[src/types/api/rpcspec_0_6/nonspec.ts:213](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L213) + +## Variables + +### ETransactionType + +• `Const` **ETransactionType**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :----------------- | +| `DECLARE` | `"DECLARE"` | +| `DEPLOY` | `"DEPLOY"` | +| `DEPLOY_ACCOUNT` | `"DEPLOY_ACCOUNT"` | +| `INVOKE` | `"INVOKE"` | +| `L1_HANDLER` | `"L1_HANDLER"` | + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:111](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L111) + +[src/types/api/rpcspec_0_6/nonspec.ts:119](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L119) + +--- + +### ESimulationFlag + +• `Const` **ESimulationFlag**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------- | :------------------ | +| `SKIP_VALIDATE` | `"SKIP_VALIDATE"` | +| `SKIP_FEE_CHARGE` | `"SKIP_FEE_CHARGE"` | + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:121](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L121) + +[src/types/api/rpcspec_0_6/nonspec.ts:126](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L126) + +--- + +### ETransactionStatus + +• `Const` **ETransactionStatus**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :----------------- | +| `RECEIVED` | `"RECEIVED"` | +| `REJECTED` | `"REJECTED"` | +| `ACCEPTED_ON_L2` | `"ACCEPTED_ON_L2"` | +| `ACCEPTED_ON_L1` | `"ACCEPTED_ON_L1"` | + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:128](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L128) + +[src/types/api/rpcspec_0_6/nonspec.ts:135](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L135) + +--- + +### ETransactionFinalityStatus + +• `Const` **ETransactionFinalityStatus**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :----------------- | +| `ACCEPTED_ON_L2` | `"ACCEPTED_ON_L2"` | +| `ACCEPTED_ON_L1` | `"ACCEPTED_ON_L1"` | + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:137](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L137) + +[src/types/api/rpcspec_0_6/nonspec.ts:142](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L142) + +--- + +### ETransactionExecutionStatus + +• `Const` **ETransactionExecutionStatus**: `Object` + +#### Type declaration + +| Name | Type | +| :---------- | :------------ | +| `SUCCEEDED` | `"SUCCEEDED"` | +| `REVERTED` | `"REVERTED"` | + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:144](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L144) + +[src/types/api/rpcspec_0_6/nonspec.ts:149](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L149) + +--- + +### EBlockTag + +• `Const` **EBlockTag**: `Object` + +#### Type declaration + +| Name | Type | +| :-------- | :---------- | +| `PENDING` | `"pending"` | +| `LATEST` | `"latest"` | + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:151](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L151) + +[src/types/api/rpcspec_0_6/nonspec.ts:156](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L156) + +--- + +### EDataAvailabilityMode + +• `Const` **EDataAvailabilityMode**: `Object` + +#### Type declaration + +| Name | Type | +| :--- | :----- | +| `L1` | `"L1"` | +| `L2` | `"L2"` | + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:159](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L159) + +[src/types/api/rpcspec_0_6/nonspec.ts:164](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L164) + +--- + +### EDAMode + +• `Const` **EDAMode**: `Object` + +#### Type declaration + +| Name | Type | +| :--- | :--- | +| `L1` | `0` | +| `L2` | `1` | + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:167](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L167) + +[src/types/api/rpcspec_0_6/nonspec.ts:172](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L172) + +--- + +### ETransactionVersion + +• `Const` **ETransactionVersion**: `Object` + +V* Transaction versions HexString +F* Fee Transaction Versions HexString (2 \*\* 128 + TRANSACTION_VERSION) + +#### Type declaration + +| Name | Type | +| :--- | :-------------------------------------- | +| `V0` | `"0x0"` | +| `V1` | `"0x1"` | +| `V2` | `"0x2"` | +| `V3` | `"0x3"` | +| `F0` | `"0x100000000000000000000000000000000"` | +| `F1` | `"0x100000000000000000000000000000001"` | +| `F2` | `"0x100000000000000000000000000000002"` | +| `F3` | `"0x100000000000000000000000000000003"` | + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:178](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L178) + +[src/types/api/rpcspec_0_6/nonspec.ts:189](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L189) + +--- + +### ETransactionVersion2 + +• `Const` **ETransactionVersion2**: `Object` + +Old Transaction Versions + +#### Type declaration + +| Name | Type | +| :--- | :-------------------------------------- | +| `V0` | `"0x0"` | +| `V1` | `"0x1"` | +| `V2` | `"0x2"` | +| `F0` | `"0x100000000000000000000000000000000"` | +| `F1` | `"0x100000000000000000000000000000001"` | +| `F2` | `"0x100000000000000000000000000000002"` | + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:194](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L194) + +[src/types/api/rpcspec_0_6/nonspec.ts:203](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L203) + +--- + +### ETransactionVersion3 + +• `Const` **ETransactionVersion3**: `Object` + +V3 Transaction Versions + +#### Type declaration + +| Name | Type | +| :--- | :-------------------------------------- | +| `V3` | `"0x3"` | +| `F3` | `"0x100000000000000000000000000000003"` | + +#### Defined in + +[src/types/api/rpcspec_0_6/nonspec.ts:208](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L208) + +[src/types/api/rpcspec_0_6/nonspec.ts:213](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/api/rpcspec_0_6/nonspec.ts#L213) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.API.Errors.md b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.API.Errors.md new file mode 100644 index 000000000..b2ae269f3 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.API.Errors.md @@ -0,0 +1,40 @@ +--- +id: 'types.RPC.RPCSPEC07.API.Errors' +title: 'Namespace: Errors' +sidebar_label: 'Errors' +custom_edit_url: null +--- + +[RPCSPEC07](types.RPC.RPCSPEC07.md).[API](types.RPC.RPCSPEC07.API.md).Errors + +## Interfaces + +- [FAILED_TO_RECEIVE_TXN](../interfaces/types.RPC.RPCSPEC07.API.Errors.FAILED_TO_RECEIVE_TXN.md) +- [NO_TRACE_AVAILABLE](../interfaces/types.RPC.RPCSPEC07.API.Errors.NO_TRACE_AVAILABLE.md) +- [CONTRACT_NOT_FOUND](../interfaces/types.RPC.RPCSPEC07.API.Errors.CONTRACT_NOT_FOUND.md) +- [INVALID_MESSAGE_SELECTOR](../interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_MESSAGE_SELECTOR.md) +- [INVALID_CALL_DATA](../interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_CALL_DATA.md) +- [BLOCK_NOT_FOUND](../interfaces/types.RPC.RPCSPEC07.API.Errors.BLOCK_NOT_FOUND.md) +- [INVALID_BLOCK_HASH](../interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_BLOCK_HASH.md) +- [INVALID_TXN_INDEX](../interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_TXN_INDEX.md) +- [CLASS_HASH_NOT_FOUND](../interfaces/types.RPC.RPCSPEC07.API.Errors.CLASS_HASH_NOT_FOUND.md) +- [TXN_HASH_NOT_FOUND](../interfaces/types.RPC.RPCSPEC07.API.Errors.TXN_HASH_NOT_FOUND.md) +- [PAGE_SIZE_TOO_BIG](../interfaces/types.RPC.RPCSPEC07.API.Errors.PAGE_SIZE_TOO_BIG.md) +- [NO_BLOCKS](../interfaces/types.RPC.RPCSPEC07.API.Errors.NO_BLOCKS.md) +- [INVALID_CONTINUATION_TOKEN](../interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_CONTINUATION_TOKEN.md) +- [TOO_MANY_KEYS_IN_FILTER](../interfaces/types.RPC.RPCSPEC07.API.Errors.TOO_MANY_KEYS_IN_FILTER.md) +- [CONTRACT_ERROR](../interfaces/types.RPC.RPCSPEC07.API.Errors.CONTRACT_ERROR.md) +- [TRANSACTION_EXECUTION_ERROR](../interfaces/types.RPC.RPCSPEC07.API.Errors.TRANSACTION_EXECUTION_ERROR.md) +- [CLASS_ALREADY_DECLARED](../interfaces/types.RPC.RPCSPEC07.API.Errors.CLASS_ALREADY_DECLARED.md) +- [INVALID_TRANSACTION_NONCE](../interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_TRANSACTION_NONCE.md) +- [INSUFFICIENT_MAX_FEE](../interfaces/types.RPC.RPCSPEC07.API.Errors.INSUFFICIENT_MAX_FEE.md) +- [INSUFFICIENT_ACCOUNT_BALANCE](../interfaces/types.RPC.RPCSPEC07.API.Errors.INSUFFICIENT_ACCOUNT_BALANCE.md) +- [VALIDATION_FAILURE](../interfaces/types.RPC.RPCSPEC07.API.Errors.VALIDATION_FAILURE.md) +- [COMPILATION_FAILED](../interfaces/types.RPC.RPCSPEC07.API.Errors.COMPILATION_FAILED.md) +- [CONTRACT_CLASS_SIZE_IS_TOO_LARGE](../interfaces/types.RPC.RPCSPEC07.API.Errors.CONTRACT_CLASS_SIZE_IS_TOO_LARGE.md) +- [NON_ACCOUNT](../interfaces/types.RPC.RPCSPEC07.API.Errors.NON_ACCOUNT.md) +- [DUPLICATE_TX](../interfaces/types.RPC.RPCSPEC07.API.Errors.DUPLICATE_TX.md) +- [COMPILED_CLASS_HASH_MISMATCH](../interfaces/types.RPC.RPCSPEC07.API.Errors.COMPILED_CLASS_HASH_MISMATCH.md) +- [UNSUPPORTED_TX_VERSION](../interfaces/types.RPC.RPCSPEC07.API.Errors.UNSUPPORTED_TX_VERSION.md) +- [UNSUPPORTED_CONTRACT_CLASS_VERSION](../interfaces/types.RPC.RPCSPEC07.API.Errors.UNSUPPORTED_CONTRACT_CLASS_VERSION.md) +- [UNEXPECTED_ERROR](../interfaces/types.RPC.RPCSPEC07.API.Errors.UNEXPECTED_ERROR.md) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.API.SPEC.md b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.API.SPEC.md new file mode 100644 index 000000000..2c754f56d --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.API.SPEC.md @@ -0,0 +1,1753 @@ +--- +id: 'types.RPC.RPCSPEC07.API.SPEC' +title: 'Namespace: SPEC' +sidebar_label: 'SPEC' +custom_edit_url: null +--- + +[RPCSPEC07](types.RPC.RPCSPEC07.md).[API](types.RPC.RPCSPEC07.API.md).SPEC + +## Type Aliases + +### FELT + +Ƭ **FELT**: `string` + +A field element. represented by at most 63 hex digits + +**`Pattern`** + +^0x(0|[a-fA-F1-9]{1}[a-fA-F0-9]{0,62})$ + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:8 + +--- + +### ETH_ADDRESS + +Ƭ **ETH_ADDRESS**: `string` + +an ethereum address represented as 40 hex digits + +**`Pattern`** + +^0x[a-fA-F0-9]{40}$ + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:13 + +--- + +### STORAGE_KEY + +Ƭ **STORAGE_KEY**: `string` + +A storage key. Represented as up to 62 hex digits, 3 bits, and 5 leading zeroes. + +**`Pattern`** + +^0x(0|[0-7]{1}[a-fA-F0-9]{0,62}$) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:18 + +--- + +### ADDRESS + +Ƭ **ADDRESS**: [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:19 + +--- + +### NUM_AS_HEX + +Ƭ **NUM_AS_HEX**: `string` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:20 + +--- + +### u64 + +Ƭ **u64**: `string` + +64 bit integers, represented by hex string of length at most 16 +"pattern": "^0x(0|[a-fA-F1-9]{1}[a-fA-F0-9]{0,15})$" + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:25 + +--- + +### u128 + +Ƭ **u128**: `string` + +64 bit integers, represented by hex string of length at most 32 +"pattern": "^0x(0|[a-fA-F1-9]{1}[a-fA-F0-9]{0,31})$" + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:30 + +--- + +### SIGNATURE + +Ƭ **SIGNATURE**: [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:31 + +--- + +### BLOCK_NUMBER + +Ƭ **BLOCK_NUMBER**: `number` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:32 + +--- + +### BLOCK_HASH + +Ƭ **BLOCK_HASH**: [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:33 + +--- + +### TXN_HASH + +Ƭ **TXN_HASH**: [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:34 + +--- + +### CHAIN_ID + +Ƭ **CHAIN_ID**: [`NUM_AS_HEX`](types.RPC.RPCSPEC07.API.SPEC.md#num_as_hex) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:35 + +--- + +### STRUCT_ABI_TYPE + +Ƭ **STRUCT_ABI_TYPE**: `"struct"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:36 + +--- + +### EVENT_ABI_TYPE + +Ƭ **EVENT_ABI_TYPE**: `"event"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:37 + +--- + +### FUNCTION_ABI_TYPE + +Ƭ **FUNCTION_ABI_TYPE**: `"function"` \| `"l1_handler"` \| `"constructor"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:38 + +--- + +### ENTRY_POINT_TYPE + +Ƭ **ENTRY_POINT_TYPE**: `"EXTERNAL"` \| `"L1_HANDLER"` \| `"CONSTRUCTOR"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:39 + +--- + +### CALL_TYPE + +Ƭ **CALL_TYPE**: `"DELEGATE"` \| `"LIBRARY_CALL"` \| `"CALL"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:40 + +--- + +### TXN_STATUS + +Ƭ **TXN_STATUS**: `"RECEIVED"` \| `"REJECTED"` \| `"ACCEPTED_ON_L2"` \| `"ACCEPTED_ON_L1"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:41 + +--- + +### SIMULATION_FLAG + +Ƭ **SIMULATION_FLAG**: `"SKIP_VALIDATE"` \| `"SKIP_FEE_CHARGE"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:42 + +--- + +### DA_MODE + +Ƭ **DA_MODE**: `"L1"` \| `"L2"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:43 + +--- + +### TXN_TYPE + +Ƭ **TXN_TYPE**: `"DECLARE"` \| `"DEPLOY"` \| `"DEPLOY_ACCOUNT"` \| `"INVOKE"` \| `"L1_HANDLER"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:44 + +--- + +### TXN_FINALITY_STATUS + +Ƭ **TXN_FINALITY_STATUS**: `"ACCEPTED_ON_L2"` \| `"ACCEPTED_ON_L1"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:45 + +--- + +### TXN_EXECUTION_STATUS + +Ƭ **TXN_EXECUTION_STATUS**: `"SUCCEEDED"` \| `"REVERTED"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:46 + +--- + +### BLOCK_STATUS + +Ƭ **BLOCK_STATUS**: `"PENDING"` \| `"ACCEPTED_ON_L2"` \| `"ACCEPTED_ON_L1"` \| `"REJECTED"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:47 + +--- + +### BLOCK_TAG + +Ƭ **BLOCK_TAG**: `"latest"` \| `"pending"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:48 + +--- + +### EVENTS_CHUNK + +Ƭ **EVENTS_CHUNK**: `Object` + +READ API + +#### Type declaration + +| Name | Type | +| :-------------------- | :----------------------------------------------------------------- | +| `events` | [`EMITTED_EVENT`](types.RPC.RPCSPEC07.API.SPEC.md#emitted_event)[] | +| `continuation_token?` | `string` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:52 + +--- + +### RESULT_PAGE_REQUEST + +Ƭ **RESULT_PAGE_REQUEST**: `Object` + +#### Type declaration + +| Name | Type | +| :-------------------- | :------- | +| `continuation_token?` | `string` | +| `chunk_size` | `number` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:56 + +--- + +### EMITTED_EVENT + +Ƭ **EMITTED_EVENT**: [`EVENT`](types.RPC.RPCSPEC07.API.SPEC.md#event) & \{ `block_hash`: [`BLOCK_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#block_hash) ; `block_number`: [`BLOCK_NUMBER`](types.RPC.RPCSPEC07.API.SPEC.md#block_number) ; `transaction_hash`: [`TXN_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#txn_hash) } + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:60 + +--- + +### EVENT + +Ƭ **EVENT**: \{ `from_address`: [`ADDRESS`](types.RPC.RPCSPEC07.API.SPEC.md#address) } & [`EVENT_CONTENT`](types.RPC.RPCSPEC07.API.SPEC.md#event_content) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:65 + +--- + +### EVENT_CONTENT + +Ƭ **EVENT_CONTENT**: `Object` + +#### Type declaration + +| Name | Type | +| :----- | :----------------------------------------------- | +| `keys` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | +| `data` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:68 + +--- + +### EVENT_FILTER + +Ƭ **EVENT_FILTER**: `Object` + +#### Type declaration + +| Name | Type | +| :------------ | :----------------------------------------------------- | +| `from_block?` | [`BLOCK_ID`](types.RPC.RPCSPEC07.API.SPEC.md#block_id) | +| `to_block?` | [`BLOCK_ID`](types.RPC.RPCSPEC07.API.SPEC.md#block_id) | +| `address?` | [`ADDRESS`](types.RPC.RPCSPEC07.API.SPEC.md#address) | +| `keys?` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[][] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:72 + +--- + +### BLOCK_ID + +Ƭ **BLOCK_ID**: \{ `block_hash?`: [`BLOCK_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#block_hash) ; `block_number?`: [`BLOCK_NUMBER`](types.RPC.RPCSPEC07.API.SPEC.md#block_number) } \| [`BLOCK_TAG`](types.RPC.RPCSPEC07.API.SPEC.md#block_tag) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:78 + +--- + +### SYNC_STATUS + +Ƭ **SYNC_STATUS**: `Object` + +#### Type declaration + +| Name | Type | +| :-------------------- | :------------------------------------------------------------- | +| `starting_block_hash` | [`BLOCK_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#block_hash) | +| `starting_block_num` | [`BLOCK_NUMBER`](types.RPC.RPCSPEC07.API.SPEC.md#block_number) | +| `current_block_hash` | [`BLOCK_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#block_hash) | +| `current_block_num` | [`BLOCK_NUMBER`](types.RPC.RPCSPEC07.API.SPEC.md#block_number) | +| `highest_block_hash` | [`BLOCK_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#block_hash) | +| `highest_block_num` | [`BLOCK_NUMBER`](types.RPC.RPCSPEC07.API.SPEC.md#block_number) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:82 + +--- + +### NEW_CLASSES + +Ƭ **NEW_CLASSES**: `Object` + +#### Type declaration + +| Name | Type | +| :-------------------- | :--------------------------------------------- | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `compiled_class_hash` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:90 + +--- + +### REPLACED_CLASS + +Ƭ **REPLACED_CLASS**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :--------------------------------------------- | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `contract_address` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:94 + +--- + +### NONCE_UPDATE + +Ƭ **NONCE_UPDATE**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :--------------------------------------------------- | +| `contract_address` | [`ADDRESS`](types.RPC.RPCSPEC07.API.SPEC.md#address) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:98 + +--- + +### STATE_DIFF + +Ƭ **STATE_DIFF**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------------------- | :------------------------------------------------------------------------------------------- | +| `storage_diffs` | [`CONTRACT_STORAGE_DIFF_ITEM`](types.RPC.RPCSPEC07.API.SPEC.md#contract_storage_diff_item)[] | +| `deprecated_declared_classes` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | +| `declared_classes` | [`NEW_CLASSES`](types.RPC.RPCSPEC07.API.SPEC.md#new_classes)[] | +| `deployed_contracts` | [`DEPLOYED_CONTRACT_ITEM`](types.RPC.RPCSPEC07.API.SPEC.md#deployed_contract_item)[] | +| `replaced_classes` | [`REPLACED_CLASS`](types.RPC.RPCSPEC07.API.SPEC.md#replaced_class)[] | +| `nonces` | [`NONCE_UPDATE`](types.RPC.RPCSPEC07.API.SPEC.md#nonce_update)[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:102 + +--- + +### PENDING_STATE_UPDATE + +Ƭ **PENDING_STATE_UPDATE**: `Object` + +#### Type declaration + +| Name | Type | +| :----------- | :--------------------------------------------------------- | +| `old_root` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `state_diff` | [`STATE_DIFF`](types.RPC.RPCSPEC07.API.SPEC.md#state_diff) | +| `block_hash` | `never` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:110 + +--- + +### STATE_UPDATE + +Ƭ **STATE_UPDATE**: `Object` + +#### Type declaration + +| Name | Type | +| :----------- | :--------------------------------------------------------- | +| `block_hash` | [`BLOCK_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#block_hash) | +| `old_root` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `new_root` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `state_diff` | [`STATE_DIFF`](types.RPC.RPCSPEC07.API.SPEC.md#state_diff) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:115 + +--- + +### BLOCK_BODY_WITH_TX_HASHES + +Ƭ **BLOCK_BODY_WITH_TX_HASHES**: `Object` + +#### Type declaration + +| Name | Type | +| :------------- | :------------------------------------------------------- | +| `transactions` | [`TXN_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#txn_hash)[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:121 + +--- + +### BLOCK_BODY_WITH_TXS + +Ƭ **BLOCK_BODY_WITH_TXS**: `Object` + +#### Type declaration + +| Name | Type | +| :------------- | :------------------------------------------------------------------------------------------------------------------------------- | +| `transactions` | [`TXN`](types.RPC.RPCSPEC07.API.SPEC.md#txn) & \{ `transaction_hash`: [`TXN_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#txn_hash) }[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:124 + +--- + +### BLOCK_BODY_WITH_RECEIPTS + +Ƭ **BLOCK_BODY_WITH_RECEIPTS**: `Object` + +#### Type declaration + +| Name | Type | +| :------------- | :------------------------------------------------------------------------------------------------------------------------------------------- | +| `transactions` | \{ `transaction`: [`TXN`](types.RPC.RPCSPEC07.API.SPEC.md#txn) ; `receipt`: [`TXN_RECEIPT`](types.RPC.RPCSPEC07.API.SPEC.md#txn_receipt) }[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:129 + +--- + +### BLOCK_HEADER + +Ƭ **BLOCK_HEADER**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------ | :----------------------------------------------------------------- | +| `block_hash` | [`BLOCK_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#block_hash) | +| `parent_hash` | [`BLOCK_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#block_hash) | +| `block_number` | [`BLOCK_NUMBER`](types.RPC.RPCSPEC07.API.SPEC.md#block_number) | +| `new_root` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `timestamp` | `number` | +| `sequencer_address` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `l1_gas_price` | [`RESOURCE_PRICE`](types.RPC.RPCSPEC07.API.SPEC.md#resource_price) | +| `l1_data_gas_price` | [`RESOURCE_PRICE`](types.RPC.RPCSPEC07.API.SPEC.md#resource_price) | +| `l1_da_mode` | `"BLOB"` \| `"CALLDATA"` | +| `starknet_version` | `string` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:135 + +--- + +### PENDING_BLOCK_HEADER + +Ƭ **PENDING_BLOCK_HEADER**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------ | :----------------------------------------------------------------- | +| `parent_hash` | [`BLOCK_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#block_hash) | +| `timestamp` | `number` | +| `sequencer_address` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `l1_gas_price` | [`RESOURCE_PRICE`](types.RPC.RPCSPEC07.API.SPEC.md#resource_price) | +| `l1_data_gas_price` | [`RESOURCE_PRICE`](types.RPC.RPCSPEC07.API.SPEC.md#resource_price) | +| `l1_da_mode` | `"BLOB"` \| `"CALLDATA"` | +| `starknet_version` | `string` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:147 + +--- + +### BLOCK_WITH_TX_HASHES + +Ƭ **BLOCK_WITH_TX_HASHES**: \{ `status`: [`BLOCK_STATUS`](types.RPC.RPCSPEC07.API.SPEC.md#block_status) } & [`BLOCK_HEADER`](types.RPC.RPCSPEC07.API.SPEC.md#block_header) & [`BLOCK_BODY_WITH_TX_HASHES`](types.RPC.RPCSPEC07.API.SPEC.md#block_body_with_tx_hashes) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:156 + +--- + +### BLOCK_WITH_TXS + +Ƭ **BLOCK_WITH_TXS**: \{ `status`: [`BLOCK_STATUS`](types.RPC.RPCSPEC07.API.SPEC.md#block_status) } & [`BLOCK_HEADER`](types.RPC.RPCSPEC07.API.SPEC.md#block_header) & [`BLOCK_BODY_WITH_TXS`](types.RPC.RPCSPEC07.API.SPEC.md#block_body_with_txs) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:159 + +--- + +### BLOCK_WITH_RECEIPTS + +Ƭ **BLOCK_WITH_RECEIPTS**: \{ `status`: [`BLOCK_STATUS`](types.RPC.RPCSPEC07.API.SPEC.md#block_status) } & [`BLOCK_HEADER`](types.RPC.RPCSPEC07.API.SPEC.md#block_header) & [`BLOCK_BODY_WITH_RECEIPTS`](types.RPC.RPCSPEC07.API.SPEC.md#block_body_with_receipts) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:162 + +--- + +### PENDING_BLOCK_WITH_TX_HASHES + +Ƭ **PENDING_BLOCK_WITH_TX_HASHES**: [`BLOCK_BODY_WITH_TX_HASHES`](types.RPC.RPCSPEC07.API.SPEC.md#block_body_with_tx_hashes) & [`PENDING_BLOCK_HEADER`](types.RPC.RPCSPEC07.API.SPEC.md#pending_block_header) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:165 + +--- + +### PENDING_BLOCK_WITH_TXS + +Ƭ **PENDING_BLOCK_WITH_TXS**: [`BLOCK_BODY_WITH_TXS`](types.RPC.RPCSPEC07.API.SPEC.md#block_body_with_txs) & [`PENDING_BLOCK_HEADER`](types.RPC.RPCSPEC07.API.SPEC.md#pending_block_header) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:166 + +--- + +### PENDING_BLOCK_WITH_RECEIPTS + +Ƭ **PENDING_BLOCK_WITH_RECEIPTS**: [`BLOCK_BODY_WITH_RECEIPTS`](types.RPC.RPCSPEC07.API.SPEC.md#block_body_with_receipts) & [`PENDING_BLOCK_HEADER`](types.RPC.RPCSPEC07.API.SPEC.md#pending_block_header) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:167 + +--- + +### DEPLOYED_CONTRACT_ITEM + +Ƭ **DEPLOYED_CONTRACT_ITEM**: `Object` + +#### Type declaration + +| Name | Type | +| :----------- | :--------------------------------------------- | +| `address` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:168 + +--- + +### CONTRACT_STORAGE_DIFF_ITEM + +Ƭ **CONTRACT_STORAGE_DIFF_ITEM**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------- | :--------------------------------------------------------------------- | +| `address` | `string` | +| `storage_entries` | [`StorageDiffItem`](types.RPC.RPCSPEC07.API.SPEC.md#storagediffitem)[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:172 + +--- + +### StorageDiffItem + +Ƭ **StorageDiffItem**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------- | +| `key` | `string` | +| `value` | `string` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:176 + +--- + +### TXN + +Ƭ **TXN**: [`INVOKE_TXN`](types.RPC.RPCSPEC07.API.SPEC.md#invoke_txn) \| [`L1_HANDLER_TXN`](types.RPC.RPCSPEC07.API.SPEC.md#l1_handler_txn) \| [`DECLARE_TXN`](types.RPC.RPCSPEC07.API.SPEC.md#declare_txn) \| [`DEPLOY_TXN`](types.RPC.RPCSPEC07.API.SPEC.md#deploy_txn) \| [`DEPLOY_ACCOUNT_TXN`](types.RPC.RPCSPEC07.API.SPEC.md#deploy_account_txn) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:180 + +--- + +### DECLARE_TXN + +Ƭ **DECLARE_TXN**: [`DECLARE_TXN_V0`](types.RPC.RPCSPEC07.API.SPEC.md#declare_txn_v0) \| [`DECLARE_TXN_V1`](types.RPC.RPCSPEC07.API.SPEC.md#declare_txn_v1) \| [`DECLARE_TXN_V2`](types.RPC.RPCSPEC07.API.SPEC.md#declare_txn_v2) \| [`DECLARE_TXN_V3`](types.RPC.RPCSPEC07.API.SPEC.md#declare_txn_v3) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:181 + +--- + +### DECLARE_TXN_V0 + +Ƭ **DECLARE_TXN_V0**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :------------------------------------------------------- | +| `type` | `"DECLARE"` | +| `sender_address` | [`ADDRESS`](types.RPC.RPCSPEC07.API.SPEC.md#address) | +| `max_fee` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `version` | `"0x0"` \| `"0x100000000000000000000000000000000"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC07.API.SPEC.md#signature) | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:182 + +--- + +### DECLARE_TXN_V1 + +Ƭ **DECLARE_TXN_V1**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :------------------------------------------------------- | +| `type` | `"DECLARE"` | +| `sender_address` | [`ADDRESS`](types.RPC.RPCSPEC07.API.SPEC.md#address) | +| `max_fee` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `version` | `"0x1"` \| `"0x100000000000000000000000000000001"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC07.API.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:190 + +--- + +### DECLARE_TXN_V2 + +Ƭ **DECLARE_TXN_V2**: `Object` + +#### Type declaration + +| Name | Type | +| :-------------------- | :------------------------------------------------------- | +| `type` | `"DECLARE"` | +| `sender_address` | [`ADDRESS`](types.RPC.RPCSPEC07.API.SPEC.md#address) | +| `compiled_class_hash` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `max_fee` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `version` | `"0x2"` \| `"0x100000000000000000000000000000002"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC07.API.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:199 + +--- + +### DECLARE_TXN_V3 + +Ƭ **DECLARE_TXN_V3**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------------------- | :----------------------------------------------------------------------------------- | +| `type` | `"DECLARE"` | +| `sender_address` | [`ADDRESS`](types.RPC.RPCSPEC07.API.SPEC.md#address) | +| `compiled_class_hash` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `version` | `"0x3"` \| `"0x100000000000000000000000000000003"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC07.API.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `resource_bounds` | [`RESOURCE_BOUNDS_MAPPING`](types.RPC.RPCSPEC07.API.SPEC.md#resource_bounds_mapping) | +| `tip` | [`u64`](types.RPC.RPCSPEC07.API.SPEC.md#u64) | +| `paymaster_data` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | +| `account_deployment_data` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | +| `nonce_data_availability_mode` | [`DA_MODE`](types.RPC.RPCSPEC07.API.SPEC.md#da_mode) | +| `fee_data_availability_mode` | [`DA_MODE`](types.RPC.RPCSPEC07.API.SPEC.md#da_mode) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:209 + +--- + +### BROADCASTED_TXN + +Ƭ **BROADCASTED_TXN**: [`BROADCASTED_INVOKE_TXN`](types.RPC.RPCSPEC07.API.SPEC.md#broadcasted_invoke_txn) \| [`BROADCASTED_DECLARE_TXN`](types.RPC.RPCSPEC07.API.SPEC.md#broadcasted_declare_txn) \| [`BROADCASTED_DEPLOY_ACCOUNT_TXN`](types.RPC.RPCSPEC07.API.SPEC.md#broadcasted_deploy_account_txn) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:224 + +--- + +### BROADCASTED_INVOKE_TXN + +Ƭ **BROADCASTED_INVOKE_TXN**: [`INVOKE_TXN`](types.RPC.RPCSPEC07.API.SPEC.md#invoke_txn) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:225 + +--- + +### BROADCASTED_DEPLOY_ACCOUNT_TXN + +Ƭ **BROADCASTED_DEPLOY_ACCOUNT_TXN**: [`DEPLOY_ACCOUNT_TXN`](types.RPC.RPCSPEC07.API.SPEC.md#deploy_account_txn) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:226 + +--- + +### BROADCASTED_DECLARE_TXN + +Ƭ **BROADCASTED_DECLARE_TXN**: [`BROADCASTED_DECLARE_TXN_V1`](types.RPC.RPCSPEC07.API.SPEC.md#broadcasted_declare_txn_v1) \| [`BROADCASTED_DECLARE_TXN_V2`](types.RPC.RPCSPEC07.API.SPEC.md#broadcasted_declare_txn_v2) \| [`BROADCASTED_DECLARE_TXN_V3`](types.RPC.RPCSPEC07.API.SPEC.md#broadcasted_declare_txn_v3) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:227 + +--- + +### BROADCASTED_DECLARE_TXN_V1 + +Ƭ **BROADCASTED_DECLARE_TXN_V1**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :--------------------------------------------------------------------------------------- | +| `type` | `"DECLARE"` | +| `sender_address` | [`ADDRESS`](types.RPC.RPCSPEC07.API.SPEC.md#address) | +| `max_fee` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `version` | `"0x1"` \| `"0x100000000000000000000000000000001"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC07.API.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `contract_class` | [`DEPRECATED_CONTRACT_CLASS`](types.RPC.RPCSPEC07.API.SPEC.md#deprecated_contract_class) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:228 + +--- + +### BROADCASTED_DECLARE_TXN_V2 + +Ƭ **BROADCASTED_DECLARE_TXN_V2**: `Object` + +#### Type declaration + +| Name | Type | +| :-------------------- | :----------------------------------------------------------------- | +| `type` | `"DECLARE"` | +| `sender_address` | [`ADDRESS`](types.RPC.RPCSPEC07.API.SPEC.md#address) | +| `compiled_class_hash` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `max_fee` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `version` | `"0x2"` \| `"0x100000000000000000000000000000002"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC07.API.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `contract_class` | [`CONTRACT_CLASS`](types.RPC.RPCSPEC07.API.SPEC.md#contract_class) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:237 + +--- + +### BROADCASTED_DECLARE_TXN_V3 + +Ƭ **BROADCASTED_DECLARE_TXN_V3**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------------------- | :----------------------------------------------------------------------------------- | +| `type` | `"DECLARE"` | +| `sender_address` | [`ADDRESS`](types.RPC.RPCSPEC07.API.SPEC.md#address) | +| `compiled_class_hash` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `version` | `"0x3"` \| `"0x100000000000000000000000000000003"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC07.API.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `contract_class` | [`CONTRACT_CLASS`](types.RPC.RPCSPEC07.API.SPEC.md#contract_class) | +| `resource_bounds` | [`RESOURCE_BOUNDS_MAPPING`](types.RPC.RPCSPEC07.API.SPEC.md#resource_bounds_mapping) | +| `tip` | [`u64`](types.RPC.RPCSPEC07.API.SPEC.md#u64) | +| `paymaster_data` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | +| `account_deployment_data` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | +| `nonce_data_availability_mode` | [`DA_MODE`](types.RPC.RPCSPEC07.API.SPEC.md#da_mode) | +| `fee_data_availability_mode` | [`DA_MODE`](types.RPC.RPCSPEC07.API.SPEC.md#da_mode) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:247 + +--- + +### DEPLOY_ACCOUNT_TXN + +Ƭ **DEPLOY_ACCOUNT_TXN**: [`DEPLOY_ACCOUNT_TXN_V1`](types.RPC.RPCSPEC07.API.SPEC.md#deploy_account_txn_v1) \| [`DEPLOY_ACCOUNT_TXN_V3`](types.RPC.RPCSPEC07.API.SPEC.md#deploy_account_txn_v3) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:262 + +--- + +### DEPLOY_ACCOUNT_TXN_V1 + +Ƭ **DEPLOY_ACCOUNT_TXN_V1**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------------- | :------------------------------------------------------- | +| `type` | `"DEPLOY_ACCOUNT"` | +| `max_fee` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `version` | `"0x1"` \| `"0x100000000000000000000000000000001"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC07.API.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `contract_address_salt` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `constructor_calldata` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:263 + +--- + +### DEPLOY_ACCOUNT_TXN_V3 + +Ƭ **DEPLOY_ACCOUNT_TXN_V3**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------------------- | :----------------------------------------------------------------------------------- | +| `type` | `"DEPLOY_ACCOUNT"` | +| `version` | `"0x3"` \| `"0x100000000000000000000000000000003"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC07.API.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `contract_address_salt` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `constructor_calldata` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `resource_bounds` | [`RESOURCE_BOUNDS_MAPPING`](types.RPC.RPCSPEC07.API.SPEC.md#resource_bounds_mapping) | +| `tip` | [`u64`](types.RPC.RPCSPEC07.API.SPEC.md#u64) | +| `paymaster_data` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | +| `nonce_data_availability_mode` | [`DA_MODE`](types.RPC.RPCSPEC07.API.SPEC.md#da_mode) | +| `fee_data_availability_mode` | [`DA_MODE`](types.RPC.RPCSPEC07.API.SPEC.md#da_mode) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:273 + +--- + +### DEPLOY_TXN + +Ƭ **DEPLOY_TXN**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------------- | :----------------------------------------------- | +| `type` | `"DEPLOY"` | +| `version` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `contract_address_salt` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `constructor_calldata` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:287 + +--- + +### INVOKE_TXN + +Ƭ **INVOKE_TXN**: [`INVOKE_TXN_V0`](types.RPC.RPCSPEC07.API.SPEC.md#invoke_txn_v0) \| [`INVOKE_TXN_V1`](types.RPC.RPCSPEC07.API.SPEC.md#invoke_txn_v1) \| [`INVOKE_TXN_V3`](types.RPC.RPCSPEC07.API.SPEC.md#invoke_txn_v3) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:294 + +--- + +### INVOKE_TXN_V0 + +Ƭ **INVOKE_TXN_V0**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------------- | :------------------------------------------------------- | +| `type` | `"INVOKE"` | +| `max_fee` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `version` | `"0x0"` \| `"0x100000000000000000000000000000000"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC07.API.SPEC.md#signature) | +| `contract_address` | [`ADDRESS`](types.RPC.RPCSPEC07.API.SPEC.md#address) | +| `entry_point_selector` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `calldata` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:295 + +--- + +### INVOKE_TXN_V1 + +Ƭ **INVOKE_TXN_V1**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :------------------------------------------------------- | +| `type` | `"INVOKE"` | +| `sender_address` | [`ADDRESS`](types.RPC.RPCSPEC07.API.SPEC.md#address) | +| `calldata` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | +| `max_fee` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `version` | `"0x1"` \| `"0x100000000000000000000000000000001"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC07.API.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:304 + +--- + +### INVOKE_TXN_V3 + +Ƭ **INVOKE_TXN_V3**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------------------- | :----------------------------------------------------------------------------------- | +| `type` | `"INVOKE"` | +| `sender_address` | [`ADDRESS`](types.RPC.RPCSPEC07.API.SPEC.md#address) | +| `calldata` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | +| `version` | `"0x3"` \| `"0x100000000000000000000000000000003"` | +| `signature` | [`SIGNATURE`](types.RPC.RPCSPEC07.API.SPEC.md#signature) | +| `nonce` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `resource_bounds` | [`RESOURCE_BOUNDS_MAPPING`](types.RPC.RPCSPEC07.API.SPEC.md#resource_bounds_mapping) | +| `tip` | [`u64`](types.RPC.RPCSPEC07.API.SPEC.md#u64) | +| `paymaster_data` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | +| `account_deployment_data` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | +| `nonce_data_availability_mode` | [`DA_MODE`](types.RPC.RPCSPEC07.API.SPEC.md#da_mode) | +| `fee_data_availability_mode` | [`DA_MODE`](types.RPC.RPCSPEC07.API.SPEC.md#da_mode) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:313 + +--- + +### L1_HANDLER_TXN + +Ƭ **L1_HANDLER_TXN**: \{ `version`: `"0x0"` ; `type`: `"L1_HANDLER"` ; `nonce`: [`NUM_AS_HEX`](types.RPC.RPCSPEC07.API.SPEC.md#num_as_hex) } & [`FUNCTION_CALL`](types.RPC.RPCSPEC07.API.SPEC.md#function_call) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:327 + +--- + +### COMMON_RECEIPT_PROPERTIES + +Ƭ **COMMON_RECEIPT_PROPERTIES**: \{ `transaction_hash`: [`TXN_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#txn_hash) ; `actual_fee`: [`FEE_PAYMENT`](types.RPC.RPCSPEC07.API.SPEC.md#fee_payment) ; `finality_status`: [`TXN_FINALITY_STATUS`](types.RPC.RPCSPEC07.API.SPEC.md#txn_finality_status) ; `messages_sent`: [`MSG_TO_L1`](types.RPC.RPCSPEC07.API.SPEC.md#msg_to_l1)[] ; `events`: [`EVENT`](types.RPC.RPCSPEC07.API.SPEC.md#event)[] ; `execution_resources`: [`EXECUTION_RESOURCES`](types.RPC.RPCSPEC07.API.SPEC.md#execution_resources) } & `SUCCESSFUL_COMMON_RECEIPT_PROPERTIES` \| `REVERTED_COMMON_RECEIPT_PROPERTIES` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:332 + +--- + +### INVOKE_TXN_RECEIPT + +Ƭ **INVOKE_TXN_RECEIPT**: \{ `type`: `"INVOKE"` } & [`COMMON_RECEIPT_PROPERTIES`](types.RPC.RPCSPEC07.API.SPEC.md#common_receipt_properties) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:347 + +--- + +### DECLARE_TXN_RECEIPT + +Ƭ **DECLARE_TXN_RECEIPT**: \{ `type`: `"DECLARE"` } & [`COMMON_RECEIPT_PROPERTIES`](types.RPC.RPCSPEC07.API.SPEC.md#common_receipt_properties) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:350 + +--- + +### DEPLOY_ACCOUNT_TXN_RECEIPT + +Ƭ **DEPLOY_ACCOUNT_TXN_RECEIPT**: \{ `type`: `"DEPLOY_ACCOUNT"` ; `contract_address`: [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) } & [`COMMON_RECEIPT_PROPERTIES`](types.RPC.RPCSPEC07.API.SPEC.md#common_receipt_properties) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:353 + +--- + +### DEPLOY_TXN_RECEIPT + +Ƭ **DEPLOY_TXN_RECEIPT**: \{ `type`: `"DEPLOY"` ; `contract_address`: [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) } & [`COMMON_RECEIPT_PROPERTIES`](types.RPC.RPCSPEC07.API.SPEC.md#common_receipt_properties) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:357 + +--- + +### L1_HANDLER_TXN_RECEIPT + +Ƭ **L1_HANDLER_TXN_RECEIPT**: \{ `type`: `"L1_HANDLER"` ; `message_hash`: [`NUM_AS_HEX`](types.RPC.RPCSPEC07.API.SPEC.md#num_as_hex) } & [`COMMON_RECEIPT_PROPERTIES`](types.RPC.RPCSPEC07.API.SPEC.md#common_receipt_properties) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:361 + +--- + +### TXN_RECEIPT + +Ƭ **TXN_RECEIPT**: [`INVOKE_TXN_RECEIPT`](types.RPC.RPCSPEC07.API.SPEC.md#invoke_txn_receipt) \| [`L1_HANDLER_TXN_RECEIPT`](types.RPC.RPCSPEC07.API.SPEC.md#l1_handler_txn_receipt) \| [`DECLARE_TXN_RECEIPT`](types.RPC.RPCSPEC07.API.SPEC.md#declare_txn_receipt) \| [`DEPLOY_TXN_RECEIPT`](types.RPC.RPCSPEC07.API.SPEC.md#deploy_txn_receipt) \| [`DEPLOY_ACCOUNT_TXN_RECEIPT`](types.RPC.RPCSPEC07.API.SPEC.md#deploy_account_txn_receipt) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:365 + +--- + +### TXN_RECEIPT_WITH_BLOCK_INFO + +Ƭ **TXN_RECEIPT_WITH_BLOCK_INFO**: [`TXN_RECEIPT`](types.RPC.RPCSPEC07.API.SPEC.md#txn_receipt) & \{ `block_hash?`: [`BLOCK_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#block_hash) ; `block_number?`: [`BLOCK_NUMBER`](types.RPC.RPCSPEC07.API.SPEC.md#block_number) } + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:366 + +--- + +### MSG_TO_L1 + +Ƭ **MSG_TO_L1**: `Object` + +#### Type declaration + +| Name | Type | +| :------------- | :----------------------------------------------- | +| `from_address` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `to_address` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `payload` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:370 + +--- + +### MSG_FROM_L1 + +Ƭ **MSG_FROM_L1**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------------- | :----------------------------------------------------------- | +| `from_address` | [`ETH_ADDRESS`](types.RPC.RPCSPEC07.API.SPEC.md#eth_address) | +| `to_address` | [`ADDRESS`](types.RPC.RPCSPEC07.API.SPEC.md#address) | +| `entry_point_selector` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `payload` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:375 + +--- + +### FUNCTION_CALL + +Ƭ **FUNCTION_CALL**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------------- | :--------------------------------------------------- | +| `contract_address` | [`ADDRESS`](types.RPC.RPCSPEC07.API.SPEC.md#address) | +| `entry_point_selector` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `calldata` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:381 + +--- + +### CONTRACT_CLASS + +Ƭ **CONTRACT_CLASS**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sierra_program` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | +| `contract_class_version` | `string` | +| `entry_points_by_type` | \{ `CONSTRUCTOR`: [`SIERRA_ENTRY_POINT`](types.RPC.RPCSPEC07.API.SPEC.md#sierra_entry_point)[] ; `EXTERNAL`: [`SIERRA_ENTRY_POINT`](types.RPC.RPCSPEC07.API.SPEC.md#sierra_entry_point)[] ; `L1_HANDLER`: [`SIERRA_ENTRY_POINT`](types.RPC.RPCSPEC07.API.SPEC.md#sierra_entry_point)[] } | +| `entry_points_by_type.CONSTRUCTOR` | [`SIERRA_ENTRY_POINT`](types.RPC.RPCSPEC07.API.SPEC.md#sierra_entry_point)[] | +| `entry_points_by_type.EXTERNAL` | [`SIERRA_ENTRY_POINT`](types.RPC.RPCSPEC07.API.SPEC.md#sierra_entry_point)[] | +| `entry_points_by_type.L1_HANDLER` | [`SIERRA_ENTRY_POINT`](types.RPC.RPCSPEC07.API.SPEC.md#sierra_entry_point)[] | +| `abi` | `string` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:386 + +--- + +### DEPRECATED_CONTRACT_CLASS + +Ƭ **DEPRECATED_CONTRACT_CLASS**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `program` | `string` | +| `entry_points_by_type` | \{ `CONSTRUCTOR`: [`DEPRECATED_CAIRO_ENTRY_POINT`](types.RPC.RPCSPEC07.API.SPEC.md#deprecated_cairo_entry_point)[] ; `EXTERNAL`: [`DEPRECATED_CAIRO_ENTRY_POINT`](types.RPC.RPCSPEC07.API.SPEC.md#deprecated_cairo_entry_point)[] ; `L1_HANDLER`: [`DEPRECATED_CAIRO_ENTRY_POINT`](types.RPC.RPCSPEC07.API.SPEC.md#deprecated_cairo_entry_point)[] } | +| `entry_points_by_type.CONSTRUCTOR` | [`DEPRECATED_CAIRO_ENTRY_POINT`](types.RPC.RPCSPEC07.API.SPEC.md#deprecated_cairo_entry_point)[] | +| `entry_points_by_type.EXTERNAL` | [`DEPRECATED_CAIRO_ENTRY_POINT`](types.RPC.RPCSPEC07.API.SPEC.md#deprecated_cairo_entry_point)[] | +| `entry_points_by_type.L1_HANDLER` | [`DEPRECATED_CAIRO_ENTRY_POINT`](types.RPC.RPCSPEC07.API.SPEC.md#deprecated_cairo_entry_point)[] | +| `abi` | [`CONTRACT_ABI`](types.RPC.RPCSPEC07.API.SPEC.md#contract_abi) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:396 + +--- + +### DEPRECATED_CAIRO_ENTRY_POINT + +Ƭ **DEPRECATED_CAIRO_ENTRY_POINT**: `Object` + +#### Type declaration + +| Name | Type | +| :--------- | :--------------------------------------------------------------------- | +| `offset` | [`NUM_AS_HEX`](types.RPC.RPCSPEC07.API.SPEC.md#num_as_hex) \| `number` | +| `selector` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:405 + +--- + +### SIERRA_ENTRY_POINT + +Ƭ **SIERRA_ENTRY_POINT**: `Object` + +#### Type declaration + +| Name | Type | +| :------------- | :--------------------------------------------- | +| `selector` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `function_idx` | `number` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:409 + +--- + +### CONTRACT_ABI + +Ƭ **CONTRACT_ABI**: readonly [`CONTRACT_ABI_ENTRY`](types.RPC.RPCSPEC07.API.SPEC.md#contract_abi_entry)[] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:413 + +--- + +### CONTRACT_ABI_ENTRY + +Ƭ **CONTRACT_ABI_ENTRY**: `Object` + +#### Type declaration + +| Name | Type | +| :--------- | :--------------------------------------------- | +| `selector` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `input` | `string` | +| `output` | `string` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:414 + +--- + +### STRUCT_ABI_ENTRY + +Ƭ **STRUCT_ABI_ENTRY**: `Object` + +#### Type declaration + +| Name | Type | +| :-------- | :------------------------------------------------------------------- | +| `type` | [`STRUCT_ABI_TYPE`](types.RPC.RPCSPEC07.API.SPEC.md#struct_abi_type) | +| `name` | `string` | +| `size` | `number` | +| `members` | [`STRUCT_MEMBER`](types.RPC.RPCSPEC07.API.SPEC.md#struct_member)[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:419 + +--- + +### STRUCT_MEMBER + +Ƭ **STRUCT_MEMBER**: [`TYPED_PARAMETER`](types.RPC.RPCSPEC07.API.SPEC.md#typed_parameter) & \{ `offset`: `number` } + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:425 + +--- + +### EVENT_ABI_ENTRY + +Ƭ **EVENT_ABI_ENTRY**: `Object` + +#### Type declaration + +| Name | Type | +| :----- | :--------------------------------------------------------------------- | +| `type` | [`EVENT_ABI_TYPE`](types.RPC.RPCSPEC07.API.SPEC.md#event_abi_type) | +| `name` | `string` | +| `keys` | [`TYPED_PARAMETER`](types.RPC.RPCSPEC07.API.SPEC.md#typed_parameter)[] | +| `data` | [`TYPED_PARAMETER`](types.RPC.RPCSPEC07.API.SPEC.md#typed_parameter)[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:428 + +--- + +### FUNCTION_STATE_MUTABILITY + +Ƭ **FUNCTION_STATE_MUTABILITY**: `"view"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:434 + +--- + +### FUNCTION_ABI_ENTRY + +Ƭ **FUNCTION_ABI_ENTRY**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------- | :--------------------------------------------------------------------------------------- | +| `type` | [`FUNCTION_ABI_TYPE`](types.RPC.RPCSPEC07.API.SPEC.md#function_abi_type) | +| `name` | `string` | +| `inputs` | [`TYPED_PARAMETER`](types.RPC.RPCSPEC07.API.SPEC.md#typed_parameter)[] | +| `outputs` | [`TYPED_PARAMETER`](types.RPC.RPCSPEC07.API.SPEC.md#typed_parameter)[] | +| `stateMutability` | [`FUNCTION_STATE_MUTABILITY`](types.RPC.RPCSPEC07.API.SPEC.md#function_state_mutability) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:435 + +--- + +### TYPED_PARAMETER + +Ƭ **TYPED_PARAMETER**: `Object` + +#### Type declaration + +| Name | Type | +| :----- | :------- | +| `name` | `string` | +| `type` | `string` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:442 + +--- + +### SIMULATION_FLAG_FOR_ESTIMATE_FEE + +Ƭ **SIMULATION_FLAG_FOR_ESTIMATE_FEE**: `"SKIP_VALIDATE"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:446 + +--- + +### PRICE_UNIT + +Ƭ **PRICE_UNIT**: `"WEI"` \| `"FRI"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:447 + +--- + +### FEE_ESTIMATE + +Ƭ **FEE_ESTIMATE**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------ | :--------------------------------------------------------- | +| `gas_consumed` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `gas_price` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `data_gas_consumed` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `data_gas_price` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `overall_fee` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `unit` | [`PRICE_UNIT`](types.RPC.RPCSPEC07.API.SPEC.md#price_unit) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:448 + +--- + +### FEE_PAYMENT + +Ƭ **FEE_PAYMENT**: `Object` + +#### Type declaration + +| Name | Type | +| :------- | :--------------------------------------------------------- | +| `amount` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `unit` | [`PRICE_UNIT`](types.RPC.RPCSPEC07.API.SPEC.md#price_unit) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:456 + +--- + +### RESOURCE_BOUNDS_MAPPING + +Ƭ **RESOURCE_BOUNDS_MAPPING**: `Object` + +#### Type declaration + +| Name | Type | +| :------- | :------------------------------------------------------------------- | +| `l1_gas` | [`RESOURCE_BOUNDS`](types.RPC.RPCSPEC07.API.SPEC.md#resource_bounds) | +| `l2_gas` | [`RESOURCE_BOUNDS`](types.RPC.RPCSPEC07.API.SPEC.md#resource_bounds) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:460 + +--- + +### RESOURCE_BOUNDS + +Ƭ **RESOURCE_BOUNDS**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------- | :--------------------------------------------- | +| `max_amount` | [`u64`](types.RPC.RPCSPEC07.API.SPEC.md#u64) | +| `max_price_per_unit` | [`u128`](types.RPC.RPCSPEC07.API.SPEC.md#u128) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:464 + +--- + +### RESOURCE_PRICE + +Ƭ **RESOURCE_PRICE**: `Object` + +#### Type declaration + +| Name | Type | +| :------------- | :--------------------------------------------- | +| `price_in_fri` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | +| `price_in_wei` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:468 + +--- + +### COMPUTATION_RESOURCES + +Ƭ **COMPUTATION_RESOURCES**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------------------------- | :------- | +| `steps` | `number` | +| `memory_holes?` | `number` | +| `range_check_builtin_applications?` | `number` | +| `pedersen_builtin_applications?` | `number` | +| `poseidon_builtin_applications?` | `number` | +| `ec_op_builtin_applications?` | `number` | +| `ecdsa_builtin_applications?` | `number` | +| `bitwise_builtin_applications?` | `number` | +| `keccak_builtin_applications?` | `number` | +| `segment_arena_builtin?` | `number` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:472 + +--- + +### EXECUTION_RESOURCES + +Ƭ **EXECUTION_RESOURCES**: [`COMPUTATION_RESOURCES`](types.RPC.RPCSPEC07.API.SPEC.md#computation_resources) & \{ `data_availability`: \{ `l1_gas`: `number` ; `l1_data_gas`: `number` } } + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:484 + +--- + +### TRANSACTION_TRACE + +Ƭ **TRANSACTION_TRACE**: `Object` + +TRACE API + +#### Type declaration + +| Name | Type | +| :------------------------- | :------------------------------------------------------------------------------------- | +| `invoke_tx_trace?` | [`INVOKE_TXN_TRACE`](types.RPC.RPCSPEC07.API.SPEC.md#invoke_txn_trace) | +| `declare_tx_trace?` | [`DECLARE_TXN_TRACE`](types.RPC.RPCSPEC07.API.SPEC.md#declare_txn_trace) | +| `deploy_account_tx_trace?` | [`DEPLOY_ACCOUNT_TXN_TRACE`](types.RPC.RPCSPEC07.API.SPEC.md#deploy_account_txn_trace) | +| `l1_handler_tx_trace?` | [`L1_HANDLER_TXN_TRACE`](types.RPC.RPCSPEC07.API.SPEC.md#l1_handler_txn_trace) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:493 + +--- + +### INVOKE_TXN_TRACE + +Ƭ **INVOKE_TXN_TRACE**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------------- | :------------------------------------------------------------------------------------------------------------- | +| `type` | `"INVOKE"` | +| `execute_invocation` | [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC07.API.SPEC.md#function_invocation) \| \{ `revert_reason`: `string` } | +| `validate_invocation?` | [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC07.API.SPEC.md#function_invocation) | +| `fee_transfer_invocation?` | [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC07.API.SPEC.md#function_invocation) | +| `state_diff?` | [`STATE_DIFF`](types.RPC.RPCSPEC07.API.SPEC.md#state_diff) | +| `execution_resources` | [`EXECUTION_RESOURCES`](types.RPC.RPCSPEC07.API.SPEC.md#execution_resources) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:499 + +--- + +### DECLARE_TXN_TRACE + +Ƭ **DECLARE_TXN_TRACE**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------------- | :--------------------------------------------------------------------------- | +| `type` | `"DECLARE"` | +| `validate_invocation?` | [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC07.API.SPEC.md#function_invocation) | +| `fee_transfer_invocation?` | [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC07.API.SPEC.md#function_invocation) | +| `state_diff?` | [`STATE_DIFF`](types.RPC.RPCSPEC07.API.SPEC.md#state_diff) | +| `execution_resources` | [`EXECUTION_RESOURCES`](types.RPC.RPCSPEC07.API.SPEC.md#execution_resources) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:509 + +--- + +### DEPLOY_ACCOUNT_TXN_TRACE + +Ƭ **DEPLOY_ACCOUNT_TXN_TRACE**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------------- | :--------------------------------------------------------------------------- | +| `type` | `"DEPLOY_ACCOUNT"` | +| `constructor_invocation` | [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC07.API.SPEC.md#function_invocation) | +| `validate_invocation?` | [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC07.API.SPEC.md#function_invocation) | +| `fee_transfer_invocation?` | [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC07.API.SPEC.md#function_invocation) | +| `state_diff?` | [`STATE_DIFF`](types.RPC.RPCSPEC07.API.SPEC.md#state_diff) | +| `execution_resources` | [`EXECUTION_RESOURCES`](types.RPC.RPCSPEC07.API.SPEC.md#execution_resources) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:516 + +--- + +### L1_HANDLER_TXN_TRACE + +Ƭ **L1_HANDLER_TXN_TRACE**: `Object` + +#### Type declaration + +| Name | Type | +| :-------------------- | :--------------------------------------------------------------------------- | +| `type` | `"L1_HANDLER"` | +| `function_invocation` | [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC07.API.SPEC.md#function_invocation) | +| `state_diff?` | [`STATE_DIFF`](types.RPC.RPCSPEC07.API.SPEC.md#state_diff) | +| `execution_resources` | [`EXECUTION_RESOURCES`](types.RPC.RPCSPEC07.API.SPEC.md#execution_resources) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:524 + +--- + +### NESTED_CALL + +Ƭ **NESTED_CALL**: [`FUNCTION_INVOCATION`](types.RPC.RPCSPEC07.API.SPEC.md#function_invocation) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:530 + +--- + +### FUNCTION_INVOCATION + +Ƭ **FUNCTION_INVOCATION**: [`FUNCTION_CALL`](types.RPC.RPCSPEC07.API.SPEC.md#function_call) & \{ `caller_address`: `string` ; `class_hash`: `string` ; `entry_point_type`: [`ENTRY_POINT_TYPE`](types.RPC.RPCSPEC07.API.SPEC.md#entry_point_type) ; `call_type`: [`CALL_TYPE`](types.RPC.RPCSPEC07.API.SPEC.md#call_type) ; `result`: `string`[] ; `calls`: [`NESTED_CALL`](types.RPC.RPCSPEC07.API.SPEC.md#nested_call)[] ; `events`: [`ORDERED_EVENT`](types.RPC.RPCSPEC07.API.SPEC.md#ordered_event)[] ; `messages`: [`ORDERED_MESSAGE`](types.RPC.RPCSPEC07.API.SPEC.md#ordered_message)[] ; `execution_resources`: [`COMPUTATION_RESOURCES`](types.RPC.RPCSPEC07.API.SPEC.md#computation_resources) } + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:531 + +--- + +### ORDERED_EVENT + +Ƭ **ORDERED_EVENT**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :----------------------------------------------- | +| `order` | `number` | +| `event` | [`EVENT`](types.RPC.RPCSPEC07.API.SPEC.md#event) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:542 + +--- + +### ORDERED_MESSAGE + +Ƭ **ORDERED_MESSAGE**: `Object` + +#### Type declaration + +| Name | Type | +| :-------- | :------------------------------------------------------- | +| `order` | `number` | +| `message` | [`MSG_TO_L1`](types.RPC.RPCSPEC07.API.SPEC.md#msg_to_l1) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/components.d.ts:546 diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.API.md b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.API.md new file mode 100644 index 000000000..bd23a4f91 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.API.md @@ -0,0 +1,1056 @@ +--- +id: 'types.RPC.RPCSPEC07.API' +title: 'Namespace: API' +sidebar_label: 'API' +custom_edit_url: null +--- + +[RPC](types.RPC.md).[RPCSPEC07](types.RPC.RPCSPEC07.md).API + +## Namespaces + +- [Errors](types.RPC.RPCSPEC07.API.Errors.md) +- [SPEC](types.RPC.RPCSPEC07.API.SPEC.md) + +## Type Aliases + +### Methods + +Ƭ **Methods**: `ReadMethods` & `WriteMethods` & `TraceMethods` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/methods.d.ts:4 + +--- + +### ABI + +Ƭ **ABI**: ([`FUNCTION`](types.RPC.RPCSPEC07.API.md#function) \| [`CONSTRUCTOR`](types.RPC.RPCSPEC07.API.md#constructor) \| [`L1_HANDLER`](types.RPC.RPCSPEC07.API.md#l1_handler) \| [`EVENT`](types.RPC.RPCSPEC07.API.md#event) \| [`STRUCT`](types.RPC.RPCSPEC07.API.md#struct) \| [`ENUM`](types.RPC.RPCSPEC07.API.md#enum) \| [`INTERFACE`](types.RPC.RPCSPEC07.API.md#interface) \| [`IMPL`](types.RPC.RPCSPEC07.API.md#impl))[] + +TypeScript Representation of Cairo1 v2+ Starknet Contract ABI + +starknet_metadata.json - tags/v0.5.0 + +'starknet-specs' (OpenRpc protocol types) +https://github.com/starkware-libs/starknet-specs + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/contract.d.ts:9 + +--- + +### FUNCTION + +Ƭ **FUNCTION**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :----------------------------------------- | +| `type` | `"function"` | +| `name` | `string` | +| `inputs` | \{ `name`: `string` ; `type`: `string` }[] | +| `outputs?` | \{ `type`: `string` }[] | +| `state_mutability` | `"view"` \| `"external"` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/contract.d.ts:10 + +--- + +### CONSTRUCTOR + +Ƭ **CONSTRUCTOR**: `Object` + +#### Type declaration + +| Name | Type | +| :------- | :----------------------------------------- | +| `type` | `"constructor"` | +| `name` | `"constructor"` | +| `inputs` | \{ `name`: `string` ; `type`: `string` }[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/contract.d.ts:22 + +--- + +### L1_HANDLER + +Ƭ **L1_HANDLER**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :----------------------------------------- | +| `type` | `"l1_handler"` | +| `name` | `string` | +| `inputs` | \{ `name`: `string` ; `type`: `string` }[] | +| `outputs?` | \{ `type`: `string` }[] | +| `state_mutability` | `"view"` \| `"external"` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/contract.d.ts:30 + +--- + +### EVENT + +Ƭ **EVENT**: \{ `type`: `"event"` ; `name`: `string` } & [`ENUM_EVENT`](types.RPC.RPCSPEC07.API.md#enum_event) \| [`STRUCT_EVENT`](types.RPC.RPCSPEC07.API.md#struct_event) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/contract.d.ts:42 + +--- + +### STRUCT_EVENT + +Ƭ **STRUCT_EVENT**: `Object` + +#### Type declaration + +| Name | Type | +| :-------- | :-------------------------------------------------------- | +| `kind` | `"struct"` | +| `members` | [`EVENT_FIELD`](types.RPC.RPCSPEC07.API.md#event_field)[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/contract.d.ts:46 + +--- + +### ENUM_EVENT + +Ƭ **ENUM_EVENT**: `Object` + +#### Type declaration + +| Name | Type | +| :--------- | :-------------------------------------------------------- | +| `kind` | `"enum"` | +| `variants` | [`EVENT_FIELD`](types.RPC.RPCSPEC07.API.md#event_field)[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/contract.d.ts:50 + +--- + +### STRUCT + +Ƭ **STRUCT**: `Object` + +#### Type declaration + +| Name | Type | +| :-------- | :----------------------------------------- | +| `type` | `"struct"` | +| `name` | `string` | +| `members` | \{ `name`: `string` ; `type`: `string` }[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/contract.d.ts:54 + +--- + +### ENUM + +Ƭ **ENUM**: `Object` + +#### Type declaration + +| Name | Type | +| :--------- | :----------------------------------------- | +| `type` | `"enum"` | +| `name` | `string` | +| `variants` | \{ `name`: `string` ; `type`: `string` }[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/contract.d.ts:62 + +--- + +### INTERFACE + +Ƭ **INTERFACE**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :-------------------------------------------------- | +| `type` | `"interface"` | +| `name` | `string` | +| `items` | [`FUNCTION`](types.RPC.RPCSPEC07.API.md#function)[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/contract.d.ts:70 + +--- + +### IMPL + +Ƭ **IMPL**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :------- | +| `type` | `"impl"` | +| `name` | `string` | +| `interface_name` | `string` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/contract.d.ts:75 + +--- + +### EVENT_KIND + +Ƭ **EVENT_KIND**: `"struct"` \| `"enum"` + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/contract.d.ts:80 + +--- + +### EVENT_FIELD + +Ƭ **EVENT_FIELD**: `Object` + +#### Type declaration + +| Name | Type | +| :----- | :-------------------------------- | +| `name` | `string` | +| `type` | `string` | +| `kind` | `"key"` \| `"data"` \| `"nested"` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/contract.d.ts:81 + +--- + +### ContractClass + +Ƭ **ContractClass**: [`CONTRACT_CLASS`](types.RPC.RPCSPEC07.API.SPEC.md#contract_class) \| [`DEPRECATED_CONTRACT_CLASS`](types.RPC.RPCSPEC07.API.SPEC.md#deprecated_contract_class) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:5 + +--- + +### SimulateTransaction + +Ƭ **SimulateTransaction**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------ | :----------------------------------------------------------------------- | +| `transaction_trace` | [`TRANSACTION_TRACE`](types.RPC.RPCSPEC07.API.SPEC.md#transaction_trace) | +| `fee_estimation` | [`FEE_ESTIMATE`](types.RPC.RPCSPEC07.API.SPEC.md#fee_estimate) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:6 + +--- + +### SimulateTransactionResponse + +Ƭ **SimulateTransactionResponse**: [`SimulateTransaction`](types.RPC.RPCSPEC07.API.md#simulatetransaction)[] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:10 + +--- + +### FeeEstimate + +Ƭ **FeeEstimate**: [`FEE_ESTIMATE`](types.RPC.RPCSPEC07.API.SPEC.md#fee_estimate) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:11 + +--- + +### TransactionWithHash + +Ƭ **TransactionWithHash**: [`TXN`](types.RPC.RPCSPEC07.API.SPEC.md#txn) & \{ `transaction_hash`: [`TXN_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#txn_hash) } + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:12 + +--- + +### BlockHashAndNumber + +Ƭ **BlockHashAndNumber**: `Object` + +#### Type declaration + +| Name | Type | +| :------------- | :------------------------------------------------------------- | +| `block_hash` | [`BLOCK_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#block_hash) | +| `block_number` | [`BLOCK_NUMBER`](types.RPC.RPCSPEC07.API.SPEC.md#block_number) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:15 + +--- + +### BlockWithTxs + +Ƭ **BlockWithTxs**: [`BLOCK_WITH_TXS`](types.RPC.RPCSPEC07.API.SPEC.md#block_with_txs) \| [`PENDING_BLOCK_WITH_TXS`](types.RPC.RPCSPEC07.API.SPEC.md#pending_block_with_txs) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:19 + +--- + +### BlockWithTxHashes + +Ƭ **BlockWithTxHashes**: [`BLOCK_WITH_TX_HASHES`](types.RPC.RPCSPEC07.API.SPEC.md#block_with_tx_hashes) \| [`PENDING_BLOCK_WITH_TX_HASHES`](types.RPC.RPCSPEC07.API.SPEC.md#pending_block_with_tx_hashes) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:20 + +--- + +### BlockWithTxReceipts + +Ƭ **BlockWithTxReceipts**: [`BLOCK_WITH_RECEIPTS`](types.RPC.RPCSPEC07.API.SPEC.md#block_with_receipts) \| [`PENDING_BLOCK_WITH_RECEIPTS`](types.RPC.RPCSPEC07.API.SPEC.md#pending_block_with_receipts) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:21 + +--- + +### StateUpdate + +Ƭ **StateUpdate**: [`STATE_UPDATE`](types.RPC.RPCSPEC07.API.SPEC.md#state_update) \| [`PENDING_STATE_UPDATE`](types.RPC.RPCSPEC07.API.SPEC.md#pending_state_update) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:22 + +--- + +### BlockTransactionsTraces + +Ƭ **BlockTransactionsTraces**: \{ `transaction_hash`: [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) ; `trace_root`: [`TRANSACTION_TRACE`](types.RPC.RPCSPEC07.API.SPEC.md#transaction_trace) }[] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:23 + +--- + +### Syncing + +Ƭ **Syncing**: `false` \| [`SYNC_STATUS`](types.RPC.RPCSPEC07.API.SPEC.md#sync_status) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:27 + +--- + +### Events + +Ƭ **Events**: [`EVENTS_CHUNK`](types.RPC.RPCSPEC07.API.SPEC.md#events_chunk) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:28 + +--- + +### EmittedEvent + +Ƭ **EmittedEvent**: [`EMITTED_EVENT`](types.RPC.RPCSPEC07.API.SPEC.md#emitted_event) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:29 + +--- + +### Event + +Ƭ **Event**: [`EVENT`](types.RPC.RPCSPEC07.API.SPEC.md#event) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:30 + +--- + +### InvokedTransaction + +Ƭ **InvokedTransaction**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :----------------------------------------------------- | +| `transaction_hash` | [`TXN_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#txn_hash) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:31 + +--- + +### DeclaredTransaction + +Ƭ **DeclaredTransaction**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :----------------------------------------------------- | +| `transaction_hash` | [`TXN_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#txn_hash) | +| `class_hash` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:34 + +--- + +### DeployedAccountTransaction + +Ƭ **DeployedAccountTransaction**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :----------------------------------------------------- | +| `transaction_hash` | [`TXN_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#txn_hash) | +| `contract_address` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:38 + +--- + +### ContractAddress + +Ƭ **ContractAddress**: [`ADDRESS`](types.RPC.RPCSPEC07.API.SPEC.md#address) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:42 + +--- + +### Felt + +Ƭ **Felt**: [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:43 + +--- + +### Nonce + +Ƭ **Nonce**: [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:44 + +--- + +### TransactionHash + +Ƭ **TransactionHash**: [`TXN_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#txn_hash) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:45 + +--- + +### TransactionTrace + +Ƭ **TransactionTrace**: [`TRANSACTION_TRACE`](types.RPC.RPCSPEC07.API.SPEC.md#transaction_trace) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:46 + +--- + +### BlockHash + +Ƭ **BlockHash**: [`BLOCK_HASH`](types.RPC.RPCSPEC07.API.SPEC.md#block_hash) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:47 + +--- + +### TransactionReceipt + +Ƭ **TransactionReceipt**: [`TXN_RECEIPT_WITH_BLOCK_INFO`](types.RPC.RPCSPEC07.API.SPEC.md#txn_receipt_with_block_info) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:48 + +--- + +### Receipt + +Ƭ **Receipt**: [`TXN_RECEIPT_WITH_BLOCK_INFO`](types.RPC.RPCSPEC07.API.SPEC.md#txn_receipt_with_block_info) & [`BlockHashAndNumber`](types.RPC.RPCSPEC07.API.md#blockhashandnumber) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:49 + +--- + +### PendingReceipt + +Ƭ **PendingReceipt**: [`TXN_RECEIPT`](types.RPC.RPCSPEC07.API.SPEC.md#txn_receipt) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:50 + +--- + +### EventFilter + +Ƭ **EventFilter**: [`EVENT_FILTER`](types.RPC.RPCSPEC07.API.SPEC.md#event_filter) & [`RESULT_PAGE_REQUEST`](types.RPC.RPCSPEC07.API.SPEC.md#result_page_request) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:51 + +--- + +### SimulationFlags + +Ƭ **SimulationFlags**: [`SIMULATION_FLAG`](types.RPC.RPCSPEC07.API.SPEC.md#simulation_flag)[] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:52 + +--- + +### L1Message + +Ƭ **L1Message**: [`MSG_FROM_L1`](types.RPC.RPCSPEC07.API.SPEC.md#msg_from_l1) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:53 + +--- + +### BaseTransaction + +Ƭ **BaseTransaction**: [`BROADCASTED_TXN`](types.RPC.RPCSPEC07.API.SPEC.md#broadcasted_txn) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:54 + +--- + +### ChainId + +Ƭ **ChainId**: [`CHAIN_ID`](types.RPC.RPCSPEC07.API.SPEC.md#chain_id) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:55 + +--- + +### Transaction + +Ƭ **Transaction**: [`TXN`](types.RPC.RPCSPEC07.API.SPEC.md#txn) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:56 + +--- + +### TransactionStatus + +Ƭ **TransactionStatus**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------ | :----------------------------------------------------------------------------- | +| `finality_status` | [`TXN_STATUS`](types.RPC.RPCSPEC07.API.SPEC.md#txn_status) | +| `execution_status?` | [`TXN_EXECUTION_STATUS`](types.RPC.RPCSPEC07.API.SPEC.md#txn_execution_status) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:57 + +--- + +### ResourceBounds + +Ƭ **ResourceBounds**: [`RESOURCE_BOUNDS_MAPPING`](types.RPC.RPCSPEC07.API.SPEC.md#resource_bounds_mapping) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:61 + +--- + +### FeePayment + +Ƭ **FeePayment**: [`FEE_PAYMENT`](types.RPC.RPCSPEC07.API.SPEC.md#fee_payment) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:62 + +--- + +### PriceUnit + +Ƭ **PriceUnit**: [`PRICE_UNIT`](types.RPC.RPCSPEC07.API.SPEC.md#price_unit) + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:63 + +--- + +### StorageDiffs + +Ƭ **StorageDiffs**: [`CONTRACT_STORAGE_DIFF_ITEM`](types.RPC.RPCSPEC07.API.SPEC.md#contract_storage_diff_item)[] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:64 + +--- + +### DeprecatedDeclaredClasses + +Ƭ **DeprecatedDeclaredClasses**: [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:65 + +--- + +### NonceUpdates + +Ƭ **NonceUpdates**: [`NONCE_UPDATE`](types.RPC.RPCSPEC07.API.SPEC.md#nonce_update)[] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:66 + +--- + +### ReplacedClasses + +Ƭ **ReplacedClasses**: [`REPLACED_CLASS`](types.RPC.RPCSPEC07.API.SPEC.md#replaced_class)[] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:67 + +--- + +### ETransactionType + +Ƭ **ETransactionType**: typeof [`ETransactionType`](types.RPC.RPCSPEC07.API.md#etransactiontype-1)[keyof typeof [`ETransactionType`](types.RPC.RPCSPEC07.API.md#etransactiontype-1)] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:68 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:75 + +--- + +### ESimulationFlag + +Ƭ **ESimulationFlag**: typeof [`ESimulationFlag`](types.RPC.RPCSPEC07.API.md#esimulationflag-1)[keyof typeof [`ESimulationFlag`](types.RPC.RPCSPEC07.API.md#esimulationflag-1)] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:76 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:80 + +--- + +### ETransactionStatus + +Ƭ **ETransactionStatus**: typeof [`ETransactionStatus`](types.RPC.RPCSPEC07.API.md#etransactionstatus-1)[keyof typeof [`ETransactionStatus`](types.RPC.RPCSPEC07.API.md#etransactionstatus-1)] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:81 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:87 + +--- + +### ETransactionFinalityStatus + +Ƭ **ETransactionFinalityStatus**: typeof [`ETransactionFinalityStatus`](types.RPC.RPCSPEC07.API.md#etransactionfinalitystatus-1)[keyof typeof [`ETransactionFinalityStatus`](types.RPC.RPCSPEC07.API.md#etransactionfinalitystatus-1)] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:88 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:92 + +--- + +### ETransactionExecutionStatus + +Ƭ **ETransactionExecutionStatus**: typeof [`ETransactionExecutionStatus`](types.RPC.RPCSPEC07.API.md#etransactionexecutionstatus-1)[keyof typeof [`ETransactionExecutionStatus`](types.RPC.RPCSPEC07.API.md#etransactionexecutionstatus-1)] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:93 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:97 + +--- + +### EBlockTag + +Ƭ **EBlockTag**: typeof [`EBlockTag`](types.RPC.RPCSPEC07.API.md#eblocktag-1)[keyof typeof [`EBlockTag`](types.RPC.RPCSPEC07.API.md#eblocktag-1)] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:98 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:102 + +--- + +### EDataAvailabilityMode + +Ƭ **EDataAvailabilityMode**: typeof [`EDataAvailabilityMode`](types.RPC.RPCSPEC07.API.md#edataavailabilitymode-1)[keyof typeof [`EDataAvailabilityMode`](types.RPC.RPCSPEC07.API.md#edataavailabilitymode-1)] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:103 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:107 + +--- + +### EDAMode + +Ƭ **EDAMode**: typeof [`EDAMode`](types.RPC.RPCSPEC07.API.md#edamode-1)[keyof typeof [`EDAMode`](types.RPC.RPCSPEC07.API.md#edamode-1)] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:108 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:112 + +--- + +### ETransactionVersion + +Ƭ **ETransactionVersion**: typeof [`ETransactionVersion`](types.RPC.RPCSPEC07.API.md#etransactionversion-1)[keyof typeof [`ETransactionVersion`](types.RPC.RPCSPEC07.API.md#etransactionversion-1)] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:117 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:127 + +--- + +### ETransactionVersion2 + +Ƭ **ETransactionVersion2**: typeof [`ETransactionVersion2`](types.RPC.RPCSPEC07.API.md#etransactionversion2-1)[keyof typeof [`ETransactionVersion2`](types.RPC.RPCSPEC07.API.md#etransactionversion2-1)] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:131 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:139 + +--- + +### ETransactionVersion3 + +Ƭ **ETransactionVersion3**: typeof [`ETransactionVersion3`](types.RPC.RPCSPEC07.API.md#etransactionversion3-1)[keyof typeof [`ETransactionVersion3`](types.RPC.RPCSPEC07.API.md#etransactionversion3-1)] + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:143 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:147 + +## Variables + +### ETransactionType + +• `Const` **ETransactionType**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :----------------- | +| `DECLARE` | `"DECLARE"` | +| `DEPLOY` | `"DEPLOY"` | +| `DEPLOY_ACCOUNT` | `"DEPLOY_ACCOUNT"` | +| `INVOKE` | `"INVOKE"` | +| `L1_HANDLER` | `"L1_HANDLER"` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:68 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:75 + +--- + +### ESimulationFlag + +• `Const` **ESimulationFlag**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------- | :------------------ | +| `SKIP_VALIDATE` | `"SKIP_VALIDATE"` | +| `SKIP_FEE_CHARGE` | `"SKIP_FEE_CHARGE"` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:76 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:80 + +--- + +### ETransactionStatus + +• `Const` **ETransactionStatus**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :----------------- | +| `RECEIVED` | `"RECEIVED"` | +| `REJECTED` | `"REJECTED"` | +| `ACCEPTED_ON_L2` | `"ACCEPTED_ON_L2"` | +| `ACCEPTED_ON_L1` | `"ACCEPTED_ON_L1"` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:81 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:87 + +--- + +### ETransactionFinalityStatus + +• `Const` **ETransactionFinalityStatus**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :----------------- | +| `ACCEPTED_ON_L2` | `"ACCEPTED_ON_L2"` | +| `ACCEPTED_ON_L1` | `"ACCEPTED_ON_L1"` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:88 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:92 + +--- + +### ETransactionExecutionStatus + +• `Const` **ETransactionExecutionStatus**: `Object` + +#### Type declaration + +| Name | Type | +| :---------- | :------------ | +| `SUCCEEDED` | `"SUCCEEDED"` | +| `REVERTED` | `"REVERTED"` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:93 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:97 + +--- + +### EBlockTag + +• `Const` **EBlockTag**: `Object` + +#### Type declaration + +| Name | Type | +| :-------- | :---------- | +| `LATEST` | `"latest"` | +| `PENDING` | `"pending"` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:98 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:102 + +--- + +### EDataAvailabilityMode + +• `Const` **EDataAvailabilityMode**: `Object` + +#### Type declaration + +| Name | Type | +| :--- | :----- | +| `L1` | `"L1"` | +| `L2` | `"L2"` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:103 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:107 + +--- + +### EDAMode + +• `Const` **EDAMode**: `Object` + +#### Type declaration + +| Name | Type | +| :--- | :--- | +| `L1` | `0` | +| `L2` | `1` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:108 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:112 + +--- + +### ETransactionVersion + +• `Const` **ETransactionVersion**: `Object` + +V* Transaction versions HexString +F* Fee Transaction Versions HexString (2 \*\* 128 + TRANSACTION_VERSION) + +#### Type declaration + +| Name | Type | +| :--- | :-------------------------------------- | +| `V0` | `"0x0"` | +| `V1` | `"0x1"` | +| `V2` | `"0x2"` | +| `V3` | `"0x3"` | +| `F0` | `"0x100000000000000000000000000000000"` | +| `F1` | `"0x100000000000000000000000000000001"` | +| `F2` | `"0x100000000000000000000000000000002"` | +| `F3` | `"0x100000000000000000000000000000003"` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:117 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:127 + +--- + +### ETransactionVersion2 + +• `Const` **ETransactionVersion2**: `Object` + +Old Transaction Versions + +#### Type declaration + +| Name | Type | +| :--- | :-------------------------------------- | +| `V0` | `"0x0"` | +| `V1` | `"0x1"` | +| `V2` | `"0x2"` | +| `F0` | `"0x100000000000000000000000000000000"` | +| `F1` | `"0x100000000000000000000000000000001"` | +| `F2` | `"0x100000000000000000000000000000002"` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:131 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:139 + +--- + +### ETransactionVersion3 + +• `Const` **ETransactionVersion3**: `Object` + +V3 Transaction Versions + +#### Type declaration + +| Name | Type | +| :--- | :-------------------------------------- | +| `V3` | `"0x3"` | +| `F3` | `"0x100000000000000000000000000000003"` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:143 + +node_modules/starknet-types-07/dist/types/api/nonspec.d.ts:147 diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.WALLET_API.md b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.WALLET_API.md new file mode 100644 index 000000000..f58f8288b --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.WALLET_API.md @@ -0,0 +1,464 @@ +--- +id: 'types.RPC.RPCSPEC07.WALLET_API' +title: 'Namespace: WALLET_API' +sidebar_label: 'WALLET_API' +custom_edit_url: null +--- + +[RPC](types.RPC.md).[RPCSPEC07](types.RPC.RPCSPEC07.md).WALLET_API + +## Interfaces + +- [StarknetDomain](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetDomain.md) +- [TypedData](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) +- [StarknetWindowObject](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md) +- [AddInvokeTransactionParameters](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionParameters.md) +- [AddInvokeTransactionResult](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionResult.md) +- [AddDeclareTransactionParameters](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionParameters.md) +- [AddDeclareTransactionResult](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionResult.md) +- [RequestAccountsParameters](../interfaces/types.RPC.RPCSPEC07.WALLET_API.RequestAccountsParameters.md) +- [WatchAssetParameters](../interfaces/types.RPC.RPCSPEC07.WALLET_API.WatchAssetParameters.md) +- [AddStarknetChainParameters](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddStarknetChainParameters.md) +- [SwitchStarknetChainParameters](../interfaces/types.RPC.RPCSPEC07.WALLET_API.SwitchStarknetChainParameters.md) +- [AccountDeploymentData](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AccountDeploymentData.md) +- [ApiVersionRequest](../interfaces/types.RPC.RPCSPEC07.WALLET_API.ApiVersionRequest.md) +- [RpcTypeToMessageMap](../interfaces/types.RPC.RPCSPEC07.WALLET_API.RpcTypeToMessageMap.md) +- [WalletEventHandlers](../interfaces/types.RPC.RPCSPEC07.WALLET_API.WalletEventHandlers.md) +- [NOT_ERC20](../interfaces/types.RPC.RPCSPEC07.WALLET_API.NOT_ERC20.md) +- [UNLISTED_NETWORK](../interfaces/types.RPC.RPCSPEC07.WALLET_API.UNLISTED_NETWORK.md) +- [USER_REFUSED_OP](../interfaces/types.RPC.RPCSPEC07.WALLET_API.USER_REFUSED_OP.md) +- [INVALID_REQUEST_PAYLOAD](../interfaces/types.RPC.RPCSPEC07.WALLET_API.INVALID_REQUEST_PAYLOAD.md) +- [ACCOUNT_ALREADY_DEPLOYED](../interfaces/types.RPC.RPCSPEC07.WALLET_API.ACCOUNT_ALREADY_DEPLOYED.md) +- [API_VERSION_NOT_SUPPORTED](../interfaces/types.RPC.RPCSPEC07.WALLET_API.API_VERSION_NOT_SUPPORTED.md) +- [UNKNOWN_ERROR](../interfaces/types.RPC.RPCSPEC07.WALLET_API.UNKNOWN_ERROR.md) + +## Type Aliases + +### Permission + +Ƭ **Permission**: typeof [`Permission`](types.RPC.RPCSPEC07.WALLET_API.md#permission-1)[keyof typeof [`Permission`](types.RPC.RPCSPEC07.WALLET_API.md#permission-1)] + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/constants.d.ts:1 + +node_modules/starknet-types-07/dist/types/wallet-api/constants.d.ts:4 + +--- + +### TypedDataRevision + +Ƭ **TypedDataRevision**: typeof [`TypedDataRevision`](types.RPC.RPCSPEC07.WALLET_API.md#typeddatarevision-1)[keyof typeof [`TypedDataRevision`](types.RPC.RPCSPEC07.WALLET_API.md#typeddatarevision-1)] + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/typedData.d.ts:1 + +node_modules/starknet-types-07/dist/types/wallet-api/typedData.d.ts:5 + +--- + +### StarknetEnumType + +Ƭ **StarknetEnumType**: `Object` + +#### Type declaration + +| Name | Type | +| :--------- | :------- | +| `name` | `string` | +| `type` | `"enum"` | +| `contains` | `string` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/typedData.d.ts:6 + +--- + +### StarknetMerkleType + +Ƭ **StarknetMerkleType**: `Object` + +#### Type declaration + +| Name | Type | +| :--------- | :------------- | +| `name` | `string` | +| `type` | `"merkletree"` | +| `contains` | `string` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/typedData.d.ts:11 + +--- + +### StarknetType + +Ƭ **StarknetType**: \{ `name`: `string` ; `type`: `string` } \| [`StarknetEnumType`](types.RPC.RPCSPEC07.WALLET_API.md#starknetenumtype) \| [`StarknetMerkleType`](types.RPC.RPCSPEC07.WALLET_API.md#starknetmerkletype) + +SPEC: STARKNET_TYPE +A single type, as part of a struct. The `type` field can be any of the EIP-712 supported types. +Note that the `uint` and `int` aliases like in Solidity, and fixed point numbers are not supported by the EIP-712 +standard. + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/typedData.d.ts:22 + +--- + +### Address + +Ƭ **Address**: [`ADDRESS`](types.RPC.RPCSPEC07.API.SPEC.md#address) + +Account Address + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:6 + +--- + +### Signature + +Ƭ **Signature**: [`SIGNATURE`](types.RPC.RPCSPEC07.API.SPEC.md#signature) + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:7 + +--- + +### PADDED_TXN_HASH + +Ƭ **PADDED_TXN_HASH**: [`PADDED_FELT`](types.RPC.RPCSPEC07.WALLET_API.md#padded_felt) + +The transaction hash, as assigned in Starknet + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:11 + +--- + +### PADDED_FELT + +Ƭ **PADDED_FELT**: `string` + +A padded felt represent 0x0 + (0-7) + (62 hex digits) + +**`Pattern`** + +^0x(0[0-7]{1}[a-fA-F0-9]{62}$) + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:16 + +--- + +### SpecVersion + +Ƭ **SpecVersion**: `string` + +A Starknet RPC spec version, only two numbers are provided + +**`Pattern`** + +^[0-9]+\\.[0-9]+$ + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:21 + +--- + +### TokenSymbol + +Ƭ **TokenSymbol**: `string` + +ERC20 Token Symbol (min:1 char - max:6 chars) + +**`Pattern`** + +^[A-Za-z0-9]{1,6}$ + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:26 + +--- + +### Asset + +Ƭ **Asset**: `Object` + +Starknet Token +Details of an onchain Starknet ERC20 token + +#### Type declaration + +| Name | Type | +| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `type` | `"ERC20"` | +| `options` | \{ `address`: [`Address`](types.RPC.RPCSPEC07.WALLET_API.md#address) ; `symbol?`: [`TokenSymbol`](types.RPC.RPCSPEC07.WALLET_API.md#tokensymbol) ; `decimals?`: `number` ; `image?`: `string` ; `name?`: `string` } | +| `options.address` | [`Address`](types.RPC.RPCSPEC07.WALLET_API.md#address) | +| `options.symbol?` | [`TokenSymbol`](types.RPC.RPCSPEC07.WALLET_API.md#tokensymbol) | +| `options.decimals?` | `number` | +| `options.image?` | `string` | +| `options.name?` | `string` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:31 + +--- + +### StarknetChain + +Ƭ **StarknetChain**: `Object` + +#### Type declaration + +| Name | Type | +| :-------------------- | :------------------------------------------------- | +| `id` | `string` | +| `chain_id` | [`ChainId`](types.RPC.RPCSPEC07.API.md#chainid) | +| `chain_name` | `string` | +| `rpc_urls?` | `string`[] | +| `block_explorer_url?` | `string`[] | +| `native_currency?` | [`Asset`](types.RPC.RPCSPEC07.WALLET_API.md#asset) | +| `icon_urls?` | `string`[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:41 + +--- + +### Call + +Ƭ **Call**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :----------------------------------------------------- | +| `contract_address` | [`Address`](types.RPC.RPCSPEC07.WALLET_API.md#address) | +| `entry_point` | `string` | +| `calldata?` | [`FELT`](types.RPC.RPCSPEC07.API.SPEC.md#felt)[] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:50 + +--- + +### API_VERSION + +Ƭ **API_VERSION**: `string` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/components.d.ts:126 + +--- + +### RpcMessage + +Ƭ **RpcMessage**: \{ [K in keyof RpcTypeToMessageMap]: Object & RpcTypeToMessageMap[K] }[keyof [`RpcTypeToMessageMap`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.RpcTypeToMessageMap.md)] + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/methods.d.ts:125 + +--- + +### IsParamsOptional + +Ƭ **IsParamsOptional**<`T`\>: `undefined` extends [`RpcTypeToMessageMap`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.RpcTypeToMessageMap.md)[`T`][``"params"``] ? `true` : `false` + +#### Type parameters + +| Name | Type | +| :--- | :--------------------------------------------------------------------------------------------------------- | +| `T` | extends keyof [`RpcTypeToMessageMap`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.RpcTypeToMessageMap.md) | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/methods.d.ts:130 + +--- + +### RequestFnCall + +Ƭ **RequestFnCall**<`T`\>: \{ `type`: `T` } & [`IsParamsOptional`](types.RPC.RPCSPEC07.WALLET_API.md#isparamsoptional)<`T`\> extends `true` ? \{ `params?`: [`RpcTypeToMessageMap`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.RpcTypeToMessageMap.md)[`T`][``"params"``] } : \{ `params`: [`RpcTypeToMessageMap`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.RpcTypeToMessageMap.md)[`T`][``"params"``] } + +#### Type parameters + +| Name | Type | +| :--- | :------------------------------------------------------------------------------- | +| `T` | extends [`RpcMessage`](types.RPC.RPCSPEC07.WALLET_API.md#rpcmessage)[``"type"``] | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/methods.d.ts:131 + +--- + +### RequestFn + +Ƭ **RequestFn**: (`call`: [`RequestFnCall`](types.RPC.RPCSPEC07.WALLET_API.md#requestfncall)<`T`\>) => `Promise`<[`RpcTypeToMessageMap`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.RpcTypeToMessageMap.md)[`T`][``"result"``]\> + +#### Type declaration + +▸ <`T`\>(`call`): `Promise`<[`RpcTypeToMessageMap`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.RpcTypeToMessageMap.md)[`T`][``"result"``]\> + +##### Type parameters + +| Name | Type | +| :--- | :------------------------------------------------------------------------------- | +| `T` | extends [`RpcMessage`](types.RPC.RPCSPEC07.WALLET_API.md#rpcmessage)[``"type"``] | + +##### Parameters + +| Name | Type | +| :----- | :----------------------------------------------------------------------- | +| `call` | [`RequestFnCall`](types.RPC.RPCSPEC07.WALLET_API.md#requestfncall)<`T`\> | + +##### Returns + +`Promise`<[`RpcTypeToMessageMap`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.RpcTypeToMessageMap.md)[`T`][``"result"``]\> + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/methods.d.ts:138 + +--- + +### AccountChangeEventHandler + +Ƭ **AccountChangeEventHandler**: (`accounts?`: `string`[]) => `void` + +#### Type declaration + +▸ (`accounts?`): `void` + +##### Parameters + +| Name | Type | +| :---------- | :--------- | +| `accounts?` | `string`[] | + +##### Returns + +`void` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/events.d.ts:2 + +--- + +### NetworkChangeEventHandler + +Ƭ **NetworkChangeEventHandler**: (`chainId?`: [`ChainId`](types.RPC.RPCSPEC07.API.md#chainid), `accounts?`: `string`[]) => `void` + +#### Type declaration + +▸ (`chainId?`, `accounts?`): `void` + +##### Parameters + +| Name | Type | +| :---------- | :---------------------------------------------- | +| `chainId?` | [`ChainId`](types.RPC.RPCSPEC07.API.md#chainid) | +| `accounts?` | `string`[] | + +##### Returns + +`void` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/events.d.ts:3 + +--- + +### WalletEvents + +Ƭ **WalletEvents**: \{ [E in keyof WalletEventHandlers]: Object }[keyof [`WalletEventHandlers`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.WalletEventHandlers.md)] + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/events.d.ts:8 + +--- + +### WalletEventListener + +Ƭ **WalletEventListener**: (`event`: `E`, `handleEvent`: [`WalletEventHandlers`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.WalletEventHandlers.md)[`E`]) => `void` + +#### Type declaration + +▸ <`E`\>(`event`, `handleEvent`): `void` + +##### Type parameters + +| Name | Type | +| :--- | :--------------------------------------------------------------------------------------------------------- | +| `E` | extends keyof [`WalletEventHandlers`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.WalletEventHandlers.md) | + +##### Parameters + +| Name | Type | +| :------------ | :------------------------------------------------------------------------------------------------ | +| `event` | `E` | +| `handleEvent` | [`WalletEventHandlers`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.WalletEventHandlers.md)[`E`] | + +##### Returns + +`void` + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/events.d.ts:14 + +## Variables + +### Permission + +• `Const` **Permission**: `Object` + +#### Type declaration + +| Name | Type | +| :--------- | :----------- | +| `ACCOUNTS` | `"accounts"` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/constants.d.ts:1 + +node_modules/starknet-types-07/dist/types/wallet-api/constants.d.ts:4 + +--- + +### TypedDataRevision + +• `Const` **TypedDataRevision**: `Object` + +#### Type declaration + +| Name | Type | +| :------- | :---- | +| `ACTIVE` | `"1"` | +| `LEGACY` | `"0"` | + +#### Defined in + +node_modules/starknet-types-07/dist/types/wallet-api/typedData.d.ts:1 + +node_modules/starknet-types-07/dist/types/wallet-api/typedData.d.ts:5 diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.md b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.md new file mode 100644 index 000000000..d65381d28 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.RPCSPEC07.md @@ -0,0 +1,691 @@ +--- +id: 'types.RPC.RPCSPEC07' +title: 'Namespace: RPCSPEC07' +sidebar_label: 'RPCSPEC07' +custom_edit_url: null +--- + +[types](types.md).[RPC](types.RPC.md).RPCSPEC07 + +## Namespaces + +- [API](types.RPC.RPCSPEC07.API.md) +- [WALLET_API](types.RPC.RPCSPEC07.WALLET_API.md) + +## References + +### Methods + +Re-exports [Methods](types.RPC.RPCSPEC07.API.md#methods) + +--- + +### Errors + +Re-exports [Errors](types.RPC.RPCSPEC07.API.Errors.md) + +--- + +### SPEC + +Re-exports [SPEC](types.RPC.RPCSPEC07.API.SPEC.md) + +--- + +### ABI + +Re-exports [ABI](types.RPC.RPCSPEC07.API.md#abi) + +--- + +### FUNCTION + +Re-exports [FUNCTION](types.RPC.RPCSPEC07.API.md#function) + +--- + +### CONSTRUCTOR + +Re-exports [CONSTRUCTOR](types.RPC.RPCSPEC07.API.md#constructor) + +--- + +### L1_HANDLER + +Re-exports [L1_HANDLER](types.RPC.RPCSPEC07.API.md#l1_handler) + +--- + +### EVENT + +Re-exports [EVENT](types.RPC.RPCSPEC07.API.md#event) + +--- + +### STRUCT_EVENT + +Re-exports [STRUCT_EVENT](types.RPC.RPCSPEC07.API.md#struct_event) + +--- + +### ENUM_EVENT + +Re-exports [ENUM_EVENT](types.RPC.RPCSPEC07.API.md#enum_event) + +--- + +### STRUCT + +Re-exports [STRUCT](types.RPC.RPCSPEC07.API.md#struct) + +--- + +### ENUM + +Re-exports [ENUM](types.RPC.RPCSPEC07.API.md#enum) + +--- + +### INTERFACE + +Re-exports [INTERFACE](types.RPC.RPCSPEC07.API.md#interface) + +--- + +### IMPL + +Re-exports [IMPL](types.RPC.RPCSPEC07.API.md#impl) + +--- + +### EVENT_KIND + +Re-exports [EVENT_KIND](types.RPC.RPCSPEC07.API.md#event_kind) + +--- + +### EVENT_FIELD + +Re-exports [EVENT_FIELD](types.RPC.RPCSPEC07.API.md#event_field) + +--- + +### ContractClass + +Re-exports [ContractClass](types.RPC.RPCSPEC07.API.md#contractclass) + +--- + +### SimulateTransaction + +Re-exports [SimulateTransaction](types.RPC.RPCSPEC07.API.md#simulatetransaction) + +--- + +### SimulateTransactionResponse + +Re-exports [SimulateTransactionResponse](types.RPC.RPCSPEC07.API.md#simulatetransactionresponse) + +--- + +### FeeEstimate + +Re-exports [FeeEstimate](types.RPC.RPCSPEC07.API.md#feeestimate) + +--- + +### TransactionWithHash + +Re-exports [TransactionWithHash](types.RPC.RPCSPEC07.API.md#transactionwithhash) + +--- + +### BlockHashAndNumber + +Re-exports [BlockHashAndNumber](types.RPC.RPCSPEC07.API.md#blockhashandnumber) + +--- + +### BlockWithTxs + +Re-exports [BlockWithTxs](types.RPC.RPCSPEC07.API.md#blockwithtxs) + +--- + +### BlockWithTxHashes + +Re-exports [BlockWithTxHashes](types.RPC.RPCSPEC07.API.md#blockwithtxhashes) + +--- + +### BlockWithTxReceipts + +Re-exports [BlockWithTxReceipts](types.RPC.RPCSPEC07.API.md#blockwithtxreceipts) + +--- + +### StateUpdate + +Re-exports [StateUpdate](types.RPC.RPCSPEC07.API.md#stateupdate) + +--- + +### BlockTransactionsTraces + +Re-exports [BlockTransactionsTraces](types.RPC.RPCSPEC07.API.md#blocktransactionstraces) + +--- + +### Syncing + +Re-exports [Syncing](types.RPC.RPCSPEC07.API.md#syncing) + +--- + +### Events + +Re-exports [Events](types.RPC.RPCSPEC07.API.md#events) + +--- + +### EmittedEvent + +Re-exports [EmittedEvent](types.RPC.RPCSPEC07.API.md#emittedevent) + +--- + +### Event + +Re-exports [Event](types.RPC.RPCSPEC07.API.md#event-1) + +--- + +### InvokedTransaction + +Re-exports [InvokedTransaction](types.RPC.RPCSPEC07.API.md#invokedtransaction) + +--- + +### DeclaredTransaction + +Re-exports [DeclaredTransaction](types.RPC.RPCSPEC07.API.md#declaredtransaction) + +--- + +### DeployedAccountTransaction + +Re-exports [DeployedAccountTransaction](types.RPC.RPCSPEC07.API.md#deployedaccounttransaction) + +--- + +### ContractAddress + +Re-exports [ContractAddress](types.RPC.RPCSPEC07.API.md#contractaddress) + +--- + +### Felt + +Re-exports [Felt](types.RPC.RPCSPEC07.API.md#felt) + +--- + +### Nonce + +Re-exports [Nonce](types.RPC.RPCSPEC07.API.md#nonce) + +--- + +### TransactionHash + +Re-exports [TransactionHash](types.RPC.RPCSPEC07.API.md#transactionhash) + +--- + +### TransactionTrace + +Re-exports [TransactionTrace](types.RPC.RPCSPEC07.API.md#transactiontrace) + +--- + +### BlockHash + +Re-exports [BlockHash](types.RPC.RPCSPEC07.API.md#blockhash) + +--- + +### TransactionReceipt + +Re-exports [TransactionReceipt](types.RPC.RPCSPEC07.API.md#transactionreceipt) + +--- + +### Receipt + +Re-exports [Receipt](types.RPC.RPCSPEC07.API.md#receipt) + +--- + +### PendingReceipt + +Re-exports [PendingReceipt](types.RPC.RPCSPEC07.API.md#pendingreceipt) + +--- + +### EventFilter + +Re-exports [EventFilter](types.RPC.RPCSPEC07.API.md#eventfilter) + +--- + +### SimulationFlags + +Re-exports [SimulationFlags](types.RPC.RPCSPEC07.API.md#simulationflags) + +--- + +### L1Message + +Re-exports [L1Message](types.RPC.RPCSPEC07.API.md#l1message) + +--- + +### BaseTransaction + +Re-exports [BaseTransaction](types.RPC.RPCSPEC07.API.md#basetransaction) + +--- + +### ChainId + +Re-exports [ChainId](types.RPC.RPCSPEC07.API.md#chainid) + +--- + +### Transaction + +Re-exports [Transaction](types.RPC.RPCSPEC07.API.md#transaction) + +--- + +### TransactionStatus + +Re-exports [TransactionStatus](types.RPC.RPCSPEC07.API.md#transactionstatus) + +--- + +### ResourceBounds + +Re-exports [ResourceBounds](types.RPC.RPCSPEC07.API.md#resourcebounds) + +--- + +### FeePayment + +Re-exports [FeePayment](types.RPC.RPCSPEC07.API.md#feepayment) + +--- + +### PriceUnit + +Re-exports [PriceUnit](types.RPC.RPCSPEC07.API.md#priceunit) + +--- + +### StorageDiffs + +Re-exports [StorageDiffs](types.RPC.RPCSPEC07.API.md#storagediffs) + +--- + +### DeprecatedDeclaredClasses + +Re-exports [DeprecatedDeclaredClasses](types.RPC.RPCSPEC07.API.md#deprecateddeclaredclasses) + +--- + +### NonceUpdates + +Re-exports [NonceUpdates](types.RPC.RPCSPEC07.API.md#nonceupdates) + +--- + +### ReplacedClasses + +Re-exports [ReplacedClasses](types.RPC.RPCSPEC07.API.md#replacedclasses) + +--- + +### ETransactionType + +Re-exports [ETransactionType](types.RPC.RPCSPEC07.API.md#etransactiontype-1) + +--- + +### ESimulationFlag + +Re-exports [ESimulationFlag](types.RPC.RPCSPEC07.API.md#esimulationflag-1) + +--- + +### ETransactionStatus + +Re-exports [ETransactionStatus](types.RPC.RPCSPEC07.API.md#etransactionstatus-1) + +--- + +### ETransactionFinalityStatus + +Re-exports [ETransactionFinalityStatus](types.RPC.RPCSPEC07.API.md#etransactionfinalitystatus-1) + +--- + +### ETransactionExecutionStatus + +Re-exports [ETransactionExecutionStatus](types.RPC.RPCSPEC07.API.md#etransactionexecutionstatus-1) + +--- + +### EBlockTag + +Re-exports [EBlockTag](types.RPC.RPCSPEC07.API.md#eblocktag-1) + +--- + +### EDataAvailabilityMode + +Re-exports [EDataAvailabilityMode](types.RPC.RPCSPEC07.API.md#edataavailabilitymode-1) + +--- + +### EDAMode + +Re-exports [EDAMode](types.RPC.RPCSPEC07.API.md#edamode-1) + +--- + +### ETransactionVersion + +Re-exports [ETransactionVersion](types.RPC.RPCSPEC07.API.md#etransactionversion-1) + +--- + +### ETransactionVersion2 + +Re-exports [ETransactionVersion2](types.RPC.RPCSPEC07.API.md#etransactionversion2-1) + +--- + +### ETransactionVersion3 + +Re-exports [ETransactionVersion3](types.RPC.RPCSPEC07.API.md#etransactionversion3-1) + +--- + +### Permission + +Re-exports [Permission](types.RPC.RPCSPEC07.WALLET_API.md#permission-1) + +--- + +### TypedDataRevision + +Re-exports [TypedDataRevision](types.RPC.RPCSPEC07.WALLET_API.md#typeddatarevision-1) + +--- + +### StarknetEnumType + +Re-exports [StarknetEnumType](types.RPC.RPCSPEC07.WALLET_API.md#starknetenumtype) + +--- + +### StarknetMerkleType + +Re-exports [StarknetMerkleType](types.RPC.RPCSPEC07.WALLET_API.md#starknetmerkletype) + +--- + +### StarknetType + +Re-exports [StarknetType](types.RPC.RPCSPEC07.WALLET_API.md#starknettype) + +--- + +### StarknetDomain + +Re-exports [StarknetDomain](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetDomain.md) + +--- + +### TypedData + +Re-exports [TypedData](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) + +--- + +### StarknetWindowObject + +Re-exports [StarknetWindowObject](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md) + +--- + +### Address + +Re-exports [Address](types.RPC.RPCSPEC07.WALLET_API.md#address) + +--- + +### Signature + +Re-exports [Signature](types.RPC.RPCSPEC07.WALLET_API.md#signature) + +--- + +### PADDED_TXN_HASH + +Re-exports [PADDED_TXN_HASH](types.RPC.RPCSPEC07.WALLET_API.md#padded_txn_hash) + +--- + +### PADDED_FELT + +Re-exports [PADDED_FELT](types.RPC.RPCSPEC07.WALLET_API.md#padded_felt) + +--- + +### SpecVersion + +Re-exports [SpecVersion](types.RPC.RPCSPEC07.WALLET_API.md#specversion) + +--- + +### TokenSymbol + +Re-exports [TokenSymbol](types.RPC.RPCSPEC07.WALLET_API.md#tokensymbol) + +--- + +### Asset + +Re-exports [Asset](types.RPC.RPCSPEC07.WALLET_API.md#asset) + +--- + +### StarknetChain + +Re-exports [StarknetChain](types.RPC.RPCSPEC07.WALLET_API.md#starknetchain) + +--- + +### Call + +Re-exports [Call](types.RPC.RPCSPEC07.WALLET_API.md#call) + +--- + +### AddInvokeTransactionParameters + +Re-exports [AddInvokeTransactionParameters](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionParameters.md) + +--- + +### AddInvokeTransactionResult + +Re-exports [AddInvokeTransactionResult](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionResult.md) + +--- + +### AddDeclareTransactionParameters + +Re-exports [AddDeclareTransactionParameters](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionParameters.md) + +--- + +### AddDeclareTransactionResult + +Re-exports [AddDeclareTransactionResult](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionResult.md) + +--- + +### RequestAccountsParameters + +Re-exports [RequestAccountsParameters](../interfaces/types.RPC.RPCSPEC07.WALLET_API.RequestAccountsParameters.md) + +--- + +### WatchAssetParameters + +Re-exports [WatchAssetParameters](../interfaces/types.RPC.RPCSPEC07.WALLET_API.WatchAssetParameters.md) + +--- + +### AddStarknetChainParameters + +Re-exports [AddStarknetChainParameters](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddStarknetChainParameters.md) + +--- + +### SwitchStarknetChainParameters + +Re-exports [SwitchStarknetChainParameters](../interfaces/types.RPC.RPCSPEC07.WALLET_API.SwitchStarknetChainParameters.md) + +--- + +### AccountDeploymentData + +Re-exports [AccountDeploymentData](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AccountDeploymentData.md) + +--- + +### API_VERSION + +Re-exports [API_VERSION](types.RPC.RPCSPEC07.WALLET_API.md#api_version) + +--- + +### ApiVersionRequest + +Re-exports [ApiVersionRequest](../interfaces/types.RPC.RPCSPEC07.WALLET_API.ApiVersionRequest.md) + +--- + +### RpcTypeToMessageMap + +Re-exports [RpcTypeToMessageMap](../interfaces/types.RPC.RPCSPEC07.WALLET_API.RpcTypeToMessageMap.md) + +--- + +### RpcMessage + +Re-exports [RpcMessage](types.RPC.RPCSPEC07.WALLET_API.md#rpcmessage) + +--- + +### IsParamsOptional + +Re-exports [IsParamsOptional](types.RPC.RPCSPEC07.WALLET_API.md#isparamsoptional) + +--- + +### RequestFnCall + +Re-exports [RequestFnCall](types.RPC.RPCSPEC07.WALLET_API.md#requestfncall) + +--- + +### RequestFn + +Re-exports [RequestFn](types.RPC.RPCSPEC07.WALLET_API.md#requestfn) + +--- + +### AccountChangeEventHandler + +Re-exports [AccountChangeEventHandler](types.RPC.RPCSPEC07.WALLET_API.md#accountchangeeventhandler) + +--- + +### NetworkChangeEventHandler + +Re-exports [NetworkChangeEventHandler](types.RPC.RPCSPEC07.WALLET_API.md#networkchangeeventhandler) + +--- + +### WalletEventHandlers + +Re-exports [WalletEventHandlers](../interfaces/types.RPC.RPCSPEC07.WALLET_API.WalletEventHandlers.md) + +--- + +### WalletEvents + +Re-exports [WalletEvents](types.RPC.RPCSPEC07.WALLET_API.md#walletevents) + +--- + +### WalletEventListener + +Re-exports [WalletEventListener](types.RPC.RPCSPEC07.WALLET_API.md#walleteventlistener) + +--- + +### NOT_ERC20 + +Re-exports [NOT_ERC20](../interfaces/types.RPC.RPCSPEC07.WALLET_API.NOT_ERC20.md) + +--- + +### UNLISTED_NETWORK + +Re-exports [UNLISTED_NETWORK](../interfaces/types.RPC.RPCSPEC07.WALLET_API.UNLISTED_NETWORK.md) + +--- + +### USER_REFUSED_OP + +Re-exports [USER_REFUSED_OP](../interfaces/types.RPC.RPCSPEC07.WALLET_API.USER_REFUSED_OP.md) + +--- + +### INVALID_REQUEST_PAYLOAD + +Re-exports [INVALID_REQUEST_PAYLOAD](../interfaces/types.RPC.RPCSPEC07.WALLET_API.INVALID_REQUEST_PAYLOAD.md) + +--- + +### ACCOUNT_ALREADY_DEPLOYED + +Re-exports [ACCOUNT_ALREADY_DEPLOYED](../interfaces/types.RPC.RPCSPEC07.WALLET_API.ACCOUNT_ALREADY_DEPLOYED.md) + +--- + +### API_VERSION_NOT_SUPPORTED + +Re-exports [API_VERSION_NOT_SUPPORTED](../interfaces/types.RPC.RPCSPEC07.WALLET_API.API_VERSION_NOT_SUPPORTED.md) + +--- + +### UNKNOWN_ERROR + +Re-exports [UNKNOWN_ERROR](../interfaces/types.RPC.RPCSPEC07.WALLET_API.UNKNOWN_ERROR.md) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.md b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.md new file mode 100644 index 000000000..e22926b3c --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/types.RPC.md @@ -0,0 +1,704 @@ +--- +id: 'types.RPC' +title: 'Namespace: RPC' +sidebar_label: 'RPC' +custom_edit_url: null +--- + +[types](types.md).RPC + +## Namespaces + +- [JRPC](types.RPC.JRPC.md) +- [RPCSPEC06](types.RPC.RPCSPEC06.md) +- [RPCSPEC07](types.RPC.RPCSPEC07.md) + +## References + +### API + +Re-exports [API](types.RPC.RPCSPEC07.API.md) + +--- + +### WALLET_API + +Re-exports [WALLET_API](types.RPC.RPCSPEC07.WALLET_API.md) + +--- + +### Methods + +Re-exports [Methods](types.RPC.RPCSPEC07.API.md#methods) + +--- + +### Errors + +Re-exports [Errors](types.RPC.RPCSPEC07.API.Errors.md) + +--- + +### SPEC + +Re-exports [SPEC](types.RPC.RPCSPEC07.API.SPEC.md) + +--- + +### ABI + +Re-exports [ABI](types.RPC.RPCSPEC07.API.md#abi) + +--- + +### FUNCTION + +Re-exports [FUNCTION](types.RPC.RPCSPEC07.API.md#function) + +--- + +### CONSTRUCTOR + +Re-exports [CONSTRUCTOR](types.RPC.RPCSPEC07.API.md#constructor) + +--- + +### L1_HANDLER + +Re-exports [L1_HANDLER](types.RPC.RPCSPEC07.API.md#l1_handler) + +--- + +### EVENT + +Re-exports [EVENT](types.RPC.RPCSPEC07.API.md#event) + +--- + +### STRUCT_EVENT + +Re-exports [STRUCT_EVENT](types.RPC.RPCSPEC07.API.md#struct_event) + +--- + +### ENUM_EVENT + +Re-exports [ENUM_EVENT](types.RPC.RPCSPEC07.API.md#enum_event) + +--- + +### STRUCT + +Re-exports [STRUCT](types.RPC.RPCSPEC07.API.md#struct) + +--- + +### ENUM + +Re-exports [ENUM](types.RPC.RPCSPEC07.API.md#enum) + +--- + +### INTERFACE + +Re-exports [INTERFACE](types.RPC.RPCSPEC07.API.md#interface) + +--- + +### IMPL + +Re-exports [IMPL](types.RPC.RPCSPEC07.API.md#impl) + +--- + +### EVENT_KIND + +Re-exports [EVENT_KIND](types.RPC.RPCSPEC07.API.md#event_kind) + +--- + +### EVENT_FIELD + +Re-exports [EVENT_FIELD](types.RPC.RPCSPEC07.API.md#event_field) + +--- + +### ContractClass + +Re-exports [ContractClass](types.RPC.RPCSPEC07.API.md#contractclass) + +--- + +### SimulateTransaction + +Re-exports [SimulateTransaction](types.RPC.RPCSPEC07.API.md#simulatetransaction) + +--- + +### SimulateTransactionResponse + +Re-exports [SimulateTransactionResponse](types.RPC.RPCSPEC07.API.md#simulatetransactionresponse) + +--- + +### FeeEstimate + +Re-exports [FeeEstimate](types.RPC.RPCSPEC07.API.md#feeestimate) + +--- + +### TransactionWithHash + +Re-exports [TransactionWithHash](types.RPC.RPCSPEC07.API.md#transactionwithhash) + +--- + +### BlockHashAndNumber + +Re-exports [BlockHashAndNumber](types.RPC.RPCSPEC07.API.md#blockhashandnumber) + +--- + +### BlockWithTxs + +Re-exports [BlockWithTxs](types.RPC.RPCSPEC07.API.md#blockwithtxs) + +--- + +### BlockWithTxHashes + +Re-exports [BlockWithTxHashes](types.RPC.RPCSPEC07.API.md#blockwithtxhashes) + +--- + +### BlockWithTxReceipts + +Re-exports [BlockWithTxReceipts](types.RPC.RPCSPEC07.API.md#blockwithtxreceipts) + +--- + +### StateUpdate + +Re-exports [StateUpdate](types.RPC.RPCSPEC07.API.md#stateupdate) + +--- + +### BlockTransactionsTraces + +Re-exports [BlockTransactionsTraces](types.RPC.RPCSPEC07.API.md#blocktransactionstraces) + +--- + +### Syncing + +Re-exports [Syncing](types.RPC.RPCSPEC07.API.md#syncing) + +--- + +### Events + +Re-exports [Events](types.RPC.RPCSPEC07.API.md#events) + +--- + +### EmittedEvent + +Re-exports [EmittedEvent](types.RPC.RPCSPEC07.API.md#emittedevent) + +--- + +### Event + +Re-exports [Event](types.RPC.RPCSPEC07.API.md#event-1) + +--- + +### InvokedTransaction + +Re-exports [InvokedTransaction](types.RPC.RPCSPEC07.API.md#invokedtransaction) + +--- + +### DeclaredTransaction + +Re-exports [DeclaredTransaction](types.RPC.RPCSPEC07.API.md#declaredtransaction) + +--- + +### DeployedAccountTransaction + +Re-exports [DeployedAccountTransaction](types.RPC.RPCSPEC07.API.md#deployedaccounttransaction) + +--- + +### ContractAddress + +Re-exports [ContractAddress](types.RPC.RPCSPEC07.API.md#contractaddress) + +--- + +### Felt + +Re-exports [Felt](types.RPC.RPCSPEC07.API.md#felt) + +--- + +### Nonce + +Re-exports [Nonce](types.RPC.RPCSPEC07.API.md#nonce) + +--- + +### TransactionHash + +Re-exports [TransactionHash](types.RPC.RPCSPEC07.API.md#transactionhash) + +--- + +### TransactionTrace + +Re-exports [TransactionTrace](types.RPC.RPCSPEC07.API.md#transactiontrace) + +--- + +### BlockHash + +Re-exports [BlockHash](types.RPC.RPCSPEC07.API.md#blockhash) + +--- + +### TransactionReceipt + +Re-exports [TransactionReceipt](types.RPC.RPCSPEC07.API.md#transactionreceipt) + +--- + +### Receipt + +Re-exports [Receipt](types.RPC.RPCSPEC07.API.md#receipt) + +--- + +### PendingReceipt + +Re-exports [PendingReceipt](types.RPC.RPCSPEC07.API.md#pendingreceipt) + +--- + +### EventFilter + +Re-exports [EventFilter](types.RPC.RPCSPEC07.API.md#eventfilter) + +--- + +### SimulationFlags + +Re-exports [SimulationFlags](types.RPC.RPCSPEC07.API.md#simulationflags) + +--- + +### L1Message + +Re-exports [L1Message](types.RPC.RPCSPEC07.API.md#l1message) + +--- + +### BaseTransaction + +Re-exports [BaseTransaction](types.RPC.RPCSPEC07.API.md#basetransaction) + +--- + +### ChainId + +Re-exports [ChainId](types.RPC.RPCSPEC07.API.md#chainid) + +--- + +### Transaction + +Re-exports [Transaction](types.RPC.RPCSPEC07.API.md#transaction) + +--- + +### TransactionStatus + +Re-exports [TransactionStatus](types.RPC.RPCSPEC07.API.md#transactionstatus) + +--- + +### ResourceBounds + +Re-exports [ResourceBounds](types.RPC.RPCSPEC07.API.md#resourcebounds) + +--- + +### FeePayment + +Re-exports [FeePayment](types.RPC.RPCSPEC07.API.md#feepayment) + +--- + +### PriceUnit + +Re-exports [PriceUnit](types.RPC.RPCSPEC07.API.md#priceunit) + +--- + +### StorageDiffs + +Re-exports [StorageDiffs](types.RPC.RPCSPEC07.API.md#storagediffs) + +--- + +### DeprecatedDeclaredClasses + +Re-exports [DeprecatedDeclaredClasses](types.RPC.RPCSPEC07.API.md#deprecateddeclaredclasses) + +--- + +### NonceUpdates + +Re-exports [NonceUpdates](types.RPC.RPCSPEC07.API.md#nonceupdates) + +--- + +### ReplacedClasses + +Re-exports [ReplacedClasses](types.RPC.RPCSPEC07.API.md#replacedclasses) + +--- + +### ETransactionType + +Re-exports [ETransactionType](types.RPC.RPCSPEC07.API.md#etransactiontype-1) + +--- + +### ESimulationFlag + +Re-exports [ESimulationFlag](types.RPC.RPCSPEC07.API.md#esimulationflag-1) + +--- + +### ETransactionStatus + +Re-exports [ETransactionStatus](types.RPC.RPCSPEC07.API.md#etransactionstatus-1) + +--- + +### ETransactionFinalityStatus + +Re-exports [ETransactionFinalityStatus](types.RPC.RPCSPEC07.API.md#etransactionfinalitystatus-1) + +--- + +### ETransactionExecutionStatus + +Re-exports [ETransactionExecutionStatus](types.RPC.RPCSPEC07.API.md#etransactionexecutionstatus-1) + +--- + +### EBlockTag + +Re-exports [EBlockTag](types.RPC.RPCSPEC07.API.md#eblocktag-1) + +--- + +### EDataAvailabilityMode + +Re-exports [EDataAvailabilityMode](types.RPC.RPCSPEC07.API.md#edataavailabilitymode-1) + +--- + +### EDAMode + +Re-exports [EDAMode](types.RPC.RPCSPEC07.API.md#edamode-1) + +--- + +### ETransactionVersion + +Re-exports [ETransactionVersion](types.RPC.RPCSPEC07.API.md#etransactionversion-1) + +--- + +### ETransactionVersion2 + +Re-exports [ETransactionVersion2](types.RPC.RPCSPEC07.API.md#etransactionversion2-1) + +--- + +### ETransactionVersion3 + +Re-exports [ETransactionVersion3](types.RPC.RPCSPEC07.API.md#etransactionversion3-1) + +--- + +### Permission + +Re-exports [Permission](types.RPC.RPCSPEC07.WALLET_API.md#permission-1) + +--- + +### TypedDataRevision + +Re-exports [TypedDataRevision](types.RPC.RPCSPEC07.WALLET_API.md#typeddatarevision-1) + +--- + +### StarknetEnumType + +Re-exports [StarknetEnumType](types.RPC.RPCSPEC07.WALLET_API.md#starknetenumtype) + +--- + +### StarknetMerkleType + +Re-exports [StarknetMerkleType](types.RPC.RPCSPEC07.WALLET_API.md#starknetmerkletype) + +--- + +### StarknetType + +Re-exports [StarknetType](types.RPC.RPCSPEC07.WALLET_API.md#starknettype) + +--- + +### StarknetDomain + +Re-exports [StarknetDomain](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetDomain.md) + +--- + +### TypedData + +Re-exports [TypedData](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) + +--- + +### StarknetWindowObject + +Re-exports [StarknetWindowObject](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md) + +--- + +### Address + +Re-exports [Address](types.RPC.RPCSPEC07.WALLET_API.md#address) + +--- + +### Signature + +Re-exports [Signature](types.RPC.RPCSPEC07.WALLET_API.md#signature) + +--- + +### PADDED_TXN_HASH + +Re-exports [PADDED_TXN_HASH](types.RPC.RPCSPEC07.WALLET_API.md#padded_txn_hash) + +--- + +### PADDED_FELT + +Re-exports [PADDED_FELT](types.RPC.RPCSPEC07.WALLET_API.md#padded_felt) + +--- + +### SpecVersion + +Re-exports [SpecVersion](types.RPC.RPCSPEC07.WALLET_API.md#specversion) + +--- + +### TokenSymbol + +Re-exports [TokenSymbol](types.RPC.RPCSPEC07.WALLET_API.md#tokensymbol) + +--- + +### Asset + +Re-exports [Asset](types.RPC.RPCSPEC07.WALLET_API.md#asset) + +--- + +### StarknetChain + +Re-exports [StarknetChain](types.RPC.RPCSPEC07.WALLET_API.md#starknetchain) + +--- + +### Call + +Re-exports [Call](types.RPC.RPCSPEC07.WALLET_API.md#call) + +--- + +### AddInvokeTransactionParameters + +Re-exports [AddInvokeTransactionParameters](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionParameters.md) + +--- + +### AddInvokeTransactionResult + +Re-exports [AddInvokeTransactionResult](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionResult.md) + +--- + +### AddDeclareTransactionParameters + +Re-exports [AddDeclareTransactionParameters](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionParameters.md) + +--- + +### AddDeclareTransactionResult + +Re-exports [AddDeclareTransactionResult](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionResult.md) + +--- + +### RequestAccountsParameters + +Re-exports [RequestAccountsParameters](../interfaces/types.RPC.RPCSPEC07.WALLET_API.RequestAccountsParameters.md) + +--- + +### WatchAssetParameters + +Re-exports [WatchAssetParameters](../interfaces/types.RPC.RPCSPEC07.WALLET_API.WatchAssetParameters.md) + +--- + +### AddStarknetChainParameters + +Re-exports [AddStarknetChainParameters](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddStarknetChainParameters.md) + +--- + +### SwitchStarknetChainParameters + +Re-exports [SwitchStarknetChainParameters](../interfaces/types.RPC.RPCSPEC07.WALLET_API.SwitchStarknetChainParameters.md) + +--- + +### AccountDeploymentData + +Re-exports [AccountDeploymentData](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AccountDeploymentData.md) + +--- + +### API_VERSION + +Re-exports [API_VERSION](types.RPC.RPCSPEC07.WALLET_API.md#api_version) + +--- + +### ApiVersionRequest + +Re-exports [ApiVersionRequest](../interfaces/types.RPC.RPCSPEC07.WALLET_API.ApiVersionRequest.md) + +--- + +### RpcTypeToMessageMap + +Re-exports [RpcTypeToMessageMap](../interfaces/types.RPC.RPCSPEC07.WALLET_API.RpcTypeToMessageMap.md) + +--- + +### RpcMessage + +Re-exports [RpcMessage](types.RPC.RPCSPEC07.WALLET_API.md#rpcmessage) + +--- + +### IsParamsOptional + +Re-exports [IsParamsOptional](types.RPC.RPCSPEC07.WALLET_API.md#isparamsoptional) + +--- + +### RequestFnCall + +Re-exports [RequestFnCall](types.RPC.RPCSPEC07.WALLET_API.md#requestfncall) + +--- + +### RequestFn + +Re-exports [RequestFn](types.RPC.RPCSPEC07.WALLET_API.md#requestfn) + +--- + +### AccountChangeEventHandler + +Re-exports [AccountChangeEventHandler](types.RPC.RPCSPEC07.WALLET_API.md#accountchangeeventhandler) + +--- + +### NetworkChangeEventHandler + +Re-exports [NetworkChangeEventHandler](types.RPC.RPCSPEC07.WALLET_API.md#networkchangeeventhandler) + +--- + +### WalletEventHandlers + +Re-exports [WalletEventHandlers](../interfaces/types.RPC.RPCSPEC07.WALLET_API.WalletEventHandlers.md) + +--- + +### WalletEvents + +Re-exports [WalletEvents](types.RPC.RPCSPEC07.WALLET_API.md#walletevents) + +--- + +### WalletEventListener + +Re-exports [WalletEventListener](types.RPC.RPCSPEC07.WALLET_API.md#walleteventlistener) + +--- + +### NOT_ERC20 + +Re-exports [NOT_ERC20](../interfaces/types.RPC.RPCSPEC07.WALLET_API.NOT_ERC20.md) + +--- + +### UNLISTED_NETWORK + +Re-exports [UNLISTED_NETWORK](../interfaces/types.RPC.RPCSPEC07.WALLET_API.UNLISTED_NETWORK.md) + +--- + +### USER_REFUSED_OP + +Re-exports [USER_REFUSED_OP](../interfaces/types.RPC.RPCSPEC07.WALLET_API.USER_REFUSED_OP.md) + +--- + +### INVALID_REQUEST_PAYLOAD + +Re-exports [INVALID_REQUEST_PAYLOAD](../interfaces/types.RPC.RPCSPEC07.WALLET_API.INVALID_REQUEST_PAYLOAD.md) + +--- + +### ACCOUNT_ALREADY_DEPLOYED + +Re-exports [ACCOUNT_ALREADY_DEPLOYED](../interfaces/types.RPC.RPCSPEC07.WALLET_API.ACCOUNT_ALREADY_DEPLOYED.md) + +--- + +### API_VERSION_NOT_SUPPORTED + +Re-exports [API_VERSION_NOT_SUPPORTED](../interfaces/types.RPC.RPCSPEC07.WALLET_API.API_VERSION_NOT_SUPPORTED.md) + +--- + +### UNKNOWN_ERROR + +Re-exports [UNKNOWN_ERROR](../interfaces/types.RPC.RPCSPEC07.WALLET_API.UNKNOWN_ERROR.md) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/types.md b/www/versioned_docs/version-6.24.1/API/namespaces/types.md new file mode 100644 index 000000000..70fc28e14 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/types.md @@ -0,0 +1,2544 @@ +--- +id: 'types' +title: 'Namespace: types' +sidebar_label: 'types' +sidebar_position: 0 +custom_edit_url: null +--- + +## Namespaces + +- [RPC](types.RPC.md) + +## Enumerations + +- [OutsideExecutionVersion](../enums/types.OutsideExecutionVersion.md) + +## Interfaces + +- [Uint256](../interfaces/types.Uint256.md) +- [Uint512](../interfaces/types.Uint512.md) +- [CallStruct](../interfaces/types.CallStruct.md) +- [Program](../interfaces/types.Program.md) +- [ProviderOptions](../interfaces/types.ProviderOptions.md) +- [MessageToL1](../interfaces/types.MessageToL1.md) +- [EstimateFeeResponse](../interfaces/types.EstimateFeeResponse.md) +- [EstimateFee](../interfaces/types.EstimateFee.md) +- [UniversalDetails](../interfaces/types.UniversalDetails.md) +- [EstimateFeeDetails](../interfaces/types.EstimateFeeDetails.md) +- [DeployContractResponse](../interfaces/types.DeployContractResponse.md) +- [OutsideExecutionOptions](../interfaces/types.OutsideExecutionOptions.md) +- [OutsideCall](../interfaces/types.OutsideCall.md) +- [OutsideExecution](../interfaces/types.OutsideExecution.md) +- [OutsideTransaction](../interfaces/types.OutsideTransaction.md) + +## References + +### TypedDataRevision + +Re-exports [TypedDataRevision](types.RPC.RPCSPEC07.WALLET_API.md#typeddatarevision-1) + +--- + +### StarknetEnumType + +Re-exports [StarknetEnumType](types.RPC.RPCSPEC07.WALLET_API.md#starknetenumtype) + +--- + +### StarknetMerkleType + +Re-exports [StarknetMerkleType](types.RPC.RPCSPEC07.WALLET_API.md#starknetmerkletype) + +--- + +### StarknetType + +Re-exports [StarknetType](types.RPC.RPCSPEC07.WALLET_API.md#starknettype) + +--- + +### StarknetDomain + +Re-exports [StarknetDomain](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetDomain.md) + +--- + +### TypedData + +Re-exports [TypedData](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) + +## Type Aliases + +### WeierstrassSignatureType + +Ƭ **WeierstrassSignatureType**: [`SignatureType`](../interfaces/ec.weierstrass.SignatureType.md) + +#### Defined in + +[src/types/lib/index.ts:8](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L8) + +--- + +### ArraySignatureType + +Ƭ **ArraySignatureType**: `string`[] + +#### Defined in + +[src/types/lib/index.ts:9](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L9) + +--- + +### Signature + +Ƭ **Signature**: [`ArraySignatureType`](types.md#arraysignaturetype) \| [`WeierstrassSignatureType`](types.md#weierstrasssignaturetype) + +#### Defined in + +[src/types/lib/index.ts:10](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L10) + +--- + +### BigNumberish + +Ƭ **BigNumberish**: `string` \| `number` \| `bigint` + +#### Defined in + +[src/types/lib/index.ts:12](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L12) + +--- + +### ByteArray + +Ƭ **ByteArray**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :---------------------------------------- | +| `data` | [`BigNumberish`](types.md#bignumberish)[] | +| `pending_word` | [`BigNumberish`](types.md#bignumberish) | +| `pending_word_len` | [`BigNumberish`](types.md#bignumberish) | + +#### Defined in + +[src/types/lib/index.ts:14](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L14) + +--- + +### Calldata + +Ƭ **Calldata**: `string`[] & \{ `__compiled__?`: `true` } + +Compiled calldata ready to be sent + +decimal-string array + +#### Defined in + +[src/types/lib/index.ts:25](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L25) + +--- + +### RawCalldata + +Ƭ **RawCalldata**: [`BigNumberish`](types.md#bignumberish)[] + +BigNumberish array + +use CallData.compile() to convert to Calldata + +#### Defined in + +[src/types/lib/index.ts:54](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L54) + +--- + +### HexCalldata + +Ƭ **HexCalldata**: `string`[] + +Hexadecimal-string array + +#### Defined in + +[src/types/lib/index.ts:59](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L59) + +--- + +### AllowArray + +Ƭ **AllowArray**<`T`\>: `T` \| `T`[] + +#### Type parameters + +| Name | +| :--- | +| `T` | + +#### Defined in + +[src/types/lib/index.ts:61](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L61) + +--- + +### OptionalPayload + +Ƭ **OptionalPayload**<`T`\>: \{ `payload`: `T` } \| `T` + +#### Type parameters + +| Name | +| :--- | +| `T` | + +#### Defined in + +[src/types/lib/index.ts:63](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L63) + +--- + +### RawArgs + +Ƭ **RawArgs**: [`RawArgsObject`](types.md#rawargsobject) \| [`RawArgsArray`](types.md#rawargsarray) + +#### Defined in + +[src/types/lib/index.ts:65](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L65) + +--- + +### RawArgsObject + +Ƭ **RawArgsObject**: `Object` + +#### Index signature + +▪ [inputName: `string`]: [`MultiType`](types.md#multitype) \| [`MultiType`](types.md#multitype)[] \| [`RawArgs`](types.md#rawargs) + +#### Defined in + +[src/types/lib/index.ts:67](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L67) + +--- + +### RawArgsArray + +Ƭ **RawArgsArray**: ([`MultiType`](types.md#multitype) \| [`MultiType`](types.md#multitype)[] \| [`RawArgs`](types.md#rawargs))[] + +#### Defined in + +[src/types/lib/index.ts:71](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L71) + +--- + +### MultiType + +Ƭ **MultiType**: [`BigNumberish`](types.md#bignumberish) \| [`Uint256`](../interfaces/types.Uint256.md) \| `object` \| `boolean` \| [`CairoEnum`](types.md#cairoenum) + +#### Defined in + +[src/types/lib/index.ts:73](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L73) + +--- + +### UniversalDeployerContractPayload + +Ƭ **UniversalDeployerContractPayload**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------------- | :-------------------------------------- | +| `classHash` | [`BigNumberish`](types.md#bignumberish) | +| `salt?` | `string` | +| `unique?` | `boolean` | +| `constructorCalldata?` | [`RawArgs`](types.md#rawargs) | + +#### Defined in + +[src/types/lib/index.ts:75](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L75) + +--- + +### DeployAccountContractPayload + +Ƭ **DeployAccountContractPayload**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------------- | :-------------------------------------- | +| `classHash` | `string` | +| `constructorCalldata?` | [`RawArgs`](types.md#rawargs) | +| `addressSalt?` | [`BigNumberish`](types.md#bignumberish) | +| `contractAddress?` | `string` | + +#### Defined in + +[src/types/lib/index.ts:82](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L82) + +--- + +### DeployAccountContractTransaction + +Ƭ **DeployAccountContractTransaction**: `Omit`<[`DeployAccountContractPayload`](types.md#deployaccountcontractpayload), `"contractAddress"`\> & \{ `signature?`: [`Signature`](types.md#signature) } + +#### Defined in + +[src/types/lib/index.ts:89](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L89) + +--- + +### DeclareContractPayload + +Ƭ **DeclareContractPayload**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------- | :---------------------------------------------------------- | +| `contract` | [`CompiledContract`](types.md#compiledcontract) \| `string` | +| `classHash?` | `string` | +| `casm?` | [`CompiledSierraCasm`](types.md#compiledsierracasm) | +| `compiledClassHash?` | `string` | + +#### Defined in + +[src/types/lib/index.ts:96](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L96) + +--- + +### ContractClassIdentifier + +Ƭ **ContractClassIdentifier**: [`DeclareContractPayload`](types.md#declarecontractpayload) \| \{ `classHash`: `string` } + +DeclareContractPayload with classHash or contract defined + +#### Defined in + +[src/types/lib/index.ts:106](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L106) + +--- + +### CompleteDeclareContractPayload + +Ƭ **CompleteDeclareContractPayload**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------- | :---------------------------------------------------------- | +| `contract` | [`CompiledContract`](types.md#compiledcontract) \| `string` | +| `classHash` | `string` | +| `casm?` | [`CompiledSierraCasm`](types.md#compiledsierracasm) | +| `compiledClassHash?` | `string` | + +#### Defined in + +[src/types/lib/index.ts:108](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L108) + +--- + +### DeclareAndDeployContractPayload + +Ƭ **DeclareAndDeployContractPayload**: `Omit`<[`UniversalDeployerContractPayload`](types.md#universaldeployercontractpayload), `"classHash"`\> & [`DeclareContractPayload`](types.md#declarecontractpayload) + +#### Defined in + +[src/types/lib/index.ts:115](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L115) + +--- + +### DeclareContractTransaction + +Ƭ **DeclareContractTransaction**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------- | :---------------------------------------- | +| `contract` | [`ContractClass`](types.md#contractclass) | +| `senderAddress` | `string` | +| `signature?` | [`Signature`](types.md#signature) | +| `compiledClassHash?` | `string` | + +#### Defined in + +[src/types/lib/index.ts:118](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L118) + +--- + +### CallDetails + +Ƭ **CallDetails**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------- | :--------------------------------------------------------------- | +| `contractAddress` | `string` | +| `calldata?` | [`RawArgs`](types.md#rawargs) \| [`Calldata`](types.md#calldata) | +| `entrypoint?` | `string` | + +#### Defined in + +[src/types/lib/index.ts:125](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L125) + +--- + +### Invocation + +Ƭ **Invocation**: [`CallDetails`](types.md#calldetails) & \{ `signature?`: [`Signature`](types.md#signature) } + +#### Defined in + +[src/types/lib/index.ts:131](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L131) + +--- + +### Call + +Ƭ **Call**: [`CallDetails`](types.md#calldetails) & \{ `entrypoint`: `string` } + +#### Defined in + +[src/types/lib/index.ts:133](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L133) + +--- + +### CairoVersion + +Ƭ **CairoVersion**: `"0"` \| `"1"` \| `undefined` + +#### Defined in + +[src/types/lib/index.ts:135](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L135) + +--- + +### CompilerVersion + +Ƭ **CompilerVersion**: `"0"` \| `"1"` \| `"2"` \| `undefined` + +#### Defined in + +[src/types/lib/index.ts:136](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L136) + +--- + +### InvocationsDetails + +Ƭ **InvocationsDetails**: \{ `nonce?`: [`BigNumberish`](types.md#bignumberish) ; `maxFee?`: [`BigNumberish`](types.md#bignumberish) ; `version?`: [`BigNumberish`](types.md#bignumberish) } & `Partial`<[`V3TransactionDetails`](types.md#v3transactiondetails)\> + +#### Defined in + +[src/types/lib/index.ts:138](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L138) + +--- + +### V3TransactionDetails + +Ƭ **V3TransactionDetails**: `Object` + +#### Type declaration + +| Name | Type | +| :-------------------------- | :---------------------------------------------------------------------------- | +| `nonce` | [`BigNumberish`](types.md#bignumberish) | +| `version` | [`BigNumberish`](types.md#bignumberish) | +| `resourceBounds` | [`ResourceBounds`](types.RPC.RPCSPEC07.API.md#resourcebounds) | +| `tip` | [`BigNumberish`](types.md#bignumberish) | +| `paymasterData` | [`BigNumberish`](types.md#bignumberish)[] | +| `accountDeploymentData` | [`BigNumberish`](types.md#bignumberish)[] | +| `nonceDataAvailabilityMode` | [`EDataAvailabilityMode`](types.RPC.RPCSPEC07.API.md#edataavailabilitymode-1) | +| `feeDataAvailabilityMode` | [`EDataAvailabilityMode`](types.RPC.RPCSPEC07.API.md#edataavailabilitymode-1) | + +#### Defined in + +[src/types/lib/index.ts:144](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L144) + +--- + +### Details + +Ƭ **Details**: `Object` + +Contain all additional details params + +#### Type declaration + +| Name | Type | +| :-------- | :--------------------------------------------------------- | +| `nonce` | [`BigNumberish`](types.md#bignumberish) | +| `maxFee` | [`BigNumberish`](types.md#bignumberish) | +| `version` | [`BigNumberish`](types.md#bignumberish) | +| `chainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | + +#### Defined in + +[src/types/lib/index.ts:158](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L158) + +--- + +### InvocationsDetailsWithNonce + +Ƭ **InvocationsDetailsWithNonce**: [`InvocationsDetails`](types.md#invocationsdetails) & \{ `nonce`: [`BigNumberish`](types.md#bignumberish) } \| [`V3TransactionDetails`](types.md#v3transactiondetails) + +#### Defined in + +[src/types/lib/index.ts:165](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L165) + +--- + +### TransactionType + +Ƭ **TransactionType**: `ValuesType` + +#### Defined in + +[src/types/lib/index.ts:169](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L169) + +[src/types/lib/index.ts:176](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L176) + +--- + +### TransactionStatus + +Ƭ **TransactionStatus**: `ValuesType` + +#### Defined in + +[src/types/lib/index.ts:182](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L182) + +[src/types/lib/index.ts:191](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L191) + +--- + +### TransactionFinalityStatus + +Ƭ **TransactionFinalityStatus**: `ValuesType` + +#### Defined in + +[src/types/lib/index.ts:193](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L193) + +[src/types/lib/index.ts:200](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L200) + +--- + +### TransactionExecutionStatus + +Ƭ **TransactionExecutionStatus**: `ValuesType` + +#### Defined in + +[src/types/lib/index.ts:202](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L202) + +[src/types/lib/index.ts:208](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L208) + +--- + +### BlockStatus + +Ƭ **BlockStatus**: `ValuesType` + +#### Defined in + +[src/types/lib/index.ts:210](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L210) + +[src/types/lib/index.ts:217](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L217) + +--- + +### BlockTag + +Ƭ **BlockTag**: `ValuesType` + +#### Defined in + +[src/types/lib/index.ts:219](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L219) + +[src/types/lib/index.ts:224](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L224) + +--- + +### BlockNumber + +Ƭ **BlockNumber**: [`BlockTag`](types.md#blocktag-1) \| `null` \| `number` + +#### Defined in + +[src/types/lib/index.ts:226](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L226) + +--- + +### BlockIdentifier + +Ƭ **BlockIdentifier**: [`BlockNumber`](types.md#blocknumber) \| [`BigNumberish`](types.md#bignumberish) + +hex string and BigInt are detected as block hashes + +decimal string and number are detected as block numbers + +text string are detected as block tag + +null return 'pending' block tag + +#### Defined in + +[src/types/lib/index.ts:237](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L237) + +--- + +### AccountInvocationItem + +Ƭ **AccountInvocationItem**: \{ `type`: typeof [`DECLARE`](types.md#declare) } & [`DeclareContractTransaction`](types.md#declarecontracttransaction) \| \{ `type`: typeof [`DEPLOY_ACCOUNT`](types.md#deploy_account) } & [`DeployAccountContractTransaction`](types.md#deployaccountcontracttransaction) \| \{ `type`: typeof [`INVOKE`](types.md#invoke) } & [`Invocation`](types.md#invocation) & [`InvocationsDetailsWithNonce`](types.md#invocationsdetailswithnonce) + +items used by AccountInvocations + +#### Defined in + +[src/types/lib/index.ts:242](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L242) + +--- + +### AccountInvocations + +Ƭ **AccountInvocations**: [`AccountInvocationItem`](types.md#accountinvocationitem)[] + +Complete invocations array with account details (internal type from account -> provider) + +#### Defined in + +[src/types/lib/index.ts:252](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L252) + +--- + +### Invocations + +Ƭ **Invocations**: (\{ `type`: typeof [`DECLARE`](types.md#declare) } & [`OptionalPayload`](types.md#optionalpayload)<[`DeclareContractPayload`](types.md#declarecontractpayload)\> \| \{ `type`: typeof [`DEPLOY`](types.md#deploy) } & [`OptionalPayload`](types.md#optionalpayload)<[`AllowArray`](types.md#allowarray)<[`UniversalDeployerContractPayload`](types.md#universaldeployercontractpayload)\>\> \| \{ `type`: typeof [`DEPLOY_ACCOUNT`](types.md#deploy_account) } & [`OptionalPayload`](types.md#optionalpayload)<[`DeployAccountContractPayload`](types.md#deployaccountcontractpayload)\> \| \{ `type`: typeof [`INVOKE`](types.md#invoke) } & [`OptionalPayload`](types.md#optionalpayload)<[`AllowArray`](types.md#allowarray)<[`Call`](types.md#call)\>\>)[] + +Invocations array user provide to bulk method (simulate) + +#### Defined in + +[src/types/lib/index.ts:257](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L257) + +--- + +### Tupled + +Ƭ **Tupled**: `Object` + +#### Type declaration + +| Name | Type | +| :-------- | :------- | +| `element` | `any` | +| `type` | `string` | + +#### Defined in + +[src/types/lib/index.ts:268](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L268) + +--- + +### Args + +Ƭ **Args**: `Object` + +#### Index signature + +▪ [inputName: `string`]: [`BigNumberish`](types.md#bignumberish) \| [`BigNumberish`](types.md#bignumberish)[] \| [`ParsedStruct`](types.md#parsedstruct) \| [`ParsedStruct`](types.md#parsedstruct)[] + +#### Defined in + +[src/types/lib/index.ts:270](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L270) + +--- + +### ParsedStruct + +Ƭ **ParsedStruct**: `Object` + +#### Index signature + +▪ [key: `string`]: [`BigNumberish`](types.md#bignumberish) \| [`BigNumberish`](types.md#bignumberish)[] \| [`ParsedStruct`](types.md#parsedstruct) \| [`Uint256`](../interfaces/types.Uint256.md) + +#### Defined in + +[src/types/lib/index.ts:273](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L273) + +--- + +### waitForTransactionOptions + +Ƭ **waitForTransactionOptions**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | +| `retryInterval?` | `number` | +| `successStates?` | ([`TransactionFinalityStatus`](types.md#transactionfinalitystatus-1) \| [`TransactionExecutionStatus`](types.md#transactionexecutionstatus-1))[] | +| `errorStates?` | ([`TransactionFinalityStatus`](types.md#transactionfinalitystatus-1) \| [`TransactionExecutionStatus`](types.md#transactionexecutionstatus-1))[] | + +#### Defined in + +[src/types/lib/index.ts:277](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L277) + +--- + +### getSimulateTransactionOptions + +Ƭ **getSimulateTransactionOptions**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :-------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](types.md#blockidentifier) | +| `skipValidate?` | `boolean` | +| `skipExecute?` | `boolean` | +| `skipFeeCharge?` | `boolean` | + +#### Defined in + +[src/types/lib/index.ts:283](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L283) + +--- + +### getContractVersionOptions + +Ƭ **getContractVersionOptions**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :-------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](types.md#blockidentifier) | +| `compiler?` | `boolean` | + +#### Defined in + +[src/types/lib/index.ts:290](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L290) + +--- + +### getEstimateFeeBulkOptions + +Ƭ **getEstimateFeeBulkOptions**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :-------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](types.md#blockidentifier) | +| `skipValidate?` | `boolean` | + +#### Defined in + +[src/types/lib/index.ts:295](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L295) + +--- + +### ContractVersion + +Ƭ **ContractVersion**: `Object` + +Represent Contract version + +#### Type declaration + +| Name | Type | Description | +| :--------- | :-------------------------------------------- | :--------------------------------------------------------- | +| `cairo` | [`CairoVersion`](types.md#cairoversion) | version of the cairo language | +| `compiler` | [`CompilerVersion`](types.md#compilerversion) | version of the cairo compiler used to compile the contract | + +#### Defined in + +[src/types/lib/index.ts:309](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L309) + +--- + +### ContractClass + +Ƭ **ContractClass**: [`LegacyContractClass`](types.md#legacycontractclass) \| [`SierraContractClass`](types.md#sierracontractclass) + +format produced after compressing compiled contract + +CompressedCompiledContract + +#### Defined in + +[src/types/lib/contract/index.ts:11](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/index.ts#L11) + +--- + +### CompiledContract + +Ƭ **CompiledContract**: [`LegacyCompiledContract`](types.md#legacycompiledcontract) \| [`CompiledSierra`](types.md#compiledsierra) + +format produced after compile .cairo to .json + +#### Defined in + +[src/types/lib/contract/index.ts:16](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/index.ts#L16) + +--- + +### CairoContract + +Ƭ **CairoContract**: [`ContractClass`](types.md#contractclass) \| [`CompiledContract`](types.md#compiledcontract) + +Compressed or decompressed Cairo0 or Cairo1 Contract + +#### Defined in + +[src/types/lib/contract/index.ts:21](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/index.ts#L21) + +--- + +### EntryPointType + +Ƭ **EntryPointType**: `ValuesType` + +#### Defined in + +[src/types/lib/contract/index.ts:24](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/index.ts#L24) + +[src/types/lib/contract/index.ts:30](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/index.ts#L30) + +--- + +### Abi + +Ƭ **Abi**: `ReadonlyArray`<[`FunctionAbi`](types.md#functionabi) \| [`AbiEvent`](types.md#abievent) \| [`AbiStruct`](types.md#abistruct) \| [`InterfaceAbi`](types.md#interfaceabi) \| `any`\> + +ABI + +#### Defined in + +[src/types/lib/contract/abi.ts:4](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/abi.ts#L4) + +--- + +### AbiEntry + +Ƭ **AbiEntry**: `Object` + +#### Type declaration + +| Name | Type | +| :----- | :--------------------------------------------- | +| `name` | `string` | +| `type` | `"felt"` \| `"felt*"` \| `"event"` \| `string` | + +#### Defined in + +[src/types/lib/contract/abi.ts:7](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/abi.ts#L7) + +--- + +### EventEntry + +Ƭ **EventEntry**: `Object` + +#### Type declaration + +| Name | Type | +| :----- | :-------------------------------- | +| `name` | `string` | +| `type` | `"felt"` \| `"felt*"` \| `string` | +| `kind` | `"key"` \| `"data"` | + +#### Defined in + +[src/types/lib/contract/abi.ts:9](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/abi.ts#L9) + +--- + +### FunctionAbi + +Ƭ **FunctionAbi**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------ | :-------------------------------- | +| `inputs` | [`AbiEntry`](types.md#abientry)[] | +| `name` | `string` | +| `outputs` | [`AbiEntry`](types.md#abientry)[] | +| `stateMutability?` | `"view"` | +| `state_mutability?` | `string` | +| `type` | `FunctionAbiType` | + +#### Defined in + +[src/types/lib/contract/abi.ts:14](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/abi.ts#L14) + +--- + +### AbiStructs + +Ƭ **AbiStructs**: `Object` + +#### Index signature + +▪ [name: `string`]: [`AbiStruct`](types.md#abistruct) + +#### Defined in + +[src/types/lib/contract/abi.ts:23](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/abi.ts#L23) + +--- + +### AbiStruct + +Ƭ **AbiStruct**: `Object` + +#### Type declaration + +| Name | Type | +| :-------- | :---------------------------------------------------------- | +| `members` | [`AbiEntry`](types.md#abientry) & \{ `offset`: `number` }[] | +| `name` | `string` | +| `size` | `number` | +| `type` | `"struct"` | + +#### Defined in + +[src/types/lib/contract/abi.ts:25](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/abi.ts#L25) + +--- + +### AbiInterfaces + +Ƭ **AbiInterfaces**: `Object` + +#### Index signature + +▪ [name: `string`]: [`InterfaceAbi`](types.md#interfaceabi) + +#### Defined in + +[src/types/lib/contract/abi.ts:32](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/abi.ts#L32) + +--- + +### InterfaceAbi + +Ƭ **InterfaceAbi**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :-------------------------------------- | +| `items` | [`FunctionAbi`](types.md#functionabi)[] | +| `name` | `string` | +| `type` | `"interface"` | + +#### Defined in + +[src/types/lib/contract/abi.ts:33](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/abi.ts#L33) + +--- + +### AbiEnums + +Ƭ **AbiEnums**: `Object` + +#### Index signature + +▪ [name: `string`]: [`AbiEnum`](types.md#abienum) + +#### Defined in + +[src/types/lib/contract/abi.ts:39](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/abi.ts#L39) + +--- + +### AbiEnum + +Ƭ **AbiEnum**: `Object` + +#### Type declaration + +| Name | Type | +| :--------- | :---------------------------------------------------------- | +| `variants` | [`AbiEntry`](types.md#abientry) & \{ `offset`: `number` }[] | +| `name` | `string` | +| `size` | `number` | +| `type` | `"enum"` | + +#### Defined in + +[src/types/lib/contract/abi.ts:40](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/abi.ts#L40) + +--- + +### AbiEvents + +Ƭ **AbiEvents**: `Object` + +#### Index signature + +▪ [hash: `string`]: [`AbiEvent`](types.md#abievent) + +#### Defined in + +[src/types/lib/contract/abi.ts:53](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/abi.ts#L53) + +--- + +### AbiEvent + +Ƭ **AbiEvent**: [`CairoEvent`](types.md#cairoevent) \| [`LegacyEvent`](types.md#legacyevent) + +#### Defined in + +[src/types/lib/contract/abi.ts:57](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/abi.ts#L57) + +--- + +### CairoEvent + +Ƭ **CairoEvent**: [`CairoEventDefinition`](types.md#cairoeventdefinition) \| [`AbiEvents`](types.md#abievents) + +#### Defined in + +[src/types/lib/contract/abi.ts:60](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/abi.ts#L60) + +--- + +### CairoEventDefinition + +Ƭ **CairoEventDefinition**: [`STRUCT_EVENT`](types.RPC.RPCSPEC07.API.md#struct_event) & \{ `name`: `string` ; `type`: `"event"` } + +#### Defined in + +[src/types/lib/contract/abi.ts:62](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/abi.ts#L62) + +--- + +### CairoEventVariant + +Ƭ **CairoEventVariant**: [`ENUM_EVENT`](types.RPC.RPCSPEC07.API.md#enum_event) & \{ `name`: `string` ; `type`: `string` } + +#### Defined in + +[src/types/lib/contract/abi.ts:67](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/abi.ts#L67) + +--- + +### LegacyEvent + +Ƭ **LegacyEvent**: `Object` + +#### Type declaration + +| Name | Type | +| :----- | :-------------------------------------------------------- | +| `name` | `string` | +| `type` | `"event"` | +| `data` | [`EVENT_FIELD`](types.RPC.RPCSPEC07.API.md#event_field)[] | +| `keys` | [`EVENT_FIELD`](types.RPC.RPCSPEC07.API.md#event_field)[] | + +#### Defined in + +[src/types/lib/contract/abi.ts:72](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/abi.ts#L72) + +--- + +### LegacyContractClass + +Ƭ **LegacyContractClass**: `Object` + +format produced after compressing 'program' property + +#### Type declaration + +| Name | Type | +| :--------------------- | :------------------------------------------------ | +| `program` | [`CompressedProgram`](types.md#compressedprogram) | +| `entry_points_by_type` | [`EntryPointsByType`](types.md#entrypointsbytype) | +| `abi` | [`Abi`](types.md#abi) | + +#### Defined in + +[src/types/lib/contract/legacy.ts:7](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/legacy.ts#L7) + +--- + +### LegacyCompiledContract + +Ƭ **LegacyCompiledContract**: `Omit`<[`LegacyContractClass`](types.md#legacycontractclass), `"program"`\> & \{ `program`: [`Program`](../interfaces/types.Program.md) } + +format produced after compiling .cairo to .json + +#### Defined in + +[src/types/lib/contract/legacy.ts:16](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/legacy.ts#L16) + +--- + +### Builtins + +Ƭ **Builtins**: `string`[] + +SUBTYPES + +#### Defined in + +[src/types/lib/contract/legacy.ts:21](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/legacy.ts#L21) + +--- + +### CompressedProgram + +Ƭ **CompressedProgram**: `string` + +#### Defined in + +[src/types/lib/contract/legacy.ts:22](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/legacy.ts#L22) + +--- + +### EntryPointsByType + +Ƭ **EntryPointsByType**: `Object` + +#### Type declaration + +| Name | Type | +| :------------ | :---------------------------------------------------------------- | +| `CONSTRUCTOR` | [`ContractEntryPointFields`](types.md#contractentrypointfields)[] | +| `EXTERNAL` | [`ContractEntryPointFields`](types.md#contractentrypointfields)[] | +| `L1_HANDLER` | [`ContractEntryPointFields`](types.md#contractentrypointfields)[] | + +#### Defined in + +[src/types/lib/contract/legacy.ts:24](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/legacy.ts#L24) + +--- + +### ContractEntryPointFields + +Ƭ **ContractEntryPointFields**: `Object` + +#### Type declaration + +| Name | Type | +| :---------- | :------------------------------ | +| `selector` | `string` | +| `offset` | `string` \| `number` | +| `builtins?` | [`Builtins`](types.md#builtins) | + +#### Defined in + +[src/types/lib/contract/legacy.ts:30](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/legacy.ts#L30) + +--- + +### CairoAssembly + +Ƭ **CairoAssembly**: `Object` + +SYSTEM TYPES + +#### Type declaration + +| Name | Type | +| :-------------------------- | :------------------------------------------------ | +| `prime` | `string` | +| `compiler_version` | `string` | +| `bytecode` | [`ByteCode`](types.md#bytecode) | +| `hints` | `any`[] | +| `pythonic_hints?` | [`PythonicHints`](types.md#pythonichints) | +| `bytecode_segment_lengths?` | `number`[] | +| `entry_points_by_type` | [`EntryPointsByType`](types.md#entrypointsbytype) | + +#### Defined in + +[src/types/lib/contract/sierra.ts:5](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/sierra.ts#L5) + +--- + +### CompiledSierra + +Ƭ **CompiledSierra**: `Object` + +format produced after starknet-compile .cairo to .json + +sierra_program is hex array + +#### Type declaration + +| Name | Type | +| :--------------------------- | :------------------------------------------------------------ | +| `sierra_program` | [`ByteCode`](types.md#bytecode) | +| `sierra_program_debug_info?` | [`SierraProgramDebugInfo`](types.md#sierraprogramdebuginfo) | +| `contract_class_version` | `string` | +| `entry_points_by_type` | [`SierraEntryPointsByType`](types.md#sierraentrypointsbytype) | +| `abi` | [`Abi`](types.md#abi) | + +#### Defined in + +[src/types/lib/contract/sierra.ts:21](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/sierra.ts#L21) + +--- + +### SierraContractClass + +Ƭ **SierraContractClass**: `Omit`<[`CompiledSierra`](types.md#compiledsierra), `"abi"` \| `"sierra_program_debug_info"`\> & \{ `sierra_program`: `string` ; `abi`: `string` } + +format produced after compressing 'sierra_program', stringifies 'abi' property and omit sierra_program_debug_info + +CompressedCompiledSierra + +#### Defined in + +[src/types/lib/contract/sierra.ts:34](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/sierra.ts#L34) + +--- + +### CompiledSierraCasm + +Ƭ **CompiledSierraCasm**: [`CairoAssembly`](types.md#cairoassembly) + +#### Defined in + +[src/types/lib/contract/sierra.ts:38](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/sierra.ts#L38) + +--- + +### ByteCode + +Ƭ **ByteCode**: `string`[] + +SUBTYPES + +#### Defined in + +[src/types/lib/contract/sierra.ts:41](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/sierra.ts#L41) + +--- + +### PythonicHints + +Ƭ **PythonicHints**: [`number`, `string`[]][] + +#### Defined in + +[src/types/lib/contract/sierra.ts:42](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/sierra.ts#L42) + +--- + +### SierraProgramDebugInfo + +Ƭ **SierraProgramDebugInfo**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------- | :--------------------- | +| `type_names` | [`number`, `string`][] | +| `libfunc_names` | [`number`, `string`][] | +| `user_func_names` | [`number`, `string`][] | + +#### Defined in + +[src/types/lib/contract/sierra.ts:44](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/sierra.ts#L44) + +--- + +### SierraEntryPointsByType + +Ƭ **SierraEntryPointsByType**: `Object` + +#### Type declaration + +| Name | Type | +| :------------ | :---------------------------------------------------------------------------- | +| `CONSTRUCTOR` | [`SierraContractEntryPointFields`](types.md#sierracontractentrypointfields)[] | +| `EXTERNAL` | [`SierraContractEntryPointFields`](types.md#sierracontractentrypointfields)[] | +| `L1_HANDLER` | [`SierraContractEntryPointFields`](types.md#sierracontractentrypointfields)[] | + +#### Defined in + +[src/types/lib/contract/sierra.ts:50](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/sierra.ts#L50) + +--- + +### SierraContractEntryPointFields + +Ƭ **SierraContractEntryPointFields**: `Object` + +#### Type declaration + +| Name | Type | +| :------------- | :------- | +| `selector` | `string` | +| `function_idx` | `number` | + +#### Defined in + +[src/types/lib/contract/sierra.ts:56](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/sierra.ts#L56) + +--- + +### RpcProviderOptions + +Ƭ **RpcProviderOptions**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------------------------------- | :------------------------------------------------------------------------------------------ | +| `nodeUrl?` | `string` \| [`NetworkName`](../enums/constants.NetworkName.md) | +| `retries?` | `number` | +| `transactionRetryIntervalFallback?` | `number` | +| `headers?` | `object` | +| `blockIdentifier?` | [`BlockIdentifier`](types.md#blockidentifier) | +| `chainId?` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | +| `specVersion?` | `string` | +| `default?` | `boolean` | +| `waitMode?` | `boolean` | +| `baseFetch?` | `WindowOrWorkerGlobalScope`[``"fetch"``] | +| `feeMarginPercentage?` | \{ `l1BoundMaxAmount`: `number` ; `l1BoundMaxPricePerUnit`: `number` ; `maxFee`: `number` } | +| `feeMarginPercentage.l1BoundMaxAmount` | `number` | +| `feeMarginPercentage.l1BoundMaxPricePerUnit` | `number` | +| `feeMarginPercentage.maxFee` | `number` | +| `batch?` | `false` \| `number` | + +#### Defined in + +[src/types/provider/configuration.ts:6](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/configuration.ts#L6) + +--- + +### BlockWithTxHashes + +Ƭ **BlockWithTxHashes**: `Merge`<[`BlockWithTxHashes`](types.RPC.RPCSPEC06.md#blockwithtxhashes), [`BlockWithTxHashes`](types.RPC.RPCSPEC07.API.md#blockwithtxhashes)\> + +#### Defined in + +[src/types/provider/spec.ts:101](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/spec.ts#L101) + +--- + +### ContractClassPayload + +Ƭ **ContractClassPayload**: `Merge`<[`ContractClass`](types.RPC.RPCSPEC06.md#contractclass), [`ContractClass`](types.RPC.RPCSPEC07.API.md#contractclass)\> + +#### Defined in + +[src/types/provider/spec.ts:102](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/spec.ts#L102) + +--- + +### FeeEstimate + +Ƭ **FeeEstimate**: `Merge`<[`FEE_ESTIMATE`](types.RPC.RPCSPEC06.SPEC.md#fee_estimate), [`FEE_ESTIMATE`](types.RPC.RPCSPEC07.API.SPEC.md#fee_estimate)\> + +#### Defined in + +[src/types/provider/spec.ts:104](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/spec.ts#L104) + +--- + +### TransactionReceipt + +Ƭ **TransactionReceipt**: `Merge`<[`TransactionReceipt`](types.RPC.RPCSPEC06.md#transactionreceipt), [`TransactionReceipt`](types.RPC.RPCSPEC07.API.md#transactionreceipt)\> + +#### Defined in + +[src/types/provider/spec.ts:110](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/spec.ts#L110) + +--- + +### GetBlockResponse + +Ƭ **GetBlockResponse**: [`PendingBlock`](types.md#pendingblock) \| [`Block`](types.md#block) + +#### Defined in + +[src/types/provider/response.ts:42](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L42) + +--- + +### PendingBlock + +Ƭ **PendingBlock**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------ | :--------------- | +| `status` | `"PENDING"` | +| `parent_hash` | `BLOCK_HASH` | +| `timestamp` | `number` | +| `sequencer_address` | `FELT` | +| `l1_gas_price` | `RESOURCE_PRICE` | +| `starknet_version` | `string` | +| `transactions` | `TXN_HASH`[] | + +#### Defined in + +[src/types/provider/response.ts:44](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L44) + +--- + +### Block + +Ƭ **Block**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------ | :------------------------------------------------------- | +| `status` | `"ACCEPTED_ON_L2"` \| `"ACCEPTED_ON_L1"` \| `"REJECTED"` | +| `block_hash` | `BLOCK_HASH` | +| `parent_hash` | `BLOCK_HASH` | +| `block_number` | `BLOCK_NUMBER` | +| `new_root` | `FELT` | +| `timestamp` | `number` | +| `sequencer_address` | `FELT` | +| `l1_gas_price` | `RESOURCE_PRICE` | +| `starknet_version` | `string` | +| `transactions` | `TXN_HASH`[] | + +#### Defined in + +[src/types/provider/response.ts:54](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L54) + +--- + +### RevertedTransactionReceiptResponse + +Ƭ **RevertedTransactionReceiptResponse**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------- | :--------------------------------------------------------------------------- | +| `type?` | [`TransactionType`](types.md#transactiontype-1) \| `any` | +| `execution_status` | typeof [`REVERTED`](types.md#reverted) \| `any` | +| `finality_status` | [`TransactionFinalityStatus`](types.md#transactionfinalitystatus-1) \| `any` | +| `status?` | [`TransactionStatus`](types.md#transactionstatus-1) | +| `actual_fee` | `string` | +| `block_hash?` | `string` | +| `block_number?` | [`BlockNumber`](types.md#blocknumber) | +| `transaction_hash` | `string` | +| `transaction_index?` | `number` | +| `messages_sent` | [`MessageToL1`](../interfaces/types.MessageToL1.md)[] | +| `events` | `any`[] | +| `revert_reason?` | `string` | + +#### Defined in + +[src/types/provider/response.ts:72](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L72) + +--- + +### RejectedTransactionReceiptResponse + +Ƭ **RejectedTransactionReceiptResponse**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------------------------------- | :------------------------------------------------ | +| `status` | typeof [`REJECTED`](types.md#rejected) | +| `transaction_failure_reason` | \{ `code`: `string` ; `error_message`: `string` } | +| `transaction_failure_reason.code` | `string` | +| `transaction_failure_reason.error_message` | `string` | + +#### Defined in + +[src/types/provider/response.ts:87](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L87) + +--- + +### GetTxReceiptResponseWithoutHelper + +Ƭ **GetTxReceiptResponseWithoutHelper**: [`SuccessfulTransactionReceiptResponse`](types.md#successfultransactionreceiptresponse) \| [`RevertedTransactionReceiptResponse`](types.md#revertedtransactionreceiptresponse) \| [`RejectedTransactionReceiptResponse`](types.md#rejectedtransactionreceiptresponse) + +#### Defined in + +[src/types/provider/response.ts:95](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L95) + +--- + +### SuccessfulTransactionReceiptResponse + +Ƭ **SuccessfulTransactionReceiptResponse**: [`InvokeTransactionReceiptResponse`](types.md#invoketransactionreceiptresponse) \| [`DeployTransactionReceiptResponse`](types.md#deploytransactionreceiptresponse) \| [`DeclareTransactionReceiptResponse`](types.md#declaretransactionreceiptresponse) + +#### Defined in + +[src/types/provider/response.ts:100](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L100) + +--- + +### GetTransactionResponse + +Ƭ **GetTransactionResponse**: `TransactionWithHash` + +#### Defined in + +[src/types/provider/response.ts:105](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L105) + +--- + +### InvokeTransactionReceiptResponse + +Ƭ **InvokeTransactionReceiptResponse**: `INVOKE_TXN_RECEIPT` \| `PENDING_INVOKE_TXN_RECEIPT` + +#### Defined in + +[src/types/provider/response.ts:107](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L107) + +--- + +### DeclareTransactionReceiptResponse + +Ƭ **DeclareTransactionReceiptResponse**: `DECLARE_TXN_RECEIPT` \| `PENDING_DECLARE_TXN_RECEIPT` + +#### Defined in + +[src/types/provider/response.ts:108](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L108) + +--- + +### DeployTransactionReceiptResponse + +Ƭ **DeployTransactionReceiptResponse**: [`InvokeTransactionReceiptResponse`](types.md#invoketransactionreceiptresponse) + +#### Defined in + +[src/types/provider/response.ts:109](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L109) + +--- + +### DeployAccountTransactionReceiptResponse + +Ƭ **DeployAccountTransactionReceiptResponse**: `DEPLOY_ACCOUNT_TXN_RECEIPT` \| `PENDING_DEPLOY_ACCOUNT_TXN_RECEIPT` + +#### Defined in + +[src/types/provider/response.ts:110](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L110) + +--- + +### L1HandlerTransactionReceiptResponse + +Ƭ **L1HandlerTransactionReceiptResponse**: `L1_HANDLER_TXN_RECEIPT` \| `PENDING_L1_HANDLER_TXN_RECEIPT` + +#### Defined in + +[src/types/provider/response.ts:113](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L113) + +--- + +### EstimateFeeResponseBulk + +Ƭ **EstimateFeeResponseBulk**: [`EstimateFeeResponse`](../interfaces/types.EstimateFeeResponse.md)[] + +#### Defined in + +[src/types/provider/response.ts:128](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L128) + +--- + +### InvokeFunctionResponse + +Ƭ **InvokeFunctionResponse**: `InvokedTransaction` + +#### Defined in + +[src/types/provider/response.ts:130](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L130) + +--- + +### DeclareContractResponse + +Ƭ **DeclareContractResponse**: `DeclaredTransaction` + +#### Defined in + +[src/types/provider/response.ts:132](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L132) + +--- + +### CallContractResponse + +Ƭ **CallContractResponse**: `string`[] + +#### Defined in + +[src/types/provider/response.ts:134](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L134) + +--- + +### Storage + +Ƭ **Storage**: `FELT` + +#### Defined in + +[src/types/provider/response.ts:136](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L136) + +--- + +### Nonce + +Ƭ **Nonce**: `string` + +#### Defined in + +[src/types/provider/response.ts:138](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L138) + +--- + +### SIMULATION_FLAG + +Ƭ **SIMULATION_FLAG**: `Merge`<[`SIMULATION_FLAG`](types.RPC.RPCSPEC06.SPEC.md#simulation_flag), [`SIMULATION_FLAG`](types.RPC.RPCSPEC07.API.SPEC.md#simulation_flag)\> + +#### Defined in + +[src/types/provider/spec.ts:60](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/spec.ts#L60) + +--- + +### SimulationFlags + +Ƭ **SimulationFlags**: [`SIMULATION_FLAG`](types.md#simulation_flag)[] + +#### Defined in + +[src/types/provider/response.ts:141](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L141) + +--- + +### SimulatedTransaction + +Ƭ **SimulatedTransaction**: `SimulateTransaction` & \{ `suggestedMaxFee`: `bigint` ; `resourceBounds`: `ResourceBounds` } + +#### Defined in + +[src/types/provider/response.ts:143](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L143) + +--- + +### SimulateTransactionResponse + +Ƭ **SimulateTransactionResponse**: [`SimulatedTransaction`](types.md#simulatedtransaction)[] + +#### Defined in + +[src/types/provider/response.ts:148](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L148) + +--- + +### StateUpdateResponse + +Ƭ **StateUpdateResponse**: [`StateUpdate`](types.md#stateupdate) \| [`PendingStateUpdate`](types.md#pendingstateupdate) + +#### Defined in + +[src/types/provider/response.ts:150](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L150) + +--- + +### StateUpdate + +Ƭ **StateUpdate**: `STATE_UPDATE` + +#### Defined in + +[src/types/provider/response.ts:151](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L151) + +--- + +### PendingStateUpdate + +Ƭ **PendingStateUpdate**: `PENDING_STATE_UPDATE` + +#### Defined in + +[src/types/provider/response.ts:152](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L152) + +--- + +### ContractClassResponse + +Ƭ **ContractClassResponse**: [`LegacyContractClass`](types.md#legacycontractclass) \| `Omit`<[`CompiledSierra`](types.md#compiledsierra), `"sierra_program_debug_info"`\> + +Standardized type + +Cairo0 program compressed and Cairo1 sierra_program decompressed + +abi Abi + +CompiledSierra without '.sierra_program_debug_info' + +#### Defined in + +[src/types/provider/response.ts:163](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/provider/response.ts#L163) + +--- + +### UniversalSuggestedFee + +Ƭ **UniversalSuggestedFee**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :------------------------------------------------------------ | +| `maxFee` | [`BigNumberish`](types.md#bignumberish) | +| `resourceBounds` | [`ResourceBounds`](types.RPC.RPCSPEC07.API.md#resourcebounds) | + +#### Defined in + +[src/types/account.ts:17](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L17) + +--- + +### EstimateFeeBulk + +Ƭ **EstimateFeeBulk**: [`EstimateFee`](../interfaces/types.EstimateFee.md)[] + +#### Defined in + +[src/types/account.ts:22](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L22) + +--- + +### AccountInvocationsFactoryDetails + +Ƭ **AccountInvocationsFactoryDetails**: \{ `versions`: \`$\{ETransactionVersion}\`[] ; `nonce?`: [`BigNumberish`](types.md#bignumberish) ; `blockIdentifier?`: [`BlockIdentifier`](types.md#blockidentifier) ; `skipValidate?`: `boolean` } & `Partial`<[`V3TransactionDetails`](types.md#v3transactiondetails)\> + +#### Defined in + +[src/types/account.ts:25](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L25) + +--- + +### MultiDeployContractResponse + +Ƭ **MultiDeployContractResponse**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :--------- | +| `contract_address` | `string`[] | +| `transaction_hash` | `string` | + +#### Defined in + +[src/types/account.ts:53](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L53) + +--- + +### DeployContractUDCResponse + +Ƭ **DeployContractUDCResponse**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :--------- | +| `contract_address` | `string` | +| `transaction_hash` | `string` | +| `address` | `string` | +| `deployer` | `string` | +| `unique` | `string` | +| `classHash` | `string` | +| `calldata_len` | `string` | +| `calldata` | `string`[] | +| `salt` | `string` | + +#### Defined in + +[src/types/account.ts:58](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L58) + +--- + +### DeclareDeployUDCResponse + +Ƭ **DeclareDeployUDCResponse**: `Object` + +#### Type declaration + +| Name | Type | +| :-------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `declare` | \{ `class_hash`: [`BigNumberish`](types.md#bignumberish) } & `Partial`<[`DeclareTransactionReceiptResponse`](types.md#declaretransactionreceiptresponse)\> | +| `deploy` | [`DeployContractUDCResponse`](types.md#deploycontractudcresponse) | + +#### Defined in + +[src/types/account.ts:70](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L70) + +--- + +### SimulateTransactionDetails + +Ƭ **SimulateTransactionDetails**: \{ `nonce?`: [`BigNumberish`](types.md#bignumberish) ; `blockIdentifier?`: [`BlockIdentifier`](types.md#blockidentifier) ; `skipValidate?`: `boolean` ; `skipExecute?`: `boolean` } & `Partial`<[`V3TransactionDetails`](types.md#v3transactiondetails)\> + +#### Defined in + +[src/types/account.ts:77](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L77) + +--- + +### EstimateFeeAction + +Ƭ **EstimateFeeAction**: \{ `type`: typeof [`INVOKE`](types.md#invoke) ; `payload`: [`AllowArray`](types.md#allowarray)<[`Call`](types.md#call)\> } \| \{ `type`: typeof [`DECLARE`](types.md#declare) ; `payload`: [`DeclareContractPayload`](types.md#declarecontractpayload) } \| \{ `type`: typeof [`DEPLOY_ACCOUNT`](types.md#deploy_account) ; `payload`: [`DeployAccountContractPayload`](types.md#deployaccountcontractpayload) } \| \{ `type`: typeof [`DEPLOY`](types.md#deploy) ; `payload`: [`UniversalDeployerContractPayload`](types.md#universaldeployercontractpayload) } + +#### Defined in + +[src/types/account.ts:84](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L84) + +--- + +### StarkProfile + +Ƭ **StarkProfile**: `Object` + +#### Type declaration + +| Name | Type | +| :------------------- | :-------- | +| `name?` | `string` | +| `profilePicture?` | `string` | +| `discord?` | `string` | +| `twitter?` | `string` | +| `github?` | `string` | +| `proofOfPersonhood?` | `boolean` | + +#### Defined in + +[src/types/account.ts:102](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/account.ts#L102) + +--- + +### CairoEnum + +Ƭ **CairoEnum**: [`CairoCustomEnum`](../classes/CairoCustomEnum.md) \| [`CairoOption`](../classes/CairoOption.md)<`any`\> \| [`CairoResult`](../classes/CairoResult.md)<`any`, `any`\> + +#### Defined in + +[src/types/cairoEnum.ts:3](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/cairoEnum.ts#L3) + +--- + +### ValidateType + +Ƭ **ValidateType**: `ValuesType` + +#### Defined in + +[src/types/calldata.ts:3](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/calldata.ts#L3) + +[src/types/calldata.ts:9](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/calldata.ts#L9) + +--- + +### Uint + +Ƭ **Uint**: `ValuesType` + +#### Defined in + +[src/types/calldata.ts:11](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/calldata.ts#L11) + +[src/types/calldata.ts:21](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/calldata.ts#L21) + +--- + +### Literal + +Ƭ **Literal**: `ValuesType` + +#### Defined in + +[src/types/calldata.ts:23](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/calldata.ts#L23) + +[src/types/calldata.ts:30](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/calldata.ts#L30) + +--- + +### AsyncContractFunction + +Ƭ **AsyncContractFunction**<`T`\>: (...`args`: [`ArgsOrCalldataWithOptions`](types.md#argsorcalldatawithoptions)) => `Promise`<`T`\> + +#### Type parameters + +| Name | Type | +| :--- | :---- | +| `T` | `any` | + +#### Type declaration + +▸ (`...args`): `Promise`<`T`\> + +##### Parameters + +| Name | Type | +| :-------- | :---------------------------------------------------------------- | +| `...args` | [`ArgsOrCalldataWithOptions`](types.md#argsorcalldatawithoptions) | + +##### Returns + +`Promise`<`T`\> + +#### Defined in + +[src/types/contract.ts:13](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/contract.ts#L13) + +--- + +### ContractFunction + +Ƭ **ContractFunction**: (...`args`: [`ArgsOrCalldataWithOptions`](types.md#argsorcalldatawithoptions)) => `any` + +#### Type declaration + +▸ (`...args`): `any` + +##### Parameters + +| Name | Type | +| :-------- | :---------------------------------------------------------------- | +| `...args` | [`ArgsOrCalldataWithOptions`](types.md#argsorcalldatawithoptions) | + +##### Returns + +`any` + +#### Defined in + +[src/types/contract.ts:14](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/contract.ts#L14) + +--- + +### Result + +Ƭ **Result**: \{ `[key: string]`: `any`; } \| [`Result`](types.md#result)[] \| `bigint` \| `string` \| `boolean` \| [`CairoEnum`](types.md#cairoenum) + +#### Defined in + +[src/types/contract.ts:16](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/contract.ts#L16) + +--- + +### ArgsOrCalldata + +Ƭ **ArgsOrCalldata**: [`RawArgsArray`](types.md#rawargsarray) \| [[`Calldata`](types.md#calldata)] \| [`Calldata`](types.md#calldata) + +#### Defined in + +[src/types/contract.ts:26](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/contract.ts#L26) + +--- + +### ArgsOrCalldataWithOptions + +Ƭ **ArgsOrCalldataWithOptions**: [`ArgsOrCalldata`](types.md#argsorcalldata) & [`ContractOptions`](types.md#contractoptions) + +#### Defined in + +[src/types/contract.ts:27](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/contract.ts#L27) + +--- + +### ContractOptions + +Ƭ **ContractOptions**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :-------------------------------------------- | +| `blockIdentifier?` | [`BlockIdentifier`](types.md#blockidentifier) | +| `parseRequest?` | `boolean` | +| `parseResponse?` | `boolean` | +| `formatResponse?` | \{ `[key: string]`: `any`; } | +| `maxFee?` | [`BigNumberish`](types.md#bignumberish) | +| `nonce?` | [`BigNumberish`](types.md#bignumberish) | +| `signature?` | [`Signature`](types.md#signature) | +| `addressSalt?` | `string` | + +#### Defined in + +[src/types/contract.ts:28](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/contract.ts#L28) + +--- + +### CallOptions + +Ƭ **CallOptions**: `Pick`<[`ContractOptions`](types.md#contractoptions), `"blockIdentifier"` \| `"parseRequest"` \| `"parseResponse"` \| `"formatResponse"`\> + +#### Defined in + +[src/types/contract.ts:39](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/contract.ts#L39) + +--- + +### InvokeOptions + +Ƭ **InvokeOptions**: `Pick`<[`ContractOptions`](types.md#contractoptions), `"maxFee"` \| `"nonce"` \| `"signature"` \| `"parseRequest"`\> + +#### Defined in + +[src/types/contract.ts:44](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/contract.ts#L44) + +--- + +### ParsedEvent + +Ƭ **ParsedEvent**: \{ `[name: string]`: [`ParsedStruct`](types.md#parsedstruct); } & \{ `block_hash?`: [`BlockHash`](types.RPC.RPCSPEC07.API.md#blockhash) ; `block_number?`: [`BlockNumber`](types.md#blocknumber) ; `transaction_hash?`: [`TransactionHash`](types.RPC.RPCSPEC07.API.md#transactionhash) } + +#### Defined in + +[src/types/contract.ts:49](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/contract.ts#L49) + +--- + +### ParsedEvents + +Ƭ **ParsedEvents**: [`ParsedEvent`](types.md#parsedevent)[] + +#### Defined in + +[src/types/contract.ts:55](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/contract.ts#L55) + +--- + +### RPC_ERROR_SET + +Ƭ **RPC_ERROR_SET**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------------------------- | :------------------------------------------------------------------------------------------------------------------------- | +| `FAILED_TO_RECEIVE_TXN` | [`FAILED_TO_RECEIVE_TXN`](../interfaces/types.RPC.RPCSPEC07.API.Errors.FAILED_TO_RECEIVE_TXN.md) | +| `NO_TRACE_AVAILABLE` | [`NO_TRACE_AVAILABLE`](../interfaces/types.RPC.RPCSPEC07.API.Errors.NO_TRACE_AVAILABLE.md) | +| `CONTRACT_NOT_FOUND` | [`CONTRACT_NOT_FOUND`](../interfaces/types.RPC.RPCSPEC07.API.Errors.CONTRACT_NOT_FOUND.md) | +| `BLOCK_NOT_FOUND` | [`BLOCK_NOT_FOUND`](../interfaces/types.RPC.RPCSPEC07.API.Errors.BLOCK_NOT_FOUND.md) | +| `INVALID_TXN_INDEX` | [`INVALID_TXN_INDEX`](../interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_TXN_INDEX.md) | +| `CLASS_HASH_NOT_FOUND` | [`CLASS_HASH_NOT_FOUND`](../interfaces/types.RPC.RPCSPEC07.API.Errors.CLASS_HASH_NOT_FOUND.md) | +| `TXN_HASH_NOT_FOUND` | [`TXN_HASH_NOT_FOUND`](../interfaces/types.RPC.RPCSPEC07.API.Errors.TXN_HASH_NOT_FOUND.md) | +| `PAGE_SIZE_TOO_BIG` | [`PAGE_SIZE_TOO_BIG`](../interfaces/types.RPC.RPCSPEC07.API.Errors.PAGE_SIZE_TOO_BIG.md) | +| `NO_BLOCKS` | [`NO_BLOCKS`](../interfaces/types.RPC.RPCSPEC07.API.Errors.NO_BLOCKS.md) | +| `INVALID_CONTINUATION_TOKEN` | [`INVALID_CONTINUATION_TOKEN`](../interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_CONTINUATION_TOKEN.md) | +| `TOO_MANY_KEYS_IN_FILTER` | [`TOO_MANY_KEYS_IN_FILTER`](../interfaces/types.RPC.RPCSPEC07.API.Errors.TOO_MANY_KEYS_IN_FILTER.md) | +| `CONTRACT_ERROR` | [`CONTRACT_ERROR`](../interfaces/types.RPC.RPCSPEC07.API.Errors.CONTRACT_ERROR.md) | +| `TRANSACTION_EXECUTION_ERROR` | [`TRANSACTION_EXECUTION_ERROR`](../interfaces/types.RPC.RPCSPEC07.API.Errors.TRANSACTION_EXECUTION_ERROR.md) | +| `CLASS_ALREADY_DECLARED` | [`CLASS_ALREADY_DECLARED`](../interfaces/types.RPC.RPCSPEC07.API.Errors.CLASS_ALREADY_DECLARED.md) | +| `INVALID_TRANSACTION_NONCE` | [`INVALID_TRANSACTION_NONCE`](../interfaces/types.RPC.RPCSPEC07.API.Errors.INVALID_TRANSACTION_NONCE.md) | +| `INSUFFICIENT_MAX_FEE` | [`INSUFFICIENT_MAX_FEE`](../interfaces/types.RPC.RPCSPEC07.API.Errors.INSUFFICIENT_MAX_FEE.md) | +| `INSUFFICIENT_ACCOUNT_BALANCE` | [`INSUFFICIENT_ACCOUNT_BALANCE`](../interfaces/types.RPC.RPCSPEC07.API.Errors.INSUFFICIENT_ACCOUNT_BALANCE.md) | +| `VALIDATION_FAILURE` | [`VALIDATION_FAILURE`](../interfaces/types.RPC.RPCSPEC07.API.Errors.VALIDATION_FAILURE.md) | +| `COMPILATION_FAILED` | [`COMPILATION_FAILED`](../interfaces/types.RPC.RPCSPEC07.API.Errors.COMPILATION_FAILED.md) | +| `CONTRACT_CLASS_SIZE_IS_TOO_LARGE` | [`CONTRACT_CLASS_SIZE_IS_TOO_LARGE`](../interfaces/types.RPC.RPCSPEC07.API.Errors.CONTRACT_CLASS_SIZE_IS_TOO_LARGE.md) | +| `NON_ACCOUNT` | [`NON_ACCOUNT`](../interfaces/types.RPC.RPCSPEC07.API.Errors.NON_ACCOUNT.md) | +| `DUPLICATE_TX` | [`DUPLICATE_TX`](../interfaces/types.RPC.RPCSPEC07.API.Errors.DUPLICATE_TX.md) | +| `COMPILED_CLASS_HASH_MISMATCH` | [`COMPILED_CLASS_HASH_MISMATCH`](../interfaces/types.RPC.RPCSPEC07.API.Errors.COMPILED_CLASS_HASH_MISMATCH.md) | +| `UNSUPPORTED_TX_VERSION` | [`UNSUPPORTED_TX_VERSION`](../interfaces/types.RPC.RPCSPEC07.API.Errors.UNSUPPORTED_TX_VERSION.md) | +| `UNSUPPORTED_CONTRACT_CLASS_VERSION` | [`UNSUPPORTED_CONTRACT_CLASS_VERSION`](../interfaces/types.RPC.RPCSPEC07.API.Errors.UNSUPPORTED_CONTRACT_CLASS_VERSION.md) | +| `UNEXPECTED_ERROR` | [`UNEXPECTED_ERROR`](../interfaces/types.RPC.RPCSPEC07.API.Errors.UNEXPECTED_ERROR.md) | + +#### Defined in + +[src/types/errors.ts:4](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/errors.ts#L4) + +--- + +### RPC_ERROR + +Ƭ **RPC_ERROR**: [`RPC_ERROR_SET`](types.md#rpc_error_set)[keyof [`RPC_ERROR_SET`](types.md#rpc_error_set)] + +#### Defined in + +[src/types/errors.ts:33](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/errors.ts#L33) + +--- + +### InvocationsSignerDetails + +Ƭ **InvocationsSignerDetails**: [`V2InvocationsSignerDetails`](types.md#v2invocationssignerdetails) \| [`V3InvocationsSignerDetails`](types.md#v3invocationssignerdetails) & \{ `version`: \`$\{ETransactionVersion}\` ; `skipValidate?`: `boolean` } + +#### Defined in + +[src/types/signer.ts:11](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/signer.ts#L11) + +--- + +### V2InvocationsSignerDetails + +Ƭ **V2InvocationsSignerDetails**: `Object` + +#### Type declaration + +| Name | Type | +| :-------------- | :--------------------------------------------------------- | +| `walletAddress` | `string` | +| `cairoVersion` | [`CairoVersion`](types.md#cairoversion) | +| `chainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | +| `nonce` | [`BigNumberish`](types.md#bignumberish) | +| `maxFee` | [`BigNumberish`](types.md#bignumberish) | +| `version` | \`$\{ETransactionVersion2}\` | + +#### Defined in + +[src/types/signer.ts:16](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/signer.ts#L16) + +--- + +### V3InvocationsSignerDetails + +Ƭ **V3InvocationsSignerDetails**: [`V3TransactionDetails`](types.md#v3transactiondetails) & \{ `walletAddress`: `string` ; `cairoVersion`: [`CairoVersion`](types.md#cairoversion) ; `chainId`: [`StarknetChainId`](../enums/constants.StarknetChainId.md) ; `version`: \`$\{ETransactionVersion3}\` } + +#### Defined in + +[src/types/signer.ts:25](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/signer.ts#L25) + +--- + +### DeclareSignerDetails + +Ƭ **DeclareSignerDetails**: [`V3DeclareSignerDetails`](types.md#v3declaresignerdetails) \| [`V2DeclareSignerDetails`](types.md#v2declaresignerdetails) & \{ `version`: \`$\{ETransactionVersion}\` } + +#### Defined in + +[src/types/signer.ts:32](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/signer.ts#L32) + +--- + +### V2DeclareSignerDetails + +Ƭ **V2DeclareSignerDetails**: `Required`<[`InvocationsDetails`](types.md#invocationsdetails)\> & \{ `classHash`: `string` ; `compiledClassHash?`: `string` ; `senderAddress`: `string` ; `chainId`: [`StarknetChainId`](../enums/constants.StarknetChainId.md) ; `version`: \`$\{ETransactionVersion2}\` } + +#### Defined in + +[src/types/signer.ts:36](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/signer.ts#L36) + +--- + +### V3DeclareSignerDetails + +Ƭ **V3DeclareSignerDetails**: [`V3TransactionDetails`](types.md#v3transactiondetails) & \{ `classHash`: `string` ; `compiledClassHash`: `string` ; `senderAddress`: `string` ; `chainId`: [`StarknetChainId`](../enums/constants.StarknetChainId.md) ; `version`: \`$\{ETransactionVersion3}\` } + +#### Defined in + +[src/types/signer.ts:44](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/signer.ts#L44) + +--- + +### DeployAccountSignerDetails + +Ƭ **DeployAccountSignerDetails**: [`V2DeployAccountSignerDetails`](types.md#v2deployaccountsignerdetails) \| [`V3DeployAccountSignerDetails`](types.md#v3deployaccountsignerdetails) + +#### Defined in + +[src/types/signer.ts:52](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/signer.ts#L52) + +--- + +### V2DeployAccountSignerDetails + +Ƭ **V2DeployAccountSignerDetails**: `Required`<[`DeployAccountContractPayload`](types.md#deployaccountcontractpayload)\> & `Required`<[`InvocationsDetails`](types.md#invocationsdetails)\> & \{ `contractAddress`: [`BigNumberish`](types.md#bignumberish) ; `chainId`: [`StarknetChainId`](../enums/constants.StarknetChainId.md) ; `version`: \`$\{ETransactionVersion2}\` } + +#### Defined in + +[src/types/signer.ts:56](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/signer.ts#L56) + +--- + +### V3DeployAccountSignerDetails + +Ƭ **V3DeployAccountSignerDetails**: `Required`<[`DeployAccountContractPayload`](types.md#deployaccountcontractpayload)\> & [`V3TransactionDetails`](types.md#v3transactiondetails) & \{ `contractAddress`: [`BigNumberish`](types.md#bignumberish) ; `chainId`: [`StarknetChainId`](../enums/constants.StarknetChainId.md) ; `version`: \`$\{ETransactionVersion3}\` } + +#### Defined in + +[src/types/signer.ts:63](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/signer.ts#L63) + +--- + +### LedgerPathCalculation + +Ƭ **LedgerPathCalculation**: (`accountId`: `number`, `applicationName`: `string`) => `Uint8Array` + +#### Type declaration + +▸ (`accountId`, `applicationName`): `Uint8Array` + +##### Parameters + +| Name | Type | +| :---------------- | :------- | +| `accountId` | `number` | +| `applicationName` | `string` | + +##### Returns + +`Uint8Array` + +#### Defined in + +[src/types/signer.ts:70](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/signer.ts#L70) + +--- + +### TransactionStatusReceiptSets + +Ƭ **TransactionStatusReceiptSets**: `Object` + +#### Type declaration + +| Name | Type | +| :--------- | :-------------------------------------------------------------------------------------- | +| `success` | [`SuccessfulTransactionReceiptResponse`](types.md#successfultransactionreceiptresponse) | +| `reverted` | [`RevertedTransactionReceiptResponse`](types.md#revertedtransactionreceiptresponse) | +| `rejected` | [`RejectedTransactionReceiptResponse`](types.md#rejectedtransactionreceiptresponse) | +| `error` | `Error` | + +#### Defined in + +[src/types/transactionReceipt.ts:7](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/transactionReceipt.ts#L7) + +--- + +### TransactionReceiptStatus + +Ƭ **TransactionReceiptStatus**: keyof [`TransactionStatusReceiptSets`](types.md#transactionstatusreceiptsets) + +#### Defined in + +[src/types/transactionReceipt.ts:13](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/transactionReceipt.ts#L13) + +--- + +### TransactionReceiptValue + +Ƭ **TransactionReceiptValue**: [`TransactionStatusReceiptSets`](types.md#transactionstatusreceiptsets)[[`TransactionReceiptStatus`](types.md#transactionreceiptstatus)] + +#### Defined in + +[src/types/transactionReceipt.ts:14](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/transactionReceipt.ts#L14) + +--- + +### TransactionReceiptCallbacksDefined + +Ƭ **TransactionReceiptCallbacksDefined**: \{ [key in TransactionReceiptStatus]: Function } + +#### Defined in + +[src/types/transactionReceipt.ts:16](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/transactionReceipt.ts#L16) + +--- + +### TransactionReceiptCallbacksDefault + +Ƭ **TransactionReceiptCallbacksDefault**: `Partial`<[`TransactionReceiptCallbacksDefined`](types.md#transactionreceiptcallbacksdefined)\> & \{ `_`: () => `void` } + +#### Defined in + +[src/types/transactionReceipt.ts:19](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/transactionReceipt.ts#L19) + +--- + +### TransactionReceiptCallbacks + +Ƭ **TransactionReceiptCallbacks**: [`TransactionReceiptCallbacksDefined`](types.md#transactionreceiptcallbacksdefined) \| [`TransactionReceiptCallbacksDefault`](types.md#transactionreceiptcallbacksdefault) + +#### Defined in + +[src/types/transactionReceipt.ts:22](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/transactionReceipt.ts#L22) + +--- + +### TransactionReceiptUtilityInterface + +Ƭ **TransactionReceiptUtilityInterface**: \{ `statusReceipt`: [`TransactionReceiptStatus`](types.md#transactionreceiptstatus) ; `value`: [`TransactionReceiptValue`](types.md#transactionreceiptvalue) ; `match`: (`callbacks`: [`TransactionReceiptCallbacks`](types.md#transactionreceiptcallbacks)) => `void` } & \{ [key in \`is$\{Capitalize}\`]: Function } + +#### Defined in + +[src/types/transactionReceipt.ts:26](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/transactionReceipt.ts#L26) + +## Variables + +### TransactionType + +• `Const` **TransactionType**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :------------------ | +| `DECLARE` | `"DECLARE"` | +| `DEPLOY` | `"DEPLOY"` | +| `DEPLOY_ACCOUNT` | `"DEPLOY_ACCOUNT"` | +| `INVOKE` | `"INVOKE_FUNCTION"` | + +#### Defined in + +[src/types/lib/index.ts:169](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L169) + +[src/types/lib/index.ts:176](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L176) + +--- + +### TransactionStatus + +• `Const` **TransactionStatus**: `Object` + +new statuses are defined by props: finality_status and execution_status +to be #deprecated + +#### Type declaration + +| Name | Type | +| :--------------- | :----------------- | +| `NOT_RECEIVED` | `"NOT_RECEIVED"` | +| `RECEIVED` | `"RECEIVED"` | +| `ACCEPTED_ON_L2` | `"ACCEPTED_ON_L2"` | +| `ACCEPTED_ON_L1` | `"ACCEPTED_ON_L1"` | +| `REJECTED` | `"REJECTED"` | +| `REVERTED` | `"REVERTED"` | + +#### Defined in + +[src/types/lib/index.ts:182](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L182) + +[src/types/lib/index.ts:191](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L191) + +--- + +### TransactionFinalityStatus + +• `Const` **TransactionFinalityStatus**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :----------------- | +| `NOT_RECEIVED` | `"NOT_RECEIVED"` | +| `RECEIVED` | `"RECEIVED"` | +| `ACCEPTED_ON_L2` | `"ACCEPTED_ON_L2"` | +| `ACCEPTED_ON_L1` | `"ACCEPTED_ON_L1"` | + +#### Defined in + +[src/types/lib/index.ts:193](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L193) + +[src/types/lib/index.ts:200](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L200) + +--- + +### TransactionExecutionStatus + +• `Const` **TransactionExecutionStatus**: `Object` + +#### Type declaration + +| Name | Type | +| :---------- | :------------ | +| `REJECTED` | `"REJECTED"` | +| `REVERTED` | `"REVERTED"` | +| `SUCCEEDED` | `"SUCCEEDED"` | + +#### Defined in + +[src/types/lib/index.ts:202](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L202) + +[src/types/lib/index.ts:208](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L208) + +--- + +### BlockStatus + +• `Const` **BlockStatus**: `Object` + +#### Type declaration + +| Name | Type | +| :--------------- | :----------------- | +| `PENDING` | `"PENDING"` | +| `ACCEPTED_ON_L1` | `"ACCEPTED_ON_L1"` | +| `ACCEPTED_ON_L2` | `"ACCEPTED_ON_L2"` | +| `REJECTED` | `"REJECTED"` | + +#### Defined in + +[src/types/lib/index.ts:210](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L210) + +[src/types/lib/index.ts:217](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L217) + +--- + +### BlockTag + +• `Const` **BlockTag**: `Object` + +#### Type declaration + +| Name | Type | +| :-------- | :---------- | +| `PENDING` | `"pending"` | +| `LATEST` | `"latest"` | + +#### Defined in + +[src/types/lib/index.ts:219](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L219) + +[src/types/lib/index.ts:224](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/index.ts#L224) + +--- + +### EntryPointType + +• `Const` **EntryPointType**: `Object` + +#### Type declaration + +| Name | Type | +| :------------ | :-------------- | +| `EXTERNAL` | `"EXTERNAL"` | +| `L1_HANDLER` | `"L1_HANDLER"` | +| `CONSTRUCTOR` | `"CONSTRUCTOR"` | + +#### Defined in + +[src/types/lib/contract/index.ts:24](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/index.ts#L24) + +[src/types/lib/contract/index.ts:30](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/lib/contract/index.ts#L30) + +--- + +### ValidateType + +• `Const` **ValidateType**: `Object` + +#### Type declaration + +| Name | Type | +| :------- | :--------- | +| `DEPLOY` | `"DEPLOY"` | +| `CALL` | `"CALL"` | +| `INVOKE` | `"INVOKE"` | + +#### Defined in + +[src/types/calldata.ts:3](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/calldata.ts#L3) + +[src/types/calldata.ts:9](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/calldata.ts#L9) + +--- + +### Uint + +• `Const` **Uint**: `Object` + +#### Type declaration + +| Name | Type | +| :----- | :---------------------- | +| `u8` | `"core::integer::u8"` | +| `u16` | `"core::integer::u16"` | +| `u32` | `"core::integer::u32"` | +| `u64` | `"core::integer::u64"` | +| `u128` | `"core::integer::u128"` | +| `u256` | `"core::integer::u256"` | +| `u512` | `"core::integer::u512"` | + +#### Defined in + +[src/types/calldata.ts:11](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/calldata.ts#L11) + +[src/types/calldata.ts:21](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/calldata.ts#L21) + +--- + +### Literal + +• `Const` **Literal**: `Object` + +#### Type declaration + +| Name | Type | +| :---------------- | :------------------------------------------------------------------------------ | +| `ClassHash` | `"core::starknet::class_hash::ClassHash"` | +| `ContractAddress` | `"core::starknet::contract_address::ContractAddress"` | +| `Secp256k1Point` | `"core::starknet::secp256k1::Secp256k1Point"` | +| `U96` | `"core::internal::bounded_int::BoundedInt::<0, 79228162514264337593543950335>"` | + +#### Defined in + +[src/types/calldata.ts:23](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/calldata.ts#L23) + +[src/types/calldata.ts:30](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/calldata.ts#L30) + +--- + +### ETH_ADDRESS + +• `Const` **ETH_ADDRESS**: `"core::starknet::eth_address::EthAddress"` + +#### Defined in + +[src/types/calldata.ts:32](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/calldata.ts#L32) + +--- + +### NON_ZERO_PREFIX + +• `Const` **NON_ZERO_PREFIX**: `"core::zeroable::NonZero::"` + +#### Defined in + +[src/types/calldata.ts:33](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/calldata.ts#L33) + +--- + +### OutsideExecutionTypesV1 + +• `Const` **OutsideExecutionTypesV1**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :------------------------------------------------------------ | +| `StarkNetDomain` | \{ `name`: `string` = 'name'; `type`: `string` = 'felt' }[] | +| `OutsideExecution` | \{ `name`: `string` = 'caller'; `type`: `string` = 'felt' }[] | +| `OutsideCall` | \{ `name`: `string` = 'to'; `type`: `string` = 'felt' }[] | + +#### Defined in + +[src/types/outsideExecution.ts:33](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L33) + +--- + +### OutsideExecutionTypesV2 + +• `Const` **OutsideExecutionTypesV2**: `Object` + +#### Type declaration + +| Name | Type | +| :----------------- | :----------------------------------------------------------------------- | +| `StarknetDomain` | \{ `name`: `string` = 'name'; `type`: `string` = 'shortstring' }[] | +| `OutsideExecution` | \{ `name`: `string` = 'Caller'; `type`: `string` = 'ContractAddress' }[] | +| `Call` | \{ `name`: `string` = 'To'; `type`: `string` = 'ContractAddress' }[] | + +#### Defined in + +[src/types/outsideExecution.ts:55](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/types/outsideExecution.ts#L55) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/uint256.md b/www/versioned_docs/version-6.24.1/API/namespaces/uint256.md new file mode 100644 index 000000000..db87cae26 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/uint256.md @@ -0,0 +1,126 @@ +--- +id: 'uint256' +title: 'Namespace: uint256' +sidebar_label: 'uint256' +sidebar_position: 0 +custom_edit_url: null +--- + +## Variables + +### UINT_128_MAX + +• `Const` **UINT_128_MAX**: `bigint` + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:10](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L10) + +--- + +### UINT_256_MAX + +• `Const` **UINT_256_MAX**: `bigint` + +#### Defined in + +[src/utils/cairoDataTypes/uint256.ts:11](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/cairoDataTypes/uint256.ts#L11) + +## Functions + +### uint256ToBN + +▸ **uint256ToBN**(`uint256`): `bigint` + +Convert Uint256 to bigint +Legacy support Export + +#### Parameters + +| Name | Type | Description | +| :-------- | :------------------------------------------ | :--------------------------------- | +| `uint256` | [`Uint256`](../interfaces/types.Uint256.md) | Uint256 value to convert to bigint | + +#### Returns + +`bigint` + +BigInt representation of the input Uint256 + +**`Example`** + +```typescript +const uint256Value: Uint256 = { low: 1234567890, high: 1 }; +const result = uint256.uint256ToBN(uint256Value); +// result = 340282366920938463463374607433002779346n +``` + +#### Defined in + +[src/utils/uint256.ts:22](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/uint256.ts#L22) + +--- + +### isUint256 + +▸ **isUint256**(`bn`): `boolean` + +Test BigNumberish is in the range[0, 2**256-1] +Legacy support Export + +#### Parameters + +| Name | Type | Description | +| :--- | :-------------------------------------- | :------------ | +| `bn` | [`BigNumberish`](types.md#bignumberish) | value to test | + +#### Returns + +`boolean` + +True if the input value is in the range[0, 2**256-1], false otherwise + +**`Example`** + +```typescript +const result = uint256.isUint256(12345n); +// result = true +const result1 = uint256.isUint256(-1); +// result1 = false +``` + +#### Defined in + +[src/utils/uint256.ts:39](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/uint256.ts#L39) + +--- + +### bnToUint256 + +▸ **bnToUint256**(`bn`): [`Uint256`](../interfaces/types.Uint256.md) + +Convert BigNumberish (string | number | bigint) to Uint256 +Legacy support Export + +#### Parameters + +| Name | Type | Description | +| :--- | :-------------------------------------- | :-------------------------- | +| `bn` | [`BigNumberish`](types.md#bignumberish) | value to convert to Uint256 | + +#### Returns + +[`Uint256`](../interfaces/types.Uint256.md) + +Uint256 object representing the BigNumberish value + +**`Example`** + +```typescript +const result = uint256.bnToUint256(1000000000n); +// result = {"low": "0x3b9aca00", "high": "0x0"} +``` + +#### Defined in + +[src/utils/uint256.ts:54](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/uint256.ts#L54) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/v2hash.md b/www/versioned_docs/version-6.24.1/API/namespaces/v2hash.md new file mode 100644 index 000000000..36b4f0203 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/v2hash.md @@ -0,0 +1,160 @@ +--- +id: 'v2hash' +title: 'Namespace: v2hash' +sidebar_label: 'v2hash' +sidebar_position: 0 +custom_edit_url: null +--- + +## References + +### calculateL2MessageTxHash + +Re-exports [calculateL2MessageTxHash](hash.md#calculatel2messagetxhash) + +## Functions + +### computeHashOnElements + +▸ **computeHashOnElements**(`data`): `string` + +Compute pedersen hash from data + +#### Parameters + +| Name | Type | +| :----- | :---------------------------------------- | +| `data` | [`BigNumberish`](types.md#bignumberish)[] | + +#### Returns + +`string` + +format: hex-string - pedersen hash + +#### Defined in + +[src/utils/hash/transactionHash/v2.ts:17](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/transactionHash/v2.ts#L17) + +--- + +### calculateTransactionHashCommon + +▸ **calculateTransactionHashCommon**(`txHashPrefix`, `version`, `contractAddress`, `entryPointSelector`, `calldata`, `maxFee`, `chainId`, `additionalData?`): `string` + +Calculate transaction pedersen hash for common properties + +Following implementation is based on this python [implementation #](https://github.com/starkware-libs/cairo-lang/blob/b614d1867c64f3fb2cf4a4879348cfcf87c3a5a7/src/starkware/starknet/core/os/transaction_hash/transaction_hash.py) + +#### Parameters + +| Name | Type | Default value | +| :------------------- | :--------------------------------------------------------------------- | :------------ | +| `txHashPrefix` | [`TransactionHashPrefix`](../enums/constants.TransactionHashPrefix.md) | `undefined` | +| `version` | [`BigNumberish`](types.md#bignumberish) | `undefined` | +| `contractAddress` | [`BigNumberish`](types.md#bignumberish) | `undefined` | +| `entryPointSelector` | [`BigNumberish`](types.md#bignumberish) | `undefined` | +| `calldata` | [`RawCalldata`](types.md#rawcalldata) | `undefined` | +| `maxFee` | [`BigNumberish`](types.md#bignumberish) | `undefined` | +| `chainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | `undefined` | +| `additionalData` | [`BigNumberish`](types.md#bignumberish)[] | `[]` | + +#### Returns + +`string` + +format: hex-string + +#### Defined in + +[src/utils/hash/transactionHash/v2.ts:29](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/transactionHash/v2.ts#L29) + +--- + +### calculateDeclareTransactionHash + +▸ **calculateDeclareTransactionHash**(`classHash`, `senderAddress`, `version`, `maxFee`, `chainId`, `nonce`, `compiledClassHash?`): `string` + +Calculate declare transaction hash + +#### Parameters + +| Name | Type | Description | +| :------------------- | :--------------------------------------------------------- | :---------- | +| `classHash` | `string` | hex-string | +| `senderAddress` | [`BigNumberish`](types.md#bignumberish) | - | +| `version` | [`BigNumberish`](types.md#bignumberish) | - | +| `maxFee` | [`BigNumberish`](types.md#bignumberish) | - | +| `chainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | - | +| `nonce` | [`BigNumberish`](types.md#bignumberish) | - | +| `compiledClassHash?` | `string` | hex-string | + +#### Returns + +`string` + +format: hex-string + +#### Defined in + +[src/utils/hash/transactionHash/v2.ts:59](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/transactionHash/v2.ts#L59) + +--- + +### calculateDeployAccountTransactionHash + +▸ **calculateDeployAccountTransactionHash**(`contractAddress`, `classHash`, `constructorCalldata`, `salt`, `version`, `maxFee`, `chainId`, `nonce`): `string` + +Calculate deploy_account transaction hash + +#### Parameters + +| Name | Type | +| :-------------------- | :--------------------------------------------------------- | +| `contractAddress` | [`BigNumberish`](types.md#bignumberish) | +| `classHash` | [`BigNumberish`](types.md#bignumberish) | +| `constructorCalldata` | [`RawCalldata`](types.md#rawcalldata) | +| `salt` | [`BigNumberish`](types.md#bignumberish) | +| `version` | [`BigNumberish`](types.md#bignumberish) | +| `maxFee` | [`BigNumberish`](types.md#bignumberish) | +| `chainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | +| `nonce` | [`BigNumberish`](types.md#bignumberish) | + +#### Returns + +`string` + +format: hex-string + +#### Defined in + +[src/utils/hash/transactionHash/v2.ts:84](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/transactionHash/v2.ts#L84) + +--- + +### calculateTransactionHash + +▸ **calculateTransactionHash**(`contractAddress`, `version`, `calldata`, `maxFee`, `chainId`, `nonce`): `string` + +Calculate invoke transaction hash + +#### Parameters + +| Name | Type | +| :---------------- | :--------------------------------------------------------- | +| `contractAddress` | [`BigNumberish`](types.md#bignumberish) | +| `version` | [`BigNumberish`](types.md#bignumberish) | +| `calldata` | [`RawCalldata`](types.md#rawcalldata) | +| `maxFee` | [`BigNumberish`](types.md#bignumberish) | +| `chainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | +| `nonce` | [`BigNumberish`](types.md#bignumberish) | + +#### Returns + +`string` + +format: hex-string + +#### Defined in + +[src/utils/hash/transactionHash/v2.ts:112](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/transactionHash/v2.ts#L112) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/v3hash.md b/www/versioned_docs/version-6.24.1/API/namespaces/v3hash.md new file mode 100644 index 000000000..6c36e36e1 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/v3hash.md @@ -0,0 +1,231 @@ +--- +id: 'v3hash' +title: 'Namespace: v3hash' +sidebar_label: 'v3hash' +sidebar_position: 0 +custom_edit_url: null +--- + +## Functions + +### hashDAMode + +▸ **hashDAMode**(`nonceDAMode`, `feeDAMode`): `bigint` + +#### Parameters + +| Name | Type | +| :------------ | :-------------------------------------- | +| `nonceDAMode` | [`BigNumberish`](types.md#bignumberish) | +| `feeDAMode` | [`BigNumberish`](types.md#bignumberish) | + +#### Returns + +`bigint` + +#### Defined in + +[src/utils/hash/transactionHash/v3.ts:23](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/transactionHash/v3.ts#L23) + +--- + +### encodeResourceBoundsL1 + +▸ **encodeResourceBoundsL1**(`bounds`): `bigint` + +Encode the L1&L2 gas limits of a V3 transaction + +#### Parameters + +| Name | Type | Description | +| :------- | :----------------------------------------------------------------------------------- | :------------------------------------------ | +| `bounds` | [`RESOURCE_BOUNDS_MAPPING`](types.RPC.RPCSPEC07.API.SPEC.md#resource_bounds_mapping) | object including the limits for L1 & L2 gas | + +#### Returns + +`bigint` + +encoded data + +#### Defined in + +[src/utils/hash/transactionHash/v3.ts:32](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/transactionHash/v3.ts#L32) + +--- + +### encodeResourceBoundsL2 + +▸ **encodeResourceBoundsL2**(`bounds`): `bigint` + +Encode the L2 bound of a V3 transaction + +#### Parameters + +| Name | Type | Description | +| :------- | :----------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------- | +| `bounds` | [`RESOURCE_BOUNDS_MAPPING`](types.RPC.RPCSPEC07.API.SPEC.md#resource_bounds_mapping) | {l1_gas: {max_amount: u64, max_price_per_unit: u128}, l2_gas: {max_amount: u64, max_price_per_unit: u128}} } | + +#### Returns + +`bigint` + +encoded data + +#### Defined in + +[src/utils/hash/transactionHash/v3.ts:48](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/transactionHash/v3.ts#L48) + +--- + +### hashFeeField + +▸ **hashFeeField**(`tip`, `bounds`): `bigint` + +#### Parameters + +| Name | Type | +| :------- | :----------------------------------------------------------------------------------- | +| `tip` | [`BigNumberish`](types.md#bignumberish) | +| `bounds` | [`RESOURCE_BOUNDS_MAPPING`](types.RPC.RPCSPEC07.API.SPEC.md#resource_bounds_mapping) | + +#### Returns + +`bigint` + +#### Defined in + +[src/utils/hash/transactionHash/v3.ts:56](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/transactionHash/v3.ts#L56) + +--- + +### calculateTransactionHashCommon + +▸ **calculateTransactionHashCommon**(`txHashPrefix`, `version`, `senderAddress`, `chainId`, `nonce`, `tip`, `paymasterData`, `nonceDataAvailabilityMode`, `feeDataAvailabilityMode`, `resourceBounds`, `additionalData?`): `string` + +#### Parameters + +| Name | Type | Default value | +| :-------------------------- | :----------------------------------------------------------------------------------- | :------------ | +| `txHashPrefix` | [`TransactionHashPrefix`](../enums/constants.TransactionHashPrefix.md) | `undefined` | +| `version` | [`BigNumberish`](types.md#bignumberish) | `undefined` | +| `senderAddress` | [`BigNumberish`](types.md#bignumberish) | `undefined` | +| `chainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | `undefined` | +| `nonce` | [`BigNumberish`](types.md#bignumberish) | `undefined` | +| `tip` | [`BigNumberish`](types.md#bignumberish) | `undefined` | +| `paymasterData` | [`BigNumberish`](types.md#bignumberish)[] | `undefined` | +| `nonceDataAvailabilityMode` | [`EDAMode`](types.RPC.RPCSPEC07.API.md#edamode-1) | `undefined` | +| `feeDataAvailabilityMode` | [`EDAMode`](types.RPC.RPCSPEC07.API.md#edamode-1) | `undefined` | +| `resourceBounds` | [`RESOURCE_BOUNDS_MAPPING`](types.RPC.RPCSPEC07.API.SPEC.md#resource_bounds_mapping) | `undefined` | +| `additionalData` | [`BigNumberish`](types.md#bignumberish)[] | `[]` | + +#### Returns + +`string` + +#### Defined in + +[src/utils/hash/transactionHash/v3.ts:62](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/transactionHash/v3.ts#L62) + +--- + +### calculateDeployAccountTransactionHash + +▸ **calculateDeployAccountTransactionHash**(`contractAddress`, `classHash`, `compiledConstructorCalldata`, `salt`, `version`, `chainId`, `nonce`, `nonceDataAvailabilityMode`, `feeDataAvailabilityMode`, `resourceBounds`, `tip`, `paymasterData`): `string` + +Calculate v3 deploy_account transaction hash + +#### Parameters + +| Name | Type | +| :---------------------------- | :----------------------------------------------------------------------------------- | +| `contractAddress` | [`BigNumberish`](types.md#bignumberish) | +| `classHash` | [`BigNumberish`](types.md#bignumberish) | +| `compiledConstructorCalldata` | [`Calldata`](types.md#calldata) | +| `salt` | [`BigNumberish`](types.md#bignumberish) | +| `version` | [`BigNumberish`](types.md#bignumberish) | +| `chainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | +| `nonce` | [`BigNumberish`](types.md#bignumberish) | +| `nonceDataAvailabilityMode` | [`EDAMode`](types.RPC.RPCSPEC07.API.md#edamode-1) | +| `feeDataAvailabilityMode` | [`EDAMode`](types.RPC.RPCSPEC07.API.md#edamode-1) | +| `resourceBounds` | [`RESOURCE_BOUNDS_MAPPING`](types.RPC.RPCSPEC07.API.SPEC.md#resource_bounds_mapping) | +| `tip` | [`BigNumberish`](types.md#bignumberish) | +| `paymasterData` | [`BigNumberish`](types.md#bignumberish)[] | + +#### Returns + +`string` + +format: hex-string + +#### Defined in + +[src/utils/hash/transactionHash/v3.ts:95](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/transactionHash/v3.ts#L95) + +--- + +### calculateDeclareTransactionHash + +▸ **calculateDeclareTransactionHash**(`classHash`, `compiledClassHash`, `senderAddress`, `version`, `chainId`, `nonce`, `accountDeploymentData`, `nonceDataAvailabilityMode`, `feeDataAvailabilityMode`, `resourceBounds`, `tip`, `paymasterData`): `string` + +Calculate v3 declare transaction hash + +#### Parameters + +| Name | Type | +| :-------------------------- | :----------------------------------------------------------------------------------- | +| `classHash` | `string` | +| `compiledClassHash` | `string` | +| `senderAddress` | [`BigNumberish`](types.md#bignumberish) | +| `version` | [`BigNumberish`](types.md#bignumberish) | +| `chainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | +| `nonce` | [`BigNumberish`](types.md#bignumberish) | +| `accountDeploymentData` | [`BigNumberish`](types.md#bignumberish)[] | +| `nonceDataAvailabilityMode` | [`EDAMode`](types.RPC.RPCSPEC07.API.md#edamode-1) | +| `feeDataAvailabilityMode` | [`EDAMode`](types.RPC.RPCSPEC07.API.md#edamode-1) | +| `resourceBounds` | [`RESOURCE_BOUNDS_MAPPING`](types.RPC.RPCSPEC07.API.SPEC.md#resource_bounds_mapping) | +| `tip` | [`BigNumberish`](types.md#bignumberish) | +| `paymasterData` | [`BigNumberish`](types.md#bignumberish)[] | + +#### Returns + +`string` + +format: hex-string + +#### Defined in + +[src/utils/hash/transactionHash/v3.ts:128](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/transactionHash/v3.ts#L128) + +--- + +### calculateInvokeTransactionHash + +▸ **calculateInvokeTransactionHash**(`senderAddress`, `version`, `compiledCalldata`, `chainId`, `nonce`, `accountDeploymentData`, `nonceDataAvailabilityMode`, `feeDataAvailabilityMode`, `resourceBounds`, `tip`, `paymasterData`): `string` + +Calculate v3 invoke transaction hash + +#### Parameters + +| Name | Type | +| :-------------------------- | :----------------------------------------------------------------------------------- | +| `senderAddress` | [`BigNumberish`](types.md#bignumberish) | +| `version` | [`BigNumberish`](types.md#bignumberish) | +| `compiledCalldata` | [`Calldata`](types.md#calldata) | +| `chainId` | [`StarknetChainId`](../enums/constants.StarknetChainId.md) | +| `nonce` | [`BigNumberish`](types.md#bignumberish) | +| `accountDeploymentData` | [`BigNumberish`](types.md#bignumberish)[] | +| `nonceDataAvailabilityMode` | [`EDAMode`](types.RPC.RPCSPEC07.API.md#edamode-1) | +| `feeDataAvailabilityMode` | [`EDAMode`](types.RPC.RPCSPEC07.API.md#edamode-1) | +| `resourceBounds` | [`RESOURCE_BOUNDS_MAPPING`](types.RPC.RPCSPEC07.API.SPEC.md#resource_bounds_mapping) | +| `tip` | [`BigNumberish`](types.md#bignumberish) | +| `paymasterData` | [`BigNumberish`](types.md#bignumberish)[] | + +#### Returns + +`string` + +format: hex-string + +#### Defined in + +[src/utils/hash/transactionHash/v3.ts:161](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/utils/hash/transactionHash/v3.ts#L161) diff --git a/www/versioned_docs/version-6.24.1/API/namespaces/wallet.md b/www/versioned_docs/version-6.24.1/API/namespaces/wallet.md new file mode 100644 index 000000000..33e9a95f8 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/API/namespaces/wallet.md @@ -0,0 +1,325 @@ +--- +id: 'wallet' +title: 'Namespace: wallet' +sidebar_label: 'wallet' +sidebar_position: 0 +custom_edit_url: null +--- + +## Functions + +### requestAccounts + +▸ **requestAccounts**(`swo`, `silent_mode?`): `Promise`<[`Address`](types.RPC.RPCSPEC07.WALLET_API.md#address)[]\> + +Request Permission for wallet account, return addresses that are allowed by user + +#### Parameters + +| Name | Type | Default value | Description | +| :------------- | :--------------------------------------------------------------------------------------------- | :------------ | :----------------------------------------------------------------------- | +| `swo` | [`StarknetWindowObject`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md) | `undefined` | - | +| `silent_mode?` | `boolean` | `false` | false: request user interaction allowance. true: return only pre-allowed | + +#### Returns + +`Promise`<[`Address`](types.RPC.RPCSPEC07.WALLET_API.md#address)[]\> + +allowed accounts addresses + +#### Defined in + +[src/wallet/connect.ts:25](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/connect.ts#L25) + +--- + +### getPermissions + +▸ **getPermissions**(`swo`): `Promise`<[`Permission`](types.RPC.RPCSPEC07.WALLET_API.md#permission-1)[]\> + +Request Permission for wallet account + +#### Parameters + +| Name | Type | +| :---- | :--------------------------------------------------------------------------------------------- | +| `swo` | [`StarknetWindowObject`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md) | + +#### Returns + +`Promise`<[`Permission`](types.RPC.RPCSPEC07.WALLET_API.md#permission-1)[]\> + +allowed accounts addresses + +#### Defined in + +[src/wallet/connect.ts:39](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/connect.ts#L39) + +--- + +### watchAsset + +▸ **watchAsset**(`swo`, `asset`): `Promise`<`boolean`\> + +Request adding ERC20 Token to Wallet List + +#### Parameters + +| Name | Type | Description | +| :------ | :--------------------------------------------------------------------------------------------- | :------------------- | +| `swo` | [`StarknetWindowObject`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md) | - | +| `asset` | [`WatchAssetParameters`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.WatchAssetParameters.md) | WatchAssetParameters | + +#### Returns + +`Promise`<`boolean`\> + +boolean + +#### Defined in + +[src/wallet/connect.ts:48](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/connect.ts#L48) + +--- + +### addStarknetChain + +▸ **addStarknetChain**(`swo`, `chain`): `Promise`<`boolean`\> + +Request adding custom Starknet chain + +#### Parameters + +| Name | Type | Description | +| :------ | :--------------------------------------------------------------------------------------------------------- | :------------------------- | +| `swo` | [`StarknetWindowObject`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md) | - | +| `chain` | [`AddStarknetChainParameters`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddStarknetChainParameters.md) | AddStarknetChainParameters | + +#### Returns + +`Promise`<`boolean`\> + +boolean + +#### Defined in + +[src/wallet/connect.ts:60](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/connect.ts#L60) + +--- + +### switchStarknetChain + +▸ **switchStarknetChain**(`swo`, `chainId`): `Promise`<`boolean`\> + +Request Wallet Network change + +#### Parameters + +| Name | Type | Description | +| :-------- | :--------------------------------------------------------------------------------------------- | :-------------- | +| `swo` | [`StarknetWindowObject`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md) | - | +| `chainId` | `string` | StarknetChainId | + +#### Returns + +`Promise`<`boolean`\> + +boolean + +#### Defined in + +[src/wallet/connect.ts:73](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/connect.ts#L73) + +--- + +### requestChainId + +▸ **requestChainId**(`swo`): `Promise`<[`ChainId`](types.RPC.RPCSPEC07.API.md#chainid)\> + +Request the current chain ID from the wallet. + +#### Parameters + +| Name | Type | +| :---- | :--------------------------------------------------------------------------------------------- | +| `swo` | [`StarknetWindowObject`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md) | + +#### Returns + +`Promise`<[`ChainId`](types.RPC.RPCSPEC07.API.md#chainid)\> + +The current Starknet chain ID. + +#### Defined in + +[src/wallet/connect.ts:84](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/connect.ts#L84) + +--- + +### deploymentData + +▸ **deploymentData**(`swo`): `Promise`<[`AccountDeploymentData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AccountDeploymentData.md)\> + +Get deployment data for a contract. + +#### Parameters + +| Name | Type | +| :---- | :--------------------------------------------------------------------------------------------- | +| `swo` | [`StarknetWindowObject`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md) | + +#### Returns + +`Promise`<[`AccountDeploymentData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AccountDeploymentData.md)\> + +The deployment data result. + +#### Defined in + +[src/wallet/connect.ts:92](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/connect.ts#L92) + +--- + +### addInvokeTransaction + +▸ **addInvokeTransaction**(`swo`, `params`): `Promise`<[`AddInvokeTransactionResult`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionResult.md)\> + +Add an invoke transaction to the wallet. + +#### Parameters + +| Name | Type | Description | +| :------- | :----------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------- | +| `swo` | [`StarknetWindowObject`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md) | - | +| `params` | [`AddInvokeTransactionParameters`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionParameters.md) | The parameters required for the invoke transaction. | + +#### Returns + +`Promise`<[`AddInvokeTransactionResult`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddInvokeTransactionResult.md)\> + +The result of adding the invoke transaction. + +#### Defined in + +[src/wallet/connect.ts:101](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/connect.ts#L101) + +--- + +### addDeclareTransaction + +▸ **addDeclareTransaction**(`swo`, `params`): `Promise`<[`AddDeclareTransactionResult`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionResult.md)\> + +Add a declare transaction to the wallet. + +#### Parameters + +| Name | Type | Description | +| :------- | :------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- | +| `swo` | [`StarknetWindowObject`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md) | - | +| `params` | [`AddDeclareTransactionParameters`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionParameters.md) | The parameters required for the declare transaction. | + +#### Returns + +`Promise`<[`AddDeclareTransactionResult`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.AddDeclareTransactionResult.md)\> + +The result of adding the declare transaction. + +#### Defined in + +[src/wallet/connect.ts:113](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/connect.ts#L113) + +--- + +### signMessage + +▸ **signMessage**(`swo`, `typedData`): `Promise`<[`Signature`](types.RPC.RPCSPEC07.WALLET_API.md#signature)\> + +Sign typed data using the wallet. + +#### Parameters + +| Name | Type | Description | +| :---------- | :--------------------------------------------------------------------------------------------- | :------------------------------------------------------------ | +| `swo` | [`StarknetWindowObject`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md) | the starknet (wallet) window object to request the signature. | +| `typedData` | [`TypedData`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.TypedData.md) | The typed data to sign. | + +#### Returns + +`Promise`<[`Signature`](types.RPC.RPCSPEC07.WALLET_API.md#signature)\> + +An array of signatures as strings. + +#### Defined in + +[src/wallet/connect.ts:126](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/connect.ts#L126) + +--- + +### supportedSpecs + +▸ **supportedSpecs**(`swo`): `Promise`<[`SpecVersion`](types.RPC.RPCSPEC07.WALLET_API.md#specversion)[]\> + +Get the list of supported specifications. + +#### Parameters + +| Name | Type | +| :---- | :--------------------------------------------------------------------------------------------- | +| `swo` | [`StarknetWindowObject`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md) | + +#### Returns + +`Promise`<[`SpecVersion`](types.RPC.RPCSPEC07.WALLET_API.md#specversion)[]\> + +An array of supported specification strings. + +#### Defined in + +[src/wallet/connect.ts:134](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/connect.ts#L134) + +--- + +### onAccountChange + +▸ **onAccountChange**(`swo`, `callback`): `void` + +Attaches an event handler function to the "accountsChanged" event of a StarknetWindowObject. +When the accounts are changed, the specified callback function will be called. + +#### Parameters + +| Name | Type | Description | +| :--------- | :--------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------ | +| `swo` | [`StarknetWindowObject`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md) | The StarknetWindowObject to attach the event handler to. | +| `callback` | [`AccountChangeEventHandler`](types.RPC.RPCSPEC07.WALLET_API.md#accountchangeeventhandler) | The function to be called when the accounts are changed. It will receive the changed accounts as a parameter. | + +#### Returns + +`void` + +#### Defined in + +[src/wallet/connect.ts:147](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/connect.ts#L147) + +--- + +### onNetworkChanged + +▸ **onNetworkChanged**(`swo`, `callback`): `void` + +Register a callback function to be called when the network is changed. + +#### Parameters + +| Name | Type | Description | +| :--------- | :--------------------------------------------------------------------------------------------- | :-------------------------------------------------------------- | +| `swo` | [`StarknetWindowObject`](../interfaces/types.RPC.RPCSPEC07.WALLET_API.StarknetWindowObject.md) | The StarknetWindowObject instance. | +| `callback` | [`NetworkChangeEventHandler`](types.RPC.RPCSPEC07.WALLET_API.md#networkchangeeventhandler) | The callback function to be called when the network is changed. | + +#### Returns + +`void` + +#### Defined in + +[src/wallet/connect.ts:161](https://github.com/starknet-io/starknet.js/blob/v6.24.1/src/wallet/connect.ts#L161) diff --git a/www/versioned_docs/version-6.24.1/guides/L1message.md b/www/versioned_docs/version-6.24.1/guides/L1message.md new file mode 100644 index 000000000..22708d55b --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/L1message.md @@ -0,0 +1,123 @@ +--- +sidebar_position: 14 +--- + +# Messages with L1 network + +You can exchange messages between L1 & L2 networks: + +- L2 Starknet mainnet ↔️ L1 Ethereum. +- L2 Starknet testnet ↔️ L1 Sepolia ETH testnet. +- L2 local Starknet devnet ↔️ L1 local ETH testnet (anvil, ...). + +You can find an explanation of the global mechanism [here](https://docs.starknet.io/documentation/architecture_and_concepts/L1-L2_Communication/messaging-mechanism/). + +Most of the code for this messaging process will be written in Cairo, but Starknet.js provides some functionalities for this subject. + +## L1 ➡️ L2 messages + +To send a message from L1 to L2, you need a solidity smart contract in the L1 network, calling the `SendMessageToL2` function of the Starknet core contract. +The interface of this function: + +```solidity +/** + Sends a message to an L2 contract. + This function is payable, the paid amount is the message fee. + Returns the hash of the message and the nonce of the message. +*/ +function sendMessageToL2( + uint256 toAddress, + uint256 selector, + uint256[] calldata payload +) external payable returns (bytes32, uint256); +``` + +You have to pay in the L1 an extra fee when invoking `sendMessageToL2` (of course paid with the L1 fee TOKEN), to pay the L2 part of the messaging mechanism. You can estimate this fee with this function: + +```typescript +import { RpcProvider, constants } from 'starknet'; +const provider = new RpcProvider({ nodeUrl: constants.NetworkName.SN_SEPOLIA }); // for testnet + +const responseEstimateMessageFee = await provider.estimateMessageFee({ + from_address: L1address, + to_address: L2address, + entry_point_selector: 'handle_l1_mess', + payload: ['1234567890123456789', '200'], // without from_address +}); +``` + +If the fee is paid in L1, the Cairo contract at `to_Address` is automatically executed, function `entry_point_selector` (the function shall have a decorator `#[l1_handler]` in the Cairo code, with a first parameter called `from_address: felt252`). The payload shall not include the `from_address` parameter. + +### L1 ➡️ L2 hashes + +Starknet.js proposes 2 functions to calculate hashes related to a L1 ➡️ L2 message : + +- The L2 message hash: + For a L1 tx requesting a message L1->L2, some data extracted from etherscan : https://sepolia.etherscan.io/tx/0xd82ce7dd9f3964d89d2eb9d555e1460fb7792be274950abe578d610f95cc40f5 + + ```typescript + const l1FromAddress = '0x0000000000000000000000008453fc6cd1bcfe8d4dfc069c400b433054d47bdc'; + const l2ToAddress = 2158142789748719025684046545159279785659305214176670733242887773692203401023n; + const l2Selector = 774397379524139446221206168840917193112228400237242521560346153613428128537n; + const payload = [ + 4543560n, + 829565602143178078434185452406102222830667255948n, + 3461886633118033953192540141609307739580461579986333346825796013261542798665n, + 9000000000000000n, + 0n, + ]; + const l1Nonce = 8288n; + const l1ToL2MessageHash = hash.getL2MessageHash( + l1FromAddress, + l2ToAddress, + l2Selector, + payload, + l1Nonce + ); + // l1ToL2MessageHash = '0x2e350fa9d830482605cb68be4fdb9f0cb3e1f95a0c51623ac1a5d1bd997c2090' + ``` + + Can be verified here : https://sepolia.starkscan.co/message/0x2e350fa9d830482605cb68be4fdb9f0cb3e1f95a0c51623ac1a5d1bd997c2090#messagelogs + +- The L2 transaction hash: + For the same message: + ```typescript + const l1ToL2TransactionHash = hash.calculateL2MessageTxHash( + l1FromAddress, + l2ToAddress, + l2Selector, + payload, + constants.StarknetChainId.SN_SEPOLIA, + l1Nonce + ); + // l1ToL2TransactionHash = '0x67d959200d65d4ad293aa4b0da21bb050a1f669bce37d215c6edbf041269c07' + ``` + Can be verified here : https://sepolia.starkscan.co/tx/0x067d959200d65d4ad293aa4b0da21bb050a1f669bce37d215c6edbf041269c07 + +## L2 ➡️ L1 messages + +To send a message to L1, you will just invoke a Cairo contract function, paying a fee that will pay all the processes (in L1 & L2). + +If necessary you can estimate this fee with the generic `estimateInvokeFee` function: + +```typescript +const { suggestedMaxFee: estimatedFee1 } = await account0.estimateInvokeFee({ + contractAddress: testAddress, + entrypoint: 'withdraw_to_L1', + calldata: ['123456789', '30'], +}); +``` + +The result is in `estimatedFee1`, of type BN. + +### L2 ➡️ L1 hash + +Starknet.js proposes a function to calculate the L1 ➡️ L2 message hash : + +```typescript +const l2TransactionHash = '0x28dfc05eb4f261b37ddad451ff22f1d08d4e3c24dc646af0ec69fa20e096819'; +const l1MessageHash = await provider.getL1MessageHash(l2TransactionHash); +// l1MessageHash = '0x55b3f8b6e607fffd9b4d843dfe8f9b5c05822cd94fcad8797deb01d77805532a' +``` + +Can be verified here : https://sepolia.voyager.online/tx/0x28dfc05eb4f261b37ddad451ff22f1d08d4e3c24dc646af0ec69fa20e096819#messages diff --git a/www/versioned_docs/version-6.24.1/guides/_category_.json b/www/versioned_docs/version-6.24.1/guides/_category_.json new file mode 100644 index 000000000..c694eb5b2 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Guides", + "position": 2, + "collapsed": false +} diff --git a/www/versioned_docs/version-6.24.1/guides/automatic_cairo_ABI_parsing.md b/www/versioned_docs/version-6.24.1/guides/automatic_cairo_ABI_parsing.md new file mode 100644 index 000000000..11aebb085 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/automatic_cairo_ABI_parsing.md @@ -0,0 +1,82 @@ +--- +sidebar_position: 18 +--- + +# Automatic TypeScript parsing of Cairo ABI-s + +Starknet.js has integrated [Abi-Wan-Kanabi](https://github.com/keep-starknet-strange/abi-wan-kanabi), the standalone TypeScript parser for Cairo smart contracts. + +It enables on-the-fly typechecking and autocompletion for contract calls directly in TypeScript. Developers can now catch typing mistakes early, prior to executing a call on-chain, thus enhancing the overall DAPP development experience. + +## Supported Cairo ABI-s + +Please take a look on the Abi-Wan [documentation](https://github.com/keep-starknet-strange/abi-wan-kanabi#cairo-versions) for a list of supported Cairo ABI-s. + +## Usage + +First, you need to wrap your ABI in an array and export it as a `const`. + +Example: + +```js +export const ABI = [ + { + type: 'function', + name: 'increase_balance', + inputs: [ + { + name: 'amount', + type: 'core::felt252', + }, + ], + outputs: [], + state_mutability: 'external', + }, +] as const; +``` + +Later on, to use it in our code: + +```js +import { Contract, RpcProvider, constants } from 'starknet'; + +const address = 'YOUR_ADDRESS_HERE'; +const provider = new RpcProvider({ nodeUrl: `${yourNodeUrl}` }); +const contract = new Contract(ABI, address, provider).typedv2(ABI); + +// Notice the autocompletion and typechecking in your editor +const result = await contract.increase_balance(100); +``` + +After that, you can use `contract` in your code as you would before, but with autocompletion and typechecking! + +### Generate `abi.ts` from the contract class + +If you have your contract class in a Json file, you can use the abiwan CLI to generate the `abi.ts` typescript file + +```bash +npx abi-wan-kanabi --input /path/to/contract_class.json --output /path/to/abi.ts +``` + +### Usage for deployed contracts + +Let's say you want to interact with the [Ekubo: Core](https://starkscan.co/contract/0x00000005dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b) contract + +You need to first get the **ABI** of the contract and export it in a typescript file, you can do so using one command combining both [`starkli`](https://github.com/xJonathanLEI/starkli) (tested with version 0.2.3) and `npx abi-wan-kanabi`: + +```bash +starkli class-at "0x00000005dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b" --network mainnet | npx abi-wan-kanabi --input /dev/stdin --output abi.ts +``` + +```typescript +import { Contract, RpcProvider, constants } from 'starknet'; +import { ABI } from './abi'; + +const address = '0x00000005dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b'; +const provider = new RpcProvider({ nodeUrl: constants.NetworkName.SN_MAIN }); +const contract = new Contract(ABI, address, provider).typedv2(ABI); + +// Notice the types inferred for the parameter and the returned value +const primary_interface_id = contract.get_primary_interface_id(); +const protocol_fees_collected = contract.get_protocol_fees_collected('0x1'); +``` diff --git a/www/versioned_docs/version-6.24.1/guides/cairo_enum.md b/www/versioned_docs/version-6.24.1/guides/cairo_enum.md new file mode 100644 index 000000000..ed89d1f73 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/cairo_enum.md @@ -0,0 +1,285 @@ +--- +sidebar_position: 17 +--- + +# Cairo Enums + +## Cairo Enums usage + +Cairo-lang v0.12.0 (includes Cairo v2.0.0) introduces a new type of data that can be exchanged with Starknet: the Enums. Not related to the TypeScript Enums, the Cairo Enums are identical to Rust Enums. +More information in the Cairo book [here](https://book.cairo-lang.org/ch08-01-generic-data-types.html?highlight=enum#enums). +In the following paragraphs, you will see how to send and receive Enums with the Starknet network. + +## Cairo Option + +The `Option` Enum is a core enum, and has 2 variants (`Some` and `None`). Only the `some` variant can contain data. + +### Receive Cairo Option + +An example of Cairo code that returns an Option enum: + +```rust +fn test(self: @ContractState, val1: u16) -> Option { + if val1 < 100 { + return Option::None(()); + } + Option::Some(Order { p1: 18, p2: val1 }) +} +``` + +In your code, the Starknet.js response will be an instance of the CairoOption class: + +```typescript +import { CairoOption } from 'starknet'; +type Order = { + p1: BigNumberish; + p2: BigNumberish; +}; +const res: CairoOption = await myTestContract.test(50); +const res2: CairoOption = await myTestContract.test(150); +``` + +In `CairoOption`, T is the type of the data related to the `Some` variant. +The `CairoOption` class has "Cairo like" methods: + +```typescript +const a = res.isSome(); // false +const a2 = res2.isSome(); // true +const b = res.isNone(); // true +const b2 = res2.isNone(); // false +const c = res.unwrap(); // undefined +const c2: Order = res2.unwrap(); // { p1: 18n, p2: 150n } +``` + +### Send Cairo Option + +An example of Cairo code that use an Option enum as input: + +```rust +fn test5(self: @ContractState, inp: Option) -> u16 { + match inp { + Option::Some(x) => { + return x.p2; + }, + Option::None(()) => { + return 17; + } + } +} +``` + +In your code, the Starknet.js request is an instance of the CairoOption class: + +```typescript +import { CairoOption, CairoOptionVariant } from 'starknet'; +type Order = { + p1: BigNumberish; + p2: BigNumberish; +}; +const res = (await myTestContract.call('test5', [ + new CairoOption(CairoOptionVariant.Some, { p1: 20, p2: 40 }), +])) as bigint; +const res2 = (await myTestContract.call('test5', [ + new CairoOption(CairoOptionVariant.None), +])) as bigint; +``` + +## Cairo Result + +Cairo v2.1.0 introduces another core Enum: `Result`. +This Enum has 2 variants (`Ok` and `Err`) and both variants can contain data. + +### Receive Cairo Result + +An example of Cairo code that returns a Result enum: + +```rust +fn test(self: @ContractState, val1: u16) -> Result { + if val1 < 100 { + return Result::Err(14); + } + Result::Ok(val1) +} +``` + +In your code, the Starknet.js response will be an instance of the CairoResult class: + +```typescript +import { CairoResult } from 'starknet'; + +const res: CairoResult = await myTestContract.test(90); +const res2 = (await myTestContract.call('test', [110])) as CairoResult; +``` + +In `CairoResult`, T is the type of the data related to the `Ok` variant, and U is the type of the data related to the `Err` variant. +The `CairoResult` class has "Cairo like" methods: + +```typescript +const a = res.isOk(); // false +const a2 = res2.isOk(); // true +const b = res.isErr(); // true +const b2 = res2.isErr(); // false +const c = res.unwrap(); // 14n +const c2 = res2.unwrap(); // 110n +``` + +### Send Cairo Result + +An example of Cairo code that uses a Result enum: + +```rust +fn test8(self: @ContractState, inp: Result) -> u16 { + match inp { + Result::Ok(x) => { + return x.p2; + }, + Result::Err(y) => { + return y; + } + } +} +``` + +In your code, the Starknet.js request is an instance of the CairoResult class: + +```typescript +import { CairoResult, CairoResultVariant } from 'starknet'; + +const res = (await myTestContract.call('test8', [ + new CairoResult(CairoResultVariant.Ok, { p1: 50, p2: 60 }), +])) as bigint; +const res2 = (await myTestContract.call('test8', [ + new CairoResult(CairoResultVariant.Err, 50), +])) as bigint; +``` + +## Cairo custom Enum + +In Cairo v2.0.0, you can also create your own customized Enum. + +### Receive Cairo custom Enum + +An example of Cairo code that returns the Result enum: + +```rust +#[derive(Drop, Serde, Append)] +enum MyEnum { + Response: Order, + Warning: felt252, + Error: (u16,u16), + Critical: Array, + Empty:(), +} +fn test(self: @ContractState, val1: u16) -> MyEnum { + if val1 < 100 { + return MyEnum::Error((3,4)); + } + if val1 == 100 { + return MyEnum::Warning('attention:100'); + } + if val1 < 150 { + let mut arr=ArrayTrait::new(); + arr.append(5); + arr.append(6); + return MyEnum::Critical(arr); + } + if val1<200 { + return MyEnum::Empty(()); + } + MyEnum::Response(Order { p1: 1, p2: val1 }) +} +``` + +This example Enum has 5 variants (`Response`, `Warning`, `Error`, `Critical` and `Empty`) and both variants can contain data. + +In your code, the Starknet.js response will be an instance of the CairoCustomEnum class: + +```typescript +import { CairoCustomEnum } from 'starknet'; + +const res: CairoCustomEnum = await myTestContract.test(10); +const res2: CairoCustomEnum = await myTestContract.test(100); +const res3: CairoCustomEnum = await myTestContract.test(120); +const res4: CairoCustomEnum = await myTestContract.test(190); +const res5: CairoCustomEnum = await myTestContract.test(220); +``` + +The `CairoCustomEnum` class has "Cairo like" methods: + +```typescript +const a = res.activeVariant(); // "Error" +const a2 = res2.activeVariant(); // "Warning" +const a3 = res3.activeVariant(); // "Critical" +const a4 = res4.activeVariant(); // "Response" +const a5 = res5.activeVariant(); // "Empty" +const c = res.unwrap(); // {"0": 3n, "1": 4n} +const c2: bigint = res2.unwrap(); // 7721172739414537047772488609840n +const c3: bigint[] = res3.unwrap(); // [5n, 6n] +const c4: Order = res4.unwrap(); // { p1: 1n, p2: 190n } +const c5: Object = res5.unwrap(); // {} +``` + +> In a `CairoCustomEnum` instance, you can also have a direct access to the content of a variant: + +```typescript +const d: Order = res4.variant.Response; // { p1: 1n, p2: 190n } +const e = res4.variant['Critical']; // undefined +``` + +### Send Cairo custom Enum + +An example of Cairo code that uses the Result enum: + +```rust +#[derive(Drop, Serde, Append)] +enum MyEnum { + Response: Order, + Warning: felt252, + Error: (u16,u16), + Critical: Array, + Empty:(), +} +fn test2a(self: @ContractState, customEnum:MyEnum ) -> u16{ + match customEnum{ + MyEnum::Response(my_order)=>{return my_order.p2;}, + MyEnum::Warning(val)=>{return 0x13_u16;}, + MyEnum::Error((a,b))=>{return b;}, + MyEnum::Critical(myArray)=>{return 0x3c_u16;}, + MyEnum::Empty(_)=>{return 0xab_u16;} + } +} +``` + +In your code, the Starknet.js request is an instance of the CairoCustomEnum class: + +```typescript +import { CairoCustomEnum } from 'starknet'; + +const orderToSend: Order = { p1: 8, p2: 10 }; +const myCustomEnum = new CairoCustomEnum({ Response: orderToSend }); +const res14 = (await myTestContract.call('test2a', [myCustomEnum])) as bigint; +const res14c = (await myTestContract.call('test2a', [ + new CairoCustomEnum({ Error: cairo.tuple(100, 110) }), +])) as bigint; +const res14d = (await myTestContract.call('test2a', [ + new CairoCustomEnum({ Critical: ['0x10', '0x11'] }), +])) as bigint; +const res14e = (await myTestContract.call('test2a', [ + new CairoCustomEnum({ Empty: {} }), +])) as bigint; +``` + +Take care that if you call a method that do not use the abi (as `CallData.compile`), you have to list all the variants of the enum, like this: + +```typescript +const orderToSend: Order = { p1: 8, p2: 10 }; +const myCustomEnum = new CairoCustomEnum({ + Response: undefined, + Warning: undefined, + Error: cairo.tuple(100, 110), + Critical: undefined, + Empty: undefined, +}); +const myCalldata = CallData.compile(myCustomEnum); +const res = (await myTestContract.call('test2a', myCalldata)) as bigint; +``` diff --git a/www/versioned_docs/version-6.24.1/guides/configuration.md b/www/versioned_docs/version-6.24.1/guides/configuration.md new file mode 100644 index 000000000..0963af17e --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/configuration.md @@ -0,0 +1,91 @@ +--- +sidebar_position: 2.1 +--- + +# Configuration + +Starknet.js has behaviors that can be adjusted through its configurations: `config` and `logger`. + +## Config + +The core global configuration is a singleton object containing case-sensitive global default properties. +Each property can be configured before the rest of the code is run to modify their corresponding behavior. +When they overlap, constructor and method parameters have higher precedence over the global configuration defaults. +Custom keys can also be used to store and use arbitrary values during runtime. + +```ts +import { config } from 'starknet'; + +// Set existing or custom global property +config.set('mode', 'DEFAULT'); + +// Retrieve entire configuration +config.getAll(); + +// Retrieve single global property +config.get('legacyMode'); + +// Update (merge) existing configuration with modified or custom property +config.update({ logLevel: 'DEBUG', newKey: 'value' }); + +// Reset config to initial global configuration +config.reset(); + +// Delete existing global property +config.delete('newKey'); + +// Check existence of the global property +config.hasKey('newKey'); +``` + +### Global parameters and Default Global Configuration + +Default global configuration is the initial state that global configuration starts with. + +Details can be found in [global/constants.ts](https://github.com/starknet-io/starknet.js/blob/develop/src/global/constants.ts) + +```ts + logLevel: 'INFO', // verbosity levels of the system logger, more details under logger + accountTxVersion: ETransactionVersion.V2, // by default use V2 transactions in Account class instances + legacyMode: false, // enable legacy transaction types (note: this could break the code depending on the Starknet version used by the network) +``` + +## Logger + +Logger is a singleton object through which the Starknet.js logs are managed. + +Supported log levels: + +| | | | +| :-----: | --- | ----------------------------- | +| `DEBUG` | 5 | show all logs | +| `INFO` | 4 | show INFO, WARN, ERROR, FATAL | +| `WARN` | 3 | show WARN, ERROR, FATAL | +| `ERROR` | 2 | show ERROR, FATAL | +| `FATAL` | 1 | show only FATAL | +| `OFF` | 0 | disable logs | + +```ts +import { logger } from 'starknet'; + +// set custom log level (can also be done using global config) +logger.setLogLevel('WARN'); + +// get current log level +logger.getLogLevel(); + +// get a list of all verbosity modes that would be displayed with the current log level +logger.getEnabledLogLevels(); +``` + +Developers can also use it to add custom logs. + +```ts +import { logger } from 'starknet'; + +logger.debug('Debug message', additionalDataObject); +logger.info('Info message', additionalDataObject); +logger.warn('Warn message', additionalDataObject); +logger.error('Error message', additionalDataObject); +logger.fatal('Fatal message', additionalDataObject); +``` diff --git a/www/versioned_docs/version-6.24.1/guides/connect_account.md b/www/versioned_docs/version-6.24.1/guides/connect_account.md new file mode 100644 index 000000000..fa775c329 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/connect_account.md @@ -0,0 +1,88 @@ +--- +sidebar_position: 4 +--- + +# 🔌 Connect to an existing account + +Once your provider is initialized, you can connect an existing account. + +You need 2 pieces of data: + +- the address of the account +- the private key of this account + +```typescript +import { Account, RpcProvider } from 'starknet'; +``` + +## Connect to a pre-deployed account in Starknet-devnet-rs + +When you launch starknet-devnet-rs, 10 accounts are pre-deployed with 100 dummy ETH in each. + +Addresses and private keys are displayed on the console at initialization. + +> This data will change at each launch, so to freeze them, launch with: `cargo run --release -- --seed 0`. + +The result for `account #0`: + +```text +Address : 0x64b48806902a367c8598f4f95c305e8c1a1acba5f082d294a43793113115691 +Private key: 0x71d7bb07b9a64f6f78ac4c816aff4da9 +Public key : 0x7e52885445756b313ea16849145363ccb73fb4ab0440dbac333cf9d13de82b9 +``` + +Then you can use this code: + +```typescript +// initialize provider +const provider = new RpcProvider({ nodeUrl: 'http://127.0.0.1:5050/rpc' }); +// initialize existing pre-deployed account 0 of Devnet +const privateKey = '0x71d7bb07b9a64f6f78ac4c816aff4da9'; +const accountAddress = '0x64b48806902a367c8598f4f95c305e8c1a1acba5f082d294a43793113115691'; + +const account = new Account(provider, accountAddress, privateKey); +``` + +Your account is now connected, and you can use it. + +```typescript +const account = new Account(provider, accountAddress, privateKey); +``` + +> Take care that this added parameter is a string, NOT a number. + +## 👛 Connect to an existing account (in any network) + +The code is the same, you just have to: + +- connect to the appropriate network. +- use the address of this account (public data). +- use the private key of this account (very sensitive data: your code MUST not disclose it). + +For example, to connect an existing account on testnet, with a private key stored in a .env non-archived file: + +```typescript +import * as dotenv from 'dotenv'; +dotenv.config(); + +// initialize provider +const provider = new RpcProvider({ nodeUrl: `${myNodeUrl}` }); +// initialize existing account +const privateKey = process.env.OZ_NEW_ACCOUNT_PRIVKEY; +const accountAddress = '0x051158d244c7636dde39ec822873b29e6c9a758c6a9812d005b6287564908667'; + +const account = new Account(provider, accountAddress, privateKey); +``` + +## Connect to an account that uses Ethereum signature + +As a consequence of account abstraction, you can find accounts that uses Ethereum signature logical. +To connect to this type of account: + +```typescript +const myEthPrivateKey = '0x525bc68475c0955fae83869beec0996114d4bb27b28b781ed2a20ef23121b8de'; +const myEthAccountAddressInStarknet = + '0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641'; +const myEthSigner = new EthSigner(myEthPrivateKey); +const myEthAccount = new Account(provider, myEthAccountAddressInStarknet, myEthSigner); +``` diff --git a/www/versioned_docs/version-6.24.1/guides/connect_contract.md b/www/versioned_docs/version-6.24.1/guides/connect_contract.md new file mode 100644 index 000000000..fd5921070 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/connect_contract.md @@ -0,0 +1,59 @@ +--- +sidebar_position: 5 +--- + +# 🔌 Connect a deployed contract + +Once your provider is initialized, you can connect a contract already deployed in the network. + +You need 2 pieces of data: + +- the address of the contract +- the ABI file of the contract (or the compiled/compressed contract file, that includes the abi) + +> If you don't have the abi file, the `provider.getClassAt()` and `provider.getClassByHash()` commands will recover the compressed contract file. As these methods generate a significant workload for the sequencer/node, it's recommended to store the result on your computer to be able to reuse it later without using the provider each time: + +```typescript +import fs from 'fs'; + +const compressedContract = await provider.getClassAt(addrContract); +fs.writeFileSync('./myAbi.json', json.stringify(compressedContract.abi, undefined, 2)); +``` + +> When possible, prefer to read the compiled contract from a local Json file, as it's much more faster, using the `json.parse` util provided by Starknet.js, as shown below. + +## Get the abi from a compiled/compressed file + +```typescript +import { RpcProvider, Contract, json } from 'starknet'; +``` + +If you have the compiled/compressed file of the contract, use this code to recover all data, including the ABI: + +```typescript +const compiledContract = json.parse( + fs.readFileSync('./compiledContracts/test.json').toString('ascii') +); +``` + +> Note the `json.parse` util provided by Starknet.js + +## Connect to the contract + +```typescript +// initialize provider +const provider = new RpcProvider({ nodeUrl: `${myNodeUrl}` }); + +// initialize deployed contract +const testAddress = '0x7667469b8e93faa642573078b6bf8c790d3a6184b2a1bb39c5c923a732862e1'; +const compiledTest = json.parse(fs.readFileSync('./compiledContracts/test.json').toString('ascii')); + +// connect the contract +const myTestContract = new Contract(compiledTest.abi, testAddress, provider); +``` + +## Typechecking and autocompletion + +If you want to have typechecking and autocompletion for your contracts functions calls and catch typing errors early, you can use Abiwan! + +See [this guide](./automatic_cairo_ABI_parsing.md) for more details. diff --git a/www/versioned_docs/version-6.24.1/guides/connect_network.md b/www/versioned_docs/version-6.24.1/guides/connect_network.md new file mode 100644 index 000000000..cb59f412c --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/connect_network.md @@ -0,0 +1,218 @@ +--- +sidebar_position: 3 +--- + +# RpcProvider object 🔌 connect to the network + +The first thing to do is to define with which network you want to interact. + +Then you need to select a node. A node is a safe way to connect with the Starknet blockchain. You can use: + +- a node supplied by a node provider - it can be free or not; it can have limitations or not; it can have WebSocket support or not. + > RPC node providers are for example Infura, Alchemy, Blast, Nethermind, Lava, Chainstack... +- your own node, located on your local computer or in your local network. + > you can spin up your own node with Pathfinder, Juno, Papyrus, Deoxys, ... +- a local development node, that simulates a Starknet network. Useful for devs to perform quick tests without spending precious fee token. + > Main development devnets are Starknet-devnet-rs, Madara, ... + +Each node is communicating with Starknet.js using a rpc specification. Most of the nodes are able to use 2 rpc spec versions. +For example, this node is compatible with v0.6.0 & v0.7.0, using the following entry points : + +- "https://free-rpc.nethermind.io/sepolia-juno/v0_6" +- "https://free-rpc.nethermind.io/sepolia-juno/v0_7" + +From rpc spec v0.5.0, you can request the rpc spec version that uses a node address : + +```typescript +const resp = await myProvider.getSpecVersion(); +console.log('rpc version =', resp); +// result : rpc version = 0.7.0 +``` + +On Starknet.js side, you have to select the proper version, to be in accordance with the node you want to use : + +| Rpc spec version of your node | Starknet.js version to use | +| :---------------------------: | ---------------------------- | +| v0.4.0 | Starknet.js v5.21.1 | +| v0.5.0 | Starknet.js v5.23.0 | +| v0.5.1 | Starknet.js v5.29.0 & v6.1.0 | +| v0.6.0 | Starknet.js v6.23.1 | +| v0.7.1 | Starknet.js v6.23.1 | + +:::note +Each Starknet.js version 6.x.x is compatible with 2 rpc spec versions, and recognize automatically the spec version if not provided. +::: + +With the `RpcProvider` class, you define the Starknet Rpc node to use. + +```typescript +import { RpcProvider } from 'starknet'; +``` + +## Connect your DAPP to an RPC node provider + +### Default Rpc node + +If you don't want to use a specific node, or to handle an API key, you can use by default (using Rpc spec 0.7.0): + +```typescript +const myProvider = new RpcProvider({ nodeUrl: constants.NetworkName.SN_SEPOLIA }); +const myProvider = new RpcProvider({ nodeUrl: constants.NetworkName.SN_MAIN }); +// or +const myProvider = new RpcProvider(); // Sepolia +``` + +> when using this syntax, a random public node will be selected. + +Using a specific nodeUrl is the better approach, as such a node will have fewer limitations, the last version of software and will be less crowded. + +Some examples of RpcProvider instantiation to connect to RPC node providers: + +### Mainnet + +```typescript +// Infura node rpc 0.5.1 for Mainnet: +const providerInfuraMainnet = new RpcProvider({ + nodeUrl: 'https://starknet-mainnet.infura.io/v3/' + infuraKey, +}); +// Blast node rpc 0.7.0 for Mainnet (0.4, 0.5 & 0_6 also available): +const providerBlastMainnet = new RpcProvider({ + nodeUrl: 'https://starknet-mainnet.blastapi.io/' + blastKey + '/rpc/v0_7', +}); +// Lava node rpc 0.6.0 for Mainnet: +const providerMainnetLava = new RpcProvider({ + nodeUrl: 'https://g.w.lavanet.xyz:443/gateway/strk/rpc-http/' + lavaMainnetKey, +}); +// Alchemy node rpc 0.6.0 for Mainnet: +const providerAlchemyMainnet = new RpcProvider({ + nodeUrl: 'https://starknet-mainnet.g.alchemy.com/starknet/version/rpc/v0_6/' + alchemyKey, +}); +// Public Nethermind node rpc 0.7.0 for Mainnet (0_6 also available): +const providerMainnetNethermindPublic = new RpcProvider({ + nodeUrl: 'https://free-rpc.nethermind.io/mainnet-juno/v0_7', +}); +// Public Blast node rpc 0.7.0 for Mainnet (0.4, 0.5 & 0_6 also available) : +const providerBlastMainnet = new RpcProvider({ + nodeUrl: 'https://starknet-mainnet.public.blastapi.io/rpc/v0_7', +}); +// Public Lava node rpc 0.6.0 for Mainnet: +const providerLavaMainnet = new RpcProvider({ + nodeUrl: 'https://json-rpc.starknet-mainnet.public.lavanet.xyz', +}); +``` + +> Take care to safely manage your API key. It's a confidential item! + +### Goerli Testnet + +:::info +The Goerli testnet is no more in service. +::: + +### Sepolia Testnet + +```typescript +// Infura node rpc 0.5.1 for Sepolia Testnet : +const providerInfuraSepoliaTestnet = new RpcProvider({ + nodeUrl: 'https://starknet-sepolia.infura.io/v3/' + infuraKey, +}); +// Public Nethermind node rpc 0.7.0 for Sepolia Testnet (0_6 also available) : +const providerSepoliaTestnetNethermindPublic = new RpcProvider({ + nodeUrl: 'https://free-rpc.nethermind.io/sepolia-juno/v0_7', +}); +// Public Blast node rpc 0.7.0 for Sepolia Testnet (0_6 also available) : +const providerSepoliaTestnetBlastPublic = new RpcProvider({ + nodeUrl: 'https://starknet-sepolia.public.blastapi.io/rpc/v0_7', +}); +``` + +## Connect to your own node + +### Pathfinder + +For a local [Pathfinder](https://github.com/eqlabs/pathfinder) node: + +```typescript +const provider = new RpcProvider({ nodeUrl: '127.0.0.1:9545/rpc/v0_7' }); +``` + +Your node can be located in your local network (example: Pathfinder node running on a computer in your network, launched with this additional option: `--http-rpc 0.0.0.0:9545`). +You can connect with: + +```typescript +const provider = new RpcProvider({ nodeUrl: '192.168.1.99:9545/rpc/v0_7' }); +``` + +### Juno + +For a local [Juno](https://github.com/NethermindEth/juno) node initialize the provider with: + +```typescript +const provider = new RpcProvider({ nodeUrl: 'http://127.0.0.1:6060/v0_7' }); +``` + +> If Juno is running on a separate computer in your local network, don't forget to add the option `--http-host 0.0.0.0` when launching Juno. + +## Devnet + +Example of a connection to a local development node (rpc 0.7.0), with Starknet-devnet-rs v0.0.6: + +```typescript +const provider = new RpcProvider({ nodeUrl: 'http://127.0.0.1:5050/rpc' }); +``` + +> If you have customized host and port during starknet-devnet initialization, adapt in accordance your script. + +## Batch JSON-RPC + +The BatchClient class allows requests to be batched together in a single HTTP request, either by the interval amount or at the end of the callback queue if the batch is set to 0. By batching requests, we can reduce the overhead associated with handling individual requests. + +#### Example of usage with RpcProvider + +```typescript +const myBatchProvider = new RpcProvider({ + batch: 0, +}); + +const [getBlockResponse, blockHashAndNumber, txCount] = await Promise.all([ + myBatchProvider.getBlock(), + myBatchProvider.getBlockLatestAccepted(), + myBatchProvider.getBlockTransactionCount('latest'), +]); + +// ... usage of getBlockResponse, blockHashAndNumber, txCount +``` + +#### Example of direct usage of underlying BatchClient class + +```typescript +const provider = new RpcProvider(); + +const batchClient = new BatchClient({ + nodeUrl: provider.channel.nodeUrl, + headers: provider.channel.headers, + interval: 0, +}); + +const [getBlockResponse, blockHashAndNumber, txCount] = await Promise.all([ + batchClient.getBlock(), + batchClient.getBlockLatestAccepted(), + batchClient.getBlockTransactionCount('latest'), +]); + +// ... usage of getBlockResponse, blockHashAndNumber, txCount +``` + +## Error handling + +The [Starknet RPC specification](https://github.com/starkware-libs/starknet-specs) defines a set of possible errors that the RPC endpoints could return for various scenarios. If such errors arise `starknet.js` represents them with the corresponding [RpcError](../API/classes/RpcError) class where the endpoint error response information is contained within the `baseError` property. Also of note is that the class has an `isType` convenience method that verifies the base error type as shown in the example below. + +#### Example + +```typescript +try { + ... +} catch (error) { + if (error instanceof RpcError && error.isType('UNEXPECTED_ERROR')) { ... } +} +``` diff --git a/www/versioned_docs/version-6.24.1/guides/create_account.md b/www/versioned_docs/version-6.24.1/guides/create_account.md new file mode 100644 index 000000000..03bae01e6 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/create_account.md @@ -0,0 +1,391 @@ +--- +sidebar_position: 8 +--- + +# Create an account + +Since there are no Externally Owned Accounts (EOA) in Starknet, all Accounts in Starknet are contracts. + +Unlike in Ethereum where a wallet is created with a public and private key pair, Starknet Accounts are the only way to sign transactions and messages and verify signatures. Therefore an Account - Contract interface is needed. + +Account contracts on Starknet cannot be deployed without paying a fee. +Creating an account is a bit tricky; you have several steps: + +1. Decide on your account type (OpenZeppelin, ArgentX, Braavos, ...). +2. Compute the address of your future account. +3. Send funds to this pre-computed address. The funds will be used to pay for the account contract deployment and remains will fund the new account. +4. Actual deployment of the Account + +## Create an OZ (Open Zeppelin) account + +Here, we will create a wallet with the Open Zeppelin smart contract v0.8.1. The contract class is already implemented in Testnet. +This contract is coded in Cairo 1. + +```typescript +import { Account, constants, ec, json, stark, RpcProvider, hash, CallData } from 'starknet'; +``` + +### Compute address + +```typescript +// connect provider (Mainnet or Sepolia) +const provider = new RpcProvider({ nodeUrl: `${myNodeUrl}` }); + +// new Open Zeppelin account v0.8.1 +// Generate public and private key pair. +const privateKey = stark.randomAddress(); +console.log('New OZ account:\nprivateKey=', privateKey); +const starkKeyPub = ec.starkCurve.getStarkKey(privateKey); +console.log('publicKey=', starkKeyPub); + +const OZaccountClassHash = '0x061dac032f228abef9c6626f995015233097ae253a7f72d68552db02f2971b8f'; +// Calculate future address of the account +const OZaccountConstructorCallData = CallData.compile({ publicKey: starkKeyPub }); +const OZcontractAddress = hash.calculateContractAddressFromHash( + starkKeyPub, + OZaccountClassHash, + OZaccountConstructorCallData, + 0 +); +console.log('Precalculated account address=', OZcontractAddress); +``` + +If you want a specific private key, replace `stark.randomAddress`()` with your choice. + +Then you have to fund this address! + +How to proceed is out of the scope of this guide, but you can for example: + +- Transfer ETH from another wallet. +- Bridge ETH to this Starknet address. +- Use a faucet. (https://starknet-faucet.vercel.app/) +- Mint ETH on starknet-devnet-rs, like so: + +```bash +// ETH +curl -X POST http://127.0.0.1:5050/mint -d '{"address":"0x04a093c37ab61065d001550089b1089922212c60b34e662bb14f2f91faee2979","amount":50000000000000000000}' -H "Content-Type:application/json" +// STRK +curl -X POST http://127.0.0.1:5050/mint -d '{"address":"0x04a093c37ab61065d001550089b1089922212c60b34e662bb14f2f91faee2979","amount":50000000000000000000,"unit":"FRI"}' -H "Content-Type:application/json" +``` + +### Deployment of the new account + +If you have sent enough funds to this new address, you can go forward to the final step: + +```typescript +const OZaccount = new Account(provider, OZcontractAddress, privateKey); + +const { transaction_hash, contract_address } = await OZaccount.deployAccount({ + classHash: OZaccountClassHash, + constructorCalldata: OZaccountConstructorCallData, + addressSalt: starkKeyPub, +}); + +await provider.waitForTransaction(transaction_hash); +console.log('✅ New OpenZeppelin account created.\n address =', contract_address); +``` + +## Create an Argent account + +Here, we will create a wallet with the Argent smart contract v0.4.0. The contract class is already implemented in the networks. + +```typescript +import { + Account, + ec, + json, + stark, + RpcProvider, + hash, + CallData, + CairoOption, + CairoOptionVariant, + CairoCustomEnum, +} from 'starknet'; +``` + +### Compute address + +```typescript +// connect provider +const provider = new RpcProvider({ nodeUrl: `${myNodeUrl}` }); + +//new Argent X account v0.4.0 +const argentXaccountClassHash = + '0x036078334509b514626504edc9fb252328d1a240e4e948bef8d0c08dff45927f'; + +// Generate public and private key pair. +const privateKeyAX = stark.randomAddress(); +console.log('AX_ACCOUNT_PRIVATE_KEY=', privateKeyAX); +const starkKeyPubAX = ec.starkCurve.getStarkKey(privateKeyAX); +console.log('AX_ACCOUNT_PUBLIC_KEY=', starkKeyPubAX); + +// Calculate future address of the ArgentX account +const axSigner = new CairoCustomEnum({ Starknet: { pubkey: starkKeyPubAX } }); +const axGuardian = new CairoOption(CairoOptionVariant.None); +const AXConstructorCallData = CallData.compile({ + owner: axSigner, + guardian: axGuardian, +}); +const AXcontractAddress = hash.calculateContractAddressFromHash( + starkKeyPubAX, + argentXaccountClassHash, + AXConstructorCallData, + 0 +); +console.log('Precalculated account address=', AXcontractAddress); +``` + +If you want a specific private key, replace `stark.randomAddress()` with a value of your choice. + +Then you have to fund this address. + +### Deployment of the new account + +If you have sent enough funds to this new address, you can go forward to the final step: + +```typescript +const accountAX = new Account(provider, AXcontractAddress, privateKeyAX); + +const deployAccountPayload = { + classHash: argentXaccountClassHash, + constructorCalldata: AXConstructorCallData, + contractAddress: AXcontractAddress, + addressSalt: starkKeyPubAX, +}; + +const { transaction_hash: AXdAth, contract_address: AXcontractFinalAddress } = + await accountAX.deployAccount(deployAccountPayload); +console.log('✅ ArgentX wallet deployed at:', AXcontractFinalAddress); +``` + +## Create a Braavos account + +More complicated, a Braavos account needs a proxy and a specific signature. Starknet.js is handling only Starknet standard signatures; so we need extra code to handle this specific signature for account creation. These nearly 200 lines of code are not displayed here but are available in a module [here](./doc_scripts/deployBraavos.ts). + +We will deploy hereunder a Braavos account in devnet. So launch starknet-devnet with these parameters: + +```bash +starknet-devnet --seed 0 --fork-network 'https://free-rpc.nethermind.io/sepolia-juno/v0_7' +``` + +Initialization: + +```typescript +import { RpcProvider, Account, num, stark } from 'starknet'; +import { + calculateAddressBraavos, + deployBraavosAccount, + estimateBraavosAccountDeployFee, +} from './deployBraavos'; +import axios from 'axios'; +``` + +If you want to create the private key, for example with a random number: + +```typescript +const privateKeyBraavos = stark.randomAddress(); +``` + +If you want to use a private key generated by your browser wallet, create a new account (without deploying it), then copy/paste the account private key (it's useless to copy the public key). + +```typescript +const privateKeyBraavos = '0x02e8....e12'; +``` + +### Compute address + +```typescript +// initialize provider +const providerDevnet = new RpcProvider({ nodeUrl: `${myNodeUrl}` }); +// address +const BraavosProxyAddress = calculateAddressBraavos(privateKeyBraavos); +console.log('Calculated account address=', BraavosProxyAddress); +``` + +### Estimate fees + +```typescript +// estimate fees +const estimatedFee = await estimateBraavosAccountDeployFee(privateKeyBraavos, providerDevnet); +console.log('calculated fee =', estimatedFee); +``` + +### Deploy account + +```typescript +// fund account address before account creation (easy in devnet) +const { data: answer } = await axios.post( + 'http://127.0.0.1:5050/mint', + { + address: BraavosProxyAddress, + amount: 10_000_000_000_000_000_000, + }, + { headers: { 'Content-Type': 'application/json' } } +); +console.log('Answer mint =', answer); // 10 ETH + +// deploy Braavos account +const { transaction_hash, contract_address: BraavosAccountFinalAddress } = + await deployBraavosAccount(privateKeyBraavos, providerDevnet, estimatedFee); +// estimatedFee is optional +console.log('Transaction hash =', transaction_hash); +await providerDevnet.waitForTransaction(transaction_hash); +console.log('✅ Braavos wallet deployed at', BraavosAccountFinalAddress); +``` + +The computed address has been funded automatically by minting a new dummy ETH in Starknet devnet! + +## Create an Ethereum account + +Thanks to account abstraction, you can create an account in Starknet that holds the cryptographic logic of an Ethereum account. This way, you can use Ethereum private and public keys! +OpenZeppelin has released an account contract for such an Ethereum account. + +Below is an example of account creation in Sepolia Testnet. + +### Compute address + +```typescript +const privateKeyETH = '0x45397ee6ca34cb49060f1c303c6cb7ee2d6123e617601ef3e31ccf7bf5bef1f9'; +const ethSigner = new EthSigner(privateKeyETH); +const ethFullPublicKey = await ethSigner.getPubKey(); +const accountEthClassHash = '0x23e416842ca96b1f7067693892ed00881d97a4b0d9a4c793b75cb887944d98d'; +const myCallData = new CallData(ethAccountAbi); +const accountETHconstructorCalldata = myCallData.compile('constructor', { + public_key: ethFullPublicKey, +}); +const salt = '0x12345'; // or lower felt of public key X part +const contractETHaddress = hash.calculateContractAddressFromHash( + salt, + accountEthClassHash, + accountETHconstructorCalldata, + 0 +); +console.log('Pre-calculated ETH account address =', contractETHaddress); +``` + +> If you need a random Ethereum private key: +> +> ```typescript +> const myPrivateKey = eth.ethRandomPrivateKey(); +> ``` + +Then you have to fund this address. + +### Deployment of the new account + +If you have sent enough funds to this new address, you can go forward to the final step: + +```typescript +const ethAccount = new Account(provider, contractETHaddress, ethSigner); +const deployPayload = { + classHash: accountEthClassHash, + constructorCalldata: accountETHconstructorCalldata, + addressSalt: salt, +}; +const { suggestedMaxFee: feeDeploy } = await ethAccount.estimateAccountDeployFee(deployPayload); +const { transaction_hash, contract_address } = await ethAccount.deployAccount( + deployPayload, + { maxFee: stark.estimatedFeeToMaxFee(feeDeploy, 100) } + // Extra fee to fund the validation of the transaction +); +await provider.waitForTransaction(transaction_hash); +console.log('✅ New Ethereum account final address =', contract_address); +``` + +## Create your account abstraction + +You are not limited to these 3 contracts. You can create your own contract for the wallet. It's the concept of Account Abstraction. + +You can entirely customize the wallet - for example: + +- use a different concept of keys. + +- add a guardian to save your account. + +- have the possibility to transfer ownership of the wallet. + +- add some administrators or a super-administrator. + +- whitelist of addresses for transfer. + +- multisig. + +- delayed withdraw. + +The only limitation is your imagination... + +Here is an example of a customized wallet, including super administrator management, on a local starknet-devnet-rs: + +> launch `cargo run --release -- --seed 0` before using this script + +```typescript +import { Account, ec, json, stark, RpcProvider, hash, CallData } from 'starknet'; +import fs from 'fs'; +import axios from 'axios'; +``` + +```typescript +// connect provider +const provider = new RpcProvider({ network: 'http://127.0.0.1:5050/rpc' }); + +// initialize existing pre-deployed account 0 of Devnet-rs +const privateKey0 = '0x71d7bb07b9a64f6f78ac4c816aff4da9'; +const accountAddress0 = '0x64b48806902a367c8598f4f95c305e8c1a1acba5f082d294a43793113115691'; +const account0 = new Account(provider, accountAddress0, privateKey0); + +// new account abstraction +// Generate public and private key pair. +const AAprivateKey = stark.randomAddress(); +console.log('New account:\nprivateKey=', AAprivateKey); +const AAstarkKeyPub = ec.starkCurve.getStarkKey(AAprivateKey); +console.log('publicKey=', AAstarkKeyPub); + +// declare the contract +const compiledAAaccount = json.parse( + fs + .readFileSync('./__mocks__/cairo/myAccountAbstraction/myAccountAbstraction.json') + .toString('ascii') +); +const { transaction_hash: declTH, class_hash: decCH } = await account0.declare({ + contract: compiledAAaccount, +}); +console.log('Customized account class hash =', decCH); +await provider.waitForTransaction(declTH); + +// Calculate future address of the account +const AAaccountConstructorCallData = CallData.compile({ + super_admin_address: account0.address, + publicKey: AAstarkKeyPub, +}); +const AAcontractAddress = hash.calculateContractAddressFromHash( + AAstarkKeyPub, + AAaccountClassHash, + AAaccountConstructorCallData, + 0 +); +console.log('Precalculated account address=', AAcontractAddress); + +// fund account address before account creation +const { data: answer } = await axios.post( + 'http://127.0.0.1:5050/mint', + { address: AAcontractAddress, amount: 50_000_000_000_000_000_000, lite: true }, + { headers: { 'Content-Type': 'application/json' } } +); +console.log('Answer mint =', answer); + +// deploy account +const AAaccount = new Account(provider, AAcontractAddress, AAprivateKey); +const { transaction_hash, contract_address } = await AAaccount.deployAccount({ + classHash: AAaccountClassHash, + constructorCalldata: AAaccountConstructorCallData, + addressSalt: AAstarkKeyPub, +}); +await provider.waitForTransaction(transaction_hash); +console.log('✅ New customized account created.\n address =', contract_address); +``` + +## Account update + +For ArgentX and Braavos wallets, if you have created the private key inside the browser wallet, necessary upgrades will be automatically managed in the wallet. +However, if you have created the private key by yourself, it becomes your responsibility to update the account implementation class when it's necessary. It can be done with the `upgrade` function of the implementation class. diff --git a/www/versioned_docs/version-6.24.1/guides/create_contract.md b/www/versioned_docs/version-6.24.1/guides/create_contract.md new file mode 100644 index 000000000..6f826eacb --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/create_contract.md @@ -0,0 +1,204 @@ +--- +sidebar_position: 7 +--- + +# Create a new contract + +When you have compiled your new Cairo contract, you can deploy it in the network. + +In Starknet, a new contract has to be added in two phases: + +1. Create the contract class. +2. Deploy an instance of the contract. + +> You must first declare your contract class and only then deploy a new instance of it! + +![](./pictures/createContract.png) + +> Both declaration and deployment will cost fees. That's why these functions are methods of the `Account` object. The account should be funded enough to be able to process everything. + +- The contract class contains the logic of the contract. A contract class is identified by its Class Hash. +- The contract instance contains the memory storage of this instance. A contract instance is identified by its contract address. You will interact with the contract instance by using this address. + +You will have only one Class Hash for one contract code, but you can have as many contract instances as you need. + +Other users of the network can use your declared contract. It means that if somebody has already declared a contract class (and paid this declaration), and if you would like to have your own instance of this contract, you have only to deploy (and pay) a new instance. + +Example: if you want an ERC20 contract, and somebody has already declared an ERC20 contract that conforms to your needs, you have just to deploy a new instance of this contract class. + +```typescript +import { RpcProvider, Account, Contract, json, stark, uint256, shortString } from 'starknet'; +``` + +## `declareAndDeploy()` your new contract + +Starknet.js proposes a function to perform both operations in one step: `declareAndDeploy()`. + +Here, to declare & deploy a `Test.cairo` smart contract, in devnet: + +```typescript +// connect provider +const provider = new RpcProvider({ baseUrl: 'http://127.0.0.1:5050/rpc' }); +// connect your account. To adapt to your own account: +const privateKey0 = process.env.OZ_ACCOUNT_PRIVATE_KEY; +const account0Address: string = '0x123....789'; +const account0 = new Account(provider, account0Address, privateKey0); + +// Declare & deploy Test contract in devnet +const compiledTestSierra = json.parse( + fs.readFileSync('./compiledContracts/test.sierra').toString('ascii') +); +const compiledTestCasm = json.parse( + fs.readFileSync('./compiledContracts/test.casm').toString('ascii') +); +const deployResponse = await account0.declareAndDeploy({ + contract: compiledTestSierra, + casm: compiledTestCasm, +}); + +// Connect the new contract instance: +const myTestContract = new Contract( + compiledTestSierra.abi, + deployResponse.deploy.contract_address, + provider +); +console.log('Test Contract Class Hash =', deployResponse.declare.class_hash); +console.log('✅ Test Contract connected at =', myTestContract.address); +``` + +## `deployContract()` for a new instance + +If the contract class is already declared, it's faster and cheaper: just use `deployContract()`. + +```typescript +// connect provider +const provider = new RpcProvider({ baseUrl: 'http://127.0.0.1:5050/rpc' }); +// connect your account. To adapt to your own account: +const privateKey0 = process.env.OZ_ACCOUNT_PRIVATE_KEY; +const account0Address: string = '0x123....789'; + +const account0 = new Account(provider, account0Address, privateKey0); + +// Deploy Test contract in devnet +// ClassHash of the already declared contract +const testClassHash = '0xff0378becffa6ad51c67ac968948dbbd110b8a8550397cf17866afebc6c17d'; + +const deployResponse = await account0.deployContract({ classHash: testClassHash }); +await provider.waitForTransaction(deployResponse.transaction_hash); + +// read abi of Test contract +const { abi: testAbi } = await provider.getClassByHash(testClassHash); +if (testAbi === undefined) { + throw new Error('no abi.'); +} + +// Connect the new contract instance: +const myTestContract = new Contract(testAbi, deployResponse.contract_address, provider); +console.log('✅ Test Contract connected at =', myTestContract.address); +``` + +## Construct the constructor + +If your contract has a constructor with inputs, you have to provide these inputs in the `deployContract` or `declareAndDeploy` commands. +For example, with this contract constructor: + +```json + "name": "constructor", + "inputs": [ + { + "name": "text", + "type": "core::felt252" + }, + { + "name": "longText", + "type": "core::array::Array::" + }, + { + "name": "array1", + "type": "core::array::Array::" + } + ], +``` + +You have several ways to define these inputs: + +### myCalldata.compile + +This is the recommended way to proceed: + +```typescript +const myArray1: RawCalldata = ['0x0a', 24, 36n]; +const contractCallData: CallData = new CallData(compiledContractSierra.abi); +const contractConstructor: Calldata = contractCallData.compile('constructor', { + text: 'niceToken', + longText: 'http://addressOfMyERC721pictures/image1.jpg', + array1: myArray1, +}); +const deployResponse = await account0.deployContract({ + classHash: contractClassHash, + constructorCalldata: contractConstructor, +}); +``` + +Starknet.js will perform a full verification of conformity with the abi. Properties can be unordered. Do not use properties for array_len, it will be handled automatically by Starknet.js. + +### CallData.compile + +For very simple constructors, you can use `CallData.compile`: + +```typescript +const myArray1: RawCalldata = ['0x0a', 24, 36n]; +const contractConstructor: Calldata = CallData.compile({ + text: 'niceToken', + longText: 'http://addressOfMyERC721pictures/image1.jpg', // for Cairo v2.4.0 onwards + array1: myArray1, +}); +// with older Cairo, use: longText: shortString.splitLongString("http://addressOfMyERC721pictures/image1.jpg"), +const deployResponse = await account0.deployContract({ + classHash: contractClassHash, + constructorCalldata: contractConstructor, +}); +``` + +Properties have to be ordered in conformity with the abi. + +Even easier: + +```typescript +const contractConstructor: Calldata = CallData.compile([ + 'niceToken', + 'http://addressOfMyERC721pictures/image1.jpg', + myArray1, +]); // for Cairo v2.4.0 onwards +``` + +## `declare()` for a new class + +If you want only declare a new Contract Class, use `declare()`. + +```typescript +// connect provider +const provider = new RpcProvider({ baseUrl: 'http://127.0.0.1:5050/rpc' }); +// connect your account. To adapt to your own account: +const privateKey0 = process.env.OZ_ACCOUNT_PRIVATE_KEY; +const account0Address: string = '0x123....789'; + +const account0 = new Account(provider, account0Address, privateKey0); + +// Declare Test contract in devnet +const compiledTestSierra = json.parse( + fs.readFileSync('./compiledContracts/test.sierra').toString('ascii') +); +const compiledTestCasm = json.parse( + fs.readFileSync('./compiledContracts/test.casm').toString('ascii') +); +const declareResponse = await account0.declare({ + contract: compiledTestSierra, + casm: compiledTestCasm, +}); +console.log('Test Contract declared with classHash =', declareResponse.class_hash); +await provider.waitForTransaction(declareResponse.transaction_hash); +console.log('✅ Test Completed.'); +``` + +> If the class is already declared, `declare()` will fail. You can also use `declareIfNot()` to not fail in this case. diff --git a/www/versioned_docs/version-6.24.1/guides/define_call_message.md b/www/versioned_docs/version-6.24.1/guides/define_call_message.md new file mode 100644 index 000000000..6165c51a6 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/define_call_message.md @@ -0,0 +1,647 @@ +--- +sidebar_position: 10 +--- + +# Data transformation + +This guide is the most important of all this documentation. Take your time, and read it carefully... + +Cairo contracts and JavaScript/TypeScript languages do not have the same types of data. To exchange data with Starknet, the data have to be transformed and formatted in a list of numbers. + +So, it's necessary to prepare the data before sending them to a contract. +On the other side, when a contract sends data to your DAPP (the result of a call), you also have to transform them before using them in your code. + +In Starknet.js, you can perform these transformations manually, but you can take advantage of methods that perform these transformations. + +## Types of data + +### Cairo + +Cairo has 2 versions, involving 2 types of data: + +- **Cairo 0**: here, everything is felt, an integer on 251 bits. + Available: array, struct, tuple, named tuple, or a mix of these elements. +- **Cairo 1**: with plethora of literal types: u8, u16, u32, usize, u64, u96, u128, felt252, u256, bool, address, eth address, classHash. + Available: array, struct, tuple, bytes31, byteArray, enums or a mix of these elements. + +Starknet.js is compatible with both versions. + +### Starknet + +Starknet is waiting for a list of felts, and answers with the same format. + +### JavaScript / TypeScript + +These types do not exist in JS/TS - you have Number, bigInt, string, array, objects... and types defined in libraries. + +In Starknet.js, it's a bit ... complicated: you have the BigNumberish type and it can include: + +- String (representing a number): "123", "0xabc2" +- Number (max 53 bits): 123 +- BigInt (max 255 bits): 12345612345n + +```typescript +import { BigNumberish } from 'starknet'; +const decimals: BigNumberish = 18; +``` + +## Preparation of data before delivery + +If your Cairo smart contract is waiting for a: + +### felt, u8, u16, u32, usize, u64, u96, u128, felt252, ContractAddress, EthAddress, ClassHash + +Starknet is waiting for a felt. +You can send to Starknet.js methods: bigNumberish. + +```typescript +await myContract.my_function(12, '13', '0xe', 15n); +``` + +> `EthAddress` is limited to 160 bits. +> `felt, felt252, ClassHash` and `ContractAddress` are limited to 252 bits. + +### bool + +Starknet is waiting for a felt, containing 0 or 1. +You can send to Starknet.js methods: boolean, bigNumberish. + +```typescript +await myContract.my_function(true, 1); +``` + +### u256 + +Starknet is waiting for 2 felts, the first including the lowest 128 bits, the second including the 128 highest bits. +You can send to Starknet.js methods: bigNumberish (Cairo 1 only), Uint256 object (both Cairo 0 & 1). + +```typescript +await myContract0.my_function({ low: 100, high: 0 }); // Cairo 0 & 1 contract +await myContract1.my_function(cairo.uint256(100)); // Cairo 0 & 1 contract +await myContract2.my_function(12345678, '13456789765', '0xe23a40b543f', 1534566734334n); // Cairo 1 contract +``` + +In specific cases that we will see hereunder, you can use an object, with the following format: + +```typescript +const a1: Uint256 = cairo.uint256( + '0x05f7cd1fd465baff2ba9d2d1501ad0a2eb5337d9a885be319366b5205a414fdd' +); +const a2: Uint256 = { + low: '0xeb5337d9a885be319366b5205a414fdd', + high: '0x05f7cd1fd465baff2ba9d2d1501ad0a2', +}; +const a3: Uint256 = { low: a1.low, high: a1.high }; +``` + +### u512 + +Starknet is waiting for 4 u128, the first one has the lowest weight. +You can send to Starknet.js methods: bigNumberish or Uint512 object. + +```typescript +await myContract0.my_function(553844998243714947043252949842317834769n); +await myContract1.my_function( + cairo.uint512( + '0xa9d2d1501ad0a2eb5337a9d2d1501ad0a2eb5337a9d2d1501ad0a2eb5337a9d2d1501ad0a2eb5337a9d2d1501ad0a2eb5337' + ) +); +await myContract2.my_function(12345678, '13456789765', '0xe23a40b543f', 1534566734334n); +``` + +In specific cases, you can use an object, with the following format: + +```typescript +const a2: Uint512 = { + limb0: '0xeb5337d9a885be310x9365205a414fdd', + limb1: '0x1fd465baff2ba9d2d1501ad0a2eb5337', + limb2: '0x05f7cd1fd465baff2ba9d2d1501ad0a2', + limb3: '0x2eb5337d9a885be319366b5205a414fd', +}; +``` + +### shortString or bytes31 + +For a shortString, Starknet is waiting for a felt, including 31 ASCII characters max. +You can send to Starknet.js methods: string, bigNumberish. + +bytes31 is similar to shortString. +You can send to Starknet.js methods: string. + +```typescript +await myContract.my_function('Token', '0x0x534e5f4d41494e'); // send 2 shortStrings +``` + +To encode yourself a string: + +```typescript +const encStr: string = shortString.encodeShortString('Stark'); +``` + +To decode yourself a string: + +```typescript +const decStr: string = shortString.decodeShortString('0x7572692f706963742f7433382e6a7067'); +``` + +The result is: "uri/pict/t38.jpg" + +### longString or ByteArray + +longString is a string that may contain more than 31 characters. +Starknet is waiting for an array of felt: string_len, string1, string2, ... +You can send to Starknet.js methods: string, bigNumberish[]. + +ByteArray is similar to longString. +Starknet is waiting for a specific struct. +You can send to Starknet.js methods: string. + +```typescript +await myContract.my_function('http://addressOfMyERC721pictures/image1.jpg'); +``` + +To force to send a shortString as a ByteArray with `CallData.compile()`: + +```typescript +const myCalldata = Calldata.compile([byteArray.byteArrayFromString('Take care.')]); +``` + +If you want to split yourself your longString in 31 chars substrings: + +```typescript +const splitted: string[] = shortString.splitLongString( + 'http://addressOfMyERC721pictures/image1.jpg' +); +``` + +If you want to split your longString in an array of felts: + +```typescript +const longString: string[] = shortString + .splitLongString('http://addressOfMyERC721pictures/image1.jpg') + .map((str) => shortString.encodeShortString(str)); +``` + +### tuple + +Starknet is waiting for a list of felts. +You can send it to Starknet.js methods: `cairo.tuple()`, object. + +```typescript +const myTpl = cairo.tuple('0x0a', 200); +await myContract.my_function(myTpl); +``` + +To construct your tuple: + +```typescript +const myTpl = { '0': '0x0a', '1': 200 }; +``` + +### Named tuple + +:::warning Only for Cairo 0 +::: + +Starknet is waiting for a list of felts. +You can send to Starknet.js methods: an object, `cairo.tuple()`, list of bigNumberish. +From this ABI: + +```json +{ + "name": "data2", + "type": "(min: felt, max: felt)" +} +``` + +You can create this code: + +```typescript +const namedTup = { min: '0x4e65ac6', max: 296735486n }; +await myContract.my_function(namedTup); +``` + +:::tip +It's not mandatory to create manually an object conform to the Cairo 0 named tuple ; you can just use the `cairo.tuple()` function. +::: + +### Ethereum public key + +If your abi is requesting this type : `core::starknet::secp256k1::Secp256k1Point`, it means that you have probably to send an Ethereum full public key. Example : + +```json +{ + "type": "constructor", + "name": "constructor", + "inputs": [ + { + "name": "public_key", + "type": "core::starknet::secp256k1::Secp256k1Point" + } + ] +} +``` + +- If you are using a calldata construction method using the Abi, you have just to use a 512 bits number (so, without parity) : + +```typescript +const privateKeyETH = '0x45397ee6ca34cb49060f1c303c6cb7ee2d6123e617601ef3e31ccf7bf5bef1f9'; +const ethSigner = new EthSigner(privateKeyETH); +const ethFullPublicKey = await ethSigner.getPubKey(); // 512 bits number +const myCallData = new CallData(ethAccountAbi); +const accountETHconstructorCalldata = myCallData.compile('constructor', { + public_key: ethFullPublicKey, +}); +``` + +- If you are using a calldata construction method without the Abi, you have to send a tuple of 2 u256 : + +```typescript +const ethFullPublicKey = + '0x0178bb97615b49070eefad71cb2f159392274404e41db748d9397147cb25cf597ebfcf2f399e635b72b99b8f76e9080763c65a42c842869815039d912150ddfe'; // 512 bits number +const pubKeyETH = encode.addHexPrefix(encode.removeHexPrefix(ethFullPublicKey).padStart(128, '0')); +const pubKeyETHx = cairo.uint256(addAddressPadding(encode.addHexPrefix(pubKeyETH.slice(2, -64)))); +const pubKeyETHy = cairo.uint256(addAddressPadding(encode.addHexPrefix(pubKeyETH.slice(-64)))); +const accountETHconstructorCalldata = CallData.compile([cairo.tuple(pubKeyETHx, pubKeyETHy)]); +``` + +### struct + +Starknet is waiting for a list of felts. +You can send to Starknet.js methods: an object. + +```typescript +const myStruct = { type: 'TR1POST', tries: 8, isBridged: true }; +await myContract.my_function(myStruct); +``` + +### array, span + +Starknet is waiting for an array of felts: array_len, array1, array2, ... +You can send it to Starknet.js methods: bigNumberish[]. + +```typescript +Const myArray = [10, "0xaa", 567n]; +await myContract.my_function(myArray); +``` + +:::danger important +Do not add the `array_len` parameter before your array. Starknet.js will manage this element automatically. +::: + +> It's also applicable for Cairo `Span` type. + +### Fixed array + +Starknet type `[type_array; n]` is waiting for an array of `n` items of type `type_array`, without initial length parameter : item1, item2, ... +You can send it to Starknet.js the same way than arrays & spans: bigNumberish[]. + +```typescript +// for Cairo type [core::integer::u32; 4] +Const myArray = [10, 123, 345, 12]; +await myContract.my_function(myArray); +``` + +:::caution +The fixed arrays are automatically handled only by the functions that uses the contract ABI. So, when using `CallData.compile()`, you have to use the `CairoFixedArray` class: + +```typescript +// for Cairo type [core::integer::u8; 3] +const myArray = [1, 2, 3]; +const myCalldata = CallData.compile([CairoFixedArray.compile(myArray)]); +``` + +::: + +### Complex types + +You can mix and nest literals, arrays, structs, and tuples. + +Starknet is waiting for a list of felts. +All these examples are valid: + +```typescript +type Order2 = { + p1: BigNumberish; + p2: BigNumberish[]; +}; // struct +const myOrder2: Order2 = { + p1: 17, + p2: [234, 467456745457n, '0x56ec'], +}; +const param1 = cairo.tuple(cairo.tuple(34, '0x5e'), 234n); +const param2 = [ + [200, 201], + [202, 203], + [204, 205], +]; +const param3 = [myOrder2, myOrder2]; +const param4 = [cairo.tuple(251, 40000n), cairo.tuple(252, 40001n)]; +await myContract.my_function(param1, param2, param3, param4); +``` + +## Authorized types for Starknet.js methods + +There are 12 methods using contract parameters. Some types are authorized for each method: + +### List of parameters + +Only meta-class methods are using a list of parameters (as illustrated in the previous chapter). +A Meta-Class is a Class that has any of its properties determined at run-time. The Contract object uses a Contract's ABI to determine what methods are available. + +```typescript +await myContract.my_function('TOKEN', '13', [10, 11, 12], 135438734812n); +// or +const functionName = 'my_function'; +await myContract[functionName]('TOKEN', '13', [10, 11, 12], 135438734812n); +``` + +### Array of parameters + +An array of parameters can be used as input: + +```typescript +const myParams = [{ x: 100, y: 200 }, 13, [10, 11, 12], cairo.uint256('0x295fa652e32b')]; +const txResp = await account0.execute({ + contractAddress: testAddress, + entrypoint: 'change_activity', + calldata: myParams, +}); +``` + +All Starknet.js methods accept this type of input, except meta-class, which needs 3 dots prefix: + +```typescript +const myParams = ['TOKEN', '13', [10, 11, 12], 135438734812n]; +await myContract.my_function(...myParams); +// or +const functionName = 'my_function'; +await myContract[functionName](...myParams); +``` + +:::warning important +Objects properties have to be ordered in accordance with the ABI. +::: + +### Object (without ABI conformity check) + +The use of objects allows a clear representation of the list of parameters: + +```typescript +const myParams = { + name: 'TOKEN', + decimals: '13', + amount: 135438734812n, +}; +const deployResponse = await myAccount.deployContract({ + classHash: contractClassHash, + constructorCalldata: myParams, +}); +``` + +This type is available for: `CallData.compile(), hash.calculateContractAddressFromHash, account.deployContract, account.deployAccount, account.execute` + +:::warning important +Objects properties have to be ordered in accordance with the ABI. +::: + +### Object (with ABI conformity check) + +This is the recommended type of input to use, especially for complex ABI. + +```typescript +const myFalseUint256 = { high: 1, low: 23456 }; // wrong order; should be low first +type Order2 = { + p1: BigNumberish; + p2: BigNumberish[]; +}; +const myOrder2bis: Order2 = { + // wrong order; p1 should be first + p2: [234, 467456745457n, '0x56ec'], + p1: '17', +}; +const functionParameters: RawArgsObject = { + //wrong order; all properties are mixed + active: true, + symbol: 'NIT', + initial_supply: myFalseUint256, + recipient: account0.address, + decimals: 18, + tupOfTup: cairo.tuple(cairo.tuple(34, '0x5e'), myFalseUint256), + card: myOrder2bis, + longText: 'Zorg is back, for ever, here and everywhere', + array1: [100, 101, 102], + array2: [ + [200, 201], + [202, 203], + [204, 205], + ], + array3: [myOrder2bis, myOrder2bis], + array4: [myFalseUint256, myFalseUint256], + tuple1: cairo.tuple(40000n, myOrder2bis, [54, 55n, '0xae'], 'texte'), + name: 'niceToken', + array5: [cairo.tuple(251, 40000n), cairo.tuple(252, 40001n)], +}; +const contractCallData: CallData = new CallData(compiledContractSierra.abi); +const myCalldata: Calldata = contractCallData.compile('constructor', functionParameters); +const deployResponse = await account0.deployContract({ + classHash: contractClassHash, + constructorCalldata: myCalldata, +}); +// or +const myCall: Call = myContract.populate('setup_elements', functionParameters); +const tx = await account0.execute(myCall); +// or +const myCall: Call = myContract.populate('get_elements', functionParameters); +const res = await myContract.get_elements(myCall.calldata); +``` + +It can be used only with methods that know the abi: `Contract.populate, myCallData.compile`. +Starknet.js will perform a full check of conformity with the ABI of the contract, reorder the object's properties if necessary, stop if something is wrong or missing, remove not requested properties, and convert everything to Starknet format. +Starknet.js will alert you earlier of errors in your parameters (with human comprehensible words), before the call to Starknet. So, no more incomprehensible Starknet messages due to parameters construction. + +If a property `array_len` has been added before an array, this property is ignored as it's automatically managed by Starknet.js. + +### Call, or Call[] + +A Call is an object with this format: + +```typescript +type Call = { + contractAddress: string; + entrypoint: string; + calldata?: RawArgs; +}; +``` + +...and is only authorized with `Account.execute `. It can be generated manually or by `Contract.populate()`: + +```typescript +const myCall: Call = myContract.populate('get_component', [100, recipient]); +// or +const myCall: Call = { + contractAddress: tokenContract.address, + entrypoint: 'get_component', + calldata: CallData.compile([100, recipient]), +}; + +const tx = await account0.execute(myCall); +``` + +It's particularly interesting when you want to invoke a function several times in the same transaction: + +```typescript +const myCall1: Call = myContract.populate('mint', { type: 7, qty: 10 }); +const myCall2: Call = myContract.populate('mint', { type: 21, qty: 3 }); +const myCall3: Call = myContract.populate('mint', { type: 2, qty: 1 }); +const tx = await account0.execute([myCall1, myCall2, myCall3]); +``` + +### Array of strings (representing numbers) + +This type is particularly useful when you need the maximum performance and speed in your code; You have no automatic transformation, no checks with ABI, and no parsing. + +You provide to starknet.js the low-level data expected by Starknet: + +```typescript +const specialParameters: Calldata = [ + '2036735872918048433518', + '5130580', + '18', + '23456', + '1', + '17', + '3', + '234', + '467456745457', + '22252', +]; +const getResponse = await myAccount.get_bal(specialParameters, { parseRequest: false }); +``` + +To use with `parseRequest: false` (see hereunder). + +### Summary table for arguments + +These types of arguments can't be used at your convenience everywhere. Here is a table showing which types can be used in which function: + +| Function | array of parameters | ordered object | non ordered object | Call & MultiCall | list of parameters | array of strings (\*) | array of strings (\*\*) | +| ----------------------------------------------------------: | :-----------------: | :-------------: | :----------------: | :--------------------------: | :----------------: | :-------------------: | :---------------------: | +| **TypeScript type** | N/A | {} RawArgsArray | {} RawArgsObject | Call & Call[] | ...[] | string[] | string[] | +| contract.metaClass() contract\[metaclass]() | | | | | ✔️ | ✔️ | ✔️ | +| contract.call / contract.invoke | ✔️ | | | | | ✔️ | ✔️ | +| account.execute

(with 3 params, incl. calldata) |

✔️ |

✔️ | | ✔️



| | |

✔️ | +| account.deployContract / Account | ✔️ | ✔️ | | | | | ✔️ | +| account.declareAndDeploy | ✔️ | ✔️ | | | | | ✔️ | +| CallData.compile | ✔️ | ✔️ | | | | | ✔️ | +| myCallData.compile | ✔️ | ✔️ | ✔️ | | | | ✔️ | +| Contract.populate | ✔️ | ✔️ | ✔️ | | | | ✔️ | +| hash. calculateContract AddressFromHash | ✔️ | ✔️ | | | | | ✔️ | + +> (\*) = with `parseRequest: false` +> (\*\*) = result of `Calldata.compile, myCallData.compile, myContract.populate().calldata` + +## Receive data from a Cairo contract + +When you perform a call, the result depends on the contract language: + +- In Cairo 0, the answer is an object, with keys using the Cairo variable's names. + +Example: + +```typescript +const res=myContract.call(...); +const amount = res.amount; +``` + +- In Cairo 1, the result is a variable: + +```typescript +const amount = myContract.call(...); +``` + +| Type in Cairo 1 | Cairo 1 code | Type expected in JS/TS | JS/TS function to recover data | +| -------------------------------------------------------------- | ----------------------------------------- | --------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| u8, u16, u32, usize, u64, u96, u128, felt252, address | `func get_v()->u128` | bigint | `const res: bigint = myContract.call(...` | +| | | string representing an hex number | `const res=myContract.call(...`
`const address: string = num.toHex(res);` | +| u8, u16, u32, usize | `func get_v() -> u16` | number (53 bits max) | `const res=myContract.call(...`
`const total: number = Number(res)` | +| u256 (255 bits max) | `func get_v() -> u256` | bigint | `const res: bigint = myContract.call(...` | +| u512 (512 bits max) | `func get_v() -> u512` | bigint | `const res: bigint = myContract.call(...` | +| array of u8, u16, u32, usize, u64, u96, u128, felt252, address | `func get_v() -> Array` | bigint[] | `const res: bigint[] = myContract.call(...` | +| fixed array of single type items | `func get_v() -> [core::integer::u32; 8]` | bigint[] | `const res = (await myContract.call(...)) as bigint[]` | +| bytes31 (31 ASCII characters max) | `func get_v() -> bytes31` | string | `const res: string = myContract.call(...` | +| felt252 (31 ASCII characters max) | `func get_v() -> felt252` | string | `const res = myContract.call(...`
`const title:string = shortString.decodeShortstring(res);` | +| longString | `func get_v() -> Array` | string | `const res=myContract.call(...`
`const longString = res.map( (shortStr: bigint) => { return shortString.decodeShortString( num.toHex( shortStr)) }).join("");` | +| ByteArray | `func get_v() -> ByteArray` | string | `const res: string = myContract.call(...` | +| Tuple | `func get_v() -> (felt252, u8)` | Object {"0": bigint, "1": bigint} | `const res = myContract.call(...`
`const res0: bigint = res["0"];`
`const results: bigint[] = Object.values(res)` | +| Struct | ` func get_v() -> MyStruct` | MyStruct = { account: bigint, amount: bigint} | `const res: MyStruct = myContract.call(...` | +| complex array | `func get_v() -> Array` | MyStruct[] | `const res: MyStruct[] = myContract.call(...` | + +If you don't know if your Contract object is interacting with a Cairo 0 or a Cairo 1 contract, you have these methods: + +```typescript +import { cairo } from 'starknet'; +const isCairo1: boolean = myContract.isCairo1(); +const isAbiCairo1: boolean = cairo.isCairo1Abi(myAbi); +``` + +## Parse configuration + +### parseRequest + +If for any reason (mainly for speed of processing), you want to define yourself the low-level parameters to send to Starknet, you can use the `parseRequest` option. +Parameters are an array of strings (representing numbers). + +```typescript +const txH = await myContract.send_tk(['2036735872918048433518', '5130580', '18'], { + parseRequest: false, +}); +``` + +### parseResponse + +If for any reason, you want to receive a low-level answer from Starknet, you can use the parseResponse option. + +```typescript +const result = await myContract.call('get_bals', 100n, { parseResponse: false }); +``` + +The answer is an array of strings (representing numbers). + +### formatResponse + +As seen above, the strings returned by Starknet are not automatically parsed, because ABI does not inform when a contract returns a string. +But there is a way to have automatic parsing of a string. + +For example, if a contract returns a struct containing a shortString and a longString: + +```typescript +{ name: felt252, description: Array } +``` + +You can automate the string parsing with: + +```typescript +const formatAnswer = { name: 'string', description: 'string' }; +const result = await myContract.get_text(calldata, { + parseRequest: true, + parseResponse: true, + formatResponse: formatAnswer, +}); +``` + +The result will be an object, with 2 strings: + +```typescript +{ name: "Organic", description: "The best way to read a long string!!!" } +``` + +## Tool to learn how to encode/decode + +A DAPP has been created to learn how to encode/decode with Starknet.js : **Startnet-encode-decode**. +It's also a convenient tool for the exploration of any contract ABI. +![](./pictures/encodeFn2.png) + +Follow these links : +DAPP : https://starknet-encode-decode.vercel.app/ +Tuto : https://github.com/PhilippeR26/starknet-encode-decode/blob/main/tuto.md diff --git a/www/versioned_docs/version-6.24.1/guides/doc_scripts/deployBraavos.ts b/www/versioned_docs/version-6.24.1/guides/doc_scripts/deployBraavos.ts new file mode 100644 index 000000000..0848be974 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/doc_scripts/deployBraavos.ts @@ -0,0 +1,197 @@ +// Collection of functions for Braavos account creation +// coded with Starknet.js v5.11.1, 01/jun/2023 + +import { + BigNumberish, + CairoVersion, + CallData, + Calldata, + DeployAccountContractPayload, + DeployAccountContractTransaction, + DeployContractResponse, + EstimateFeeDetails, + InvocationsSignerDetails, + RawCalldata, + RpcProvider, + constants, + ec, + hash, + num, + stark, +} from 'starknet'; + +const BraavosProxyClassHash: BigNumberish = + '0x03131fa018d520a037686ce3efddeab8f28895662f019ca3ca18a626650f7d1e'; +const BraavosInitialClassHash = '0x5aa23d5bb71ddaa783da7ea79d405315bafa7cf0387a74f4593578c3e9e6570'; +const BraavosAccountClassHash = '0x2c2b8f559e1221468140ad7b2352b1a5be32660d0bf1a3ae3a054a4ec5254e4'; // will probably change over time + +export function getBraavosSignature( + BraavosProxyAddress: BigNumberish, + BraavosProxyConstructorCallData: RawCalldata, + starkKeyPubBraavos: BigNumberish, + version: bigint, + max_fee: BigNumberish, + chainId: constants.StarknetChainId, + nonce: bigint, + privateKeyBraavos: BigNumberish +): string[] { + const txnHash = hash.calculateDeployAccountTransactionHash( + BraavosProxyAddress, + BraavosProxyClassHash, + BraavosProxyConstructorCallData, + starkKeyPubBraavos, + version, + max_fee, + chainId, + nonce + ); + + const parsedOtherSigner = [0, 0, 0, 0, 0, 0, 0]; + const { r, s } = ec.starkCurve.sign( + hash.computeHashOnElements([txnHash, BraavosAccountClassHash, ...parsedOtherSigner]), + num.toHex(privateKeyBraavos) + ); + const signature = [ + r.toString(), + s.toString(), + BraavosAccountClassHash.toString(), + ...parsedOtherSigner.map((e) => e.toString()), + ]; + console.log('signature =', signature); + return signature; +} + +const calcBraavosInit = (starkKeyPubBraavos: string) => + CallData.compile({ public_key: starkKeyPubBraavos }); +const BraavosProxyConstructor = (BraavosInitializer: Calldata) => + CallData.compile({ + implementation_address: BraavosInitialClassHash, + initializer_selector: hash.getSelectorFromName('initializer'), + calldata: [...BraavosInitializer], + }); + +export function calculateAddressBraavos(privateKeyBraavos: BigNumberish): string { + const starkKeyPubBraavos = ec.starkCurve.getStarkKey(num.toHex(privateKeyBraavos)); + const BraavosInitializer = calcBraavosInit(starkKeyPubBraavos); + const BraavosProxyConstructorCallData = BraavosProxyConstructor(BraavosInitializer); + + return hash.calculateContractAddressFromHash( + starkKeyPubBraavos, + BraavosProxyClassHash, + BraavosProxyConstructorCallData, + 0 + ); +} + +async function buildBraavosAccountDeployPayload( + privateKeyBraavos: BigNumberish, + { + classHash, + addressSalt, + constructorCalldata, + contractAddress: providedContractAddress, + }: DeployAccountContractPayload, + { nonce, chainId, version, maxFee }: InvocationsSignerDetails +): Promise { + const compiledCalldata = CallData.compile(constructorCalldata ?? []); + const contractAddress = providedContractAddress ?? calculateAddressBraavos(privateKeyBraavos); + const starkKeyPubBraavos = ec.starkCurve.getStarkKey(num.toHex(privateKeyBraavos)); + const signature = getBraavosSignature( + contractAddress, + compiledCalldata, + starkKeyPubBraavos, + BigInt(version), + maxFee, + chainId, + BigInt(nonce), + privateKeyBraavos + ); + return { + classHash, + addressSalt, + constructorCalldata: compiledCalldata, + signature, + }; +} + +export async function estimateBraavosAccountDeployFee( + privateKeyBraavos: BigNumberish, + provider: RpcProvider, + { blockIdentifier, skipValidate }: EstimateFeeDetails = {} +): Promise { + const version = hash.feeTransactionVersion; + const nonce = constants.ZERO; + const chainId = await provider.getChainId(); + const cairoVersion: CairoVersion = '0'; + const starkKeyPubBraavos = ec.starkCurve.getStarkKey(num.toHex(privateKeyBraavos)); + const BraavosProxyAddress = calculateAddressBraavos(privateKeyBraavos); + const BraavosInitializer = calcBraavosInit(starkKeyPubBraavos); + const BraavosProxyConstructorCallData = BraavosProxyConstructor(BraavosInitializer); + + const payload = await buildBraavosAccountDeployPayload( + privateKeyBraavos, + { + classHash: BraavosProxyClassHash.toString(), + addressSalt: starkKeyPubBraavos, + constructorCalldata: BraavosProxyConstructorCallData, + contractAddress: BraavosProxyAddress, + }, + { + nonce, + chainId, + version, + walletAddress: BraavosProxyAddress, + maxFee: constants.ZERO, + cairoVersion, + } + ); + + const response = await provider.getDeployAccountEstimateFee( + { ...payload }, + { version, nonce }, + blockIdentifier, + skipValidate + ); + const suggestedMaxFee = stark.estimatedFeeToMaxFee(response.overall_fee); + + return suggestedMaxFee; +} + +export async function deployBraavosAccount( + privateKeyBraavos: BigNumberish, + provider: RpcProvider, + max_fee?: BigNumberish +): Promise { + const nonce = constants.ZERO; + const starkKeyPubBraavos = ec.starkCurve.getStarkKey(num.toHex(privateKeyBraavos)); + console.log('pubkey =', starkKeyPubBraavos.toString()); + const BraavosProxyAddress = calculateAddressBraavos(privateKeyBraavos); + const BraavosInitializer = calcBraavosInit(starkKeyPubBraavos); + const BraavosProxyConstructorCallData = BraavosProxyConstructor(BraavosInitializer); + max_fee ??= await estimateBraavosAccountDeployFee(privateKeyBraavos, provider); + const version = hash.transactionVersion; + const signatureBraavos = getBraavosSignature( + BraavosProxyAddress, + BraavosProxyConstructorCallData, + starkKeyPubBraavos, + version, + max_fee, + await provider.getChainId(), + nonce, + privateKeyBraavos + ); + + return provider.deployAccountContract( + { + classHash: BraavosProxyClassHash.toString(), + addressSalt: starkKeyPubBraavos, + constructorCalldata: BraavosProxyConstructorCallData, + signature: signatureBraavos, + }, + { + nonce, + maxFee: max_fee, + version, + } + ); +} diff --git a/www/versioned_docs/version-6.24.1/guides/estimate_fees.md b/www/versioned_docs/version-6.24.1/guides/estimate_fees.md new file mode 100644 index 000000000..de24f8d3d --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/estimate_fees.md @@ -0,0 +1,138 @@ +--- +sidebar_position: 11 +--- + +# Estimate fees + +By default, all non-free Starknet commands (declare, deploy, invoke) work without any limitation of cost. + +Nevertheless, you might want to inform the DAPP user of the cost of the incoming transaction before proceeding and requesting its validation. + +Starknet.js proposes several functions to estimate the fees: + +## estimateInvokeFee + +To estimate the cost to invoke a contract in the network: + +```typescript +const { suggestedMaxFee: estimatedFee1 } = await account0.estimateInvokeFee({ + contractAddress: testAddress, + entrypoint: 'increase_balance', + calldata: ['10', '30'], +}); +``` + +The result is in `estimatedFee1`, of type BigInt. Unit is WEI for "legacy" transactions, and FRI for V3 transactions. + +The complete answer for a "legacy" transaction : + +```typescript +{ + overall_fee: 2499000034986n, + gas_consumed: 2499n, + gas_price: 1000000014n, + unit: 'WEI', + suggestedMaxFee: 3748500052479n, + resourceBounds: { + l2_gas: { max_amount: '0x0', max_price_per_unit: '0x0' }, + l1_gas: { max_amount: '0xabc', max_price_per_unit: '0x59682f15' } + } +} +``` + +The complete answer for a V3 transaction : + +```typescript +{ + overall_fee: 46098414083169n, + gas_consumed: 2499n, + gas_price: 18446744331n, + unit: 'FRI', + suggestedMaxFee: 69147621124753n, + resourceBounds: { + l2_gas: { max_amount: '0x0', max_price_per_unit: '0x0' }, + l1_gas: { max_amount: '0xabc', max_price_per_unit: '0x671447890' } + } +} +``` + +## estimateDeclareFee + +To estimate the cost to declare a contract in the network: + +```typescript +const { suggestedMaxFee: estimatedFee1 } = await account0.estimateDeclareFee({ + contract: compiledTest, + classHash: testClassHash, +}); +``` + +The result is in `estimatedFee1`, of type BigInt. + +## estimateDeployFee + +To estimate the cost to deploy a contract in the network: + +```typescript +const { suggestedMaxFee: estimatedFee1 } = await account0.estimateDeployFee({ + classHash: testClassHash, + // constructorCalldata is not necessary if the contract to deploy has no constructor + constructorCalldata: callData, +}); +``` + +The result is in `estimatedFee1`, of type BigInt. + +## estimateAccountDeployFee + +To estimate the cost to deploy an account in the network: + +```typescript +const { suggestedMaxFee: estimatedFee1 } = await account0.estimateAccountDeployFee({ + classHash: OZaccountClassHash, + constructorCalldata: OZaccountConstructorCallData, + contractAddress: OZcontractAddress, +}); +``` + +The result is in `estimatedFee1`, of type BigInt. + +## Fee limitation + +In all non-free functions, you can add an optional parameter limiting the fee consumption. +If the fee has been previously estimated, you can use this value for this parameter, but sometimes this value is under-evaluated: **don't hesitate to add a margin of approximately 10%**: + +```typescript +(estimatedFee1 * 11n) / 10n; +``` + +You can also use the `stark.estimatedFeeToMaxFee` function: + +```typescript +import { stark } from 'starknet'; +stark.estimatedFeeToMaxFee(estimatedFee1, 0.1); +``` + +Example for declaring: + +```typescript +const { suggestedMaxFee: estimatedFee1 } = await account0.estimateDeclareFee({ + contract: compiledTest, +}); + +const declareResponse = await account0.declare( + { contract: compiledTest }, + { maxFee: (estimatedFee1 * 11n) / 10n } +); +``` + +## Real fee paid + +After the processing of the transaction, you can read the fee that has really been paid : + +```typescript +const txR = await provider.waitForTransaction(txH); +if (txR.isSuccess()) { + console.log('Fee paid =', txR.actual_fee); +} +``` diff --git a/www/versioned_docs/version-6.24.1/guides/events.md b/www/versioned_docs/version-6.24.1/guides/events.md new file mode 100644 index 000000000..d7c38a8e4 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/events.md @@ -0,0 +1,217 @@ +--- +sidebar_position: 13 +--- + +# Events + +A contract may emit events throughout its execution. Each event contains the following fields: + +- from_address: address of the contract emitting the events +- keys: a list of field elements +- data: a list of field elements + +The keys can be used for indexing the events, while the data may contain any information that we wish to log. + +The events are recorded in the blocks of the blockchain. + +Example of Cairo code for an event: + +```rust +#[derive(Drop, starknet::Event)] + struct EventPanic { + #[key] + errorType: u8, + errorDescription: felt252, + } +``` + +Here we have an event called `EventPanic`, with an u8 stored in keys, and a felt252 (text) in data. + +## Why events ? + +Events are a useful tool for logging and notifying external entities about specific occurrences within a contract, with a timestamp (the block number). They emit data that can be accessed by everybody. + +Some cases: + +- When a specific value is reached in a contract, an event can be created to store the fact that this value has been reached at a specific block number. +- When the L1 network has triggered the execution of a L2 contract, you can store in the event some results and when it occurs. + +An event can be useful also when you invoke a contract. When you invoke a Cairo function (meaning to write in the network), the API does not authorize any response (only call functions can provide an answer). To generate an event in the code is a way to provide a response (for example for the creation of an account, an event is generated to return the account address). + +## With the Transaction hash + +If you use Starknet.js to invoke a Cairo function that will trigger a new event, you will receive the transaction hash as a response. Preserve it so it can be used to easily retrieve the event data. + +Example of invocation: + +```typescript +const transactionHash = myContract.invoke('emitEventPanic', [8, 'Mega Panic.']); +``` + +Then get the transaction receipt: + +```typescript +const txReceipt = await provider.waitForTransaction(transactionHash); +``` + +### Raw response + +You can recover all the events related to this transaction hash: + +```typescript +if (txReceipt.isSuccess()) { + const listEvents = txReceipt.events; +} +``` + +The result is an array of events (here only one event): + +```typescript +[ + { + from_address: '0x47cb13bf174043adde61f7bea49ab2d9ebc575b0431f85bcbfa113a6f93fc4', + keys: ['0x3ba972537cb2f8e811809bba7623a2119f4f1133ac9e955a53d5a605af72bf2', '0x8'], + data: ['0x4d6567612050616e69632e'], + }, +]; +``` + +The first parameter in the `keys` array is a hash of the name of the event, calculated this way: + +```typescript +const nameHash = num.toHex(hash.starknetKeccak('EventPanic')); +``` + +:::info +In some cases (when an event is coded in a Cairo component, without the `#[flat]` flag), this hash is handled in several numbers. +::: + +The second parameter is the `errorType` variable content (stored in keys array because of the `#[key]` flag in the Cairo code). + +The `data` array contains the `errorDescription` variable content (`'0x4d6567612050616e69632e'` corresponds to the encoded value of "Mega Panic.") + +You can decode it with: + +```typescript +const ErrorMessage = shortString.decodeShortString('0x4d6567612050616e69632e'); +``` + +### Parsed response + +Once you have the transaction receipt, you can parse the events to have something easier to process. +We will perform parsing this way: + +```typescript +const events = myTestContract.parseEvents(txReceipt); +``` + +The result is an array of parsed events (here only one event): + +```typescript +events = [ + { + EventPanic: { errorType: 8n, errorDescription: 93566154138418073030976302n }, + }, +]; +``` + +Easier to read and process, isn't it? + +## Without transaction hash + +If you don't have the transaction Hash of the contract execution that created the event, it will be necessary to search inside the blocks of the Starknet blockchain. + +In this example, if you want to read the events recorded in the last 10 blocks, you need to use a method available from an RPC node. The class `RpcProvider` is available for this case: + +```typescript +import { RpcProvider } from 'starknet'; +const provider = new RpcProvider({ nodeUrl: `${myNodeUrl}` }); +const lastBlock = await provider.getBlock('latest'); +const keyFilter = [[num.toHex(hash.starknetKeccak('EventPanic')), '0x8']]; +const eventsList = await provider.getEvents({ + address: myContractAddress, + from_block: { block_number: lastBlock.block_number - 9 }, + to_block: { block_number: lastBlock.block_number }, + keys: keyFilter, + chunk_size: 10, +}); +``` + +:::info +`address, from_block, to_block, keys` are all optional parameters. +::: + +:::tip +If you don't want to filter by key, you can either remove the `keys` parameter, or affect it this way: `[[]]` . +::: + +:::warning CAUTION +An event can be nested in a Cairo component (See the Cairo code of the contract to verify). In this case, the array of keys will start with additional hashes, and you will have to adapt your code in consequence ; in this example, we have to skip one hash : + +```typescript +const keyFilter = [[], [num.toHex(hash.starknetKeccak('EventPanic'))]]; +``` + +::: + +Here we have only one event. You can easily read this event: + +```typescript +const event = eventsList.events[0]; +console.log('data length =', event.data.length, 'key length =', event.keys.length, ':'); +console.log('\nkeys =', event.keys, 'data =', event.data); +``` + +To limit the workload of the node, the parameter `chunk_size` defines a size of chunk to read. If the request needs an additional chunk, the response includes a key `continuation_token` containing a string to use in the next request. +Hereunder a code to read all the chunks of a request: + +```typescript +const keyFilter = [num.toHex(hash.starknetKeccak('EventPanic')), '0x8']; +let block = await provider.getBlock('latest'); +console.log('bloc #', block.block_number); + +let continuationToken: string | undefined = '0'; +let chunkNum: number = 1; +while (continuationToken) { + const eventsRes = await providerRPC.getEvents({ + from_block: { + block_number: block.block_number - 30, + }, + to_block: { + block_number: block.block_number, + }, + address: myContractAddress, + keys: [keyFilter], + chunk_size: 5, + continuation_token: continuationToken === '0' ? undefined : continuationToken, + }); + const nbEvents = eventsRes.events.length; + continuationToken = eventsRes.continuation_token; + console.log('chunk nb =', chunkNum, '.', nbEvents, 'events recovered.'); + console.log('continuation_token =', continuationToken); + for (let i = 0; i < nbEvents; i++) { + const event = eventsRes.events[i]; + console.log( + 'event #', + i, + 'data length =', + event.data.length, + 'key length =', + event.keys.length, + ':' + ); + console.log('\nkeys =', event.keys, 'data =', event.data); + } + chunkNum++; +} +``` + +If you want to parse an array of events of the same contract (abi of the contract available) : + +```typescript +const abiEvents = events.getAbiEvents(abi); +const abiStructs = CallData.getAbiStruct(abi); +const abiEnums = CallData.getAbiEnum(abi); +const parsed = events.parseEvents(eventsRes.events, abiEvents, abiStructs, abiEnums); +console.log('parsed events=', parsed); +``` diff --git a/www/versioned_docs/version-6.24.1/guides/interact.md b/www/versioned_docs/version-6.24.1/guides/interact.md new file mode 100644 index 000000000..ff8392f40 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/interact.md @@ -0,0 +1,279 @@ +--- +sidebar_position: 6 +--- + +# Interact with your contract + +Once your provider, contract, and account are connected, you can interact with the contract: + +- you can read the memory of the contract, without fees. +- you can write to memory, but you have to pay fees. + - On Mainnet, you have to pay fees with a bridged ETH token. + - On Testnet, you have to pay with a bridged Sepolia ETH token. + - On devnet, you have to pay with a dummy ETH token. + +Your account should be funded enough to pay fees (0.01 ETH should be enough to start). + +![](./pictures/Interact_contract.png) + +Here we will interact with a `test.cairo` contract (Cairo 1) already deployed in Sepolia Testnet at the address: + +- [0x02d2a4804f83c34227314dba41d5c2f8a546a500d34e30bb5078fd36b5af2d77](https://sepolia.starkscan.co/contract/0x02d2a4804f83c34227314dba41d5c2f8a546a500d34e30bb5078fd36b5af2d77) + +This contract contains a storage variable called `balance`. + +- It can be read with the `fn get_balance(self: @TContractState) -> felt252;` +- Balance can be modified with `fn increase_balance(ref self: TContractState, amount: felt252);` + +```typescript +import { RpcProvider, Contract, Account, ec, json } from 'starknet'; +``` + +## 🔍 Read from contract memory, with meta-class + +To read the balance, you need to connect an RpcProvider and a Contract. +You have to call Starknet, with the use of the meta-class method: `contract.function_name(params)` (here `params` is not necessary, because there are no parameters for the `get_balance` function). + +```typescript +//initialize provider with a Sepolia Testnet node +const provider = new RpcProvider({ nodeUrl: `${myNodeUrl}` }); +// Connect the deployed Test contract in Sepolia Testnet +const testAddress = '0x02d2a4804f83c34227314dba41d5c2f8a546a500d34e30bb5078fd36b5af2d77'; + +// read abi of Test contract +const { abi: testAbi } = await provider.getClassAt(testAddress); +if (testAbi === undefined) { + throw new Error('no abi.'); +} +const myTestContract = new Contract(testAbi, testAddress, provider); + +// Interaction with the contract with call +const bal1 = await myTestContract.get_balance(); +console.log('Initial balance =', bal1); // Cairo 1 contract +// With Cairo 0 contract, `bal1.res.toString()` because the return value is called 'res' in the Cairo 0 contract. +// With Cairo 1 contract, the result value is in `bal1`, as bigint. +``` + +## ✍️ Write to contract memory, with meta-class + +To increase the balance, you need in addition a connected and funded Account. + +You have to invoke Starknet, with the use of the meta-class method: `contract.function_name(params)` + +> After the invoke, you have to wait the incorporation of the modification of Balance in the network, with `await provider.waitForTransaction(transaction_hash)` + +Here is an example of how to increase and check the balance: + +```typescript +//initialize provider with a Sepolia Testnet node +const provider = new RpcProvider({ nodeUrl: `${myNodeUrl}` }); +// connect your account. To adapt to your own account: +const privateKey0 = process.env.OZ_ACCOUNT_PRIVATE_KEY; +const account0Address = '0x123....789'; + +const account0 = new Account(provider, account0Address, privateKey0); + +// Connect the deployed Test contract in Testnet +const testAddress = '0x02d2a4804f83c34227314dba41d5c2f8a546a500d34e30bb5078fd36b5af2d77'; + +// read abi of Test contract +const { abi: testAbi } = await provider.getClassAt(testAddress); +if (testAbi === undefined) { + throw new Error('no abi.'); +} +const myTestContract = new Contract(testAbi, testAddress, provider); + +// Connect account with the contract +myTestContract.connect(account0); + +// Interactions with the contract with meta-class +const bal1 = await myTestContract.get_balance(); +console.log('Initial balance =', bal1); // Cairo 1 contract +const myCall = myTestContract.populate('increase_balance', [10]); +const res = await myTestContract.increase_balance(myCall.calldata); +await provider.waitForTransaction(res.transaction_hash); + +const bal2 = await myTestContract.get_balance(); +console.log('Final balance =', bal2); +``` + +`Contract.populate()` is the recommended method to define the parameters to call/invoke the Cairo functions. + +## ✍️ Send a V3 transaction, paying fees with STRK + +We have seen in the previous chapter how to send a "legacy" transaction, with fees paid in ETH. +You can also send transactions and pay the fees with the STRK token. It is called a V3 transaction. +To perform a such transaction, you need: + +- an account compatible with V3 transactions. +- Some STRK tokens in this account. +- a node with a rpc spec 0.6.0. +- Starknet.js v6. + +You have to initialize the account this way : + +```typescript +const account0 = new Account( + provider, + accountAddress0, + privateKey0, + undefined, + constants.TRANSACTION_VERSION.V3 +); +``` + +By this way, all the transactions sent by this account are by default performed in V3 (paid with STRK). If the transactionVersion parameter is omitted, "legacy" transactions will be performed. + +One example of V3 transaction, using account.execute : + +```typescript +const myCall = myTestContract.populate('test_fail', [100]); +const maxQtyGasAuthorized = 1800n; // max quantity of gas authorized +const maxPriceAuthorizeForOneGas = 12n * 10n ** 9n; // max FRI authorized to pay 1 gas (1 FRI=10**-18 STRK) +console.log('max authorized cost =', maxQtyGasAuthorized * maxPriceAuthorizeForOneGas, 'FRI'); +const { transaction_hash: txH } = await account0.execute(myCall, { + version: 3, + maxFee: 10 ** 15, + feeDataAvailabilityMode: RPC.EDataAvailabilityMode.L1, + tip: 10 ** 13, + paymasterData: [], + resourceBounds: { + l1_gas: { + max_amount: num.toHex(maxQtyGasAuthorized), + max_price_per_unit: num.toHex(maxPriceAuthorizeForOneGas), + }, + l2_gas: { + max_amount: num.toHex(0), + max_price_per_unit: num.toHex(0), + }, + }, +}); +const txR = await provider.waitForTransaction(txH); +if (txR.isSuccess()) { + console.log('Paid fee =', txR.actual_fee); +} +``` + +Yes, it's much more complicated. Let's see in detail. +In fact, Starknet v0.13.0 is using few of these parameters : +`feeDataAvailabilityMode: RPC.EDataAvailabilityMode.L2` is not yet accepted. +`feeDataAvailabilityMode: RPC.EDataAvailabilityMode.L1` is accepted. +`maxFee : 10**15` : value not taken into account in V3 +`tip: 10**13` : value not yet taken into account +`paymasterData: []` : only empty value currently authorized + +```typescript +l1_gas: { + max_amount: num.toHex(2000n), // max quantity of gas authorized + max_price_per_unit: num.toHex(12n * 10n ** 9n) // max FRI authorized to pay 1 gas (here 12 G FRI) +}, +l2_gas: { + max_amount: num.toHex(0), // currently set to 0 + max_price_per_unit: num.toHex(0) // currently set to 0 +} +``` + +Take care that these gas values have to be `string` type. +In future versions, Starknet will uses all these parameters. +The `version` parameter is optional (account settings by default), and overtakes the `transactionVersion` parameter of the Account instantiation. Here, it's not really necessary to use this parameter, as the same transaction version has been already initialized in the account instantiation. + +## Sending sequential transactions + +If you intend to send sequential transactions through the contract object, like so: + +```typescript +const tx = await cairo1Contract.array2d_ex(data); +const tx1 = await cairo1Contract.array2d_ex(data); +``` + +Be sure to use `waitForTransaction` between the calls, because you may experience issues with the nonce not incrementing: + +```typescript +const tx = await cairo1Contract.array2d_ex(data); +await provider.waitForTransaction(tx.transaction_hash); +const tx1 = await cairo1Contract.array2d_ex(data); +await provider.waitForTransaction(tx1.transaction_hash); +``` + +## Write several operations, with Account.execute + +In a Starknet transaction, you can include several invoke operations. It will be performed with `account.execute`. + +We will later see this case more in detail in this dedicated [guide](multiCall.md), but in summary, you use this command with the following parameters: + +- address of the contract to invoke +- name of the function to invoke +- and an array of parameters for this function + +```typescript +const result = await account.execute({ + contractAddress: myContractAddress, + entrypoint: 'transfer', + calldata: CallData.compile({ + recipient: receiverAddress, + amount: cairo.uint256(100000n), + }), +}); +await provider.waitForTransaction(result.transaction_hash); +``` + +## Other existing methods + +Some other useful methods to interact with Starknet: + +### Function name defined in the code + +If you want to call a function with its name contained in a variable: + +```typescript +const listFn = ['calc-sum', 'calc-hash', 'calc-proof']; +// fnChoice is a number defined during execution +const res = await myTestContract[listFn[fnChoice]](200, 234567897n, 865423); +``` + +### Light and fast call + +If you want to have a very fast execution, with minimum resource usage: + +```typescript +const specialParameters: Calldata = ['2036735872918048433518', '5130580', '18']; +const getResponse = await myAccount.call('get_bal', specialParameters, { parseRequest: false }); +``` + +You provide the low-level numbers expected by Starknet, without any parsing or checking. See more details [here](define_call_message.md#parse-configuration). + +## Transaction receipt response + +You can interpret the transaction receipt response to check whether it succeeded or not. + +```typescript +const result = await account.execute(myCall); +const txR = await provider.waitForTransaction(result.transaction_hash); + +console.log(txR.statusReceipt, txR.value); +console.log(txR.isSuccess(), txR.isRejected(), txR.isReverted(), txR.isError()); + +txR.match({ + success: () => { + console.log('Success'); + }, + _: () => { + console.log('Unsuccess'); + }, +}); + +txR.match({ + success: (txR: SuccessfulTransactionReceiptResponse) => { + console.log('Success =', txR); + }, + rejected: (txR: RejectedTransactionReceiptResponse) => { + console.log('Rejected =', txR); + }, + reverted: (txR: RevertedTransactionReceiptResponse) => { + console.log('Reverted =', txR); + }, + error: (err: Error) => { + console.log('An error occured =', err); + }, +}); +``` diff --git a/www/versioned_docs/version-6.24.1/guides/intro.md b/www/versioned_docs/version-6.24.1/guides/intro.md new file mode 100644 index 000000000..232ea159a --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/intro.md @@ -0,0 +1,54 @@ +--- +sidebar_position: 1 +--- + +# Getting Started + +## Installation + +```bash +# use the main branch + +npm install starknet + +# to use latest features (merges in develop branch) + +npm install starknet@next +``` + +## Running tests locally + +Local tests rely on [Starknet Devnet](https://github.com/0xSpaceShard/starknet-devnet-rs), a local testnet emulation. + +Launch a Devnet instance and run: + +```bash +npm run test # all tests +npm run test ./__tests__/contract.test.ts # just one test suite +``` + +## Running docs locally + +If you want to make changes to the documentation and see how it looks before making a PR: + +```bash +cd www +npm install # install docusaurus +npm run start # fires up a local documentation site +``` + +## Compiling Starknet contracts + +Please check the Starknet documentation [here](https://docs.starknet.io/documentation/quick_start/declare_a_smart_contract/#compiling_a_smart_contract) to compile Starknet contracts. + +Additional helpful resources can also be found at [OpenZeppelin](https://docs.openzeppelin.com/contracts-cairo/0.6.1/) documentation site. + +## Interacting with contracts and accounts + +For a basic overview on how to interact with contracts and accounts continue following this guide. + +For some more extensive examples visit PhilippeR26's [workshop](https://github.com/PhilippeR26/starknet.js-workshop-typescript). + +## Contracts used in the guides + +You can find the compiled contracts used in these guides in the [\_\_mocks\_\_](https://github.com/starknet-io/starknet.js/tree/develop/__mocks__/cairo/myAccountAbstraction/) directory. diff --git a/www/versioned_docs/version-6.24.1/guides/migrate.md b/www/versioned_docs/version-6.24.1/guides/migrate.md new file mode 100644 index 000000000..047cd3b1b --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/migrate.md @@ -0,0 +1,105 @@ +--- +sidebar_position: 101 +--- + +# Migrate from v5 to v6 + +This document only covers the features present in v5 which have changed in some significant way in v6. + +If you encounter any missing changes, please let us know and we will update this guide. + +## Transaction receipt + +When sending a transaction, the receipt type has changed. +In V5, it's an object that can have varied definitions, depending on the status and the type of transaction. +In V6, this object is in `TxR.value`, and several helpers are available (`.statusReceipt`, `isSuccess()`, `isRejected()`, `isReverted()`, `.isError()`, `match`, ...) + +```typescript +const response = await ethContract.approve(swapContractAddress, cairo.uint256(100000)); +const transactionReceipt = await provider.waitForTransaction(response.transaction_hash); + +// v5 : transactionReceipt is just an object +{ +type: 'INVOKE', + transaction_hash: '0x5286217518c621581ac85505a99ffe182ce1114abaa8fce8b418d2b27c3c04c', + actual_fee: { unit: 'WEI', amount: '0x1c1902fe99800' }, + messages_sent: [], + execution_status: 'SUCCEEDED', + finality_status: 'ACCEPTED_ON_L2', + // ... +} +// v6 : transactionReceipt is an object + helpers +const receipt = transactionReceipt.value; +const status: boolean = transactionReceipt.isSuccess(); + +``` + +> See this [guide](./interact.md#transaction-receipt-response) + +## Long strings + +Starknet.js v6 is compatible with Cairo v2.4.0. It means that long strings (>31 characters) are automatically handled and converted to the Cairo `ByteArray` type. +This means that the approach to convert a long string to an array of felts (for Cairo 0 contracts for example) has changed: + +```typescript +// v5 +const feltArray: BigNumberish[] = CallData.compile( + 'http://addressOfMyERC721pictures/storage/image1.jpg' +); + +// v6 +const feltArray: BigNumberish[] = CallData.compile( + shortString.splitLongString('http://addressOfMyERC721pictures/storage/image1.jpg') +); +``` + +## Fees + +All functions related to gas price and fee estimation have changed output types. + +For example, if you read the content of a block with v5 the ETH gas price was a top level property, with v6 the same information is nested a level deeper: + +```typescript +const resp: GetBlockResponse = await myProvider.getBlock('latest'); + +// v5 +const gasPrice = resp.gas_price; + +// v6 +const gasPrice = resp.l1_gas_price.price_in_wei; +``` + +Another example is `estimateDeclareFee()` where the response object has changed: + +```typescript +const fee = await account0.estimateDeclareFee({ contract: compiledContract }); + +// v5 response +fee = { + overall_fee: 247700000000000n, + gas_consumed: 2477n, + gas_price: 100000000000n, + suggestedMaxFee: 371550000000000n, +}; + +// v6 response +fee = { + overall_fee: 247700000000000n, + gas_consumed: 2477n, + gas_price: 100000000000n, + unit: undefined, + suggestedMaxFee: 371550000000000n, + resourceBounds: { + l2_gas: { max_amount: '0x0', max_price_per_unit: '0x0' }, + l1_gas: { max_amount: '0xaa4', max_price_per_unit: '0x22ecb25c00' }, + }, +}; +``` + +You have to adapt your code to all these new entries. +In general, pay attention to the result types of methods that return a response from an RPC node. + +
+
+ +For the old v4 to v5 migration instructions check [here](./migrate_v4). diff --git a/www/versioned_docs/version-6.24.1/guides/migrate_v4.md b/www/versioned_docs/version-6.24.1/guides/migrate_v4.md new file mode 100644 index 000000000..1f0a6a16b --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/migrate_v4.md @@ -0,0 +1,195 @@ +--- +sidebar_position: 102 +sidebar_class_name: hidden +--- + +# Migrate from v4 to v5 + +This document only covers the features present in v4 which have changed in some significant way in v5. + +If you encounter any missing changes, please let us know and we will update this guide. + +## _number_ utility replaced by _num_ + +To avoid confusion with the native `number` type, the `number` namespace has been renamed to `num`. + +```typescript +// v4 +const res = number.isHex(d1); + +// v5 +const res = num.isHex(d1); +``` + +`number.toFelt()` has been removed, if manual handling is necessary `cairo.felt()` can be used. + +## _bn.js_ no longer supported + +The `bn.js` library has been removed in favor of using the native JavaScript `BigInt` data type. + +```typescript +// v4 +const qty = new BN('0x4a8bc'); + +// v5 +const qty1 = BigInt('0x4a8bc'); +const qty2 = 32786324915918425n; +``` + +The `BigNumberish` type is now defined as: + +- String representing a number: "123", "0xabc2" +- Number (max 53 bits): 123 +- BigInt (max 255 bits): 12345612345n + +Some commonly used `BN` utility methods are of course no longer present, however, they have simple equivalents: + +- `.mul()` and `.div()`: common operators can be used with bigints: `+` `-` `*` `/` +- `.umod()` can be easily replaced with: + +```typescript +// v4 +const c = a.umod(b); + +// v5 +const tmp = a % b; // a and b are bigint +const c = tmp >= 0n ? tmp : tmp + b; +``` + +- `.toarray()` can be replaced with `num.hexToBytes(a)` + +## ec (elliptic curve) + +With the `bn.js` removal the accompanying elliptic curve libraries have also been replaced, +consequently many functions have been relocated or modified. + +The concept of a key pair, where the private and public key are used as a single entity, has been removed. +`ec.getKeyPair()`, `ec.getKeyPairFromPublicKey()` and `ec.genKeyPair()` do not exist anymore, corresponding +methods use the private key directly. Check the following examples: + +`Account` creation: + +```typescript +// v4 +const privateKey0 = accountTestnet4PrivateKey; +const account0Address: string = accountTestnet4Address; +const starkKeyPair0 = ec.getKeyPair(privateKey0); +const account0 = new Account(provider, account0Address, starkKeyPair0); + +// v5 +const privateKey0 = accountTestnet4PrivateKey; +const account0Address: string = accountTestnet4Address; +const account0 = new Account(provider, account0Address, privateKey0); +``` + +Derive partial public key (`starknetPubKey`): + +```typescript +// v4 +const starknetPubKey = ec.getStarkKey(keyPair); + +// v5 +const starknetPubKey = ec.starkCurve.getStarkKey(privateKey); // only X part of full pubKey +``` + +Derive full public key (`fullPubKey`): + +```typescript +// v4 +const fullPubKey = encode.addHexPrefix(keyPair.getPublic('hex')); + +// v5 +const fullPubKey = encode.addHexPrefix( + encode.buf2hex(ec.starkCurve.getPublicKey(privateKey, false)) +); // full key +``` + +`ec.sign` and `ec.verify`: + +```typescript +// v4 +const signature = ec.sign(keyPair, msgHash); +const isVerified = ec.verify(inferredKeyPair, msgHash, signature); + +// v5 +const signature = ec.starkCurve.sign(msgHash, privateKey); +const verifStarknet = ec.starkCurve.verify(signature, msgHash, fullPubKeySource); +``` + +`pedersen` hash calculation: + +```typescript +// v4 +const hashMsg = hash.pedersen([account, price]); + +// v5 +const hashMsg = ec.starkCurve.pedersen(account, price); +``` + +## 'declare**And**Deploy' renaming + +The `account.declareDeploy()` method has been renamed to `declareAndDeploy()`: + +```typescript +// v4 +const response = await account0.declareDeploy({ contract: compiledTest, classHash: testClassHash }); + +// v5 +const response = await account0.declareAndDeploy({ + contract: compiledHelloSierra, + casm: compiledHelloCasm, +}); +``` + +> Note: `declare` and `declareAndDeploy` no longer require `classHash`! The new ec library is now able to calculate it quickly +> and does so automatically when it is not provided. If a contract has been written in Cairo 1 the `casm` property is needed. + +## Calldata and returned values + +Deep modifications and improvements have been performed concerning exchange of data with the Cairo contract functions. +The complete new rules are listed in this **[guide](define_call_message.md)**. +In short, it is easier to construct a list of parameters while relying on the built-in verification of the conformity to the abi. +Returned values from a Cairo 0 contract are identical, but returned values from a Cairo 1 contract are easier to recover. + +`stark.compileCalldata()` has been replaced by `CallData.compile()`. Regardless, the new `Contract.populate()` and `myCallData.compile()` methods are the recommended way to create calldata. + +## Provider + +Constants for `Provider` initialization have been updated. Only `RpcProvider` is now authorized: + +```typescript +// v4 +const providerTestnet = new Provider({ sequencer: { network: 'goerli-alpha' } }); + +// v5 +const providerTestnet = new RpcProvider({ nodeUrl: `${myNodeUrl}` }); +``` + +`Provider.chainId()` has been removed, `RpcProvider.getChainId()` should be used. + +```typescript +// v4 +const chainId = myProvider.chainId(); + +// v5 +const chainId = await myProvider.getChainId(); +``` + +## Uint256 + +The approach to create a `uint256` variable has changed: + +```typescript +// v4 +const amountIn = uint256.bnToUint256(amountToSwap); + +// v5 +const amountIn: Uint256 = cairo.uint256(50000n); +``` + +## get-starknet + +In your DAPP React code you can connect to ArgentX or Braavos wallets using the `get-starknet` library. + +The current v2.1.0 version is not yet compatible with starknet.js v5. +An update is expected. diff --git a/www/versioned_docs/version-6.24.1/guides/multiCall.md b/www/versioned_docs/version-6.24.1/guides/multiCall.md new file mode 100644 index 000000000..381135aa2 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/multiCall.md @@ -0,0 +1,54 @@ +--- +sidebar_position: 16 +--- + +# Interact with more than one contract within one transaction + +Interacting with more than one contract with one transaction is one of Starknet's features. To use this feature, two contracts are required. + +## Setup + +Set up basic stuff before multicall. + +```javascript +// devnet private key from Account #0 if generated with --seed 0 +const privateKey = '0xe3e70682c2094cac629f6fbed82c07cd'; +const accountAddress = '0x7e00d496e324876bbc8531f2d9a82bf154d1a04a50218ee74cdd372f75a551a'; + +// Ether token contract address +const contractAddress_1 = '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7'; + +// contract address which requires ether +const contractAddress_2 = '0x078f36c1d59dd29e00a0bb60aa2a9409856f4f9841c47f165aba5bab4225aa6b'; + +const account = new Account(provider, accountAddress, privateKey); +``` + +## Interact with contracts + +Interact with more than one contract by using `account.execute([calls])`. The example is as follows. + +```javascript +const multiCall = await account.execute([ + // Calling the first contract + { + contractAddress: contractAddress_1, + entrypoint: 'approve', + // approve 1 wei for bridge + calldata: CallData.compile({ + spender: contractAddress_2, + amount: cairo.uint256(1), + }), + }, + // Calling the second contract + { + contractAddress: contractAddress_2, + entrypoint: 'transfer_ether', + // transfer 1 wei to the contract address + calldata: CallData.compile({ + amount: cairo.uint256(1), + }), + }, +]); +await provider.waitForTransaction(multiCall.transaction_hash); +``` diff --git a/www/versioned_docs/version-6.24.1/guides/outsideExecution.md b/www/versioned_docs/version-6.24.1/guides/outsideExecution.md new file mode 100644 index 000000000..db3111bfb --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/outsideExecution.md @@ -0,0 +1,297 @@ +--- +sidebar_position: 19 +--- + +# Outside Execution (SNIP-9) + +Outside Execution, also known as meta-transactions, allows a protocol to submit transactions on behalf of a user account, as long as they have the relevant signatures. This feature is implemented according to [SNIP-9](https://github.com/starknet-io/SNIPs/blob/main/SNIPS/snip-9.md). + +## Why Use Outside Execution? + +Outside Execution provides several benefits: + +1. **Delayed Orders**: Protocols can have more atomic control over transaction execution, useful for scenarios like matching limit orders. +2. **Fee Subsidy**: The sender of the transaction pays gas fees, allowing accounts without gas tokens to still execute transactions. + +## Using Outside Execution + +### Check SNIP-9 Support + +The account that will sign the outside transaction has to be compatible with SNIP-9 (V1 or V2). +At mid-2024 : + +| account | compatibility | +| :------------------: | :-----------: | +| ArgentX v0.3.0 | v1 | +| ArgentX v0.4.0 | v2 | +| Braavos v1.0.0 | v2 | +| OpenZeppelin v0.17.0 | v2 (\*) | + +> (\*): only OpenZeppelin accounts including the `src9` component : +> Starknet account: class = [0x540d7f5ec7ecf317e68d48564934cb99259781b1ee3cedbbc37ec5337f8e688](https://voyager.online/class/0x0540d7f5ec7ecf317e68d48564934cb99259781b1ee3cedbbc37ec5337f8e688) +> ETH account: class = [0x3940bc18abf1df6bc540cabadb1cad9486c6803b95801e57b6153ae21abfe06](https://voyager.online/class/0x3940bc18abf1df6bc540cabadb1cad9486c6803b95801e57b6153ae21abfe06) + +Before using Outside Execution, check if the account that will sign the transaction supports SNIP-9: + +```typescript +const signerAccount = new Account(myProvider, accountAddress, privateKey); +const version = await signerAccount.getSnip9Version(); +if (version === OutsideExecutionVersion.UNSUPPORTED) { + throw new Error('This account is not SNIP-9 compatible.'); +} +``` + +:::info +The account that will sign the transaction needs to be compatible with SNIP-9. +Nevertheless, the account that will execute the transaction do not needs to be SNIP-9 compatible ; it just needs to have enough fees to pay the transaction. +::: + +### Create an `OutsideTransaction` Object + +To create an OutsideExecution object, you need first to prepare the call: + +```typescript +const call1: Call = { + contractAddress: erc20Address, + entrypoint: 'transfer', + calldata: { + recipient: recipientAddress, + amount: cairo.uint256(3n * 10n ** 16n), + }, +}; +``` + +Then, you have to initialize some parameters : + +- The `caller` is the address of the account that will execute the outside transaction. +- The transaction can be executed in a time frame that is defined in `execute_after` and `execute_before`, using Unix timestamp. + +```typescript +const callOptions: OutsideExecutionOptions = { + caller: executorAccount.address, + execute_after: Math.floor(Date.now() / 1000) - 3600, // 1 hour ago + execute_before: Math.floor(Date.now() / 1000) + 3600, // 1 hour from now +}; +``` + +:::warning +You can use the string `"ANY_CALLER"` as content of the `caller` property. To use with care, as anybody that get your `OutsideTransaction` object and execute it. +::: + +To create the `OutsideTransaction` object, you just have to use: + +```typescript +const outsideTransaction1: OutsideTransaction = await signerAccount.getOutsideTransaction( + callOptions, + call1 +); +``` + +:::note +In the same `OutsideTransaction` object, you can include several transactions. So, with only one signature of the signer Account, you can generate an `OutsideTransaction` object that performs many things: + +```typescript +const callOptions: OutsideExecutionOptions = { + caller: executorAccount.address, + execute_after: 100, + execute_before: 200, +}; +const call1 = { + contractAddress: ethAddress, + entrypoint: 'approve', + calldata: { + spender: account2.address, + amount: cairo.uint256(2n * 10n ** 16n), + }, +}; +const call2 = { + contractAddress: ethAddress, + entrypoint: 'transfer', + calldata: { + recipient: account1.address, + amount: cairo.uint256(1n * 10n ** 16n), + }, +}; +const outsideTransaction1: OutsideTransaction = await signerAccount.getOutsideTransaction( + callOptions, + [call1, call2] +); +``` + +::: + +### Process the Outside Execution + +Finally, if you are in the time frame, you can perform the Outside Execution, using the executor Account : + +```typescript +const executorAccount = new Account(provider, executorAddress, executorPrivateKey); +const response = await executorAccount.executeFromOutside(outsideTransaction1); +await provider.waitForTransaction(response.transaction_hash); +``` + +:::info +If you have created several `OutsideTransaction` objects using the same signer account, you can execute them in any order (no nonce problems). +::: + +:::note +In the same command, you can use several `OutsideTransaction` objects created by several signer accounts, even if they are not compatible with the same version of SNIP-9 (V1 or V2): + +```typescript +const outsideTransaction1: OutsideTransaction = await accountAX3.getOutsideTransaction( + callOptions, + call1 +); // V1 compatible +const outsideTransaction2: OutsideTransaction = await accountAX4.getOutsideTransaction( + callOptions, + call2 +); // V2 compatible +const res = await executorAccount.executeFromOutside([outsideTransaction1, outsideTransaction2]); +``` + +::: + +## Example of Outside Execution using a Ledger Nano + +In this example, we want to sign, with a Ledger Nano X, several transactions at 6PM. Then a code is automatically launched each hour until the next day at 8AM, verifying if some conditions are reached. The code will then trigger the execution of some of the transactions signed earlier with the Ledger Nano. +By this way, you can pre-sign some transactions with the Ledger, and if during the night something occurs, a backend can execute automatically some of these transactions, **in any order**. +In this process, **the private key of the Ledger account is never exposed**. + +First, create a Ledger account in devnet-rs. You will find some documentation [here](./signature.md#signing-with-a-ledger-hardware-wallet), and an example [here](https://github.com/PhilippeR26/starknet.js-workshop-typescript/blob/main/src/scripts/ledgerNano/4.deployLedgerAccount.ts). + +The initial balances are : + +| account | ETH balance | +| ----------------------: | ----------- | +| Ledger Account | 20.0 | +| Backend executorAccount | 999.9902013 | +| Account1 | 1000.0 | +| Account2 | 1000.0 | + +Now, we can ask the user to sign on its Ledger some outside transactions: + +```typescript +const callOptions: OutsideExecutionOptions = { + caller: executorAccount.address, + execute_after: Math.floor(Date.now() / 1000) - 3600, // 1 hour ago + execute_before: Math.floor(Date.now() / 1000) + 3600 * 14, // 14 hours from now +}; +const call1 = { + contractAddress: ethAddress, + entrypoint: 'transfer', + calldata: { + recipient: account1.address, + amount: cairo.uint256(1n * 10n ** 18n), + }, +}; +const call2 = { + contractAddress: ethAddress, + entrypoint: 'transfer', + calldata: { + recipient: account2.address, + amount: cairo.uint256(2n * 10n ** 18n), + }, +}; +const call3 = { + contractAddress: ethAddress, + entrypoint: 'transfer', + calldata: { + recipient: account1.address, + amount: cairo.uint256(3n * 10n ** 18n), + }, +}; +const call4 = { + contractAddress: ethAddress, + entrypoint: 'transfer', + calldata: { + recipient: account2.address, + amount: cairo.uint256(4n * 10n ** 18n), + }, +}; +console.log("It's 6PM. Before night, we will now pre-sign 3 outside transactions:"); +console.log( + 'Sign now on the Ledger Nano for :\n- Transfer 1 ETH to account1.\n- Transfer 2 ETH to account2.' +); +const outsideTransaction1: OutsideTransaction = await ledgerAccount.getOutsideTransaction( + callOptions, + [call1, call2] +); + +console.log('Sign now on the Ledger Nano for :\n- Transfer 3 ETH to account1.'); +const outsideTransaction2: OutsideTransaction = await ledgerAccount.getOutsideTransaction( + callOptions, + call3 +); + +console.log('Sign now on the Ledger Nano for :\n- Transfer 4 ETH to account1.'); +const outsideTransaction3: OutsideTransaction = await ledgerAccount.getOutsideTransaction( + callOptions, + call4 +); +``` + +Transfer these 3 `OutsideTransaction` objects to the backend. + +Imagine we are 5 hours later, the backend has decided to execute a transaction: + +```typescript +console.log('The backend has detected a situation that execute Transaction 2.'); +const res0 = await executorAccount.executeFromOutside(outsideTransaction2); +await myProvider.waitForTransaction(res0.transaction_hash); +``` + +The balances are now : + +| account | ETH balance | +| ----------------------: | ----------- | +| Ledger Account | 17.0 | +| Backend executorAccount | 999.9901592 | +| Account1 | 1003.0 | +| Account2 | 1000.0 | + +2 hours later, the backend has decided to execute several transactions: + +```typescript +console.log('The backend has detected a situation that execute simultaneously Transactions 1 & 3.'); +const res1 = await executorAccount.executeFromOutside([outsideTransaction1, outsideTransaction3]); +await myProvider.waitForTransaction(res1.transaction_hash); +``` + +The balances are finally : + +| account | ETH balance | +| ----------------------: | ----------- | +| Ledger Account | 10.0 | +| Backend executorAccount | 999.9901005 | +| Account1 | 1004.0 | +| Account2 | 1006.0 | + +:::info +The complete code of this example is available [here](https://github.com/PhilippeR26/starknet.js-workshop-typescript/blob/main/src/scripts/Starknet131/Starknet131-devnet/17.outsideExecuteLedger.ts). +::: + +## Estimate fees for an outside execution: + +On executor side, if you want to estimate how many fees you will pay: + +```typescript +const outsideExecutionCall: Call[] = + outsideExecution.buildExecuteFromOutsideCall(outsideTransaction1); +const estimateFee = await executorAccount.estimateFee(outsideExecutionCall); +``` + +## Simulate an outside execution: + +On executor side, if you want to simulate the transaction: + +```typescript +const outsideExecutionCall: Call[] = + outsideExecution.buildExecuteFromOutsideCall(outsideTransaction1); +const invocations: Invocations = [ + { + type: TransactionType.INVOKE, + payload: outsideExecutionCall, + }, +]; +const responseSimulate = await executorAccount.simulateTransaction(invocations); +``` diff --git a/www/versioned_docs/version-6.24.1/guides/pictures/ERC20.png b/www/versioned_docs/version-6.24.1/guides/pictures/ERC20.png new file mode 100644 index 0000000000000000000000000000000000000000..b79481e54c5bc5d90aef2abe55d22d2e16755870 GIT binary patch literal 59170 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 IUb+?kKN%N-aR2}S literal 0 HcmV?d00001 diff --git a/www/versioned_docs/version-6.24.1/guides/pictures/LedgerConnectivity.png b/www/versioned_docs/version-6.24.1/guides/pictures/LedgerConnectivity.png new file mode 100644 index 0000000000000000000000000000000000000000..248064f226bd9cb9cf7517768a763226a133c4fb GIT binary patch literal 91559 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
{7Q_I3l8IMi$`KR1V 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∓2|KET2Bx;fB(>Q>^+KwwD1xIh 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 literal 0 HcmV?d00001 diff --git a/www/versioned_docs/version-6.24.1/guides/pictures/executeTx.png b/www/versioned_docs/version-6.24.1/guides/pictures/executeTx.png new file mode 100644 index 0000000000000000000000000000000000000000..17dbdb6aa69f529cccd8b81ab12650944cb456ed GIT binary patch literal 44695 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%0DZ`pYOmpi3ni=boeC*$FGYFIp98iE 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 adWz(f_LNbU64^d~!)M}hPx3|eUjKjkbS=UF literal 0 HcmV?d00001 diff --git a/www/versioned_docs/version-6.24.1/guides/pictures/switchNetwork.png b/www/versioned_docs/version-6.24.1/guides/pictures/switchNetwork.png new file mode 100644 index 0000000000000000000000000000000000000000..d502f64d2f8d0f0aceb58244b82fba5127d2266b GIT binary patch literal 34036 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

3fEQFe^w;Hp!A{=#h#Kx?eN1$8>AjyXu~S~> z%7A78HpG_t6+S;dj~s%RSmJq=Bu99YVEo{*(u+$5Nn?f@RZnjKh-R!BBn{LModgxc z6E)LGqC@}7=5dMH|S-btfAoW{X?Ummeyh104t7is}mU|(g&!lI)Hq-ePBkl>}Gv=@N5u@6uq0`0+SFgQ2} zbo!nc`SL|y zUmtIZ7OF%kiQ(yivuLC~Dn&8F!NkB|Z0!10)JmSb6BCQHM9u*R4Ya7o@Y{f_!~yu$RNF#0vo*w~Ls0-`N>MZ3Wi? z#}ID(Ov+vYx&=A|9f)cRe~Rb#!5Im(==k#H28oJ3c`>oPX7#sk-^y3MrLhOs45bLI z^TM^S-oEXEi~{$>mBf}PNpFIuo{n2Fy>ogwQuWS%4(t1v|&<52S| zI(mCNF^1q0eevQ293l@NKEywQq|L?htIhqaUhCNOvVy0~r7!F=~!>c5y!sv9aCN z)`l_f0=AMW4?JO$;Bf$#GOW8qc^ZM22vr5r2RIt&B7S~;IF$oTFg8>Z6ZpG>2M*js zqJtx88}J<$PLXvb+85_V<@CN~oIEk%tbl+Gny0bs+r}MBOG`OljG^QNMHm|uMOdoa zfYSt#0sA*EFHf8QhN2?m{+}4+y&PDefed`8j3cDt&^2QOCCF=MYxUhb)`i&-n-ZNH z?X_AGETU!S2@W%`JRmv{Kv8C!{g}qmG%+!0VS?_^2znFzNSDhMsn%nJ#plQrD^C|7 zjY=FG+R4;--%ISDaFPOUVX$@3hX#FI1=^^h<>)%8hY_(ii`dsK5pDw`AwZ*(1$z2IPln&1b`*`~#L3yDBSp@!6?SmCR7Tu)4^~ zt)^VHpYGIX4qWsrUq1)v91W@#-GjeQe&in@ve<>j$+FqcLIKi`a;Jm_1(W{p*uT-> zOQWYCYk2oSmFH^60Xo|^L`miP22mSHPpb?dOeOPDyoU_w4 zV<87gLhqZ}{MLu3-X4OltQOz)vHZ$hl?p{aIL7iq`ymE~To8fqM|LqzjbN*3r zMVEU*ci;;oNU)=$iA|;{8_#F$(TBUVx(aeOd!N7@v1x<8ft>EC(e;2;=;1D|u4pk> znrJ;m=%qFT3HRUOD|N6{f>IgbwSs||Kn`(yz$rVxKe;F7DAC#3F@1BlX6j0>bANBT z{uKzYK2n1?QUu1j0+ihwDN%M`Dt&O$6M)4bQOiTCBnoFyq68Zv}3@DM(2O=f{*29O8c`edpQ8(0D8^azeH`-UJ1GGJy}l}W+r3t4=-Kv)|L1h|6!`E@mF;pNK&vvX7{=a!ls}3%Rv@~{7BA$ zfsDN1?u70~%ve{>Bo1GCEk6uM4kUqdc~~{1_8flTq P;RTswde$&M*0Jt^>e^a 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 oXnrF8@vlmUFa7@uJ(0$e~14Npf>Hq)$ literal 0 HcmV?d00001 diff --git a/www/versioned_docs/version-6.24.1/guides/signature.md b/www/versioned_docs/version-6.24.1/guides/signature.md new file mode 100644 index 000000000..7728154f6 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/signature.md @@ -0,0 +1,277 @@ +--- +sidebar_position: 15 +--- + +# Signature + +You can use Starknet.js to sign a message outside of the network, using the standard methods of hash and sign of Starknet. In this way, in some cases, you can avoid paying fees to store data in-chain; you transfer the signed message off-chain, and the recipient can verify (without fee) on-chain the validity of the message. + +## Sign and send a message + +Your message has to be an array of `BigNumberish`. First, calculate the hash of this message, then calculate the signature. + +> If the message does not respect some safety rules of composition, this method could be a way of attack of your smart contract. If you have any doubt, prefer the [EIP712 like method](#sign-and-verify-following-eip712), which is safe, but is also more complicated. + +```typescript +import { ec, hash, type BigNumberish, type WeierstrassSignatureType } from 'starknet'; + +const privateKey = '0x1234567890987654321'; +const starknetPublicKey = ec.starkCurve.getStarkKey(privateKey); +const fullPublicKey = stark.getFullPublicKey(privateKey); +const message: BigNumberish[] = [1, 128, 18, 14]; + +const msgHash = hash.computeHashOnElements(message); +const signature: WeierstrassSignatureType = ec.starkCurve.sign(msgHash, privateKey); +``` + +Then you can send, by any means, to the recipient of the message: + +- the message. +- the signature. +- the full public key (or an account address using this private key). + +## Receive and verify a message + +On the receiver side, you can verify that: + +- the message has not been modified, +- the sender of this message owns the private key corresponding to the public key. + +2 ways to perform this verification: + +- off-chain, using the full public key (very fast, but only for standard Starknet hash & sign). +- on-chain, using the account address (slow, add workload to the node/sequencer, but can manage exotic account abstraction about hash or sign). + +### Verify outside of Starknet: + +The sender provides the message, the signature, and the full public key. Verification: + +```typescript +const msgHash1 = hash.computeHashOnElements(message); +const isValid1 = typedData.verifyMessage(msgHash1, signature, fullPublicKey); +console.log('Result (boolean) =', isValid1); + +// with a low level function (take care of Types limitations) : +const isValid2 = ec.starkCurve.verify(signature1, msgHash, fullPublicKey); +``` + +> The sender can also provide their account address. Then you can check that this full public key is linked to this account. The public Key that you can read in the account contract is part (part X) of the full public Key (parts X & Y): + +Read the Public Key of the account: + +```typescript +const provider = new RpcProvider({ nodeUrl: 'http://127.0.0.1:5050/rpc' }); //devnet +const compiledAccount = json.parse( + fs.readFileSync('./__mocks__/cairo/account/accountOZ080.json').toString('ascii') +); +const accountAddress = '0x....'; // account of sender +const contractAccount = new Contract(compiledAccount.abi, accountAddress, provider); +const pubKey3 = await contractAccount.call('getPublicKey'); +``` + +Check that the Public Key of the account is part of the full public Key: + +```typescript +const isFullPubKeyRelatedToAccount: boolean = + pubKey3 == BigInt(encode.addHexPrefix(fullPublicKey.slice(4, 68))); +console.log('Result (boolean) =', isFullPubKeyRelatedToAccount); +``` + +### Verify in the Starknet network, with the account: + +The sender can provide an account address, despite a full public key. + +```typescript +const myProvider = new RpcProvider({ nodeUrl: 'http://127.0.0.1:5050/rpc' }); //devnet-rs +const accountAddress = '0x...'; // account of sender + +const msgHash2 = hash.computeHashOnElements(message); +const result2: Boolean = rpcProvider.verifyMessageInStarknet(msgHash2, signature, accountAddress); +console.log('Result (boolean) =', result2); +``` + +## Sign and verify following EIP712 + +Previous examples are valid for an array of numbers. In the case of a more complex structure, you have to work in the spirit of [EIP 712](https://eips.ethereum.org/EIPS/eip-712). This JSON structure has 4 mandatory items: `types`, `primaryType`, `domain`, and `message`. +These items are designed to be able to be an interface with a browser wallet. At sign request, the wallet will display: + +- the `message` at the bottom of the wallet window, showing clearly (not in hex) the message to sign. Its structure has to be in accordance with the type listed in `primaryType`, defined in `types`. +- the `domain` above the message. Its structure has to be in accordance with `StarknetDomain`. + +The types than can be used are defined in [SNIP-12](https://github.com/starknet-io/SNIPs/blob/main/SNIPS/snip-12.md). An example of simple message : + +```typescript +const myTypedData: TypedData = { + domain: { + name: 'DappLand', + chainId: constants.StarknetChainId.SN_SEPOLIA, + version: '1.0.2', + revision: TypedDataRevision.ACTIVE, + }, + message: { + name: 'MonKeyCollection', + value: 2312, + // do not use BigInt type if message sent to a web browser + }, + primaryType: 'Simple', + types: { + Simple: [ + { + name: 'name', + type: 'shortstring', + }, + { + name: 'value', + type: 'u128', + }, + ], + StarknetDomain: [ + { + name: 'name', + type: 'shortstring', + }, + { + name: 'chainId', + type: 'shortstring', + }, + { + name: 'version', + type: 'shortstring', + }, + ], + }, +}; + +const account0 = new Account(myProvider, address, privateKey); +const fullPublicKey = stark.getFullPublicKey(privateKey); + +const msgHash = await account0.hashMessage(myTypedData); +const signature: Signature = (await account0.signMessage(myTypedData)) as WeierstrassSignatureType; +``` + +:::note +A message can be more complex, with nested types. See an example [here](https://github.com/PhilippeR26/starknet.js-workshop-typescript/blob/main/src/scripts/signature/4c.signSnip12vActive.ts). +::: + +### Verify TypedData outside Starknet + +On the receiver side, you receive the message, the signature, the full public key and the account address. +To verify the message: + +```typescript +const isValid = typedData.verifyMessage(myTypedData, signature, fullPublicKey, account0Address); +``` + +A verification is also possible if you have the message hash, the signature and the full public key. + +```typescript +const isValid2 = typedData.verifyMessage(msgHash, signature, fullPublicKey); + +// with a low level function (take care of Types limitations) : +const isValid3 = ec.starkCurve.verify(signature, msgHash, fullPublicKey); +``` + +### Verify TypedData in Starknet + +On the receiver side, you receive the message, the signature, and the account address. +To verify the message: + +```typescript +const isValid4 = await myProvider.verifyMessageInStarknet( + myTypedData, + signature2, + account0.address +); +``` + +A verification is also possible if you have the message hash, the signature and the account address: + +```typescript +const isValid5 = await myProvider.verifyMessageInStarknet(msgHash, signature2, account0.address); +``` + +## Signing with an Ethereum signer + +All the previous examples are using the standard Starknet signature process, but you can also use the Ethereum one. + +```typescript +const myEthPrivateKey = '0x525bc68475c0955fae83869beec0996114d4bb27b28b781ed2a20ef23121b8de'; +const myEthAccountAddressInStarknet = + '0x65a822fbee1ae79e898688b5a4282dc79e0042cbed12f6169937fddb4c26641'; +const myEthSigner = new EthSigner(myEthPrivateKey); +console.log('Complete public key =', await myEthSigner.getPubKey()); +const sig0 = await myEthSigner.signMessage(message, myEthAccountAddressInStarknet); +console.log('signature message =', sig0); +``` + +## Signing with a Ledger hardware wallet + +![](./pictures/LedgerTitle.png) + +Starknet.js has a support for Ledger Nano S+ or X, to sign your Starknet transactions. +You have to use a transporter to interact with the Ledger Nano. Depending if you use an USB or a Bluetooth connection, depending on your framework (Node, Web, Mobile), you have to use the appropriate library to create your transporter. + +The Ledger documentation lists all the available cases : +![](./pictures/LedgerConnectivity.png) + +The libs available are : + +```typescript +import TransportNodeHid from '@ledgerhq/hw-transport-node-hid'; +import TransportWebHid from '@ledgerhq/hw-transport-webhid'; +import TransportWebBluetooth from '@ledgerhq/hw-transport-web-ble'; +import TransportHID from '@ledgerhq/react-native-hid'; +import TransportBLE from '@ledgerhq/react-native-hw-transport-ble'; +import type Transport from '@ledgerhq/hw-transport'; // type for the transporter +``` + +In a Web DAPP, take care that some browsers are not compatible (FireFox, ...), and that the Bluetooth is not working in all cases and in all operating systems. + +:::note +The last version of the Ledger Starknet APP (v2.2.1) supports explained V1 (ETH) & V3 (STRK) transactions & deploy accounts. For a class declaration or a message, you will have to blind sign a hash ; sign only hashes from a code that you trust. Do not forget to Enable `Blind signing` in the APP settings. +::: + +For example, for a Node script : + +```typescript +import TransportNodeHid from '@ledgerhq/hw-transport-node-hid'; +const myLedgerTransport: Transport = await TransportNodeHid.create(); +const myLedgerSigner = new LedgerSigner221(myLedgerTransport, 0); +const pubK = await myLedgerSigner.getPubKey(); +const fullPubK = await myLedgerSigner.getFullPubKey(); +// ... +// deploy here an account related to this public key +// ... +const ledgerAccount = new Account(myProvider, ledger0addr, myLedgerSigner); +``` + +:::warning important +The Ledger shall be connected, unlocked, with the Starknet internal APP activated, before launch of the script. +::: + +Some complete examples : +A Node script : [here](https://github.com/PhilippeR26/starknet.js-workshop-typescript/blob/main/src/scripts/ledgerNano/6.testLedgerAccount221.ts). +A test Web DAPP, to use in devnet-rs network : [here](https://github.com/PhilippeR26/Starknet-Ledger-Wallet). + +If you want to read the version of the Ledger Starknet APP : + +```typescript +const resp = await myLedgerTransport.send(Number('0x5a'), 0, 0, 0); +const appVersion = resp[0] + '.' + resp[1] + '.' + resp[2]; +console.log('version=', appVersion); +``` + +:::note +You also have in Starknet.js a signer for the old v1.1.1 Ledger Starknet APP. + +```typescript +const myLedgerSigner = new LedgerSigner111(myLedgerTransport, 0); +``` + +If you want to use the accounts created with the v1.1.1, using the v2.2.1 : + +```typescript +const myLedgerSigner = new LedgerSigner221(myLedgerTransport, 0, undefined, getLedgerPathBuffer111); +``` + +::: diff --git a/www/versioned_docs/version-6.24.1/guides/use_ERC20.md b/www/versioned_docs/version-6.24.1/guides/use_ERC20.md new file mode 100644 index 000000000..b2f3bf999 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/use_ERC20.md @@ -0,0 +1,117 @@ +--- +sidebar_position: 12 +--- + +# Work with ERC20 tokens + +Based on what has been seen in the previous pages of this guide, we will use an ERC20 contract. + +## What's an ERC20 + +As in Ethereum, a token has an ERC20 contract to manage it. This contract contains a table, that lists the quantity of tokens owned by each involved account: +![](./pictures/ERC20.png) + +For example, Account address 2 owns 100 tokens of this ERC20 contract. + +Users have the feeling that their tokens are stored in their wallets, but it's absolutely false. You have no list of assets stored in your account contract. In fact, a token has its own ERC20 contract, and the amount of token owned by your account address is stored in this contract. + +If you want to have your balance of a token, ask for its ERC20 contract, with the function `ERC20contract.balanceOf(accountAddress)`. + +When you want to transfer some tokens in your possession, you have to use the ERC20 contract function `transfer`, through the `account.execute` function (or meta-class methods). In this way, Starknet.js will send to the account contract a message signed with the private key. + +This message contains the name of the function to call in the ERC20 contract, with its optional parameters. + +The account contract will use the public key to check that you have the private key, then will ask the ERC20 contract to execute the requested function. + +This way, the ERC20 contract is absolutely sure that the caller of the transfer function knows the private key of this account. + +## ETH token is an ERC20 in Starknet + +In opposition to Ethereum, the ETH token is an ERC20 in Starknet, like all other tokens. In all networks, its ERC20 contract address is: + +```typescript +const addrETH = '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7'; +``` + +## Deploy an ERC20 + +Let's dive down the rabbit hole! + +This example works with an ERC20, that we will deploy on the devnet-rs (launched with `cargo run --release -- --seed 0`). + +First, let's initialize an existing account: + +```typescript +// initialize provider +const provider = new RpcProvider({ nodeUrl: 'http://127.0.0.1:5050/rpc' }); +// initialize existing pre-deployed account 0 of Devnet-rs +const privateKey = '0x71d7bb07b9a64f6f78ac4c816aff4da9'; +const accountAddress = '0x64b48806902a367c8598f4f95c305e8c1a1acba5f082d294a43793113115691'; + +const account0 = new Account(provider, accountAddress, privateKey); +``` + +Declaration and deployment of the ERC20 contract: + +```typescript +// Deploy an ERC20 contract +console.log('Deployment Tx - ERC20 Contract to Starknet...'); +const compiledSierra = json.parse( + fs.readFileSync('./__mocks__/cairo/ERC20-241/ERC20OZ081.sierra.json').toString('ascii') +); +const compiledCasm = json.parse( + fs.readFileSync('./__mocks__/cairo/ERC20-241/ERC20OZ081.casm.json').toString('ascii') +); +const initialTk: Uint256 = cairo.uint256(20n * 10n ** 18n); // 20 NIT +const erc20CallData: CallData = new CallData(compiledSierra.abi); +const ERC20ConstructorCallData: Calldata = erc20CallData.compile('constructor', { + name: 'niceToken', + symbol: 'NIT', + fixed_supply: initialTk, + recipient: account0.address, +}); + +console.log('constructor=', ERC20ConstructorCallData); +const deployERC20Response = await account0.declareAndDeploy({ + contract: compiledSierra, + casm: compiledCasm, + constructorCalldata: ERC20ConstructorCallData, +}); +console.log('ERC20 declared hash: ', deployERC20Response.declare.class_hash); +console.log('ERC20 deployed at address: ', deployERC20Response.deploy.contract_address); + +// Get the erc20 contract address +const erc20Address = deployERC20Response.deploy.contract_address; +// Create a new erc20 contract object +const erc20 = new Contract(compiledSierra.abi, erc20Address, provider); +erc20.connect(account0); +``` + +## Interact with an ERC20 + +Here we will read the balance and transfer tokens: + +```typescript +// Check balance - should be 20 NIT +console.log(`Calling Starknet for account balance...`); +const balanceInitial = await erc20.balanceOf(account0.address); +console.log('account0 has a balance of:', balanceInitial); + +// Execute tx transfer of 1 tokens to account 1 +console.log(`Invoke Tx - Transfer 1 tokens to erc20 contract...`); +const toTransferTk: Uint256 = cairo.uint256(1 * 10 ** 18); +const transferCall: Call = erc20.populate('transfer', { + recipient: '0x78662e7352d062084b0010068b99288486c2d8b914f6e2a55ce945f8792c8b1', + amount: 1n * 10n ** 18n, +}); +const { transaction_hash: transferTxHash } = await account0.execute(transferCall); +// Wait for the invoke transaction to be accepted on Starknet +console.log(`Waiting for Tx to be Accepted on Starknet - Transfer...`); +await provider.waitForTransaction(transferTxHash); + +// Check balance after transfer - should be 19 NIT +console.log(`Calling Starknet for account balance...`); +const balanceAfterTransfer = await erc20.balanceOf(account0.address); +console.log('account0 has a balance of:', balanceAfterTransfer); +console.log('✅ Script completed.'); +``` diff --git a/www/versioned_docs/version-6.24.1/guides/walletAccount.md b/www/versioned_docs/version-6.24.1/guides/walletAccount.md new file mode 100644 index 000000000..ceaf3dff6 --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/walletAccount.md @@ -0,0 +1,203 @@ +--- +sidebar_position: 9 +--- + +# WalletAccount + +**Use wallets to sign transactions in your DAPP.** + +The [`WalletAccount`](../API/classes/WalletAccount) class is similar to the regular [`Account`](../API/classes/Account) class, with the added ability to ask a browser wallet to sign and send transactions. Some other cool functionalities will be detailed hereunder. + +The private key of a `WalletAccount` is held in a browser wallet (such as ArgentX, Braavos, etc.), and any signature is managed by the wallet. With this approach DAPPs don't need to manage the security for any private key. + +:::caution +This class functions only within the scope of a DAPP. It can't be used in a Node.js script. +::: + +## Architecture + +![](./pictures/WalletAccountArchitecture.png) + +When retrieving information from Starknet, a `WalletAccount` instance will read directly from the blockchain. That is why at the initialization of a `WalletAccount` a [`Provider`](../API/classes/Provider) instance is a required parameter, it will be used for all reading activities. + +If you want to write to Starknet the `WalletAccount` will ask the browser wallet to sign and send the transaction using the Starknet Wallet API to communicate. + +As several wallets can be installed in your browser, the `WalletAccount` needs the ID of one of the available wallets. You can ask `get-starknet` to display a list of available wallets and to provide as a response the identifier of the selected wallet, called a `Starknet Windows Object` (referred to as SWO in the rest of this guide). + +## Select a Wallet + +You can ask the `get-starknet` v4 library to display a list of wallets, then it will ask you to make a choice. It will return the SWO of the wallet the user selected. + +Using the `get-starknet-core` v4 library you can create your own UI and logic to select the wallet. An example of DAPP using a custom UI: [**here**](https://github.com/PhilippeR26/Starknet-WalletAccount/blob/main/src/app/components/client/WalletHandle/SelectWallet.tsx), in the example you can select only the wallets compatible with the Starknet Wallet API. +![](./pictures/SelectWallet.png) + +Instantiating a new `WalletAccount`: + +```typescript +import { connect } from '@starknet-io/get-starknet'; // v4.0.3 min +import { WalletAccount, wallet } from 'starknet'; // v6.18.0 min +const myFrontendProviderUrl = 'https://free-rpc.nethermind.io/sepolia-juno/v0_7'; +// standard UI to select a wallet: +const selectedWalletSWO = await connect({ modalMode: 'alwaysAsk', modalTheme: 'light' }); +const myWalletAccount = await WalletAccount.connect( + { nodeUrl: myFrontendProviderUrl }, + selectedWalletSWO +); +``` + +The wallet is connected to this blockchain to write in Starknet: + +```typescript +const writeChainId = await wallet.requestChainId(myWalletAccount.walletProvider); +``` + +and to this blockchain to read Starknet: + +```typescript +const readChainId = await myWalletAccount.getChainId(); +``` + +## Use as an Account + +Once a new `WalletAccount` is created, you can use all the power of Starknet.js, exactly as a with a normal `Account` instance, for example `myWalletAccount.execute(call)` or `myWalletAccount.signMessage(typedMessage)`: + +```typescript +const claimCall = airdropContract.populate('claim_airdrop', { + amount: amount, + proof: proof, +}); +const resp = await myWalletAccount.execute(claimCall); +``` + +![](./pictures/executeTx.png) + +## Use in a Contract instance + +You can connect a `WalletAccount` with a [`Contract`](../API/classes/Contract) instance. All reading actions are performed by the provider of the `WalletAccount`, and all writing actions (that need a signature) are performed by the browser wallet. + +```typescript +const lendContract = new Contract(contract.abi, contractAddress, myWalletAccount); +const qty = await lendContract.get_available_asset(addr); // use of the WalletAccount provider +const resp = await lendContract.process_lend_asset(addr); // use of the browser wallet +``` + +## Use as a Provider + +Your `WalletAccount` instance can be used as a provider: + +```typescript +const bl = await myWalletAccount.getBlockNumber(); +// bl = 2374543 +``` + +You can use all the methods of the `Provider` class. Under the hood, the `WalletAccount` will use the RPC node that you indicated at its instantiation. + +## Subscription to events + +You can subscribe to 2 events: + +- `accountsChanged`: Triggered each time you change the current account in the wallet. +- `networkChanged`: Triggered each time you change the current network in the wallet. + +At each change of the network, both account and network events are emitted. +At each change of the account, only the account event is emitted. + +### Subscribe + +#### accountsChanged + +```typescript +const handleAccount: AccountChangeEventHandler = (accounts: string[] | undefined) => { + if (accounts?.length) { + const textAddr = accounts[0]; // hex string + setChangedAccount(textAddr); // from a React useState + } +}; +selectedWalletSWO.on('accountsChanged', handleAccount); +``` + +#### networkChanged + +```typescript +const handleNetwork: NetworkChangeEventHandler = (chainId?: string, accounts?: string[]) => { + if (!!chainId) { + setChangedNetwork(chainId); + } // from a React useState +}; +selectedWalletSWO.on('networkChanged', handleNetwork); +``` + +### Unsubscribe + +Similar to subscription, by using the `.off` method. + +```typescript +selectedWalletSWO.off('accountsChanged', handleAccount); +selectedWalletSWO.off('networkChanged', handleNetwork); +``` + +:::info +You can subscribe both with the SWO or with a `WalletAccount` instance. +The above examples are using the SWO, because it is the simpler way to process. +::: + +## Direct access to the wallet API entry points + +The `WalletAccount` class is able to interact with all the entrypoints of the Starknet Wallet API, including some functionalities that do not exists in the `Account` class. + +A full description of this API can be found [**here**](https://github.com/PhilippeR26/Starknet-WalletAccount/blob/main/doc/walletAPIspec.md). + +Some examples: + +### Request to change the wallet network + +Using your `WalletAccount`, you can ask the wallet to change its current network: + +```typescript +useEffect( + () => { + if (!isValidNetwork()) { + const tryChangeNetwork = async () => { + await myWalletAccount.switchStarknetChain(constants.StarknetChainId.SN_SEPOLIA); + }; + tryChangeNetwork().catch(console.error); + } + }, + [chainId] // from a networkChanged event +); +``` + +![](./pictures/switchNetwork.png) + +### Request to display a token in the wallet + +Using your `WalletAccount`, you can ask the wallet to display a new token: + +```typescript +useEffect( + () => { + const fetchAddToken = async () => { + const resp = await myWalletAccount.watchAsset({ + type: 'ERC20', + options: { + address: erc20Address, + }, + }); + }; + if (isAirdropSuccess) { + fetchAddToken().catch(console.error); + } + }, + [isAirdropSuccess] // from a React useState +); +``` + +![](./pictures/addToken.png) + +## Changing the network or account + +When you change the network or the account address a `WalletAccount` instance is automatically updated, however, this can lead to unexpected behavior if one is not careful (reads and writes targeting different networks, problems with Cairo versions of the accounts, ...). + +:::warning RECOMMENDATION +It is strongly recommended to create a new `WalletAccount` instance each time the network or the account address is changed. +::: diff --git a/www/versioned_docs/version-6.24.1/guides/what_s_starknet.js.md b/www/versioned_docs/version-6.24.1/guides/what_s_starknet.js.md new file mode 100644 index 000000000..7d43497de --- /dev/null +++ b/www/versioned_docs/version-6.24.1/guides/what_s_starknet.js.md @@ -0,0 +1,34 @@ +--- +sidebar_position: 2 +--- + +# What is Starknet.js ? + +Starknet.js is a library that helps connect your website or your Decentralized Application (DAPP) to the blockchain-based Starknet network, using JavaScript / TypeScript. + +## Overview + +![](./pictures/starknet-js-chart.png) + +Some important topics that have to be understood: + +- You can connect your DAPP to several networks: + + - [Starknet mainnet](https://starkscan.co) (Layer 2 of [Ethereum network](https://etherscan.io/) ). + - [Starknet testnet](https://sepolia.starkscan.co/) (Layer 2 of [Sepolia network](https://sepolia.etherscan.io/) (testnet of Ethereum)). + - [Starknet-devnet](https://github.com/0xSpaceShard/starknet-devnet-rs) (your local Starknet network, for developers). + + and also to some more specific solutions: + + - private customized version of Starknet. + - local Starknet node (connected to mainnet or testnet). + +> Understanding what Starknet is and how it works is necessary. Then, you can learn how to interact with it using Starknet.js. So, at this stage, you should be aware of the content of the [Starknet official doc](https://docs.starknet.io/documentation/) and [the Starknet Book](https://book.starknet.io/). + +- The `RpcChannel` and `RpcProvider` classes and their methods are used for low-level communication with an RPC node. +- Your DAPP will mainly interact with `Account` and `Contract` class instances; they use underlying `RpcProvider` connections to provide high-level methods for interacting with their Starknet namesakes, accounts and contracts. +- `Signer` and `Utils` objects contain many useful functions for interaction with Starknet.js. +- The `Contract` object is mainly used to read the memory of a blockchain contract. +- The `Account` object is the most useful: + - as a wallet, to store your tokens. + - as a way to pay the fees to the network, and to be able to write in its memory. diff --git a/www/versioned_sidebars/version-6.24.1-sidebars.json b/www/versioned_sidebars/version-6.24.1-sidebars.json new file mode 100644 index 000000000..cff0c94e1 --- /dev/null +++ b/www/versioned_sidebars/version-6.24.1-sidebars.json @@ -0,0 +1,8 @@ +{ + "defaultSidebar": [ + { + "type": "autogenerated", + "dirName": "." + } + ] +} diff --git a/www/versions.json b/www/versions.json index 82447d760..b6d9c1643 100644 --- a/www/versions.json +++ b/www/versions.json @@ -1 +1 @@ -["6.23.1", "6.11.0", "5.24.3"] +["6.24.1", "6.23.1", "6.11.0", "5.24.3"]

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 literal 0 HcmV?d00001 diff --git a/www/versioned_docs/version-6.24.1/guides/pictures/WalletAccountArchitecture.png b/www/versioned_docs/version-6.24.1/guides/pictures/WalletAccountArchitecture.png new file mode 100644 index 0000000000000000000000000000000000000000..0bc717d5a7f444e19426abd855fcebb2b7649fe9 GIT binary patch literal 18177 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 D)qA2h literal 0 HcmV?d00001 diff --git a/www/versioned_docs/version-6.24.1/guides/pictures/createContract.png b/www/versioned_docs/version-6.24.1/guides/pictures/createContract.png new file mode 100644 index 0000000000000000000000000000000000000000..976b809b58024f671eecd20809cc65f4fdc70be2 GIT binary patch literal 66099 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 literal 0 HcmV?d00001 diff --git a/www/versioned_docs/version-6.24.1/guides/pictures/encodeFn2.png b/www/versioned_docs/version-6.24.1/guides/pictures/encodeFn2.png new file mode 100644 index 0000000000000000000000000000000000000000..0135cf1235cc1186166db005e15016a3614b6fce GIT binary patch literal 170975 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