@aptos-labs/ts-sdk 3.0.0 → 3.1.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/dist/common/{account-CEmLe1wW.d.ts → account-Bb5REyaT.d.ts} +60 -11
- package/dist/common/chunk-6MMUUJHX.js +4 -0
- package/dist/common/chunk-6MMUUJHX.js.map +1 -0
- package/dist/common/cli/index.d.ts +1 -1
- package/dist/common/cli/index.js +1 -1
- package/dist/common/cli/index.js.map +1 -1
- package/dist/common/index.d.ts +121 -9
- package/dist/common/index.js +53 -32
- package/dist/common/index.js.map +1 -1
- package/dist/esm/{Ed25519Account-Ccxj1zdx.d.mts → Ed25519Account-ndmdpFe9.d.mts} +1 -1
- package/dist/esm/account/AbstractKeylessAccount.d.mts +3 -3
- package/dist/esm/account/AbstractKeylessAccount.mjs +1 -1
- package/dist/esm/account/AbstractedAccount.d.mts +2 -2
- package/dist/esm/account/AbstractedAccount.mjs +1 -1
- package/dist/esm/account/Account.d.mts +2 -2
- package/dist/esm/account/Account.mjs +1 -1
- package/dist/esm/account/AccountUtils.d.mts +3 -3
- package/dist/esm/account/AccountUtils.mjs +1 -1
- package/dist/esm/account/DerivableAbstractedAccount.d.mts +2 -2
- package/dist/esm/account/DerivableAbstractedAccount.mjs +1 -1
- package/dist/esm/account/Ed25519Account.d.mts +2 -2
- package/dist/esm/account/Ed25519Account.mjs +1 -1
- package/dist/esm/account/EphemeralKeyPair.d.mts +1 -1
- package/dist/esm/account/EphemeralKeyPair.mjs +1 -1
- package/dist/esm/account/FederatedKeylessAccount.d.mts +4 -3
- package/dist/esm/account/FederatedKeylessAccount.mjs +1 -1
- package/dist/esm/account/KeylessAccount.d.mts +4 -3
- package/dist/esm/account/KeylessAccount.mjs +1 -1
- package/dist/esm/account/MultiEd25519Account.d.mts +2 -2
- package/dist/esm/account/MultiEd25519Account.mjs +1 -1
- package/dist/esm/account/MultiKeyAccount.d.mts +3 -3
- package/dist/esm/account/MultiKeyAccount.mjs +1 -1
- package/dist/esm/account/SingleKeyAccount.d.mts +2 -2
- package/dist/esm/account/SingleKeyAccount.mjs +1 -1
- package/dist/esm/account/index.d.mts +3 -3
- package/dist/esm/account/index.mjs +1 -1
- package/dist/esm/account/utils.d.mts +1 -1
- package/dist/esm/account/utils.mjs +1 -1
- package/dist/esm/{account-9G6tix5T.d.mts → account--Q9z_xMN.d.mts} +37 -3
- package/dist/esm/api/account/abstraction.d.mts +1 -1
- package/dist/esm/api/account/abstraction.mjs +1 -1
- package/dist/esm/api/account.d.mts +94 -3
- package/dist/esm/api/account.mjs +1 -1
- package/dist/esm/api/ans.d.mts +2 -2
- package/dist/esm/api/ans.mjs +1 -1
- package/dist/esm/api/aptos.d.mts +6 -4
- package/dist/esm/api/aptos.mjs +1 -1
- package/dist/esm/api/aptosConfig.d.mts +1 -1
- package/dist/esm/api/aptosConfig.mjs +1 -1
- package/dist/esm/api/coin.d.mts +1 -1
- package/dist/esm/api/coin.mjs +1 -1
- package/dist/esm/api/digitalAsset.d.mts +2 -2
- package/dist/esm/api/digitalAsset.mjs +1 -1
- package/dist/esm/api/event.d.mts +1 -1
- package/dist/esm/api/event.mjs +1 -1
- package/dist/esm/api/faucet.d.mts +1 -1
- package/dist/esm/api/faucet.mjs +1 -1
- package/dist/esm/api/fungibleAsset.d.mts +2 -2
- package/dist/esm/api/fungibleAsset.mjs +1 -1
- package/dist/esm/api/general.d.mts +1 -1
- package/dist/esm/api/general.mjs +1 -1
- package/dist/esm/api/index.d.mts +6 -4
- package/dist/esm/api/index.mjs +1 -1
- package/dist/esm/api/keyless.d.mts +3 -3
- package/dist/esm/api/keyless.mjs +1 -1
- package/dist/esm/api/object.d.mts +1 -1
- package/dist/esm/api/object.mjs +1 -1
- package/dist/esm/api/staking.d.mts +1 -1
- package/dist/esm/api/staking.mjs +1 -1
- package/dist/esm/api/table.d.mts +1 -1
- package/dist/esm/api/table.mjs +1 -1
- package/dist/esm/api/transaction.d.mts +3 -2
- package/dist/esm/api/transaction.mjs +1 -1
- package/dist/esm/api/transactionSubmission/build.d.mts +1 -1
- package/dist/esm/api/transactionSubmission/build.mjs +1 -1
- package/dist/esm/api/transactionSubmission/management.d.mts +2 -2
- package/dist/esm/api/transactionSubmission/management.mjs +1 -1
- package/dist/esm/api/transactionSubmission/sign.d.mts +2 -2
- package/dist/esm/api/transactionSubmission/sign.mjs +1 -1
- package/dist/esm/api/transactionSubmission/sign.mjs.map +1 -1
- package/dist/esm/api/transactionSubmission/simulate.d.mts +1 -1
- package/dist/esm/api/transactionSubmission/simulate.mjs +1 -1
- package/dist/esm/api/transactionSubmission/submit.d.mts +1 -1
- package/dist/esm/api/transactionSubmission/submit.mjs +1 -1
- package/dist/esm/api/utils.d.mts +1 -1
- package/dist/esm/api/utils.mjs +1 -1
- package/dist/esm/bcs/consts.d.mts +1 -1
- package/dist/esm/bcs/deserializer.d.mts +1 -1
- package/dist/esm/bcs/index.d.mts +1 -1
- package/dist/esm/bcs/index.mjs +1 -1
- package/dist/esm/bcs/serializable/entryFunctionBytes.d.mts +1 -1
- package/dist/esm/bcs/serializable/fixedBytes.d.mts +1 -1
- package/dist/esm/bcs/serializable/movePrimitives.d.mts +1 -1
- package/dist/esm/bcs/serializable/movePrimitives.mjs +1 -1
- package/dist/esm/bcs/serializable/moveStructs.d.mts +1 -1
- package/dist/esm/bcs/serializable/moveStructs.mjs +1 -1
- package/dist/esm/bcs/serializer.d.mts +1 -1
- package/dist/esm/{chunk-Q4W3WJ2U.mjs → chunk-2BOHKN33.mjs} +2 -2
- package/dist/esm/{chunk-SAMHWS73.mjs → chunk-4COLMDT3.mjs} +2 -2
- package/dist/esm/chunk-5HXLZHDW.mjs +1 -0
- package/dist/esm/chunk-5HXLZHDW.mjs.map +1 -0
- package/dist/esm/{chunk-5ZRPV4YI.mjs → chunk-5URUYE6H.mjs} +2 -2
- package/dist/esm/chunk-ACNHLCQQ.mjs +6 -0
- package/dist/esm/chunk-ACNHLCQQ.mjs.map +1 -0
- package/dist/esm/{chunk-2XQKGWHQ.mjs → chunk-FYYEPFML.mjs} +2 -2
- package/dist/esm/chunk-HUWKPKPQ.mjs +2 -0
- package/dist/esm/{chunk-HMUIOIBG.mjs.map → chunk-HUWKPKPQ.mjs.map} +1 -1
- package/dist/esm/chunk-IJE2LVZG.mjs +2 -0
- package/dist/esm/chunk-IJE2LVZG.mjs.map +1 -0
- package/dist/esm/chunk-JCFTAG5Z.mjs +2 -0
- package/dist/esm/{chunk-RJ7F4JDV.mjs.map → chunk-JCFTAG5Z.mjs.map} +1 -1
- package/dist/esm/{chunk-YHGGNYYL.mjs → chunk-MML57K5H.mjs} +2 -2
- package/dist/esm/{chunk-PFXXFUBL.mjs → chunk-MNDTFHDB.mjs} +2 -2
- package/dist/esm/{chunk-FSP4QM2T.mjs → chunk-SLWIGOQL.mjs} +2 -2
- package/dist/esm/{chunk-7T62PEFI.mjs → chunk-TYYVB2A6.mjs} +2 -2
- package/dist/esm/{chunk-WOTQ7227.mjs → chunk-U3GMNXO4.mjs} +2 -2
- package/dist/esm/{chunk-VHNX2NUR.mjs → chunk-UL777LTI.mjs} +47 -26
- package/dist/esm/chunk-UL777LTI.mjs.map +1 -0
- package/dist/esm/{chunk-IDHVW7HS.mjs → chunk-XZ75T7Q7.mjs} +2 -2
- package/dist/esm/{chunk-UIVX6WSC.mjs → chunk-Y7ZQTLH4.mjs} +2 -2
- package/dist/esm/{chunk-R7NQJWDG.mjs → chunk-Z5URUE4U.mjs} +2 -2
- package/dist/esm/cli/index.d.mts +1 -1
- package/dist/esm/cli/index.mjs +1 -1
- package/dist/esm/cli/localNode.mjs +1 -1
- package/dist/esm/cli/move.d.mts +1 -1
- package/dist/esm/client/core.d.mts +1 -1
- package/dist/esm/client/core.mjs +1 -1
- package/dist/esm/client/get.d.mts +1 -1
- package/dist/esm/client/get.mjs +1 -1
- package/dist/esm/client/index.d.mts +1 -1
- package/dist/esm/client/index.mjs +1 -1
- package/dist/esm/client/post.d.mts +1 -1
- package/dist/esm/client/post.mjs +1 -1
- package/dist/esm/core/account/index.d.mts +1 -1
- package/dist/esm/core/account/index.mjs +1 -1
- package/dist/esm/core/account/utils/address.d.mts +1 -1
- package/dist/esm/core/account/utils/address.mjs +1 -1
- package/dist/esm/core/account/utils/index.d.mts +1 -1
- package/dist/esm/core/account/utils/index.mjs +1 -1
- package/dist/esm/core/accountAddress.d.mts +1 -1
- package/dist/esm/core/accountAddress.mjs +1 -1
- package/dist/esm/core/authenticationKey.d.mts +1 -1
- package/dist/esm/core/authenticationKey.mjs +1 -1
- package/dist/esm/core/crypto/abstraction.d.mts +1 -1
- package/dist/esm/core/crypto/abstraction.mjs +1 -1
- package/dist/esm/core/crypto/deserializationUtils.d.mts +1 -1
- package/dist/esm/core/crypto/deserializationUtils.mjs +1 -1
- package/dist/esm/core/crypto/ed25519.d.mts +1 -1
- package/dist/esm/core/crypto/ed25519.mjs +1 -1
- package/dist/esm/core/crypto/ephemeral.d.mts +1 -1
- package/dist/esm/core/crypto/ephemeral.mjs +1 -1
- package/dist/esm/core/crypto/federatedKeyless.d.mts +2 -2
- package/dist/esm/core/crypto/federatedKeyless.mjs +1 -1
- package/dist/esm/core/crypto/index.d.mts +3 -2
- package/dist/esm/core/crypto/index.mjs +1 -1
- package/dist/esm/core/crypto/keyless.d.mts +2 -2
- package/dist/esm/core/crypto/keyless.mjs +1 -1
- package/dist/esm/core/crypto/multiEd25519.d.mts +1 -1
- package/dist/esm/core/crypto/multiEd25519.mjs +1 -1
- package/dist/esm/core/crypto/multiKey.d.mts +1 -1
- package/dist/esm/core/crypto/multiKey.mjs +1 -1
- package/dist/esm/core/crypto/privateKey.d.mts +1 -1
- package/dist/esm/core/crypto/privateKey.mjs +1 -1
- package/dist/esm/core/crypto/proof.d.mts +1 -1
- package/dist/esm/core/crypto/proof.mjs +1 -1
- package/dist/esm/core/crypto/publicKey.d.mts +1 -1
- package/dist/esm/core/crypto/publicKey.mjs +1 -1
- package/dist/esm/core/crypto/secp256k1.d.mts +1 -1
- package/dist/esm/core/crypto/secp256k1.mjs +1 -1
- package/dist/esm/core/crypto/signature.d.mts +1 -1
- package/dist/esm/core/crypto/signature.mjs +1 -1
- package/dist/esm/core/crypto/singleKey.d.mts +1 -1
- package/dist/esm/core/crypto/singleKey.mjs +1 -1
- package/dist/esm/core/crypto/types.d.mts +11 -0
- package/dist/esm/core/crypto/types.mjs +2 -0
- package/dist/esm/core/crypto/types.mjs.map +1 -0
- package/dist/esm/core/crypto/utils.d.mts +1 -1
- package/dist/esm/core/hex.d.mts +1 -1
- package/dist/esm/core/index.d.mts +3 -2
- package/dist/esm/core/index.mjs +1 -1
- package/dist/esm/errors/index.d.mts +1 -1
- package/dist/esm/errors/index.mjs +1 -1
- package/dist/esm/{federatedKeyless-CVKW5pnz.d.mts → federatedKeyless-CiyplsOB.d.mts} +1 -1
- package/dist/esm/index.d.mts +6 -4
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/internal/abstraction.d.mts +1 -1
- package/dist/esm/internal/abstraction.mjs +1 -1
- package/dist/esm/internal/account.d.mts +38 -8
- package/dist/esm/internal/account.mjs +1 -1
- package/dist/esm/internal/ans.d.mts +2 -2
- package/dist/esm/internal/ans.mjs +1 -1
- package/dist/esm/internal/coin.d.mts +1 -1
- package/dist/esm/internal/coin.mjs +1 -1
- package/dist/esm/internal/digitalAsset.d.mts +2 -2
- package/dist/esm/internal/digitalAsset.mjs +1 -1
- package/dist/esm/internal/event.d.mts +1 -1
- package/dist/esm/internal/event.mjs +1 -1
- package/dist/esm/internal/faucet.d.mts +1 -1
- package/dist/esm/internal/faucet.mjs +1 -1
- package/dist/esm/internal/fungibleAsset.d.mts +2 -2
- package/dist/esm/internal/fungibleAsset.mjs +1 -1
- package/dist/esm/internal/general.d.mts +1 -1
- package/dist/esm/internal/general.mjs +1 -1
- package/dist/esm/internal/keyless.d.mts +12 -3
- package/dist/esm/internal/keyless.mjs +1 -1
- package/dist/esm/internal/object.d.mts +1 -1
- package/dist/esm/internal/object.mjs +1 -1
- package/dist/esm/internal/staking.d.mts +1 -1
- package/dist/esm/internal/staking.mjs +1 -1
- package/dist/esm/internal/table.d.mts +1 -1
- package/dist/esm/internal/table.mjs +1 -1
- package/dist/esm/internal/transaction.d.mts +1 -1
- package/dist/esm/internal/transaction.mjs +1 -1
- package/dist/esm/internal/transactionSubmission.d.mts +2 -2
- package/dist/esm/internal/transactionSubmission.mjs +1 -1
- package/dist/esm/internal/utils/index.d.mts +1 -1
- package/dist/esm/internal/utils/index.mjs +1 -1
- package/dist/esm/internal/utils/utils.d.mts +1 -1
- package/dist/esm/internal/utils/utils.mjs +1 -1
- package/dist/esm/internal/view.d.mts +1 -1
- package/dist/esm/internal/view.mjs +1 -1
- package/dist/esm/transactions/authenticator/account.d.mts +1 -1
- package/dist/esm/transactions/authenticator/account.mjs +1 -1
- package/dist/esm/transactions/authenticator/index.d.mts +1 -1
- package/dist/esm/transactions/authenticator/index.mjs +1 -1
- package/dist/esm/transactions/authenticator/transaction.d.mts +1 -1
- package/dist/esm/transactions/authenticator/transaction.mjs +1 -1
- package/dist/esm/transactions/index.d.mts +1 -1
- package/dist/esm/transactions/index.mjs +1 -1
- package/dist/esm/transactions/instances/chainId.d.mts +1 -1
- package/dist/esm/transactions/instances/identifier.d.mts +1 -1
- package/dist/esm/transactions/instances/index.d.mts +1 -1
- package/dist/esm/transactions/instances/index.mjs +1 -1
- package/dist/esm/transactions/instances/moduleId.d.mts +1 -1
- package/dist/esm/transactions/instances/moduleId.mjs +1 -1
- package/dist/esm/transactions/instances/multiAgentTransaction.d.mts +1 -1
- package/dist/esm/transactions/instances/multiAgentTransaction.mjs +1 -1
- package/dist/esm/transactions/instances/rawTransaction.d.mts +1 -1
- package/dist/esm/transactions/instances/rawTransaction.mjs +1 -1
- package/dist/esm/transactions/instances/rotationProofChallenge.d.mts +1 -1
- package/dist/esm/transactions/instances/rotationProofChallenge.mjs +1 -1
- package/dist/esm/transactions/instances/signedTransaction.d.mts +1 -1
- package/dist/esm/transactions/instances/signedTransaction.mjs +1 -1
- package/dist/esm/transactions/instances/simpleTransaction.d.mts +1 -1
- package/dist/esm/transactions/instances/simpleTransaction.mjs +1 -1
- package/dist/esm/transactions/instances/transactionArgument.d.mts +1 -1
- package/dist/esm/transactions/instances/transactionPayload.d.mts +1 -1
- package/dist/esm/transactions/instances/transactionPayload.mjs +1 -1
- package/dist/esm/transactions/management/accountSequenceNumber.d.mts +2 -2
- package/dist/esm/transactions/management/accountSequenceNumber.mjs +1 -1
- package/dist/esm/transactions/management/index.d.mts +2 -2
- package/dist/esm/transactions/management/index.mjs +1 -1
- package/dist/esm/transactions/management/transactionWorker.d.mts +2 -2
- package/dist/esm/transactions/management/transactionWorker.mjs +1 -1
- package/dist/esm/transactions/transactionBuilder/helpers.d.mts +1 -1
- package/dist/esm/transactions/transactionBuilder/helpers.mjs +1 -1
- package/dist/esm/transactions/transactionBuilder/index.d.mts +1 -1
- package/dist/esm/transactions/transactionBuilder/index.mjs +1 -1
- package/dist/esm/transactions/transactionBuilder/remoteAbi.d.mts +1 -1
- package/dist/esm/transactions/transactionBuilder/remoteAbi.mjs +1 -1
- package/dist/esm/transactions/transactionBuilder/signingMessage.d.mts +1 -1
- package/dist/esm/transactions/transactionBuilder/signingMessage.mjs +1 -1
- package/dist/esm/transactions/transactionBuilder/transactionBuilder.d.mts +1 -1
- package/dist/esm/transactions/transactionBuilder/transactionBuilder.mjs +1 -1
- package/dist/esm/transactions/typeTag/index.d.mts +1 -1
- package/dist/esm/transactions/typeTag/index.mjs +1 -1
- package/dist/esm/transactions/typeTag/parser.d.mts +1 -1
- package/dist/esm/transactions/typeTag/parser.mjs +1 -1
- package/dist/esm/transactions/types.d.mts +1 -1
- package/dist/esm/types/generated/operations.d.mts +37 -10
- package/dist/esm/types/generated/queries.d.mts +6 -2
- package/dist/esm/types/generated/queries.mjs +1 -1
- package/dist/esm/types/generated/types.d.mts +584 -1172
- package/dist/esm/types/generated/types.mjs +1 -1
- package/dist/esm/types/generated/types.mjs.map +1 -1
- package/dist/esm/types/index.d.mts +2 -2
- package/dist/esm/types/index.mjs +1 -1
- package/dist/esm/types/indexer.d.mts +8 -2
- package/dist/esm/types/types.d.mts +1 -1
- package/dist/esm/types/types.mjs +1 -1
- package/dist/esm/utils/const.d.mts +1 -0
- package/dist/esm/utils/const.mjs +1 -1
- package/dist/esm/utils/helpers.d.mts +1 -1
- package/dist/esm/utils/helpers.mjs +1 -1
- package/dist/esm/utils/index.d.mts +1 -1
- package/dist/esm/utils/index.mjs +1 -1
- package/dist/esm/utils/normalizeBundle.d.mts +1 -1
- package/dist/esm/utils/normalizeBundle.mjs +1 -1
- package/dist/esm/version.d.mts +1 -1
- package/dist/esm/version.mjs +1 -1
- package/package.json +19 -18
- package/src/account/FederatedKeylessAccount.ts +7 -1
- package/src/account/KeylessAccount.ts +17 -2
- package/src/api/account.ts +135 -2
- package/src/api/transaction.ts +1 -0
- package/src/core/crypto/index.ts +1 -0
- package/src/core/crypto/multiEd25519.ts +26 -0
- package/src/core/crypto/multiKey.ts +6 -0
- package/src/core/crypto/types.ts +9 -0
- package/src/internal/account.ts +526 -59
- package/src/internal/keyless.ts +10 -0
- package/src/internal/move/jwks/build/jwk/BuildInfo.yaml +56 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/account.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aggregator.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aggregator_factory.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aggregator_v2.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aptos_account.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aptos_coin.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aptos_governance.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/block.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/chain_id.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/chain_status.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/code.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/coin.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/config_buffer.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/consensus_config.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/create_signer.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/delegation_pool.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/dispatchable_fungible_asset.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/dkg.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/event.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/execution_config.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/function_info.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/fungible_asset.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/gas_schedule.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/genesis.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/governance_proposal.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/guid.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/jwk_consensus_config.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/jwks.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/keyless_account.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/managed_coin.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/multisig_account.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/object.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/object_code_deployment.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/optional_aggregator.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/primary_fungible_store.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/randomness.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/randomness_api_v0_config.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/randomness_config.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/randomness_config_seqnum.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/reconfiguration.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/reconfiguration_state.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/reconfiguration_with_dkg.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/resource_account.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/stake.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/staking_config.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/staking_contract.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/staking_proxy.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/state_storage.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/storage_gas.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/system_addresses.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/timestamp.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/transaction_context.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/transaction_fee.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/transaction_validation.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/util.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/validator_consensus_info.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/version.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/vesting.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/voting.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/any.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/aptos_hash.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/big_vector.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/bls12381.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/bls12381_algebra.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/bn254_algebra.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/capability.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/comparator.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/copyable_any.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/crypto_algebra.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/debug.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ed25519.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/fixed_point64.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/from_bcs.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/math128.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/math64.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/math_fixed.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/math_fixed64.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/multi_ed25519.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/pool_u64.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/pool_u64_unbound.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ristretto255.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ristretto255_bulletproofs.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ristretto255_elgamal.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ristretto255_pedersen.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/secp256k1.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/simple_map.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/smart_table.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/smart_vector.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/string_utils.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/table.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/table_with_length.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/type_info.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/acl.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/bcs.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/bit_vector.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/error.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/features.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/fixed_point32.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/hash.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/option.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/signer.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/string.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/vector.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_scripts/main.mv +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/account.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aggregator.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aggregator_factory.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aggregator_v2.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aptos_account.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aptos_coin.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aptos_governance.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/block.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/chain_id.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/chain_status.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/code.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/coin.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/config_buffer.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/consensus_config.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/create_signer.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/delegation_pool.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/dispatchable_fungible_asset.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/dkg.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/event.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/execution_config.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/function_info.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/fungible_asset.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/gas_schedule.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/genesis.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/governance_proposal.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/guid.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/jwk_consensus_config.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/jwks.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/keyless_account.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/managed_coin.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/multisig_account.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/object.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/object_code_deployment.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/optional_aggregator.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/primary_fungible_store.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/randomness.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/randomness_api_v0_config.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/randomness_config.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/randomness_config_seqnum.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/reconfiguration.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/reconfiguration_state.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/reconfiguration_with_dkg.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/resource_account.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/stake.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/staking_config.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/staking_contract.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/staking_proxy.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/state_storage.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/storage_gas.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/system_addresses.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/timestamp.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/transaction_context.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/transaction_fee.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/transaction_validation.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/util.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/validator_consensus_info.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/version.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/vesting.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/voting.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/any.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/aptos_hash.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/big_vector.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/bls12381.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/bls12381_algebra.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/bn254_algebra.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/capability.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/comparator.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/copyable_any.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/crypto_algebra.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/debug.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ed25519.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/fixed_point64.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/from_bcs.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/math128.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/math64.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/math_fixed.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/math_fixed64.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/multi_ed25519.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/pool_u64.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/pool_u64_unbound.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ristretto255.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ristretto255_bulletproofs.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ristretto255_elgamal.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ristretto255_pedersen.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/secp256k1.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/simple_map.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/smart_table.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/smart_vector.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/string_utils.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/table.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/table_with_length.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/type_info.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/acl.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/bcs.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/bit_vector.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/error.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/features.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/fixed_point32.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/hash.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/option.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/signer.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/string.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/vector.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/main.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/account.move +1533 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aggregator.move +48 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aggregator_factory.move +66 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aggregator_v2.move +280 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aptos_account.move +443 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aptos_coin.move +204 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aptos_governance.move +1387 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/block.move +394 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/chain_id.move +41 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/chain_status.move +48 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/code.move +367 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/coin.move +2214 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/config_buffer.move +101 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/consensus_config.move +77 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/create_signer.move +21 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/delegation_pool.move +5568 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/dispatchable_fungible_asset.move +228 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/dkg.move +121 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/event.move +92 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/execution_config.move +66 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/function_info.move +100 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/fungible_asset.move +1566 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/gas_schedule.move +176 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/genesis.move +550 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/governance_proposal.move +23 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/guid.move +68 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/jwk_consensus_config.move +148 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/jwks.move +817 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/keyless_account.move +312 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/managed_coin.move +205 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/multisig_account.move +2477 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/object.move +1073 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/object_code_deployment.move +147 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/optional_aggregator.move +295 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/primary_fungible_store.move +405 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/randomness.move +574 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/randomness_api_v0_config.move +57 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/randomness_config.move +153 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/randomness_config_seqnum.move +49 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/reconfiguration.move +237 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/reconfiguration_state.move +132 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/reconfiguration_with_dkg.move +69 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/resource_account.move +267 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/stake.move +3286 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/staking_config.move +686 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/staking_contract.move +1618 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/staking_proxy.move +228 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/state_storage.move +90 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/storage_gas.move +622 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/system_addresses.move +82 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/timestamp.move +88 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/transaction_context.move +262 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/transaction_fee.move +457 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/transaction_validation.move +501 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/util.move +16 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/validator_consensus_info.move +42 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/version.move +115 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/vesting.move +2183 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/voting.move +1279 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/any.move +57 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/aptos_hash.move +253 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/big_vector.move +469 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/bls12381.move +985 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/bls12381_algebra.move +802 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/bn254_algebra.move +855 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/capability.move +193 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/comparator.move +173 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/copyable_any.move +45 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/crypto_algebra.move +351 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/debug.move +278 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ed25519.move +262 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/fixed_point64.move +447 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/from_bcs.move +91 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/math128.move +381 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/math64.move +336 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/math_fixed.move +139 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/math_fixed64.move +142 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/multi_ed25519.move +482 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/pool_u64.move +571 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/pool_u64_unbound.move +270 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ristretto255.move +1310 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ristretto255_bulletproofs.move +253 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ristretto255_elgamal.move +234 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ristretto255_pedersen.move +158 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/secp256k1.move +114 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/simple_map.move +319 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/smart_table.move +769 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/smart_vector.move +766 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/string_utils.move +148 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/table.move +152 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/table_with_length.move +141 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/type_info.move +351 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/acl.move +46 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/bcs.move +27 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/bit_vector.move +239 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/error.move +88 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/features.move +780 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/fixed_point32.move +295 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/hash.move +8 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/option.move +356 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/signer.move +21 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/string.move +93 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/vector.move +669 -0
- package/src/internal/move/jwks/build/jwk/sources/main.move +20 -0
- package/src/internal/queries/getAccountAddressesForAuthKey.graphql +8 -0
- package/src/internal/queries/getAuthKeysForPublicKey.graphql +11 -0
- package/src/types/codegen.yaml +1 -1
- package/src/types/generated/operations.ts +39 -8
- package/src/types/generated/queries.ts +53 -0
- package/src/types/generated/types.ts +620 -1239
- package/src/types/indexer.ts +8 -0
- package/src/types/types.ts +40 -3
- package/src/utils/const.ts +1 -0
- package/src/version.ts +1 -1
- package/dist/common/chunk-5JIJXVJ5.js +0 -4
- package/dist/common/chunk-5JIJXVJ5.js.map +0 -1
- package/dist/esm/chunk-4H2RMR7D.mjs +0 -2
- package/dist/esm/chunk-4H2RMR7D.mjs.map +0 -1
- package/dist/esm/chunk-GMDBBVDH.mjs +0 -6
- package/dist/esm/chunk-GMDBBVDH.mjs.map +0 -1
- package/dist/esm/chunk-HMUIOIBG.mjs +0 -2
- package/dist/esm/chunk-RJ7F4JDV.mjs +0 -2
- package/dist/esm/chunk-VHNX2NUR.mjs.map +0 -1
- /package/dist/esm/{chunk-Q4W3WJ2U.mjs.map → chunk-2BOHKN33.mjs.map} +0 -0
- /package/dist/esm/{chunk-SAMHWS73.mjs.map → chunk-4COLMDT3.mjs.map} +0 -0
- /package/dist/esm/{chunk-5ZRPV4YI.mjs.map → chunk-5URUYE6H.mjs.map} +0 -0
- /package/dist/esm/{chunk-2XQKGWHQ.mjs.map → chunk-FYYEPFML.mjs.map} +0 -0
- /package/dist/esm/{chunk-YHGGNYYL.mjs.map → chunk-MML57K5H.mjs.map} +0 -0
- /package/dist/esm/{chunk-PFXXFUBL.mjs.map → chunk-MNDTFHDB.mjs.map} +0 -0
- /package/dist/esm/{chunk-FSP4QM2T.mjs.map → chunk-SLWIGOQL.mjs.map} +0 -0
- /package/dist/esm/{chunk-7T62PEFI.mjs.map → chunk-TYYVB2A6.mjs.map} +0 -0
- /package/dist/esm/{chunk-WOTQ7227.mjs.map → chunk-U3GMNXO4.mjs.map} +0 -0
- /package/dist/esm/{chunk-IDHVW7HS.mjs.map → chunk-XZ75T7Q7.mjs.map} +0 -0
- /package/dist/esm/{chunk-UIVX6WSC.mjs.map → chunk-Y7ZQTLH4.mjs.map} +0 -0
- /package/dist/esm/{chunk-R7NQJWDG.mjs.map → chunk-Z5URUE4U.mjs.map} +0 -0
|
@@ -0,0 +1,769 @@
|
|
|
1
|
+
/// A smart table implementation based on linear hashing. (https://en.wikipedia.org/wiki/Linear_hashing)
|
|
2
|
+
/// Compare to Table, it uses less storage slots but has higher chance of collision, a trade-off between space and time.
|
|
3
|
+
/// Compare to other dynamic hashing implementation, linear hashing splits one bucket a time instead of doubling buckets
|
|
4
|
+
/// when expanding to avoid unexpected gas cost.
|
|
5
|
+
/// SmartTable uses faster hash function SipHash instead of cryptographically secure hash functions like sha3-256 since
|
|
6
|
+
/// it tolerates collisions.
|
|
7
|
+
module aptos_std::smart_table {
|
|
8
|
+
use std::error;
|
|
9
|
+
use std::vector;
|
|
10
|
+
use aptos_std::aptos_hash::sip_hash_from_value;
|
|
11
|
+
use aptos_std::table_with_length::{Self, TableWithLength};
|
|
12
|
+
use aptos_std::type_info::size_of_val;
|
|
13
|
+
use aptos_std::math64::max;
|
|
14
|
+
use aptos_std::simple_map::SimpleMap;
|
|
15
|
+
use aptos_std::simple_map;
|
|
16
|
+
use std::option::{Self, Option};
|
|
17
|
+
|
|
18
|
+
/// Key not found in the smart table
|
|
19
|
+
const ENOT_FOUND: u64 = 1;
|
|
20
|
+
/// Smart table capacity must be larger than 0
|
|
21
|
+
const EZERO_CAPACITY: u64 = 2;
|
|
22
|
+
/// Cannot destroy non-empty hashmap
|
|
23
|
+
const ENOT_EMPTY: u64 = 3;
|
|
24
|
+
/// Key already exists
|
|
25
|
+
const EALREADY_EXIST: u64 = 4;
|
|
26
|
+
/// Invalid load threshold percent to trigger split.
|
|
27
|
+
const EINVALID_LOAD_THRESHOLD_PERCENT: u64 = 5;
|
|
28
|
+
/// Invalid target bucket size.
|
|
29
|
+
const EINVALID_TARGET_BUCKET_SIZE: u64 = 6;
|
|
30
|
+
/// Invalid target bucket size.
|
|
31
|
+
const EEXCEED_MAX_BUCKET_SIZE: u64 = 7;
|
|
32
|
+
/// Invalid bucket index.
|
|
33
|
+
const EINVALID_BUCKET_INDEX: u64 = 8;
|
|
34
|
+
/// Invalid vector index within a bucket.
|
|
35
|
+
const EINVALID_VECTOR_INDEX: u64 = 9;
|
|
36
|
+
|
|
37
|
+
/// SmartTable entry contains both the key and value.
|
|
38
|
+
struct Entry<K, V> has copy, drop, store {
|
|
39
|
+
hash: u64,
|
|
40
|
+
key: K,
|
|
41
|
+
value: V,
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
struct SmartTable<K, V> has store {
|
|
45
|
+
buckets: TableWithLength<u64, vector<Entry<K, V>>>,
|
|
46
|
+
num_buckets: u64,
|
|
47
|
+
// number of bits to represent num_buckets
|
|
48
|
+
level: u8,
|
|
49
|
+
// total number of items
|
|
50
|
+
size: u64,
|
|
51
|
+
// Split will be triggered when target load threshold in percentage is reached when adding a new entry.
|
|
52
|
+
split_load_threshold: u8,
|
|
53
|
+
// The target size of each bucket, which is NOT enforced so oversized buckets can exist.
|
|
54
|
+
target_bucket_size: u64,
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/// Create an empty SmartTable with default configurations.
|
|
58
|
+
public fun new<K: copy + drop + store, V: store>(): SmartTable<K, V> {
|
|
59
|
+
new_with_config<K, V>(0, 0, 0)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/// Create an empty SmartTable with customized configurations.
|
|
63
|
+
/// `num_initial_buckets`: The number of buckets on initialization. 0 means using default value.
|
|
64
|
+
/// `split_load_threshold`: The percent number which once reached, split will be triggered. 0 means using default
|
|
65
|
+
/// value.
|
|
66
|
+
/// `target_bucket_size`: The target number of entries per bucket, though not guaranteed. 0 means not set and will
|
|
67
|
+
/// dynamically assgined by the contract code.
|
|
68
|
+
public fun new_with_config<K: copy + drop + store, V: store>(
|
|
69
|
+
num_initial_buckets: u64,
|
|
70
|
+
split_load_threshold: u8,
|
|
71
|
+
target_bucket_size: u64
|
|
72
|
+
): SmartTable<K, V> {
|
|
73
|
+
assert!(split_load_threshold <= 100, error::invalid_argument(EINVALID_LOAD_THRESHOLD_PERCENT));
|
|
74
|
+
let buckets = table_with_length::new();
|
|
75
|
+
table_with_length::add(&mut buckets, 0, vector::empty());
|
|
76
|
+
let table = SmartTable {
|
|
77
|
+
buckets,
|
|
78
|
+
num_buckets: 1,
|
|
79
|
+
level: 0,
|
|
80
|
+
size: 0,
|
|
81
|
+
// The default split load threshold is 75%.
|
|
82
|
+
split_load_threshold: if (split_load_threshold == 0) { 75 } else { split_load_threshold },
|
|
83
|
+
target_bucket_size,
|
|
84
|
+
};
|
|
85
|
+
// The default number of initial buckets is 2.
|
|
86
|
+
if (num_initial_buckets == 0) {
|
|
87
|
+
num_initial_buckets = 2;
|
|
88
|
+
};
|
|
89
|
+
while (num_initial_buckets > 1) {
|
|
90
|
+
num_initial_buckets = num_initial_buckets - 1;
|
|
91
|
+
split_one_bucket(&mut table);
|
|
92
|
+
};
|
|
93
|
+
table
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/// Destroy empty table.
|
|
97
|
+
/// Aborts if it's not empty.
|
|
98
|
+
public fun destroy_empty<K, V>(self: SmartTable<K, V>) {
|
|
99
|
+
assert!(self.size == 0, error::invalid_argument(ENOT_EMPTY));
|
|
100
|
+
let i = 0;
|
|
101
|
+
while (i < self.num_buckets) {
|
|
102
|
+
vector::destroy_empty(table_with_length::remove(&mut self.buckets, i));
|
|
103
|
+
i = i + 1;
|
|
104
|
+
};
|
|
105
|
+
let SmartTable { buckets, num_buckets: _, level: _, size: _, split_load_threshold: _, target_bucket_size: _ } = self;
|
|
106
|
+
table_with_length::destroy_empty(buckets);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/// Destroy a table completely when V has `drop`.
|
|
110
|
+
public fun destroy<K: drop, V: drop>(self: SmartTable<K, V>) {
|
|
111
|
+
clear(&mut self);
|
|
112
|
+
destroy_empty(self);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/// Clear a table completely when T has `drop`.
|
|
116
|
+
public fun clear<K: drop, V: drop>(self: &mut SmartTable<K, V>) {
|
|
117
|
+
*table_with_length::borrow_mut(&mut self.buckets, 0) = vector::empty();
|
|
118
|
+
let i = 1;
|
|
119
|
+
while (i < self.num_buckets) {
|
|
120
|
+
table_with_length::remove(&mut self.buckets, i);
|
|
121
|
+
i = i + 1;
|
|
122
|
+
};
|
|
123
|
+
self.num_buckets = 1;
|
|
124
|
+
self.level = 0;
|
|
125
|
+
self.size = 0;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/// Add (key, value) pair in the hash map, it may grow one bucket if current load factor exceeds the threshold.
|
|
129
|
+
/// Note it may not split the actual overflowed bucket. Instead, it was determined by `num_buckets` and `level`.
|
|
130
|
+
/// For standard linear hash algorithm, it is stored as a variable but `num_buckets` here could be leveraged.
|
|
131
|
+
/// Abort if `key` already exists.
|
|
132
|
+
/// Note: This method may occasionally cost much more gas when triggering bucket split.
|
|
133
|
+
public fun add<K, V>(self: &mut SmartTable<K, V>, key: K, value: V) {
|
|
134
|
+
let hash = sip_hash_from_value(&key);
|
|
135
|
+
let index = bucket_index(self.level, self.num_buckets, hash);
|
|
136
|
+
let bucket = table_with_length::borrow_mut(&mut self.buckets, index);
|
|
137
|
+
// We set a per-bucket limit here with a upper bound (10000) that nobody should normally reach.
|
|
138
|
+
assert!(vector::length(bucket) <= 10000, error::permission_denied(EEXCEED_MAX_BUCKET_SIZE));
|
|
139
|
+
assert!(vector::all(bucket, | entry | {
|
|
140
|
+
let e: &Entry<K, V> = entry;
|
|
141
|
+
&e.key != &key
|
|
142
|
+
}), error::invalid_argument(EALREADY_EXIST));
|
|
143
|
+
let e = Entry { hash, key, value };
|
|
144
|
+
if (self.target_bucket_size == 0) {
|
|
145
|
+
let estimated_entry_size = max(size_of_val(&e), 1);
|
|
146
|
+
self.target_bucket_size = max(1024 /* free_write_quota */ / estimated_entry_size, 1);
|
|
147
|
+
};
|
|
148
|
+
vector::push_back(bucket, e);
|
|
149
|
+
self.size = self.size + 1;
|
|
150
|
+
|
|
151
|
+
if (load_factor(self) >= (self.split_load_threshold as u64)) {
|
|
152
|
+
split_one_bucket(self);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/// Add multiple key/value pairs to the smart table. The keys must not already exist.
|
|
157
|
+
public fun add_all<K, V>(self: &mut SmartTable<K, V>, keys: vector<K>, values: vector<V>) {
|
|
158
|
+
vector::zip(keys, values, |key, value| { add(self, key, value); });
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
inline fun unzip_entries<K: copy, V: copy>(entries: &vector<Entry<K, V>>): (vector<K>, vector<V>) {
|
|
162
|
+
let keys = vector[];
|
|
163
|
+
let values = vector[];
|
|
164
|
+
vector::for_each_ref(entries, |e|{
|
|
165
|
+
let entry: &Entry<K, V> = e;
|
|
166
|
+
vector::push_back(&mut keys, entry.key);
|
|
167
|
+
vector::push_back(&mut values, entry.value);
|
|
168
|
+
});
|
|
169
|
+
(keys, values)
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/// Convert a smart table to a simple_map, which is supposed to be called mostly by view functions to get an atomic
|
|
173
|
+
/// view of the whole table.
|
|
174
|
+
/// Disclaimer: This function may be costly as the smart table may be huge in size. Use it at your own discretion.
|
|
175
|
+
public fun to_simple_map<K: store + copy + drop, V: store + copy>(
|
|
176
|
+
self: &SmartTable<K, V>,
|
|
177
|
+
): SimpleMap<K, V> {
|
|
178
|
+
let i = 0;
|
|
179
|
+
let res = simple_map::new<K, V>();
|
|
180
|
+
while (i < self.num_buckets) {
|
|
181
|
+
let (keys, values) = unzip_entries(table_with_length::borrow(&self.buckets, i));
|
|
182
|
+
simple_map::add_all(&mut res, keys, values);
|
|
183
|
+
i = i + 1;
|
|
184
|
+
};
|
|
185
|
+
res
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/// Get all keys in a smart table.
|
|
189
|
+
///
|
|
190
|
+
/// For a large enough smart table this function will fail due to execution gas limits, and
|
|
191
|
+
/// `keys_paginated` should be used instead.
|
|
192
|
+
public fun keys<K: store + copy + drop, V: store + copy>(
|
|
193
|
+
self: &SmartTable<K, V>
|
|
194
|
+
): vector<K> {
|
|
195
|
+
let (keys, _, _) = keys_paginated(self, 0, 0, length(self));
|
|
196
|
+
keys
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/// Get keys from a smart table, paginated.
|
|
200
|
+
///
|
|
201
|
+
/// This function can be used to paginate all keys in a large smart table outside of runtime,
|
|
202
|
+
/// e.g. through chained view function calls. The maximum `num_keys_to_get` before hitting gas
|
|
203
|
+
/// limits depends on the data types in the smart table.
|
|
204
|
+
///
|
|
205
|
+
/// When starting pagination, pass `starting_bucket_index` = `starting_vector_index` = 0.
|
|
206
|
+
///
|
|
207
|
+
/// The function will then return a vector of keys, an optional bucket index, and an optional
|
|
208
|
+
/// vector index. The unpacked return indices can then be used as inputs to another pagination
|
|
209
|
+
/// call, which will return a vector of more keys. This process can be repeated until the
|
|
210
|
+
/// returned bucket index and vector index value options are both none, which means that
|
|
211
|
+
/// pagination is complete. For an example, see `test_keys()`.
|
|
212
|
+
public fun keys_paginated<K: store + copy + drop, V: store + copy>(
|
|
213
|
+
self: &SmartTable<K, V>,
|
|
214
|
+
starting_bucket_index: u64,
|
|
215
|
+
starting_vector_index: u64,
|
|
216
|
+
num_keys_to_get: u64,
|
|
217
|
+
): (
|
|
218
|
+
vector<K>,
|
|
219
|
+
Option<u64>,
|
|
220
|
+
Option<u64>,
|
|
221
|
+
) {
|
|
222
|
+
let num_buckets = self.num_buckets;
|
|
223
|
+
let buckets_ref = &self.buckets;
|
|
224
|
+
assert!(starting_bucket_index < num_buckets, EINVALID_BUCKET_INDEX);
|
|
225
|
+
let bucket_ref = table_with_length::borrow(buckets_ref, starting_bucket_index);
|
|
226
|
+
let bucket_length = vector::length(bucket_ref);
|
|
227
|
+
assert!(
|
|
228
|
+
// In the general case, starting vector index should never be equal to bucket length
|
|
229
|
+
// because then iteration will attempt to borrow a vector element that is out of bounds.
|
|
230
|
+
// However starting vector index can be equal to bucket length in the special case of
|
|
231
|
+
// starting iteration at the beginning of an empty bucket since buckets are never
|
|
232
|
+
// destroyed, only emptied.
|
|
233
|
+
starting_vector_index < bucket_length || starting_vector_index == 0,
|
|
234
|
+
EINVALID_VECTOR_INDEX
|
|
235
|
+
);
|
|
236
|
+
let keys = vector[];
|
|
237
|
+
if (num_keys_to_get == 0) return
|
|
238
|
+
(keys, option::some(starting_bucket_index), option::some(starting_vector_index));
|
|
239
|
+
for (bucket_index in starting_bucket_index..num_buckets) {
|
|
240
|
+
bucket_ref = table_with_length::borrow(buckets_ref, bucket_index);
|
|
241
|
+
bucket_length = vector::length(bucket_ref);
|
|
242
|
+
for (vector_index in starting_vector_index..bucket_length) {
|
|
243
|
+
vector::push_back(&mut keys, vector::borrow(bucket_ref, vector_index).key);
|
|
244
|
+
num_keys_to_get = num_keys_to_get - 1;
|
|
245
|
+
if (num_keys_to_get == 0) {
|
|
246
|
+
vector_index = vector_index + 1;
|
|
247
|
+
return if (vector_index == bucket_length) {
|
|
248
|
+
bucket_index = bucket_index + 1;
|
|
249
|
+
if (bucket_index < num_buckets) {
|
|
250
|
+
(keys, option::some(bucket_index), option::some(0))
|
|
251
|
+
} else {
|
|
252
|
+
(keys, option::none(), option::none())
|
|
253
|
+
}
|
|
254
|
+
} else {
|
|
255
|
+
(keys, option::some(bucket_index), option::some(vector_index))
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
};
|
|
259
|
+
starting_vector_index = 0; // Start parsing the next bucket at vector index 0.
|
|
260
|
+
};
|
|
261
|
+
(keys, option::none(), option::none())
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/// Decide which is the next bucket to split and split it into two with the elements inside the bucket.
|
|
265
|
+
fun split_one_bucket<K, V>(self: &mut SmartTable<K, V>) {
|
|
266
|
+
let new_bucket_index = self.num_buckets;
|
|
267
|
+
// the next bucket to split is num_bucket without the most significant bit.
|
|
268
|
+
let to_split = new_bucket_index ^ (1 << self.level);
|
|
269
|
+
self.num_buckets = new_bucket_index + 1;
|
|
270
|
+
// if the whole level is splitted once, bump the level.
|
|
271
|
+
if (to_split + 1 == 1 << self.level) {
|
|
272
|
+
self.level = self.level + 1;
|
|
273
|
+
};
|
|
274
|
+
let old_bucket = table_with_length::borrow_mut(&mut self.buckets, to_split);
|
|
275
|
+
// partition the bucket, [0..p) stays in old bucket, [p..len) goes to new bucket
|
|
276
|
+
let p = vector::partition(old_bucket, |e| {
|
|
277
|
+
let entry: &Entry<K, V> = e; // Explicit type to satisfy compiler
|
|
278
|
+
bucket_index(self.level, self.num_buckets, entry.hash) != new_bucket_index
|
|
279
|
+
});
|
|
280
|
+
let new_bucket = vector::trim_reverse(old_bucket, p);
|
|
281
|
+
table_with_length::add(&mut self.buckets, new_bucket_index, new_bucket);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/// Return the expected bucket index to find the hash.
|
|
285
|
+
/// Basically, it use different base `1 << level` vs `1 << (level + 1)` in modulo operation based on the target
|
|
286
|
+
/// bucket index compared to the index of the next bucket to split.
|
|
287
|
+
fun bucket_index(level: u8, num_buckets: u64, hash: u64): u64 {
|
|
288
|
+
let index = hash % (1 << (level + 1));
|
|
289
|
+
if (index < num_buckets) {
|
|
290
|
+
// in existing bucket
|
|
291
|
+
index
|
|
292
|
+
} else {
|
|
293
|
+
// in unsplitted bucket
|
|
294
|
+
index % (1 << level)
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/// Acquire an immutable reference to the value which `key` maps to.
|
|
299
|
+
/// Aborts if there is no entry for `key`.
|
|
300
|
+
public fun borrow<K: drop, V>(self: &SmartTable<K, V>, key: K): &V {
|
|
301
|
+
let index = bucket_index(self.level, self.num_buckets, sip_hash_from_value(&key));
|
|
302
|
+
let bucket = table_with_length::borrow(&self.buckets, index);
|
|
303
|
+
let i = 0;
|
|
304
|
+
let len = vector::length(bucket);
|
|
305
|
+
while (i < len) {
|
|
306
|
+
let entry = vector::borrow(bucket, i);
|
|
307
|
+
if (&entry.key == &key) {
|
|
308
|
+
return &entry.value
|
|
309
|
+
};
|
|
310
|
+
i = i + 1;
|
|
311
|
+
};
|
|
312
|
+
abort error::invalid_argument(ENOT_FOUND)
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/// Acquire an immutable reference to the value which `key` maps to.
|
|
316
|
+
/// Returns specified default value if there is no entry for `key`.
|
|
317
|
+
public fun borrow_with_default<K: copy + drop, V>(self: &SmartTable<K, V>, key: K, default: &V): &V {
|
|
318
|
+
if (!contains(self, copy key)) {
|
|
319
|
+
default
|
|
320
|
+
} else {
|
|
321
|
+
borrow(self, copy key)
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
/// Acquire a mutable reference to the value which `key` maps to.
|
|
326
|
+
/// Aborts if there is no entry for `key`.
|
|
327
|
+
public fun borrow_mut<K: drop, V>(self: &mut SmartTable<K, V>, key: K): &mut V {
|
|
328
|
+
let index = bucket_index(self.level, self.num_buckets, sip_hash_from_value(&key));
|
|
329
|
+
let bucket = table_with_length::borrow_mut(&mut self.buckets, index);
|
|
330
|
+
let i = 0;
|
|
331
|
+
let len = vector::length(bucket);
|
|
332
|
+
while (i < len) {
|
|
333
|
+
let entry = vector::borrow_mut(bucket, i);
|
|
334
|
+
if (&entry.key == &key) {
|
|
335
|
+
return &mut entry.value
|
|
336
|
+
};
|
|
337
|
+
i = i + 1;
|
|
338
|
+
};
|
|
339
|
+
abort error::invalid_argument(ENOT_FOUND)
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
/// Acquire a mutable reference to the value which `key` maps to.
|
|
343
|
+
/// Insert the pair (`key`, `default`) first if there is no entry for `key`.
|
|
344
|
+
public fun borrow_mut_with_default<K: copy + drop, V: drop>(
|
|
345
|
+
self: &mut SmartTable<K, V>,
|
|
346
|
+
key: K,
|
|
347
|
+
default: V
|
|
348
|
+
): &mut V {
|
|
349
|
+
if (!contains(self, copy key)) {
|
|
350
|
+
add(self, copy key, default)
|
|
351
|
+
};
|
|
352
|
+
borrow_mut(self, key)
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
/// Returns true iff `table` contains an entry for `key`.
|
|
356
|
+
public fun contains<K: drop, V>(self: &SmartTable<K, V>, key: K): bool {
|
|
357
|
+
let hash = sip_hash_from_value(&key);
|
|
358
|
+
let index = bucket_index(self.level, self.num_buckets, hash);
|
|
359
|
+
let bucket = table_with_length::borrow(&self.buckets, index);
|
|
360
|
+
vector::any(bucket, | entry | {
|
|
361
|
+
let e: &Entry<K, V> = entry;
|
|
362
|
+
e.hash == hash && &e.key == &key
|
|
363
|
+
})
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/// Remove from `table` and return the value which `key` maps to.
|
|
367
|
+
/// Aborts if there is no entry for `key`.
|
|
368
|
+
public fun remove<K: copy + drop, V>(self: &mut SmartTable<K, V>, key: K): V {
|
|
369
|
+
let index = bucket_index(self.level, self.num_buckets, sip_hash_from_value(&key));
|
|
370
|
+
let bucket = table_with_length::borrow_mut(&mut self.buckets, index);
|
|
371
|
+
let i = 0;
|
|
372
|
+
let len = vector::length(bucket);
|
|
373
|
+
while (i < len) {
|
|
374
|
+
let entry = vector::borrow(bucket, i);
|
|
375
|
+
if (&entry.key == &key) {
|
|
376
|
+
let Entry { hash: _, key: _, value } = vector::swap_remove(bucket, i);
|
|
377
|
+
self.size = self.size - 1;
|
|
378
|
+
return value
|
|
379
|
+
};
|
|
380
|
+
i = i + 1;
|
|
381
|
+
};
|
|
382
|
+
abort error::invalid_argument(ENOT_FOUND)
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
/// Insert the pair (`key`, `value`) if there is no entry for `key`.
|
|
386
|
+
/// update the value of the entry for `key` to `value` otherwise
|
|
387
|
+
public fun upsert<K: copy + drop, V: drop>(self: &mut SmartTable<K, V>, key: K, value: V) {
|
|
388
|
+
if (!contains(self, copy key)) {
|
|
389
|
+
add(self, copy key, value)
|
|
390
|
+
} else {
|
|
391
|
+
let ref = borrow_mut(self, key);
|
|
392
|
+
*ref = value;
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
/// Returns the length of the table, i.e. the number of entries.
|
|
397
|
+
public fun length<K, V>(self: &SmartTable<K, V>): u64 {
|
|
398
|
+
self.size
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
/// Return the load factor of the hashtable.
|
|
402
|
+
public fun load_factor<K, V>(self: &SmartTable<K, V>): u64 {
|
|
403
|
+
self.size * 100 / self.num_buckets / self.target_bucket_size
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
/// Update `split_load_threshold`.
|
|
407
|
+
public fun update_split_load_threshold<K, V>(self: &mut SmartTable<K, V>, split_load_threshold: u8) {
|
|
408
|
+
assert!(
|
|
409
|
+
split_load_threshold <= 100 && split_load_threshold > 0,
|
|
410
|
+
error::invalid_argument(EINVALID_LOAD_THRESHOLD_PERCENT)
|
|
411
|
+
);
|
|
412
|
+
self.split_load_threshold = split_load_threshold;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/// Update `target_bucket_size`.
|
|
416
|
+
public fun update_target_bucket_size<K, V>(self: &mut SmartTable<K, V>, target_bucket_size: u64) {
|
|
417
|
+
assert!(target_bucket_size > 0, error::invalid_argument(EINVALID_TARGET_BUCKET_SIZE));
|
|
418
|
+
self.target_bucket_size = target_bucket_size;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
/// Apply the function to a reference of each key-value pair in the table.
|
|
422
|
+
public inline fun for_each_ref<K, V>(self: &SmartTable<K, V>, f: |&K, &V|) {
|
|
423
|
+
let i = 0;
|
|
424
|
+
while (i < aptos_std::smart_table::num_buckets(self)) {
|
|
425
|
+
vector::for_each_ref(
|
|
426
|
+
aptos_std::table_with_length::borrow(aptos_std::smart_table::borrow_buckets(self), i),
|
|
427
|
+
|elem| {
|
|
428
|
+
let (key, value) = aptos_std::smart_table::borrow_kv(elem);
|
|
429
|
+
f(key, value)
|
|
430
|
+
}
|
|
431
|
+
);
|
|
432
|
+
i = i + 1;
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
/// Apply the function to a mutable reference of each key-value pair in the table.
|
|
437
|
+
public inline fun for_each_mut<K, V>(self: &mut SmartTable<K, V>, f: |&K, &mut V|) {
|
|
438
|
+
let i = 0;
|
|
439
|
+
while (i < aptos_std::smart_table::num_buckets(self)) {
|
|
440
|
+
vector::for_each_mut(
|
|
441
|
+
table_with_length::borrow_mut(aptos_std::smart_table::borrow_buckets_mut(self), i),
|
|
442
|
+
|elem| {
|
|
443
|
+
let (key, value) = aptos_std::smart_table::borrow_kv_mut(elem);
|
|
444
|
+
f(key, value)
|
|
445
|
+
}
|
|
446
|
+
);
|
|
447
|
+
i = i + 1;
|
|
448
|
+
};
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
/// Map the function over the references of key-value pairs in the table without modifying it.
|
|
452
|
+
public inline fun map_ref<K: copy + drop + store, V1, V2: store>(
|
|
453
|
+
self: &SmartTable<K, V1>,
|
|
454
|
+
f: |&V1|V2
|
|
455
|
+
): SmartTable<K, V2> {
|
|
456
|
+
let new_table = new<K, V2>();
|
|
457
|
+
for_each_ref(self, |key, value| add(&mut new_table, *key, f(value)));
|
|
458
|
+
new_table
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
/// Return true if any key-value pair in the table satisfies the predicate.
|
|
462
|
+
public inline fun any<K, V>(
|
|
463
|
+
self: &SmartTable<K, V>,
|
|
464
|
+
p: |&K, &V|bool
|
|
465
|
+
): bool {
|
|
466
|
+
let found = false;
|
|
467
|
+
let i = 0;
|
|
468
|
+
while (i < aptos_std::smart_table::num_buckets(self)) {
|
|
469
|
+
found = vector::any(table_with_length::borrow(aptos_std::smart_table::borrow_buckets(self), i), |elem| {
|
|
470
|
+
let (key, value) = aptos_std::smart_table::borrow_kv(elem);
|
|
471
|
+
p(key, value)
|
|
472
|
+
});
|
|
473
|
+
if (found) break;
|
|
474
|
+
i = i + 1;
|
|
475
|
+
};
|
|
476
|
+
found
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
// Helper functions to circumvent the scope issue of inline functions.
|
|
480
|
+
public fun borrow_kv<K, V>(self: &Entry<K, V>): (&K, &V) {
|
|
481
|
+
(&self.key, &self.value)
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
public fun borrow_kv_mut<K, V>(self: &mut Entry<K, V>): (&mut K, &mut V) {
|
|
485
|
+
(&mut self.key, &mut self.value)
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
public fun num_buckets<K, V>(self: &SmartTable<K, V>): u64 {
|
|
489
|
+
self.num_buckets
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
public fun borrow_buckets<K, V>(self: &SmartTable<K, V>): &TableWithLength<u64, vector<Entry<K, V>>> {
|
|
493
|
+
&self.buckets
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
public fun borrow_buckets_mut<K, V>(self: &mut SmartTable<K, V>): &mut TableWithLength<u64, vector<Entry<K, V>>> {
|
|
497
|
+
&mut self.buckets
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
|
|
501
|
+
#[test]
|
|
502
|
+
fun smart_table_test() {
|
|
503
|
+
let table = new();
|
|
504
|
+
let i = 0;
|
|
505
|
+
while (i < 200) {
|
|
506
|
+
add(&mut table, i, i);
|
|
507
|
+
i = i + 1;
|
|
508
|
+
};
|
|
509
|
+
assert!(length(&table) == 200, 0);
|
|
510
|
+
i = 0;
|
|
511
|
+
while (i < 200) {
|
|
512
|
+
*borrow_mut(&mut table, i) = i * 2;
|
|
513
|
+
assert!(*borrow(&table, i) == i * 2, 0);
|
|
514
|
+
i = i + 1;
|
|
515
|
+
};
|
|
516
|
+
i = 0;
|
|
517
|
+
assert!(table.num_buckets > 5, table.num_buckets);
|
|
518
|
+
while (i < 200) {
|
|
519
|
+
assert!(contains(&table, i), 0);
|
|
520
|
+
assert!(remove(&mut table, i) == i * 2, 0);
|
|
521
|
+
i = i + 1;
|
|
522
|
+
};
|
|
523
|
+
destroy_empty(table);
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
#[test]
|
|
527
|
+
fun smart_table_split_test() {
|
|
528
|
+
let table: SmartTable<u64, u64> = new_with_config(1, 100, 1);
|
|
529
|
+
let i = 1;
|
|
530
|
+
let level = 0;
|
|
531
|
+
while (i <= 256) {
|
|
532
|
+
assert!(table.num_buckets == i, 0);
|
|
533
|
+
assert!(table.level == level, i);
|
|
534
|
+
add(&mut table, i, i);
|
|
535
|
+
i = i + 1;
|
|
536
|
+
if (i == 1 << (level + 1)) {
|
|
537
|
+
level = level + 1;
|
|
538
|
+
};
|
|
539
|
+
};
|
|
540
|
+
let i = 1;
|
|
541
|
+
while (i <= 256) {
|
|
542
|
+
assert!(*borrow(&table, i) == i, 0);
|
|
543
|
+
i = i + 1;
|
|
544
|
+
};
|
|
545
|
+
assert!(table.num_buckets == 257, table.num_buckets);
|
|
546
|
+
assert!(load_factor(&table) == 99, 0);
|
|
547
|
+
assert!(length(&table) == 256, 0);
|
|
548
|
+
destroy(table);
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
#[test]
|
|
552
|
+
fun smart_table_update_configs() {
|
|
553
|
+
let table = new();
|
|
554
|
+
let i = 0;
|
|
555
|
+
while (i < 200) {
|
|
556
|
+
add(&mut table, i, i);
|
|
557
|
+
i = i + 1;
|
|
558
|
+
};
|
|
559
|
+
assert!(length(&table) == 200, 0);
|
|
560
|
+
update_target_bucket_size(&mut table, 10);
|
|
561
|
+
update_split_load_threshold(&mut table, 50);
|
|
562
|
+
while (i < 400) {
|
|
563
|
+
add(&mut table, i, i);
|
|
564
|
+
i = i + 1;
|
|
565
|
+
};
|
|
566
|
+
assert!(length(&table) == 400, 0);
|
|
567
|
+
i = 0;
|
|
568
|
+
while (i < 400) {
|
|
569
|
+
assert!(contains(&table, i), 0);
|
|
570
|
+
assert!(remove(&mut table, i) == i, 0);
|
|
571
|
+
i = i + 1;
|
|
572
|
+
};
|
|
573
|
+
destroy_empty(table);
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
#[test]
|
|
577
|
+
public fun smart_table_add_all_test() {
|
|
578
|
+
let table: SmartTable<u64, u64> = new_with_config(1, 100, 2);
|
|
579
|
+
assert!(length(&table) == 0, 0);
|
|
580
|
+
add_all(&mut table, vector[1, 2, 3, 4, 5, 6, 7], vector[1, 2, 3, 4, 5, 6, 7]);
|
|
581
|
+
assert!(length(&table) == 7, 1);
|
|
582
|
+
let i = 1;
|
|
583
|
+
while (i < 8) {
|
|
584
|
+
assert!(*borrow(&table, i) == i, 0);
|
|
585
|
+
i = i + 1;
|
|
586
|
+
};
|
|
587
|
+
i = i - 1;
|
|
588
|
+
while (i > 0) {
|
|
589
|
+
remove(&mut table, i);
|
|
590
|
+
i = i - 1;
|
|
591
|
+
};
|
|
592
|
+
destroy_empty(table);
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
#[test]
|
|
596
|
+
public fun smart_table_to_simple_map_test() {
|
|
597
|
+
let table = new();
|
|
598
|
+
let i = 0;
|
|
599
|
+
while (i < 200) {
|
|
600
|
+
add(&mut table, i, i);
|
|
601
|
+
i = i + 1;
|
|
602
|
+
};
|
|
603
|
+
let map = to_simple_map(&table);
|
|
604
|
+
assert!(simple_map::length(&map) == 200, 0);
|
|
605
|
+
destroy(table);
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
#[test]
|
|
609
|
+
public fun smart_table_clear_test() {
|
|
610
|
+
let table = new();
|
|
611
|
+
let i = 0u64;
|
|
612
|
+
while (i < 200) {
|
|
613
|
+
add(&mut table, i, i);
|
|
614
|
+
i = i + 1;
|
|
615
|
+
};
|
|
616
|
+
clear(&mut table);
|
|
617
|
+
let i = 0;
|
|
618
|
+
while (i < 200) {
|
|
619
|
+
add(&mut table, i, i);
|
|
620
|
+
i = i + 1;
|
|
621
|
+
};
|
|
622
|
+
assert!(table.size == 200, 0);
|
|
623
|
+
destroy(table);
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
#[test]
|
|
627
|
+
fun test_keys() {
|
|
628
|
+
let i = 0;
|
|
629
|
+
let table = new();
|
|
630
|
+
let expected_keys = vector[];
|
|
631
|
+
let keys = keys(&table);
|
|
632
|
+
assert!(vector::is_empty(&keys), 0);
|
|
633
|
+
let starting_bucket_index = 0;
|
|
634
|
+
let starting_vector_index = 0;
|
|
635
|
+
let (keys, starting_bucket_index_r, starting_vector_index_r) = keys_paginated(
|
|
636
|
+
&table,
|
|
637
|
+
starting_bucket_index,
|
|
638
|
+
starting_vector_index,
|
|
639
|
+
0
|
|
640
|
+
);
|
|
641
|
+
assert!(starting_bucket_index_r == option::some(starting_bucket_index), 0);
|
|
642
|
+
assert!(starting_vector_index_r == option::some(starting_vector_index), 0);
|
|
643
|
+
assert!(vector::is_empty(&keys), 0);
|
|
644
|
+
while (i < 100) {
|
|
645
|
+
add(&mut table, i, 0);
|
|
646
|
+
vector::push_back(&mut expected_keys, i);
|
|
647
|
+
i = i + 1;
|
|
648
|
+
};
|
|
649
|
+
let keys = keys(&table);
|
|
650
|
+
assert!(vector::length(&keys) == vector::length(&expected_keys), 0);
|
|
651
|
+
vector::for_each_ref(&keys, |e_ref| {
|
|
652
|
+
assert!(vector::contains(&expected_keys, e_ref), 0);
|
|
653
|
+
});
|
|
654
|
+
let keys = vector[];
|
|
655
|
+
let starting_bucket_index = 0;
|
|
656
|
+
let starting_vector_index = 0;
|
|
657
|
+
let returned_keys = vector[];
|
|
658
|
+
vector::length(&returned_keys); // To eliminate erroneous compiler "unused" warning
|
|
659
|
+
loop {
|
|
660
|
+
(returned_keys, starting_bucket_index_r, starting_vector_index_r) = keys_paginated(
|
|
661
|
+
&table,
|
|
662
|
+
starting_bucket_index,
|
|
663
|
+
starting_vector_index,
|
|
664
|
+
15
|
|
665
|
+
);
|
|
666
|
+
vector::append(&mut keys, returned_keys);
|
|
667
|
+
if (
|
|
668
|
+
starting_bucket_index_r == option::none() ||
|
|
669
|
+
starting_vector_index_r == option::none()
|
|
670
|
+
) break;
|
|
671
|
+
starting_bucket_index = option::destroy_some(starting_bucket_index_r);
|
|
672
|
+
starting_vector_index = option::destroy_some(starting_vector_index_r);
|
|
673
|
+
};
|
|
674
|
+
assert!(vector::length(&keys) == vector::length(&expected_keys), 0);
|
|
675
|
+
vector::for_each_ref(&keys, |e_ref| {
|
|
676
|
+
assert!(vector::contains(&expected_keys, e_ref), 0);
|
|
677
|
+
});
|
|
678
|
+
destroy(table);
|
|
679
|
+
table = new();
|
|
680
|
+
add(&mut table, 1, 0);
|
|
681
|
+
add(&mut table, 2, 0);
|
|
682
|
+
(keys, starting_bucket_index_r, starting_vector_index_r) = keys_paginated(&table, 0, 0, 1);
|
|
683
|
+
(returned_keys, starting_bucket_index_r, starting_vector_index_r) = keys_paginated(
|
|
684
|
+
&table,
|
|
685
|
+
option::destroy_some(starting_bucket_index_r),
|
|
686
|
+
option::destroy_some(starting_vector_index_r),
|
|
687
|
+
1,
|
|
688
|
+
);
|
|
689
|
+
vector::append(&mut keys, returned_keys);
|
|
690
|
+
assert!(keys == vector[1, 2] || keys == vector[2, 1], 0);
|
|
691
|
+
assert!(starting_bucket_index_r == option::none(), 0);
|
|
692
|
+
assert!(starting_vector_index_r == option::none(), 0);
|
|
693
|
+
(keys, starting_bucket_index_r, starting_vector_index_r) = keys_paginated(&table, 0, 0, 0);
|
|
694
|
+
assert!(keys == vector[], 0);
|
|
695
|
+
assert!(starting_bucket_index_r == option::some(0), 0);
|
|
696
|
+
assert!(starting_vector_index_r == option::some(0), 0);
|
|
697
|
+
destroy(table);
|
|
698
|
+
}
|
|
699
|
+
|
|
700
|
+
#[test]
|
|
701
|
+
fun test_keys_corner_cases() {
|
|
702
|
+
let table = new();
|
|
703
|
+
let expected_keys = vector[];
|
|
704
|
+
for (i in 0..100) {
|
|
705
|
+
add(&mut table, i, 0);
|
|
706
|
+
vector::push_back(&mut expected_keys, i);
|
|
707
|
+
};
|
|
708
|
+
let (keys, starting_bucket_index_r, starting_vector_index_r) =
|
|
709
|
+
keys_paginated(&table, 0, 0, 5); // Both indices 0.
|
|
710
|
+
assert!(vector::length(&keys) == 5, 0);
|
|
711
|
+
vector::for_each_ref(&keys, |e_ref| {
|
|
712
|
+
assert!(vector::contains(&expected_keys, e_ref), 0);
|
|
713
|
+
});
|
|
714
|
+
let starting_bucket_index = option::destroy_some(starting_bucket_index_r);
|
|
715
|
+
let starting_vector_index = option::destroy_some(starting_vector_index_r);
|
|
716
|
+
(keys, starting_bucket_index_r, starting_vector_index_r) = keys_paginated(
|
|
717
|
+
&table,
|
|
718
|
+
starting_bucket_index,
|
|
719
|
+
starting_vector_index,
|
|
720
|
+
0, // Number of keys 0.
|
|
721
|
+
);
|
|
722
|
+
assert!(keys == vector[], 0);
|
|
723
|
+
assert!(starting_bucket_index_r == option::some(starting_bucket_index), 0);
|
|
724
|
+
assert!(starting_vector_index_r == option::some(starting_vector_index), 0);
|
|
725
|
+
(keys, starting_bucket_index_r, starting_vector_index_r) = keys_paginated(
|
|
726
|
+
&table,
|
|
727
|
+
starting_bucket_index,
|
|
728
|
+
0, // Vector index 0.
|
|
729
|
+
50,
|
|
730
|
+
);
|
|
731
|
+
assert!(vector::length(&keys) == 50, 0);
|
|
732
|
+
vector::for_each_ref(&keys, |e_ref| {
|
|
733
|
+
assert!(vector::contains(&expected_keys, e_ref), 0);
|
|
734
|
+
});
|
|
735
|
+
let starting_bucket_index = option::destroy_some(starting_bucket_index_r);
|
|
736
|
+
assert!(starting_bucket_index > 0, 0);
|
|
737
|
+
assert!(option::is_some(&starting_vector_index_r), 0);
|
|
738
|
+
(keys, starting_bucket_index_r, starting_vector_index_r) = keys_paginated(
|
|
739
|
+
&table,
|
|
740
|
+
0, // Bucket index 0.
|
|
741
|
+
1,
|
|
742
|
+
50,
|
|
743
|
+
);
|
|
744
|
+
assert!(vector::length(&keys) == 50, 0);
|
|
745
|
+
vector::for_each_ref(&keys, |e_ref| {
|
|
746
|
+
assert!(vector::contains(&expected_keys, e_ref), 0);
|
|
747
|
+
});
|
|
748
|
+
assert!(option::is_some(&starting_bucket_index_r), 0);
|
|
749
|
+
assert!(option::is_some(&starting_vector_index_r), 0);
|
|
750
|
+
destroy(table);
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
#[test, expected_failure(abort_code = EINVALID_BUCKET_INDEX)]
|
|
754
|
+
fun test_keys_invalid_bucket_index() {
|
|
755
|
+
let table = new();
|
|
756
|
+
add(&mut table, 1, 0);
|
|
757
|
+
let num_buckets = table.num_buckets;
|
|
758
|
+
keys_paginated(&table, num_buckets + 1, 0, 1);
|
|
759
|
+
destroy(table);
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
#[test, expected_failure(abort_code = EINVALID_VECTOR_INDEX)]
|
|
763
|
+
fun test_keys_invalid_vector_index() {
|
|
764
|
+
let table = new();
|
|
765
|
+
add(&mut table, 1, 0);
|
|
766
|
+
keys_paginated(&table, 0, 1, 1);
|
|
767
|
+
destroy(table);
|
|
768
|
+
}
|
|
769
|
+
}
|