@aptos-labs/ts-sdk 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +144 -0
- package/dist/browser/index.global.js +410 -0
- package/dist/browser/index.global.js.map +1 -0
- package/dist/cjs/index.d.ts +4965 -0
- package/dist/cjs/index.js +4762 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/esm/index.d.ts +4965 -0
- package/dist/esm/index.mjs +4645 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/types/index.d.ts +1247 -0
- package/dist/types/index.js +151 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +79 -0
- package/src/api/account.ts +360 -0
- package/src/api/aptos.ts +103 -0
- package/src/api/aptosConfig.ts +77 -0
- package/src/api/coin.ts +39 -0
- package/src/api/digitalAsset.ts +192 -0
- package/src/api/event.ts +78 -0
- package/src/api/faucet.ts +30 -0
- package/src/api/fungibleAsset.ts +82 -0
- package/src/api/general.ts +188 -0
- package/src/api/index.ts +5 -0
- package/src/api/staking.ts +58 -0
- package/src/api/transaction.ts +135 -0
- package/src/api/transactionSubmission.ts +168 -0
- package/src/bcs/consts.ts +12 -0
- package/src/bcs/deserializer.ts +248 -0
- package/src/bcs/index.ts +9 -0
- package/src/bcs/serializable/entryFunctionBytes.ts +61 -0
- package/src/bcs/serializable/fixedBytes.ts +65 -0
- package/src/bcs/serializable/movePrimitives.ts +211 -0
- package/src/bcs/serializable/moveStructs.ts +462 -0
- package/src/bcs/serializer.ts +353 -0
- package/src/client/core.ts +106 -0
- package/src/client/get.ts +109 -0
- package/src/client/index.ts +7 -0
- package/src/client/post.ts +90 -0
- package/src/client/types.ts +58 -0
- package/src/core/account.ts +180 -0
- package/src/core/accountAddress.ts +407 -0
- package/src/core/authenticationKey.ts +102 -0
- package/src/core/common.ts +40 -0
- package/src/core/crypto/asymmetricCrypto.ts +77 -0
- package/src/core/crypto/ed25519.ts +224 -0
- package/src/core/crypto/index.ts +7 -0
- package/src/core/crypto/multiEd25519.ts +251 -0
- package/src/core/crypto/secp256k1.ts +227 -0
- package/src/core/hex.ts +177 -0
- package/src/core/index.ts +9 -0
- package/src/index.ts +12 -0
- package/src/internal/account.ts +484 -0
- package/src/internal/coin.ts +32 -0
- package/src/internal/digitalAsset.ts +302 -0
- package/src/internal/event.ts +88 -0
- package/src/internal/faucet.ts +41 -0
- package/src/internal/fungibleAsset.ts +114 -0
- package/src/internal/general.ts +160 -0
- package/src/internal/queries/TokenActivitiesFieldsFragment.graphql +17 -0
- package/src/internal/queries/currentTokenOwnershipFieldsFragment.graphql +45 -0
- package/src/internal/queries/getAccountCoinCount.graphql +7 -0
- package/src/internal/queries/getAccountCoinsData.graphql +32 -0
- package/src/internal/queries/getAccountCollectionsWithOwnedTokens.graphql +33 -0
- package/src/internal/queries/getAccountOwnedObjects.graphql +16 -0
- package/src/internal/queries/getAccountOwnedTokens.graphql +11 -0
- package/src/internal/queries/getAccountOwnedTokensByTokenData.graphql +11 -0
- package/src/internal/queries/getAccountOwnedTokensFromCollectionAddress.graphql +11 -0
- package/src/internal/queries/getAccountTokensCount.graphql +7 -0
- package/src/internal/queries/getAccountTransactionsCount.graphql +7 -0
- package/src/internal/queries/getChainTopUserTransactions.graphql +5 -0
- package/src/internal/queries/getCollectionData.graphql +20 -0
- package/src/internal/queries/getCurrentFungibleAssetBalances.graphql +17 -0
- package/src/internal/queries/getDelegatedStakingActivities.graphql +12 -0
- package/src/internal/queries/getEvents.graphql +12 -0
- package/src/internal/queries/getFungibleAssetActivities.graphql +20 -0
- package/src/internal/queries/getFungibleAssetMetadata.graphql +16 -0
- package/src/internal/queries/getNumberOfDelegatorsQuery.graphql +9 -0
- package/src/internal/queries/getProcessorStatus.graphql +7 -0
- package/src/internal/queries/getTokenActivity.graphql +11 -0
- package/src/internal/queries/getTokenCurrentOwner.graphql +11 -0
- package/src/internal/queries/getTokenData.graphql +38 -0
- package/src/internal/staking.ts +68 -0
- package/src/internal/transaction.ts +245 -0
- package/src/internal/transactionSubmission.ts +162 -0
- package/src/transactions/authenticator/account.ts +121 -0
- package/src/transactions/authenticator/transaction.ts +222 -0
- package/src/transactions/instances/chainId.ts +26 -0
- package/src/transactions/instances/identifier.ts +28 -0
- package/src/transactions/instances/index.ts +9 -0
- package/src/transactions/instances/moduleId.ts +53 -0
- package/src/transactions/instances/rawTransaction.ts +199 -0
- package/src/transactions/instances/signedTransaction.ts +43 -0
- package/src/transactions/instances/transactionArgument.ts +37 -0
- package/src/transactions/instances/transactionPayload.ts +407 -0
- package/src/transactions/transaction_builder/transaction_builder.ts +541 -0
- package/src/transactions/typeTag/typeTag.ts +487 -0
- package/src/transactions/types.ts +262 -0
- package/src/types/codegen.yaml +33 -0
- package/src/types/generated/operations.ts +623 -0
- package/src/types/generated/queries.ts +737 -0
- package/src/types/generated/types.ts +10387 -0
- package/src/types/index.ts +944 -0
- package/src/types/indexer.ts +93 -0
- package/src/utils/apiEndpoints.ts +36 -0
- package/src/utils/const.ts +51 -0
- package/src/utils/hdKey.ts +113 -0
- package/src/utils/helpers.ts +12 -0
- package/src/utils/memoize.ts +68 -0
- package/src/version.ts +9 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/client/core.ts","../../src/client/types.ts","../../src/types/index.ts","../../src/version.ts","../../src/utils/apiEndpoints.ts","../../src/utils/const.ts","../../src/client/get.ts","../../src/client/post.ts","../../src/core/accountAddress.ts","../../src/bcs/consts.ts","../../src/core/hex.ts","../../src/core/common.ts","../../src/bcs/serializer.ts","../../src/core/authenticationKey.ts","../../src/core/crypto/ed25519.ts","../../src/bcs/deserializer.ts","../../src/bcs/serializable/fixedBytes.ts","../../src/bcs/serializable/entryFunctionBytes.ts","../../src/bcs/serializable/movePrimitives.ts","../../src/bcs/serializable/moveStructs.ts","../../src/core/crypto/asymmetricCrypto.ts","../../src/core/crypto/multiEd25519.ts","../../src/core/crypto/secp256k1.ts","../../src/utils/hdKey.ts","../../src/core/account.ts","../../src/types/generated/queries.ts","../../src/internal/general.ts","../../src/utils/memoize.ts","../../src/internal/account.ts","../../src/api/account.ts","../../src/api/aptosConfig.ts","../../src/transactions/instances/identifier.ts","../../src/transactions/typeTag/typeTag.ts","../../src/transactions/transaction_builder/transaction_builder.ts","../../src/utils/helpers.ts","../../src/internal/transaction.ts","../../src/transactions/authenticator/account.ts","../../src/transactions/authenticator/transaction.ts","../../src/transactions/instances/chainId.ts","../../src/transactions/instances/moduleId.ts","../../src/transactions/instances/transactionPayload.ts","../../src/transactions/instances/rawTransaction.ts","../../src/transactions/instances/signedTransaction.ts","../../src/internal/transactionSubmission.ts","../../src/internal/coin.ts","../../src/api/coin.ts","../../src/internal/digitalAsset.ts","../../src/api/digitalAsset.ts","../../src/internal/event.ts","../../src/api/event.ts","../../src/internal/faucet.ts","../../src/api/faucet.ts","../../src/internal/fungibleAsset.ts","../../src/api/fungibleAsset.ts","../../src/api/general.ts","../../src/internal/staking.ts","../../src/api/staking.ts","../../src/api/transaction.ts","../../src/api/transactionSubmission.ts","../../src/api/aptos.ts"],"sourcesContent":["// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport aptosClient from \"@aptos-labs/aptos-client\";\nimport { AptosConfig } from \"../api/aptosConfig\";\nimport { AptosApiError, AptosResponse } from \"./types\";\nimport { ClientConfig, AptosRequest, MimeType } from \"../types\";\nimport { VERSION } from \"../version\";\n\n/**\n * Meaningful errors map\n */\nconst errors: Record<number, string> = {\n 400: \"Bad Request\",\n 401: \"Unauthorized\",\n 403: \"Forbidden\",\n 404: \"Not Found\",\n 429: \"Too Many Requests\",\n 500: \"Internal Server Error\",\n 502: \"Bad Gateway\",\n 503: \"Service Unavailable\",\n};\n\n/**\n * Given a url and method, sends the request with axios and\n * returns the response.\n */\nasync function request<Req, Res>(\n url: string,\n method: \"GET\" | \"POST\",\n body?: Req,\n contentType?: string,\n params?: any,\n overrides?: ClientConfig,\n): Promise<any> {\n const headers: Record<string, string | string[] | undefined> = {\n ...overrides?.HEADERS,\n \"x-aptos-client\": `aptos-ts-sdk/${VERSION}`,\n \"content-type\": contentType ?? MimeType.JSON,\n };\n\n if (overrides?.TOKEN) {\n headers.Authorization = `Bearer ${overrides?.TOKEN}`;\n }\n\n /*\n * make a call using the @aptos-labs/aptos-client package\n * {@link https://www.npmjs.com/package/@aptos-labs/aptos-client}\n */\n return aptosClient<Res>({\n url,\n method,\n body,\n params,\n headers,\n overrides,\n });\n}\n\n/**\n * The main function to use when doing an API request.\n *\n * @param options AptosRequest\n * @param aptosConfig The config information for the SDK client instance\n * @returns the response or AptosApiError\n */\nexport async function aptosRequest<Req, Res>(\n options: AptosRequest,\n aptosConfig: AptosConfig,\n): Promise<AptosResponse<Req, Res>> {\n const { url, path, method, body, contentType, params, overrides } = options;\n const fullUrl = `${url}/${path ?? \"\"}`;\n const response = await request<Req, Res>(fullUrl, method, body, contentType, params, overrides);\n const result: AptosResponse<Req, Res> = {\n status: response.status,\n statusText: response.statusText!,\n data: response.data,\n headers: response.headers,\n config: response.config,\n url: fullUrl,\n };\n\n // to support both fullnode and indexer responses,\n // check if it is an indexer query, and adjust response.data\n if (aptosConfig.isIndexerRequest(url)) {\n // errors from indexer\n if ((result.data as any).errors) {\n throw new AptosApiError(\n options,\n result,\n response.data.errors[0].message ?? `Unhandled Error ${response.status} : ${response.statusText}`,\n );\n }\n result.data = (result.data as any).data as Res;\n }\n\n if (result.status >= 200 && result.status < 300) {\n return result;\n }\n const errorMessage = errors[result.status];\n throw new AptosApiError(\n options,\n result,\n errorMessage ?? `Unhandled Error ${response.status} : ${response.statusText}`,\n );\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AptosRequest } from \"../types\";\n\n/**\n * The API response type\n *\n * @param status - the response status. i.e. 200\n * @param statusText - the response message\n * @param data the response data\n * @param url the url the request was made to\n * @param headers the response headers\n * @param config (optional) - the request object\n * @param request (optional) - the request object\n */\nexport interface AptosResponse<Req, Res> {\n status: number;\n statusText: string;\n data: Res;\n url: string;\n headers: any;\n config?: any;\n request?: Req;\n}\n\n/**\n * The type returned from an API error\n *\n * @param name - the error name \"AptosApiError\"\n * @param url the url the request was made to\n * @param status - the response status. i.e. 400\n * @param statusText - the response message\n * @param data the response data\n * @param request - the AptosRequest\n */\nexport class AptosApiError extends Error {\n readonly url: string;\n\n readonly status: number;\n\n readonly statusText: string;\n\n readonly data: any;\n\n readonly request: AptosRequest;\n\n constructor(request: AptosRequest, response: AptosResponse<any, any>, message: string) {\n super(message);\n\n this.name = \"AptosApiError\";\n this.url = response.url;\n this.status = response.status;\n this.statusText = response.statusText;\n this.data = response.data;\n this.request = request;\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Network } from \"../utils/apiEndpoints\";\n\nexport * from \"./indexer\";\n\nexport enum MimeType {\n /**\n * JSON representation, used for transaction submission and accept type JSON output\n */\n JSON = \"application/json\",\n /**\n * BCS representation, used for accept type BCS output\n */\n BCS = \"application/x-bcs\",\n /**\n * BCS representation, used for transaction submission in BCS input\n */\n BCS_SIGNED_TRANSACTION = \"application/x.aptos.signed_transaction+bcs\",\n}\n\n/**\n * Hex data as input to a function\n */\nexport type HexInput = string | Uint8Array;\n\n/**\n * Script transaction arguments enum as they are represented in Rust\n * {@link https://github.com/aptos-labs/aptos-core/blob/main/third_party/move/move-core/types/src/language_storage.rs#L27}\n */\nexport enum TypeTagVariants {\n Bool = 0,\n U8 = 1,\n U64 = 2,\n U128 = 3,\n Address = 4,\n Signer = 5,\n Vector = 6,\n Struct = 7,\n U16 = 8,\n U32 = 9,\n U256 = 10,\n}\n\n/**\n * Script transaction arguments enum as they are represented in Rust\n * {@link https://github.com/aptos-labs/aptos-core/blob/main/third_party/move/move-core/types/src/transaction_argument.rs#L11}\n */\nexport enum ScriptTransactionArgumentVariants {\n U8 = 0,\n U64 = 1,\n U128 = 2,\n Address = 3,\n U8Vector = 4,\n Bool = 5,\n U16 = 6,\n U32 = 7,\n U256 = 8,\n}\n\n/**\n * Transaction payload enum as they are represented in Rust\n * {@link https://github.com/aptos-labs/aptos-core/blob/main/types/src/transaction/mod.rs#L478}\n */\nexport enum TransactionPayloadVariants {\n Script = 0,\n EntryFunction = 2,\n Multisig = 3,\n}\n\n/**\n * Transaction variants enum as they are represented in Rust\n * {@link https://github.com/aptos-labs/aptos-core/blob/main/types/src/transaction/mod.rs#L440}\n */\nexport enum TransactionVariants {\n MultiAgentTransaction = 0,\n FeePayerTransaction = 1,\n}\n\n/**\n * Transaction Authenticator enum as they are represented in Rust\n * {@link https://github.com/aptos-labs/aptos-core/blob/main/types/src/transaction/authenticator.rs#L44}\n */\nexport enum TransactionAuthenticatorVariant {\n Ed25519 = 0,\n MultiEd25519 = 1,\n MultiAgent = 2,\n FeePayer = 3,\n Secp256k1Ecdsa = 4,\n}\n\n/**\n * Transaction Authenticator enum as they are represented in Rust\n * {@link https://github.com/aptos-labs/aptos-core/blob/main/types/src/transaction/authenticator.rs#L414}\n */\nexport enum AccountAuthenticatorVariant {\n Ed25519 = 0,\n MultiEd25519 = 1,\n Secp256k1 = 2,\n}\n\n/**\n * BCS types\n */\nexport type Uint8 = number;\nexport type Uint16 = number;\nexport type Uint32 = number;\nexport type Uint64 = bigint;\nexport type Uint128 = bigint;\nexport type Uint256 = bigint;\nexport type AnyNumber = number | bigint;\n\n/**\n * Set of configuration options that can be provided when initializing the SDK.\n * The purpose of these options is to configure various aspects of the SDK's\n * behavior and interaction with the Aptos network\n */\nexport type AptosSettings = {\n readonly network: Network;\n\n readonly fullnode?: string;\n\n readonly faucet?: string;\n\n readonly indexer?: string;\n\n readonly clientConfig?: ClientConfig;\n};\n\n/**\n *\n * Controls the number of results that are returned and the starting position of those results.\n * @param offset parameter specifies the starting position of the query result within the set of data. Default is 0.\n * @param limit specifies the maximum number of items or records to return in a query result. Default is 25.\n */\nexport interface PaginationArgs {\n offset?: AnyNumber;\n limit?: number;\n}\n\n/**\n * QUERY TYPES\n */\n\n/**\n * A configuration object we can pass with the request to the server.\n *\n * @param TOKEN - an auth token to send with the request\n * @param HEADERS - extra headers we want to send with the request\n * @param WITH_CREDENTIALS - whether to carry cookies. By default, it is set to true and cookies will be sent\n */\nexport type ClientConfig = {\n TOKEN?: string;\n HEADERS?: Record<string, string | number | boolean>;\n WITH_CREDENTIALS?: boolean;\n};\n\n/**\n * The API request type\n *\n * @param url - the url to make the request to, i.e https://fullnode.aptoslabs.devnet.com/v1\n * @param method - the request method \"GET\" | \"POST\"\n * @param endpoint (optional) - the endpoint to make the request to, i.e transactions\n * @param body (optional) - the body of the request\n * @param contentType (optional) - the content type to set the `content-type` header to,\n * by default is set to `application/json`\n * @param params (optional) - query params to add to the request\n * @param originMethod (optional) - the local method the request came from\n * @param overrides (optional) - a `ClientConfig` object type to override request data\n */\nexport type AptosRequest = {\n url: string;\n method: \"GET\" | \"POST\";\n path?: string;\n body?: any;\n contentType?: string;\n acceptType?: string;\n params?: Record<string, string | AnyNumber | boolean | undefined>;\n originMethod?: string;\n overrides?: ClientConfig;\n};\n\n/**\n * Specifies ledger version of transactions. By default latest version will be used\n */\nexport type LedgerVersion = {\n ledgerVersion?: AnyNumber;\n};\n\n/**\n * RESPONSE TYPES\n */\n\n/**\n * Type holding the outputs of the estimate gas API\n */\nexport type GasEstimation = {\n /**\n * The deprioritized estimate for the gas unit price\n */\n deprioritized_gas_estimate?: number;\n /**\n * The current estimate for the gas unit price\n */\n gas_estimate: number;\n /**\n * The prioritized estimate for the gas unit price\n */\n prioritized_gas_estimate?: number;\n};\n\nexport type MoveResource = {\n type: MoveResourceType;\n data: {};\n};\n\nexport type AccountData = {\n sequence_number: string;\n authentication_key: string;\n};\n\nexport type MoveModuleBytecode = {\n bytecode: string;\n abi?: MoveModule;\n};\n\n/**\n * TRANSACTION TYPES\n */\n\nexport enum TransactionResponseType {\n Pending = \"pending_transaction\",\n User = \"user_transaction\",\n Genesis = \"genesis_transaction\",\n BlockMetadata = \"block_metadata_transaction\",\n StateCheckpoint = \"state_checkpoint_transaction\",\n}\n\nexport type TransactionResponse =\n | PendingTransactionResponse\n | UserTransactionResponse\n | GenesisTransactionResponse\n | BlockMetadataTransactionResponse\n | StateCheckpointTransactionResponse;\n\nexport type PendingTransactionResponse = {\n type: TransactionResponseType.Pending;\n hash: string;\n sender: string;\n sequence_number: string;\n max_gas_amount: string;\n gas_unit_price: string;\n expiration_timestamp_secs: string;\n payload: TransactionPayloadResponse;\n signature?: TransactionSignature;\n};\n\nexport type UserTransactionResponse = {\n type: TransactionResponseType.User;\n version: string;\n hash: string;\n state_change_hash: string;\n event_root_hash: string;\n state_checkpoint_hash?: string;\n gas_used: string;\n /**\n * Whether the transaction was successful\n */\n success: boolean;\n /**\n * The VM status of the transaction, can tell useful information in a failure\n */\n vm_status: string;\n accumulator_root_hash: string;\n /**\n * Final state of resources changed by the transaction\n */\n changes: Array<WriteSetChange>;\n sender: string;\n sequence_number: string;\n max_gas_amount: string;\n gas_unit_price: string;\n expiration_timestamp_secs: string;\n payload: TransactionPayloadResponse;\n signature?: TransactionSignature;\n /**\n * Events generated by the transaction\n */\n events: Array<Event>;\n timestamp: string;\n};\n\nexport type GenesisTransactionResponse = {\n type: TransactionResponseType.Genesis;\n version: string;\n hash: string;\n state_change_hash: string;\n event_root_hash: string;\n state_checkpoint_hash?: string;\n gas_used: string;\n /**\n * Whether the transaction was successful\n */\n success: boolean;\n /**\n * The VM status of the transaction, can tell useful information in a failure\n */\n vm_status: string;\n accumulator_root_hash: string;\n /**\n * Final state of resources changed by the transaction\n */\n changes: Array<WriteSetChange>;\n payload: GenesisPayload;\n /**\n * Events emitted during genesis\n */\n events: Array<Event>;\n};\n\nexport type BlockMetadataTransactionResponse = {\n type: TransactionResponseType.BlockMetadata;\n version: string;\n hash: string;\n state_change_hash: string;\n event_root_hash: string;\n state_checkpoint_hash?: string;\n gas_used: string;\n /**\n * Whether the transaction was successful\n */\n success: boolean;\n /**\n * The VM status of the transaction, can tell useful information in a failure\n */\n vm_status: string;\n accumulator_root_hash: string;\n /**\n * Final state of resources changed by the transaction\n */\n changes: Array<WriteSetChange>;\n id: string;\n epoch: string;\n round: string;\n /**\n * The events emitted at the block creation\n */\n events: Array<Event>;\n /**\n * Previous block votes\n */\n previous_block_votes_bitvec: Array<number>;\n proposer: string;\n /**\n * The indices of the proposers who failed to propose\n */\n failed_proposer_indices: Array<number>;\n timestamp: string;\n};\n\nexport type StateCheckpointTransactionResponse = {\n type: TransactionResponseType.StateCheckpoint;\n version: string;\n hash: string;\n state_change_hash: string;\n event_root_hash: string;\n state_checkpoint_hash?: string;\n gas_used: string;\n /**\n * Whether the transaction was successful\n */\n success: boolean;\n /**\n * The VM status of the transaction, can tell useful information in a failure\n */\n vm_status: string;\n accumulator_root_hash: string;\n /**\n * Final state of resources changed by the transaction\n */\n changes: Array<WriteSetChange>;\n timestamp: string;\n};\n\n/**\n * WRITESET CHANGE TYPES\n */\n\nexport type WriteSetChange =\n | WriteSetChangeDeleteModule\n | WriteSetChangeDeleteResource\n | WriteSetChangeDeleteTableItem\n | WriteSetChangeWriteModule\n | WriteSetChangeWriteResource\n | WriteSetChangeWriteTableItem;\n\nexport type WriteSetChangeDeleteModule = {\n type: string;\n address: string;\n /**\n * State key hash\n */\n state_key_hash: string;\n module: MoveModuleId;\n};\n\nexport type WriteSetChangeDeleteResource = {\n type: string;\n address: string;\n state_key_hash: string;\n resource: string;\n};\n\nexport type WriteSetChangeDeleteTableItem = {\n type: string;\n state_key_hash: string;\n handle: string;\n key: string;\n data?: DeletedTableData;\n};\n\nexport type WriteSetChangeWriteModule = {\n type: string;\n address: string;\n state_key_hash: string;\n data: MoveModuleBytecode;\n};\n\nexport type WriteSetChangeWriteResource = {\n type: string;\n address: string;\n state_key_hash: string;\n data: MoveResource;\n};\n\nexport type WriteSetChangeWriteTableItem = {\n type: string;\n state_key_hash: string;\n handle: string;\n key: string;\n value: string;\n data?: DecodedTableData;\n};\n\nexport type DecodedTableData = {\n /**\n * Key of table in JSON\n */\n key: any;\n /**\n * Type of key\n */\n key_type: string;\n /**\n * Value of table in JSON\n */\n value: any;\n /**\n * Type of value\n */\n value_type: string;\n};\n\n/**\n * Deleted table data\n */\nexport type DeletedTableData = {\n /**\n * Deleted key\n */\n key: any;\n /**\n * Deleted key type\n */\n key_type: string;\n};\n\nexport type TransactionPayloadResponse = EntryFunctionPayloadResponse | ScriptPayloadResponse | MultisigPayloadResponse;\n\nexport type EntryFunctionPayloadResponse = {\n type: string;\n function: MoveResourceType;\n /**\n * Type arguments of the function\n */\n type_arguments: Array<string>;\n /**\n * Arguments of the function\n */\n arguments: Array<any>;\n};\n\nexport type ScriptPayloadResponse = {\n type: string;\n code: MoveScriptBytecode;\n /**\n * Type arguments of the function\n */\n type_arguments: Array<string>;\n /**\n * Arguments of the function\n */\n arguments: Array<any>;\n};\n\nexport type MultisigPayloadResponse = {\n type: string;\n multisig_address: string;\n transaction_payload?: EntryFunctionPayloadResponse;\n};\n\nexport type GenesisPayload = {\n type: string;\n write_set: WriteSet;\n};\n\n/**\n * Move script bytecode\n */\nexport type MoveScriptBytecode = {\n bytecode: string;\n abi?: MoveFunction;\n};\n\n/**\n * These are the JSON representations of transaction signatures returned from the node API.\n */\nexport type TransactionSignature =\n | TransactionEd25519Signature\n | TransactionSecp256k1Signature\n | TransactionMultiEd25519Signature\n | TransactionMultiAgentSignature\n | TransactionFeePayerSignature;\n\nexport type TransactionEd25519Signature = {\n type: string;\n public_key: string;\n signature: \"ed25519_signature\";\n};\n\nexport type TransactionSecp256k1Signature = {\n type: string;\n public_key: string;\n signature: \"secp256k1_ecdsa_signature\";\n};\n\nexport type TransactionMultiEd25519Signature = {\n type: \"multi_ed25519_signature\";\n /**\n * The public keys for the Ed25519 signature\n */\n public_keys: Array<string>;\n /**\n * Signature associated with the public keys in the same order\n */\n signatures: Array<string>;\n /**\n * The number of signatures required for a successful transaction\n */\n threshold: number;\n bitmap: string;\n};\n\nexport type TransactionMultiAgentSignature = {\n type: \"multi_agent_signature\";\n sender: AccountSignature;\n /**\n * The other involved parties' addresses\n */\n secondary_signer_addresses: Array<string>;\n /**\n * The associated signatures, in the same order as the secondary addresses\n */\n secondary_signers: Array<AccountSignature>;\n};\n\nexport type TransactionFeePayerSignature = {\n type: \"fee_payer_signature\";\n sender: AccountSignature;\n /**\n * The other involved parties' addresses\n */\n secondary_signer_addresses: Array<string>;\n /**\n * The associated signatures, in the same order as the secondary addresses\n */\n secondary_signers: Array<AccountSignature>;\n fee_payer_address: string;\n fee_payer_signer: AccountSignature;\n};\n\n/**\n * The union of all single account signatures.\n */\nexport type AccountSignature = AccountEd25519Signature | AccountSecp256k1Signature | AccountMultiEd25519Signature;\n\nexport type AccountEd25519Signature = TransactionEd25519Signature;\n\nexport type AccountSecp256k1Signature = TransactionSecp256k1Signature;\n\nexport type AccountMultiEd25519Signature = TransactionMultiEd25519Signature;\n\nexport type WriteSet = ScriptWriteSet | DirectWriteSet;\n\nexport type ScriptWriteSet = {\n type: string;\n execute_as: string;\n script: ScriptPayloadResponse;\n};\n\nexport type DirectWriteSet = {\n type: string;\n changes: Array<WriteSetChange>;\n events: Array<Event>;\n};\n\nexport type EventGuid = {\n creation_number: string;\n account_address: string;\n};\n\nexport type Event = {\n guid: EventGuid;\n sequence_number: string;\n type: string;\n /**\n * The JSON representation of the event\n */\n data: any;\n};\n\n/**\n * Map of Move types to local TypeScript types\n */\nexport type MoveUint8Type = number;\nexport type MoveUint16Type = number;\nexport type MoveUint32Type = number;\nexport type MoveUint64Type = string;\nexport type MoveUint128Type = string;\nexport type MoveUint256Type = string;\nexport type MoveAddressType = `0x${string}`;\nexport type MoveObjectType = `0x${string}`;\nexport type MoveStructType = `0x${string}::${string}::${string}`;\nexport type MoveOptionType = MoveType | null | undefined;\n/**\n * String representation of a on-chain Move struct type.\n */\nexport type MoveResourceType = `${string}::${string}::${string}`;\n\nexport type MoveType =\n | boolean\n | string\n | MoveUint8Type\n | MoveUint16Type\n | MoveUint32Type\n | MoveUint64Type\n | MoveUint128Type\n | MoveUint256Type\n | MoveAddressType\n | MoveObjectType\n | MoveStructType\n | Array<MoveType>;\n\n/**\n * Possible Move values acceptable by move functions (entry, view)\n *\n * Map of a Move value to the corresponding TypeScript value\n *\n * `Bool -> boolean`\n *\n * `u8, u16, u32 -> number`\n *\n * `u64, u128, u256 -> string`\n *\n * `String -> string`\n *\n * `Address -> 0x${string}`\n *\n * `Struct - 0x${string}::${string}::${string}`\n *\n * `Object -> 0x${string}`\n *\n * `Vector -> Array<MoveValue>`\n *\n * `Option -> MoveValue | null | undefined`\n */\nexport type MoveValue =\n | boolean\n | string\n | MoveUint8Type\n | MoveUint16Type\n | MoveUint32Type\n | MoveUint64Type\n | MoveUint128Type\n | MoveUint256Type\n | MoveAddressType\n | MoveObjectType\n | MoveStructType\n | MoveOptionType\n | Array<MoveValue>;\n\n/**\n * Move module id is a string representation of Move module.\n * Module name is case-sensitive.\n */\nexport type MoveModuleId = `${string}::${string}`;\n\n/**\n * Move function visibility\n */\nexport enum MoveFunctionVisibility {\n PRIVATE = \"private\",\n PUBLIC = \"public\",\n FRIEND = \"friend\",\n}\n\n/**\n * Move function ability\n */\nexport enum MoveAbility {\n STORE = \"store\",\n DROP = \"drop\",\n KEY = \"key\",\n COPY = \"copy\",\n}\n\n/**\n * Move abilities tied to the generic type param and associated with the function that uses it\n */\nexport type MoveFunctionGenericTypeParam = {\n constraints: Array<MoveAbility>;\n};\n\n/**\n * Move struct field\n */\nexport type MoveStructField = {\n name: string;\n type: string;\n};\n\n/**\n * A Move module\n */\nexport type MoveModule = {\n address: string;\n name: string;\n /**\n * Friends of the module\n */\n friends: Array<MoveModuleId>;\n /**\n * Public functions of the module\n */\n exposed_functions: Array<MoveFunction>;\n /**\n * Structs of the module\n */\n structs: Array<MoveStruct>;\n};\n\n/**\n * A move struct\n */\nexport type MoveStruct = {\n name: string;\n /**\n * Whether the struct is a native struct of Move\n */\n is_native: boolean;\n /**\n * Abilities associated with the struct\n */\n abilities: Array<MoveAbility>;\n /**\n * Generic types associated with the struct\n */\n generic_type_params: Array<MoveFunctionGenericTypeParam>;\n /**\n * Fields associated with the struct\n */\n fields: Array<MoveStructField>;\n};\n\n/**\n * Move function\n */\nexport type MoveFunction = {\n name: string;\n visibility: MoveFunctionVisibility;\n /**\n * Whether the function can be called as an entry function directly in a transaction\n */\n is_entry: boolean;\n /**\n * Whether the function is a view function or not\n */\n is_view: boolean;\n /**\n * Generic type params associated with the Move function\n */\n generic_type_params: Array<MoveFunctionGenericTypeParam>;\n /**\n * Parameters associated with the move function\n */\n params: Array<string>;\n /**\n * Return type of the function\n */\n return: Array<string>;\n};\n\nexport enum RoleType {\n VALIDATOR = \"validator\",\n FULL_NODE = \"full_node\",\n}\n\nexport type LedgerInfo = {\n /**\n * Chain ID of the current chain\n */\n chain_id: number;\n epoch: string;\n ledger_version: string;\n oldest_ledger_version: string;\n ledger_timestamp: string;\n node_role: RoleType;\n oldest_block_height: string;\n block_height: string;\n /**\n * Git hash of the build of the API endpoint. Can be used to determine the exact\n * software version used by the API endpoint.\n */\n git_hash?: string;\n};\n\n/**\n * A Block type\n */\nexport type Block = {\n block_height: string;\n block_hash: `0x${string}`;\n block_timestamp: string;\n first_version: string;\n last_version: string;\n /**\n * The transactions in the block in sequential order\n */\n transactions?: Array<TransactionResponse>;\n};\n\n/**\n * The data needed to generate a View Request payload\n */\nexport type ViewRequestData = {\n function: MoveStructType;\n typeArguments?: Array<MoveResourceType>;\n arguments?: Array<MoveValue>;\n};\n\n// REQUEST TYPES\n\n/**\n * View request for the Move view function API\n *\n * `type MoveResourceType = ${string}::${string}::${string}`;\n */\nexport type ViewRequest = {\n function: MoveResourceType;\n /**\n * Type arguments of the function\n */\n type_arguments: Array<MoveResourceType>;\n /**\n * Arguments of the function\n */\n arguments: Array<MoveValue>;\n};\n\n/**\n * Table Item request for the GetTableItem API\n */\nexport type TableItemRequest = {\n key_type: MoveValue;\n value_type: MoveValue;\n /**\n * The value of the table item's key\n */\n key: any;\n};\n\n/**\n * A list of Authentication Key schemes that are supported by Aptos.\n *\n * They are combinations of signing schemes and derive schemes.\n */\nexport type AuthenticationKeyScheme = SigningScheme | DeriveScheme;\n\n/**\n * A list of signing schemes that are supported by Aptos.\n *\n * https://github.com/aptos-labs/aptos-core/blob/main/types/src/transaction/authenticator.rs#L375-L378\n */\nexport enum SigningScheme {\n /**\n * For Ed25519PublicKey\n */\n Ed25519 = 0,\n /**\n * For MultiEd25519PublicKey\n */\n MultiEd25519 = 1,\n /**\n * For Secp256k1 ecdsa\n */\n Secp256k1Ecdsa = 2,\n}\n\n/**\n * Scheme used for deriving account addresses from other data\n */\nexport enum DeriveScheme {\n /**\n * Derives an address using an AUID, used for objects\n */\n DeriveAuid = 251,\n /**\n * Derives an address from another object address\n */\n DeriveObjectAddressFromObject = 252,\n /**\n * Derives an address from a GUID, used for objects\n */\n DeriveObjectAddressFromGuid = 253,\n /**\n * Derives an address from seed bytes, used for named objects\n */\n DeriveObjectAddressFromSeed = 254,\n /**\n * Derives an address from seed bytes, used for resource accounts\n */\n DeriveResourceAccountAddress = 255,\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * The current version of the SDK\n *\n * hardcoded for now, we would want to have it injected dynamically\n */\nexport const VERSION = \"0.0.0\";\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nexport const NetworkToIndexerAPI: Record<string, string> = {\n mainnet: \"https://indexer.mainnet.aptoslabs.com/v1/graphql\",\n testnet: \"https://indexer-testnet.staging.gcp.aptosdev.com/v1/graphql\",\n devnet: \"https://indexer-devnet.staging.gcp.aptosdev.com/v1/graphql\",\n local: \"http://127.0.0.1:8090/v1/graphql\",\n};\n\nexport const NetworkToNodeAPI: Record<string, string> = {\n mainnet: \"https://fullnode.mainnet.aptoslabs.com/v1\",\n testnet: \"https://fullnode.testnet.aptoslabs.com/v1\",\n devnet: \"https://fullnode.devnet.aptoslabs.com/v1\",\n local: \"http://127.0.0.1:8080/v1\",\n};\n\nexport const NetworkToFaucetAPI: Record<string, string> = {\n mainnet: \"https://faucet.mainnet.aptoslabs.com\",\n testnet: \"https://faucet.testnet.aptoslabs.com\",\n devnet: \"https://faucet.devnet.aptoslabs.com\",\n local: \"http://127.0.0.1:8081\",\n};\n\nexport enum Network {\n MAINNET = \"mainnet\",\n TESTNET = \"testnet\",\n DEVNET = \"devnet\",\n LOCAL = \"local\",\n CUSTOM = \"custom\",\n}\n\nexport const NetworkToChainId: Record<string, number> = {\n mainnet: 1,\n testnet: 2,\n};\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Network } from \"./apiEndpoints\";\n\n/**\n * Type of API endpoint for request routing\n */\nexport enum AptosApiType {\n FULLNODE,\n INDEXER,\n FAUCET,\n}\n\nexport const DEFAULT_NETWORK = Network.DEVNET;\n\n/**\n * The default max gas amount when none is given.\n *\n * This is the maximum number of gas units that will be used by a transaction before being rejected.\n *\n * Note that max gas amount varies based on the transaction. A larger transaction will go over this\n * default gas amount, and the value will need to be changed for the specific transaction.\n */\nexport const DEFAULT_MAX_GAS_AMOUNT = 200000;\n\n/**\n * The default transaction expiration seconds from now.\n *\n * This time is how long until the blockchain nodes will reject the transaction.\n *\n * Note that the transaction expiration time varies based on network connection and network load. It may need to be\n * increased for the transaction to be processed.\n */\nexport const DEFAULT_TXN_EXP_SEC_FROM_NOW = 20;\n\n/**\n * The default number of seconds to wait for a transaction to be processed.\n *\n * This time is the amount of time that the SDK will wait for a transaction to be processed when waiting for\n * the results of the transaction. It may take longer based on network connection and network load.\n */\nexport const DEFAULT_TXN_TIMEOUT_SEC = 20;\n\n/**\n * The default gas currency for the network.\n */\nexport const APTOS_COIN = \"0x1::aptos_coin::AptosCoin\";\n\nexport const RAW_TRANSACTION_SALT = \"APTOS::RawTransaction\";\nexport const RAW_TRANSACTION_WITH_DATA_SALT = \"APTOS::RawTransactionWithData\";\n","import { AptosConfig } from \"../api/aptosConfig\";\nimport { aptosRequest } from \"./core\";\nimport { AptosResponse } from \"./types\";\nimport { AnyNumber, ClientConfig, MimeType } from \"../types\";\nimport { AptosApiType } from \"../utils/const\";\n\nexport type GetRequestOptions = {\n /**\n * The config for the API client\n */\n aptosConfig: AptosConfig;\n /**\n * The type of API endpoint to call e.g. fullnode, indexer, etc\n */\n type: AptosApiType;\n /**\n * The name of the API method\n */\n originMethod: string;\n /**\n * The URL path to the API method\n */\n path: string;\n /**\n * The content type of the request body\n */\n contentType?: MimeType;\n /**\n * The accepted content type of the response of the API\n */\n acceptType?: MimeType;\n /**\n * The query parameters for the request\n */\n params?: Record<string, string | AnyNumber | boolean | undefined>;\n /**\n * Specific client overrides for this request to override aptosConfig\n */\n overrides?: ClientConfig;\n};\n\nexport type GetAptosRequestOptions = Omit<GetRequestOptions, \"type\">;\n\n/**\n * Main function to do a Get request\n *\n * @param options GetRequestOptions\n * @returns\n */\nexport async function get<Req, Res>(options: GetRequestOptions): Promise<AptosResponse<Req, Res>> {\n const { aptosConfig, overrides, params, contentType, acceptType, path, originMethod, type } = options;\n const url = aptosConfig.getRequestUrl(type);\n\n return aptosRequest<Req, Res>(\n {\n url,\n method: \"GET\",\n originMethod,\n path,\n contentType: contentType?.valueOf(),\n acceptType: acceptType?.valueOf(),\n params,\n overrides: {\n ...aptosConfig,\n ...overrides,\n },\n },\n aptosConfig,\n );\n}\n\nexport async function getAptosFullNode<Req, Res>(options: GetAptosRequestOptions): Promise<AptosResponse<Req, Res>> {\n return get<Req, Res>({ ...options, type: AptosApiType.FULLNODE });\n}\n\n/// This function is a helper for paginating using a function wrapping an API\nexport async function paginateWithCursor<Req extends Record<string, any>, Res extends any[]>(\n options: GetAptosRequestOptions,\n): Promise<Res> {\n const out = [];\n let cursor: string | undefined;\n const requestParams = options.params as Req & { start?: string; limit?: number };\n // eslint-disable-next-line no-constant-condition\n while (true) {\n requestParams.start = cursor;\n // eslint-disable-next-line no-await-in-loop\n const response = await getAptosFullNode<Req, Res>({\n aptosConfig: options.aptosConfig,\n originMethod: options.originMethod,\n path: options.path,\n params: requestParams,\n overrides: options.overrides,\n });\n /**\n * the cursor is a \"state key\" from the API perspective. Client\n * should not need to \"care\" what it represents but just use it\n * to query the next chunk of data.\n */\n cursor = response.headers[\"x-aptos-cursor\"];\n // Now that we have the cursor (if any), we remove the headers before\n // adding these to the output of this function.\n delete (response as any).headers;\n out.push(...response.data);\n if (cursor === null || cursor === undefined) {\n break;\n }\n }\n return out as any;\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AptosConfig } from \"../api/aptosConfig\";\nimport { aptosRequest } from \"./core\";\nimport { AptosResponse } from \"./types\";\nimport { AnyNumber, ClientConfig, MimeType } from \"../types\";\nimport { AptosApiType } from \"../utils/const\";\n\nexport type PostRequestOptions = {\n /**\n * The config for the API client\n */\n aptosConfig: AptosConfig;\n /**\n * The type of API endpoint to call e.g. fullnode, indexer, etc\n */\n type: AptosApiType;\n /**\n * The name of the API method\n */\n originMethod: string;\n /**\n * The URL path to the API method\n */\n path: string;\n /**\n * The content type of the request body\n */\n contentType?: MimeType;\n /**\n * The accepted content type of the response of the API\n */\n acceptType?: MimeType;\n /**\n * The query parameters for the request\n */\n params?: Record<string, string | AnyNumber | boolean | undefined>;\n /**\n * The body of the request, should match teh content type of the request\n */\n body?: any;\n /**\n * Specific client overrides for this request to override aptosConfig\n */\n overrides?: ClientConfig;\n};\n\nexport type PostAptosRequestOptions = Omit<PostRequestOptions, \"type\">;\n\n/**\n * Main function to do a Post request\n *\n * @param options PostRequestOptions\n * @returns\n */\nexport async function post<Req, Res>(options: PostRequestOptions): Promise<AptosResponse<Req, Res>> {\n const { type, originMethod, path, body, acceptType, contentType, params, aptosConfig, overrides } = options;\n const url = aptosConfig.getRequestUrl(type);\n\n return aptosRequest<Req, Res>(\n {\n url,\n method: \"POST\",\n originMethod,\n path,\n body,\n contentType: contentType?.valueOf(),\n acceptType: acceptType?.valueOf(),\n params,\n overrides: {\n ...aptosConfig,\n ...overrides,\n },\n },\n aptosConfig,\n );\n}\n\nexport async function postAptosFullNode<Req, Res>(options: PostAptosRequestOptions): Promise<AptosResponse<Req, Res>> {\n return post<Req, Res>({ ...options, type: AptosApiType.FULLNODE });\n}\n\nexport async function postAptosIndexer<Req, Res>(options: PostAptosRequestOptions): Promise<AptosResponse<Req, Res>> {\n return post<Req, Res>({ ...options, type: AptosApiType.INDEXER });\n}\n\nexport async function postAptosFaucet<Req, Res>(options: PostAptosRequestOptions): Promise<AptosResponse<Req, Res>> {\n return post<Req, Res>({ ...options, type: AptosApiType.FAUCET });\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bytesToHex, hexToBytes } from \"@noble/hashes/utils\";\nimport { Serializable, Serializer } from \"../bcs/serializer\";\nimport { Deserializer } from \"../bcs/deserializer\";\nimport { ParsingError, ParsingResult } from \"./common\";\nimport { TransactionArgument } from \"../transactions/instances/transactionArgument\";\nimport { HexInput, ScriptTransactionArgumentVariants } from \"../types\";\n\n/**\n * This enum is used to explain why an address was invalid.\n */\nexport enum AddressInvalidReason {\n INCORRECT_NUMBER_OF_BYTES = \"incorrect_number_of_bytes\",\n INVALID_HEX_CHARS = \"invalid_hex_chars\",\n TOO_SHORT = \"too_short\",\n TOO_LONG = \"too_long\",\n LEADING_ZERO_X_REQUIRED = \"leading_zero_x_required\",\n LONG_FORM_REQUIRED_UNLESS_SPECIAL = \"long_form_required_unless_special\",\n INVALID_PADDING_ZEROES = \"INVALID_PADDING_ZEROES\",\n}\n\n/**\n * NOTE: Only use this class for account addresses. For other hex data, e.g. transaction\n * hashes, use the Hex class.\n *\n * AccountAddress is used for working with account addresses. Account addresses, when\n * represented as a string, generally look like these examples:\n * - 0x1\n * - 0xaa86fe99004361f747f91342ca13c426ca0cccb0c1217677180c9493bad6ef0c\n *\n * Proper formatting and parsing of account addresses is defined by AIP-40.\n * To learn more about the standard, read the AIP here:\n * https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-40.md.\n *\n * The comments in this class make frequent reference to the LONG and SHORT formats,\n * as well as \"special\" addresses. To learn what these refer to see AIP-40.\n */\nexport class AccountAddress extends Serializable implements TransactionArgument {\n /**\n * This is the internal representation of an account address.\n */\n readonly data: Uint8Array;\n\n /**\n * The number of bytes that make up an account address.\n */\n static readonly LENGTH: number = 32;\n\n /**\n * The length of an address string in LONG form without a leading 0x.\n */\n static readonly LONG_STRING_LENGTH: number = 64;\n\n static ONE: AccountAddress = AccountAddress.fromString(\"0x1\");\n\n static TWO: AccountAddress = AccountAddress.fromString(\"0x2\");\n\n static THREE: AccountAddress = AccountAddress.fromString(\"0x3\");\n\n static FOUR: AccountAddress = AccountAddress.fromString(\"0x4\");\n\n /**\n * Creates an instance of AccountAddress from a Uint8Array.\n *\n * @param args.data A Uint8Array representing an account address.\n */\n constructor(args: { data: Uint8Array }) {\n super();\n if (args.data.length !== AccountAddress.LENGTH) {\n throw new ParsingError(\n \"AccountAddress data should be exactly 32 bytes long\",\n AddressInvalidReason.INCORRECT_NUMBER_OF_BYTES,\n );\n }\n this.data = args.data;\n }\n\n /**\n * Returns whether an address is special, where special is defined as 0x0 to 0xf\n * inclusive. In other words, the last byte of the address must be < 0b10000 (16)\n * and every other byte must be zero.\n *\n * For more information on how special addresses are defined see AIP-40:\n * https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-40.md.\n *\n * @returns true if the address is special, false if not.\n */\n isSpecial(): boolean {\n return (\n this.data.slice(0, this.data.length - 1).every((byte) => byte === 0) && this.data[this.data.length - 1] < 0b10000\n );\n }\n\n // ===\n // Methods for representing an instance of AccountAddress as other types.\n // ===\n\n /**\n * Return the AccountAddress as a string as per AIP-40.\n * https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-40.md.\n *\n * In short, it means that special addresses are represented in SHORT form, meaning\n * 0x0 through to 0xf inclusive, and every other address is represented in LONG form,\n * meaning 0x + 64 hex characters.\n *\n * @returns AccountAddress as a string conforming to AIP-40.\n */\n toString(): string {\n return `0x${this.toStringWithoutPrefix()}`;\n }\n\n /**\n * NOTE: Prefer to use `toString` where possible.\n *\n * Return the AccountAddress as a string as per AIP-40 but without the leading 0x.\n *\n * Learn more by reading the docstring of `toString`.\n *\n * @returns AccountAddress as a string conforming to AIP-40 but without the leading 0x.\n */\n toStringWithoutPrefix(): string {\n let hex = bytesToHex(this.data);\n if (this.isSpecial()) {\n hex = hex[hex.length - 1];\n }\n return hex;\n }\n\n /**\n * NOTE: Prefer to use `toString` where possible.\n *\n * Whereas toString will format special addresses (as defined by isSpecial) using the\n * SHORT form (no leading 0s), this format the address in the LONG format\n * unconditionally.\n *\n * This means it will be 0x + 64 hex characters.\n *\n * @returns AccountAddress as a string in LONG form.\n */\n toStringLong(): string {\n return `0x${this.toStringLongWithoutPrefix()}`;\n }\n\n /**\n * NOTE: Prefer to use `toString` where possible.\n *\n * Whereas toString will format special addresses (as defined by isSpecial) using the\n * SHORT form (no leading 0s), this function will include leading zeroes. The string\n * will not have a leading zero.\n *\n * This means it will be 64 hex characters without a leading 0x.\n *\n * @returns AccountAddress as a string in LONG form without a leading 0x.\n */\n toStringLongWithoutPrefix(): string {\n return bytesToHex(this.data);\n }\n\n /**\n * Get the inner hex data. The inner data is already a Uint8Array so no conversion\n * is taking place here, it just returns the inner data.\n *\n * @returns Hex data as Uint8Array\n */\n toUint8Array(): Uint8Array {\n return this.data;\n }\n\n /**\n * Serialize the AccountAddress to a Serializer instance's data buffer.\n * @param serializer The serializer to serialize the AccountAddress to.\n * @returns void\n * @example\n * const serializer = new Serializer();\n * const address = AccountAddress.fromString(\"0x1\");\n * address.serialize(serializer);\n * const bytes = serializer.toUint8Array();\n * // `bytes` is now the BCS-serialized address.\n */\n serialize(serializer: Serializer): void {\n serializer.serializeFixedBytes(this.data);\n }\n\n serializeForEntryFunction(serializer: Serializer): void {\n const bcsBytes = this.bcsToBytes();\n serializer.serializeBytes(bcsBytes);\n }\n\n serializeForScriptFunction(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(ScriptTransactionArgumentVariants.Address);\n serializer.serialize(this);\n }\n\n /**\n * Deserialize an AccountAddress from the byte buffer in a Deserializer instance.\n * @param deserializer The deserializer to deserialize the AccountAddress from.\n * @returns An instance of AccountAddress.\n * @example\n * const bytes = hexToBytes(\"0x0102030405060708091011121314151617181920212223242526272829303132\");\n * const deserializer = new Deserializer(bytes);\n * const address = AccountAddress.deserialize(deserializer);\n * // `address` is now an instance of AccountAddress.\n */\n static deserialize(deserializer: Deserializer): AccountAddress {\n const bytes = deserializer.deserializeFixedBytes(AccountAddress.LENGTH);\n return new AccountAddress({ data: bytes });\n }\n\n // ===\n // Methods for creating an instance of AccountAddress from other types.\n // ===\n\n /**\n * NOTE: This function has strict parsing behavior. For relaxed behavior, please use\n * the `fromStringRelaxed` function.\n *\n * Creates an instance of AccountAddress from a hex string.\n *\n * This function allows only the strictest formats defined by AIP-40. In short this\n * means only the following formats are accepted:\n *\n * - LONG\n * - SHORT for special addresses\n *\n * Where:\n * - LONG is defined as 0x + 64 hex characters.\n * - SHORT for special addresses is 0x0 to 0xf inclusive without padding zeroes.\n *\n * This means the following are not accepted:\n * - SHORT for non-special addresses.\n * - Any address without a leading 0x.\n *\n * Learn more about the different address formats by reading AIP-40:\n * https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-40.md.\n *\n * @param input A hex string representing an account address.\n *\n * @returns An instance of AccountAddress.\n */\n static fromString(input: string): AccountAddress {\n // Assert the string starts with 0x.\n if (!input.startsWith(\"0x\")) {\n throw new ParsingError(\"Hex string must start with a leading 0x.\", AddressInvalidReason.LEADING_ZERO_X_REQUIRED);\n }\n\n const address = AccountAddress.fromStringRelaxed(input);\n\n // Check if the address is in LONG form. If it is not, this is only allowed for\n // special addresses, in which case we check it is in proper SHORT form.\n if (input.length !== AccountAddress.LONG_STRING_LENGTH + 2) {\n if (!address.isSpecial()) {\n throw new ParsingError(\n `The given hex string ${address} is not a special address, it must be represented as 0x + 64 chars.`,\n AddressInvalidReason.LONG_FORM_REQUIRED_UNLESS_SPECIAL,\n );\n } else if (input.length !== 3) {\n // 0x + one hex char is the only valid SHORT form for special addresses.\n throw new ParsingError(\n // eslint-disable-next-line max-len\n `The given hex string ${input} is a special address not in LONG form, it must be 0x0 to 0xf without padding zeroes.`,\n AddressInvalidReason.INVALID_PADDING_ZEROES,\n );\n }\n }\n\n return address;\n }\n\n /**\n * NOTE: This function has relaxed parsing behavior. For strict behavior, please use\n * the `fromString` function. Where possible use `fromString` rather than this\n * function, `fromStringRelaxed` is only provided for backwards compatibility.\n *\n * Creates an instance of AccountAddress from a hex string.\n *\n * This function allows all formats defined by AIP-40. In short this means the\n * following formats are accepted:\n *\n * - LONG, with or without leading 0x\n * - SHORT, with or without leading 0x\n *\n * Where:\n * - LONG is 64 hex characters.\n * - SHORT is 1 to 63 hex characters inclusive.\n * - Padding zeroes are allowed, e.g. 0x0123 is valid.\n *\n * Learn more about the different address formats by reading AIP-40:\n * https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-40.md.\n *\n * @param input A hex string representing an account address.\n *\n * @returns An instance of AccountAddress.\n */\n static fromStringRelaxed(input: string): AccountAddress {\n let parsedInput = input;\n // Remove leading 0x for parsing.\n if (input.startsWith(\"0x\")) {\n parsedInput = input.slice(2);\n }\n\n // Ensure the address string is at least 1 character long.\n if (parsedInput.length === 0) {\n throw new ParsingError(\n \"Hex string is too short, must be 1 to 64 chars long, excluding the leading 0x.\",\n AddressInvalidReason.TOO_SHORT,\n );\n }\n\n // Ensure the address string is not longer than 64 characters.\n if (parsedInput.length > 64) {\n throw new ParsingError(\n \"Hex string is too long, must be 1 to 64 chars long, excluding the leading 0x.\",\n AddressInvalidReason.TOO_LONG,\n );\n }\n\n let addressBytes: Uint8Array;\n try {\n // Pad the address with leading zeroes, so it is 64 chars long and then convert\n // the hex string to bytes. Every two characters in a hex string constitutes a\n // single byte. So a 64 length hex string becomes a 32 byte array.\n addressBytes = hexToBytes(parsedInput.padStart(64, \"0\"));\n } catch (e) {\n const error = e as Error;\n // At this point the only way this can fail is if the hex string contains\n // invalid characters.\n throw new ParsingError(`Hex characters are invalid: ${error.message}`, AddressInvalidReason.INVALID_HEX_CHARS);\n }\n\n return new AccountAddress({ data: addressBytes });\n }\n\n /**\n * Convenience method for creating an AccountAddress from HexInput. For\n * more information on how this works, see the constructor and fromString.\n *\n * @param input A hex string or Uint8Array representing an account address.\n *\n * @returns An instance of AccountAddress.\n */\n static fromHexInput(input: HexInput): AccountAddress {\n if (input instanceof Uint8Array) {\n return new AccountAddress({ data: input });\n }\n return AccountAddress.fromString(input);\n }\n\n /**\n * Convenience method for creating an AccountAddress from HexInput. For\n * more information on how this works, see the constructor and fromStringRelaxed.\n *\n * @param hexInput A hex string or Uint8Array representing an account address.\n *\n * @returns An instance of AccountAddress.\n */\n static fromHexInputRelaxed(hexInput: HexInput): AccountAddress {\n if (hexInput instanceof Uint8Array) {\n return new AccountAddress({ data: hexInput });\n }\n return AccountAddress.fromStringRelaxed(hexInput);\n }\n\n // ===\n // Methods for checking validity.\n // ===\n\n /**\n * Check if the string is a valid AccountAddress.\n *\n * @param args.input A hex string representing an account address.\n * @param args.relaxed If true, use relaxed parsing behavior. If false, use strict parsing behavior.\n *\n * @returns valid = true if the string is valid, valid = false if not. If the string\n * is not valid, invalidReason will be set explaining why it is invalid.\n */\n static isValid(args: { input: string; relaxed?: boolean }): ParsingResult<AddressInvalidReason> {\n try {\n if (args.relaxed) {\n AccountAddress.fromStringRelaxed(args.input);\n } else {\n AccountAddress.fromString(args.input);\n }\n return { valid: true };\n } catch (e) {\n const error = e as ParsingError<AddressInvalidReason>;\n return {\n valid: false,\n invalidReason: error.invalidReason,\n invalidReasonMessage: error.message,\n };\n }\n }\n\n /**\n * Return whether AccountAddresses are equal. AccountAddresses are considered equal\n * if their underlying byte data is identical.\n *\n * @param other The AccountAddress to compare to.\n * @returns true if the AccountAddresses are equal, false if not.\n */\n equals(other: AccountAddress): boolean {\n if (this.data.length !== other.data.length) return false;\n return this.data.every((value, index) => value === other.data[index]);\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Uint8, Uint16, Uint32, Uint64, Uint128, Uint256 } from \"../types\";\n\n// Upper bound values for uint8, uint16, uint64 and uint128\nexport const MAX_U8_NUMBER: Uint8 = 2 ** 8 - 1;\nexport const MAX_U16_NUMBER: Uint16 = 2 ** 16 - 1;\nexport const MAX_U32_NUMBER: Uint32 = 2 ** 32 - 1;\nexport const MAX_U64_BIG_INT: Uint64 = BigInt(2) ** BigInt(64) - BigInt(1);\nexport const MAX_U128_BIG_INT: Uint128 = BigInt(2) ** BigInt(128) - BigInt(1);\nexport const MAX_U256_BIG_INT: Uint256 = BigInt(2) ** BigInt(256) - BigInt(1);\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bytesToHex, hexToBytes } from \"@noble/hashes/utils\";\nimport { ParsingError, ParsingResult } from \"./common\";\nimport { HexInput } from \"../types\";\n\n/**\n * This enum is used to explain why parsing might have failed.\n */\nexport enum HexInvalidReason {\n TOO_SHORT = \"too_short\",\n INVALID_LENGTH = \"invalid_length\",\n INVALID_HEX_CHARS = \"invalid_hex_chars\",\n}\n\n/**\n * NOTE: Do not use this class when working with account addresses, use AccountAddress.\n *\n * NOTE: When accepting hex data as input to a function, prefer to accept HexInput and\n * then use the static helper methods of this class to convert it into the desired\n * format. This enables the greatest flexibility for the developer.\n *\n * Hex is a helper class for working with hex data. Hex data, when represented as a\n * string, generally looks like this, for example: 0xaabbcc, 45cd32, etc.\n *\n * You might use this class like this:\n *\n * ```ts\n * getTransactionByHash(txnHash: HexInput): Promise<Transaction> {\n * const txnHashString = Hex.fromHexInput(txnHash).toString();\n * return await getTransactionByHashInner(txnHashString);\n * }\n * ```\n *\n * This call to `Hex.fromHexInput().toString()` converts the HexInput to a hex string\n * with a leading 0x prefix, regardless of what the input format was.\n *\n * These are some other ways to chain the functions together:\n * - `Hex.fromString({ hexInput: \"0x1f\" }).toUint8Array()`\n * - `new Hex([1, 3]).toStringWithoutPrefix()`\n */\nexport class Hex {\n private readonly data: Uint8Array;\n\n /**\n * Create a new Hex instance from a Uint8Array.\n *\n * @param data Uint8Array\n */\n constructor(data: Uint8Array) {\n this.data = data;\n }\n\n // ===\n // Methods for representing an instance of Hex as other types.\n // ===\n\n /**\n * Get the inner hex data. The inner data is already a Uint8Array so no conversion\n * is taking place here, it just returns the inner data.\n *\n * @returns Hex data as Uint8Array\n */\n toUint8Array(): Uint8Array {\n return this.data;\n }\n\n /**\n * Get the hex data as a string without the 0x prefix.\n *\n * @returns Hex string without 0x prefix\n */\n toStringWithoutPrefix(): string {\n return bytesToHex(this.data);\n }\n\n /**\n * Get the hex data as a string with the 0x prefix.\n *\n * @returns Hex string with 0x prefix\n */\n toString(): string {\n return `0x${this.toStringWithoutPrefix()}`;\n }\n\n // ===\n // Methods for creating an instance of Hex from other types.\n // ===\n\n /**\n * Static method to convert a hex string to Hex\n *\n * @param str A hex string, with or without the 0x prefix\n *\n * @returns Hex\n */\n static fromString(str: string): Hex {\n let input = str;\n\n if (input.startsWith(\"0x\")) {\n input = input.slice(2);\n }\n\n if (input.length === 0) {\n throw new ParsingError(\n \"Hex string is too short, must be at least 1 char long, excluding the optional leading 0x.\",\n HexInvalidReason.TOO_SHORT,\n );\n }\n\n if (input.length % 2 !== 0) {\n throw new ParsingError(\"Hex string must be an even number of hex characters.\", HexInvalidReason.INVALID_LENGTH);\n }\n\n try {\n return new Hex(hexToBytes(input));\n } catch (e) {\n const error = e as Error;\n throw new ParsingError(\n `Hex string contains invalid hex characters: ${error.message}`,\n HexInvalidReason.INVALID_HEX_CHARS,\n );\n }\n }\n\n /**\n * Static method to convert an instance of HexInput to Hex\n *\n * @param hexInput A HexInput (string or Uint8Array)\n *\n * @returns Hex\n */\n static fromHexInput(hexInput: HexInput): Hex {\n if (hexInput instanceof Uint8Array) return new Hex(hexInput);\n return Hex.fromString(hexInput);\n }\n\n // ===\n // Methods for checking validity.\n // ===\n\n /**\n * Check if the string is valid hex.\n *\n * @param str A hex string representing byte data.\n *\n * @returns valid = true if the string is valid, false if not. If the string is not\n * valid, invalidReason and invalidReasonMessage will be set explaining why it is\n * invalid.\n */\n static isValid(str: string): ParsingResult<HexInvalidReason> {\n try {\n Hex.fromString(str);\n return { valid: true };\n } catch (e) {\n const error = e as ParsingError<HexInvalidReason>;\n return {\n valid: false,\n invalidReason: error.invalidReason,\n invalidReasonMessage: error.message,\n };\n }\n }\n\n /**\n * Return whether Hex instances are equal. Hex instances are considered equal if\n * their underlying byte data is identical.\n *\n * @param other The Hex instance to compare to.\n * @returns true if the Hex instances are equal, false if not.\n */\n equals(other: Hex): boolean {\n if (this.data.length !== other.data.length) return false;\n return this.data.every((value, index) => value === other.data[index]);\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * This error is used to explain why parsing failed.\n */\nexport class ParsingError<T> extends Error {\n /**\n * This provides a programmatic way to access why parsing failed. Downstream devs\n * might want to use this to build their own error messages if the default error\n * messages are not suitable for their use case. This should be an enum.\n */\n public invalidReason: T;\n\n constructor(message: string, invalidReason: T) {\n super(message);\n this.invalidReason = invalidReason;\n }\n}\n\n/**\n * Whereas ParsingError is thrown when parsing fails, e.g. in a fromString function,\n * this type is returned from \"defensive\" functions like isValid.\n */\nexport type ParsingResult<T> = {\n /**\n * True if valid, false otherwise.\n */\n valid: boolean;\n\n /**\n * If valid is false, this will be a code explaining why parsing failed.\n */\n invalidReason?: T;\n\n /**\n * If valid is false, this will be a string explaining why parsing failed.\n */\n invalidReasonMessage?: string;\n};\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable no-bitwise */\nimport {\n MAX_U128_BIG_INT,\n MAX_U16_NUMBER,\n MAX_U32_NUMBER,\n MAX_U64_BIG_INT,\n MAX_U8_NUMBER,\n MAX_U256_BIG_INT,\n} from \"./consts\";\nimport { Hex } from \"../core/hex\";\nimport { AnyNumber, Uint16, Uint32, Uint8 } from \"../types\";\n\n// This class is intended to be used as a base class for all serializable types.\n// It can be used to facilitate composable serialization of a complex type and\n// in general to serialize a type to its BCS representation.\nexport abstract class Serializable {\n abstract serialize(serializer: Serializer): void;\n\n /**\n * Serializes a `Serializable` value to its BCS representation.\n * This function is the Typescript SDK equivalent of `bcs::to_bytes` in Move.\n * @returns the BCS representation of the Serializable instance as a byte buffer\n */\n bcsToBytes(): Uint8Array {\n const serializer = new Serializer();\n this.serialize(serializer);\n return serializer.toUint8Array();\n }\n\n /**\n * Helper function to get a value's BCS-serialized bytes as a Hex instance.\n * @returns a Hex instance with the BCS-serialized bytes loaded into its underlying Uint8Array\n */\n bcsToHex(): Hex {\n const bcsBytes = this.bcsToBytes();\n return Hex.fromHexInput(bcsBytes);\n }\n}\n\nexport class Serializer {\n private buffer: ArrayBuffer;\n\n private offset: number;\n\n // Constructs a serializer with a buffer of size `length` bytes, 64 bytes by default.\n // `length` must be greater than 0.\n constructor(length: number = 64) {\n if (length <= 0) {\n throw new Error(\"Length needs to be greater than 0\");\n }\n this.buffer = new ArrayBuffer(length);\n this.offset = 0;\n }\n\n private ensureBufferWillHandleSize(bytes: number) {\n while (this.buffer.byteLength < this.offset + bytes) {\n const newBuffer = new ArrayBuffer(this.buffer.byteLength * 2);\n new Uint8Array(newBuffer).set(new Uint8Array(this.buffer));\n this.buffer = newBuffer;\n }\n }\n\n protected appendToBuffer(values: Uint8Array) {\n this.ensureBufferWillHandleSize(values.length);\n new Uint8Array(this.buffer, this.offset).set(values);\n this.offset += values.length;\n }\n\n private serializeWithFunction(\n fn: (byteOffset: number, value: number, littleEndian?: boolean) => void,\n bytesLength: number,\n value: number,\n ) {\n this.ensureBufferWillHandleSize(bytesLength);\n const dv = new DataView(this.buffer, this.offset);\n fn.apply(dv, [0, value, true]);\n this.offset += bytesLength;\n }\n\n /**\n * Serializes a string. UTF8 string is supported.\n *\n * The number of bytes in the string content is serialized first, as a uleb128-encoded u32 integer.\n * Then the string content is serialized as UTF8 encoded bytes.\n *\n * BCS layout for \"string\": string_length | string_content\n * where string_length is a u32 integer encoded as a uleb128 integer, equal to the number of bytes in string_content.\n *\n * @example\n * ```ts\n * const serializer = new Serializer();\n * serializer.serializeStr(\"1234abcd\");\n * assert(serializer.toUint8Array() === new Uint8Array([8, 49, 50, 51, 52, 97, 98, 99, 100]));\n * ```\n */\n serializeStr(value: string) {\n const textEncoder = new TextEncoder();\n this.serializeBytes(textEncoder.encode(value));\n }\n\n /**\n * Serializes an array of bytes.\n *\n * BCS layout for \"bytes\": bytes_length | bytes\n * where bytes_length is a u32 integer encoded as a uleb128 integer, equal to the length of the bytes array.\n */\n serializeBytes(value: Uint8Array) {\n this.serializeU32AsUleb128(value.length);\n this.appendToBuffer(value);\n }\n\n /**\n * Serializes an array of bytes with known length. Therefore, length doesn't need to be\n * serialized to help deserialization.\n *\n * When deserializing, the number of bytes to deserialize needs to be passed in.\n */\n serializeFixedBytes(value: Uint8Array) {\n this.appendToBuffer(value);\n }\n\n /**\n * Serializes a boolean value.\n *\n * BCS layout for \"boolean\": One byte. \"0x01\" for true and \"0x00\" for false.\n */\n serializeBool(value: boolean) {\n ensureBoolean(value);\n const byteValue = value ? 1 : 0;\n this.appendToBuffer(new Uint8Array([byteValue]));\n }\n\n /**\n * Serializes a uint8 number.\n *\n * BCS layout for \"uint8\": One byte. Binary format in little-endian representation.\n */\n @checkNumberRange(0, MAX_U8_NUMBER)\n serializeU8(value: Uint8) {\n this.appendToBuffer(new Uint8Array([value]));\n }\n\n /**\n * Serializes a uint16 number.\n *\n * BCS layout for \"uint16\": Two bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const serializer = new Serializer();\n * serializer.serializeU16(4660);\n * assert(serializer.toUint8Array() === new Uint8Array([0x34, 0x12]));\n * ```\n */\n @checkNumberRange(0, MAX_U16_NUMBER)\n serializeU16(value: Uint16) {\n this.serializeWithFunction(DataView.prototype.setUint16, 2, value);\n }\n\n /**\n * Serializes a uint32 number.\n *\n * BCS layout for \"uint32\": Four bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const serializer = new Serializer();\n * serializer.serializeU32(305419896);\n * assert(serializer.toUint8Array() === new Uint8Array([0x78, 0x56, 0x34, 0x12]));\n * ```\n */\n @checkNumberRange(0, MAX_U32_NUMBER)\n serializeU32(value: Uint32) {\n this.serializeWithFunction(DataView.prototype.setUint32, 4, value);\n }\n\n /**\n * Serializes a uint64 number.\n *\n * BCS layout for \"uint64\": Eight bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const serializer = new Serializer();\n * serializer.serializeU64(1311768467750121216);\n * assert(serializer.toUint8Array() === new Uint8Array([0x00, 0xEF, 0xCD, 0xAB, 0x78, 0x56, 0x34, 0x12]));\n * ```\n */\n @checkNumberRange(BigInt(0), MAX_U64_BIG_INT)\n serializeU64(value: AnyNumber) {\n const low = BigInt(value) & BigInt(MAX_U32_NUMBER);\n const high = BigInt(value) >> BigInt(32);\n\n // write little endian number\n this.serializeU32(Number(low));\n this.serializeU32(Number(high));\n }\n\n /**\n * Serializes a uint128 number.\n *\n * BCS layout for \"uint128\": Sixteen bytes. Binary format in little-endian representation.\n */\n @checkNumberRange(BigInt(0), MAX_U128_BIG_INT)\n serializeU128(value: AnyNumber) {\n const low = BigInt(value) & MAX_U64_BIG_INT;\n const high = BigInt(value) >> BigInt(64);\n\n // write little endian number\n this.serializeU64(low);\n this.serializeU64(high);\n }\n\n /**\n * Serializes a uint256 number.\n *\n * BCS layout for \"uint256\": Sixteen bytes. Binary format in little-endian representation.\n */\n @checkNumberRange(BigInt(0), MAX_U256_BIG_INT)\n serializeU256(value: AnyNumber) {\n const low = BigInt(value) & MAX_U128_BIG_INT;\n const high = BigInt(value) >> BigInt(128);\n\n // write little endian number\n this.serializeU128(low);\n this.serializeU128(high);\n }\n\n /**\n * Serializes a uint32 number with uleb128.\n *\n * BCS uses uleb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n */\n @checkNumberRange(0, MAX_U32_NUMBER)\n serializeU32AsUleb128(val: Uint32) {\n let value = val;\n const valueArray = [];\n while (value >>> 7 !== 0) {\n valueArray.push((value & 0x7f) | 0x80);\n value >>>= 7;\n }\n valueArray.push(value);\n this.appendToBuffer(new Uint8Array(valueArray));\n }\n\n /**\n * Returns the buffered bytes\n */\n toUint8Array(): Uint8Array {\n return new Uint8Array(this.buffer).slice(0, this.offset);\n }\n\n /**\n * Serializes a `Serializable` value, facilitating composable serialization.\n *\n * @param value The Serializable value to serialize\n *\n * @example\n * // Define the MoveStruct class that implements the Serializable interface\n * class MoveStruct extends Serializable {\n * constructor(\n * public creatorAddress: AccountAddress, // where AccountAddress extends Serializable\n * public collectionName: string,\n * public tokenName: string\n * ) {}\n *\n * serialize(serializer: Serializer): void {\n * serializer.serialize(this.creatorAddress); // Composable serialization of another Serializable object\n * serializer.serializeStr(this.collectionName);\n * serializer.serializeStr(this.tokenName);\n * }\n * }\n *\n * // Construct a MoveStruct\n * const moveStruct = new MoveStruct(new AccountAddress(...), \"MyCollection\", \"TokenA\");\n *\n * // Serialize a string, a u64 number, and a MoveStruct instance.\n * const serializer = new Serializer();\n * serializer.serializeStr(\"ExampleString\");\n * serializer.serializeU64(12345678);\n * serializer.serialize(moveStruct);\n *\n * // Get the bytes from the Serializer instance\n * const serializedBytes = serializer.toUint8Array();\n *\n * @returns the serializer instance\n */\n serialize<T extends Serializable>(value: T): void {\n // NOTE: The `serialize` method called by `value` is defined in `value`'s\n // Serializable interface, not the one defined in this class.\n value.serialize(this);\n }\n\n /**\n * Serializes an array of BCS Serializable values to a serializer instance.\n * Note that this does not return anything. The bytes are added to the serializer instance's byte buffer.\n *\n * @param values The array of BCS Serializable values\n * @example\n * const addresses = new Array<AccountAddress>(\n * AccountAddress.fromHexInputRelaxed(\"0x1\"),\n * AccountAddress.fromHexInputRelaxed(\"0x2\"),\n * AccountAddress.fromHexInputRelaxed(\"0xa\"),\n * AccountAddress.fromHexInputRelaxed(\"0xb\"),\n * );\n * const serializer = new Serializer();\n * serializer.serializeVector(addresses);\n * const serializedBytes = serializer.toUint8Array();\n * // serializedBytes is now the BCS-serialized bytes\n * // The equivalent value in Move would be:\n * // `bcs::to_bytes(&vector<address> [@0x1, @0x2, @0xa, @0xb])`;\n */\n serializeVector<T extends Serializable>(values: Array<T>): void {\n this.serializeU32AsUleb128(values.length);\n values.forEach((item) => {\n item.serialize(this);\n });\n }\n}\n\nexport function ensureBoolean(value: unknown): asserts value is boolean {\n if (typeof value !== \"boolean\") {\n throw new Error(`${value} is not a boolean value`);\n }\n}\n\nexport const outOfRangeErrorMessage = (value: AnyNumber, min: AnyNumber, max: AnyNumber) =>\n `${value} is out of range: [${min}, ${max}]`;\n\nexport function validateNumberInRange<T extends AnyNumber>(value: T, minValue: T, maxValue: T) {\n const valueBigInt = BigInt(value);\n if (valueBigInt > BigInt(maxValue) || valueBigInt < BigInt(minValue)) {\n throw new Error(outOfRangeErrorMessage(value, minValue, maxValue));\n }\n}\n\n/**\n * A decorator to ensure the input argument for a function is within a range.\n * @param minValue The input argument must be >= minValue\n * @param maxValue The input argument must be <= maxValue\n */\nfunction checkNumberRange<T extends AnyNumber>(minValue: T, maxValue: T) {\n return (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => {\n const childFunction = descriptor.value;\n // eslint-disable-next-line no-param-reassign\n descriptor.value = function deco(value: AnyNumber) {\n validateNumberInRange(value, minValue, maxValue);\n return childFunction.apply(this, [value]);\n };\n\n return descriptor;\n };\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { sha3_256 as sha3Hash } from \"@noble/hashes/sha3\";\nimport { AccountAddress } from \"./accountAddress\";\nimport { PublicKey } from \"./crypto/asymmetricCrypto\";\nimport { Ed25519PublicKey } from \"./crypto/ed25519\";\nimport { MultiEd25519PublicKey } from \"./crypto/multiEd25519\";\nimport { Secp256k1PublicKey } from \"./crypto/secp256k1\";\nimport { Hex } from \"./hex\";\nimport { AuthenticationKeyScheme, HexInput, SigningScheme } from \"../types\";\n\n/**\n * Each account stores an authentication key. Authentication key enables account owners to rotate\n * their private key(s) associated with the account without changing the address that hosts their account.\n * @see {@link https://aptos.dev/concepts/accounts | Account Basics}\n *\n * Note: AuthenticationKey only supports Ed25519 and MultiEd25519 public keys for now.\n *\n * Account addresses can be derived from AuthenticationKey\n */\nexport class AuthenticationKey {\n /**\n * An authentication key is always a SHA3-256 hash of data, and is always 32 bytes.\n */\n static readonly LENGTH: number = 32;\n\n /**\n * The raw bytes of the authentication key.\n */\n public readonly data: Hex;\n\n constructor(args: { data: HexInput }) {\n const { data } = args;\n const hex = Hex.fromHexInput(data);\n if (hex.toUint8Array().length !== AuthenticationKey.LENGTH) {\n throw new Error(`Authentication Key length should be ${AuthenticationKey.LENGTH}`);\n }\n this.data = hex;\n }\n\n toString(): string {\n return this.data.toString();\n }\n\n toUint8Array(): Uint8Array {\n return this.data.toUint8Array();\n }\n\n /**\n * Creates an AuthenticationKey from seed bytes and a scheme\n *\n * This allows for the creation of AuthenticationKeys that are not derived from Public Keys directly\n * @param args\n */\n private static fromBytesAndScheme(args: { bytes: HexInput; scheme: AuthenticationKeyScheme }) {\n const { bytes, scheme } = args;\n const inputBytes = Hex.fromHexInput(bytes).toUint8Array();\n const authKeyBytes = new Uint8Array(inputBytes.length + 1);\n authKeyBytes.set(inputBytes);\n authKeyBytes.set([scheme], inputBytes.length);\n\n const hash = sha3Hash.create();\n hash.update(authKeyBytes);\n\n return new AuthenticationKey({ data: hash.digest() });\n }\n\n /**\n * Converts a PublicKey(s) to AuthenticationKey\n *\n * @param args.publicKey\n * @returns AuthenticationKey\n */\n static fromPublicKey(args: { publicKey: PublicKey }): AuthenticationKey {\n const { publicKey } = args;\n\n let scheme: number;\n if (publicKey instanceof Ed25519PublicKey) {\n scheme = SigningScheme.Ed25519.valueOf();\n } else if (publicKey instanceof MultiEd25519PublicKey) {\n scheme = SigningScheme.MultiEd25519.valueOf();\n } else if (publicKey instanceof Secp256k1PublicKey) {\n scheme = SigningScheme.Secp256k1Ecdsa.valueOf();\n } else {\n throw new Error(\"No supported authentication scheme for public key\");\n }\n\n const pubKeyBytes = publicKey.toUint8Array();\n return AuthenticationKey.fromBytesAndScheme({ bytes: pubKeyBytes, scheme });\n }\n\n /**\n * Derives an account address from AuthenticationKey. Since current AccountAddress is 32 bytes,\n * AuthenticationKey bytes are directly translated to AccountAddress.\n *\n * @returns AccountAddress\n */\n derivedAddress(): AccountAddress {\n return new AccountAddress({ data: this.data.toUint8Array() });\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport nacl from \"tweetnacl\";\nimport { PublicKey, PrivateKey, Signature } from \"./asymmetricCrypto\";\nimport { Deserializer } from \"../../bcs/deserializer\";\nimport { Serializer } from \"../../bcs/serializer\";\nimport { Hex } from \"../hex\";\nimport { HexInput } from \"../../types\";\n\n/**\n * Represents the public key of an Ed25519 key pair.\n */\nexport class Ed25519PublicKey extends PublicKey {\n /**\n * Length of an Ed25519 public key\n */\n static readonly LENGTH: number = 32;\n\n /**\n * Bytes of the public key\n * @private\n */\n private readonly key: Hex;\n\n /**\n * Create a new PublicKey instance from a Uint8Array or String.\n *\n * @param hexInput A HexInput (string or Uint8Array)\n */\n constructor(hexInput: HexInput) {\n super();\n\n const hex = Hex.fromHexInput(hexInput);\n if (hex.toUint8Array().length !== Ed25519PublicKey.LENGTH) {\n throw new Error(`PublicKey length should be ${Ed25519PublicKey.LENGTH}`);\n }\n this.key = hex;\n }\n\n /**\n * Get the public key in bytes (Uint8Array).\n *\n * @returns Uint8Array representation of the public key\n */\n toUint8Array(): Uint8Array {\n return this.key.toUint8Array();\n }\n\n /**\n * Get the public key as a hex string with the 0x prefix.\n *\n * @returns string representation of the public key\n */\n toString(): string {\n return this.key.toString();\n }\n\n /**\n * Verifies a signed data with a public key\n * @param args.message a signed message\n * @param args.signature the signature of the message\n */\n verifySignature(args: { message: HexInput; signature: Ed25519Signature }): boolean {\n const { message, signature } = args;\n const rawMessage = Hex.fromHexInput(message).toUint8Array();\n const rawSignature = Hex.fromHexInput(signature.toUint8Array()).toUint8Array();\n return nacl.sign.detached.verify(rawMessage, rawSignature, this.key.toUint8Array());\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeBytes(this.key.toUint8Array());\n }\n\n static deserialize(deserializer: Deserializer): Ed25519PublicKey {\n const bytes = deserializer.deserializeBytes();\n return new Ed25519PublicKey(bytes);\n }\n}\n\n/**\n * Represents the private key of an Ed25519 key pair.\n */\nexport class Ed25519PrivateKey extends PrivateKey {\n /**\n * Length of an Ed25519 private key\n */\n static readonly LENGTH: number = 32;\n\n /**\n * The Ed25519 signing key\n * @private\n */\n private readonly signingKeyPair: nacl.SignKeyPair;\n\n /**\n * Create a new PrivateKey instance from a Uint8Array or String.\n *\n * @param hexInput HexInput (string or Uint8Array)\n */\n constructor(hexInput: HexInput) {\n super();\n\n const privateKeyHex = Hex.fromHexInput(hexInput);\n if (privateKeyHex.toUint8Array().length !== Ed25519PrivateKey.LENGTH) {\n throw new Error(`PrivateKey length should be ${Ed25519PrivateKey.LENGTH}`);\n }\n\n // Create keyPair from Private key in Uint8Array format\n this.signingKeyPair = nacl.sign.keyPair.fromSeed(privateKeyHex.toUint8Array().slice(0, Ed25519PrivateKey.LENGTH));\n }\n\n /**\n * Get the private key in bytes (Uint8Array).\n *\n * @returns Uint8Array representation of the private key\n */\n toUint8Array(): Uint8Array {\n return this.signingKeyPair.secretKey.slice(0, Ed25519PrivateKey.LENGTH);\n }\n\n /**\n * Get the private key as a hex string with the 0x prefix.\n *\n * @returns string representation of the private key\n */\n toString(): string {\n return Hex.fromHexInput(this.toUint8Array()).toString();\n }\n\n /**\n * Sign the given message with the private key.\n *\n * @param message in HexInput format\n * @returns Signature\n */\n sign(message: HexInput): Ed25519Signature {\n const hex = Hex.fromHexInput(message);\n const signature = nacl.sign.detached(hex.toUint8Array(), this.signingKeyPair.secretKey);\n return new Ed25519Signature(signature);\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeBytes(this.toUint8Array());\n }\n\n static deserialize(deserializer: Deserializer): Ed25519PrivateKey {\n const bytes = deserializer.deserializeBytes();\n return new Ed25519PrivateKey(bytes);\n }\n\n /**\n * Generate a new random private key.\n *\n * @returns Ed25519PrivateKey\n */\n static generate(): Ed25519PrivateKey {\n const keyPair = nacl.sign.keyPair();\n return new Ed25519PrivateKey(keyPair.secretKey.slice(0, Ed25519PrivateKey.LENGTH));\n }\n\n /**\n * Derive the Ed25519PublicKey for this private key.\n *\n * @returns Ed25519PublicKey\n */\n publicKey(): Ed25519PublicKey {\n const bytes = this.signingKeyPair.publicKey;\n return new Ed25519PublicKey(bytes);\n }\n}\n\n/**\n * A signature of a message signed using an Ed25519 private key\n */\nexport class Ed25519Signature extends Signature {\n /**\n * Length of an Ed25519 signature\n */\n static readonly LENGTH = 64;\n\n /**\n * The signature bytes\n * @private\n */\n private readonly data: Hex;\n\n constructor(hexInput: HexInput) {\n super();\n const hex = Hex.fromHexInput(hexInput);\n if (hex.toUint8Array().length !== Ed25519Signature.LENGTH) {\n throw new Error(`Signature length should be ${Ed25519Signature.LENGTH}`);\n }\n\n this.data = hex;\n }\n\n /**\n * Get the signature in bytes (Uint8Array).\n *\n * @returns Uint8Array representation of the signature\n */\n toUint8Array(): Uint8Array {\n return this.data.toUint8Array();\n }\n\n /**\n * Get the signature as a hex string with the 0x prefix.\n *\n * @returns string representation of the signature\n */\n toString(): string {\n return this.data.toString();\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeBytes(this.data.toUint8Array());\n }\n\n static deserialize(deserializer: Deserializer): Ed25519Signature {\n const bytes = deserializer.deserializeBytes();\n return new Ed25519Signature(bytes);\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable no-bitwise */\nimport { MAX_U32_NUMBER } from \"./consts\";\nimport { Uint8, Uint16, Uint32, Uint64, Uint128, Uint256 } from \"../types\";\n\n/**\n * This interface exists to define Deserializable<T> inputs for functions that\n * deserialize a byte buffer into a type T.\n * It is not intended to be implemented or extended, because Typescript has no support\n * for static methods in interfaces.\n */\nexport interface Deserializable<T> {\n deserialize(deserializer: Deserializer): T;\n}\n\nexport class Deserializer {\n private buffer: ArrayBuffer;\n\n private offset: number;\n\n constructor(data: Uint8Array) {\n // copies data to prevent outside mutation of buffer.\n this.buffer = new ArrayBuffer(data.length);\n new Uint8Array(this.buffer).set(data, 0);\n this.offset = 0;\n }\n\n private read(length: number): ArrayBuffer {\n if (this.offset + length > this.buffer.byteLength) {\n throw new Error(\"Reached to the end of buffer\");\n }\n\n const bytes = this.buffer.slice(this.offset, this.offset + length);\n this.offset += length;\n return bytes;\n }\n\n /**\n * Deserializes a string. UTF8 string is supported. Reads the string's bytes length \"l\" first,\n * and then reads \"l\" bytes of content. Decodes the byte array into a string.\n *\n * BCS layout for \"string\": string_length | string_content\n * where string_length is a u32 integer encoded as a uleb128 integer, equal to the number of bytes in string_content.\n *\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([8, 49, 50, 51, 52, 97, 98, 99, 100]));\n * assert(deserializer.deserializeStr() === \"1234abcd\");\n * ```\n */\n deserializeStr(): string {\n const value = this.deserializeBytes();\n const textDecoder = new TextDecoder();\n return textDecoder.decode(value);\n }\n\n /**\n * Deserializes an array of bytes.\n *\n * BCS layout for \"bytes\": bytes_length | bytes\n * where bytes_length is a u32 integer encoded as a uleb128 integer, equal to the length of the bytes array.\n */\n deserializeBytes(): Uint8Array {\n const len = this.deserializeUleb128AsU32();\n return new Uint8Array(this.read(len));\n }\n\n /**\n * Deserializes an array of bytes. The number of bytes to read is already known.\n *\n */\n deserializeFixedBytes(len: number): Uint8Array {\n return new Uint8Array(this.read(len));\n }\n\n /**\n * Deserializes a boolean value.\n *\n * BCS layout for \"boolean\": One byte. \"0x01\" for true and \"0x00\" for false.\n */\n deserializeBool(): boolean {\n const bool = new Uint8Array(this.read(1))[0];\n if (bool !== 1 && bool !== 0) {\n throw new Error(\"Invalid boolean value\");\n }\n return bool === 1;\n }\n\n /**\n * Deserializes a uint8 number.\n *\n * BCS layout for \"uint8\": One byte. Binary format in little-endian representation.\n */\n deserializeU8(): Uint8 {\n return new DataView(this.read(1)).getUint8(0);\n }\n\n /**\n * Deserializes a uint16 number.\n *\n * BCS layout for \"uint16\": Two bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([0x34, 0x12]));\n * assert(deserializer.deserializeU16() === 4660);\n * ```\n */\n deserializeU16(): Uint16 {\n return new DataView(this.read(2)).getUint16(0, true);\n }\n\n /**\n * Deserializes a uint32 number.\n *\n * BCS layout for \"uint32\": Four bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([0x78, 0x56, 0x34, 0x12]));\n * assert(deserializer.deserializeU32() === 305419896);\n * ```\n */\n deserializeU32(): Uint32 {\n return new DataView(this.read(4)).getUint32(0, true);\n }\n\n /**\n * Deserializes a uint64 number.\n *\n * BCS layout for \"uint64\": Eight bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([0x00, 0xEF, 0xCD, 0xAB, 0x78, 0x56, 0x34, 0x12]));\n * assert(deserializer.deserializeU64() === 1311768467750121216);\n * ```\n */\n deserializeU64(): Uint64 {\n const low = this.deserializeU32();\n const high = this.deserializeU32();\n\n // combine the two 32-bit values and return (little endian)\n return BigInt((BigInt(high) << BigInt(32)) | BigInt(low));\n }\n\n /**\n * Deserializes a uint128 number.\n *\n * BCS layout for \"uint128\": Sixteen bytes. Binary format in little-endian representation.\n */\n deserializeU128(): Uint128 {\n const low = this.deserializeU64();\n const high = this.deserializeU64();\n\n // combine the two 64-bit values and return (little endian)\n return BigInt((high << BigInt(64)) | low);\n }\n\n /**\n * Deserializes a uint256 number.\n *\n * BCS layout for \"uint256\": Thirty-two bytes. Binary format in little-endian representation.\n */\n deserializeU256(): Uint256 {\n const low = this.deserializeU128();\n const high = this.deserializeU128();\n\n // combine the two 128-bit values and return (little endian)\n return BigInt((high << BigInt(128)) | low);\n }\n\n /**\n * Deserializes a uleb128 encoded uint32 number.\n *\n * BCS use uleb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n */\n deserializeUleb128AsU32(): Uint32 {\n let value: bigint = BigInt(0);\n let shift = 0;\n\n while (value < MAX_U32_NUMBER) {\n const byte = this.deserializeU8();\n value |= BigInt(byte & 0x7f) << BigInt(shift);\n\n if ((byte & 0x80) === 0) {\n break;\n }\n shift += 7;\n }\n\n if (value > MAX_U32_NUMBER) {\n throw new Error(\"Overflow while parsing uleb128-encoded uint32 value\");\n }\n\n return Number(value);\n }\n\n /**\n * Helper function that primarily exists to support alternative syntax for deserialization.\n * That is, if we have a `const deserializer: new Deserializer(...)`, instead of having to use\n * `MyClass.deserialize(deserializer)`, we can call `deserializer.deserialize(MyClass)`.\n *\n * @example const deserializer = new Deserializer(new Uint8Array([1, 2, 3]));\n * const value = deserializer.deserialize(MyClass); // where MyClass has a `deserialize` function\n * // value is now an instance of MyClass\n * // equivalent to `const value = MyClass.deserialize(deserializer)`\n * @param cls The BCS-deserializable class to deserialize the buffered bytes into.\n *\n * @returns the deserialized value of class type T\n */\n deserialize<T>(cls: Deserializable<T>): T {\n // NOTE: `deserialize` in `cls.deserialize(this)` here is a static method defined in `cls`,\n // It is separate from the `deserialize` instance method defined here in Deserializer.\n return cls.deserialize(this);\n }\n\n /**\n * Deserializes an array of BCS Deserializable values given an existing Deserializer\n * instance with a loaded byte buffer.\n *\n * @param cls The BCS-deserializable class to deserialize the buffered bytes into.\n * @example\n * // serialize a vector of addresses\n * const addresses = new Array<AccountAddress>(\n * AccountAddress.fromHexInputRelaxed(\"0x1\"),\n * AccountAddress.fromHexInputRelaxed(\"0x2\"),\n * AccountAddress.fromHexInputRelaxed(\"0xa\"),\n * AccountAddress.fromHexInputRelaxed(\"0xb\"),\n * );\n * const serializer = new Serializer();\n * serializer.serializeVector(addresses);\n * const serializedBytes = serializer.toUint8Array();\n *\n * // deserialize the bytes into an array of addresses\n * const deserializer = new Deserializer(serializedBytes);\n * const deserializedAddresses = deserializer.deserializeVector(AccountAddress);\n * // deserializedAddresses is now an array of AccountAddress instances\n * @returns an array of deserialized values of type T\n */\n deserializeVector<T>(cls: Deserializable<T>): Array<T> {\n const length = this.deserializeUleb128AsU32();\n const vector = new Array<T>();\n for (let i = 0; i < length; i += 1) {\n vector.push(this.deserialize(cls));\n }\n return vector;\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Serializer, Serializable } from \"../serializer\";\nimport { Deserializer } from \"../deserializer\";\nimport { HexInput } from \"../../types\";\nimport { Hex } from \"../../core/hex\";\nimport { TransactionArgument } from \"../../transactions/instances/transactionArgument\";\n\n/**\n * This class exists to represent a contiguous sequence of already serialized BCS-bytes.\n *\n * It differs from most other Serializable classes in that its internal byte buffer is serialized to BCS\n * bytes exactly as-is, without prepending the length of the bytes.\n *\n * If you want to write your own serialization function and pass the bytes as a transaction argument,\n * you should use this class.\n *\n * This class is also more generally used to represent type-agnostic BCS bytes as a vector<u8>.\n *\n * An example of this is the bytes resulting from entry function arguments that have been serialized\n * for an entry function.\n *\n * @example\n * const yourCustomSerializedBytes = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);\n * const fixedBytes = new FixedBytes(yourCustomSerializedBytes);\n * const payload = generateTransactionPayload({\n * function: \"0xbeefcafe::your_module::your_function_that_requires_custom_serialization\",\n * arguments: [yourCustomBytes],\n * });\n *\n * For example, if you store each of the 32 bytes for an address as a U8 in a MoveVector<U8>, when you\n * serialize that MoveVector<U8>, it will be serialized to 33 bytes. If you solely want to pass around\n * the 32 bytes as a Serializable class that *does not* prepend the length to the BCS-serialized representation,\n * use this class.\n *\n * @params value: HexInput representing a sequence of Uint8 bytes\n * @returns a Serializable FixedBytes instance, which when serialized, does not prepend the length of the bytes\n * @see EntryFunctionBytes\n */\nexport class FixedBytes extends Serializable implements TransactionArgument {\n public value: Uint8Array;\n\n constructor(value: HexInput) {\n super();\n this.value = Hex.fromHexInput(value).toUint8Array();\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeFixedBytes(this.value);\n }\n\n serializeForEntryFunction(serializer: Serializer): void {\n serializer.serialize(this);\n }\n\n serializeForScriptFunction(serializer: Serializer): void {\n serializer.serialize(this);\n }\n\n static deserialize(deserializer: Deserializer, length: number): FixedBytes {\n const bytes = deserializer.deserializeFixedBytes(length);\n return new FixedBytes(bytes);\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Serializer, Serializable } from \"../serializer\";\nimport { Deserializer } from \"../deserializer\";\nimport { FixedBytes } from \"./fixedBytes\";\nimport { EntryFunctionArgument } from \"../../transactions/instances/transactionArgument\";\nimport { HexInput } from \"../../types\";\n\n/**\n * This class exists solely to represent a sequence of fixed bytes as a serialized entry function, because\n * serializing an entry function appends a prefix that's *only* used for entry function arguments.\n *\n * NOTE: Attempting to use this class for a serialized script function will result in erroneous\n * and unexpected behavior.\n *\n * If you wish to convert this class back to a TransactionArgument, you must know the type\n * of the argument beforehand, and use the appropriate class to deserialize the bytes within\n * an instance of this class.\n */\nexport class EntryFunctionBytes extends Serializable implements EntryFunctionArgument {\n public readonly value: FixedBytes;\n\n private constructor(value: HexInput) {\n super();\n this.value = new FixedBytes(value);\n }\n\n // Note that to see the Move, BCS-serialized representation of the underlying fixed byte vector,\n // we must not serialize the length prefix.\n //\n // In other words, this class is only used to represent a sequence of bytes that are already\n // BCS-serialized as a type. To represent those bytes accurately, the BCS-serialized form is the same exact\n // representation.\n serialize(serializer: Serializer): void {\n serializer.serialize(this.value);\n }\n\n // When we serialize these bytes as an entry function argument, we need to\n // serialize the length prefix. This essentially converts the underlying fixed byte vector to a type-agnostic\n // byte vector to an `any` type.\n // NOTE: This, and the lack of a `serializeForScriptFunction`, is the only meaningful difference between this\n // class and FixedBytes.\n serializeForEntryFunction(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(this.value.value.length);\n serializer.serialize(this);\n }\n\n /**\n * The only way to create an instance of this class is to use this static method.\n *\n * This function should only be used when deserializing a sequence of EntryFunctionPayload arguments.\n * @param deserializer the deserializer instance with the buffered bytes\n * @param length the length of the bytes to deserialize\n * @returns an instance of this class, which will now only be usable as an EntryFunctionArgument\n */\n static deserialize(deserializer: Deserializer, length: number): EntryFunctionBytes {\n const fixedBytes = FixedBytes.deserialize(deserializer, length);\n return new EntryFunctionBytes(fixedBytes.value);\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n MAX_U128_BIG_INT,\n MAX_U16_NUMBER,\n MAX_U32_NUMBER,\n MAX_U64_BIG_INT,\n MAX_U8_NUMBER,\n MAX_U256_BIG_INT,\n} from \"../consts\";\nimport { Deserializer } from \"../deserializer\";\nimport { Serializable, Serializer, ensureBoolean, validateNumberInRange } from \"../serializer\";\nimport { TransactionArgument } from \"../../transactions/instances/transactionArgument\";\nimport { AnyNumber, Uint16, Uint32, Uint8, ScriptTransactionArgumentVariants } from \"../../types\";\n\nexport class Bool extends Serializable implements TransactionArgument {\n public readonly value: boolean;\n\n constructor(value: boolean) {\n super();\n ensureBoolean(value);\n this.value = value;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeBool(this.value);\n }\n\n serializeForEntryFunction(serializer: Serializer): void {\n const bcsBytes = this.bcsToBytes();\n serializer.serializeBytes(bcsBytes);\n }\n\n serializeForScriptFunction(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(ScriptTransactionArgumentVariants.Bool);\n serializer.serialize(this);\n }\n\n static deserialize(deserializer: Deserializer): Bool {\n return new Bool(deserializer.deserializeBool());\n }\n}\n\nexport class U8 extends Serializable implements TransactionArgument {\n public readonly value: Uint8;\n\n constructor(value: Uint8) {\n super();\n validateNumberInRange(value, 0, MAX_U8_NUMBER);\n this.value = value;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU8(this.value);\n }\n\n serializeForEntryFunction(serializer: Serializer): void {\n const bcsBytes = this.bcsToBytes();\n serializer.serializeBytes(bcsBytes);\n }\n\n serializeForScriptFunction(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(ScriptTransactionArgumentVariants.U8);\n serializer.serialize(this);\n }\n\n static deserialize(deserializer: Deserializer): U8 {\n return new U8(deserializer.deserializeU8());\n }\n}\n\nexport class U16 extends Serializable implements TransactionArgument {\n public readonly value: Uint16;\n\n constructor(value: Uint16) {\n super();\n validateNumberInRange(value, 0, MAX_U16_NUMBER);\n this.value = value;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU16(this.value);\n }\n\n serializeForEntryFunction(serializer: Serializer): void {\n const bcsBytes = this.bcsToBytes();\n serializer.serializeBytes(bcsBytes);\n }\n\n serializeForScriptFunction(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(ScriptTransactionArgumentVariants.U16);\n serializer.serialize(this);\n }\n\n static deserialize(deserializer: Deserializer): U16 {\n return new U16(deserializer.deserializeU16());\n }\n}\n\nexport class U32 extends Serializable implements TransactionArgument {\n public readonly value: Uint32;\n\n constructor(value: Uint32) {\n super();\n validateNumberInRange(value, 0, MAX_U32_NUMBER);\n this.value = value;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU32(this.value);\n }\n\n serializeForEntryFunction(serializer: Serializer): void {\n const bcsBytes = this.bcsToBytes();\n serializer.serializeBytes(bcsBytes);\n }\n\n serializeForScriptFunction(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(ScriptTransactionArgumentVariants.U32);\n serializer.serialize(this);\n }\n\n static deserialize(deserializer: Deserializer): U32 {\n return new U32(deserializer.deserializeU32());\n }\n}\n\nexport class U64 extends Serializable implements TransactionArgument {\n public readonly value: bigint;\n\n constructor(value: AnyNumber) {\n super();\n validateNumberInRange(value, BigInt(0), MAX_U64_BIG_INT);\n this.value = BigInt(value);\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU64(this.value);\n }\n\n serializeForEntryFunction(serializer: Serializer): void {\n const bcsBytes = this.bcsToBytes();\n serializer.serializeBytes(bcsBytes);\n }\n\n serializeForScriptFunction(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(ScriptTransactionArgumentVariants.U64);\n serializer.serialize(this);\n }\n\n static deserialize(deserializer: Deserializer): U64 {\n return new U64(deserializer.deserializeU64());\n }\n}\n\nexport class U128 extends Serializable implements TransactionArgument {\n public readonly value: bigint;\n\n constructor(value: AnyNumber) {\n super();\n validateNumberInRange(value, BigInt(0), MAX_U128_BIG_INT);\n this.value = BigInt(value);\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU128(this.value);\n }\n\n serializeForEntryFunction(serializer: Serializer): void {\n const bcsBytes = this.bcsToBytes();\n serializer.serializeBytes(bcsBytes);\n }\n\n serializeForScriptFunction(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(ScriptTransactionArgumentVariants.U128);\n serializer.serialize(this);\n }\n\n static deserialize(deserializer: Deserializer): U128 {\n return new U128(deserializer.deserializeU128());\n }\n}\n\nexport class U256 extends Serializable implements TransactionArgument {\n public readonly value: bigint;\n\n constructor(value: AnyNumber) {\n super();\n validateNumberInRange(value, BigInt(0), MAX_U256_BIG_INT);\n this.value = BigInt(value);\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU256(this.value);\n }\n\n serializeForEntryFunction(serializer: Serializer): void {\n const bcsBytes = this.bcsToBytes();\n serializer.serializeBytes(bcsBytes);\n }\n\n serializeForScriptFunction(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(ScriptTransactionArgumentVariants.U256);\n serializer.serialize(this);\n }\n\n static deserialize(deserializer: Deserializer): U256 {\n return new U256(deserializer.deserializeU256());\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Bool, U128, U16, U256, U32, U64, U8 } from \"./movePrimitives\";\nimport { Serializable, Serializer } from \"../serializer\";\nimport { Deserializable, Deserializer } from \"../deserializer\";\nimport { AnyNumber, HexInput, ScriptTransactionArgumentVariants } from \"../../types\";\nimport { Hex } from \"../../core/hex\";\nimport { AccountAddress } from \"../../core/accountAddress\";\nimport { EntryFunctionArgument, TransactionArgument } from \"../../transactions/instances/transactionArgument\";\n\n/**\n * This class is the Aptos Typescript SDK representation of a Move `vector<T>`,\n * where `T` represents either a primitive type (`bool`, `u8`, `u64`, ...)\n * or a BCS-serializable struct itself.\n *\n * It is a BCS-serializable, array-like type that contains an array of values of type `T`,\n * where `T` is a class that implements `Serializable`.\n *\n * The purpose of this class is to facilitate easy construction of BCS-serializable\n * Move `vector<T>` types.\n *\n * @example\n * // in Move: `vector<u8> [1, 2, 3, 4];`\n * const vecOfU8s = new MoveVector<U8>([new U8(1), new U8(2), new U8(3), new U8(4)]);\n * // in Move: `std::bcs::to_bytes(vector<u8> [1, 2, 3, 4]);`\n * const bcsBytes = vecOfU8s.toUint8Array();\n *\n * // vector<vector<u8>> [ vector<u8> [1], vector<u8> [1, 2, 3, 4], vector<u8> [5, 6, 7, 8] ];\n * const vecOfVecs = new MoveVector<MoveVector<U8>>([\n * new MoveVector<U8>([new U8(1)]),\n * MoveVector.U8([1, 2, 3, 4]),\n * MoveVector.U8([5, 6, 7, 8]),\n * ]);\n *\n * // vector<Option<u8>> [ std::option::some<u8>(1), std::option::some<u8>(2) ];\n * const vecOfOptionU8s = new MoveVector<MoveOption<U8>>([\n * MoveOption.U8(1),\n * MoveOption.U8(2),\n * ]);\n *\n * // vector<MoveString> [ std::string::utf8(b\"hello\"), std::string::utf8(b\"world\") ];\n * const vecOfStrings = new MoveVector([new MoveString(\"hello\"), new MoveString(\"world\")]);\n * const vecOfStrings2 = MoveVector.MoveString([\"hello\", \"world\"]);\n *\n * // where MySerializableStruct is a class you've made that implements Serializable\n * const vecOfSerializableValues = new MoveVector<MySerializableStruct>([\n * new MySerializableStruct(\"hello\", \"world\"),\n * new MySerializableStruct(\"foo\", \"bar\"),\n * ]);\n * @params\n * values: an Array<T> of values where T is a class that implements Serializable\n * @returns a `MoveVector<T>` with the values `values`\n */\nexport class MoveVector<T extends Serializable> extends Serializable implements TransactionArgument {\n public values: Array<T>;\n\n constructor(values: Array<T>) {\n super();\n this.values = values;\n }\n\n serializeForEntryFunction(serializer: Serializer): void {\n const bcsBytes = this.bcsToBytes();\n serializer.serializeBytes(bcsBytes);\n }\n\n /**\n * NOTE: This function will only work when the inner values in the `MoveVector` are `U8`s.\n * @param serializer\n */\n serializeForScriptFunction(serializer: Serializer): void {\n // runtime check to ensure that you can't serialize anything other than vector<u8>\n // TODO: consider adding support for MoveString later?\n const isU8 = this.values[0] instanceof U8;\n if (!isU8) {\n throw new Error(\"Script function arguments only accept u8 vectors\");\n }\n serializer.serializeU32AsUleb128(ScriptTransactionArgumentVariants.U8Vector);\n serializer.serialize(this);\n }\n\n /**\n * Factory method to generate a MoveVector of U8s from an array of numbers.\n *\n * @example\n * const v = MoveVector.U8([1, 2, 3, 4]);\n * @params values: an array of `numbers` to convert to U8s\n * @returns a `MoveVector<U8>`\n */\n static U8(values: Array<number> | HexInput): MoveVector<U8> {\n let numbers: Array<number>;\n\n if (Array.isArray(values) && typeof values[0] === \"number\") {\n numbers = values;\n } else if (typeof values === \"string\") {\n const hex = Hex.fromHexInput(values);\n numbers = Array.from(hex.toUint8Array());\n } else if (values instanceof Uint8Array) {\n numbers = Array.from(values);\n } else {\n throw new Error(\"Invalid input type\");\n }\n\n return new MoveVector<U8>(numbers.map((v) => new U8(v)));\n }\n\n /**\n * Factory method to generate a MoveVector of U16s from an array of numbers.\n *\n * @example\n * const v = MoveVector.U16([1, 2, 3, 4]);\n * @params values: an array of `numbers` to convert to U16s\n * @returns a `MoveVector<U16>`\n */\n static U16(values: Array<number>): MoveVector<U16> {\n return new MoveVector<U16>(values.map((v) => new U16(v)));\n }\n\n /**\n * Factory method to generate a MoveVector of U32s from an array of numbers.\n *\n * @example\n * const v = MoveVector.U32([1, 2, 3, 4]);\n * @params values: an array of `numbers` to convert to U32s\n * @returns a `MoveVector<U32>`\n */\n static U32(values: Array<number>): MoveVector<U32> {\n return new MoveVector<U32>(values.map((v) => new U32(v)));\n }\n\n /**\n * Factory method to generate a MoveVector of U64s from an array of numbers or bigints.\n *\n * @example\n * const v = MoveVector.U64([1, 2, 3, 4]);\n * @params values: an array of numbers of type `number | bigint` to convert to U64s\n * @returns a `MoveVector<U64>`\n */\n static U64(values: Array<AnyNumber>): MoveVector<U64> {\n return new MoveVector<U64>(values.map((v) => new U64(v)));\n }\n\n /**\n * Factory method to generate a MoveVector of U128s from an array of numbers or bigints.\n *\n * @example\n * const v = MoveVector.U128([1, 2, 3, 4]);\n * @params values: an array of numbers of type `number | bigint` to convert to U128s\n * @returns a `MoveVector<U128>`\n */\n static U128(values: Array<AnyNumber>): MoveVector<U128> {\n return new MoveVector<U128>(values.map((v) => new U128(v)));\n }\n\n /**\n * Factory method to generate a MoveVector of U256s from an array of numbers or bigints.\n *\n * @example\n * const v = MoveVector.U256([1, 2, 3, 4]);\n * @params values: an array of numbers of type `number | bigint` to convert to U256s\n * @returns a `MoveVector<U256>`\n */\n static U256(values: Array<AnyNumber>): MoveVector<U256> {\n return new MoveVector<U256>(values.map((v) => new U256(v)));\n }\n\n /**\n * Factory method to generate a MoveVector of Bools from an array of booleans.\n *\n * @example\n * const v = MoveVector.Bool([true, false, true, false]);\n * @params values: an array of `numbers` to convert to Bools\n * @returns a `MoveVector<Bool>`\n */\n static Bool(values: Array<boolean>): MoveVector<Bool> {\n return new MoveVector<Bool>(values.map((v) => new Bool(v)));\n }\n\n /**\n * Factory method to generate a MoveVector of MoveStrings from an array of strings.\n *\n * @example\n * const v = MoveVector.MoveString([\"hello\", \"world\"]);\n * @params values: an array of `numbers` to convert to MoveStrings\n * @returns a `MoveVector<MoveString>`\n */\n static MoveString(values: Array<string>): MoveVector<MoveString> {\n return new MoveVector<MoveString>(values.map((v) => new MoveString(v)));\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeVector(this.values);\n }\n\n /**\n * Deserialize a MoveVector of type T, specifically where T is a Serializable and Deserializable type.\n *\n * NOTE: This only works with a depth of one. Generics will not work.\n *\n * NOTE: This will not work with types that aren't of the Serializable class.\n *\n * If you want to use types that merely implement Deserializable,\n * please use the deserializeVector function in the Deserializer class.\n * @example\n * const vec = MoveVector.deserialize(deserializer, U64);\n * @params deserializer: the Deserializer instance to use, with bytes loaded into it already.\n * cls: the class to typecast the input values to, must be a Serializable and Deserializable type.\n * @returns a MoveVector of the corresponding class T\n * *\n */\n static deserialize<T extends Serializable>(deserializer: Deserializer, cls: Deserializable<T>): MoveVector<T> {\n const length = deserializer.deserializeUleb128AsU32();\n const values = new Array<T>();\n for (let i = 0; i < length; i += 1) {\n values.push(cls.deserialize(deserializer));\n }\n return new MoveVector(values);\n }\n}\n\nexport class MoveString extends Serializable implements TransactionArgument {\n public value: string;\n\n constructor(value: string) {\n super();\n this.value = value;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeStr(this.value);\n }\n\n serializeForEntryFunction(serializer: Serializer): void {\n const bcsBytes = this.bcsToBytes();\n serializer.serializeBytes(bcsBytes);\n }\n\n serializeForScriptFunction(serializer: Serializer): void {\n // serialize the string, load it into a vector<u8> and serialize it as a script vector<u8> argument\n const vectorU8 = MoveVector.U8(this.bcsToBytes());\n vectorU8.serializeForScriptFunction(serializer);\n }\n\n static deserialize(deserializer: Deserializer): MoveString {\n return new MoveString(deserializer.deserializeStr());\n }\n}\n\nexport class MoveOption<T extends Serializable> extends Serializable implements EntryFunctionArgument {\n private vec: MoveVector<T>;\n\n public readonly value?: T;\n\n constructor(value?: T | null) {\n super();\n if (typeof value !== \"undefined\" && value !== null) {\n this.vec = new MoveVector([value]);\n } else {\n this.vec = new MoveVector([]);\n }\n\n [this.value] = this.vec.values;\n }\n\n serializeForEntryFunction(serializer: Serializer): void {\n const bcsBytes = this.bcsToBytes();\n serializer.serializeBytes(bcsBytes);\n }\n\n /**\n * Retrieves the inner value of the MoveOption.\n *\n * This method is inspired by Rust's `Option<T>.unwrap()`.\n * In Rust, attempting to unwrap a `None` value results in a panic.\n *\n * Similarly, this method will throw an error if the value is not present.\n *\n * @example\n * const option = new MoveOption<Bool>(new Bool(true));\n * const value = option.unwrap(); // Returns the Bool instance\n *\n * @throws {Error} Throws an error if the MoveOption does not contain a value.\n *\n * @returns {T} The contained value if present.\n */\n unwrap(): T {\n if (!this.isSome()) {\n throw new Error(\"Called unwrap on a MoveOption with no value\");\n } else {\n return this.vec.values[0];\n }\n }\n\n // Check if the MoveOption has a value.\n isSome(): boolean {\n return this.vec.values.length === 1;\n }\n\n serialize(serializer: Serializer): void {\n // serialize 0 or 1\n // if 1, serialize the value\n this.vec.serialize(serializer);\n }\n\n /**\n * Factory method to generate a MoveOption<U8> from a `number` or `undefined`.\n *\n * @example\n * MoveOption.U8(1).isSome() === true;\n * MoveOption.U8().isSome() === false;\n * MoveOption.U8(undefined).isSome() === false;\n * @params value: the value used to fill the MoveOption. If `value` is undefined\n * the resulting MoveOption's .isSome() method will return false.\n * @returns a MoveOption<U8> with an inner value `value`\n */\n static U8(value?: number | null): MoveOption<U8> {\n return new MoveOption<U8>(value !== null && value !== undefined ? new U8(value) : undefined);\n }\n\n /**\n * Factory method to generate a MoveOption<U16> from a `number` or `undefined`.\n *\n * @example\n * MoveOption.U16(1).isSome() === true;\n * MoveOption.U16().isSome() === false;\n * MoveOption.U16(undefined).isSome() === false;\n * @params value: the value used to fill the MoveOption. If `value` is undefined\n * the resulting MoveOption's .isSome() method will return false.\n * @returns a MoveOption<U16> with an inner value `value`\n */\n static U16(value?: number | null): MoveOption<U16> {\n return new MoveOption<U16>(value !== null && value !== undefined ? new U16(value) : undefined);\n }\n\n /**\n * Factory method to generate a MoveOption<U32> from a `number` or `undefined`.\n *\n * @example\n * MoveOption.U32(1).isSome() === true;\n * MoveOption.U32().isSome() === false;\n * MoveOption.U32(undefined).isSome() === false;\n * @params value: the value used to fill the MoveOption. If `value` is undefined\n * the resulting MoveOption's .isSome() method will return false.\n * @returns a MoveOption<U32> with an inner value `value`\n */\n static U32(value?: number | null): MoveOption<U32> {\n return new MoveOption<U32>(value !== null && value !== undefined ? new U32(value) : undefined);\n }\n\n /**\n * Factory method to generate a MoveOption<U64> from a `number` or a `bigint` or `undefined`.\n *\n * @example\n * MoveOption.U64(1).isSome() === true;\n * MoveOption.U64().isSome() === false;\n * MoveOption.U64(undefined).isSome() === false;\n * @params value: the value used to fill the MoveOption. If `value` is undefined\n * the resulting MoveOption's .isSome() method will return false.\n * @returns a MoveOption<U64> with an inner value `value`\n */\n static U64(value?: AnyNumber | null): MoveOption<U64> {\n return new MoveOption<U64>(value !== null && value !== undefined ? new U64(value) : undefined);\n }\n\n /**\n * Factory method to generate a MoveOption<U128> from a `number` or a `bigint` or `undefined`.\n *\n * @example\n * MoveOption.U128(1).isSome() === true;\n * MoveOption.U128().isSome() === false;\n * MoveOption.U128(undefined).isSome() === false;\n * @params value: the value used to fill the MoveOption. If `value` is undefined\n * the resulting MoveOption's .isSome() method will return false.\n * @returns a MoveOption<U128> with an inner value `value`\n */\n static U128(value?: AnyNumber | null): MoveOption<U128> {\n return new MoveOption<U128>(value !== null && value !== undefined ? new U128(value) : undefined);\n }\n\n /**\n * Factory method to generate a MoveOption<U256> from a `number` or a `bigint` or `undefined`.\n *\n * @example\n * MoveOption.U256(1).isSome() === true;\n * MoveOption.U256().isSome() === false;\n * MoveOption.U256(undefined).isSome() === false;\n * @params value: the value used to fill the MoveOption. If `value` is undefined\n * the resulting MoveOption's .isSome() method will return false.\n * @returns a MoveOption<U256> with an inner value `value`\n */\n static U256(value?: AnyNumber | null): MoveOption<U256> {\n return new MoveOption<U256>(value !== null && value !== undefined ? new U256(value) : undefined);\n }\n\n /**\n * Factory method to generate a MoveOption<Bool> from a `boolean` or `undefined`.\n *\n * @example\n * MoveOption.Bool(true).isSome() === true;\n * MoveOption.Bool().isSome() === false;\n * MoveOption.Bool(undefined).isSome() === false;\n * @params value: the value used to fill the MoveOption. If `value` is undefined\n * the resulting MoveOption's .isSome() method will return false.\n * @returns a MoveOption<Bool> with an inner value `value`\n */\n static Bool(value?: boolean | null): MoveOption<Bool> {\n return new MoveOption<Bool>(value !== null && value !== undefined ? new Bool(value) : undefined);\n }\n\n /**\n * Factory method to generate a MoveOption<MoveString> from a `string` or `undefined`.\n *\n * @example\n * MoveOption.MoveString(\"hello\").isSome() === true;\n * MoveOption.MoveString(\"\").isSome() === true;\n * MoveOption.MoveString().isSome() === false;\n * MoveOption.MoveString(undefined).isSome() === false;\n * @params value: the value used to fill the MoveOption. If `value` is undefined\n * the resulting MoveOption's .isSome() method will return false.\n * @returns a MoveOption<MoveString> with an inner value `value`\n */\n static MoveString(value?: string | null): MoveOption<MoveString> {\n return new MoveOption<MoveString>(value !== null && value !== undefined ? new MoveString(value) : undefined);\n }\n\n static deserialize<U extends Serializable>(deserializer: Deserializer, cls: Deserializable<U>): MoveOption<U> {\n const vector = MoveVector.deserialize(deserializer, cls);\n return new MoveOption(vector.values[0]);\n }\n}\n\nexport class MoveObject extends Serializable implements TransactionArgument {\n public value: AccountAddress;\n\n constructor(value: HexInput | AccountAddress) {\n super();\n\n if (value instanceof AccountAddress) {\n this.value = value;\n } else {\n this.value = AccountAddress.fromHexInputRelaxed(value);\n }\n }\n\n serialize(serializer: Serializer): void {\n serializer.serialize(this.value);\n }\n\n serializeForEntryFunction(serializer: Serializer): void {\n this.value.serializeForEntryFunction(serializer);\n }\n\n serializeForScriptFunction(serializer: Serializer): void {\n this.value.serializeForScriptFunction(serializer);\n }\n\n static deserialize(deserializer: Deserializer): MoveObject {\n const address = deserializer.deserialize(AccountAddress);\n return new MoveObject(address);\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Serializable, Serializer } from \"../../bcs\";\nimport { HexInput } from \"../../types\";\n\n/**\n * An abstract representation of a public key. All Asymmetric key pairs will use this to\n * verify signatures and for authentication keys.\n */\nexport abstract class PublicKey extends Serializable {\n /**\n * Verifies that the private key associated with this public key signed the message with the given signature.\n * @param args.message The message that was signed\n * @param args.signature The signature to verify\n */\n abstract verifySignature(args: { message: HexInput; signature: Signature }): boolean;\n\n /**\n * Get the raw public key bytes\n */\n abstract toUint8Array(): Uint8Array;\n\n /**\n * Get the public key as a hex string with a 0x prefix e.g. 0x123456...\n */\n abstract toString(): string;\n\n abstract serialize(serializer: Serializer): void;\n}\n\n/**\n * An abstract representation of a private key. This is used to sign transactions and\n * derive the public key associated.\n */\nexport abstract class PrivateKey extends Serializable {\n /**\n * Sign a message with the key\n * @param message The message to sign\n */\n abstract sign(message: HexInput): Signature;\n\n /**\n * Get the raw private key bytes\n */\n abstract toUint8Array(): Uint8Array;\n\n /**\n * Get the private key as a hex string with a 0x prefix e.g. 0x123456...\n */\n abstract toString(): string;\n\n abstract serialize(serializer: Serializer): void;\n\n /**\n * Derives the public key associated with the private key\n */\n abstract publicKey(): PublicKey;\n}\n\n/**\n * An abstract representation of a signature. This is the product of signing a\n * message and can be used with the PublicKey to verify the signature.\n */\nexport abstract class Signature extends Serializable {\n /**\n * Get the raw signature bytes\n */\n abstract toUint8Array(): Uint8Array;\n\n /**\n * Get the signature as a hex string with a 0x prefix e.g. 0x123456...\n */\n abstract toString(): string;\n\n abstract serialize(serializer: Serializer): void;\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { PublicKey, Signature } from \"./asymmetricCrypto\";\nimport { Deserializer } from \"../../bcs/deserializer\";\nimport { Serializer } from \"../../bcs/serializer\";\nimport { Ed25519PublicKey, Ed25519Signature } from \"./ed25519\";\nimport { Hex } from \"../hex\";\nimport { HexInput } from \"../../types\";\n\n/**\n * Represents the public key of a K-of-N Ed25519 multi-sig transaction.\n */\nexport class MultiEd25519PublicKey extends PublicKey {\n /**\n * Maximum number of public keys supported\n */\n static readonly MAX_KEYS = 32;\n\n /**\n * Minimum number of public keys needed\n */\n static readonly MIN_KEYS = 2;\n\n /**\n * Minimum threshold for the number of valid signatures required\n */\n static readonly MIN_THRESHOLD = 1;\n\n /**\n * List of Ed25519 public keys for this MultiEd25519PublicKey\n */\n public readonly publicKeys: Ed25519PublicKey[];\n\n /**\n * The minimum number of valid signatures required, for the number of public keys specified\n */\n public readonly threshold: number;\n\n /**\n * Public key for a K-of-N multi-sig transaction. A K-of-N multi-sig transaction means that for such a\n * transaction to be executed, at least K out of the N authorized signers have signed the transaction\n * and passed the check conducted by the chain.\n *\n * @see {@link\n * https://aptos.dev/integration/creating-a-signed-transaction/ | Creating a Signed Transaction}\n *\n * @param args.publicKeys A list of public keys\n * @param args.threshold At least \"threshold\" signatures must be valid\n */\n constructor(args: { publicKeys: Ed25519PublicKey[]; threshold: number }) {\n super();\n\n const { publicKeys, threshold } = args;\n\n // Validate number of public keys\n if (publicKeys.length > MultiEd25519PublicKey.MAX_KEYS || publicKeys.length < MultiEd25519PublicKey.MIN_KEYS) {\n throw new Error(\n `Must have between ${MultiEd25519PublicKey.MIN_KEYS} and ${MultiEd25519PublicKey.MAX_KEYS} public keys, inclusive`,\n );\n }\n\n // Validate threshold: must be between 1 and the number of public keys, inclusive\n if (threshold < MultiEd25519PublicKey.MIN_THRESHOLD || threshold > publicKeys.length) {\n throw new Error(\n `Threshold must be between ${MultiEd25519PublicKey.MIN_THRESHOLD} and ${publicKeys.length}, inclusive`,\n );\n }\n\n this.publicKeys = publicKeys;\n this.threshold = threshold;\n }\n\n /**\n * Converts a PublicKeys into Uint8Array (bytes) with: bytes = p1_bytes | ... | pn_bytes | threshold\n */\n toUint8Array(): Uint8Array {\n const bytes = new Uint8Array(this.publicKeys.length * Ed25519PublicKey.LENGTH + 1);\n this.publicKeys.forEach((k: Ed25519PublicKey, i: number) => {\n bytes.set(k.toUint8Array(), i * Ed25519PublicKey.LENGTH);\n });\n\n bytes[this.publicKeys.length * Ed25519PublicKey.LENGTH] = this.threshold;\n\n return bytes;\n }\n\n toString(): string {\n return Hex.fromHexInput(this.toUint8Array()).toString();\n }\n\n // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars\n verifySignature(args: { message: HexInput; signature: MultiEd25519Signature }): boolean {\n throw new Error(\"TODO - Method not implemented.\");\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeBytes(this.toUint8Array());\n }\n\n static deserialize(deserializer: Deserializer): MultiEd25519PublicKey {\n const bytes = deserializer.deserializeBytes();\n const threshold = bytes[bytes.length - 1];\n\n const keys: Ed25519PublicKey[] = [];\n\n for (let i = 0; i < bytes.length - 1; i += Ed25519PublicKey.LENGTH) {\n const begin = i;\n keys.push(new Ed25519PublicKey(bytes.subarray(begin, begin + Ed25519PublicKey.LENGTH)));\n }\n return new MultiEd25519PublicKey({ publicKeys: keys, threshold });\n }\n}\n\n/**\n * Represents the signature of a K-of-N Ed25519 multi-sig transaction.\n */\nexport class MultiEd25519Signature extends Signature {\n /**\n * Maximum number of Ed25519 signatures supported\n */\n static MAX_SIGNATURES_SUPPORTED = 32;\n\n /**\n * Number of bytes in the bitmap representing who signed the transaction (32-bits)\n */\n static BITMAP_LEN: number = 4;\n\n /**\n * The list of underlying Ed25519 signatures\n */\n public readonly signatures: Ed25519Signature[];\n\n /**\n * 32-bit Bitmap representing who signed the transaction\n *\n * This is represented where each public key can be masked to determine whether the message was signed by that key.\n */\n public readonly bitmap: Uint8Array;\n\n /**\n * Signature for a K-of-N multi-sig transaction.\n *\n * @see {@link\n * https://aptos.dev/integration/creating-a-signed-transaction/#multisignature-transactions | Creating a Signed Transaction}\n *\n * @param args.signatures A list of signatures\n * @param args.bitmap 4 bytes, at most 32 signatures are supported. If Nth bit value is `1`, the Nth\n * signature should be provided in `signatures`. Bits are read from left to right\n */\n constructor(args: { signatures: Ed25519Signature[]; bitmap: Uint8Array }) {\n super();\n\n const { signatures, bitmap } = args;\n if (bitmap.length !== MultiEd25519Signature.BITMAP_LEN) {\n throw new Error(`\"bitmap\" length should be ${MultiEd25519Signature.BITMAP_LEN}`);\n }\n\n if (signatures.length > MultiEd25519Signature.MAX_SIGNATURES_SUPPORTED) {\n throw new Error(\n `The number of signatures cannot be greater than ${MultiEd25519Signature.MAX_SIGNATURES_SUPPORTED}`,\n );\n }\n\n this.signatures = signatures;\n this.bitmap = bitmap;\n }\n\n /**\n * Converts a MultiSignature into Uint8Array (bytes) with `bytes = s1_bytes | ... | sn_bytes | bitmap`\n */\n toUint8Array(): Uint8Array {\n const bytes = new Uint8Array(this.signatures.length * Ed25519Signature.LENGTH + MultiEd25519Signature.BITMAP_LEN);\n this.signatures.forEach((k: Ed25519Signature, i: number) => {\n bytes.set(k.toUint8Array(), i * Ed25519Signature.LENGTH);\n });\n\n bytes.set(this.bitmap, this.signatures.length * Ed25519Signature.LENGTH);\n\n return bytes;\n }\n\n toString(): string {\n return Hex.fromHexInput(this.toUint8Array()).toString();\n }\n\n /**\n * Helper method to create a bitmap out of the specified bit positions\n * @param args.bits The bitmap positions that should be set. A position starts at index 0.\n * Valid position should range between 0 and 31.\n * @example\n * Here's an example of valid `bits`\n * ```\n * [0, 2, 31]\n * ```\n * `[0, 2, 31]` means the 1st, 3rd and 32nd bits should be set in the bitmap.\n * The result bitmap should be 0b1010000000000000000000000000001\n *\n * @returns bitmap that is 32bit long\n */\n static createBitmap(args: { bits: number[] }): Uint8Array {\n const { bits } = args;\n // Bits are read from left to right. e.g. 0b10000000 represents the first bit is set in one byte.\n // The decimal value of 0b10000000 is 128.\n const firstBitInByte = 128;\n const bitmap = new Uint8Array([0, 0, 0, 0]);\n\n // Check if duplicates exist in bits\n const dupCheckSet = new Set();\n\n bits.forEach((bit: number) => {\n if (bit >= MultiEd25519Signature.MAX_SIGNATURES_SUPPORTED) {\n throw new Error(`Cannot have a signature larger than ${MultiEd25519Signature.MAX_SIGNATURES_SUPPORTED - 1}.`);\n }\n\n if (dupCheckSet.has(bit)) {\n throw new Error(\"Duplicate bits detected.\");\n }\n\n dupCheckSet.add(bit);\n\n const byteOffset = Math.floor(bit / 8);\n\n let byte = bitmap[byteOffset];\n\n // eslint-disable-next-line no-bitwise\n byte |= firstBitInByte >> bit % 8;\n\n bitmap[byteOffset] = byte;\n });\n\n return bitmap;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeBytes(this.toUint8Array());\n }\n\n static deserialize(deserializer: Deserializer): MultiEd25519Signature {\n const bytes = deserializer.deserializeBytes();\n const bitmap = bytes.subarray(bytes.length - 4);\n\n const signatures: Ed25519Signature[] = [];\n\n for (let i = 0; i < bytes.length - bitmap.length; i += Ed25519Signature.LENGTH) {\n const begin = i;\n signatures.push(new Ed25519Signature(bytes.subarray(begin, begin + Ed25519Signature.LENGTH)));\n }\n return new MultiEd25519Signature({ signatures, bitmap });\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { sha3_256 } from \"@noble/hashes/sha3\";\nimport { secp256k1 } from \"@noble/curves/secp256k1\";\nimport { PrivateKey, PublicKey, Signature } from \"./asymmetricCrypto\";\nimport { Deserializer, Serializer } from \"../../bcs\";\nimport { Hex } from \"../hex\";\nimport { HexInput } from \"../../types\";\n\n/**\n * Represents the Secp256k1 ecdsa public key\n */\nexport class Secp256k1PublicKey extends PublicKey {\n // Secp256k1 ecdsa public keys contain a prefix indicating compression and two 32-byte coordinates.\n static readonly LENGTH: number = 65;\n\n // Hex value of the public key\n private readonly key: Hex;\n\n /**\n * Create a new PublicKey instance from a Uint8Array or String.\n *\n * @param hexInput A HexInput (string or Uint8Array)\n */\n constructor(hexInput: HexInput) {\n super();\n\n const hex = Hex.fromHexInput(hexInput);\n if (hex.toUint8Array().length !== Secp256k1PublicKey.LENGTH) {\n throw new Error(`PublicKey length should be ${Secp256k1PublicKey.LENGTH}`);\n }\n this.key = hex;\n }\n\n /**\n * Get the public key in bytes (Uint8Array).\n *\n * @returns Uint8Array representation of the public key\n */\n toUint8Array(): Uint8Array {\n return this.key.toUint8Array();\n }\n\n /**\n * Get the public key as a hex string with the 0x prefix.\n *\n * @returns string representation of the public key\n */\n toString(): string {\n return this.key.toString();\n }\n\n /**\n * Verifies a signed data with a public key\n *\n * @param args.message message\n * @param args.signature The signature\n * @returns true if the signature is valid\n */\n verifySignature(args: { message: HexInput; signature: Secp256k1Signature }): boolean {\n const { message, signature } = args;\n const msgHex = Hex.fromHexInput(message).toUint8Array();\n const sha3Message = sha3_256(msgHex);\n const rawSignature = signature.toUint8Array();\n return secp256k1.verify(rawSignature, sha3Message, this.toUint8Array());\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeBytes(this.key.toUint8Array());\n }\n\n static deserialize(deserializer: Deserializer): Secp256k1PublicKey {\n const bytes = deserializer.deserializeBytes();\n return new Secp256k1PublicKey(bytes);\n }\n}\n\n/**\n * A Secp256k1 ecdsa private key\n */\nexport class Secp256k1PrivateKey extends PrivateKey {\n /**\n * Length of Secp256k1 ecdsa private key\n */\n static readonly LENGTH: number = 32;\n\n /**\n * The private key bytes\n * @private\n */\n private readonly key: Hex;\n\n /**\n * Create a new PrivateKey instance from a Uint8Array or String.\n *\n * @param hexInput A HexInput (string or Uint8Array)\n */\n constructor(hexInput: HexInput) {\n super();\n\n const privateKeyHex = Hex.fromHexInput(hexInput);\n if (privateKeyHex.toUint8Array().length !== Secp256k1PrivateKey.LENGTH) {\n throw new Error(`PrivateKey length should be ${Secp256k1PrivateKey.LENGTH}`);\n }\n\n this.key = privateKeyHex;\n }\n\n /**\n * Get the private key in bytes (Uint8Array).\n *\n * @returns\n */\n toUint8Array(): Uint8Array {\n return this.key.toUint8Array();\n }\n\n /**\n * Get the private key as a hex string with the 0x prefix.\n *\n * @returns string representation of the private key\n */\n toString(): string {\n return this.key.toString();\n }\n\n /**\n * Sign the given message with the private key.\n *\n * @param message in HexInput format\n * @returns Signature\n */\n sign(message: HexInput): Secp256k1Signature {\n const msgHex = Hex.fromHexInput(message);\n const sha3Message = sha3_256(msgHex.toUint8Array());\n const signature = secp256k1.sign(sha3Message, this.key.toUint8Array());\n return new Secp256k1Signature(signature.toCompactRawBytes());\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeBytes(this.toUint8Array());\n }\n\n static deserialize(deserializer: Deserializer): Secp256k1PrivateKey {\n const bytes = deserializer.deserializeBytes();\n return new Secp256k1PrivateKey(bytes);\n }\n\n /**\n * Generate a new random private key.\n *\n * @returns Secp256k1PrivateKey\n */\n static generate(): Secp256k1PrivateKey {\n const hexInput = secp256k1.utils.randomPrivateKey();\n return new Secp256k1PrivateKey(hexInput);\n }\n\n /**\n * Derive the Secp256k1PublicKey from this private key.\n *\n * @returns Secp256k1PublicKey\n */\n publicKey(): Secp256k1PublicKey {\n const bytes = secp256k1.getPublicKey(this.key.toUint8Array(), false);\n return new Secp256k1PublicKey(bytes);\n }\n}\n\n/**\n * A signature of a message signed using an Secp256k1 ecdsa private key\n */\nexport class Secp256k1Signature extends Signature {\n /**\n * Secp256k1 ecdsa signatures are 256-bit.\n */\n static readonly LENGTH = 64;\n\n /**\n * The signature bytes\n * @private\n */\n private readonly data: Hex;\n\n /**\n * Create a new Signature instance from a Uint8Array or String.\n *\n * @param hexInput A HexInput (string or Uint8Array)\n */\n constructor(hexInput: HexInput) {\n super();\n\n const hex = Hex.fromHexInput(hexInput);\n if (hex.toUint8Array().length !== Secp256k1Signature.LENGTH) {\n throw new Error(`Signature length should be ${Secp256k1Signature.LENGTH}`);\n }\n this.data = hex;\n }\n\n /**\n * Get the signature in bytes (Uint8Array).\n *\n * @returns Uint8Array representation of the signature\n */\n toUint8Array(): Uint8Array {\n return this.data.toUint8Array();\n }\n\n /**\n * Get the signature as a hex string with the 0x prefix.\n *\n * @returns string representation of the signature\n */\n toString(): string {\n return this.data.toString();\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeBytes(this.data.toUint8Array());\n }\n\n static deserialize(deserializer: Deserializer): Secp256k1Signature {\n const hex = deserializer.deserializeBytes();\n return new Secp256k1Signature(hex);\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { hmac } from \"@noble/hashes/hmac\";\nimport { sha512 } from \"@noble/hashes/sha512\";\nimport * as bip39 from \"@scure/bip39\";\n\nexport type DerivedKeys = {\n key: Uint8Array;\n chainCode: Uint8Array;\n};\n\n/**\n * Aptos derive path is 637\n *\n * See https://github.com/satoshilabs/slips/blob/master/slip-0044.md\n */\nexport const APTOS_PATH_REGEX = /^m\\/44'\\/637'\\/[0-9]+'\\/[0-9]+'\\/[0-9]+'?$/;\n\n/**\n * A list of supported key types and associated seeds\n */\nexport enum KeyType {\n ED25519 = \"ed25519 seed\",\n}\n\nconst HARDENED_OFFSET = 0x80000000;\n\nconst deriveKey = (hashSeed: Uint8Array | string, data: Uint8Array | string): DerivedKeys => {\n const digest = hmac.create(sha512, hashSeed).update(data).digest();\n return {\n key: digest.slice(0, 32),\n chainCode: digest.slice(32),\n };\n};\n\n/**\n * Derive a child key from the private key\n * @param key\n * @param chainCode\n * @param index\n * @constructor\n */\nconst CKDPriv = ({ key, chainCode }: DerivedKeys, index: number): DerivedKeys => {\n const buffer = new ArrayBuffer(4);\n new DataView(buffer).setUint32(0, index);\n const indexBytes = new Uint8Array(buffer);\n const zero = new Uint8Array([0]);\n const data = new Uint8Array([...zero, ...key, ...indexBytes]);\n\n return deriveKey(chainCode, data);\n};\n\nconst removeApostrophes = (val: string): string => val.replace(\"'\", \"\");\n\n/**\n * Splits derive path into segments\n * @param path\n */\nconst splitPath = (path: string): Array<string> => path.split(\"/\").slice(1).map(removeApostrophes);\n\n/**\n * Checks if the BIP44 path is valid for Aptos\n * @param path the BIP44 path\n *\n * @returns true if the path is a valid Aptos path\n */\nexport const isValidPath = (path: string): boolean => {\n if (!APTOS_PATH_REGEX.test(path)) {\n return false;\n }\n return !splitPath(path).some(Number.isNaN as any);\n};\n\n/**\n * Normalizes the mnemonic by removing extra whitespace and making it lowercase\n * @param mnemonic the mnemonic seed phrase\n */\nconst mnemonicToSeed = (mnemonic: string): Uint8Array => {\n const normalizedMnemonic = mnemonic\n .trim()\n .split(/\\s+/)\n .map((part) => part.toLowerCase())\n .join(\" \");\n return bip39.mnemonicToSeedSync(normalizedMnemonic);\n};\n\n/**\n * Derives a private key from a mnemonic seed phrase.\n *\n * To derive multiple keys from the same phrase, change the path\n * @param keyType the key type seed used to derive keys\n * @param path the BIP44 path\n * @param seedPhrase the mnemonic seed phrase\n * @param offset the offset used for key derivation, defaults to [HARDENED_OFFSET]\n */\nexport const derivePrivateKeyFromMnemonic = (\n keyType: KeyType,\n path: string,\n seedPhrase: string,\n offset = HARDENED_OFFSET,\n): DerivedKeys => {\n if (!isValidPath(path)) {\n throw new Error(\"Invalid derivation path\");\n }\n\n // Derive the master key from the mnemonic\n const { key, chainCode } = deriveKey(keyType, mnemonicToSeed(seedPhrase));\n const segments = splitPath(path).map((el) => parseInt(el, 10));\n\n // Derive the child key based on the path\n return segments.reduce((parentKeys, segment) => CKDPriv(parentKeys, segment + offset), { key, chainCode });\n};\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AccountAddress } from \"./accountAddress\";\nimport { AuthenticationKey } from \"./authenticationKey\";\nimport { PrivateKey, PublicKey, Signature } from \"./crypto/asymmetricCrypto\";\nimport { Ed25519PrivateKey, Ed25519PublicKey } from \"./crypto/ed25519\";\nimport { MultiEd25519PublicKey } from \"./crypto/multiEd25519\";\nimport { Secp256k1PrivateKey, Secp256k1PublicKey } from \"./crypto/secp256k1\";\nimport { Hex } from \"./hex\";\nimport { HexInput, SigningScheme } from \"../types\";\nimport { derivePrivateKeyFromMnemonic, KeyType } from \"../utils/hdKey\";\n\n/**\n * Class for creating and managing account on Aptos network\n *\n * Use this class to create accounts, sign transactions, and more.\n * Note: Creating an account instance does not create the account on-chain.\n */\nexport class Account {\n /**\n * Public key associated with the account\n */\n readonly publicKey: PublicKey;\n\n /**\n * Private key associated with the account\n */\n readonly privateKey: PrivateKey;\n\n /**\n * Account address associated with the account\n */\n readonly accountAddress: AccountAddress;\n\n /**\n * Signing scheme used to sign transactions\n */\n readonly signingScheme: SigningScheme;\n\n /**\n * constructor for Account\n *\n * Need to update this to use the new crypto library if new schemes are added.\n *\n * @param args.privateKey PrivateKey - private key of the account\n * @param args.address AccountAddress - address of the account\n *\n * This method is private because it should only be called by the factory static methods.\n * @returns Account\n */\n private constructor(args: { privateKey: PrivateKey; address: AccountAddress }) {\n const { privateKey, address } = args;\n\n // Derive the public key from the private key\n this.publicKey = privateKey.publicKey();\n\n // Derive the signing scheme from the public key\n if (this.publicKey instanceof Ed25519PublicKey) {\n this.signingScheme = SigningScheme.Ed25519;\n } else if (this.publicKey instanceof MultiEd25519PublicKey) {\n this.signingScheme = SigningScheme.MultiEd25519;\n } else if (this.publicKey instanceof Secp256k1PublicKey) {\n this.signingScheme = SigningScheme.Secp256k1Ecdsa;\n } else {\n throw new Error(\"Can not create new Account, unsupported public key type\");\n }\n\n this.privateKey = privateKey;\n this.accountAddress = address;\n }\n\n /**\n * Derives an account with random private key and address\n *\n * @param scheme optional SigningScheme - type of SigningScheme to use. Default to Ed25519\n * Currently only Ed25519 and Secp256k1 are supported\n *\n * @returns Account with the given signing scheme\n */\n static generate(scheme?: SigningScheme): Account {\n let privateKey: PrivateKey;\n\n switch (scheme) {\n case SigningScheme.Secp256k1Ecdsa:\n privateKey = Secp256k1PrivateKey.generate();\n break;\n // TODO: Add support for MultiEd25519\n default:\n privateKey = Ed25519PrivateKey.generate();\n }\n\n const address = new AccountAddress({\n data: Account.authKey({\n publicKey: privateKey.publicKey(),\n }).toUint8Array(),\n });\n return new Account({ privateKey, address });\n }\n\n /**\n * Derives an account with provided private key\n *\n * @param privateKey Hex - private key of the account\n * @returns Account\n */\n static fromPrivateKey(privateKey: PrivateKey): Account {\n const publicKey = privateKey.publicKey();\n const authKey = Account.authKey({ publicKey });\n const address = new AccountAddress({ data: authKey.toUint8Array() });\n return Account.fromPrivateKeyAndAddress({ privateKey, address });\n }\n\n /**\n * Derives an account with provided private key and address\n * This is intended to be used for account that has it's key rotated\n *\n * @param args.privateKey Hex - private key of the account\n * @param args.address AccountAddress - address of the account\n * @returns Account\n */\n static fromPrivateKeyAndAddress(args: { privateKey: PrivateKey; address: AccountAddress }): Account {\n return new Account(args);\n }\n\n /**\n * Derives an account with bip44 path and mnemonics,\n *\n * @param args.path the BIP44 derive path (e.g. m/44'/637'/0'/0'/0')\n * Detailed description: {@link https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki}\n * @param args.mnemonic the mnemonic seed phrase of the account\n * @returns AptosAccount\n */\n static fromDerivationPath(args: { path: string; mnemonic: string }): Account {\n const { path, mnemonic } = args;\n\n const { key } = derivePrivateKeyFromMnemonic(KeyType.ED25519, path, mnemonic);\n const privateKey = new Ed25519PrivateKey(key);\n return Account.fromPrivateKey(privateKey);\n }\n\n /**\n * This key enables account owners to rotate their private key(s)\n * associated with the account without changing the address that hosts their account.\n * See here for more info: {@link https://aptos.dev/concepts/accounts#single-signer-authentication}\n *\n * @param args.publicKey PublicKey - public key of the account\n * @returns Authentication key for the associated account\n */\n static authKey(args: { publicKey: PublicKey }): Hex {\n const { publicKey } = args;\n const authKey = AuthenticationKey.fromPublicKey({ publicKey });\n return authKey.data;\n }\n\n /**\n * Sign the given message with the private key.\n *\n * TODO: Add sign transaction or specific types\n *\n * @param data in HexInput format\n * @returns Signature\n */\n sign(data: HexInput): Signature {\n return this.privateKey.sign(data);\n }\n\n /**\n * Verify the given message and signature with the public key.\n *\n * @param args.message raw message data in HexInput format\n * @param args.signature signed message Signature\n * @returns\n */\n verifySignature(args: { message: HexInput; signature: Signature }): boolean {\n const { message, signature } = args;\n const rawMessage = Hex.fromHexInput(message).toUint8Array();\n return this.publicKey.verifySignature({ message: rawMessage, signature });\n }\n}\n","import * as Types from \"./operations\";\n\nimport { GraphQLClient } from \"graphql-request\";\nimport * as Dom from \"graphql-request/dist/types.dom\";\nexport const CurrentTokenOwnershipFieldsFragmentDoc = `\n fragment CurrentTokenOwnershipFields on current_token_ownerships_v2 {\n token_standard\n token_properties_mutated_v1\n token_data_id\n table_type_v1\n storage_id\n property_version_v1\n owner_address\n last_transaction_version\n last_transaction_timestamp\n is_soulbound_v2\n is_fungible_v2\n amount\n current_token_data {\n collection_id\n description\n is_fungible_v2\n largest_property_version_v1\n last_transaction_timestamp\n last_transaction_version\n maximum\n supply\n token_data_id\n token_name\n token_properties\n token_standard\n token_uri\n current_collection {\n collection_id\n collection_name\n creator_address\n current_supply\n description\n last_transaction_timestamp\n last_transaction_version\n max_supply\n mutable_description\n mutable_uri\n table_handle_v1\n token_standard\n total_minted_v2\n uri\n }\n }\n}\n `;\nexport const TokenActivitiesFieldsFragmentDoc = `\n fragment TokenActivitiesFields on token_activities_v2 {\n after_value\n before_value\n entry_function_id_str\n event_account_address\n event_index\n from_address\n is_fungible_v2\n property_version_v1\n to_address\n token_amount\n token_data_id\n token_standard\n transaction_timestamp\n transaction_version\n type\n}\n `;\nexport const GetAccountCoinsCount = `\n query getAccountCoinsCount($address: String) {\n current_fungible_asset_balances_aggregate(\n where: {owner_address: {_eq: $address}}\n ) {\n aggregate {\n count\n }\n }\n}\n `;\nexport const GetAccountCoinsData = `\n query getAccountCoinsData($where_condition: current_fungible_asset_balances_bool_exp!, $offset: Int, $limit: Int, $order_by: [current_fungible_asset_balances_order_by!]) {\n current_fungible_asset_balances(\n where: $where_condition\n offset: $offset\n limit: $limit\n order_by: $order_by\n ) {\n amount\n asset_type\n is_frozen\n is_primary\n last_transaction_timestamp\n last_transaction_version\n owner_address\n storage_id\n token_standard\n metadata {\n token_standard\n symbol\n supply_aggregator_table_key_v1\n supply_aggregator_table_handle_v1\n project_uri\n name\n last_transaction_version\n last_transaction_timestamp\n icon_uri\n decimals\n creator_address\n asset_type\n }\n }\n}\n `;\nexport const GetAccountCollectionsWithOwnedTokens = `\n query getAccountCollectionsWithOwnedTokens($where_condition: current_collection_ownership_v2_view_bool_exp!, $offset: Int, $limit: Int, $order_by: [current_collection_ownership_v2_view_order_by!]) {\n current_collection_ownership_v2_view(\n where: $where_condition\n offset: $offset\n limit: $limit\n order_by: $order_by\n ) {\n current_collection {\n collection_id\n collection_name\n creator_address\n current_supply\n description\n last_transaction_timestamp\n last_transaction_version\n mutable_description\n max_supply\n mutable_uri\n table_handle_v1\n token_standard\n total_minted_v2\n uri\n }\n collection_id\n collection_name\n collection_uri\n creator_address\n distinct_tokens\n last_transaction_version\n owner_address\n single_token_uri\n }\n}\n `;\nexport const GetAccountOwnedObjects = `\n query getAccountOwnedObjects($where_condition: current_objects_bool_exp, $offset: Int, $limit: Int, $order_by: [current_objects_order_by!]) {\n current_objects(\n where: $where_condition\n offset: $offset\n limit: $limit\n order_by: $order_by\n ) {\n allow_ungated_transfer\n state_key_hash\n owner_address\n object_address\n last_transaction_version\n last_guid_creation_num\n is_deleted\n }\n}\n `;\nexport const GetAccountOwnedTokens = `\n query getAccountOwnedTokens($where_condition: current_token_ownerships_v2_bool_exp!, $offset: Int, $limit: Int, $order_by: [current_token_ownerships_v2_order_by!]) {\n current_token_ownerships_v2(\n where: $where_condition\n offset: $offset\n limit: $limit\n order_by: $order_by\n ) {\n ...CurrentTokenOwnershipFields\n }\n}\n ${CurrentTokenOwnershipFieldsFragmentDoc}`;\nexport const GetAccountOwnedTokensByTokenData = `\n query getAccountOwnedTokensByTokenData($where_condition: current_token_ownerships_v2_bool_exp!, $offset: Int, $limit: Int, $order_by: [current_token_ownerships_v2_order_by!]) {\n current_token_ownerships_v2(\n where: $where_condition\n offset: $offset\n limit: $limit\n order_by: $order_by\n ) {\n ...CurrentTokenOwnershipFields\n }\n}\n ${CurrentTokenOwnershipFieldsFragmentDoc}`;\nexport const GetAccountOwnedTokensFromCollection = `\n query getAccountOwnedTokensFromCollection($where_condition: current_token_ownerships_v2_bool_exp!, $offset: Int, $limit: Int, $order_by: [current_token_ownerships_v2_order_by!]) {\n current_token_ownerships_v2(\n where: $where_condition\n offset: $offset\n limit: $limit\n order_by: $order_by\n ) {\n ...CurrentTokenOwnershipFields\n }\n}\n ${CurrentTokenOwnershipFieldsFragmentDoc}`;\nexport const GetAccountTokensCount = `\n query getAccountTokensCount($where_condition: current_token_ownerships_v2_bool_exp, $offset: Int, $limit: Int) {\n current_token_ownerships_v2_aggregate(\n where: $where_condition\n offset: $offset\n limit: $limit\n ) {\n aggregate {\n count\n }\n }\n}\n `;\nexport const GetAccountTransactionsCount = `\n query getAccountTransactionsCount($address: String) {\n account_transactions_aggregate(where: {account_address: {_eq: $address}}) {\n aggregate {\n count\n }\n }\n}\n `;\nexport const GetChainTopUserTransactions = `\n query getChainTopUserTransactions($limit: Int) {\n user_transactions(limit: $limit, order_by: {version: desc}) {\n version\n }\n}\n `;\nexport const GetCollectionData = `\n query getCollectionData($where_condition: current_collections_v2_bool_exp!) {\n current_collections_v2(where: $where_condition) {\n collection_id\n collection_name\n creator_address\n current_supply\n description\n last_transaction_timestamp\n last_transaction_version\n max_supply\n mutable_description\n mutable_uri\n table_handle_v1\n token_standard\n total_minted_v2\n uri\n }\n}\n `;\nexport const GetCurrentFungibleAssetBalances = `\n query getCurrentFungibleAssetBalances($where_condition: current_fungible_asset_balances_bool_exp, $offset: Int, $limit: Int) {\n current_fungible_asset_balances(\n where: $where_condition\n offset: $offset\n limit: $limit\n ) {\n amount\n asset_type\n is_frozen\n is_primary\n last_transaction_timestamp\n last_transaction_version\n owner_address\n storage_id\n token_standard\n }\n}\n `;\nexport const GetDelegatedStakingActivities = `\n query getDelegatedStakingActivities($delegatorAddress: String, $poolAddress: String) {\n delegated_staking_activities(\n where: {delegator_address: {_eq: $delegatorAddress}, pool_address: {_eq: $poolAddress}}\n ) {\n amount\n delegator_address\n event_index\n event_type\n pool_address\n transaction_version\n }\n}\n `;\nexport const GetEvents = `\n query getEvents($where_condition: events_bool_exp, $offset: Int, $limit: Int, $order_by: [events_order_by!]) {\n events(\n where: $where_condition\n offset: $offset\n limit: $limit\n order_by: $order_by\n ) {\n account_address\n creation_number\n data\n event_index\n sequence_number\n transaction_block_height\n transaction_version\n type\n }\n}\n `;\nexport const GetFungibleAssetActivities = `\n query getFungibleAssetActivities($where_condition: fungible_asset_activities_bool_exp, $offset: Int, $limit: Int) {\n fungible_asset_activities(\n where: $where_condition\n offset: $offset\n limit: $limit\n ) {\n amount\n asset_type\n block_height\n entry_function_id_str\n event_index\n gas_fee_payer_address\n is_frozen\n is_gas_fee\n is_transaction_success\n owner_address\n storage_id\n storage_refund_amount\n token_standard\n transaction_timestamp\n transaction_version\n type\n }\n}\n `;\nexport const GetFungibleAssetMetadata = `\n query getFungibleAssetMetadata($where_condition: fungible_asset_metadata_bool_exp, $offset: Int, $limit: Int) {\n fungible_asset_metadata(where: $where_condition, offset: $offset, limit: $limit) {\n icon_uri\n project_uri\n supply_aggregator_table_handle_v1\n supply_aggregator_table_key_v1\n creator_address\n asset_type\n decimals\n last_transaction_timestamp\n last_transaction_version\n name\n symbol\n token_standard\n }\n}\n `;\nexport const GetNumberOfDelegators = `\n query getNumberOfDelegators($where_condition: num_active_delegator_per_pool_bool_exp!, $order_by: [num_active_delegator_per_pool_order_by!]) {\n num_active_delegator_per_pool(where: $where_condition, order_by: $order_by) {\n num_active_delegator\n pool_address\n }\n}\n `;\nexport const GetProcessorStatus = `\n query getProcessorStatus {\n processor_status {\n last_success_version\n processor\n last_updated\n }\n}\n `;\nexport const GetTokenActivity = `\n query getTokenActivity($where_condition: token_activities_v2_bool_exp!, $offset: Int, $limit: Int, $order_by: [token_activities_v2_order_by!]) {\n token_activities_v2(\n where: $where_condition\n order_by: $order_by\n offset: $offset\n limit: $limit\n ) {\n ...TokenActivitiesFields\n }\n}\n ${TokenActivitiesFieldsFragmentDoc}`;\nexport const GetCurrentTokenOwnership = `\n query getCurrentTokenOwnership($where_condition: current_token_ownerships_v2_bool_exp!, $offset: Int, $limit: Int, $order_by: [current_token_ownerships_v2_order_by!]) {\n current_token_ownerships_v2(\n where: $where_condition\n offset: $offset\n limit: $limit\n order_by: $order_by\n ) {\n ...CurrentTokenOwnershipFields\n }\n}\n ${CurrentTokenOwnershipFieldsFragmentDoc}`;\nexport const GetTokenData = `\n query getTokenData($where_condition: current_token_datas_v2_bool_exp, $offset: Int, $limit: Int, $order_by: [current_token_datas_v2_order_by!]) {\n current_token_datas_v2(\n where: $where_condition\n offset: $offset\n limit: $limit\n order_by: $order_by\n ) {\n collection_id\n description\n is_fungible_v2\n largest_property_version_v1\n last_transaction_timestamp\n last_transaction_version\n maximum\n supply\n token_data_id\n token_name\n token_properties\n token_standard\n token_uri\n current_collection {\n collection_id\n collection_name\n creator_address\n current_supply\n description\n last_transaction_timestamp\n last_transaction_version\n max_supply\n mutable_description\n mutable_uri\n table_handle_v1\n token_standard\n total_minted_v2\n uri\n }\n }\n}\n `;\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n) => Promise<T>;\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType) => action();\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n getAccountCoinsCount(\n variables?: Types.GetAccountCoinsCountQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetAccountCoinsCountQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetAccountCoinsCountQuery>(GetAccountCoinsCount, variables, {\n ...requestHeaders,\n ...wrappedRequestHeaders,\n }),\n \"getAccountCoinsCount\",\n \"query\",\n );\n },\n getAccountCoinsData(\n variables: Types.GetAccountCoinsDataQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetAccountCoinsDataQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetAccountCoinsDataQuery>(GetAccountCoinsData, variables, {\n ...requestHeaders,\n ...wrappedRequestHeaders,\n }),\n \"getAccountCoinsData\",\n \"query\",\n );\n },\n getAccountCollectionsWithOwnedTokens(\n variables: Types.GetAccountCollectionsWithOwnedTokensQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetAccountCollectionsWithOwnedTokensQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetAccountCollectionsWithOwnedTokensQuery>(\n GetAccountCollectionsWithOwnedTokens,\n variables,\n { ...requestHeaders, ...wrappedRequestHeaders },\n ),\n \"getAccountCollectionsWithOwnedTokens\",\n \"query\",\n );\n },\n getAccountOwnedObjects(\n variables?: Types.GetAccountOwnedObjectsQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetAccountOwnedObjectsQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetAccountOwnedObjectsQuery>(GetAccountOwnedObjects, variables, {\n ...requestHeaders,\n ...wrappedRequestHeaders,\n }),\n \"getAccountOwnedObjects\",\n \"query\",\n );\n },\n getAccountOwnedTokens(\n variables: Types.GetAccountOwnedTokensQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetAccountOwnedTokensQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetAccountOwnedTokensQuery>(GetAccountOwnedTokens, variables, {\n ...requestHeaders,\n ...wrappedRequestHeaders,\n }),\n \"getAccountOwnedTokens\",\n \"query\",\n );\n },\n getAccountOwnedTokensByTokenData(\n variables: Types.GetAccountOwnedTokensByTokenDataQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetAccountOwnedTokensByTokenDataQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetAccountOwnedTokensByTokenDataQuery>(GetAccountOwnedTokensByTokenData, variables, {\n ...requestHeaders,\n ...wrappedRequestHeaders,\n }),\n \"getAccountOwnedTokensByTokenData\",\n \"query\",\n );\n },\n getAccountOwnedTokensFromCollection(\n variables: Types.GetAccountOwnedTokensFromCollectionQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetAccountOwnedTokensFromCollectionQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetAccountOwnedTokensFromCollectionQuery>(\n GetAccountOwnedTokensFromCollection,\n variables,\n { ...requestHeaders, ...wrappedRequestHeaders },\n ),\n \"getAccountOwnedTokensFromCollection\",\n \"query\",\n );\n },\n getAccountTokensCount(\n variables?: Types.GetAccountTokensCountQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetAccountTokensCountQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetAccountTokensCountQuery>(GetAccountTokensCount, variables, {\n ...requestHeaders,\n ...wrappedRequestHeaders,\n }),\n \"getAccountTokensCount\",\n \"query\",\n );\n },\n getAccountTransactionsCount(\n variables?: Types.GetAccountTransactionsCountQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetAccountTransactionsCountQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetAccountTransactionsCountQuery>(GetAccountTransactionsCount, variables, {\n ...requestHeaders,\n ...wrappedRequestHeaders,\n }),\n \"getAccountTransactionsCount\",\n \"query\",\n );\n },\n getChainTopUserTransactions(\n variables?: Types.GetChainTopUserTransactionsQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetChainTopUserTransactionsQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetChainTopUserTransactionsQuery>(GetChainTopUserTransactions, variables, {\n ...requestHeaders,\n ...wrappedRequestHeaders,\n }),\n \"getChainTopUserTransactions\",\n \"query\",\n );\n },\n getCollectionData(\n variables: Types.GetCollectionDataQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetCollectionDataQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetCollectionDataQuery>(GetCollectionData, variables, {\n ...requestHeaders,\n ...wrappedRequestHeaders,\n }),\n \"getCollectionData\",\n \"query\",\n );\n },\n getCurrentFungibleAssetBalances(\n variables?: Types.GetCurrentFungibleAssetBalancesQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetCurrentFungibleAssetBalancesQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetCurrentFungibleAssetBalancesQuery>(GetCurrentFungibleAssetBalances, variables, {\n ...requestHeaders,\n ...wrappedRequestHeaders,\n }),\n \"getCurrentFungibleAssetBalances\",\n \"query\",\n );\n },\n getDelegatedStakingActivities(\n variables?: Types.GetDelegatedStakingActivitiesQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetDelegatedStakingActivitiesQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetDelegatedStakingActivitiesQuery>(GetDelegatedStakingActivities, variables, {\n ...requestHeaders,\n ...wrappedRequestHeaders,\n }),\n \"getDelegatedStakingActivities\",\n \"query\",\n );\n },\n getEvents(\n variables?: Types.GetEventsQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetEventsQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetEventsQuery>(GetEvents, variables, { ...requestHeaders, ...wrappedRequestHeaders }),\n \"getEvents\",\n \"query\",\n );\n },\n getFungibleAssetActivities(\n variables?: Types.GetFungibleAssetActivitiesQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetFungibleAssetActivitiesQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetFungibleAssetActivitiesQuery>(GetFungibleAssetActivities, variables, {\n ...requestHeaders,\n ...wrappedRequestHeaders,\n }),\n \"getFungibleAssetActivities\",\n \"query\",\n );\n },\n getFungibleAssetMetadata(\n variables?: Types.GetFungibleAssetMetadataQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetFungibleAssetMetadataQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetFungibleAssetMetadataQuery>(GetFungibleAssetMetadata, variables, {\n ...requestHeaders,\n ...wrappedRequestHeaders,\n }),\n \"getFungibleAssetMetadata\",\n \"query\",\n );\n },\n getNumberOfDelegators(\n variables: Types.GetNumberOfDelegatorsQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetNumberOfDelegatorsQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetNumberOfDelegatorsQuery>(GetNumberOfDelegators, variables, {\n ...requestHeaders,\n ...wrappedRequestHeaders,\n }),\n \"getNumberOfDelegators\",\n \"query\",\n );\n },\n getProcessorStatus(\n variables?: Types.GetProcessorStatusQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetProcessorStatusQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetProcessorStatusQuery>(GetProcessorStatus, variables, {\n ...requestHeaders,\n ...wrappedRequestHeaders,\n }),\n \"getProcessorStatus\",\n \"query\",\n );\n },\n getTokenActivity(\n variables: Types.GetTokenActivityQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetTokenActivityQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetTokenActivityQuery>(GetTokenActivity, variables, {\n ...requestHeaders,\n ...wrappedRequestHeaders,\n }),\n \"getTokenActivity\",\n \"query\",\n );\n },\n getCurrentTokenOwnership(\n variables: Types.GetCurrentTokenOwnershipQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetCurrentTokenOwnershipQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetCurrentTokenOwnershipQuery>(GetCurrentTokenOwnership, variables, {\n ...requestHeaders,\n ...wrappedRequestHeaders,\n }),\n \"getCurrentTokenOwnership\",\n \"query\",\n );\n },\n getTokenData(\n variables?: Types.GetTokenDataQueryVariables,\n requestHeaders?: Dom.RequestInit[\"headers\"],\n ): Promise<Types.GetTokenDataQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<Types.GetTokenDataQuery>(GetTokenData, variables, {\n ...requestHeaders,\n ...wrappedRequestHeaders,\n }),\n \"getTokenData\",\n \"query\",\n );\n },\n };\n}\nexport type Sdk = ReturnType<typeof getSdk>;\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * This file contains the underlying implementations for exposed API surface in\n * the {@link api/general}. By moving the methods out into a separate file,\n * other namespaces and processes can access these methods without depending on the entire\n * general namespace and without having a dependency cycle error.\n */\n\nimport { AptosConfig } from \"../api/aptosConfig\";\nimport { getAptosFullNode, postAptosFullNode, postAptosIndexer } from \"../client\";\nimport {\n AnyNumber,\n Block,\n GetChainTopUserTransactionsResponse,\n GetProcessorStatusResponse,\n GraphqlQuery,\n LedgerInfo,\n LedgerVersion,\n MoveValue,\n TableItemRequest,\n ViewRequest,\n ViewRequestData,\n} from \"../types\";\nimport { GetChainTopUserTransactionsQuery, GetProcessorStatusQuery } from \"../types/generated/operations\";\nimport { GetChainTopUserTransactions, GetProcessorStatus } from \"../types/generated/queries\";\n\nexport async function getLedgerInfo(args: { aptosConfig: AptosConfig }): Promise<LedgerInfo> {\n const { aptosConfig } = args;\n const { data } = await getAptosFullNode<{}, LedgerInfo>({\n aptosConfig,\n originMethod: \"getLedgerInfo\",\n path: \"\",\n });\n return data;\n}\n\nexport async function getBlockByVersion(args: {\n aptosConfig: AptosConfig;\n ledgerVersion: AnyNumber;\n options?: { withTransactions?: boolean };\n}): Promise<Block> {\n const { aptosConfig, ledgerVersion, options } = args;\n const { data } = await getAptosFullNode<{}, Block>({\n aptosConfig,\n originMethod: \"getBlockByVersion\",\n path: `blocks/by_version/${ledgerVersion}`,\n params: { with_transactions: options?.withTransactions },\n });\n return data;\n}\n\nexport async function getBlockByHeight(args: {\n aptosConfig: AptosConfig;\n blockHeight: AnyNumber;\n options?: { withTransactions?: boolean };\n}): Promise<Block> {\n const { aptosConfig, blockHeight, options } = args;\n const { data } = await getAptosFullNode<{}, Block>({\n aptosConfig,\n originMethod: \"getBlockByHeight\",\n path: `blocks/by_height/${blockHeight}`,\n params: { with_transactions: options?.withTransactions },\n });\n return data;\n}\n\nexport async function getTableItem(args: {\n aptosConfig: AptosConfig;\n handle: string;\n data: TableItemRequest;\n options?: LedgerVersion;\n}): Promise<any> {\n const { aptosConfig, handle, data, options } = args;\n const response = await postAptosFullNode<TableItemRequest, any>({\n aptosConfig,\n originMethod: \"getTableItem\",\n path: `tables/${handle}/item`,\n params: { ledger_version: options?.ledgerVersion },\n body: data,\n });\n return response.data;\n}\n\nexport async function view(args: {\n aptosConfig: AptosConfig;\n payload: ViewRequestData;\n options?: LedgerVersion;\n}): Promise<MoveValue[]> {\n const { aptosConfig, payload, options } = args;\n const { data } = await postAptosFullNode<ViewRequest, MoveValue[]>({\n aptosConfig,\n originMethod: \"view\",\n path: \"view\",\n params: { ledger_version: options?.ledgerVersion },\n body: {\n function: payload.function,\n type_arguments: payload.typeArguments ?? [],\n arguments: payload.arguments ?? [],\n },\n });\n return data;\n}\n\nexport async function getChainTopUserTransactions(args: {\n aptosConfig: AptosConfig;\n limit: number;\n}): Promise<GetChainTopUserTransactionsResponse> {\n const { aptosConfig, limit } = args;\n const graphqlQuery = {\n query: GetChainTopUserTransactions,\n variables: { limit },\n };\n\n const data = await queryIndexer<GetChainTopUserTransactionsQuery>({\n aptosConfig,\n query: graphqlQuery,\n originMethod: \"getChainTopUserTransactions\",\n });\n\n return data.user_transactions;\n}\n\nexport async function queryIndexer<T>(args: {\n aptosConfig: AptosConfig;\n query: GraphqlQuery;\n originMethod?: string;\n}): Promise<T> {\n const { aptosConfig, query, originMethod } = args;\n const { data } = await postAptosIndexer<GraphqlQuery, T>({\n aptosConfig,\n originMethod: originMethod ?? \"queryIndexer\",\n path: \"\",\n body: query,\n overrides: { WITH_CREDENTIALS: false },\n });\n return data;\n}\n\nexport async function getProcessorStatuses(args: { aptosConfig: AptosConfig }): Promise<GetProcessorStatusResponse> {\n const { aptosConfig } = args;\n\n const graphqlQuery = {\n query: GetProcessorStatus,\n };\n\n const data = await queryIndexer<GetProcessorStatusQuery>({\n aptosConfig,\n query: graphqlQuery,\n originMethod: \"getProcessorStatuses\",\n });\n\n return data.processor_status;\n}\n\nexport async function getIndexerLastSuccessVersion(args: { aptosConfig: AptosConfig }): Promise<number> {\n const response = await getProcessorStatuses({ aptosConfig: args.aptosConfig });\n return response[0].last_success_version;\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * The global cache Map shared across all functions. Must keep care to ensure that the\n * cache keys are unique across all functions.\n */\nconst cache = new Map<string, { value: any; timestamp: number }>();\n\n/**\n * A memoize high order function to cache async function response\n *\n * @param func An async function to cache the result of\n * @param key The provided cache key\n * @param ttlMs time-to-live in milliseconds for cached data\n * @returns the cached or latest result\n */\nexport function memoizeAsync<T>(\n func: (...args: any[]) => Promise<T>,\n key: string,\n ttlMs?: number,\n): (...args: any[]) => Promise<T> {\n return async (...args: any[]) => {\n // Check if the cached result exists and is within TTL\n if (cache.has(key)) {\n const { value, timestamp } = cache.get(key)!;\n if (ttlMs === undefined || Date.now() - timestamp <= ttlMs) {\n return value;\n }\n }\n\n // If not cached or TTL expired, compute the result\n const result = await func(...args);\n\n // Cache the result with a timestamp\n cache.set(key, { value: result, timestamp: Date.now() });\n\n return result;\n };\n}\n\n/**\n * A memoize high order function to cache function response\n *\n * @param func A function to cache the result of\n * @param key The provided cache key\n * @param ttlMs time-to-live in milliseconds for cached data\n * @returns the cached or latest result\n */\nexport function memoize<T>(func: (...args: any[]) => T, key: string, ttlMs?: number): (...args: any[]) => T {\n return (...args: any[]) => {\n // Check if the cached result exists and is within TTL\n if (cache.has(key)) {\n const { value, timestamp } = cache.get(key)!;\n if (ttlMs === undefined || Date.now() - timestamp <= ttlMs) {\n return value;\n }\n }\n\n // If not cached or TTL expired, compute the result\n const result = func(...args);\n\n // Cache the result with a timestamp\n cache.set(key, { value: result, timestamp: Date.now() });\n\n return result;\n };\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * This file contains the underlying implementations for exposed API surface in\n * the {@link api/account}. By moving the methods out into a separate file,\n * other namespaces and processes can access these methods without depending on the entire\n * account namespace and without having a dependency cycle error.\n */\n\nimport { AptosConfig } from \"../api/aptosConfig\";\nimport { AptosApiError, getAptosFullNode, paginateWithCursor } from \"../client\";\nimport { AccountAddress, Hex } from \"../core\";\nimport { getTableItem, queryIndexer } from \"./general\";\nimport {\n AccountData,\n GetAccountCoinsDataResponse,\n GetAccountCollectionsWithOwnedTokenResponse,\n GetAccountOwnedObjectsResponse,\n GetAccountOwnedTokensFromCollectionResponse,\n GetAccountOwnedTokensQueryResponse,\n HexInput,\n LedgerVersion,\n MoveModuleBytecode,\n MoveResource,\n MoveResourceType,\n OrderBy,\n PaginationArgs,\n TokenStandard,\n TransactionResponse,\n} from \"../types\";\nimport {\n GetAccountCoinsCountQuery,\n GetAccountCoinsDataQuery,\n GetAccountCollectionsWithOwnedTokensQuery,\n GetAccountOwnedObjectsQuery,\n GetAccountOwnedTokensFromCollectionQuery,\n GetAccountOwnedTokensQuery,\n GetAccountTokensCountQuery,\n GetAccountTransactionsCountQuery,\n} from \"../types/generated/operations\";\nimport {\n GetAccountCoinsCount,\n GetAccountCoinsData,\n GetAccountCollectionsWithOwnedTokens,\n GetAccountOwnedObjects,\n GetAccountOwnedTokens,\n GetAccountOwnedTokensFromCollection,\n GetAccountTokensCount,\n GetAccountTransactionsCount,\n} from \"../types/generated/queries\";\nimport { memoizeAsync } from \"../utils/memoize\";\n\nexport async function getInfo(args: { aptosConfig: AptosConfig; accountAddress: HexInput }): Promise<AccountData> {\n const { aptosConfig, accountAddress } = args;\n const { data } = await getAptosFullNode<{}, AccountData>({\n aptosConfig,\n originMethod: \"getInfo\",\n path: `accounts/${AccountAddress.fromHexInput(accountAddress).toString()}`,\n });\n return data;\n}\n\nexport async function getModules(args: {\n aptosConfig: AptosConfig;\n accountAddress: HexInput;\n options?: PaginationArgs & LedgerVersion;\n}): Promise<MoveModuleBytecode[]> {\n const { aptosConfig, accountAddress, options } = args;\n return paginateWithCursor<{}, MoveModuleBytecode[]>({\n aptosConfig,\n originMethod: \"getModules\",\n path: `accounts/${AccountAddress.fromHexInput(accountAddress).toString()}/modules`,\n params: {\n ledger_version: options?.ledgerVersion,\n start: options?.offset,\n limit: options?.limit ?? 1000,\n },\n });\n}\n\n/**\n * Queries for a move module given account address and module name\n *\n * @param args.accountAddress Hex-encoded 32 byte Aptos account address\n * @param args.moduleName The name of the module\n * @param args.query.ledgerVersion Specifies ledger version of transactions. By default, latest version will be used\n * @returns The move module.\n */\nexport async function getModule(args: {\n aptosConfig: AptosConfig;\n accountAddress: HexInput;\n moduleName: string;\n options?: LedgerVersion;\n}): Promise<MoveModuleBytecode> {\n // We don't memoize the account module by ledger version, as it's not a common use case, this would be handled\n // by the developer directly\n if (args.options?.ledgerVersion !== undefined) {\n return getModuleInner(args);\n }\n\n return memoizeAsync(\n async () => getModuleInner(args),\n `module-${args.accountAddress}-${args.moduleName}`,\n 1000 * 60 * 5, // 5 minutes\n )();\n}\n\nasync function getModuleInner(args: {\n aptosConfig: AptosConfig;\n accountAddress: HexInput;\n moduleName: string;\n options?: LedgerVersion;\n}): Promise<MoveModuleBytecode> {\n const { aptosConfig, accountAddress, moduleName, options } = args;\n\n const { data } = await getAptosFullNode<{}, MoveModuleBytecode>({\n aptosConfig,\n originMethod: \"getModule\",\n path: `accounts/${AccountAddress.fromHexInput(accountAddress).toString()}/module/${moduleName}`,\n params: { ledger_version: options?.ledgerVersion },\n });\n return data;\n}\n\nexport async function getTransactions(args: {\n aptosConfig: AptosConfig;\n accountAddress: HexInput;\n options?: PaginationArgs;\n}): Promise<TransactionResponse[]> {\n const { aptosConfig, accountAddress, options } = args;\n return paginateWithCursor<{}, TransactionResponse[]>({\n aptosConfig,\n originMethod: \"getTransactions\",\n path: `accounts/${AccountAddress.fromHexInput(accountAddress).toString()}/transactions`,\n params: { start: options?.offset, limit: options?.limit },\n });\n}\n\nexport async function getResources(args: {\n aptosConfig: AptosConfig;\n accountAddress: HexInput;\n options?: PaginationArgs & LedgerVersion;\n}): Promise<MoveResource[]> {\n const { aptosConfig, accountAddress, options } = args;\n return paginateWithCursor<{}, MoveResource[]>({\n aptosConfig,\n originMethod: \"getResources\",\n path: `accounts/${AccountAddress.fromHexInput(accountAddress).toString()}/resources`,\n params: {\n ledger_version: options?.ledgerVersion,\n start: options?.offset,\n limit: options?.limit ?? 999,\n },\n });\n}\n\nexport async function getResource(args: {\n aptosConfig: AptosConfig;\n accountAddress: HexInput;\n resourceType: MoveResourceType;\n options?: LedgerVersion;\n}): Promise<MoveResource> {\n const { aptosConfig, accountAddress, resourceType, options } = args;\n const { data } = await getAptosFullNode<{}, MoveResource>({\n aptosConfig,\n originMethod: \"getResource\",\n path: `accounts/${AccountAddress.fromHexInput(accountAddress).toString()}/resource/${resourceType}`,\n params: { ledger_version: options?.ledgerVersion },\n });\n return data;\n}\n\nexport async function lookupOriginalAccountAddress(args: {\n aptosConfig: AptosConfig;\n authenticationKey: HexInput;\n options?: LedgerVersion;\n}): Promise<AccountAddress> {\n const { aptosConfig, authenticationKey, options } = args;\n const resource = await getResource({\n aptosConfig,\n accountAddress: \"0x1\",\n resourceType: \"0x1::account::OriginatingAddress\",\n options,\n });\n\n const {\n address_map: { handle },\n } = resource.data as any;\n\n // If the address is not found in the address map, which means its not rotated\n // then return the address as is\n try {\n const originalAddress = await getTableItem({\n aptosConfig,\n handle,\n data: {\n key: Hex.fromHexInput(authenticationKey).toString(),\n key_type: \"address\",\n value_type: \"address\",\n },\n options,\n });\n\n return AccountAddress.fromHexInput(originalAddress);\n } catch (err) {\n if (err instanceof AptosApiError && err.data.error_code === \"table_item_not_found\") {\n return AccountAddress.fromHexInput(authenticationKey);\n }\n\n throw err;\n }\n}\n\nexport async function getAccountTokensCount(args: {\n aptosConfig: AptosConfig;\n accountAddress: HexInput;\n}): Promise<number> {\n const { aptosConfig, accountAddress } = args;\n\n const address = AccountAddress.fromHexInput(accountAddress).toString();\n\n const whereCondition: any = {\n owner_address: { _eq: address },\n amount: { _gt: \"0\" },\n };\n\n const graphqlQuery = {\n query: GetAccountTokensCount,\n variables: { where_condition: whereCondition },\n };\n\n const data = await queryIndexer<GetAccountTokensCountQuery>({\n aptosConfig,\n query: graphqlQuery,\n originMethod: \"getAccountTokensCount\",\n });\n if (!data.current_token_ownerships_v2_aggregate.aggregate) {\n throw Error(\"Failed to get the count of account tokens\");\n }\n return data.current_token_ownerships_v2_aggregate.aggregate.count;\n}\n\nexport async function getAccountOwnedTokens(args: {\n aptosConfig: AptosConfig;\n accountAddress: HexInput;\n options?: {\n tokenStandard?: TokenStandard;\n pagination?: PaginationArgs;\n orderBy?: OrderBy<GetAccountOwnedTokensQueryResponse[0]>;\n };\n}): Promise<GetAccountOwnedTokensQueryResponse> {\n const { aptosConfig, accountAddress, options } = args;\n const address = AccountAddress.fromHexInput(accountAddress).toString();\n\n const whereCondition: any = {\n owner_address: { _eq: address },\n amount: { _gt: 0 },\n };\n\n if (options?.tokenStandard) {\n whereCondition.token_standard = { _eq: options?.tokenStandard };\n }\n\n const graphqlQuery = {\n query: GetAccountOwnedTokens,\n variables: {\n where_condition: whereCondition,\n offset: options?.pagination?.offset,\n limit: options?.pagination?.limit,\n order_by: options?.orderBy,\n },\n };\n\n const data = await queryIndexer<GetAccountOwnedTokensQuery>({\n aptosConfig,\n query: graphqlQuery,\n originMethod: \"getAccountOwnedTokens\",\n });\n\n return data.current_token_ownerships_v2;\n}\n\nexport async function getAccountOwnedTokensFromCollectionAddress(args: {\n aptosConfig: AptosConfig;\n accountAddress: HexInput;\n collectionAddress: HexInput;\n options?: {\n tokenStandard?: TokenStandard;\n pagination?: PaginationArgs;\n orderBy?: OrderBy<GetAccountOwnedTokensFromCollectionResponse[0]>;\n };\n}): Promise<GetAccountOwnedTokensFromCollectionResponse> {\n const { aptosConfig, accountAddress, collectionAddress, options } = args;\n const ownerAddress = AccountAddress.fromHexInput(accountAddress).toString();\n const collAddress = Hex.fromHexInput(collectionAddress).toString();\n\n const whereCondition: any = {\n owner_address: { _eq: ownerAddress },\n current_token_data: { collection_id: { _eq: collAddress } },\n amount: { _gt: 0 },\n };\n\n if (options?.tokenStandard) {\n whereCondition.token_standard = { _eq: options?.tokenStandard };\n }\n\n const graphqlQuery = {\n query: GetAccountOwnedTokensFromCollection,\n variables: {\n where_condition: whereCondition,\n offset: options?.pagination?.offset,\n limit: options?.pagination?.limit,\n order_by: options?.orderBy,\n },\n };\n\n const data = await queryIndexer<GetAccountOwnedTokensFromCollectionQuery>({\n aptosConfig,\n query: graphqlQuery,\n originMethod: \"getAccountOwnedTokensFromCollectionAddress\",\n });\n\n return data.current_token_ownerships_v2;\n}\n\nexport async function getAccountCollectionsWithOwnedTokens(args: {\n aptosConfig: AptosConfig;\n accountAddress: HexInput;\n options?: {\n tokenStandard?: TokenStandard;\n pagination?: PaginationArgs;\n orderBy?: OrderBy<GetAccountCollectionsWithOwnedTokenResponse[0]>;\n };\n}): Promise<GetAccountCollectionsWithOwnedTokenResponse> {\n const { aptosConfig, accountAddress, options } = args;\n const address = AccountAddress.fromHexInput(accountAddress).toString();\n\n const whereCondition: any = {\n owner_address: { _eq: address },\n amount: { _gt: 0 },\n };\n\n if (options?.tokenStandard) {\n whereCondition.current_collection = {\n token_standard: { _eq: options?.tokenStandard },\n };\n }\n\n const graphqlQuery = {\n query: GetAccountCollectionsWithOwnedTokens,\n variables: {\n where_condition: whereCondition,\n offset: options?.pagination?.offset,\n limit: options?.pagination?.limit,\n order_by: options?.orderBy,\n },\n };\n\n const data = await queryIndexer<GetAccountCollectionsWithOwnedTokensQuery>({\n aptosConfig,\n query: graphqlQuery,\n originMethod: \"getAccountCollectionsWithOwnedTokens\",\n });\n\n return data.current_collection_ownership_v2_view;\n}\n\nexport async function getAccountTransactionsCount(args: {\n aptosConfig: AptosConfig;\n accountAddress: HexInput;\n}): Promise<number> {\n const { aptosConfig, accountAddress } = args;\n\n const address = AccountAddress.fromHexInput(accountAddress).toString();\n\n const graphqlQuery = {\n query: GetAccountTransactionsCount,\n variables: { address },\n };\n\n const data = await queryIndexer<GetAccountTransactionsCountQuery>({\n aptosConfig,\n query: graphqlQuery,\n originMethod: \"getAccountTransactionsCount\",\n });\n\n if (!data.account_transactions_aggregate.aggregate) {\n throw Error(\"Failed to get the count of account transactions\");\n }\n\n return data.account_transactions_aggregate.aggregate.count;\n}\n\nexport async function getAccountCoinsData(args: {\n aptosConfig: AptosConfig;\n accountAddress: HexInput;\n options?: {\n pagination?: PaginationArgs;\n orderBy?: OrderBy<GetAccountCoinsDataResponse[0]>;\n };\n}): Promise<GetAccountCoinsDataResponse> {\n const { aptosConfig, accountAddress, options } = args;\n const address = AccountAddress.fromHexInput(accountAddress).toString();\n\n const whereCondition: any = {\n owner_address: { _eq: address },\n };\n\n const graphqlQuery = {\n query: GetAccountCoinsData,\n variables: {\n where_condition: whereCondition,\n offset: options?.pagination?.offset,\n limit: options?.pagination?.limit,\n order_by: options?.orderBy,\n },\n };\n\n const data = await queryIndexer<GetAccountCoinsDataQuery>({\n aptosConfig,\n query: graphqlQuery,\n originMethod: \"getAccountCoinsData\",\n });\n\n return data.current_fungible_asset_balances;\n}\n\nexport async function getAccountCoinsCount(args: {\n aptosConfig: AptosConfig;\n accountAddress: HexInput;\n}): Promise<number> {\n const { aptosConfig, accountAddress } = args;\n const address = AccountAddress.fromHexInput(accountAddress).toString();\n\n const graphqlQuery = {\n query: GetAccountCoinsCount,\n variables: { address },\n };\n\n const data = await queryIndexer<GetAccountCoinsCountQuery>({\n aptosConfig,\n query: graphqlQuery,\n originMethod: \"getAccountCoinsCount\",\n });\n\n if (!data.current_fungible_asset_balances_aggregate.aggregate) {\n throw Error(\"Failed to get the count of account coins\");\n }\n\n return data.current_fungible_asset_balances_aggregate.aggregate.count;\n}\n\nexport async function getAccountOwnedObjects(args: {\n aptosConfig: AptosConfig;\n accountAddress: HexInput;\n options?: {\n pagination?: PaginationArgs;\n orderBy?: OrderBy<GetAccountOwnedObjectsResponse[0]>;\n };\n}): Promise<GetAccountOwnedObjectsResponse> {\n const { aptosConfig, accountAddress, options } = args;\n const address = AccountAddress.fromHexInput(accountAddress).toString();\n\n const whereCondition: any = {\n owner_address: { _eq: address },\n };\n const graphqlQuery = {\n query: GetAccountOwnedObjects,\n variables: {\n where_condition: whereCondition,\n offset: options?.pagination?.offset,\n limit: options?.pagination?.limit,\n order_by: options?.orderBy,\n },\n };\n const data = await queryIndexer<GetAccountOwnedObjectsQuery>({\n aptosConfig,\n query: graphqlQuery,\n originMethod: \"getAccountOwnedObjects\",\n });\n\n return data.current_objects;\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AptosConfig } from \"./aptosConfig\";\nimport { AccountAddress } from \"../core\";\nimport {\n AccountData,\n GetAccountCoinsDataResponse,\n GetAccountCollectionsWithOwnedTokenResponse,\n GetAccountOwnedObjectsResponse,\n GetAccountOwnedTokensFromCollectionResponse,\n GetAccountOwnedTokensQueryResponse,\n HexInput,\n LedgerVersion,\n MoveModuleBytecode,\n MoveResource,\n MoveResourceType,\n OrderBy,\n PaginationArgs,\n TokenStandard,\n TransactionResponse,\n} from \"../types\";\nimport {\n getAccountCoinsCount,\n getAccountCoinsData,\n getAccountCollectionsWithOwnedTokens,\n getAccountOwnedObjects,\n getAccountOwnedTokens,\n getAccountOwnedTokensFromCollectionAddress,\n getAccountTokensCount,\n getAccountTransactionsCount,\n getInfo,\n getModule,\n getModules,\n getResource,\n getResources,\n getTransactions,\n lookupOriginalAccountAddress,\n} from \"../internal/account\";\n\n/**\n * A class to query all `Account` related queries on Aptos.\n */\nexport class Account {\n readonly config: AptosConfig;\n\n constructor(config: AptosConfig) {\n this.config = config;\n }\n\n /**\n * Queries the current state for an Aptos account given its account address\n *\n * @param args.accountAddress Aptos account address\n *\n * @returns The account data\n *\n * @example An example of the returned account\n * ```\n * {\n * sequence_number: \"1\",\n * authentication_key: \"0x5307b5f4bc67829097a8ba9b43dba3b88261eeccd1f709d9bde240fc100fbb69\"\n * }\n * ```\n */\n async getAccountInfo(args: { accountAddress: HexInput }): Promise<AccountData> {\n return getInfo({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Queries for all modules in an account given an account address\n *\n * Note: In order to get all account modules, this function may call the API\n * multiple times as it auto paginates.\n *\n * @param args.accountAddress Aptos account address\n * @param args.options.offset The number module to start returning results from\n * @param args.options.limit The number of results to return\n * @param args.options.ledgerVersion The ledger version to query, if not provided it will get the latest version\n *\n * @returns Account modules\n */\n\n async getAccountModules(args: {\n accountAddress: HexInput;\n options?: PaginationArgs & LedgerVersion;\n }): Promise<MoveModuleBytecode[]> {\n return getModules({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Queries for a specific account module given account address and module name\n *\n * @param args.accountAddress Aptos account address\n * @param args.moduleName The name of the module\n * @param args.options.ledgerVersion The ledger version to query, if not provided it will get the latest version\n *\n * @returns Account module\n *\n * @example An example of an account module\n * ```\n * {\n * bytecode: \"0xa11ceb0b0600000006010002030206050807070f0d081c200\",\n * abi: { address: \"0x1\" }\n * }\n * ```\n */\n async getAccountModule(args: {\n accountAddress: HexInput;\n moduleName: string;\n options?: LedgerVersion;\n }): Promise<MoveModuleBytecode> {\n return getModule({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Queries account transactions given an account address\n *\n * Note: In order to get all account transactions, this function may call the API\n * multiple times as it auto paginates.\n *\n * @param args.accountAddress Aptos account address\n * @param args.options.offset The number transaction to start returning results from\n * @param args.options.limit The number of results to return\n *\n * @returns The account transactions\n */\n async getAccountTransactions(args: {\n accountAddress: HexInput;\n options?: PaginationArgs;\n }): Promise<TransactionResponse[]> {\n return getTransactions({\n aptosConfig: this.config,\n ...args,\n });\n }\n\n /**\n * Queries all account resources given an account address\n *\n * Note: In order to get all account resources, this function may call the API\n * multiple times as it auto paginates.\n *\n * @param args.accountAddress Aptos account address\n * @param args.options.offset The number resource to start returning results from\n * @param args.options.limit The number of results to return\n * @param args.options.ledgerVersion The ledger version to query, if not provided it will get the latest version\n * @returns Account resources\n */\n async getAccountResources(args: {\n accountAddress: HexInput;\n options?: PaginationArgs & LedgerVersion;\n }): Promise<MoveResource[]> {\n return getResources({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Queries a specific account resource given account address and resource type\n *\n * @param args.accountAddress Aptos account address\n * @param args.resourceType String representation of an on-chain Move struct type, i.e \"0x1::aptos_coin::AptosCoin\"\n * @param args.options.ledgerVersion The ledger version to query, if not provided it will get the latest version\n *\n * @returns Account resource\n *\n * @example An example of an account resource\n * ```\n * {\n * type: \"0x1::aptos_coin::AptosCoin\",\n * data: { value: 6 }\n * }\n * ```\n */\n async getAccountResource(args: {\n accountAddress: HexInput;\n resourceType: MoveResourceType;\n options?: LedgerVersion;\n }): Promise<MoveResource> {\n return getResource({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Looks up the account address for a given authentication key\n *\n * This handles both if the account's authentication key has been rotated or not.\n *\n * @param args.authenticationKey The authentication key\n * @param args.options.ledgerVersion The ledger version to query, if not provided it will get the latest version\n * @returns Promise<AccountAddress> The accountAddress associated with the authentication key\n */\n async lookupOriginalAccountAddress(args: {\n authenticationKey: HexInput;\n options?: LedgerVersion;\n }): Promise<AccountAddress> {\n return lookupOriginalAccountAddress({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Queries the current count of tokens owned by an account\n *\n * @param args.accountAddress The account address\n * @returns Current count of tokens owned by the account\n */\n async getAccountTokensCount(args: { accountAddress: HexInput }): Promise<number> {\n return getAccountTokensCount({\n aptosConfig: this.config,\n ...args,\n });\n }\n\n /**\n * Queries the account's current owned tokens.\n *\n * This query returns all tokens (v1 and v2 standards) an account owns, including NFTs, fungible, soulbound, etc.\n * If you want to get only the token from a specific standard, you can pass an optional tokenStandard param\n *\n * @param args.accountAddress The account address we want to get the tokens for\n * @param args.options.tokenStandard The NFT standard to query for\n * @param args.options.pagination.offset The number token to start returning results from\n * @param args.options.pagination.limit The number of results to return\n * @param args.options.orderBy The order to sort the tokens by\n * @returns Tokens array with the token data\n */\n async getAccountOwnedTokens(args: {\n accountAddress: HexInput;\n options?: {\n tokenStandard?: TokenStandard;\n pagination?: PaginationArgs;\n orderBy?: OrderBy<GetAccountOwnedTokensQueryResponse[0]>;\n };\n }): Promise<GetAccountOwnedTokensQueryResponse> {\n return getAccountOwnedTokens({\n aptosConfig: this.config,\n ...args,\n });\n }\n\n /**\n * Queries all current tokens of a specific collection that an account owns by the collection address\n *\n * This query returns all tokens (v1 and v2 standards) an account owns, including NFTs, fungible, soulbound, etc.\n * If you want to get only the token from a specific standard, you can pass an optional tokenStandard param\n *\n * @param args.accountAddress The account address we want to get the tokens for\n * @param args.collectionAddress The address of the collection being queried\n * @param args.options.tokenStandard The NFT standard to query for\n * @param args.options.pagination.offset The number token to start returning results from\n * @param args.options.pagination.limit The number of results to return\n * @param args.options.orderBy The order to sort the tokens by\n * @returns Tokens array with the token data\n */\n async getAccountOwnedTokensFromCollectionAddress(args: {\n accountAddress: HexInput;\n collectionAddress: HexInput;\n options?: {\n tokenStandard?: TokenStandard;\n pagination?: PaginationArgs;\n orderBy?: OrderBy<GetAccountOwnedTokensFromCollectionResponse[0]>;\n };\n }): Promise<GetAccountOwnedTokensFromCollectionResponse> {\n return getAccountOwnedTokensFromCollectionAddress({\n aptosConfig: this.config,\n ...args,\n });\n }\n\n /**\n * Queries for all collections that an account currently has tokens for.\n *\n * This query returns all tokens (v1 and v2 standards) an account owns, including NFTs, fungible, soulbound, etc.\n * If you want to get only the token from a specific standard, you can pass an optional tokenStandard param\n *\n * @param args.accountAddress The account address we want to get the collections for\n * @param args.options.tokenStandard The NFT standard to query for\n * @param args.options.pagination.offset The number collection to start returning results from\n * @param args.options.pagination.limit The number of results to return\n * @param args.options.orderBy The order to sort the tokens by\n * @returns Collections array with the collections data\n */\n async getAccountCollectionsWithOwnedTokens(args: {\n accountAddress: HexInput;\n options?: {\n tokenStandard?: TokenStandard;\n pagination?: PaginationArgs;\n orderBy?: OrderBy<GetAccountCollectionsWithOwnedTokenResponse[0]>;\n };\n }): Promise<GetAccountCollectionsWithOwnedTokenResponse> {\n return getAccountCollectionsWithOwnedTokens({\n aptosConfig: this.config,\n ...args,\n });\n }\n\n /**\n * Queries the current count of transactions submitted by an account\n *\n * @param args.accountAddress The account address we want to get the total count for\n * @returns Current count of transactions made by an account\n */\n async getAccountTransactionsCount(args: { accountAddress: HexInput }): Promise<number> {\n return getAccountTransactionsCount({\n aptosConfig: this.config,\n ...args,\n });\n }\n\n /**\n * Queries an account's coins data\n *\n * @param args.accountAddress The account address we want to get the coins data for\n * @param args.options.pagination.offset The number coin to start returning results from\n * @param args.options.pagination.limit The number of results to return\n * @param args.options.orderBy The order to sort the coins by\n * @returns Array with the coins data\n */\n async getAccountCoinsData(args: {\n accountAddress: HexInput;\n options?: {\n pagination?: PaginationArgs;\n orderBy?: OrderBy<GetAccountCoinsDataResponse[0]>;\n };\n }): Promise<GetAccountCoinsDataResponse> {\n return getAccountCoinsData({\n aptosConfig: this.config,\n ...args,\n });\n }\n\n /**\n * Queries the current count of an account's coins aggregated\n *\n * @param args.accountAddress The account address we want to get the total count for\n * @returns Current count of the aggregated count of all account's coins\n */\n async getAccountCoinsCount(args: { accountAddress: HexInput }): Promise<number> {\n return getAccountCoinsCount({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Queries an account's owned objects\n *\n * @param args.accountAddress The account address we want to get the objects for\n * @param args.options.pagination.offset The number coin to start returning results from\n * @param args.options.pagination.limit The number of results to return\n * @param args.options.orderBy The order to sort the coins by\n * @returns Objects array with the object data\n */\n async getAccountOwnedObjects(args: {\n accountAddress: HexInput;\n options?: {\n pagination?: PaginationArgs;\n orderBy?: OrderBy<GetAccountOwnedObjectsResponse[0]>;\n };\n }): Promise<GetAccountOwnedObjectsResponse> {\n return getAccountOwnedObjects({\n aptosConfig: this.config,\n ...args,\n });\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AptosSettings, ClientConfig } from \"../types\";\nimport { NetworkToNodeAPI, NetworkToFaucetAPI, NetworkToIndexerAPI, Network } from \"../utils/apiEndpoints\";\nimport { AptosApiType, DEFAULT_NETWORK } from \"../utils/const\";\n\n/**\n * This class holds the config information for the SDK client instance.\n */\nexport class AptosConfig {\n /** The Network that this SDK is associated with. */\n readonly network: Network;\n\n /**\n * The optional hardcoded fullnode URL to send requests to instead of using the network\n */\n readonly fullnode?: string;\n\n /**\n * The optional hardcoded faucet URL to send requests to instead of using the network\n */\n readonly faucet?: string;\n\n /**\n * The optional hardcoded indexer URL to send requests to instead of using the network\n */\n readonly indexer?: string;\n\n readonly clientConfig?: ClientConfig;\n\n constructor(settings?: AptosSettings) {\n this.network = settings?.network ?? DEFAULT_NETWORK;\n this.fullnode = settings?.fullnode;\n this.faucet = settings?.faucet;\n this.indexer = settings?.indexer;\n this.clientConfig = settings?.clientConfig ?? {};\n }\n\n /**\n * Returns the URL endpoint to send the request to.\n * If a custom URL was provided in the config, that URL is returned.\n * If a custom URL was provided but not URL endpoints, an error is thrown.\n * Otherwise, the URL endpoint is derived from the network.\n *\n * @param apiType - The type of Aptos API to get the URL for.\n *\n * @internal\n */\n getRequestUrl(apiType: AptosApiType): string {\n switch (apiType) {\n case AptosApiType.FULLNODE:\n if (this.fullnode !== undefined) return this.fullnode;\n if (this.network === Network.CUSTOM) throw new Error(\"Please provide a custom full node url\");\n return NetworkToNodeAPI[this.network];\n case AptosApiType.FAUCET:\n if (this.faucet !== undefined) return this.faucet;\n if (this.network === Network.CUSTOM) throw new Error(\"Please provide a custom faucet url\");\n return NetworkToFaucetAPI[this.network];\n case AptosApiType.INDEXER:\n if (this.indexer !== undefined) return this.indexer;\n if (this.network === Network.CUSTOM) throw new Error(\"Please provide a custom indexer url\");\n return NetworkToIndexerAPI[this.network];\n default:\n throw Error(`apiType ${apiType} is not supported`);\n }\n }\n\n /**\n * Checks if the URL is a known indexer endpoint\n *\n * @internal\n * */\n isIndexerRequest(url: string): boolean {\n return NetworkToIndexerAPI[this.network] === url;\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Deserializer } from \"../../bcs/deserializer\";\nimport { Serializable, Serializer } from \"../../bcs/serializer\";\n\n/**\n * Representation of an Identifier that can serialized and deserialized.\n * We use Identifier to represent the module \"name\" in \"ModuleId\" and\n * the \"function name\" in \"EntryFunction\"\n */\nexport class Identifier extends Serializable {\n public identifier: string;\n\n constructor(identifier: string) {\n super();\n this.identifier = identifier;\n }\n\n public serialize(serializer: Serializer): void {\n serializer.serializeStr(this.identifier);\n }\n\n static deserialize(deserializer: Deserializer): Identifier {\n const identifier = deserializer.deserializeStr();\n return new Identifier(identifier);\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable class-methods-use-this */\n/* eslint-disable max-classes-per-file */\nimport { Deserializer } from \"../../bcs/deserializer\";\nimport { Serializable, Serializer } from \"../../bcs/serializer\";\nimport { AccountAddress } from \"../../core\";\nimport { Identifier } from \"../instances/identifier\";\nimport { TypeTagVariants } from \"../../types\";\n\nexport abstract class TypeTag extends Serializable {\n abstract serialize(serializer: Serializer): void;\n\n static deserialize(deserializer: Deserializer): TypeTag {\n const index = deserializer.deserializeUleb128AsU32();\n switch (index) {\n case TypeTagVariants.Bool:\n return TypeTagBool.load(deserializer);\n case TypeTagVariants.U8:\n return TypeTagU8.load(deserializer);\n case TypeTagVariants.U64:\n return TypeTagU64.load(deserializer);\n case TypeTagVariants.U128:\n return TypeTagU128.load(deserializer);\n case TypeTagVariants.Address:\n return TypeTagAddress.load(deserializer);\n case TypeTagVariants.Signer:\n return TypeTagSigner.load(deserializer);\n case TypeTagVariants.Vector:\n return TypeTagVector.load(deserializer);\n case TypeTagVariants.Struct:\n return TypeTagStruct.load(deserializer);\n case TypeTagVariants.U16:\n return TypeTagU16.load(deserializer);\n case TypeTagVariants.U32:\n return TypeTagU32.load(deserializer);\n case TypeTagVariants.U256:\n return TypeTagU256.load(deserializer);\n default:\n throw new Error(`Unknown variant index for TypeTag: ${index}`);\n }\n }\n}\n\nexport class TypeTagBool extends TypeTag {\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TypeTagVariants.Bool);\n }\n\n static load(_deserializer: Deserializer): TypeTagBool {\n return new TypeTagBool();\n }\n}\n\nexport class TypeTagU8 extends TypeTag {\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TypeTagVariants.U8);\n }\n\n static load(_deserializer: Deserializer): TypeTagU8 {\n return new TypeTagU8();\n }\n}\n\nexport class TypeTagU16 extends TypeTag {\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TypeTagVariants.U16);\n }\n\n static load(_deserializer: Deserializer): TypeTagU16 {\n return new TypeTagU16();\n }\n}\n\nexport class TypeTagU32 extends TypeTag {\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TypeTagVariants.U32);\n }\n\n static load(_deserializer: Deserializer): TypeTagU32 {\n return new TypeTagU32();\n }\n}\n\nexport class TypeTagU64 extends TypeTag {\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TypeTagVariants.U64);\n }\n\n static load(_deserializer: Deserializer): TypeTagU64 {\n return new TypeTagU64();\n }\n}\n\nexport class TypeTagU128 extends TypeTag {\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TypeTagVariants.U128);\n }\n\n static load(_deserializer: Deserializer): TypeTagU128 {\n return new TypeTagU128();\n }\n}\n\nexport class TypeTagU256 extends TypeTag {\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TypeTagVariants.U256);\n }\n\n static load(_deserializer: Deserializer): TypeTagU256 {\n return new TypeTagU256();\n }\n}\n\nexport class TypeTagAddress extends TypeTag {\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TypeTagVariants.Address);\n }\n\n static load(_deserializer: Deserializer): TypeTagAddress {\n return new TypeTagAddress();\n }\n}\n\nexport class TypeTagSigner extends TypeTag {\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TypeTagVariants.Signer);\n }\n\n static load(_deserializer: Deserializer): TypeTagSigner {\n return new TypeTagSigner();\n }\n}\n\nexport class TypeTagVector extends TypeTag {\n constructor(public readonly value: TypeTag) {\n super();\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TypeTagVariants.Vector);\n this.value.serialize(serializer);\n }\n\n static load(deserializer: Deserializer): TypeTagVector {\n const value = TypeTag.deserialize(deserializer);\n return new TypeTagVector(value);\n }\n}\n\nexport class TypeTagStruct extends TypeTag {\n constructor(public readonly value: StructTag) {\n super();\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TypeTagVariants.Struct);\n this.value.serialize(serializer);\n }\n\n static load(deserializer: Deserializer): TypeTagStruct {\n const value = StructTag.deserialize(deserializer);\n return new TypeTagStruct(value);\n }\n\n /**\n * This function checks if the TypeTagStruct is a Move String TypeTag.\n * In Move, a string is represented as the String struct from string.move, deployed at `0x1`,\n * meaning it has the following properties:\n * - address: 0x1\n * - module_name: \"string\"\n * - name: \"String\"\n *\n * @returns true if the StructTag is a String type tag, false otherwise\n */\n isStringTypeTag(): boolean {\n return (\n this.value.module_name.identifier === \"string\" &&\n this.value.name.identifier === \"String\" &&\n this.value.address.toString() === AccountAddress.ONE.toString()\n );\n }\n}\n\nexport class StructTag extends Serializable {\n public readonly address: AccountAddress;\n\n public readonly module_name: Identifier;\n\n public readonly name: Identifier;\n\n public readonly type_args: Array<TypeTag>;\n\n constructor(address: AccountAddress, module_name: Identifier, name: Identifier, type_args: Array<TypeTag>) {\n super();\n this.address = address;\n this.module_name = module_name;\n this.name = name;\n this.type_args = type_args;\n }\n\n /**\n * Converts a string literal to a StructTag\n * @param structTag String literal in format \"AccountAddress::module_name::ResourceName\",\n * e.g. \"0x1::aptos_coin::AptosCoin\"\n * @returns\n */\n static fromString(structTag: string): StructTag {\n // Use the TypeTagParser to parse the string literal into a TypeTagStruct\n const typeTagStruct = new TypeTagParser(structTag).parseTypeTag() as TypeTagStruct;\n\n // Convert and return as a StructTag\n return new StructTag(\n typeTagStruct.value.address,\n typeTagStruct.value.module_name,\n typeTagStruct.value.name,\n typeTagStruct.value.type_args,\n );\n }\n\n serialize(serializer: Serializer): void {\n serializer.serialize(this.address);\n serializer.serialize(this.module_name);\n serializer.serialize(this.name);\n serializer.serializeVector(this.type_args);\n }\n\n static deserialize(deserializer: Deserializer): StructTag {\n const address = AccountAddress.deserialize(deserializer);\n const moduleName = Identifier.deserialize(deserializer);\n const name = Identifier.deserialize(deserializer);\n const typeArgs = deserializer.deserializeVector(TypeTag);\n return new StructTag(address, moduleName, name, typeArgs);\n }\n}\n\nexport const stringStructTag = () =>\n new StructTag(AccountAddress.ONE, new Identifier(\"string\"), new Identifier(\"String\"), []);\n\nexport function optionStructTag(typeArg: TypeTag): StructTag {\n return new StructTag(AccountAddress.ONE, new Identifier(\"option\"), new Identifier(\"Option\"), [typeArg]);\n}\n\nexport function objectStructTag(typeArg: TypeTag): StructTag {\n return new StructTag(AccountAddress.ONE, new Identifier(\"object\"), new Identifier(\"Object\"), [typeArg]);\n}\n\n/**\n * Parser to parse a type tag string\n */\nexport class TypeTagParser {\n private readonly tokens: Token[];\n\n private readonly typeTags: string[] = [];\n\n constructor(tagStr: string, typeTags?: string[]) {\n this.tokens = tokenize(tagStr);\n this.typeTags = typeTags || [];\n }\n\n private consume(targetToken: string) {\n const token = this.tokens.shift();\n if (!token || token[1] !== targetToken) {\n bail(\"Invalid type tag.\");\n }\n }\n\n /**\n * Consumes all of an unused generic field, mostly applicable to object\n *\n * Note: This is recursive. it can be problematic if there's bad input\n * @private\n */\n private consumeWholeGeneric() {\n this.consume(\"<\");\n while (this.tokens[0][1] !== \">\") {\n // If it is nested, we have to consume another nested generic\n if (this.tokens[0][1] === \"<\") {\n this.consumeWholeGeneric();\n } else {\n this.tokens.shift();\n }\n }\n this.consume(\">\");\n }\n\n private parseCommaList(endToken: string, allowTrailingComma: boolean): TypeTag[] {\n const res: TypeTag[] = [];\n if (this.tokens.length <= 0) {\n bail(\"Invalid type tag.\");\n }\n\n while (this.tokens[0][1] !== endToken) {\n res.push(this.parseTypeTag());\n\n if (this.tokens.length > 0 && this.tokens[0][1] === endToken) {\n break;\n }\n\n this.consume(\",\");\n if (this.tokens.length > 0 && this.tokens[0][1] === endToken && allowTrailingComma) {\n break;\n }\n\n if (this.tokens.length <= 0) {\n bail(\"Invalid type tag.\");\n }\n }\n return res;\n }\n\n parseTypeTag(): TypeTag {\n if (this.tokens.length === 0) {\n bail(\"Invalid type tag.\");\n }\n\n // Pop left most element out\n const [tokenTy, tokenVal] = this.tokens.shift()!;\n\n if (tokenVal === \"u8\") {\n return new TypeTagU8();\n }\n if (tokenVal === \"u16\") {\n return new TypeTagU16();\n }\n if (tokenVal === \"u32\") {\n return new TypeTagU32();\n }\n if (tokenVal === \"u64\") {\n return new TypeTagU64();\n }\n if (tokenVal === \"u128\") {\n return new TypeTagU128();\n }\n if (tokenVal === \"u256\") {\n return new TypeTagU256();\n }\n if (tokenVal === \"bool\") {\n return new TypeTagBool();\n }\n if (tokenVal === \"address\") {\n return new TypeTagAddress();\n }\n if (tokenVal === \"vector\") {\n this.consume(\"<\");\n const res = this.parseTypeTag();\n this.consume(\">\");\n return new TypeTagVector(res);\n }\n if (tokenVal === \"string\") {\n return new TypeTagStruct(stringStructTag());\n }\n if (tokenTy === \"IDENT\" && (tokenVal.startsWith(\"0x\") || tokenVal.startsWith(\"0X\"))) {\n const address = AccountAddress.fromHexInput(tokenVal);\n this.consume(\"::\");\n const [moduleTokenTy, module] = this.tokens.shift()!;\n if (moduleTokenTy !== \"IDENT\") {\n bail(\"Invalid type tag.\");\n }\n this.consume(\"::\");\n const [nameTokenTy, name] = this.tokens.shift()!;\n if (nameTokenTy !== \"IDENT\") {\n bail(\"Invalid type tag.\");\n }\n\n // Objects can contain either concrete types e.g. 0x1::object::ObjectCore or generics e.g. T\n // Neither matter as we can't do type checks, so just the address applies, and we consume the entire generic.\n // TODO: Support parsing structs that don't come from core code address\n if (AccountAddress.ONE.toString() === address.toString() && module === \"object\" && name === \"Object\") {\n this.consumeWholeGeneric();\n return new TypeTagAddress();\n }\n\n let tyTags: TypeTag[] = [];\n // Check if the struct has ty args\n if (this.tokens.length > 0 && this.tokens[0][1] === \"<\") {\n this.consume(\"<\");\n tyTags = this.parseCommaList(\">\", true);\n this.consume(\">\");\n }\n\n const structTag = new StructTag(address, new Identifier(module), new Identifier(name), tyTags);\n return new TypeTagStruct(structTag);\n }\n if (tokenTy === \"GENERIC\") {\n if (this.typeTags.length === 0) {\n bail(\"Can't convert generic type since no typeTags were specified.\");\n }\n // a generic tokenVal has the format of `T<digit>`, for example `T1`.\n // The digit (i.e 1) indicates the index of this type in the typeTags array.\n // For a tokenVal == T1, should be parsed as the type in typeTags[1]\n const idx = parseInt(tokenVal.substring(1), 10);\n return new TypeTagParser(this.typeTags[idx]).parseTypeTag();\n }\n\n throw new Error(\"Invalid type tag.\");\n }\n}\n\nexport class TypeTagParserError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"TypeTagParserError\";\n }\n}\n\nfunction tokenize(tagStr: string): Token[] {\n let pos = 0;\n const tokens = [];\n while (pos < tagStr.length) {\n const [token, size] = nextToken(tagStr, pos);\n if (token[0] !== \"SPACE\") {\n tokens.push(token);\n }\n pos += size;\n }\n return tokens;\n}\n\nfunction bail(message: string) {\n throw new TypeTagParserError(message);\n}\n\nfunction isWhiteSpace(c: string): boolean {\n return !!c.match(/\\s/);\n}\n\nfunction isValidAlphabetic(c: string): boolean {\n return !!c.match(/[_A-Za-z0-9]/g);\n}\n\n// Generic format is T<digits> - for example T1, T2, T10\nfunction isGeneric(c: string): boolean {\n return !!c.match(/T\\d+/g);\n}\n\n/**\n * Used for parsing a TypeTag, a Token type is two strings: [token type, token value]\n * @example const token: Token = [\"COMMA\", \",\"];\n * @see nextToken(...) in typeTagParser.ts\n */\ntype Token = [string, string];\n\n// Returns Token and Token byte size\nfunction nextToken(tagStr: string, pos: number): [Token, number] {\n const c = tagStr[pos];\n if (c === \":\") {\n if (tagStr.slice(pos, pos + 2) === \"::\") {\n return [[\"COLON\", \"::\"], 2];\n }\n bail(\"Unrecognized token.\");\n } else if (c === \"<\") {\n return [[\"LT\", \"<\"], 1];\n } else if (c === \">\") {\n return [[\"GT\", \">\"], 1];\n } else if (c === \",\") {\n return [[\"COMMA\", \",\"], 1];\n } else if (isWhiteSpace(c)) {\n let res = \"\";\n for (let i = pos; i < tagStr.length; i += 1) {\n const char = tagStr[i];\n if (isWhiteSpace(char)) {\n res = `${res}${char}`;\n } else {\n break;\n }\n }\n return [[\"SPACE\", res], res.length];\n } else if (isValidAlphabetic(c)) {\n let res = \"\";\n for (let i = pos; i < tagStr.length; i += 1) {\n const char = tagStr[i];\n if (isValidAlphabetic(char)) {\n res = `${res}${char}`;\n } else {\n break;\n }\n }\n if (isGeneric(res)) {\n return [[\"GENERIC\", res], res.length];\n }\n return [[\"IDENT\", res], res.length];\n }\n throw new Error(\"Unrecognized token.\");\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * This file handles the transaction creation lifecycle.\n * It holds different operations to generate a transaction payload, a raw transaction,\n * and a signed transaction that can be simulated, signed and submitted to chain.\n */\nimport { sha3_256 as sha3Hash } from \"@noble/hashes/sha3\";\nimport { AptosConfig } from \"../../api/aptosConfig\";\nimport { Deserializer } from \"../../bcs/deserializer\";\nimport { AccountAddress, Hex, PublicKey } from \"../../core\";\nimport { Account } from \"../../core/account\";\nimport { Ed25519PublicKey, Ed25519Signature } from \"../../core/crypto/ed25519\";\nimport { Secp256k1PublicKey, Secp256k1Signature } from \"../../core/crypto/secp256k1\";\nimport { getInfo } from \"../../internal/account\";\nimport { getLedgerInfo } from \"../../internal/general\";\nimport { getGasPriceEstimation } from \"../../internal/transaction\";\nimport { HexInput, SigningScheme } from \"../../types\";\nimport { NetworkToChainId } from \"../../utils/apiEndpoints\";\nimport {\n DEFAULT_MAX_GAS_AMOUNT,\n DEFAULT_TXN_EXP_SEC_FROM_NOW,\n RAW_TRANSACTION_SALT,\n RAW_TRANSACTION_WITH_DATA_SALT,\n} from \"../../utils/const\";\nimport {\n AccountAuthenticator,\n AccountAuthenticatorEd25519,\n AccountAuthenticatorSecp256k1,\n} from \"../authenticator/account\";\nimport {\n TransactionAuthenticatorEd25519,\n TransactionAuthenticatorFeePayer,\n TransactionAuthenticatorMultiAgent,\n TransactionAuthenticatorSecp256k1,\n} from \"../authenticator/transaction\";\nimport {\n ChainId,\n EntryFunction,\n FeePayerRawTransaction,\n MultiAgentRawTransaction,\n MultiSig,\n MultiSigTransactionPayload,\n RawTransaction,\n Script,\n TransactionPayloadEntryFunction,\n TransactionPayloadMultisig,\n TransactionPayloadScript,\n} from \"../instances\";\nimport { SignedTransaction } from \"../instances/signedTransaction\";\nimport {\n GenerateTransactionOptions,\n TransactionPayload,\n AnyRawTransactionInstance,\n GenerateTransactionPayloadData,\n GenerateFeePayerRawTransactionArgs,\n GenerateMultiAgentRawTransactionArgs,\n GenerateRawTransactionArgs,\n GenerateSingleSignerRawTransactionArgs,\n SingleSignerTransaction,\n AnyRawTransaction,\n FeePayerTransaction,\n MultiAgentTransaction,\n EntryFunctionData,\n MultiSigData,\n ScriptData,\n SimulateTransactionData,\n} from \"../types\";\n\n/**\n * We are defining function signatures, each with its specific input and output.\n * These are the possible function signature for our `generateTransactionPayload` function.\n * When we call our `generateTransactionPayload` function with the relevant type properties,\n * Typescript can infer the return type based on the appropriate function overload.\n */\nexport function generateTransactionPayload(args: EntryFunctionData): TransactionPayloadEntryFunction;\nexport function generateTransactionPayload(args: ScriptData): TransactionPayloadScript;\nexport function generateTransactionPayload(args: MultiSigData): TransactionPayloadMultisig;\nexport function generateTransactionPayload(args: GenerateTransactionPayloadData): TransactionPayload;\n/**\n * Builds a transaction payload based on the data argument and returns\n * a transaction payload - TransactionPayloadScript | TransactionPayloadMultisig | TransactionPayloadEntryFunction\n *\n * @param args.data GenerateTransactionPayloadData\n *\n * @return TransactionPayload\n */\nexport function generateTransactionPayload(args: GenerateTransactionPayloadData): TransactionPayload {\n // generate script payload\n if (\"bytecode\" in args) {\n return new TransactionPayloadScript(\n new Script(Hex.fromHexInput(args.bytecode).toUint8Array(), args.typeArguments ?? [], args.arguments),\n );\n }\n\n // generate multi sig payload\n if (\"multisigAddress\" in args) {\n const funcNameParts = args.function.split(\"::\");\n return new TransactionPayloadMultisig(\n new MultiSig(\n args.multisigAddress,\n new MultiSigTransactionPayload(\n EntryFunction.build(\n `${funcNameParts[0]}::${funcNameParts[1]}`,\n funcNameParts[2],\n args.typeArguments ?? [],\n args.arguments,\n ),\n ),\n ),\n );\n }\n\n // generate entry function payload\n const funcNameParts = args.function.split(\"::\");\n return new TransactionPayloadEntryFunction(\n EntryFunction.build(\n `${funcNameParts[0]}::${funcNameParts[1]}`,\n funcNameParts[2],\n args.typeArguments ?? [],\n args.arguments,\n ),\n );\n}\n\n/**\n * Generates a raw transaction\n *\n * @param args.aptosConfig AptosConfig\n * @param args.sender The transaction's sender account address as a hex input\n * @param args.payload The transaction payload - can create by using generateTransactionPayload()\n *\n * @returns RawTransaction\n */\nexport async function generateRawTransaction(args: {\n aptosConfig: AptosConfig;\n sender: HexInput;\n payload: TransactionPayload;\n options?: GenerateTransactionOptions;\n}): Promise<RawTransaction> {\n const { aptosConfig, sender, payload, options } = args;\n\n const getSequenceNumber = options?.accountSequenceNumber\n ? Promise.resolve({ sequence_number: options.accountSequenceNumber })\n : getInfo({ aptosConfig, accountAddress: sender });\n\n const getChainId = NetworkToChainId[aptosConfig.network]\n ? Promise.resolve({ chain_id: NetworkToChainId[aptosConfig.network] })\n : getLedgerInfo({ aptosConfig });\n\n const getGasUnitPrice = options?.gasUnitPrice\n ? Promise.resolve({ gas_estimate: options.gasUnitPrice })\n : getGasPriceEstimation({ aptosConfig });\n\n const [{ sequence_number: sequenceNumber }, { chain_id: chainId }, { gas_estimate: gasEstimate }] = await Promise.all(\n [getSequenceNumber, getChainId, getGasUnitPrice],\n );\n\n const { maxGasAmount, gasUnitPrice, expireTimestamp } = {\n maxGasAmount: BigInt(DEFAULT_MAX_GAS_AMOUNT),\n gasUnitPrice: BigInt(gasEstimate),\n expireTimestamp: BigInt(Math.floor(Date.now() / 1000) + DEFAULT_TXN_EXP_SEC_FROM_NOW),\n ...options,\n };\n\n return new RawTransaction(\n AccountAddress.fromHexInput(sender),\n BigInt(sequenceNumber),\n payload,\n BigInt(maxGasAmount),\n BigInt(gasUnitPrice),\n BigInt(expireTimestamp),\n new ChainId(chainId),\n );\n}\n\n/**\n * We are defining function signatures, each with its specific input and output.\n * These are the possible function signature for our `generateTransaction` function.\n * When we call our `generateTransaction` function with the relevant type properties,\n * Typescript can infer the return type based on the appropriate function overload.\n */\nexport async function buildTransaction(args: GenerateSingleSignerRawTransactionArgs): Promise<SingleSignerTransaction>;\nexport async function buildTransaction(args: GenerateFeePayerRawTransactionArgs): Promise<FeePayerTransaction>;\nexport async function buildTransaction(args: GenerateMultiAgentRawTransactionArgs): Promise<MultiAgentTransaction>;\nexport async function buildTransaction(args: GenerateRawTransactionArgs): Promise<AnyRawTransaction>;\n/**\n * Generates a transaction based on the provided arguments\n *\n * Note: we can start with one function to support all different payload/transaction types,\n * and if to complex to use, we could have function for each type\n *\n * @param args.aptosConfig AptosConfig\n * @param args.sender The transaction's sender account address as a hex input\n * @param args.payload The transaction payload - can create by using generateTransactionPayload()\n * @param args.options optional. Transaction options object\n * @param args.secondarySignerAddresses optional. For when want to create a multi signers transaction\n * @param args.feePayerAddress optional. For when want to create a fee payer (aka sponsored) transaction\n *\n * @return An Aptos raw transaction type (note that it holds the raw transaction as a bcs serialized data)\n * ```\n * {\n * rawTransaction: Uint8Array,\n * secondarySignerAddresses? : Array<AccountAddress>,\n * feePayerAddress?: AccountAddress\n * }\n * ```\n */\nexport async function buildTransaction(args: GenerateRawTransactionArgs): Promise<AnyRawTransaction> {\n const { aptosConfig, sender, payload, options, secondarySignerAddresses, feePayerAddress } = args;\n // generate raw transaction\n const rawTxn = await generateRawTransaction({\n aptosConfig,\n sender,\n payload,\n options,\n });\n\n if (feePayerAddress) {\n const signers: Array<AccountAddress> = secondarySignerAddresses\n ? secondarySignerAddresses.map((signer) => AccountAddress.fromHexInput(signer))\n : [];\n\n return {\n rawTransaction: rawTxn.bcsToBytes(),\n secondarySignerAddresses: signers,\n feePayerAddress: AccountAddress.fromHexInput(feePayerAddress),\n };\n }\n\n if (secondarySignerAddresses) {\n const signers: Array<AccountAddress> = secondarySignerAddresses.map((signer) =>\n AccountAddress.fromHexInput(signer),\n );\n\n return {\n rawTransaction: rawTxn.bcsToBytes(),\n secondarySignerAddresses: signers,\n };\n }\n // return the raw transaction\n return { rawTransaction: rawTxn.bcsToBytes() };\n}\n\n/**\n * Simulate a transaction before signing and submit to chain\n *\n * @param args.transaction A aptos transaction type to sign\n * @param args.signerPublicKey The signer public key\n * @param args.secondarySignersPublicKeys optional. The secondary signers public keys if multi signers transaction\n * @param args.feePayerPublicKey optional. The fee payer public key is a fee payer (aka sponsored) transaction\n * @param args.options optional. SimulateTransactionOptions\n *\n * @returns A signed serialized transaction that can be simulated\n */\nexport function generateSignedTransactionForSimulation(args: SimulateTransactionData): Uint8Array {\n const { signerPublicKey, transaction, secondarySignersPublicKeys, feePayerPublicKey } = args;\n\n const deserializer = new Deserializer(transaction.rawTransaction);\n const deserializedTransaction = RawTransaction.deserialize(deserializer);\n\n const accountAuthenticator = getAuthenticatorForSimulation(signerPublicKey);\n // fee payer transaction\n if (transaction.feePayerAddress) {\n const transactionToSign = new FeePayerRawTransaction(\n deserializedTransaction,\n transaction.secondarySignerAddresses ?? [],\n transaction.feePayerAddress,\n );\n\n let secondaryAccountAuthenticators: Array<AccountAuthenticator> = [];\n if (secondarySignersPublicKeys) {\n secondaryAccountAuthenticators = secondarySignersPublicKeys.map((publicKey) =>\n getAuthenticatorForSimulation(publicKey),\n );\n }\n\n const feePayerAuthenticator = getAuthenticatorForSimulation(feePayerPublicKey!);\n\n const transactionAuthenticator = new TransactionAuthenticatorFeePayer(\n accountAuthenticator,\n transaction.secondarySignerAddresses ?? [],\n secondaryAccountAuthenticators,\n {\n address: transaction.feePayerAddress,\n authenticator: feePayerAuthenticator,\n },\n );\n return new SignedTransaction(transactionToSign.raw_txn, transactionAuthenticator).bcsToBytes();\n }\n\n // multi agent transaction\n if (transaction.secondarySignerAddresses) {\n const transactionToSign = new MultiAgentRawTransaction(\n deserializedTransaction,\n transaction.secondarySignerAddresses,\n );\n\n let secondaryAccountAuthenticators: Array<AccountAuthenticator> = [];\n\n secondaryAccountAuthenticators = secondarySignersPublicKeys!.map((publicKey) =>\n getAuthenticatorForSimulation(publicKey),\n );\n\n const transactionAuthenticator = new TransactionAuthenticatorMultiAgent(\n accountAuthenticator,\n transaction.secondarySignerAddresses,\n secondaryAccountAuthenticators,\n );\n\n return new SignedTransaction(transactionToSign.raw_txn, transactionAuthenticator).bcsToBytes();\n }\n\n // raw transaction\n let transactionAuthenticator;\n if (accountAuthenticator instanceof AccountAuthenticatorEd25519) {\n transactionAuthenticator = new TransactionAuthenticatorEd25519(\n accountAuthenticator.public_key,\n accountAuthenticator.signature,\n );\n } else if (accountAuthenticator instanceof AccountAuthenticatorSecp256k1) {\n transactionAuthenticator = new TransactionAuthenticatorSecp256k1(\n accountAuthenticator.public_key,\n accountAuthenticator.signature,\n );\n } else {\n throw new Error(\"Invalid public key\");\n }\n return new SignedTransaction(deserializedTransaction, transactionAuthenticator).bcsToBytes();\n}\n\nexport function getAuthenticatorForSimulation(publicKey: PublicKey) {\n if (publicKey instanceof Ed25519PublicKey) {\n return new AccountAuthenticatorEd25519(\n new Ed25519PublicKey(publicKey.toUint8Array()),\n new Ed25519Signature(new Uint8Array(64)),\n );\n }\n return new AccountAuthenticatorSecp256k1(\n new Secp256k1PublicKey(publicKey.toUint8Array()),\n new Secp256k1Signature(new Uint8Array(64)),\n );\n}\n\n/**\n * Sign a transaction that can later be submitted to chain\n *\n * @param args.signer The signer account to sign the transaction\n * @param args.transaction A aptos transaction type to sign\n *\n * @return The signer AccountAuthenticator\n */\nexport function sign(args: { signer: Account; transaction: AnyRawTransaction }): AccountAuthenticator {\n const { signer, transaction } = args;\n\n const transactionToSign = deriveTransactionType(transaction);\n\n // get the signing message\n const message = getSigningMessage(transactionToSign);\n\n // account.signMessage\n const signerSignature = signer.sign(message);\n\n // return account authentication\n switch (signer.signingScheme) {\n case SigningScheme.Ed25519:\n return new AccountAuthenticatorEd25519(\n new Ed25519PublicKey(signer.publicKey.toUint8Array()),\n new Ed25519Signature(signerSignature.toUint8Array()),\n );\n case SigningScheme.Secp256k1Ecdsa:\n return new AccountAuthenticatorSecp256k1(\n new Secp256k1PublicKey(signer.publicKey.toUint8Array()),\n new Secp256k1Signature(signerSignature.toUint8Array()),\n );\n // TODO support MultiEd25519\n default:\n throw new Error(`Cannot sign transaction, signing scheme ${signer.signingScheme} not supported`);\n }\n}\n\n/**\n * Prepare a transaction to be submitted to chain\n *\n * @param args.transaction A aptos transaction type\n * @param args.senderAuthenticator The account authenticator of the transaction sender\n * @param args.secondarySignerAuthenticators optional. For when the transaction is a multi signers transaction\n *\n * @returns A SignedTransaction\n */\nexport function generateSignedTransaction(args: {\n transaction: AnyRawTransaction;\n senderAuthenticator: AccountAuthenticator;\n secondarySignerAuthenticators?: {\n feePayerAuthenticator?: AccountAuthenticator;\n additionalSignersAuthenticators?: Array<AccountAuthenticator>;\n };\n}): Uint8Array {\n const { transaction, senderAuthenticator, secondarySignerAuthenticators } = args;\n\n const transactionToSubmit = deriveTransactionType(transaction);\n\n if (secondarySignerAuthenticators) {\n return generateMultiSignersSignedTransaction(\n transactionToSubmit as MultiAgentRawTransaction | FeePayerRawTransaction,\n senderAuthenticator,\n secondarySignerAuthenticators,\n );\n }\n\n // submit single signer transaction\n\n // deserialize the senderAuthenticator\n const deserializer = new Deserializer(senderAuthenticator.bcsToBytes());\n const accountAuthenticator = AccountAuthenticator.deserialize(deserializer);\n // check what instance is accountAuthenticator\n if (accountAuthenticator instanceof AccountAuthenticatorEd25519) {\n const transactionAuthenticator = new TransactionAuthenticatorEd25519(\n accountAuthenticator.public_key,\n accountAuthenticator.signature,\n );\n // return signed transaction\n return new SignedTransaction(transactionToSubmit as RawTransaction, transactionAuthenticator).bcsToBytes();\n }\n\n if (accountAuthenticator instanceof AccountAuthenticatorSecp256k1) {\n const transactionAuthenticator = new TransactionAuthenticatorSecp256k1(\n accountAuthenticator.public_key,\n accountAuthenticator.signature,\n );\n // return signed transaction\n return new SignedTransaction(transactionToSubmit as RawTransaction, transactionAuthenticator).bcsToBytes();\n }\n\n throw new Error(\n `Cannot generate a signed transaction, ${accountAuthenticator} is not a supported account authentication scheme`,\n );\n}\n\n/**\n * Derive the raw transaction type - FeePayerRawTransaction or MultiAgentRawTransaction or RawTransaction\n *\n * @param transaction A aptos transaction type\n *\n * @returns FeePayerRawTransaction | MultiAgentRawTransaction | RawTransaction\n */\nexport function deriveTransactionType(transaction: AnyRawTransaction): AnyRawTransactionInstance {\n const deserializer = new Deserializer(transaction.rawTransaction);\n const deserializedTransaction = RawTransaction.deserialize(deserializer);\n\n if (transaction.feePayerAddress) {\n return new FeePayerRawTransaction(\n deserializedTransaction,\n transaction.secondarySignerAddresses ?? [],\n transaction.feePayerAddress,\n );\n }\n if (transaction.secondarySignerAddresses) {\n return new MultiAgentRawTransaction(deserializedTransaction, transaction.secondarySignerAddresses);\n }\n\n return deserializedTransaction as RawTransaction;\n}\n\n/**\n * Generate a multi signers signed transaction that can be submitted to chain\n *\n * @param transaction MultiAgentRawTransaction | FeePayerRawTransaction\n * @param senderAuthenticator The account authenticator of the transaction sender\n * @param secondarySignerAuthenticators The extra signers account Authenticators\n *\n * @returns A SignedTransaction\n */\nexport function generateMultiSignersSignedTransaction(\n transaction: MultiAgentRawTransaction | FeePayerRawTransaction,\n senderAuthenticator: AccountAuthenticator,\n secondarySignerAuthenticators: {\n feePayerAuthenticator?: AccountAuthenticator;\n additionalSignersAuthenticators?: Array<AccountAuthenticator>;\n },\n) {\n if (transaction instanceof FeePayerRawTransaction) {\n if (!secondarySignerAuthenticators.feePayerAuthenticator) {\n throw new Error(\"Must provide a feePayerAuthenticator argument to generate a signed fee payer transaction\");\n }\n const { feePayerAuthenticator, additionalSignersAuthenticators } = secondarySignerAuthenticators;\n const txAuthenticatorFeePayer = new TransactionAuthenticatorFeePayer(\n senderAuthenticator,\n transaction.secondary_signer_addresses,\n additionalSignersAuthenticators ?? [],\n {\n address: transaction.fee_payer_address,\n authenticator: feePayerAuthenticator,\n },\n );\n return new SignedTransaction(transaction.raw_txn, txAuthenticatorFeePayer).bcsToBytes();\n }\n if (transaction instanceof MultiAgentRawTransaction) {\n if (!secondarySignerAuthenticators.additionalSignersAuthenticators) {\n throw new Error(\n \"Must provide a additionalSignersAuthenticators argument to generate a signed multi agent transaction\",\n );\n }\n const { additionalSignersAuthenticators } = secondarySignerAuthenticators;\n const multiAgentAuthenticator = new TransactionAuthenticatorMultiAgent(\n senderAuthenticator,\n transaction.secondary_signer_addresses,\n additionalSignersAuthenticators ?? [],\n );\n return new SignedTransaction(transaction.raw_txn, multiAgentAuthenticator).bcsToBytes();\n }\n\n throw new Error(\n `Cannot prepare multi signers transaction to submission, ${typeof transaction} transaction is not supported`,\n );\n}\n\nexport function getSigningMessage(rawTxn: AnyRawTransactionInstance): Uint8Array {\n const hash = sha3Hash.create();\n\n if (rawTxn instanceof RawTransaction) {\n hash.update(RAW_TRANSACTION_SALT);\n } else if (rawTxn instanceof MultiAgentRawTransaction) {\n hash.update(RAW_TRANSACTION_WITH_DATA_SALT);\n } else if (rawTxn instanceof FeePayerRawTransaction) {\n hash.update(RAW_TRANSACTION_WITH_DATA_SALT);\n } else {\n throw new Error(`Unknown transaction type to sign on: ${rawTxn}`);\n }\n\n const prefix = hash.digest();\n\n const body = rawTxn.bcsToBytes();\n\n const mergedArray = new Uint8Array(prefix.length + body.length);\n mergedArray.set(prefix);\n mergedArray.set(body, prefix.length);\n\n return mergedArray;\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Sleep the current thread for the given amount of time\n * @param timeMs time in milliseconds to sleep\n */\nexport async function sleep(timeMs: number): Promise<null> {\n return new Promise((resolve) => {\n setTimeout(resolve, timeMs);\n });\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * This file contains the underlying implementations for exposed API surface in\n * the {@link api/transaction}. By moving the methods out into a separate file,\n * other namespaces and processes can access these methods without depending on the entire\n * transaction namespace and without having a dependency cycle error.\n */\n\nimport { AptosConfig } from \"../api/aptosConfig\";\nimport { AptosApiError, getAptosFullNode, paginateWithCursor } from \"../client\";\nimport {\n TransactionResponseType,\n type AnyNumber,\n type GasEstimation,\n type HexInput,\n type PaginationArgs,\n type TransactionResponse,\n} from \"../types\";\nimport { DEFAULT_TXN_TIMEOUT_SEC } from \"../utils/const\";\nimport { sleep } from \"../utils/helpers\";\nimport { memoizeAsync } from \"../utils/memoize\";\nimport { getIndexerLastSuccessVersion } from \"./general\";\n\nexport async function getTransactions(args: {\n aptosConfig: AptosConfig;\n options?: PaginationArgs;\n}): Promise<TransactionResponse[]> {\n const { aptosConfig, options } = args;\n return paginateWithCursor<{}, TransactionResponse[]>({\n aptosConfig,\n originMethod: \"getTransactions\",\n path: \"transactions\",\n params: { start: options?.offset, limit: options?.limit },\n });\n}\n\nexport async function getGasPriceEstimation(args: { aptosConfig: AptosConfig }) {\n const { aptosConfig } = args;\n\n return memoizeAsync(\n async () => {\n const { data } = await getAptosFullNode<{}, GasEstimation>({\n aptosConfig,\n originMethod: \"getGasPriceEstimation\",\n path: \"estimate_gas_price\",\n });\n return data;\n },\n `gas-price-${aptosConfig.network}`,\n 1000 * 60 * 5, // 5 minutes\n )();\n}\n\nexport async function getTransactionByVersion(args: {\n aptosConfig: AptosConfig;\n ledgerVersion: AnyNumber;\n}): Promise<TransactionResponse> {\n const { aptosConfig, ledgerVersion } = args;\n const { data } = await getAptosFullNode<{}, TransactionResponse>({\n aptosConfig,\n originMethod: \"getTransactionByVersion\",\n path: `transactions/by_version/${ledgerVersion}`,\n });\n return data;\n}\n\nexport async function getTransactionByHash(args: {\n aptosConfig: AptosConfig;\n transactionHash: HexInput;\n}): Promise<TransactionResponse> {\n const { aptosConfig, transactionHash } = args;\n const { data } = await getAptosFullNode<{}, TransactionResponse>({\n aptosConfig,\n path: `transactions/by_hash/${transactionHash}`,\n originMethod: \"getTransactionByHash\",\n });\n return data;\n}\n\nexport async function isTransactionPending(args: {\n aptosConfig: AptosConfig;\n transactionHash: HexInput;\n}): Promise<boolean> {\n const { aptosConfig, transactionHash } = args;\n try {\n const transaction = await getTransactionByHash({ aptosConfig, transactionHash });\n return transaction.type === TransactionResponseType.Pending;\n } catch (e: any) {\n if (e?.status === 404) {\n return true;\n }\n throw e;\n }\n}\n\nexport async function waitForTransaction(args: {\n aptosConfig: AptosConfig;\n transactionHash: HexInput;\n options?: { timeoutSecs?: number; checkSuccess?: boolean; indexerVersionCheck?: boolean };\n}): Promise<TransactionResponse> {\n const { aptosConfig, transactionHash, options } = args;\n const timeoutSecs = options?.timeoutSecs ?? DEFAULT_TXN_TIMEOUT_SEC;\n const checkSuccess = options?.checkSuccess ?? true;\n const indexerVersionCheck = options?.indexerVersionCheck ?? true;\n\n let isPending = true;\n let timeElapsed = 0;\n let lastTxn: TransactionResponse | undefined;\n let lastError: AptosApiError | undefined;\n let backoffIntervalMs = 200;\n const backoffMultiplier = 1.5;\n\n while (isPending) {\n if (timeElapsed >= timeoutSecs) {\n break;\n }\n try {\n // eslint-disable-next-line no-await-in-loop\n lastTxn = await getTransactionByHash({ aptosConfig, transactionHash });\n\n isPending = lastTxn.type === TransactionResponseType.Pending;\n\n if (!isPending) {\n break;\n }\n } catch (e) {\n // In short, this means we will retry if it was an AptosApiError and the code was 404 or 5xx.\n const isAptosApiError = e instanceof AptosApiError;\n if (!isAptosApiError) {\n throw e; // This would be unexpected\n }\n lastError = e;\n const isRequestError = e.status !== 404 && e.status >= 400 && e.status < 500;\n if (isRequestError) {\n throw e;\n }\n }\n // eslint-disable-next-line no-await-in-loop\n await sleep(backoffIntervalMs);\n timeElapsed += backoffIntervalMs / 1000; // Convert to seconds\n backoffIntervalMs *= backoffMultiplier;\n }\n\n // There is a chance that lastTxn is still undefined. Let's throw the last error otherwise a WaitForTransactionError\n if (lastTxn === undefined) {\n if (lastError) {\n throw lastError;\n } else {\n throw new WaitForTransactionError(\n `Fetching transaction ${transactionHash} failed and timed out after ${timeoutSecs} seconds`,\n lastTxn,\n );\n }\n }\n\n if (lastTxn.type === TransactionResponseType.Pending) {\n throw new WaitForTransactionError(\n `Transaction ${transactionHash} timed out in pending state after ${timeoutSecs} seconds`,\n lastTxn,\n );\n }\n if (!checkSuccess) {\n return lastTxn;\n }\n if (!lastTxn.success) {\n throw new FailedTransactionError(\n `Transaction ${transactionHash} failed with an error: ${(lastTxn as any).vm_status}`,\n lastTxn,\n );\n }\n\n // Make sure indexer is synced with the latest ledger version\n if (indexerVersionCheck) {\n try {\n await waitForLastSuccessIndexerVersionSync({ aptosConfig, ledgerVersion: Number(lastTxn.version) });\n } catch (_e) {\n throw new WaitForTransactionError(\n // eslint-disable-next-line max-len\n `Transaction ${transactionHash} committed, but timed out waiting for indexer to sync with ledger version ${lastTxn.version}.` +\n \"You can disable this check by setting `indexerVersionCheck` to false in the `extraArgs` parameter.\",\n lastTxn,\n );\n }\n }\n\n return lastTxn;\n}\n\n/**\n * Waits for the indexer to sync up to the ledgerVersion. Timeout is 3 seconds.\n */\nasync function waitForLastSuccessIndexerVersionSync(args: {\n aptosConfig: AptosConfig;\n ledgerVersion: number;\n}): Promise<void> {\n const { aptosConfig, ledgerVersion } = args;\n const timeoutMilliseconds = 3000; // 3 seconds\n const startTime = new Date().getTime();\n let indexerVersion = -1;\n\n while (indexerVersion < ledgerVersion) {\n // check for timeout\n if (new Date().getTime() - startTime > timeoutMilliseconds) {\n throw new Error(\"waitForLastSuccessIndexerVersionSync timeout\");\n }\n\n // eslint-disable-next-line no-await-in-loop\n indexerVersion = await getIndexerLastSuccessVersion({ aptosConfig });\n if (indexerVersion >= ledgerVersion) {\n // break out immediately if we are synced\n break;\n }\n\n // eslint-disable-next-line no-await-in-loop\n await sleep(200);\n }\n}\n\n/**\n * This error is used by `waitForTransaction` when waiting for a\n * transaction to time out or when the transaction response is undefined\n */\nexport class WaitForTransactionError extends Error {\n public readonly lastSubmittedTransaction: TransactionResponse | undefined;\n\n constructor(message: string, lastSubmittedTransaction: TransactionResponse | undefined) {\n super(message);\n this.lastSubmittedTransaction = lastSubmittedTransaction;\n }\n}\n\n/**\n * This error is used by `waitForTransaction` if `checkSuccess` is true.\n * See that function for more information.\n */\nexport class FailedTransactionError extends Error {\n public readonly transaction: TransactionResponse;\n\n constructor(message: string, transaction: TransactionResponse) {\n super(message);\n this.transaction = transaction;\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable @typescript-eslint/naming-convention */\n\nimport { Serializer, Deserializer, Serializable } from \"../../bcs\";\nimport { Ed25519PublicKey, Ed25519Signature } from \"../../core/crypto/ed25519\";\nimport { MultiEd25519PublicKey, MultiEd25519Signature } from \"../../core/crypto/multiEd25519\";\nimport { Secp256k1PublicKey, Secp256k1Signature } from \"../../core/crypto/secp256k1\";\nimport { AccountAuthenticatorVariant } from \"../../types\";\n\nexport abstract class AccountAuthenticator extends Serializable {\n abstract serialize(serializer: Serializer): void;\n\n static deserialize(deserializer: Deserializer): AccountAuthenticator {\n const index = deserializer.deserializeUleb128AsU32();\n switch (index) {\n case AccountAuthenticatorVariant.Ed25519:\n return AccountAuthenticatorEd25519.load(deserializer);\n case AccountAuthenticatorVariant.MultiEd25519:\n return AccountAuthenticatorMultiEd25519.load(deserializer);\n case AccountAuthenticatorVariant.Secp256k1:\n return AccountAuthenticatorSecp256k1.load(deserializer);\n default:\n throw new Error(`Unknown variant index for AccountAuthenticator: ${index}`);\n }\n }\n}\n\n/**\n * Transaction authenticator Ed25519 for a multi signer transaction\n *\n * @param public_key Account's Ed25519 public key.\n * @param signature Account's Ed25519 signature\n *\n */\nexport class AccountAuthenticatorEd25519 extends AccountAuthenticator {\n public readonly public_key: Ed25519PublicKey;\n\n public readonly signature: Ed25519Signature;\n\n constructor(public_key: Ed25519PublicKey, signature: Ed25519Signature) {\n super();\n this.public_key = public_key;\n this.signature = signature;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(AccountAuthenticatorVariant.Ed25519);\n this.public_key.serialize(serializer);\n this.signature.serialize(serializer);\n }\n\n static load(deserializer: Deserializer): AccountAuthenticatorEd25519 {\n const public_key = Ed25519PublicKey.deserialize(deserializer);\n const signature = Ed25519Signature.deserialize(deserializer);\n return new AccountAuthenticatorEd25519(public_key, signature);\n }\n}\n\n/**\n * Transaction authenticator Multi Ed25519 for a multi signers transaction\n *\n * @param public_key Account's MultiEd25519 public key.\n * @param signature Account's MultiEd25519 signature\n *\n */\nexport class AccountAuthenticatorMultiEd25519 extends AccountAuthenticator {\n public readonly public_key: MultiEd25519PublicKey;\n\n public readonly signature: MultiEd25519Signature;\n\n constructor(public_key: MultiEd25519PublicKey, signature: MultiEd25519Signature) {\n super();\n this.public_key = public_key;\n this.signature = signature;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(AccountAuthenticatorVariant.MultiEd25519);\n this.public_key.serialize(serializer);\n this.signature.serialize(serializer);\n }\n\n static load(deserializer: Deserializer): AccountAuthenticatorMultiEd25519 {\n const public_key = MultiEd25519PublicKey.deserialize(deserializer);\n const signature = MultiEd25519Signature.deserialize(deserializer);\n return new AccountAuthenticatorMultiEd25519(public_key, signature);\n }\n}\n\n/**\n * A Secp256k1 AccountAuthenticator for a single signer\n *\n * @param public_key A Secp256k1 public key\n * @param signature A Secp256k1 signature\n *\n */\nexport class AccountAuthenticatorSecp256k1 extends AccountAuthenticator {\n public readonly public_key: Secp256k1PublicKey;\n\n public readonly signature: Secp256k1Signature;\n\n constructor(public_key: Secp256k1PublicKey, signature: Secp256k1Signature) {\n super();\n this.public_key = public_key;\n this.signature = signature;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(AccountAuthenticatorVariant.Secp256k1);\n this.public_key.serialize(serializer);\n this.signature.serialize(serializer);\n }\n\n static load(deserializer: Deserializer): AccountAuthenticatorSecp256k1 {\n const public_key = Secp256k1PublicKey.deserialize(deserializer);\n const signature = Secp256k1Signature.deserialize(deserializer);\n return new AccountAuthenticatorSecp256k1(public_key, signature);\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable @typescript-eslint/naming-convention */\n\nimport { AccountAuthenticator } from \"./account\";\nimport { Deserializer, Serializer } from \"../../bcs\";\nimport { AccountAddress } from \"../../core\";\nimport { Ed25519PublicKey, Ed25519Signature } from \"../../core/crypto/ed25519\";\nimport { MultiEd25519PublicKey, MultiEd25519Signature } from \"../../core/crypto/multiEd25519\";\nimport { Secp256k1PublicKey, Secp256k1Signature } from \"../../core/crypto/secp256k1\";\nimport { TransactionAuthenticatorVariant } from \"../../types\";\n\nexport abstract class TransactionAuthenticator {\n abstract serialize(serializer: Serializer): void;\n\n static deserialize(deserializer: Deserializer): TransactionAuthenticator {\n const index = deserializer.deserializeUleb128AsU32();\n switch (index) {\n case TransactionAuthenticatorVariant.Ed25519:\n return TransactionAuthenticatorEd25519.load(deserializer);\n case TransactionAuthenticatorVariant.MultiEd25519:\n return TransactionAuthenticatorMultiEd25519.load(deserializer);\n case TransactionAuthenticatorVariant.MultiAgent:\n return TransactionAuthenticatorMultiAgent.load(deserializer);\n case TransactionAuthenticatorVariant.FeePayer:\n return TransactionAuthenticatorFeePayer.load(deserializer);\n case TransactionAuthenticatorVariant.Secp256k1Ecdsa:\n return TransactionAuthenticatorSecp256k1.load(deserializer);\n default:\n throw new Error(`Unknown variant index for TransactionAuthenticator: ${index}`);\n }\n }\n}\n\n/**\n * Transaction authenticator Ed25519 for a single signer transaction\n *\n * @param public_key Client's public key.\n * @param signature Ed25519 signature of a raw transaction.\n * @see {@link https://aptos.dev/integration/creating-a-signed-transaction | Creating a Signed Transaction}\n * for details about generating a signature.\n */\nexport class TransactionAuthenticatorEd25519 extends TransactionAuthenticator {\n public readonly public_key: Ed25519PublicKey;\n\n public readonly signature: Ed25519Signature;\n\n constructor(public_key: Ed25519PublicKey, signature: Ed25519Signature) {\n super();\n this.public_key = public_key;\n this.signature = signature;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TransactionAuthenticatorVariant.Ed25519);\n this.public_key.serialize(serializer);\n this.signature.serialize(serializer);\n }\n\n static load(deserializer: Deserializer): TransactionAuthenticatorEd25519 {\n const public_key = Ed25519PublicKey.deserialize(deserializer);\n const signature = Ed25519Signature.deserialize(deserializer);\n return new TransactionAuthenticatorEd25519(public_key, signature);\n }\n}\n\n/**\n * Transaction authenticator Ed25519 for a multi signers transaction\n *\n * @param public_key Client's public key.\n * @param signature Multi Ed25519 signature of a raw transaction.\n *\n */\nexport class TransactionAuthenticatorMultiEd25519 extends TransactionAuthenticator {\n public readonly public_key: MultiEd25519PublicKey;\n\n public readonly signature: MultiEd25519Signature;\n\n constructor(public_key: MultiEd25519PublicKey, signature: MultiEd25519Signature) {\n super();\n this.public_key = public_key;\n this.signature = signature;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TransactionAuthenticatorVariant.MultiEd25519);\n this.public_key.serialize(serializer);\n this.signature.serialize(serializer);\n }\n\n static load(deserializer: Deserializer): TransactionAuthenticatorMultiEd25519 {\n const public_key = MultiEd25519PublicKey.deserialize(deserializer);\n const signature = MultiEd25519Signature.deserialize(deserializer);\n return new TransactionAuthenticatorMultiEd25519(public_key, signature);\n }\n}\n\n/**\n * Transaction authenticator for a multi-agent transaction\n *\n * @param sender Sender account authenticator\n * @param secondary_signer_addresses Secondary signers address\n * @param secondary_signers Secondary signers account authenticators\n *\n */\nexport class TransactionAuthenticatorMultiAgent extends TransactionAuthenticator {\n public readonly sender: AccountAuthenticator;\n\n public readonly secondary_signer_addresses: Array<AccountAddress>;\n\n public readonly secondary_signers: Array<AccountAuthenticator>;\n\n constructor(\n sender: AccountAuthenticator,\n secondary_signer_addresses: Array<AccountAddress>,\n secondary_signers: Array<AccountAuthenticator>,\n ) {\n super();\n this.sender = sender;\n this.secondary_signer_addresses = secondary_signer_addresses;\n this.secondary_signers = secondary_signers;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TransactionAuthenticatorVariant.MultiAgent);\n this.sender.serialize(serializer);\n serializer.serializeVector<AccountAddress>(this.secondary_signer_addresses);\n serializer.serializeVector<AccountAuthenticator>(this.secondary_signers);\n }\n\n static load(deserializer: Deserializer): TransactionAuthenticatorMultiAgent {\n const sender = AccountAuthenticator.deserialize(deserializer);\n const secondary_signer_addresses = deserializer.deserializeVector(AccountAddress);\n const secondary_signers = deserializer.deserializeVector(AccountAuthenticator);\n return new TransactionAuthenticatorMultiAgent(sender, secondary_signer_addresses, secondary_signers);\n }\n}\n\n/**\n * Transaction authenticator for a fee payer transaction\n *\n * @param sender Sender account authenticator\n * @param secondary_signer_addresses Secondary signers address\n * @param secondary_signers Secondary signers account authenticators\n * @param fee_payer Object of the fee payer account address and the fee payer authentication\n *\n */\nexport class TransactionAuthenticatorFeePayer extends TransactionAuthenticator {\n public readonly sender: AccountAuthenticator;\n\n public readonly secondary_signer_addresses: Array<AccountAddress>;\n\n public readonly secondary_signers: Array<AccountAuthenticator>;\n\n public readonly fee_payer: {\n address: AccountAddress;\n authenticator: AccountAuthenticator;\n };\n\n constructor(\n sender: AccountAuthenticator,\n secondary_signer_addresses: Array<AccountAddress>,\n secondary_signers: Array<AccountAuthenticator>,\n fee_payer: { address: AccountAddress; authenticator: AccountAuthenticator },\n ) {\n super();\n this.sender = sender;\n this.secondary_signer_addresses = secondary_signer_addresses;\n this.secondary_signers = secondary_signers;\n this.fee_payer = fee_payer;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TransactionAuthenticatorVariant.FeePayer);\n this.sender.serialize(serializer);\n serializer.serializeVector<AccountAddress>(this.secondary_signer_addresses);\n serializer.serializeVector<AccountAuthenticator>(this.secondary_signers);\n this.fee_payer.address.serialize(serializer);\n this.fee_payer.authenticator.serialize(serializer);\n }\n\n static load(deserializer: Deserializer): TransactionAuthenticatorMultiAgent {\n const sender = AccountAuthenticator.deserialize(deserializer);\n const secondary_signer_addresses = deserializer.deserializeVector(AccountAddress);\n const secondary_signers = deserializer.deserializeVector(AccountAuthenticator);\n const address = AccountAddress.deserialize(deserializer);\n const authenticator = AccountAuthenticator.deserialize(deserializer);\n const fee_payer = { address, authenticator };\n return new TransactionAuthenticatorFeePayer(sender, secondary_signer_addresses, secondary_signers, fee_payer);\n }\n}\n\n/**\n * Transaction authenticator Secp256k1 for a single signer transaction\n *\n * @param public_key Client's public key\n * @param signature Secp256k1 signature of a `RawTransaction`\n */\nexport class TransactionAuthenticatorSecp256k1 extends TransactionAuthenticator {\n public readonly public_key: Secp256k1PublicKey;\n\n public readonly signature: Secp256k1Signature;\n\n constructor(public_key: Secp256k1PublicKey, signature: Secp256k1Signature) {\n super();\n this.public_key = public_key;\n this.signature = signature;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TransactionAuthenticatorVariant.Secp256k1Ecdsa);\n this.public_key.serialize(serializer);\n this.signature.serialize(serializer);\n }\n\n static load(deserializer: Deserializer): TransactionAuthenticatorSecp256k1 {\n const public_key = Secp256k1PublicKey.deserialize(deserializer);\n const signature = Secp256k1Signature.deserialize(deserializer);\n return new TransactionAuthenticatorSecp256k1(public_key, signature);\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Serializer, Serializable } from \"../../bcs/serializer\";\nimport { Deserializer } from \"../../bcs/deserializer\";\n\n/**\n * Representation of a ChainId that can serialized and deserialized\n */\nexport class ChainId extends Serializable {\n public readonly chainId: number;\n\n constructor(chainId: number) {\n super();\n this.chainId = chainId;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU8(this.chainId);\n }\n\n static deserialize(deserializer: Deserializer): ChainId {\n const chainId = deserializer.deserializeU8();\n return new ChainId(chainId);\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Serializable, Serializer } from \"../../bcs/serializer\";\nimport { Deserializer } from \"../../bcs/deserializer\";\nimport { AccountAddress } from \"../../core\";\nimport { Identifier } from \"./identifier\";\nimport { MoveModuleId } from \"../../types\";\n\n/**\n * Representation of a ModuleId that can serialized and deserialized\n * ModuleId means the module address (e.g \"0x1\") and the module name (e.g \"coin\")\n */\nexport class ModuleId extends Serializable {\n public readonly address: AccountAddress;\n\n public readonly name: Identifier;\n\n /**\n * Full name of a module.\n * @param address The account address. e.g \"0x1\"\n * @param name The module name under the \"address\". e.g \"coin\"\n */\n constructor(address: AccountAddress, name: Identifier) {\n super();\n this.address = address;\n this.name = name;\n }\n\n /**\n * Converts a string literal to a ModuleId\n * @param moduleId String literal in format \"account_address::module_name\", e.g. \"0x1::coin\"\n * @returns ModuleId\n */\n static fromStr(moduleId: MoveModuleId): ModuleId {\n const parts = moduleId.split(\"::\");\n if (parts.length !== 2) {\n throw new Error(\"Invalid module id.\");\n }\n return new ModuleId(AccountAddress.fromString(parts[0]), new Identifier(parts[1]));\n }\n\n serialize(serializer: Serializer): void {\n this.address.serialize(serializer);\n this.name.serialize(serializer);\n }\n\n static deserialize(deserializer: Deserializer): ModuleId {\n const address = AccountAddress.deserialize(deserializer);\n const name = Identifier.deserialize(deserializer);\n return new ModuleId(address, name);\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable @typescript-eslint/naming-convention */\n\nimport { Deserializer } from \"../../bcs/deserializer\";\nimport { Serializable, Serializer } from \"../../bcs/serializer\";\nimport { EntryFunctionBytes } from \"../../bcs/serializable/entryFunctionBytes\";\nimport { Bool, U128, U16, U256, U32, U64, U8 } from \"../../bcs/serializable/movePrimitives\";\nimport { MoveVector } from \"../../bcs/serializable/moveStructs\";\nimport { AccountAddress } from \"../../core\";\nimport { Identifier } from \"./identifier\";\nimport { ModuleId } from \"./moduleId\";\nimport type { EntryFunctionArgument, ScriptFunctionArgument, TransactionArgument } from \"./transactionArgument\";\nimport { MoveModuleId, ScriptTransactionArgumentVariants, TransactionPayloadVariants } from \"../../types\";\nimport { TypeTag } from \"../typeTag/typeTag\";\n\n/**\n * Deserialize a Script Transaction Argument\n */\nexport function deserializeFromScriptArgument(deserializer: Deserializer): TransactionArgument {\n // index enum variant\n const index = deserializer.deserializeUleb128AsU32();\n switch (index) {\n case ScriptTransactionArgumentVariants.U8:\n return U8.deserialize(deserializer);\n case ScriptTransactionArgumentVariants.U64:\n return U64.deserialize(deserializer);\n case ScriptTransactionArgumentVariants.U128:\n return U128.deserialize(deserializer);\n case ScriptTransactionArgumentVariants.Address:\n return AccountAddress.deserialize(deserializer);\n case ScriptTransactionArgumentVariants.U8Vector:\n return MoveVector.deserialize(deserializer, U8);\n case ScriptTransactionArgumentVariants.Bool:\n return Bool.deserialize(deserializer);\n case ScriptTransactionArgumentVariants.U16:\n return U16.deserialize(deserializer);\n case ScriptTransactionArgumentVariants.U32:\n return U32.deserialize(deserializer);\n case ScriptTransactionArgumentVariants.U256:\n return U256.deserialize(deserializer);\n default:\n throw new Error(`Unknown variant index for ScriptTransactionArgument: ${index}`);\n }\n}\n\n/**\n * Representation of the supported Transaction Payload\n * that can serialized and deserialized\n */\nexport abstract class TransactionPayload extends Serializable {\n /**\n * Serialize a Transaction Payload\n */\n abstract serialize(serializer: Serializer): void;\n\n /**\n * Deserialize a Transaction Payload\n */\n static deserialize(deserializer: Deserializer): TransactionPayload {\n // index enum variant\n const index = deserializer.deserializeUleb128AsU32();\n switch (index) {\n case TransactionPayloadVariants.Script:\n return TransactionPayloadScript.load(deserializer);\n case TransactionPayloadVariants.EntryFunction:\n return TransactionPayloadEntryFunction.load(deserializer);\n case TransactionPayloadVariants.Multisig:\n return TransactionPayloadMultisig.load(deserializer);\n default:\n throw new Error(`Unknown variant index for TransactionPayload: ${index}`);\n }\n }\n}\n\n/**\n * Representation of a Transaction Payload Script that can serialized and deserialized\n */\nexport class TransactionPayloadScript extends TransactionPayload {\n public readonly script: Script;\n\n constructor(script: Script) {\n super();\n this.script = script;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TransactionPayloadVariants.Script);\n this.script.serialize(serializer);\n }\n\n static load(deserializer: Deserializer): TransactionPayloadScript {\n const script = Script.deserialize(deserializer);\n return new TransactionPayloadScript(script);\n }\n}\n\n/**\n * Representation of a Transaction Payload Entry Function that can serialized and deserialized\n */\nexport class TransactionPayloadEntryFunction extends TransactionPayload {\n public readonly entryFunction: EntryFunction;\n\n constructor(entryFunction: EntryFunction) {\n super();\n this.entryFunction = entryFunction;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TransactionPayloadVariants.EntryFunction);\n this.entryFunction.serialize(serializer);\n }\n\n static load(deserializer: Deserializer): TransactionPayloadEntryFunction {\n const entryFunction = EntryFunction.deserialize(deserializer);\n return new TransactionPayloadEntryFunction(entryFunction);\n }\n}\n\n/**\n * Representation of a Transaction Payload Multi-sig that can serialized and deserialized\n */\nexport class TransactionPayloadMultisig extends TransactionPayload {\n public readonly multiSig: MultiSig;\n\n constructor(multiSig: MultiSig) {\n super();\n this.multiSig = multiSig;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TransactionPayloadVariants.Multisig);\n this.multiSig.serialize(serializer);\n }\n\n static load(deserializer: Deserializer): TransactionPayloadMultisig {\n const multiSig = MultiSig.deserialize(deserializer);\n return new TransactionPayloadMultisig(multiSig);\n }\n}\n\n/**\n * Representation of a EntryFunction that can serialized and deserialized\n */\nexport class EntryFunction {\n public readonly module_name: ModuleId;\n\n public readonly function_name: Identifier;\n\n public readonly type_args: Array<TypeTag>;\n\n public readonly args: Array<EntryFunctionArgument>;\n\n /**\n * Contains the payload to run a function within a module.\n * @param module_name Fully qualified module name in format \"account_address::module_name\" e.g. \"0x1::coin\"\n * @param function_name The function name. e.g \"transfer\"\n * @param type_args Type arguments that move function requires.\n *\n * @example\n * A coin transfer function has one type argument \"CoinType\".\n * ```\n * public entry fun transfer<CoinType>(from: &signer, to: address, amount: u64)\n * ```\n * @param args arguments to the move function.\n *\n * @example\n * A coin transfer function has three arguments \"from\", \"to\" and \"amount\".\n * ```\n * public entry fun transfer<CoinType>(from: &signer, to: address, amount: u64)\n * ```\n */\n constructor(\n module_name: ModuleId,\n function_name: Identifier,\n type_args: Array<TypeTag>,\n args: Array<EntryFunctionArgument>,\n ) {\n this.module_name = module_name;\n this.function_name = function_name;\n this.type_args = type_args;\n this.args = args;\n }\n\n /**\n * A helper function to build a EntryFunction payload from raw primitive values\n *\n * @param module_id Fully qualified module name in format \"AccountAddress::module_id\" e.g. \"0x1::coin\"\n * @param function_name Function name\n * @param type_args Type arguments that move function requires.\n *\n * @example\n * A coin transfer function has one type argument \"CoinType\".\n * ```\n * public(script) fun transfer<CoinType>(from: &signer, to: address, amount: u64,)\n * ```\n * @param args Arguments to the move function.\n *\n * @example\n * A coin transfer function has three arguments \"from\", \"to\" and \"amount\".\n * ```\n * public(script) fun transfer<CoinType>(from: &signer, to: address, amount: u64,)\n * ```\n * @returns EntryFunction\n */\n static build(\n module_id: MoveModuleId,\n function_name: string,\n type_args: Array<TypeTag>,\n args: Array<EntryFunctionArgument>,\n ): EntryFunction {\n return new EntryFunction(ModuleId.fromStr(module_id), new Identifier(function_name), type_args, args);\n }\n\n serialize(serializer: Serializer): void {\n this.module_name.serialize(serializer);\n this.function_name.serialize(serializer);\n serializer.serializeVector<TypeTag>(this.type_args);\n serializer.serializeU32AsUleb128(this.args.length);\n this.args.forEach((item: EntryFunctionArgument) => {\n item.serializeForEntryFunction(serializer);\n });\n }\n\n /**\n * Deserializes an entry function payload with the arguments represented as EntryFunctionBytes instances.\n * @see EntryFunctionBytes\n *\n * NOTE: When you deserialize an EntryFunction payload with this method, the entry function\n * arguments are populated into the deserialized instance as type-agnostic, raw fixed bytes\n * in the form of the EntryFunctionBytes class.\n *\n * In order to correctly deserialize these arguments as their actual type representations, you\n * must know the types of the arguments beforehand and deserialize them yourself individually.\n *\n * One way you could achieve this is by using the ABIs for an entry function and deserializing each\n * argument as its given, corresponding type.\n *\n * @param deserializer\n * @returns A deserialized EntryFunction payload for a transaction.\n *\n */\n static deserialize(deserializer: Deserializer): EntryFunction {\n const module_name = ModuleId.deserialize(deserializer);\n const function_name = Identifier.deserialize(deserializer);\n const type_args = deserializer.deserializeVector(TypeTag);\n\n const length = deserializer.deserializeUleb128AsU32();\n const args: Array<EntryFunctionArgument> = new Array<EntryFunctionBytes>();\n\n for (let i = 0; i < length; i += 1) {\n const fixedBytesLength = deserializer.deserializeUleb128AsU32();\n const fixedBytes = EntryFunctionBytes.deserialize(deserializer, fixedBytesLength);\n args.push(fixedBytes);\n }\n\n return new EntryFunction(module_name, function_name, type_args, args);\n }\n}\n\n/**\n * Representation of a Script that can serialized and deserialized\n */\nexport class Script {\n /**\n * The move module bytecode\n */\n public readonly bytecode: Uint8Array;\n\n /**\n * The type arguments that the bytecode function requires.\n */\n public readonly type_args: Array<TypeTag>;\n\n /**\n * The arguments that the bytecode function requires.\n */\n public readonly args: Array<ScriptFunctionArgument>;\n\n /**\n * Scripts contain the Move bytecodes payload that can be submitted to Aptos chain for execution.\n *\n * @param bytecode The move module bytecode\n * @param type_args The type arguments that the bytecode function requires.\n *\n * @example\n * A coin transfer function has one type argument \"CoinType\".\n * ```\n * public(script) fun transfer<CoinType>(from: &signer, to: address, amount: u64,)\n * ```\n * @param args The arguments that the bytecode function requires.\n *\n * @example\n * A coin transfer function has three arguments \"from\", \"to\" and \"amount\".\n * ```\n * public(script) fun transfer<CoinType>(from: &signer, to: address, amount: u64,)\n * ```\n */\n constructor(bytecode: Uint8Array, type_args: Array<TypeTag>, args: Array<ScriptFunctionArgument>) {\n this.bytecode = bytecode;\n this.type_args = type_args;\n this.args = args;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeBytes(this.bytecode);\n serializer.serializeVector<TypeTag>(this.type_args);\n serializer.serializeU32AsUleb128(this.args.length);\n this.args.forEach((item: ScriptFunctionArgument) => {\n item.serializeForScriptFunction(serializer);\n });\n }\n\n static deserialize(deserializer: Deserializer): Script {\n const bytecode = deserializer.deserializeBytes();\n const type_args = deserializer.deserializeVector(TypeTag);\n const length = deserializer.deserializeUleb128AsU32();\n const args = new Array<ScriptFunctionArgument>();\n for (let i = 0; i < length; i += 1) {\n // Note that we deserialize directly to the Move value, not its Script argument representation.\n // We are abstracting away the Script argument representation because knowing about it is\n // functionally useless.\n const scriptArgument = deserializeFromScriptArgument(deserializer);\n args.push(scriptArgument);\n }\n return new Script(bytecode, type_args, args);\n }\n}\n\n/**\n * Representation of a MultiSig that can serialized and deserialized\n */\nexport class MultiSig {\n public readonly multisig_address: AccountAddress;\n\n public readonly transaction_payload?: MultiSigTransactionPayload;\n\n /**\n * Contains the payload to run a multi-sig account transaction.\n *\n * @param multisig_address The multi-sig account address the transaction will be executed as.\n *\n * @param transaction_payload The payload of the multi-sig transaction. This is optional when executing a multi-sig\n * transaction whose payload is already stored on chain.\n */\n constructor(multisig_address: AccountAddress, transaction_payload?: MultiSigTransactionPayload) {\n this.multisig_address = multisig_address;\n this.transaction_payload = transaction_payload;\n }\n\n serialize(serializer: Serializer): void {\n this.multisig_address.serialize(serializer);\n // Options are encoded with an extra u8 field before the value - 0x0 is none and 0x1 is present.\n // We use serializeBool below to create this prefix value.\n if (this.transaction_payload === undefined) {\n serializer.serializeBool(false);\n } else {\n serializer.serializeBool(true);\n this.transaction_payload.serialize(serializer);\n }\n }\n\n static deserialize(deserializer: Deserializer): MultiSig {\n const multisig_address = AccountAddress.deserialize(deserializer);\n const payloadPresent = deserializer.deserializeBool();\n let transaction_payload;\n if (payloadPresent) {\n transaction_payload = MultiSigTransactionPayload.deserialize(deserializer);\n }\n return new MultiSig(multisig_address, transaction_payload);\n }\n}\n\n/**\n * Representation of a MultiSig Transaction Payload that can serialized and deserialized\n */\nexport class MultiSigTransactionPayload {\n public readonly transaction_payload: EntryFunction;\n\n /**\n * Contains the payload to run a multi-sig account transaction.\n *\n * @param transaction_payload The payload of the multi-sig transaction.\n * This can only be EntryFunction for now but,\n * Script might be supported in the future.\n */\n constructor(transaction_payload: EntryFunction) {\n this.transaction_payload = transaction_payload;\n }\n\n serialize(serializer: Serializer): void {\n /**\n * We can support multiple types of inner transaction payload in the future.\n * For now, it's only EntryFunction but if we support more types,\n * we need to serialize with the right enum values here\n */\n serializer.serializeU32AsUleb128(0);\n this.transaction_payload.serialize(serializer);\n }\n\n static deserialize(deserializer: Deserializer): MultiSigTransactionPayload {\n // This is the enum value indicating which type of payload the multi-sig transaction contains.\n deserializer.deserializeUleb128AsU32();\n return new MultiSigTransactionPayload(EntryFunction.deserialize(deserializer));\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable @typescript-eslint/naming-convention */\n\nimport { Deserializer } from \"../../bcs/deserializer\";\nimport { Serializable, Serializer } from \"../../bcs/serializer\";\nimport { ChainId } from \"./chainId\";\nimport { AccountAddress } from \"../../core\";\nimport { TransactionPayload } from \"./transactionPayload\";\nimport { TransactionVariants } from \"../../types\";\n\n/**\n * Representation of a Raw Transaction that can serialized and deserialized\n */\nexport class RawTransaction extends Serializable {\n public readonly sender: AccountAddress;\n\n public readonly sequence_number: bigint;\n\n public readonly payload: TransactionPayload;\n\n public readonly max_gas_amount: bigint;\n\n public readonly gas_unit_price: bigint;\n\n public readonly expiration_timestamp_secs: bigint;\n\n public readonly chain_id: ChainId;\n\n /**\n * RawTransactions contain the metadata and payloads that can be submitted to Aptos chain for execution.\n * RawTransactions must be signed before Aptos chain can execute them.\n *\n * @param sender The sender Account Address\n * @param sequence_number Sequence number of this transaction. This must match the sequence number stored in\n * the sender's account at the time the transaction executes.\n * @param payload Instructions for the Aptos Blockchain, including publishing a module,\n * execute an entry function or execute a script payload.\n * @param max_gas_amount Maximum total gas to spend for this transaction. The account must have more\n * than this gas or the transaction will be discarded during validation.\n * @param gas_unit_price Price to be paid per gas unit.\n * @param expiration_timestamp_secs The blockchain timestamp at which the blockchain would discard this transaction.\n * @param chain_id The chain ID of the blockchain that this transaction is intended to be run on.\n */\n constructor(\n sender: AccountAddress,\n sequence_number: bigint,\n payload: TransactionPayload,\n max_gas_amount: bigint,\n gas_unit_price: bigint,\n expiration_timestamp_secs: bigint,\n chain_id: ChainId,\n ) {\n super();\n this.sender = sender;\n this.sequence_number = sequence_number;\n this.payload = payload;\n this.max_gas_amount = max_gas_amount;\n this.gas_unit_price = gas_unit_price;\n this.expiration_timestamp_secs = expiration_timestamp_secs;\n this.chain_id = chain_id;\n }\n\n serialize(serializer: Serializer): void {\n this.sender.serialize(serializer);\n serializer.serializeU64(this.sequence_number);\n this.payload.serialize(serializer);\n serializer.serializeU64(this.max_gas_amount);\n serializer.serializeU64(this.gas_unit_price);\n serializer.serializeU64(this.expiration_timestamp_secs);\n this.chain_id.serialize(serializer);\n }\n\n static deserialize(deserializer: Deserializer): RawTransaction {\n const sender = AccountAddress.deserialize(deserializer);\n const sequence_number = deserializer.deserializeU64();\n const payload = TransactionPayload.deserialize(deserializer);\n const max_gas_amount = deserializer.deserializeU64();\n const gas_unit_price = deserializer.deserializeU64();\n const expiration_timestamp_secs = deserializer.deserializeU64();\n const chain_id = ChainId.deserialize(deserializer);\n return new RawTransaction(\n sender,\n sequence_number,\n payload,\n max_gas_amount,\n gas_unit_price,\n expiration_timestamp_secs,\n chain_id,\n );\n }\n}\n\n/**\n * Representation of a Raw Transaction With Data that can serialized and deserialized\n */\nexport abstract class RawTransactionWithData extends Serializable {\n /**\n * Serialize a Raw Transaction With Data\n */\n abstract serialize(serializer: Serializer): void;\n\n /**\n * Deserialize a Raw Transaction With Data\n */\n static deserialize(deserializer: Deserializer): RawTransactionWithData {\n // index enum variant\n const index = deserializer.deserializeUleb128AsU32();\n switch (index) {\n case TransactionVariants.MultiAgentTransaction:\n return MultiAgentRawTransaction.load(deserializer);\n case TransactionVariants.FeePayerTransaction:\n return FeePayerRawTransaction.load(deserializer);\n default:\n throw new Error(`Unknown variant index for RawTransactionWithData: ${index}`);\n }\n }\n}\n\n/**\n * Representation of a Multi Agent Transaction that can serialized and deserialized\n */\nexport class MultiAgentRawTransaction extends RawTransactionWithData {\n /**\n * The raw transaction\n */\n public readonly raw_txn: RawTransaction;\n\n /**\n * The secondary signers on this transaction\n */\n public readonly secondary_signer_addresses: Array<AccountAddress>;\n\n constructor(raw_txn: RawTransaction, secondary_signer_addresses: Array<AccountAddress>) {\n super();\n this.raw_txn = raw_txn;\n this.secondary_signer_addresses = secondary_signer_addresses;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TransactionVariants.MultiAgentTransaction);\n this.raw_txn.serialize(serializer);\n serializer.serializeVector(this.secondary_signer_addresses);\n }\n\n static load(deserializer: Deserializer): MultiAgentRawTransaction {\n const rawTxn = RawTransaction.deserialize(deserializer);\n const secondarySignerAddresses = deserializer.deserializeVector(AccountAddress);\n\n return new MultiAgentRawTransaction(rawTxn, secondarySignerAddresses);\n }\n}\n\n/**\n * Representation of a Fee Payer Transaction that can serialized and deserialized\n */\nexport class FeePayerRawTransaction extends RawTransactionWithData {\n /**\n * The raw transaction\n */\n public readonly raw_txn: RawTransaction;\n\n /**\n * The secondary signers on this transaction - optional and can be empty\n */\n public readonly secondary_signer_addresses: Array<AccountAddress>;\n\n /**\n * The fee payer account address\n */\n public readonly fee_payer_address: AccountAddress;\n\n constructor(\n raw_txn: RawTransaction,\n secondary_signer_addresses: Array<AccountAddress>,\n fee_payer_address: AccountAddress,\n ) {\n super();\n this.raw_txn = raw_txn;\n this.secondary_signer_addresses = secondary_signer_addresses;\n this.fee_payer_address = fee_payer_address;\n }\n\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(TransactionVariants.FeePayerTransaction);\n this.raw_txn.serialize(serializer);\n serializer.serializeVector(this.secondary_signer_addresses);\n this.fee_payer_address.serialize(serializer);\n }\n\n static load(deserializer: Deserializer): FeePayerRawTransaction {\n const rawTxn = RawTransaction.deserialize(deserializer);\n const secondarySignerAddresses = deserializer.deserializeVector(AccountAddress);\n const feePayerAddress = AccountAddress.deserialize(deserializer);\n\n return new FeePayerRawTransaction(rawTxn, secondarySignerAddresses, feePayerAddress);\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable @typescript-eslint/naming-convention */\n\nimport { TransactionAuthenticator } from \"../authenticator/transaction\";\nimport { Deserializer } from \"../../bcs/deserializer\";\nimport { Serializable, Serializer } from \"../../bcs/serializer\";\nimport { RawTransaction } from \"./rawTransaction\";\n\nexport class SignedTransaction extends Serializable {\n public readonly raw_txn: RawTransaction;\n\n public readonly authenticator: TransactionAuthenticator;\n\n /**\n * A SignedTransaction consists of a raw transaction and an authenticator. The authenticator\n * contains a client's public key and the signature of the raw transaction.\n *\n * @see {@link https://aptos.dev/integration/creating-a-signed-transaction | Creating a Signed Transaction}\n *\n * @param raw_txn\n * @param authenticator Contains a client's public key and the signature of the raw transaction.\n * Authenticator has 3 flavors: single signature, multi-signature and multi-agent.\n * @see {@link https://github.com/aptos-labs/aptos-core/blob/main/types/src/transaction/authenticator.rs} for details.\n */\n constructor(raw_txn: RawTransaction, authenticator: TransactionAuthenticator) {\n super();\n this.raw_txn = raw_txn;\n this.authenticator = authenticator;\n }\n\n serialize(serializer: Serializer): void {\n this.raw_txn.serialize(serializer);\n this.authenticator.serialize(serializer);\n }\n\n static deserialize(deserializer: Deserializer): SignedTransaction {\n const raw_txn = RawTransaction.deserialize(deserializer);\n const authenticator = TransactionAuthenticator.deserialize(deserializer);\n return new SignedTransaction(raw_txn, authenticator);\n }\n}\n","/**\n * This file contains the underlying implementations for exposed API surface in\n * the {@link api/transaction_submission}. By moving the methods out into a separate file,\n * other namespaces and processes can access these methods without depending on the entire\n * transaction_submission namespace and without having a dependency cycle error.\n */\n\nimport { AptosConfig } from \"../api/aptosConfig\";\nimport { postAptosFullNode } from \"../client\";\nimport { Account } from \"../core/account\";\nimport { AccountAuthenticator } from \"../transactions/authenticator/account\";\nimport {\n buildTransaction,\n generateTransactionPayload,\n generateSignedTransactionForSimulation,\n generateSignedTransaction,\n sign,\n} from \"../transactions/transaction_builder/transaction_builder\";\nimport { GenerateTransactionInput, AnyRawTransaction, SimulateTransactionData } from \"../transactions/types\";\nimport { UserTransactionResponse, PendingTransactionResponse, MimeType } from \"../types\";\n\n/**\n * Generates any transaction by passing in the required arguments\n *\n * @param args.sender The transaction sender's account address as a HexInput\n * @param args.data EntryFunctionData | ScriptData | MultiSigData\n * @param args.feePayerAddress optional. For a fee payer (aka sponsored) transaction\n * @param args.secondarySignerAddresses optional. For a multi-agent or fee payer (aka sponsored) transactions\n * @param args.options optional. GenerateTransactionOptions type\n *\n * @example\n * For a single signer entry function\n * move function name, move function type arguments, move function arguments\n * `\n * data: {\n * function:\"0x1::aptos_account::transfer\",\n * type_arguments:[]\n * arguments:[receiverAddress,10]\n * }\n * `\n *\n * @example\n * For a single signer script function\n * module bytecode, move function type arguments, move function arguments\n * ```\n * data: {\n * bytecode:\"0x001234567\",\n * type_arguments:[],\n * arguments:[receiverAddress,10]\n * }\n * ```\n *\n * @return A raw transaction type (note that it holds the raw transaction as a bcs serialized data)\n * ```\n * {\n * rawTransaction: Uint8Array,\n * secondarySignerAddresses? : Array<AccountAddress>,\n * feePayerAddress?: AccountAddress\n * }\n * ```\n */\nexport async function generateTransaction(\n args: { aptosConfig: AptosConfig } & GenerateTransactionInput,\n): Promise<AnyRawTransaction> {\n const { aptosConfig, sender, data, options, secondarySignerAddresses, feePayerAddress } = args;\n const payload = await generateTransactionPayload(data);\n return buildTransaction({\n aptosConfig,\n sender,\n payload,\n options,\n secondarySignerAddresses,\n feePayerAddress,\n });\n}\n\n/**\n * Sign a transaction that can later be submitted to chain\n *\n * @param args.signer The signer account to sign the transaction\n * @param args.transaction A raw transaction type (note that it holds the raw transaction as a bcs serialized data)\n * ```\n * {\n * rawTransaction: Uint8Array,\n * secondarySignerAddresses? : Array<AccountAddress>,\n * feePayerAddress?: AccountAddress\n * }\n * ```\n *\n * @return The signer AccountAuthenticator\n */\nexport function signTransaction(args: { signer: Account; transaction: AnyRawTransaction }): AccountAuthenticator {\n const accountAuthenticator = sign({ ...args });\n return accountAuthenticator;\n}\n\n/**\n * Simulates a transaction before singing it.\n *\n * @param args.signerPublicKey The signer public key\n * @param args.transaction The raw transaction to simulate\n * @param args.secondarySignersPublicKeys optional. For when the transaction is a multi signers transaction\n * @param args.feePayerPublicKey optional. For when the transaction is a fee payer (aka sponsored) transaction\n * @param args.options optional. A config to simulate the transaction with\n */\nexport async function simulateTransaction(\n args: { aptosConfig: AptosConfig } & SimulateTransactionData,\n): Promise<Array<UserTransactionResponse>> {\n const { aptosConfig, transaction, signerPublicKey, secondarySignersPublicKeys, feePayerPublicKey, options } = args;\n\n const signedTransaction = generateSignedTransactionForSimulation({\n transaction,\n signerPublicKey,\n secondarySignersPublicKeys,\n feePayerPublicKey,\n options,\n });\n\n const { data } = await postAptosFullNode<Uint8Array, Array<UserTransactionResponse>>({\n aptosConfig,\n body: signedTransaction,\n path: \"transactions/simulate\",\n params: {\n estimate_gas_unit_price: args.options?.estimateGasUnitPrice ?? false,\n estimate_max_gas_amount: args.options?.estimateMaxGasAmount ?? false,\n estimate_prioritized_gas_unit_price: args.options?.estimatePrioritizedGasUnitPrice ?? false,\n },\n originMethod: \"simulateTransaction\",\n contentType: MimeType.BCS_SIGNED_TRANSACTION,\n });\n return data;\n}\n\n/**\n * Submit transaction to chain\n *\n * @param args.transaction A aptos transaction type\n * @param args.senderAuthenticator The account authenticator of the transaction sender\n * @param args.secondarySignerAuthenticators optional. For when the transaction is a multi signers transaction\n *\n * @return PendingTransactionResponse\n */\nexport async function submitTransaction(args: {\n aptosConfig: AptosConfig;\n transaction: AnyRawTransaction;\n senderAuthenticator: AccountAuthenticator;\n secondarySignerAuthenticators?: {\n feePayerAuthenticator?: AccountAuthenticator;\n additionalSignersAuthenticators?: Array<AccountAuthenticator>;\n };\n}): Promise<PendingTransactionResponse> {\n const { aptosConfig } = args;\n const signedTransaction = generateSignedTransaction({ ...args });\n const { data } = await postAptosFullNode<Uint8Array, PendingTransactionResponse>({\n aptosConfig,\n body: signedTransaction,\n path: \"transactions\",\n originMethod: \"submitTransaction\",\n contentType: MimeType.BCS_SIGNED_TRANSACTION,\n });\n return data;\n}\n","import { AptosConfig } from \"../api/aptosConfig\";\nimport { U64 } from \"../bcs/serializable/movePrimitives\";\nimport { Account, AccountAddress } from \"../core\";\nimport { GenerateTransactionOptions, SingleSignerTransaction } from \"../transactions/types\";\nimport { StructTag, TypeTagStruct } from \"../transactions/typeTag/typeTag\";\nimport { HexInput, AnyNumber, MoveResourceType } from \"../types\";\nimport { APTOS_COIN } from \"../utils/const\";\nimport { generateTransaction } from \"./transactionSubmission\";\n\nexport async function transferCoinTransaction(args: {\n aptosConfig: AptosConfig;\n sender: Account;\n recipient: HexInput;\n amount: AnyNumber;\n coinType?: MoveResourceType;\n options?: GenerateTransactionOptions;\n}): Promise<SingleSignerTransaction> {\n const { aptosConfig, sender, recipient, amount, coinType, options } = args;\n const coinStructType = coinType ?? APTOS_COIN;\n const transaction = await generateTransaction({\n aptosConfig,\n sender: sender.accountAddress.toString(),\n data: {\n function: \"0x1::aptos_account::transfer_coins\",\n typeArguments: [new TypeTagStruct(StructTag.fromString(coinStructType))],\n arguments: [AccountAddress.fromHexInput(recipient), new U64(amount)],\n },\n options,\n });\n\n return transaction as SingleSignerTransaction;\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AptosConfig } from \"./aptosConfig\";\nimport { Account } from \"../core\";\nimport { transferCoinTransaction } from \"../internal/coin\";\nimport { SingleSignerTransaction, GenerateTransactionOptions } from \"../transactions/types\";\nimport { AnyNumber, HexInput, MoveResourceType } from \"../types\";\n\n/**\n * A class to handle all `Coin` operations\n */\nexport class Coin {\n readonly config: AptosConfig;\n\n constructor(config: AptosConfig) {\n this.config = config;\n }\n\n /**\n * Generate a transfer coin transaction that can be simulated and/or signed and submitted\n *\n * @param args.sender The sender account\n * @param args.recipient The recipient address\n * @param args.amount The amount to transfer\n * @param args.coinType optional. The coin struct type to transfer. Defaults to 0x1::aptos_coin::AptosCoin\n *\n * @returns SingleSignerTransaction\n */\n async transferCoinTransaction(args: {\n sender: Account;\n recipient: HexInput;\n amount: AnyNumber;\n coinType?: MoveResourceType;\n options?: GenerateTransactionOptions;\n }): Promise<SingleSignerTransaction> {\n return transferCoinTransaction({ aptosConfig: this.config, ...args });\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * This file contains the underlying implementations for exposed API surface in\n * the {@link api/digitalAsset}. By moving the methods out into a separate file,\n * other namespaces and processes can access these methods without depending on the entire\n * digitalAsset namespace and without having a dependency cycle error.\n */\n\nimport { AptosConfig } from \"../api/aptosConfig\";\nimport { MoveString, MoveVector, Bool, U64, U8 } from \"../bcs\";\nimport { Account, Hex } from \"../core\";\nimport { GenerateTransactionOptions, SingleSignerTransaction } from \"../transactions/types\";\nimport {\n AnyNumber,\n GetCollectionDataResponse,\n GetCurrentTokenOwnershipResponse,\n GetOwnedTokensResponse,\n GetTokenActivityResponse,\n GetTokenDataResponse,\n HexInput,\n OrderBy,\n PaginationArgs,\n TokenStandard,\n} from \"../types\";\nimport {\n GetCollectionDataQuery,\n GetCurrentTokenOwnershipQuery,\n GetTokenActivityQuery,\n GetTokenDataQuery,\n} from \"../types/generated/operations\";\nimport {\n GetCollectionData,\n GetCurrentTokenOwnership,\n GetTokenActivity,\n GetTokenData,\n} from \"../types/generated/queries\";\nimport { queryIndexer } from \"./general\";\nimport { generateTransaction } from \"./transactionSubmission\";\nimport { MAX_U64_BIG_INT } from \"../bcs/consts\";\nimport { CurrentTokenOwnershipsV2BoolExp, TokenActivitiesV2BoolExp } from \"../types/generated/types\";\n\n// TODO: Support properties when minting.\nexport interface MintTokenOptions {\n propertyKeys?: Array<string>;\n propertyTypes?: Array<string>;\n propertyValues?: Array<string>;\n}\n\nexport async function mintTokenTransaction(args: {\n aptosConfig: AptosConfig;\n creator: Account;\n collection: string;\n description: string;\n name: string;\n uri: string;\n options?: GenerateTransactionOptions;\n}): Promise<SingleSignerTransaction> {\n const { aptosConfig, options, creator } = args;\n const transaction = await generateTransaction({\n aptosConfig,\n sender: creator.accountAddress.toString(),\n data: {\n function: \"0x4::aptos_token::mint\",\n arguments: [\n new MoveString(args.collection),\n new MoveString(args.description),\n new MoveString(args.name),\n new MoveString(args.uri),\n MoveVector.MoveString([]),\n MoveVector.MoveString([]),\n new MoveVector<MoveVector<U8>>([]),\n ],\n },\n options,\n });\n return transaction as SingleSignerTransaction;\n}\n\nexport async function getTokenData(args: {\n aptosConfig: AptosConfig;\n tokenAddress: HexInput;\n}): Promise<GetTokenDataResponse> {\n const { aptosConfig, tokenAddress } = args;\n\n const whereCondition: any = {\n token_data_id: { _eq: Hex.fromHexInput(tokenAddress).toString() },\n };\n\n const graphqlQuery = {\n query: GetTokenData,\n variables: {\n where_condition: whereCondition,\n },\n };\n\n const data = await queryIndexer<GetTokenDataQuery>({\n aptosConfig,\n query: graphqlQuery,\n originMethod: \"getTokenData\",\n });\n\n return data.current_token_datas_v2[0];\n}\n\nexport async function getCurrentTokenOwnership(args: {\n aptosConfig: AptosConfig;\n tokenAddress: HexInput;\n}): Promise<GetCurrentTokenOwnershipResponse> {\n const { aptosConfig, tokenAddress } = args;\n\n const whereCondition: CurrentTokenOwnershipsV2BoolExp = {\n token_data_id: { _eq: Hex.fromHexInput(tokenAddress).toString() },\n };\n\n const graphqlQuery = {\n query: GetCurrentTokenOwnership,\n variables: {\n where_condition: whereCondition,\n },\n };\n\n const data = await queryIndexer<GetCurrentTokenOwnershipQuery>({\n aptosConfig,\n query: graphqlQuery,\n originMethod: \"getCurrentTokenOwnership\",\n });\n\n return data.current_token_ownerships_v2[0];\n}\n\nexport async function getOwnedTokens(args: {\n aptosConfig: AptosConfig;\n ownerAddress: HexInput;\n options?: {\n pagination?: PaginationArgs;\n orderBy?: OrderBy<GetTokenActivityResponse[0]>;\n };\n}): Promise<GetOwnedTokensResponse> {\n const { aptosConfig, ownerAddress, options } = args;\n\n const whereCondition: CurrentTokenOwnershipsV2BoolExp = {\n owner_address: { _eq: Hex.fromHexInput(ownerAddress).toString() },\n };\n\n const graphqlQuery = {\n query: GetCurrentTokenOwnership,\n variables: {\n where_condition: whereCondition,\n offset: options?.pagination?.offset,\n limit: options?.pagination?.limit,\n order_by: options?.orderBy,\n },\n };\n\n const data = await queryIndexer<GetCurrentTokenOwnershipQuery>({\n aptosConfig,\n query: graphqlQuery,\n originMethod: \"getOwnedTokens\",\n });\n\n return data.current_token_ownerships_v2;\n}\n\nexport async function getTokenActivity(args: {\n aptosConfig: AptosConfig;\n tokenAddress: HexInput;\n options?: {\n pagination?: PaginationArgs;\n orderBy?: OrderBy<GetTokenActivityResponse[0]>;\n };\n}): Promise<GetTokenActivityResponse> {\n const { aptosConfig, tokenAddress, options } = args;\n\n const whereCondition: TokenActivitiesV2BoolExp = {\n token_data_id: { _eq: Hex.fromHexInput(tokenAddress).toString() },\n };\n\n const graphqlQuery = {\n query: GetTokenActivity,\n variables: {\n where_condition: whereCondition,\n offset: options?.pagination?.offset,\n limit: options?.pagination?.limit,\n order_by: options?.orderBy,\n },\n };\n\n const data = await queryIndexer<GetTokenActivityQuery>({\n aptosConfig,\n query: graphqlQuery,\n originMethod: \"getTokenActivity\",\n });\n\n return data.token_activities_v2;\n}\n\nexport interface CreateCollectionOptions {\n maxSupply?: AnyNumber;\n mutableDescription?: boolean;\n mutableRoyalty?: boolean;\n mutableURI?: boolean;\n mutableTokenDescription?: boolean;\n mutableTokenName?: boolean;\n mutableTokenProperties?: boolean;\n mutableTokenURI?: boolean;\n tokensBurnableByCreator?: boolean;\n tokensFreezableByCreator?: boolean;\n royaltyNumerator?: number;\n royaltyDenominator?: number;\n}\n\nexport async function createCollectionTransaction(\n args: {\n aptosConfig: AptosConfig;\n creator: Account;\n description: string;\n name: string;\n uri: string;\n options?: GenerateTransactionOptions;\n } & CreateCollectionOptions,\n): Promise<SingleSignerTransaction> {\n const { aptosConfig, options, creator } = args;\n const transaction = await generateTransaction({\n aptosConfig,\n sender: creator.accountAddress.toString(),\n data: {\n function: \"0x4::aptos_token::create_collection\",\n arguments: [\n // Do not change the order\n new MoveString(args.description),\n new U64(args.maxSupply ?? MAX_U64_BIG_INT),\n new MoveString(args.name),\n new MoveString(args.uri),\n new Bool(args.mutableDescription ?? true),\n new Bool(args.mutableRoyalty ?? true),\n new Bool(args.mutableURI ?? true),\n new Bool(args.mutableTokenDescription ?? true),\n new Bool(args.mutableTokenName ?? true),\n new Bool(args.mutableTokenProperties ?? true),\n new Bool(args.mutableTokenURI ?? true),\n new Bool(args.tokensBurnableByCreator ?? true),\n new Bool(args.tokensFreezableByCreator ?? true),\n new U64(args.royaltyNumerator ?? 0),\n new U64(args.royaltyDenominator ?? 1),\n ],\n },\n options,\n });\n return transaction as SingleSignerTransaction;\n}\n\nexport async function getCollectionData(args: {\n aptosConfig: AptosConfig;\n creatorAddress: HexInput;\n collectionName: string;\n options?: {\n tokenStandard?: TokenStandard;\n };\n}): Promise<GetCollectionDataResponse> {\n const { aptosConfig, creatorAddress, collectionName, options } = args;\n const address = Hex.fromHexInput(creatorAddress).toString();\n\n const whereCondition: any = {\n collection_name: { _eq: collectionName },\n creator_address: { _eq: address },\n };\n\n if (options?.tokenStandard) {\n whereCondition.token_standard = { _eq: options?.tokenStandard ?? \"v2\" };\n }\n\n const graphqlQuery = {\n query: GetCollectionData,\n variables: {\n where_condition: whereCondition,\n },\n };\n const data = await queryIndexer<GetCollectionDataQuery>({\n aptosConfig,\n query: graphqlQuery,\n originMethod: \"getCollectionData\",\n });\n\n if (data.current_collections_v2.length === 0) {\n throw Error(\"Collection not found\");\n }\n\n return data.current_collections_v2[0];\n}\n\nexport async function getCollectionId(args: {\n aptosConfig: AptosConfig;\n creatorAddress: HexInput;\n collectionName: string;\n options?: {\n tokenStandard?: TokenStandard;\n };\n}): Promise<string> {\n return (await getCollectionData(args)).collection_id;\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n GetCollectionDataResponse,\n GetCurrentTokenOwnershipResponse,\n GetOwnedTokensResponse,\n GetTokenActivityResponse,\n GetTokenDataResponse,\n HexInput,\n OrderBy,\n PaginationArgs,\n TokenStandard,\n} from \"../types\";\nimport { AptosConfig } from \"./aptosConfig\";\nimport { Account } from \"../core\";\nimport { GenerateTransactionOptions, SingleSignerTransaction } from \"../transactions/types\";\nimport {\n CreateCollectionOptions,\n createCollectionTransaction,\n getCollectionData,\n getCollectionId,\n getCurrentTokenOwnership,\n getOwnedTokens,\n getTokenActivity,\n getTokenData,\n mintTokenTransaction,\n} from \"../internal/digitalAsset\";\n\n/**\n * A class to query all `DigitalAsset` related queries on Aptos.\n */\nexport class DigitalAsset {\n readonly config: AptosConfig;\n\n constructor(config: AptosConfig) {\n this.config = config;\n }\n\n /**\n * Creates a new collection within the specified account\n *\n * @param args.creator the account of the collection's creator\n * @param args.description the description of the collection\n * @param args.name the name of the collection\n * @param args.uri the URI to additional info about the collection\n *\n * The parameters below are optional.\n * @param args.maxSupply controls the max supply of the tokens - defaults MAX_U64_BIG_INT\n * @param args.mutableDescription controls mutability of the collection's description - defaults true\n * @param args.mutableRoyalty controls mutability of the collection's description - defaults true\n * @param args.mutableUri controls mutability of the collection's URI - defaults true\n * @param args.mutableTokenDescription controls mutability of the token's description - defaults true\n * @param args.mutableTokenName controls mutability of the token's name - defaults true\n * @param args.mutableTokenProperties controls mutability of token's properties - defaults true\n * @param args.mutableTokenUri controls mutability of the token's URI - defaults true\n * @param args.tokensBurnableByCreator controls whether tokens can be burnable by the creator - defaults true\n * @param args.tokensFreezableByCreator controls whether tokens can be frozen by the creator - defaults true\n * @param args.royaltyNumerator the numerator of the royalty to be paid to the creator when a token is transferred - defaults 0\n * @param args.royaltyDenominator the denominator of the royalty to be paid to the creator when a token is transferred -\n * defaults 1\n *\n * @returns A SingleSignerTransaction that when submitted will create the collection.\n */\n async createCollectionTransaction(\n args: {\n creator: Account;\n description: string;\n name: string;\n uri: string;\n options?: GenerateTransactionOptions;\n } & CreateCollectionOptions,\n ): Promise<SingleSignerTransaction> {\n return createCollectionTransaction({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Queries data of a specific collection by the collection creator address and the collection name.\n *\n * If, for some reason, a creator account has 2 collections with the same name in v1 and v2,\n * can pass an optional `tokenStandard` parameter to query a specific standard\n *\n * @param args.creatorAddress the address of the collection's creator\n * @param args.collectionName the name of the collection\n * @param args.options.tokenStandard the token standard to query\n * @returns GetCollectionDataResponse response type\n */\n async getCollectionData(args: {\n creatorAddress: HexInput;\n collectionName: string;\n options?: {\n tokenStandard?: TokenStandard;\n };\n }): Promise<GetCollectionDataResponse> {\n return getCollectionData({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Queries a collection's ID.\n *\n * This is the same as the collection's object address in V2, but V1 does\n * not use objects, and does not have an address\n *\n * @param args.creatorAddress the address of the collection's creator\n * @param args.collectionName the name of the collection\n * @param args.options.tokenStandard the token standard to query\n * @returns the collection id\n */\n async getCollectionId(args: {\n creatorAddress: HexInput;\n collectionName: string;\n options?: {\n tokenStandard?: TokenStandard;\n };\n }): Promise<string> {\n return getCollectionId({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Create a transaction to mint a token into the creators account within an existing collection.\n *\n * @param args.creator the creator of the collection\n * @param args.collection the name of the collection the token belongs to\n * @param args.description the description of the token\n * @param args.name the name of the token\n * @param args.uri the URI to additional info about the token\n *\n * @returns A SingleSignerTransaction that can be simulated or submitted to chain\n */\n async mintTokenTransaction(args: {\n creator: Account;\n collection: string;\n description: string;\n name: string;\n uri: string;\n options?: GenerateTransactionOptions;\n }): Promise<SingleSignerTransaction> {\n return mintTokenTransaction({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Gets token data given the address of a token.\n *\n * @param args.tokenAddress The address of the token\n * @returns GetTokenDataResponse containing relevant data to the token.\n */\n async getTokenData(args: { tokenAddress: HexInput }): Promise<GetTokenDataResponse> {\n return getTokenData({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Gets token ownership data given the address of a token.\n *\n * @param args.tokenAddress The address of the token\n * @returns GetCurrentTokenOwnershipResponse containing relevant ownership data of the token.\n */\n async getCurrentTokenOwnership(args: { tokenAddress: HexInput }): Promise<GetCurrentTokenOwnershipResponse> {\n return getCurrentTokenOwnership({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Gets the tokens that the given address owns.\n *\n * @param args.ownerAddress The address of the owner\n * @returns GetOwnedTokensResponse containing ownership data of the tokens belonging to the ownerAddresss.\n */\n async getOwnedTokens(args: {\n ownerAddress: HexInput;\n options?: {\n pagination?: PaginationArgs;\n orderBy?: OrderBy<GetOwnedTokensResponse[0]>;\n };\n }): Promise<GetOwnedTokensResponse> {\n return getOwnedTokens({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Gets the activity data given the address of a token.\n *\n * @param args.tokenAddress The address of the token\n * @returns GetTokenActivityResponse containing relevant activity data to the token.\n */\n async getTokenActivity(args: {\n tokenAddress: HexInput;\n options?: {\n pagination?: PaginationArgs;\n orderBy?: OrderBy<GetTokenActivityResponse[0]>;\n };\n }): Promise<GetTokenActivityResponse> {\n return getTokenActivity({ aptosConfig: this.config, ...args });\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * This file contains the underlying implementations for exposed API surface in\n * the {@link api/event}. By moving the methods out into a separate file,\n * other namespaces and processes can access these methods without depending on the entire\n * event namespace and without having a dependency cycle error.\n */\n\nimport { AptosConfig } from \"../api/aptosConfig\";\nimport { AccountAddress } from \"../core\";\nimport { AnyNumber, GetEventsResponse, HexInput, PaginationArgs, MoveResourceType, OrderBy } from \"../types\";\nimport { GetEventsQuery } from \"../types/generated/operations\";\nimport { GetEvents } from \"../types/generated/queries\";\nimport { EventsBoolExp } from \"../types/generated/types\";\nimport { queryIndexer } from \"./general\";\n\nexport async function getAccountEventsByCreationNumber(args: {\n aptosConfig: AptosConfig;\n accountAddress: HexInput;\n creationNumber: AnyNumber;\n}): Promise<GetEventsResponse> {\n const { accountAddress, aptosConfig, creationNumber } = args;\n const address = AccountAddress.fromHexInput(accountAddress).toString();\n\n const whereCondition: EventsBoolExp = {\n account_address: { _eq: address },\n creation_number: { _eq: creationNumber },\n };\n\n return getEvents({ aptosConfig, options: { where: whereCondition } });\n}\n\nexport async function getAccountEventsByEventType(args: {\n aptosConfig: AptosConfig;\n accountAddress: HexInput;\n eventType: MoveResourceType;\n options?: {\n pagination?: PaginationArgs;\n orderBy?: OrderBy<GetEventsResponse[0]>;\n };\n}): Promise<GetEventsResponse> {\n const { accountAddress, aptosConfig, eventType, options } = args;\n const address = AccountAddress.fromHexInput(accountAddress).toString();\n\n const whereCondition: EventsBoolExp = {\n account_address: { _eq: address },\n type: { _eq: eventType },\n };\n\n const customOptions = {\n where: whereCondition,\n pagination: options?.pagination,\n orderBy: options?.orderBy,\n };\n\n return getEvents({ aptosConfig, options: customOptions });\n}\n\nexport async function getEvents(args: {\n aptosConfig: AptosConfig;\n options?: {\n where?: EventsBoolExp;\n pagination?: PaginationArgs;\n orderBy?: OrderBy<GetEventsResponse[0]>;\n };\n}): Promise<GetEventsResponse> {\n const { aptosConfig, options } = args;\n\n const graphqlQuery = {\n query: GetEvents,\n variables: {\n where_condition: options?.where,\n offset: options?.pagination?.offset,\n limit: options?.pagination?.limit,\n order_by: options?.orderBy,\n },\n };\n\n const data = await queryIndexer<GetEventsQuery>({\n aptosConfig,\n query: graphqlQuery,\n originMethod: \"getEvents\",\n });\n\n return data.events;\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AptosConfig } from \"./aptosConfig\";\nimport { getAccountEventsByCreationNumber, getAccountEventsByEventType, getEvents } from \"../internal/event\";\nimport { AnyNumber, GetEventsResponse, HexInput, MoveResourceType, OrderBy, PaginationArgs } from \"../types\";\nimport { EventsBoolExp } from \"../types/generated/types\";\n\n/**\n * A class to query all `Event` Aptos related queries\n */\nexport class Event {\n readonly config: AptosConfig;\n\n constructor(config: AptosConfig) {\n this.config = config;\n }\n\n /**\n * Get events by creation number and an account address\n *\n * @param args.accountAddress - The account address\n * @param args.creationNumber - The event creation number\n *\n * @returns Promise<GetEventsResponse>\n */\n async getAccountEventsByCreationNumber(args: {\n accountAddress: HexInput;\n creationNumber: AnyNumber;\n }): Promise<GetEventsResponse> {\n return getAccountEventsByCreationNumber({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Get events by event type and an account address\n *\n * @param args.accountAddress - The account address\n * @param args.eventType - The event type\n *\n * @returns Promise<GetEventsResponse>\n */\n async getAccountEventsByEventType(args: {\n accountAddress: HexInput;\n eventType: MoveResourceType;\n options?: {\n pagination?: PaginationArgs;\n orderBy?: OrderBy<GetEventsResponse[0]>;\n };\n }): Promise<GetEventsResponse> {\n return getAccountEventsByEventType({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Get all events\n *\n * An optional `where` can be passed in to filter out the response.\n *\n * @example\n * ```\n * { where:\n * {\n * transaction_version: { _eq: 123456 },\n * }\n * }\n * ```\n *\n * @returns GetEventsQuery response type\n */\n async getEvents(args?: {\n options?: {\n where?: EventsBoolExp;\n pagination?: PaginationArgs;\n orderBy?: OrderBy<GetEventsResponse[0]>;\n };\n }): Promise<GetEventsResponse> {\n return getEvents({ aptosConfig: this.config, ...args });\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * This file contains the underlying implementations for exposed API surface in\n * the {@link api/faucet}. By moving the methods out into a separate file,\n * other namespaces and processes can access these methods without depending on the entire\n * faucet namespace and without having a dependency cycle error.\n */\n\nimport { AptosConfig } from \"../api/aptosConfig\";\nimport { postAptosFaucet } from \"../client\";\nimport { AccountAddress } from \"../core\";\nimport { HexInput } from \"../types\";\nimport { DEFAULT_TXN_TIMEOUT_SEC } from \"../utils/const\";\nimport { waitForTransaction } from \"./transaction\";\n\nexport async function fundAccount(args: {\n aptosConfig: AptosConfig;\n accountAddress: HexInput;\n amount: number;\n timeoutSecs?: number;\n}): Promise<string> {\n const { aptosConfig, accountAddress, amount } = args;\n const timeoutSecs = args.timeoutSecs ?? DEFAULT_TXN_TIMEOUT_SEC;\n const { data } = await postAptosFaucet<any, { txn_hashes: Array<string> }>({\n aptosConfig,\n path: \"fund\",\n body: {\n address: AccountAddress.fromHexInput(accountAddress).toString(),\n amount,\n },\n originMethod: \"fundAccount\",\n });\n\n const txnHash = data.txn_hashes[0];\n\n await waitForTransaction({ aptosConfig, transactionHash: txnHash, options: { timeoutSecs } });\n\n return txnHash;\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AptosConfig } from \"./aptosConfig\";\nimport { fundAccount } from \"../internal/faucet\";\nimport { HexInput } from \"../types\";\n\n/**\n * A class to query all `Faucet` related queries on Aptos.\n */\nexport class Faucet {\n readonly config: AptosConfig;\n\n constructor(config: AptosConfig) {\n this.config = config;\n }\n\n /**\n * This creates an account if it does not exist and mints the specified amount of\n * coins into that account\n *\n * @param args.accountAddress Address of the account to fund\n * @param args.amount Amount of tokens to fund the account with\n * @param args.timeoutSecs Timeout in seconds. Defaults to 20 seconds.\n * @returns Transaction hash of the transaction that funded the account\n */\n async fundAccount(args: { accountAddress: HexInput; amount: number; timeoutSecs?: number }): Promise<string> {\n return fundAccount({ aptosConfig: this.config, ...args });\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * This file contains the underlying implementations for exposed API surface in\n * the {@link api/fungible_asset}. By moving the methods out into a separate file,\n * other namespaces and processes can access these methods without depending on the entire\n * fungible_asset namespace and without having a dependency cycle error.\n */\n\nimport { AptosConfig } from \"../api/aptosConfig\";\nimport {\n GetCurrentFungibleAssetBalancesResponse,\n GetFungibleAssetActivitiesResponse,\n GetFungibleAssetMetadataResponse,\n PaginationArgs,\n} from \"../types\";\nimport { queryIndexer } from \"./general\";\nimport {\n GetCurrentFungibleAssetBalances,\n GetFungibleAssetActivities,\n GetFungibleAssetMetadata,\n} from \"../types/generated/queries\";\nimport {\n GetCurrentFungibleAssetBalancesQuery,\n GetFungibleAssetActivitiesQuery,\n GetFungibleAssetMetadataQuery,\n} from \"../types/generated/operations\";\nimport {\n CurrentFungibleAssetBalancesBoolExp,\n FungibleAssetActivitiesBoolExp,\n FungibleAssetMetadataBoolExp,\n} from \"../types/generated/types\";\n\nexport async function getFungibleAssetMetadata(args: {\n aptosConfig: AptosConfig;\n options?: {\n pagination?: PaginationArgs;\n where?: FungibleAssetMetadataBoolExp;\n };\n}): Promise<GetFungibleAssetMetadataResponse> {\n const { aptosConfig, options } = args;\n\n const graphqlQuery = {\n query: GetFungibleAssetMetadata,\n variables: {\n where_condition: options?.where,\n limit: options?.pagination?.limit,\n offset: options?.pagination?.offset,\n },\n };\n\n const data = await queryIndexer<GetFungibleAssetMetadataQuery>({\n aptosConfig,\n query: graphqlQuery,\n originMethod: \"getFungibleAssetMetadata\",\n });\n\n return data.fungible_asset_metadata;\n}\n\nexport async function getFungibleAssetActivities(args: {\n aptosConfig: AptosConfig;\n options?: {\n pagination?: PaginationArgs;\n where?: FungibleAssetActivitiesBoolExp;\n };\n}): Promise<GetFungibleAssetActivitiesResponse> {\n const { aptosConfig, options } = args;\n\n const graphqlQuery = {\n query: GetFungibleAssetActivities,\n variables: {\n where_condition: options?.where,\n limit: options?.pagination?.limit,\n offset: options?.pagination?.offset,\n },\n };\n\n const data = await queryIndexer<GetFungibleAssetActivitiesQuery>({\n aptosConfig,\n query: graphqlQuery,\n originMethod: \"getFungibleAssetActivities\",\n });\n\n return data.fungible_asset_activities;\n}\n\nexport async function getCurrentFungibleAssetBalances(args: {\n aptosConfig: AptosConfig;\n options?: {\n pagination?: PaginationArgs;\n where?: CurrentFungibleAssetBalancesBoolExp;\n };\n}): Promise<GetCurrentFungibleAssetBalancesResponse> {\n const { aptosConfig, options } = args;\n\n const graphqlQuery = {\n query: GetCurrentFungibleAssetBalances,\n variables: {\n where_condition: options?.where,\n limit: options?.pagination?.limit,\n offset: options?.pagination?.offset,\n },\n };\n\n const data = await queryIndexer<GetCurrentFungibleAssetBalancesQuery>({\n aptosConfig,\n query: graphqlQuery,\n originMethod: \"getCurrentFungibleAssetBalances\",\n });\n\n return data.current_fungible_asset_balances;\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n GetCurrentFungibleAssetBalancesResponse,\n GetFungibleAssetActivitiesResponse,\n GetFungibleAssetMetadataResponse,\n PaginationArgs,\n} from \"../types\";\nimport { AptosConfig } from \"./aptosConfig\";\nimport {\n getCurrentFungibleAssetBalances,\n getFungibleAssetActivities,\n getFungibleAssetMetadata,\n} from \"../internal/fungibleAsset\";\nimport {\n CurrentFungibleAssetBalancesBoolExp,\n FungibleAssetActivitiesBoolExp,\n FungibleAssetMetadataBoolExp,\n} from \"../types/generated/types\";\n\n/**\n * A class to query all `FungibleAsset` related queries on Aptos.\n */\nexport class FungibleAsset {\n readonly config: AptosConfig;\n\n constructor(config: AptosConfig) {\n this.config = config;\n }\n\n /**\n * Queries the current fungible asset metadata.\n *\n * This query returns the fungible asset metadata for all fungible assets.\n * It can be filtered by creator address and asset type.\n *\n * @returns getFungibleAssetMetadata A list of fungible asset metadata\n */\n async getFungibleAssetMetadata(args?: {\n options?: {\n pagination?: PaginationArgs;\n where?: FungibleAssetMetadataBoolExp;\n };\n }): Promise<GetFungibleAssetMetadataResponse> {\n return getFungibleAssetMetadata({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Queries the fungible asset activities\n *\n * This query returns the fungible asset activities.\n * It can be filtered by owner address, asset type, and type.\n *\n * @returns GetFungibleAssetActivitiesResponse A list of fungible asset metadata\n */\n async getFungibleAssetActivities(args?: {\n options?: {\n pagination?: PaginationArgs;\n where?: FungibleAssetActivitiesBoolExp;\n };\n }): Promise<GetFungibleAssetActivitiesResponse> {\n return getFungibleAssetActivities({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Queries the fungible asset balance\n *\n * This query returns the fungible asset balance.\n * It can be filtered by owner address, and asset type\n *\n * @returns GetCurrentFungibleAssetBalancesResponse A list of fungible asset metadata\n */\n async getCurrentFungibleAssetBalances(args?: {\n options?: {\n pagination?: PaginationArgs;\n where?: CurrentFungibleAssetBalancesBoolExp;\n };\n }): Promise<GetCurrentFungibleAssetBalancesResponse> {\n return getCurrentFungibleAssetBalances({ aptosConfig: this.config, ...args });\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AptosConfig } from \"./aptosConfig\";\nimport {\n getBlockByHeight,\n getBlockByVersion,\n getChainTopUserTransactions,\n getIndexerLastSuccessVersion,\n getLedgerInfo,\n getTableItem,\n queryIndexer,\n view,\n} from \"../internal/general\";\nimport {\n AnyNumber,\n Block,\n GetChainTopUserTransactionsResponse,\n GraphqlQuery,\n LedgerInfo,\n LedgerVersion,\n MoveValue,\n TableItemRequest,\n ViewRequestData,\n} from \"../types\";\n\n/**\n * A class to query all `General` Aptos related queries\n */\nexport class General {\n readonly config: AptosConfig;\n\n constructor(config: AptosConfig) {\n this.config = config;\n }\n\n /**\n * Queries for the Aptos ledger info\n *\n * @returns Aptos Ledger Info\n *\n * @example An example of the returned data\n * ```\n * {\n * \"chain_id\": 4,\n * \"epoch\": \"8\",\n * \"ledger_version\": \"714\",\n * \"oldest_ledger_version\": \"0\",\n * \"ledger_timestamp\": \"1694695496521775\",\n * \"node_role\": \"validator\",\n * \"oldest_block_height\": \"0\",\n * \"block_height\": \"359\",\n * \"git_hash\": \"c82193f36f4e185fed9f68c4ad21f6c6dd390c6e\"\n * }\n * ```\n */\n async getLedgerInfo(): Promise<LedgerInfo> {\n return getLedgerInfo({ aptosConfig: this.config });\n }\n\n /**\n * Queries for the chain id\n *\n * @returns The chain id\n */\n async getChainId(): Promise<number> {\n const result = await this.getLedgerInfo();\n return result.chain_id;\n }\n\n /**\n * Queries for block by transaction version\n *\n * @param args.ledgerVersion Ledger version to lookup block information for\n * @param args.options.withTransactions If set to true, include all transactions in the block\n *\n * @returns Block information with optional transactions\n */\n async getBlockByVersion(args: {\n ledgerVersion: AnyNumber;\n options?: { withTransactions?: boolean };\n }): Promise<Block> {\n return getBlockByVersion({\n aptosConfig: this.config,\n ...args,\n });\n }\n\n /**\n * Get block by block height\n *\n * @param args.blockHeight Block height to lookup. Starts at 0\n * @param args.options.withTransactions If set to true, include all transactions in the block\n *\n * @returns Block with optional transactions\n */\n async getBlockByHeight(args: { blockHeight: AnyNumber; options?: { withTransactions?: boolean } }): Promise<Block> {\n return getBlockByHeight({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Queries for a table item for a table identified by the handle and the key for the item.\n * Key and value types need to be passed in to help with key serialization and value deserialization.\n * @param args.handle A pointer to where that table is stored\n * @param args.data Object that describes table item\n * @param args.options.ledgerVersion The ledger version to query, if not provided it will get the latest version\n *\n * @example https://fullnode.devnet.aptoslabs.com/v1/accounts/0x1/resource/0x1::coin::CoinInfo%3C0x1::aptos_coin::AptosCoin%3E\n * {\n * data.key_type = \"address\" // Move type of table key\n * data.value_type = \"u128\" // Move type of table value\n * data.key = \"0x619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935\" // Value of table key\n * }\n *\n * @returns Table item value rendered in JSON\n */\n async getTableItem(args: { handle: string; data: TableItemRequest; options?: LedgerVersion }): Promise<any> {\n return getTableItem({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Queries for a Move view function\n * @param args.payload Payload for the view function\n * @param args.options.ledgerVersion The ledger version to query, if not provided it will get the latest version\n * @example\n * `\n * const payload: ViewRequest = {\n * function: \"0x1::coin::balance\",\n * type_arguments: [\"0x1::aptos_coin::AptosCoin\"],\n * arguments: [accountAddress],\n * };\n * `\n *\n * @returns an array of Move values\n */\n async view(args: { payload: ViewRequestData; options?: LedgerVersion }): Promise<Array<MoveValue>> {\n return view({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Queries top user transactions\n *\n * @param args.limit The number of transactions to return\n * @returns GetChainTopUserTransactionsResponse\n */\n async getChainTopUserTransactions(args: { limit: number }): Promise<GetChainTopUserTransactionsResponse> {\n return getChainTopUserTransactions({\n aptosConfig: this.config,\n ...args,\n });\n }\n\n /**\n * A generic function for retrieving data from Aptos Indexer.\n * For more detailed queries specification see\n * {@link https://cloud.hasura.io/public/graphiql?endpoint=https://indexer.mainnet.aptoslabs.com/v1/graphql}\n *\n * @param args.query.query A GraphQL query\n * @param args.query.variables The variables for the query\n * @example\n * ```\n * {\n * query: `query MyQuery {\n ledger_infos {\n chain_id\n }\n }`;\n * }\n * ```\n *\n * @return The provided T type\n */\n async queryIndexer<T>(args: { query: GraphqlQuery }): Promise<T> {\n return queryIndexer<T>({\n aptosConfig: this.config,\n ...args,\n });\n }\n\n /**\n * Queries for the last successful indexer version\n *\n * This is useful to tell what ledger version the indexer is updated to, as it can be behind the full nodes.\n */\n async getIndexerLastSuccessVersion(): Promise<number> {\n return getIndexerLastSuccessVersion({ aptosConfig: this.config });\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * This file contains the underlying implementations for exposed API surface in\n * the {@link api/staking}. By moving the methods out into a separate file,\n * other namespaces and processes can access these methods without depending on the entire\n * faucet namespace and without having a dependency cycle error.\n */\n\nimport { AptosConfig } from \"../api/aptosConfig\";\nimport { Hex } from \"../core\";\nimport { GetDelegatedStakingActivitiesResponse, GetNumberOfDelegatorsResponse, HexInput, OrderBy } from \"../types\";\nimport { GetDelegatedStakingActivitiesQuery, GetNumberOfDelegatorsQuery } from \"../types/generated/operations\";\nimport { GetDelegatedStakingActivities, GetNumberOfDelegators } from \"../types/generated/queries\";\nimport { queryIndexer } from \"./general\";\n\nexport async function getNumberOfDelegators(args: {\n aptosConfig: AptosConfig;\n poolAddress: HexInput;\n}): Promise<number> {\n const { aptosConfig, poolAddress } = args;\n const address = Hex.fromHexInput(poolAddress).toString();\n const query = {\n query: GetNumberOfDelegators,\n variables: { where_condition: { pool_address: { _eq: address } } },\n };\n const data: GetNumberOfDelegatorsQuery = await queryIndexer<GetNumberOfDelegatorsQuery>({ aptosConfig, query });\n if (data.num_active_delegator_per_pool.length === 0) {\n throw Error(\"Delegator pool not found\");\n }\n return data.num_active_delegator_per_pool[0].num_active_delegator;\n}\n\nexport async function getNumberOfDelegatorsForAllPools(args: {\n aptosConfig: AptosConfig;\n options?: {\n orderBy?: OrderBy<GetNumberOfDelegatorsResponse[0]>;\n };\n}): Promise<GetNumberOfDelegatorsResponse> {\n const { aptosConfig, options } = args;\n const query = {\n query: GetNumberOfDelegators,\n variables: { where_condition: {}, order_by: options?.orderBy },\n };\n const data: GetNumberOfDelegatorsQuery = await queryIndexer<GetNumberOfDelegatorsQuery>({\n aptosConfig,\n query,\n });\n return data.num_active_delegator_per_pool;\n}\n\nexport async function getDelegatedStakingActivities(args: {\n aptosConfig: AptosConfig;\n delegatorAddress: HexInput;\n poolAddress: HexInput;\n}): Promise<GetDelegatedStakingActivitiesResponse> {\n const { aptosConfig, delegatorAddress, poolAddress } = args;\n const query = {\n query: GetDelegatedStakingActivities,\n variables: {\n delegatorAddress: Hex.fromHexInput(delegatorAddress).toString(),\n poolAddress: Hex.fromHexInput(poolAddress).toString(),\n },\n };\n const data = await queryIndexer<GetDelegatedStakingActivitiesQuery>({ aptosConfig, query });\n return data.delegated_staking_activities;\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AptosConfig } from \"./aptosConfig\";\nimport {\n getDelegatedStakingActivities,\n getNumberOfDelegators,\n getNumberOfDelegatorsForAllPools,\n} from \"../internal/staking\";\nimport { GetDelegatedStakingActivitiesResponse, GetNumberOfDelegatorsResponse, HexInput, OrderBy } from \"../types\";\n\n/**\n * A class to query all `Staking` related queries on Aptos.\n */\nexport class Staking {\n readonly config: AptosConfig;\n\n constructor(config: AptosConfig) {\n this.config = config;\n }\n\n /**\n * Queries current number of delegators in a pool. Throws an error if the pool is not found.\n *\n * @param args.poolAddress Pool address\n * @returns The number of delegators for the given pool\n */\n async getNumberOfDelegators(args: { poolAddress: HexInput }): Promise<number> {\n return getNumberOfDelegators({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Queries current number of delegators in a pool. Throws an error if the pool is not found.\n *\n * @returns GetNumberOfDelegatorsForAllPoolsResponse response type\n */\n async getNumberOfDelegatorsForAllPools(args?: {\n options?: {\n orderBy?: OrderBy<GetNumberOfDelegatorsResponse[0]>;\n };\n }): Promise<GetNumberOfDelegatorsResponse> {\n return getNumberOfDelegatorsForAllPools({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Queries delegated staking activities\n *\n * @param args.delegatorAddress Delegator address\n * @param args.poolAddress Pool address\n * @returns GetDelegatedStakingActivitiesResponse response type\n */\n async getDelegatedStakingActivities(args: {\n delegatorAddress: HexInput;\n poolAddress: HexInput;\n }): Promise<GetDelegatedStakingActivitiesResponse> {\n return getDelegatedStakingActivities({ aptosConfig: this.config, ...args });\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AptosConfig } from \"./aptosConfig\";\nimport {\n getGasPriceEstimation,\n getTransactionByHash,\n getTransactionByVersion,\n getTransactions,\n isTransactionPending,\n waitForTransaction,\n} from \"../internal/transaction\";\nimport { AnyNumber, GasEstimation, HexInput, PaginationArgs, TransactionResponse } from \"../types\";\n\nexport class Transaction {\n readonly config: AptosConfig;\n\n constructor(config: AptosConfig) {\n this.config = config;\n }\n\n /**\n * Queries on-chain transactions. This function will not return pending\n * transactions. For that, use `getTransactionsByHash`.\n *\n * @param args.options.offset The number transaction to start with\n * @param args.options.limit Number of results to return\n *\n * @returns Array of on-chain transactions\n */\n async getTransactions(args?: { options?: PaginationArgs }): Promise<TransactionResponse[]> {\n return getTransactions({\n aptosConfig: this.config,\n ...args,\n });\n }\n\n /**\n * Queries on-chain transaction by version. This function will not return pending transactions.\n *\n * @param args.ledgerVersion - Transaction version is an unsigned 64-bit number.\n * @returns On-chain transaction. Only on-chain transactions have versions, so this\n * function cannot be used to query pending transactions.\n */\n async getTransactionByVersion(args: { ledgerVersion: AnyNumber }): Promise<TransactionResponse> {\n return getTransactionByVersion({\n aptosConfig: this.config,\n ...args,\n });\n }\n\n /**\n * Queries on-chain transaction by transaction hash. This function will return pending transactions.\n * @param args.transactionHash - Transaction hash should be hex-encoded bytes string with 0x prefix.\n * @returns Transaction from mempool (pending) or on-chain (committed) transaction\n */\n async getTransactionByHash(args: { transactionHash: HexInput }): Promise<TransactionResponse> {\n return getTransactionByHash({\n aptosConfig: this.config,\n ...args,\n });\n }\n\n /**\n * Defines if specified transaction is currently in pending state\n *\n * To create a transaction hash:\n *\n * 1. Create a hash message from the bytes: \"Aptos::Transaction\" bytes + the BCS-serialized Transaction bytes.\n * 2. Apply hash algorithm SHA3-256 to the hash message bytes.\n * 3. Hex-encode the hash bytes with 0x prefix.\n *\n * @param args.transactionHash A hash of transaction\n * @returns `true` if transaction is in pending state and `false` otherwise\n */\n async isPendingTransaction(args: { transactionHash: HexInput }): Promise<boolean> {\n return isTransactionPending({\n aptosConfig: this.config,\n ...args,\n });\n }\n\n /**\n * Waits for a transaction to move past the pending state.\n *\n * There are 4 cases.\n * 1. Transaction is successfully processed and committed to the chain.\n * - The function will resolve with the transaction response from the API.\n * 2. Transaction is rejected for some reason, and is therefore not committed to the blockchain.\n * - The function will throw an AptosApiError with an HTTP status code indicating some problem with the request.\n * 3. Transaction is committed but execution failed, meaning no changes were\n * written to the blockchain state.\n * - If `checkSuccess` is true, the function will throw a FailedTransactionError\n * If `checkSuccess` is false, the function will resolve with the transaction response where the `success` field is false.\n * 4. Transaction does not move past the pending state within `args.options.timeoutSecs` seconds.\n * - The function will throw a WaitForTransactionError\n *\n *\n * @param args.transactionHash The hash of a transaction previously submitted to the blockchain.\n * @param args.options.timeoutSecs Timeout in seconds. Defaults to 20 seconds.\n * @param args.options.checkSuccess A boolean which controls whether the function will error if the transaction failed.\n * Defaults to true. See case 3 above.\n * @returns The transaction on-chain. See above for more details.\n */\n async waitForTransaction(args: {\n transactionHash: HexInput;\n options?: { timeoutSecs?: number; checkSuccess?: boolean };\n }): Promise<TransactionResponse> {\n return waitForTransaction({\n aptosConfig: this.config,\n ...args,\n });\n }\n\n /**\n * Gives an estimate of the gas unit price required to get a\n * transaction on chain in a reasonable amount of time.\n * For more information {@link https://fullnode.mainnet.aptoslabs.com/v1/spec#/operations/estimate_gas_price}\n *\n * @returns Object holding the outputs of the estimate gas API\n * @example\n * ```\n * {\n * gas_estimate: number;\n * deprioritized_gas_estimate?: number;\n * prioritized_gas_estimate?: number;\n * }\n * ```\n */\n async getGasPriceEstimation(): Promise<GasEstimation> {\n return getGasPriceEstimation({\n aptosConfig: this.config,\n });\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AptosConfig } from \"./aptosConfig\";\nimport { Account } from \"../core\";\nimport { AccountAuthenticator } from \"../transactions/authenticator/account\";\nimport {\n AnyRawTransaction,\n FeePayerTransaction,\n GenerateMultiAgentRawTransactionInput,\n GenerateTransactionInput,\n GenerateFeePayerRawTransactionInput,\n GenerateSingleSignerRawTransactionInput,\n MultiAgentTransaction,\n SingleSignerTransaction,\n SimulateTransactionData,\n} from \"../transactions/types\";\nimport { UserTransactionResponse, PendingTransactionResponse } from \"../types\";\nimport {\n generateTransaction,\n signTransaction,\n simulateTransaction,\n submitTransaction,\n} from \"../internal/transactionSubmission\";\n\nexport class TransactionSubmission {\n readonly config: AptosConfig;\n\n constructor(config: AptosConfig) {\n this.config = config;\n }\n\n /**\n * We are defining function signatures, each with its specific input and output.\n * These are the possible function signature for `generateTransaction` function.\n * When we call `generateTransaction` function with the relevant type properties,\n * Typescript can infer the return type based on the appropriate function overload.\n */\n async generateTransaction(args: GenerateSingleSignerRawTransactionInput): Promise<SingleSignerTransaction>;\n async generateTransaction(args: GenerateFeePayerRawTransactionInput): Promise<FeePayerTransaction>;\n async generateTransaction(args: GenerateMultiAgentRawTransactionInput): Promise<MultiAgentTransaction>;\n async generateTransaction(args: GenerateTransactionInput): Promise<AnyRawTransaction>;\n\n /**\n * Generates any transaction by passing in the required arguments\n *\n * @param args.sender The transaction sender's account address as a HexInput\n * @param args.data EntryFunctionData | ScriptData | MultiSigData\n * @param args.feePayerAddress optional. For a fee payer (aka sponsored) transaction\n * @param args.secondarySignerAddresses optional. For a multi-agent or fee payer (aka sponsored) transactions\n * @param args.options optional. GenerateTransactionOptions type\n *\n * @example\n * For a single signer entry function\n * move function name, move function type arguments, move function arguments\n * `\n * data: {\n * function:\"0x1::aptos_account::transfer\",\n * type_arguments:[]\n * arguments:[receiverAddress,10]\n * }\n * `\n *\n * @example\n * For a single signer script function\n * module bytecode, move function type arguments, move function arguments\n * ```\n * data: {\n * bytecode:\"0x001234567\",\n * type_arguments:[],\n * arguments:[receiverAddress,10]\n * }\n * ```\n *\n * @return A raw transaction type (note that it holds the raw transaction as a bcs serialized data)\n * ```\n * {\n * rawTransaction: Uint8Array,\n * secondarySignerAddresses? : Array<AccountAddress>,\n * feePayerAddress?: AccountAddress\n * }\n * ```\n */\n async generateTransaction(args: GenerateTransactionInput): Promise<AnyRawTransaction> {\n return generateTransaction({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Sign a transaction that can later be submitted to chain\n *\n * @param args.signer The signer account to sign the transaction\n * @param args.transaction A raw transaction type (note that it holds the raw transaction as a bcs serialized data)\n * ```\n * {\n * rawTransaction: Uint8Array,\n * secondarySignerAddresses? : Array<AccountAddress>,\n * feePayerAddress?: AccountAddress\n * }\n * ```\n *\n * @return The signer AccountAuthenticator\n */\n /* eslint-disable class-methods-use-this */\n signTransaction(args: { signer: Account; transaction: AnyRawTransaction }): AccountAuthenticator {\n return signTransaction({ ...args });\n }\n\n /**\n * Simulates a transaction before singing it.\n *\n * @param args.signerPublicKey The signer public key\n * @param args.transaction The raw transaction to simulate\n * @param args.secondarySignersPublicKeys optional. For when the transaction is a multi signers transaction\n * @param args.feePayerPublicKey optional. For when the transaction is a fee payer (aka sponsored) transaction\n * @param args.options optional. A config to simulate the transaction with\n */\n async simulateTransaction(args: SimulateTransactionData): Promise<Array<UserTransactionResponse>> {\n return simulateTransaction({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Submit transaction to chain\n *\n * @param args.transaction A aptos transaction type\n * @param args.senderAuthenticator The account authenticator of the transaction sender\n * @param args.secondarySignerAuthenticators optional. For when the transaction is a multi signers transaction\n *\n * @return PendingTransactionResponse\n */\n async submitTransaction(args: {\n transaction: AnyRawTransaction;\n senderAuthenticator: AccountAuthenticator;\n secondarySignerAuthenticators?: {\n feePayerAuthenticator?: AccountAuthenticator;\n additionalSignersAuthenticators?: Array<AccountAuthenticator>;\n };\n }): Promise<PendingTransactionResponse> {\n return submitTransaction({ aptosConfig: this.config, ...args });\n }\n\n /**\n * Sign and submit a single signer transaction to chain\n *\n * @param args.signer The signer account to sign the transaction\n * @param args.transaction A raw transaction type (note that it holds the raw transaction as a bcs serialized data)\n * ```\n * {\n * rawTransaction: Uint8Array,\n * secondarySignerAddresses? : Array<AccountAddress>,\n * feePayerAddress?: AccountAddress\n * }\n * ```\n *\n * @return PendingTransactionResponse\n */\n async signAndSubmitTransaction(args: {\n signer: Account;\n transaction: AnyRawTransaction;\n }): Promise<PendingTransactionResponse> {\n const { signer, transaction } = args;\n const authenticator = signTransaction({ signer, transaction });\n return submitTransaction({\n aptosConfig: this.config,\n transaction,\n senderAuthenticator: authenticator,\n });\n }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Account } from \"./account\";\nimport { AptosConfig } from \"./aptosConfig\";\nimport { Coin } from \"./coin\";\nimport { DigitalAsset } from \"./digitalAsset\";\nimport { Event } from \"./event\";\nimport { Faucet } from \"./faucet\";\nimport { FungibleAsset } from \"./fungibleAsset\";\nimport { General } from \"./general\";\nimport { Staking } from \"./staking\";\nimport { Transaction } from \"./transaction\";\nimport { TransactionSubmission } from \"./transactionSubmission\";\n\n/**\n * This class is the main entry point into Aptos's\n * APIs and separates functionality into different namespaces.\n *\n * To use the SDK, create a new Aptos instance to get access\n * to all the sdk functionality.\n */\nexport class Aptos {\n readonly config: AptosConfig;\n\n readonly account: Account;\n\n readonly coin: Coin;\n\n readonly digitalAsset: DigitalAsset;\n\n readonly event: Event;\n\n readonly faucet: Faucet;\n\n readonly fungibleAsset: FungibleAsset;\n\n readonly general: General;\n\n readonly staking: Staking;\n\n readonly transaction: Transaction;\n\n readonly transactionSubmission: TransactionSubmission;\n\n constructor(settings?: AptosConfig) {\n this.config = new AptosConfig(settings);\n this.account = new Account(this.config);\n this.coin = new Coin(this.config);\n this.digitalAsset = new DigitalAsset(this.config);\n this.event = new Event(this.config);\n this.faucet = new Faucet(this.config);\n this.fungibleAsset = new FungibleAsset(this.config);\n this.general = new General(this.config);\n this.staking = new Staking(this.config);\n this.transaction = new Transaction(this.config);\n this.transactionSubmission = new TransactionSubmission(this.config);\n }\n}\n\nexport interface Aptos\n extends Account,\n Coin,\n DigitalAsset,\n Event,\n Faucet,\n FungibleAsset,\n General,\n Staking,\n Transaction,\n TransactionSubmission {}\n\n/**\nIn TypeScript, we can’t inherit or extend from more than one class,\nMixins helps us to get around that by creating a partial classes \nthat we can combine to form a single class that contains all the methods and properties from the partial classes.\n{@link https://www.typescriptlang.org/docs/handbook/mixins.html#alternative-pattern}\n\nHere, we combine any subclass and the Aptos class.\n*/\nfunction applyMixin(targetClass: any, baseClass: any, baseClassProp: string) {\n // Mixin instance methods\n Object.getOwnPropertyNames(baseClass.prototype).forEach((propertyName) => {\n const propertyDescriptor = Object.getOwnPropertyDescriptor(baseClass.prototype, propertyName);\n if (!propertyDescriptor) return;\n // eslint-disable-next-line func-names\n propertyDescriptor.value = function (...args: any) {\n return (this as any)[baseClassProp][propertyName](...args);\n };\n Object.defineProperty(targetClass.prototype, propertyName, propertyDescriptor);\n });\n}\n\napplyMixin(Aptos, Account, \"account\");\napplyMixin(Aptos, Coin, \"coin\");\napplyMixin(Aptos, DigitalAsset, \"digitalAsset\");\napplyMixin(Aptos, Event, \"event\");\napplyMixin(Aptos, Faucet, \"faucet\");\napplyMixin(Aptos, FungibleAsset, \"fungibleAsset\");\napplyMixin(Aptos, General, \"general\");\napplyMixin(Aptos, Staking, \"staking\");\napplyMixin(Aptos, Transaction, \"transaction\");\napplyMixin(Aptos, TransactionSubmission, \"transactionSubmission\");\n"],"mappings":"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","names":["request","MimeType","TypeTagVariants","ScriptTransactionArgumentVariants","TransactionPayloadVariants","TransactionVariants","TransactionAuthenticatorVariant","AccountAuthenticatorVariant","TransactionResponseType","MoveFunctionVisibility","MoveAbility","RoleType","SigningScheme","DeriveScheme","Network","bytesToHex","hexToBytes","HexInvalidReason","AddressInvalidReason","bytesToHex","hexToBytes","KeyType","Account","sha3Hash","getTransactions","funcNameParts","transactionAuthenticator","sha3Hash","getTransactions","Account"]}
|