@algorandfoundation/algokit-utils 10.0.0-alpha.4 → 10.0.0-alpha.41
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/_virtual/{rolldown_runtime.js → _rolldown/runtime.js} +11 -16
- package/abi/index.d.ts +2 -1
- package/abi/index.js +4 -0
- package/abi/index.mjs +2 -1
- package/account-manager.d.ts +447 -0
- package/account-manager.js +618 -0
- package/account-manager.js.map +1 -0
- package/account-manager.mjs +614 -0
- package/account-manager.mjs.map +1 -0
- package/account.d.ts +156 -0
- package/account.js +11 -0
- package/account.js.map +1 -0
- package/account.mjs +9 -0
- package/account.mjs.map +1 -0
- package/algo25/index.js +1 -0
- package/algod-client/index.d.ts +3 -7
- package/algod-client/index.js +4 -5
- package/algod-client/index.mjs +2 -2
- package/algorand-client-transaction-creator.d.ts +891 -0
- package/algorand-client-transaction-creator.js +736 -0
- package/algorand-client-transaction-creator.js.map +1 -0
- package/algorand-client-transaction-creator.mjs +734 -0
- package/algorand-client-transaction-creator.mjs.map +1 -0
- package/algorand-client-transaction-sender.d.ts +1099 -0
- package/algorand-client-transaction-sender.js +928 -0
- package/algorand-client-transaction-sender.js.map +1 -0
- package/algorand-client-transaction-sender.mjs +926 -0
- package/algorand-client-transaction-sender.mjs.map +1 -0
- package/algorand-client.d.ts +266 -0
- package/algorand-client.js +350 -0
- package/algorand-client.js.map +1 -0
- package/algorand-client.mjs +349 -0
- package/algorand-client.mjs.map +1 -0
- package/amount.d.ts +58 -3
- package/amount.js +109 -17
- package/amount.js.map +1 -1
- package/amount.mjs +100 -11
- package/amount.mjs.map +1 -1
- package/app-client.d.ts +1064 -0
- package/app-client.js +912 -0
- package/app-client.js.map +1 -0
- package/app-client.mjs +910 -0
- package/app-client.mjs.map +1 -0
- package/app-deployer.d.ts +166 -0
- package/app-deployer.js +354 -0
- package/app-deployer.js.map +1 -0
- package/app-deployer.mjs +353 -0
- package/app-deployer.mjs.map +1 -0
- package/app-factory.d.ts +816 -0
- package/app-factory.js +449 -0
- package/app-factory.js.map +1 -0
- package/app-factory.mjs +448 -0
- package/app-factory.mjs.map +1 -0
- package/app-manager.d.ts +323 -0
- package/app-manager.js +469 -0
- package/app-manager.js.map +1 -0
- package/app-manager.mjs +468 -0
- package/app-manager.mjs.map +1 -0
- package/app-spec.d.ts +203 -0
- package/app-spec.js +138 -0
- package/app-spec.js.map +1 -0
- package/app-spec.mjs +137 -0
- package/app-spec.mjs.map +1 -0
- package/app.d.ts +257 -0
- package/app.js +50 -0
- package/app.js.map +1 -0
- package/app.mjs +42 -0
- package/app.mjs.map +1 -0
- package/asset-manager.d.ts +215 -0
- package/asset-manager.js +170 -0
- package/asset-manager.js.map +1 -0
- package/asset-manager.mjs +169 -0
- package/asset-manager.mjs.map +1 -0
- package/async-event-emitter.d.ts +16 -0
- package/async-event-emitter.js +39 -0
- package/async-event-emitter.js.map +1 -0
- package/async-event-emitter.mjs +37 -0
- package/async-event-emitter.mjs.map +1 -0
- package/client-manager.d.ts +475 -0
- package/client-manager.js +617 -0
- package/client-manager.js.map +1 -0
- package/client-manager.mjs +616 -0
- package/client-manager.mjs.map +1 -0
- package/common/index.d.ts +28 -0
- package/common/index.js +110 -0
- package/common/index.mjs +26 -0
- package/composer.d.ts +947 -0
- package/composer.js +1585 -0
- package/composer.js.map +1 -0
- package/composer.mjs +1583 -0
- package/composer.mjs.map +1 -0
- package/config.d.ts +1 -1
- package/config.js +3 -2
- package/config.js.map +1 -1
- package/config.mjs +1 -1
- package/config.mjs.map +1 -1
- package/crypto/index.d.ts +5 -0
- package/crypto/index.js +14 -0
- package/crypto/index.mjs +6 -0
- package/debugging.d.ts +47 -0
- package/debugging.js +21 -0
- package/debugging.js.map +1 -0
- package/debugging.mjs +15 -0
- package/debugging.mjs.map +1 -0
- package/dispenser-client.d.ts +91 -0
- package/dispenser-client.js +129 -0
- package/dispenser-client.js.map +1 -0
- package/dispenser-client.mjs +128 -0
- package/dispenser-client.mjs.map +1 -0
- package/expand.d.ts +2 -0
- package/expand.js +0 -0
- package/expand.mjs +0 -0
- package/index.d.ts +28 -7
- package/index.js +39 -10
- package/index.mjs +21 -6
- package/indexer-client/index.d.ts +2 -2
- package/indexer-client/index.js +7 -6
- package/indexer-client/index.mjs +2 -2
- package/{indexer-lookup.d.ts → indexer-client/indexer-lookup.d.ts} +8 -11
- package/{indexer-lookup.mjs → indexer-client/indexer-lookup.js} +6 -10
- package/indexer-client/indexer-lookup.js.map +1 -0
- package/{indexer-lookup.js → indexer-client/indexer-lookup.mjs} +3 -18
- package/indexer-client/indexer-lookup.mjs.map +1 -0
- package/indexer.d.ts +40 -0
- package/indexer.js +39 -0
- package/indexer.js.map +1 -0
- package/indexer.mjs +35 -0
- package/indexer.mjs.map +1 -0
- package/instance-of.d.ts +8 -0
- package/kmd-account-manager.d.ts +74 -0
- package/kmd-account-manager.js +168 -0
- package/kmd-account-manager.js.map +1 -0
- package/kmd-account-manager.mjs +165 -0
- package/kmd-account-manager.mjs.map +1 -0
- package/kmd-client/index.d.ts +1 -2
- package/kmd-client/index.js +1 -5
- package/kmd-client/index.mjs +1 -2
- package/lifecycle-events.d.ts +14 -0
- package/lifecycle-events.js +12 -0
- package/lifecycle-events.js.map +1 -0
- package/lifecycle-events.mjs +10 -0
- package/lifecycle-events.mjs.map +1 -0
- package/logging.d.ts +13 -0
- package/logging.js +48 -0
- package/logging.js.map +1 -0
- package/logging.mjs +42 -0
- package/logging.mjs.map +1 -0
- package/logic-error.d.ts +39 -0
- package/logic-error.js +55 -0
- package/logic-error.js.map +1 -0
- package/logic-error.mjs +53 -0
- package/logic-error.mjs.map +1 -0
- package/network-client.d.ts +43 -0
- package/network-client.js +15 -0
- package/network-client.js.map +1 -0
- package/network-client.mjs +13 -0
- package/network-client.mjs.map +1 -0
- package/network-manager.d.ts +143 -0
- package/network-manager.js +191 -0
- package/network-manager.js.map +1 -0
- package/network-manager.mjs +190 -0
- package/network-manager.mjs.map +1 -0
- package/package.json +28 -6
- package/packages/abi/src/abi-method.js +18 -19
- package/packages/abi/src/abi-method.js.map +1 -1
- package/packages/abi/src/abi-method.mjs +17 -17
- package/packages/abi/src/abi-method.mjs.map +1 -1
- package/packages/abi/src/abi-type.d.ts +1 -3
- package/packages/abi/src/abi-type.js +7 -36
- package/packages/abi/src/abi-type.js.map +1 -1
- package/packages/abi/src/abi-type.mjs +7 -36
- package/packages/abi/src/abi-type.mjs.map +1 -1
- package/packages/abi/src/arc56-contract.js +1 -0
- package/packages/abi/src/arc56-contract.js.map +1 -1
- package/packages/abi/src/arc56-contract.mjs +1 -0
- package/packages/abi/src/arc56-contract.mjs.map +1 -1
- package/packages/abi/src/utils.d.ts +22 -0
- package/packages/abi/src/utils.js +57 -0
- package/packages/abi/src/utils.js.map +1 -0
- package/packages/abi/src/utils.mjs +55 -0
- package/packages/abi/src/utils.mjs.map +1 -0
- package/packages/algo25/src/index.d.ts +2 -2
- package/packages/algo25/src/index.js +2 -2
- package/packages/algo25/src/index.js.map +1 -1
- package/packages/algo25/src/index.mjs +1 -1
- package/packages/algo25/src/index.mjs.map +1 -1
- package/packages/algod_client/src/apis/api-service.d.ts +44 -44
- package/packages/algod_client/src/apis/api-service.js +155 -155
- package/packages/algod_client/src/apis/api-service.js.map +1 -1
- package/packages/algod_client/src/apis/api-service.mjs +155 -155
- package/packages/algod_client/src/apis/api-service.mjs.map +1 -1
- package/packages/algod_client/src/core/api-error.js +3 -1
- package/packages/algod_client/src/core/api-error.js.map +1 -1
- package/packages/algod_client/src/core/api-error.mjs +3 -1
- package/packages/algod_client/src/core/api-error.mjs.map +1 -1
- package/packages/algod_client/src/core/base-http-request.js.map +1 -1
- package/packages/algod_client/src/core/base-http-request.mjs.map +1 -1
- package/packages/algod_client/src/core/fetch-http-request.js.map +1 -1
- package/packages/algod_client/src/core/fetch-http-request.mjs.map +1 -1
- package/packages/algod_client/src/core/model-runtime.js +6 -6
- package/packages/algod_client/src/core/model-runtime.js.map +1 -1
- package/packages/algod_client/src/core/model-runtime.mjs +8 -8
- package/packages/algod_client/src/core/model-runtime.mjs.map +1 -1
- package/packages/algod_client/src/core/request.js.map +1 -1
- package/packages/algod_client/src/core/request.mjs.map +1 -1
- package/packages/algod_client/src/models/account-application-response.js.map +1 -1
- package/packages/algod_client/src/models/account-application-response.mjs.map +1 -1
- package/packages/algod_client/src/models/account-asset-response.js.map +1 -1
- package/packages/algod_client/src/models/account-asset-response.mjs.map +1 -1
- package/packages/algod_client/src/models/account-participation.js +4 -4
- package/packages/algod_client/src/models/account-participation.js.map +1 -1
- package/packages/algod_client/src/models/account-participation.mjs +4 -4
- package/packages/algod_client/src/models/account-participation.mjs.map +1 -1
- package/packages/algod_client/src/models/account-state-delta.js.map +1 -1
- package/packages/algod_client/src/models/account-state-delta.mjs.map +1 -1
- package/packages/algod_client/src/models/account.js.map +1 -1
- package/packages/algod_client/src/models/account.mjs.map +1 -1
- package/packages/algod_client/src/models/application-initial-states.js.map +1 -1
- package/packages/algod_client/src/models/application-initial-states.mjs.map +1 -1
- package/packages/algod_client/src/models/application-kv-storage.js.map +1 -1
- package/packages/algod_client/src/models/application-kv-storage.mjs.map +1 -1
- package/packages/algod_client/src/models/application-local-state.js.map +1 -1
- package/packages/algod_client/src/models/application-local-state.mjs.map +1 -1
- package/packages/algod_client/src/models/application-params.js.map +1 -1
- package/packages/algod_client/src/models/application-params.mjs.map +1 -1
- package/packages/algod_client/src/models/application-state-operation.js.map +1 -1
- package/packages/algod_client/src/models/application-state-operation.mjs.map +1 -1
- package/packages/algod_client/src/models/application-state-schema.d.ts +2 -2
- package/packages/algod_client/src/models/application-state-schema.js +2 -2
- package/packages/algod_client/src/models/application-state-schema.js.map +1 -1
- package/packages/algod_client/src/models/application-state-schema.mjs +2 -2
- package/packages/algod_client/src/models/application-state-schema.mjs.map +1 -1
- package/packages/algod_client/src/models/application.js.map +1 -1
- package/packages/algod_client/src/models/application.mjs.map +1 -1
- package/packages/algod_client/src/models/asset-holding.js.map +1 -1
- package/packages/algod_client/src/models/asset-holding.mjs.map +1 -1
- package/packages/algod_client/src/models/asset-params.js +2 -1
- package/packages/algod_client/src/models/asset-params.js.map +1 -1
- package/packages/algod_client/src/models/asset-params.mjs +2 -1
- package/packages/algod_client/src/models/asset-params.mjs.map +1 -1
- package/packages/algod_client/src/models/asset.js.map +1 -1
- package/packages/algod_client/src/models/asset.mjs.map +1 -1
- package/packages/algod_client/src/models/avm-key-value.js.map +1 -1
- package/packages/algod_client/src/models/avm-key-value.mjs.map +1 -1
- package/packages/algod_client/src/models/avm-value.js.map +1 -1
- package/packages/algod_client/src/models/avm-value.mjs.map +1 -1
- package/packages/algod_client/src/models/block-hash-response.js.map +1 -1
- package/packages/algod_client/src/models/block-hash-response.mjs.map +1 -1
- package/packages/algod_client/src/models/block-response.js +1 -2
- package/packages/algod_client/src/models/block-response.js.map +1 -1
- package/packages/algod_client/src/models/block-response.mjs +2 -3
- package/packages/algod_client/src/models/block-response.mjs.map +1 -1
- package/packages/algod_client/src/models/block-txids-response.js.map +1 -1
- package/packages/algod_client/src/models/block-txids-response.mjs.map +1 -1
- package/packages/algod_client/src/models/block.d.ts +60 -40
- package/packages/algod_client/src/models/block.js +184 -108
- package/packages/algod_client/src/models/block.js.map +1 -1
- package/packages/algod_client/src/models/block.mjs +184 -108
- package/packages/algod_client/src/models/block.mjs.map +1 -1
- package/packages/algod_client/src/models/box-descriptor.js.map +1 -1
- package/packages/algod_client/src/models/box-descriptor.mjs.map +1 -1
- package/packages/algod_client/src/models/box.js.map +1 -1
- package/packages/algod_client/src/models/box.mjs.map +1 -1
- package/packages/algod_client/src/models/boxes-response.js.map +1 -1
- package/packages/algod_client/src/models/boxes-response.mjs.map +1 -1
- package/packages/algod_client/src/models/build-version.js.map +1 -1
- package/packages/algod_client/src/models/build-version.mjs.map +1 -1
- package/packages/algod_client/src/models/compile-response.js.map +1 -1
- package/packages/algod_client/src/models/compile-response.mjs.map +1 -1
- package/packages/algod_client/src/models/disassemble-response.js.map +1 -1
- package/packages/algod_client/src/models/disassemble-response.mjs.map +1 -1
- package/packages/algod_client/src/models/eval-delta-key-value.js +2 -2
- package/packages/algod_client/src/models/eval-delta-key-value.js.map +1 -1
- package/packages/algod_client/src/models/eval-delta-key-value.mjs +2 -2
- package/packages/algod_client/src/models/eval-delta-key-value.mjs.map +1 -1
- package/packages/algod_client/src/models/eval-delta.js +2 -2
- package/packages/algod_client/src/models/eval-delta.js.map +1 -1
- package/packages/algod_client/src/models/eval-delta.mjs +2 -2
- package/packages/algod_client/src/models/eval-delta.mjs.map +1 -1
- package/packages/algod_client/src/models/genesis-allocation.js.map +1 -1
- package/packages/algod_client/src/models/genesis-allocation.mjs.map +1 -1
- package/packages/algod_client/src/models/genesis.js.map +1 -1
- package/packages/algod_client/src/models/genesis.mjs.map +1 -1
- package/packages/algod_client/src/models/get-block-time-stamp-offset-response.js.map +1 -1
- package/packages/algod_client/src/models/get-block-time-stamp-offset-response.mjs.map +1 -1
- package/packages/algod_client/src/models/get-sync-round-response.js.map +1 -1
- package/packages/algod_client/src/models/get-sync-round-response.mjs.map +1 -1
- package/packages/algod_client/src/models/ledger-state-delta-for-transaction-group.js.map +1 -1
- package/packages/algod_client/src/models/ledger-state-delta-for-transaction-group.mjs.map +1 -1
- package/packages/algod_client/src/models/ledger-state-delta.js +1 -1
- package/packages/algod_client/src/models/ledger-state-delta.js.map +1 -1
- package/packages/algod_client/src/models/ledger-state-delta.mjs +2 -2
- package/packages/algod_client/src/models/ledger-state-delta.mjs.map +1 -1
- package/packages/algod_client/src/models/light-block-header-proof.js.map +1 -1
- package/packages/algod_client/src/models/light-block-header-proof.mjs.map +1 -1
- package/packages/algod_client/src/models/node-status-response.js.map +1 -1
- package/packages/algod_client/src/models/node-status-response.mjs.map +1 -1
- package/packages/algod_client/src/models/pending-transaction-response.js.map +1 -1
- package/packages/algod_client/src/models/pending-transaction-response.mjs.map +1 -1
- package/packages/algod_client/src/models/pending-transactions-response.js.map +1 -1
- package/packages/algod_client/src/models/pending-transactions-response.mjs.map +1 -1
- package/packages/algod_client/src/models/post-transactions-response.js.map +1 -1
- package/packages/algod_client/src/models/post-transactions-response.mjs.map +1 -1
- package/packages/algod_client/src/models/scratch-change.js.map +1 -1
- package/packages/algod_client/src/models/scratch-change.mjs.map +1 -1
- package/packages/algod_client/src/models/simulate-initial-states.js.map +1 -1
- package/packages/algod_client/src/models/simulate-initial-states.mjs.map +1 -1
- package/packages/algod_client/src/models/simulate-request-transaction-group.js.map +1 -1
- package/packages/algod_client/src/models/simulate-request-transaction-group.mjs.map +1 -1
- package/packages/algod_client/src/models/simulate-request.js +1 -1
- package/packages/algod_client/src/models/simulate-request.js.map +1 -1
- package/packages/algod_client/src/models/simulate-request.mjs +1 -1
- package/packages/algod_client/src/models/simulate-request.mjs.map +1 -1
- package/packages/algod_client/src/models/simulate-response.d.ts +3 -1
- package/packages/algod_client/src/models/simulate-response.js +10 -1
- package/packages/algod_client/src/models/simulate-response.js.map +1 -1
- package/packages/algod_client/src/models/simulate-response.mjs +9 -2
- package/packages/algod_client/src/models/simulate-response.mjs.map +1 -1
- package/packages/algod_client/src/models/simulate-trace-config.js.map +1 -1
- package/packages/algod_client/src/models/simulate-trace-config.mjs.map +1 -1
- package/packages/algod_client/src/models/simulate-transaction-group-result.js.map +1 -1
- package/packages/algod_client/src/models/simulate-transaction-group-result.mjs.map +1 -1
- package/packages/algod_client/src/models/simulate-transaction-result.js.map +1 -1
- package/packages/algod_client/src/models/simulate-transaction-result.mjs.map +1 -1
- package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.d.ts +3 -5
- package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.js +4 -6
- package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.js.map +1 -1
- package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.mjs +3 -5
- package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.mjs.map +1 -1
- package/packages/algod_client/src/models/simulation-eval-overrides.js.map +1 -1
- package/packages/algod_client/src/models/simulation-eval-overrides.mjs.map +1 -1
- package/packages/algod_client/src/models/simulation-opcode-trace-unit.js.map +1 -1
- package/packages/algod_client/src/models/simulation-opcode-trace-unit.mjs.map +1 -1
- package/packages/algod_client/src/models/simulation-transaction-exec-trace.js.map +1 -1
- package/packages/algod_client/src/models/simulation-transaction-exec-trace.mjs.map +1 -1
- package/packages/algod_client/src/models/source-map.js.map +1 -1
- package/packages/algod_client/src/models/source-map.mjs.map +1 -1
- package/packages/algod_client/src/models/state-delta.js.map +1 -1
- package/packages/algod_client/src/models/state-delta.mjs.map +1 -1
- package/packages/algod_client/src/models/state-proof-message.js.map +1 -1
- package/packages/algod_client/src/models/state-proof-message.mjs.map +1 -1
- package/packages/algod_client/src/models/state-proof.js.map +1 -1
- package/packages/algod_client/src/models/state-proof.mjs.map +1 -1
- package/packages/algod_client/src/models/supply-response.js.map +1 -1
- package/packages/algod_client/src/models/supply-response.mjs.map +1 -1
- package/packages/algod_client/src/models/teal-key-value-store.js.map +1 -1
- package/packages/algod_client/src/models/teal-key-value-store.mjs.map +1 -1
- package/packages/algod_client/src/models/teal-key-value.js.map +1 -1
- package/packages/algod_client/src/models/teal-key-value.mjs.map +1 -1
- package/packages/algod_client/src/models/teal-value.js.map +1 -1
- package/packages/algod_client/src/models/teal-value.mjs.map +1 -1
- package/packages/algod_client/src/models/transaction-group-ledger-state-deltas-for-round-response.js.map +1 -1
- package/packages/algod_client/src/models/transaction-group-ledger-state-deltas-for-round-response.mjs.map +1 -1
- package/packages/algod_client/src/models/transaction-parameters-response.js +2 -2
- package/packages/algod_client/src/models/transaction-parameters-response.js.map +1 -1
- package/packages/algod_client/src/models/transaction-parameters-response.mjs +2 -2
- package/packages/algod_client/src/models/transaction-parameters-response.mjs.map +1 -1
- package/packages/algod_client/src/models/transaction-proof.js.map +1 -1
- package/packages/algod_client/src/models/transaction-proof.mjs.map +1 -1
- package/packages/algod_client/src/models/version.js.map +1 -1
- package/packages/algod_client/src/models/version.mjs.map +1 -1
- package/packages/common/src/address.d.ts +14 -3
- package/packages/common/src/address.js +14 -13
- package/packages/common/src/address.js.map +1 -1
- package/packages/common/src/address.mjs +8 -11
- package/packages/common/src/address.mjs.map +1 -1
- package/packages/common/src/array.d.ts +6 -0
- package/packages/common/src/codecs/composite/array.d.ts +25 -0
- package/packages/common/src/codecs/composite/array.js +1 -0
- package/packages/common/src/codecs/composite/array.js.map +1 -1
- package/packages/common/src/codecs/composite/array.mjs +1 -1
- package/packages/common/src/codecs/composite/array.mjs.map +1 -1
- package/packages/common/src/codecs/composite/map.d.ts +27 -0
- package/packages/common/src/codecs/composite/map.js +7 -4
- package/packages/common/src/codecs/composite/map.js.map +1 -1
- package/packages/common/src/codecs/composite/map.mjs +7 -4
- package/packages/common/src/codecs/composite/map.mjs.map +1 -1
- package/packages/common/src/codecs/composite/record.d.ts +20 -0
- package/packages/common/src/codecs/composite/record.js +1 -2
- package/packages/common/src/codecs/composite/record.js.map +1 -1
- package/packages/common/src/codecs/composite/record.mjs.map +1 -1
- package/packages/common/src/codecs/models/array-model.d.ts +19 -0
- package/packages/common/src/codecs/models/array-model.js.map +1 -1
- package/packages/common/src/codecs/models/array-model.mjs.map +1 -1
- package/packages/common/src/codecs/models/object-model.js +2 -2
- package/packages/common/src/codecs/models/object-model.js.map +1 -1
- package/packages/common/src/codecs/models/object-model.mjs +2 -2
- package/packages/common/src/codecs/models/object-model.mjs.map +1 -1
- package/packages/common/src/codecs/models/primitive-model.d.ts +19 -0
- package/packages/common/src/codecs/models/primitive-model.js.map +1 -1
- package/packages/common/src/codecs/models/primitive-model.mjs.map +1 -1
- package/packages/common/src/codecs/primitives/address.d.ts +16 -0
- package/packages/common/src/codecs/primitives/address.js +1 -2
- package/packages/common/src/codecs/primitives/address.js.map +1 -1
- package/packages/common/src/codecs/primitives/bigint.d.ts +13 -0
- package/packages/common/src/codecs/primitives/boolean.d.ts +10 -0
- package/packages/common/src/codecs/primitives/bytes-base64.d.ts +15 -0
- package/packages/common/src/codecs/primitives/bytes-base64.js +26 -0
- package/packages/common/src/codecs/primitives/bytes-base64.js.map +1 -0
- package/packages/common/src/codecs/primitives/bytes-base64.mjs +25 -0
- package/packages/common/src/codecs/primitives/bytes-base64.mjs.map +1 -0
- package/packages/common/src/codecs/primitives/bytes.d.ts +15 -0
- package/packages/common/src/codecs/primitives/bytes.js +1 -2
- package/packages/common/src/codecs/primitives/bytes.js.map +1 -1
- package/packages/common/src/codecs/primitives/fixed-bytes.d.ts +19 -0
- package/packages/common/src/codecs/primitives/fixed-bytes.js +1 -2
- package/packages/common/src/codecs/primitives/fixed-bytes.js.map +1 -1
- package/packages/common/src/codecs/primitives/fixed-bytes.mjs.map +1 -1
- package/packages/common/src/codecs/primitives/number.d.ts +11 -0
- package/packages/common/src/codecs/primitives/string.d.ts +13 -0
- package/packages/common/src/codecs/primitives/unknown.d.ts +27 -0
- package/packages/common/src/codecs/types.d.ts +12 -1
- package/packages/common/src/codecs/wire.d.ts +17 -1
- package/packages/common/src/codecs/wire.js +1 -2
- package/packages/common/src/codecs/wire.js.map +1 -1
- package/packages/common/src/codecs/wire.mjs.map +1 -1
- package/packages/common/src/constants.d.ts +34 -0
- package/packages/common/src/constants.js +2 -0
- package/packages/common/src/constants.js.map +1 -1
- package/packages/common/src/constants.mjs +2 -1
- package/packages/common/src/constants.mjs.map +1 -1
- package/packages/common/src/encoding.d.ts +10 -0
- package/packages/common/src/encoding.js +31 -0
- package/packages/common/src/encoding.js.map +1 -0
- package/packages/common/src/encoding.mjs +25 -0
- package/packages/common/src/encoding.mjs.map +1 -0
- package/packages/common/src/json.d.ts +17 -0
- package/packages/common/src/json.js +2 -2
- package/packages/common/src/json.mjs +2 -2
- package/packages/common/src/json.mjs.map +1 -1
- package/packages/common/src/msgpack.d.ts +11 -0
- package/packages/common/src/msgpack.js +1 -2
- package/packages/common/src/msgpack.js.map +1 -1
- package/packages/{sdk/src/logic → common/src}/sourcemap.d.ts +1 -1
- package/packages/{sdk/src/logic → common/src}/sourcemap.js +3 -3
- package/packages/common/src/sourcemap.js.map +1 -0
- package/packages/{sdk/src/logic → common/src}/sourcemap.mjs +1 -1
- package/packages/common/src/sourcemap.mjs.map +1 -0
- package/packages/crypto/src/ed25519.d.ts +60 -0
- package/packages/crypto/src/ed25519.js +59 -0
- package/packages/crypto/src/ed25519.js.map +1 -0
- package/packages/crypto/src/ed25519.mjs +54 -0
- package/packages/crypto/src/ed25519.mjs.map +1 -0
- package/packages/crypto/src/hash.d.ts +8 -0
- package/packages/crypto/src/hash.js +15 -0
- package/packages/crypto/src/hash.js.map +1 -0
- package/packages/crypto/src/hash.mjs +14 -0
- package/packages/crypto/src/hash.mjs.map +1 -0
- package/packages/crypto/src/hd.d.ts +40 -0
- package/packages/crypto/src/hd.js +37 -0
- package/packages/crypto/src/hd.js.map +1 -0
- package/packages/crypto/src/hd.mjs +36 -0
- package/packages/crypto/src/hd.mjs.map +1 -0
- package/packages/crypto/src/index.d.ts +28 -0
- package/packages/crypto/src/index.js +141 -0
- package/packages/crypto/src/index.js.map +1 -0
- package/packages/crypto/src/index.mjs +138 -0
- package/packages/crypto/src/index.mjs.map +1 -0
- package/packages/indexer_client/src/apis/api-service.d.ts +1 -1
- package/packages/indexer_client/src/apis/api-service.js +12 -12
- package/packages/indexer_client/src/apis/api-service.js.map +1 -1
- package/packages/indexer_client/src/apis/api-service.mjs +12 -12
- package/packages/indexer_client/src/apis/api-service.mjs.map +1 -1
- package/packages/indexer_client/src/core/api-error.js +3 -1
- package/packages/indexer_client/src/core/api-error.js.map +1 -1
- package/packages/indexer_client/src/core/api-error.mjs +3 -1
- package/packages/indexer_client/src/core/api-error.mjs.map +1 -1
- package/packages/indexer_client/src/core/base-http-request.js.map +1 -1
- package/packages/indexer_client/src/core/base-http-request.mjs.map +1 -1
- package/packages/indexer_client/src/core/fetch-http-request.js.map +1 -1
- package/packages/indexer_client/src/core/fetch-http-request.mjs.map +1 -1
- package/packages/indexer_client/src/core/model-runtime.js +0 -15
- package/packages/indexer_client/src/core/model-runtime.js.map +1 -1
- package/packages/indexer_client/src/core/model-runtime.mjs +1 -13
- package/packages/indexer_client/src/core/model-runtime.mjs.map +1 -1
- package/packages/indexer_client/src/core/request.js.map +1 -1
- package/packages/indexer_client/src/core/request.mjs.map +1 -1
- package/packages/indexer_client/src/models/account-participation.js +4 -4
- package/packages/indexer_client/src/models/account-participation.js.map +1 -1
- package/packages/indexer_client/src/models/account-participation.mjs +4 -4
- package/packages/indexer_client/src/models/account-participation.mjs.map +1 -1
- package/packages/indexer_client/src/models/account-response.js.map +1 -1
- package/packages/indexer_client/src/models/account-response.mjs.map +1 -1
- package/packages/indexer_client/src/models/account-state-delta.js.map +1 -1
- package/packages/indexer_client/src/models/account-state-delta.mjs.map +1 -1
- package/packages/indexer_client/src/models/account.js.map +1 -1
- package/packages/indexer_client/src/models/account.mjs.map +1 -1
- package/packages/indexer_client/src/models/accounts-response.js.map +1 -1
- package/packages/indexer_client/src/models/accounts-response.mjs.map +1 -1
- package/packages/indexer_client/src/models/application-local-state.js.map +1 -1
- package/packages/indexer_client/src/models/application-local-state.mjs.map +1 -1
- package/packages/indexer_client/src/models/application-local-states-response.js.map +1 -1
- package/packages/indexer_client/src/models/application-local-states-response.mjs.map +1 -1
- package/packages/indexer_client/src/models/application-log-data.js.map +1 -1
- package/packages/indexer_client/src/models/application-log-data.mjs.map +1 -1
- package/packages/indexer_client/src/models/application-logs-response.js.map +1 -1
- package/packages/indexer_client/src/models/application-logs-response.mjs.map +1 -1
- package/packages/indexer_client/src/models/application-params.js.map +1 -1
- package/packages/indexer_client/src/models/application-params.mjs.map +1 -1
- package/packages/indexer_client/src/models/application-response.js.map +1 -1
- package/packages/indexer_client/src/models/application-response.mjs.map +1 -1
- package/packages/indexer_client/src/models/application-state-schema.d.ts +2 -2
- package/packages/indexer_client/src/models/application-state-schema.js +2 -2
- package/packages/indexer_client/src/models/application-state-schema.js.map +1 -1
- package/packages/indexer_client/src/models/application-state-schema.mjs +2 -2
- package/packages/indexer_client/src/models/application-state-schema.mjs.map +1 -1
- package/packages/indexer_client/src/models/application.js.map +1 -1
- package/packages/indexer_client/src/models/application.mjs.map +1 -1
- package/packages/indexer_client/src/models/applications-response.js.map +1 -1
- package/packages/indexer_client/src/models/applications-response.mjs.map +1 -1
- package/packages/indexer_client/src/models/asset-balances-response.js.map +1 -1
- package/packages/indexer_client/src/models/asset-balances-response.mjs.map +1 -1
- package/packages/indexer_client/src/models/asset-holding.js.map +1 -1
- package/packages/indexer_client/src/models/asset-holding.mjs.map +1 -1
- package/packages/indexer_client/src/models/asset-holdings-response.js.map +1 -1
- package/packages/indexer_client/src/models/asset-holdings-response.mjs.map +1 -1
- package/packages/indexer_client/src/models/asset-params.js +2 -1
- package/packages/indexer_client/src/models/asset-params.js.map +1 -1
- package/packages/indexer_client/src/models/asset-params.mjs +2 -1
- package/packages/indexer_client/src/models/asset-params.mjs.map +1 -1
- package/packages/indexer_client/src/models/asset-response.js.map +1 -1
- package/packages/indexer_client/src/models/asset-response.mjs.map +1 -1
- package/packages/indexer_client/src/models/asset.js.map +1 -1
- package/packages/indexer_client/src/models/asset.mjs.map +1 -1
- package/packages/indexer_client/src/models/assets-response.js.map +1 -1
- package/packages/indexer_client/src/models/assets-response.mjs.map +1 -1
- package/packages/indexer_client/src/models/block-headers-response.js.map +1 -1
- package/packages/indexer_client/src/models/block-headers-response.mjs.map +1 -1
- package/packages/indexer_client/src/models/block-rewards.js.map +1 -1
- package/packages/indexer_client/src/models/block-rewards.mjs.map +1 -1
- package/packages/indexer_client/src/models/block-upgrade-state.js.map +1 -1
- package/packages/indexer_client/src/models/block-upgrade-state.mjs.map +1 -1
- package/packages/indexer_client/src/models/block-upgrade-vote.js.map +1 -1
- package/packages/indexer_client/src/models/block-upgrade-vote.mjs.map +1 -1
- package/packages/indexer_client/src/models/block.d.ts +5 -5
- package/packages/indexer_client/src/models/block.js +13 -13
- package/packages/indexer_client/src/models/block.js.map +1 -1
- package/packages/indexer_client/src/models/block.mjs +13 -13
- package/packages/indexer_client/src/models/block.mjs.map +1 -1
- package/packages/indexer_client/src/models/box-descriptor.js.map +1 -1
- package/packages/indexer_client/src/models/box-descriptor.mjs.map +1 -1
- package/packages/indexer_client/src/models/box-reference.js.map +1 -1
- package/packages/indexer_client/src/models/box-reference.mjs.map +1 -1
- package/packages/indexer_client/src/models/box.js.map +1 -1
- package/packages/indexer_client/src/models/box.mjs.map +1 -1
- package/packages/indexer_client/src/models/boxes-response.js.map +1 -1
- package/packages/indexer_client/src/models/boxes-response.mjs.map +1 -1
- package/packages/indexer_client/src/models/eval-delta-key-value.d.ts +1 -1
- package/packages/indexer_client/src/models/eval-delta-key-value.js +2 -2
- package/packages/indexer_client/src/models/eval-delta-key-value.js.map +1 -1
- package/packages/indexer_client/src/models/eval-delta-key-value.mjs +2 -2
- package/packages/indexer_client/src/models/eval-delta-key-value.mjs.map +1 -1
- package/packages/indexer_client/src/models/eval-delta.d.ts +1 -1
- package/packages/indexer_client/src/models/eval-delta.js +2 -2
- package/packages/indexer_client/src/models/eval-delta.js.map +1 -1
- package/packages/indexer_client/src/models/eval-delta.mjs +2 -2
- package/packages/indexer_client/src/models/eval-delta.mjs.map +1 -1
- package/packages/indexer_client/src/models/hash-factory.js.map +1 -1
- package/packages/indexer_client/src/models/hash-factory.mjs.map +1 -1
- package/packages/indexer_client/src/models/hb-proof-fields.js +6 -6
- package/packages/indexer_client/src/models/hb-proof-fields.js.map +1 -1
- package/packages/indexer_client/src/models/hb-proof-fields.mjs +6 -6
- package/packages/indexer_client/src/models/hb-proof-fields.mjs.map +1 -1
- package/packages/indexer_client/src/models/health-check.js.map +1 -1
- package/packages/indexer_client/src/models/health-check.mjs.map +1 -1
- package/packages/indexer_client/src/models/holding-ref.js.map +1 -1
- package/packages/indexer_client/src/models/holding-ref.mjs.map +1 -1
- package/packages/indexer_client/src/models/indexer-state-proof-message.js.map +1 -1
- package/packages/indexer_client/src/models/indexer-state-proof-message.mjs.map +1 -1
- package/packages/indexer_client/src/models/locals-ref.js.map +1 -1
- package/packages/indexer_client/src/models/locals-ref.mjs.map +1 -1
- package/packages/indexer_client/src/models/merkle-array-proof.js.map +1 -1
- package/packages/indexer_client/src/models/merkle-array-proof.mjs.map +1 -1
- package/packages/indexer_client/src/models/mini-asset-holding.js.map +1 -1
- package/packages/indexer_client/src/models/mini-asset-holding.mjs.map +1 -1
- package/packages/indexer_client/src/models/on-completion.js.map +1 -1
- package/packages/indexer_client/src/models/on-completion.mjs.map +1 -1
- package/packages/indexer_client/src/models/participation-updates.d.ts +2 -2
- package/packages/indexer_client/src/models/participation-updates.js +2 -2
- package/packages/indexer_client/src/models/participation-updates.js.map +1 -1
- package/packages/indexer_client/src/models/participation-updates.mjs +2 -2
- package/packages/indexer_client/src/models/participation-updates.mjs.map +1 -1
- package/packages/indexer_client/src/models/resource-ref.js.map +1 -1
- package/packages/indexer_client/src/models/resource-ref.mjs.map +1 -1
- package/packages/indexer_client/src/models/state-delta.js.map +1 -1
- package/packages/indexer_client/src/models/state-delta.mjs.map +1 -1
- package/packages/indexer_client/src/models/state-proof-fields.js.map +1 -1
- package/packages/indexer_client/src/models/state-proof-fields.mjs.map +1 -1
- package/packages/indexer_client/src/models/state-proof-participant.js.map +1 -1
- package/packages/indexer_client/src/models/state-proof-participant.mjs.map +1 -1
- package/packages/indexer_client/src/models/state-proof-reveal.js.map +1 -1
- package/packages/indexer_client/src/models/state-proof-reveal.mjs.map +1 -1
- package/packages/indexer_client/src/models/state-proof-sig-slot.js.map +1 -1
- package/packages/indexer_client/src/models/state-proof-sig-slot.mjs.map +1 -1
- package/packages/indexer_client/src/models/state-proof-signature.js.map +1 -1
- package/packages/indexer_client/src/models/state-proof-signature.mjs.map +1 -1
- package/packages/indexer_client/src/models/state-proof-tracking.js.map +1 -1
- package/packages/indexer_client/src/models/state-proof-tracking.mjs.map +1 -1
- package/packages/indexer_client/src/models/state-proof-verifier.js +2 -2
- package/packages/indexer_client/src/models/state-proof-verifier.js.map +1 -1
- package/packages/indexer_client/src/models/state-proof-verifier.mjs +2 -2
- package/packages/indexer_client/src/models/state-proof-verifier.mjs.map +1 -1
- package/packages/indexer_client/src/models/state-schema.d.ts +2 -2
- package/packages/indexer_client/src/models/state-schema.js +2 -2
- package/packages/indexer_client/src/models/state-schema.js.map +1 -1
- package/packages/indexer_client/src/models/state-schema.mjs +2 -2
- package/packages/indexer_client/src/models/state-schema.mjs.map +1 -1
- package/packages/indexer_client/src/models/teal-key-value-store.js.map +1 -1
- package/packages/indexer_client/src/models/teal-key-value-store.mjs.map +1 -1
- package/packages/indexer_client/src/models/teal-key-value.d.ts +1 -1
- package/packages/indexer_client/src/models/teal-key-value.js +2 -2
- package/packages/indexer_client/src/models/teal-key-value.js.map +1 -1
- package/packages/indexer_client/src/models/teal-key-value.mjs +2 -2
- package/packages/indexer_client/src/models/teal-key-value.mjs.map +1 -1
- package/packages/indexer_client/src/models/teal-value.js.map +1 -1
- package/packages/indexer_client/src/models/teal-value.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction-application.js.map +1 -1
- package/packages/indexer_client/src/models/transaction-application.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction-asset-config.js.map +1 -1
- package/packages/indexer_client/src/models/transaction-asset-config.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction-asset-freeze.js.map +1 -1
- package/packages/indexer_client/src/models/transaction-asset-freeze.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction-asset-transfer.js.map +1 -1
- package/packages/indexer_client/src/models/transaction-asset-transfer.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction-heartbeat.js +2 -1
- package/packages/indexer_client/src/models/transaction-heartbeat.js.map +1 -1
- package/packages/indexer_client/src/models/transaction-heartbeat.mjs +2 -1
- package/packages/indexer_client/src/models/transaction-heartbeat.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction-keyreg.js +4 -4
- package/packages/indexer_client/src/models/transaction-keyreg.js.map +1 -1
- package/packages/indexer_client/src/models/transaction-keyreg.mjs +4 -4
- package/packages/indexer_client/src/models/transaction-keyreg.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction-payment.js.map +1 -1
- package/packages/indexer_client/src/models/transaction-payment.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction-response.js.map +1 -1
- package/packages/indexer_client/src/models/transaction-response.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction-signature-logicsig.js +2 -1
- package/packages/indexer_client/src/models/transaction-signature-logicsig.js.map +1 -1
- package/packages/indexer_client/src/models/transaction-signature-logicsig.mjs +2 -1
- package/packages/indexer_client/src/models/transaction-signature-logicsig.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.js +3 -3
- package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.js.map +1 -1
- package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.mjs +3 -3
- package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction-signature-multisig.js.map +1 -1
- package/packages/indexer_client/src/models/transaction-signature-multisig.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction-signature.js.map +1 -1
- package/packages/indexer_client/src/models/transaction-signature.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction-state-proof.d.ts +1 -1
- package/packages/indexer_client/src/models/transaction-state-proof.js +2 -2
- package/packages/indexer_client/src/models/transaction-state-proof.js.map +1 -1
- package/packages/indexer_client/src/models/transaction-state-proof.mjs +2 -2
- package/packages/indexer_client/src/models/transaction-state-proof.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction.d.ts +2 -2
- package/packages/indexer_client/src/models/transaction.js +6 -5
- package/packages/indexer_client/src/models/transaction.js.map +1 -1
- package/packages/indexer_client/src/models/transaction.mjs +6 -5
- package/packages/indexer_client/src/models/transaction.mjs.map +1 -1
- package/packages/indexer_client/src/models/transactions-response.js.map +1 -1
- package/packages/indexer_client/src/models/transactions-response.mjs.map +1 -1
- package/packages/kmd_client/src/apis/api-service.d.ts +5 -5
- package/packages/kmd_client/src/apis/api-service.js +32 -32
- package/packages/kmd_client/src/apis/api-service.js.map +1 -1
- package/packages/kmd_client/src/apis/api-service.mjs +32 -32
- package/packages/kmd_client/src/apis/api-service.mjs.map +1 -1
- package/packages/kmd_client/src/core/api-error.js +3 -1
- package/packages/kmd_client/src/core/api-error.js.map +1 -1
- package/packages/kmd_client/src/core/api-error.mjs +3 -1
- package/packages/kmd_client/src/core/api-error.mjs.map +1 -1
- package/packages/kmd_client/src/core/base-http-request.js.map +1 -1
- package/packages/kmd_client/src/core/base-http-request.mjs.map +1 -1
- package/packages/kmd_client/src/core/fetch-http-request.js.map +1 -1
- package/packages/kmd_client/src/core/fetch-http-request.mjs.map +1 -1
- package/packages/kmd_client/src/core/model-runtime.js +2 -12
- package/packages/kmd_client/src/core/model-runtime.js.map +1 -1
- package/packages/kmd_client/src/core/model-runtime.mjs +3 -11
- package/packages/kmd_client/src/core/model-runtime.mjs.map +1 -1
- package/packages/kmd_client/src/core/request.js.map +1 -1
- package/packages/kmd_client/src/core/request.mjs.map +1 -1
- package/packages/kmd_client/src/models/create-wallet-request.js.map +1 -1
- package/packages/kmd_client/src/models/create-wallet-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/create-wallet-response.js.map +1 -1
- package/packages/kmd_client/src/models/create-wallet-response.mjs.map +1 -1
- package/packages/kmd_client/src/models/delete-key-request.js.map +1 -1
- package/packages/kmd_client/src/models/delete-key-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/delete-multisig-request.js.map +1 -1
- package/packages/kmd_client/src/models/delete-multisig-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/export-key-request.js.map +1 -1
- package/packages/kmd_client/src/models/export-key-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/export-key-response.js.map +1 -1
- package/packages/kmd_client/src/models/export-key-response.mjs.map +1 -1
- package/packages/kmd_client/src/models/export-master-key-request.js.map +1 -1
- package/packages/kmd_client/src/models/export-master-key-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/export-master-key-response.js.map +1 -1
- package/packages/kmd_client/src/models/export-master-key-response.mjs.map +1 -1
- package/packages/kmd_client/src/models/export-multisig-request.js.map +1 -1
- package/packages/kmd_client/src/models/export-multisig-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/export-multisig-response.js.map +1 -1
- package/packages/kmd_client/src/models/export-multisig-response.mjs.map +1 -1
- package/packages/kmd_client/src/models/generate-key-request.js.map +1 -1
- package/packages/kmd_client/src/models/generate-key-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/generate-key-response.js.map +1 -1
- package/packages/kmd_client/src/models/generate-key-response.mjs.map +1 -1
- package/packages/kmd_client/src/models/import-key-request.js.map +1 -1
- package/packages/kmd_client/src/models/import-key-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/import-key-response.js.map +1 -1
- package/packages/kmd_client/src/models/import-key-response.mjs.map +1 -1
- package/packages/kmd_client/src/models/import-multisig-request.js.map +1 -1
- package/packages/kmd_client/src/models/import-multisig-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/import-multisig-response.js.map +1 -1
- package/packages/kmd_client/src/models/import-multisig-response.mjs.map +1 -1
- package/packages/kmd_client/src/models/init-wallet-handle-token-request.js.map +1 -1
- package/packages/kmd_client/src/models/init-wallet-handle-token-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/init-wallet-handle-token-response.js.map +1 -1
- package/packages/kmd_client/src/models/init-wallet-handle-token-response.mjs.map +1 -1
- package/packages/kmd_client/src/models/list-keys-request.js.map +1 -1
- package/packages/kmd_client/src/models/list-keys-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/list-keys-response.js.map +1 -1
- package/packages/kmd_client/src/models/list-keys-response.mjs.map +1 -1
- package/packages/kmd_client/src/models/list-multisig-request.js.map +1 -1
- package/packages/kmd_client/src/models/list-multisig-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/list-multisig-response.js.map +1 -1
- package/packages/kmd_client/src/models/list-multisig-response.mjs.map +1 -1
- package/packages/kmd_client/src/models/list-wallets-response.js.map +1 -1
- package/packages/kmd_client/src/models/list-wallets-response.mjs.map +1 -1
- package/packages/kmd_client/src/models/multisig-sig.js.map +1 -1
- package/packages/kmd_client/src/models/multisig-sig.mjs.map +1 -1
- package/packages/kmd_client/src/models/multisig-subsig.js.map +1 -1
- package/packages/kmd_client/src/models/multisig-subsig.mjs.map +1 -1
- package/packages/kmd_client/src/models/release-wallet-handle-token-request.js.map +1 -1
- package/packages/kmd_client/src/models/release-wallet-handle-token-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/rename-wallet-request.js.map +1 -1
- package/packages/kmd_client/src/models/rename-wallet-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/rename-wallet-response.js.map +1 -1
- package/packages/kmd_client/src/models/rename-wallet-response.mjs.map +1 -1
- package/packages/kmd_client/src/models/renew-wallet-handle-token-request.js.map +1 -1
- package/packages/kmd_client/src/models/renew-wallet-handle-token-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/renew-wallet-handle-token-response.js.map +1 -1
- package/packages/kmd_client/src/models/renew-wallet-handle-token-response.mjs.map +1 -1
- package/packages/kmd_client/src/models/sign-multisig-response.js.map +1 -1
- package/packages/kmd_client/src/models/sign-multisig-response.mjs.map +1 -1
- package/packages/kmd_client/src/models/sign-multisig-txn-request.js.map +1 -1
- package/packages/kmd_client/src/models/sign-multisig-txn-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/sign-program-multisig-request.js.map +1 -1
- package/packages/kmd_client/src/models/sign-program-multisig-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/sign-program-multisig-response.js.map +1 -1
- package/packages/kmd_client/src/models/sign-program-multisig-response.mjs.map +1 -1
- package/packages/kmd_client/src/models/sign-program-request.js.map +1 -1
- package/packages/kmd_client/src/models/sign-program-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/sign-program-response.js.map +1 -1
- package/packages/kmd_client/src/models/sign-program-response.mjs.map +1 -1
- package/packages/kmd_client/src/models/sign-transaction-response.js.map +1 -1
- package/packages/kmd_client/src/models/sign-transaction-response.mjs.map +1 -1
- package/packages/kmd_client/src/models/sign-txn-request.js.map +1 -1
- package/packages/kmd_client/src/models/sign-txn-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/tx-type.js.map +1 -1
- package/packages/kmd_client/src/models/tx-type.mjs.map +1 -1
- package/packages/kmd_client/src/models/versions-response.js.map +1 -1
- package/packages/kmd_client/src/models/versions-response.mjs.map +1 -1
- package/packages/kmd_client/src/models/wallet-handle.js.map +1 -1
- package/packages/kmd_client/src/models/wallet-handle.mjs.map +1 -1
- package/packages/kmd_client/src/models/wallet-info-request.js.map +1 -1
- package/packages/kmd_client/src/models/wallet-info-request.mjs.map +1 -1
- package/packages/kmd_client/src/models/wallet-info-response.js.map +1 -1
- package/packages/kmd_client/src/models/wallet-info-response.mjs.map +1 -1
- package/packages/kmd_client/src/models/wallet.js.map +1 -1
- package/packages/kmd_client/src/models/wallet.mjs.map +1 -1
- package/packages/testing/src/globalSetup.js +40 -0
- package/packages/testing/src/globalSetup.js.map +1 -0
- package/packages/testing/src/globalSetup.mjs +36 -0
- package/packages/testing/src/globalSetup.mjs.map +1 -0
- package/packages/testing/src/mockServer.js +95 -0
- package/packages/testing/src/mockServer.js.map +1 -0
- package/packages/testing/src/mockServer.mjs +83 -0
- package/packages/testing/src/mockServer.mjs.map +1 -0
- package/packages/transact/src/logicsig.d.ts +35 -33
- package/packages/transact/src/logicsig.js +75 -77
- package/packages/transact/src/logicsig.js.map +1 -1
- package/packages/transact/src/logicsig.mjs +78 -79
- package/packages/transact/src/logicsig.mjs.map +1 -1
- package/packages/transact/src/multisig.d.ts +11 -116
- package/packages/transact/src/multisig.js +108 -138
- package/packages/transact/src/multisig.js.map +1 -1
- package/packages/transact/src/multisig.mjs +109 -119
- package/packages/transact/src/multisig.mjs.map +1 -1
- package/packages/transact/src/signer.d.ts +11 -3
- package/packages/transact/src/signer.js +24 -2
- package/packages/transact/src/signer.js.map +1 -1
- package/packages/transact/src/signer.mjs +25 -4
- package/packages/transact/src/signer.mjs.map +1 -1
- package/packages/transact/src/transactions/app-call.d.ts +10 -15
- package/packages/transact/src/transactions/app-call.js +8 -8
- package/packages/transact/src/transactions/app-call.js.map +1 -1
- package/packages/transact/src/transactions/app-call.mjs +8 -8
- package/packages/transact/src/transactions/app-call.mjs.map +1 -1
- package/packages/transact/src/transactions/asset-config.d.ts +1 -6
- package/packages/transact/src/transactions/asset-config.js.map +1 -1
- package/packages/transact/src/transactions/asset-config.mjs.map +1 -1
- package/packages/transact/src/transactions/asset-freeze.d.ts +1 -6
- package/packages/transact/src/transactions/asset-transfer.d.ts +1 -6
- package/packages/transact/src/transactions/common.js +7 -7
- package/packages/transact/src/transactions/common.js.map +1 -1
- package/packages/transact/src/transactions/common.mjs +7 -7
- package/packages/transact/src/transactions/common.mjs.map +1 -1
- package/packages/transact/src/transactions/key-registration.d.ts +1 -8
- package/packages/transact/src/transactions/reference-types-meta.d.ts +26 -0
- package/packages/transact/src/transactions/reference-types-meta.js +71 -0
- package/packages/transact/src/transactions/reference-types-meta.js.map +1 -0
- package/packages/transact/src/transactions/reference-types-meta.mjs +69 -0
- package/packages/transact/src/transactions/reference-types-meta.mjs.map +1 -0
- package/packages/transact/src/transactions/signed-transaction-meta.js +8 -9
- package/packages/transact/src/transactions/signed-transaction-meta.js.map +1 -1
- package/packages/transact/src/transactions/signed-transaction-meta.mjs +8 -8
- package/packages/transact/src/transactions/signed-transaction-meta.mjs.map +1 -1
- package/packages/transact/src/transactions/signed-transaction.d.ts +22 -6
- package/packages/transact/src/transactions/signed-transaction.js +17 -1
- package/packages/transact/src/transactions/signed-transaction.js.map +1 -1
- package/packages/transact/src/transactions/signed-transaction.mjs +16 -2
- package/packages/transact/src/transactions/signed-transaction.mjs.map +1 -1
- package/packages/transact/src/transactions/state-proof.d.ts +1 -1
- package/packages/transact/src/transactions/transaction-meta.js +29 -23
- package/packages/transact/src/transactions/transaction-meta.js.map +1 -1
- package/packages/transact/src/transactions/transaction-meta.mjs +29 -23
- package/packages/transact/src/transactions/transaction-meta.mjs.map +1 -1
- package/packages/transact/src/transactions/transaction-type.js +11 -11
- package/packages/transact/src/transactions/transaction-type.js.map +1 -1
- package/packages/transact/src/transactions/transaction-type.mjs +11 -11
- package/packages/transact/src/transactions/transaction-type.mjs.map +1 -1
- package/packages/transact/src/transactions/transaction.d.ts +5 -2
- package/packages/transact/src/transactions/transaction.js +11 -10
- package/packages/transact/src/transactions/transaction.js.map +1 -1
- package/packages/transact/src/transactions/transaction.mjs +6 -5
- package/packages/transact/src/transactions/transaction.mjs.map +1 -1
- package/testing/account.d.ts +2 -2
- package/testing/account.js +2 -3
- package/testing/account.js.map +1 -1
- package/testing/account.mjs +2 -3
- package/testing/account.mjs.map +1 -1
- package/testing/fixtures/algokit-log-capture-fixture.d.ts +1 -1
- package/testing/fixtures/algokit-log-capture-fixture.js.map +1 -1
- package/testing/fixtures/algokit-log-capture-fixture.mjs.map +1 -1
- package/testing/fixtures/algorand-fixture.d.ts +5 -5
- package/testing/fixtures/algorand-fixture.js +2 -2
- package/testing/fixtures/algorand-fixture.js.map +1 -1
- package/testing/fixtures/algorand-fixture.mjs +2 -2
- package/testing/fixtures/algorand-fixture.mjs.map +1 -1
- package/testing/index.d.ts +2 -1
- package/testing/index.js +19 -0
- package/testing/index.mjs +3 -1
- package/testing/indexer.js.map +1 -1
- package/testing/indexer.mjs.map +1 -1
- package/testing/test-logger.d.ts +1 -1
- package/testing/test-logger.js.map +1 -1
- package/testing/test-logger.mjs.map +1 -1
- package/testing/types.d.ts +156 -0
- package/transact/index.d.ts +12 -11
- package/transact/index.js +10 -31
- package/transact/index.mjs +8 -11
- package/transaction/index.d.ts +4 -0
- package/transaction/index.js +10 -0
- package/transaction/index.mjs +4 -0
- package/transaction/perform-transaction-composer-simulate.d.ts +1 -1
- package/transaction/perform-transaction-composer-simulate.js.map +1 -1
- package/transaction/perform-transaction-composer-simulate.mjs.map +1 -1
- package/transaction/transaction.d.ts +2 -4
- package/transaction/transaction.js +2 -4
- package/transaction/transaction.js.map +1 -1
- package/transaction/transaction.mjs +2 -4
- package/transaction/transaction.mjs.map +1 -1
- package/transaction/types.d.ts +133 -0
- package/transactions/app-call.d.ts +6 -5
- package/transactions/app-call.js +49 -49
- package/transactions/app-call.js.map +1 -1
- package/transactions/app-call.mjs +49 -49
- package/transactions/app-call.mjs.map +1 -1
- package/transactions/asset-config.d.ts +1 -1
- package/transactions/asset-config.js +1 -1
- package/transactions/asset-config.js.map +1 -1
- package/transactions/asset-config.mjs +1 -1
- package/transactions/asset-config.mjs.map +1 -1
- package/transactions/common.d.ts +1 -1
- package/transactions/common.js.map +1 -1
- package/transactions/common.mjs.map +1 -1
- package/transactions/fee-coverage.js +6 -6
- package/transactions/fee-coverage.js.map +1 -1
- package/transactions/fee-coverage.mjs +6 -6
- package/transactions/fee-coverage.mjs.map +1 -1
- package/transactions/key-registration.d.ts +1 -1
- package/transactions/key-registration.js.map +1 -1
- package/transactions/key-registration.mjs.map +1 -1
- package/transactions/method-call.d.ts +2 -2
- package/transactions/method-call.js +74 -81
- package/transactions/method-call.js.map +1 -1
- package/transactions/method-call.mjs +74 -81
- package/transactions/method-call.mjs.map +1 -1
- package/transactions/payment.d.ts +1 -1
- package/transactions/payment.js.map +1 -1
- package/transactions/payment.mjs.map +1 -1
- package/types/account-manager.d.ts +11 -444
- package/types/account-manager.js +6 -606
- package/types/account-manager.js.map +1 -1
- package/types/account-manager.mjs +5 -604
- package/types/account-manager.mjs.map +1 -1
- package/types/account.d.ts +8 -150
- package/types/account.js +4 -4
- package/types/account.js.map +1 -1
- package/types/account.mjs +4 -4
- package/types/account.mjs.map +1 -1
- package/types/algorand-client-transaction-creator.d.ts +5 -1084
- package/types/algorand-client-transaction-creator.js +4 -721
- package/types/algorand-client-transaction-creator.js.map +1 -1
- package/types/algorand-client-transaction-creator.mjs +4 -721
- package/types/algorand-client-transaction-creator.mjs.map +1 -1
- package/types/algorand-client-transaction-sender.d.ts +5 -1298
- package/types/algorand-client-transaction-sender.js +4 -920
- package/types/algorand-client-transaction-sender.js.map +1 -1
- package/types/algorand-client-transaction-sender.mjs +3 -918
- package/types/algorand-client-transaction-sender.mjs.map +1 -1
- package/types/algorand-client.d.ts +5 -241
- package/types/algorand-client.js +4 -319
- package/types/algorand-client.js.map +1 -1
- package/types/algorand-client.mjs +3 -319
- package/types/algorand-client.mjs.map +1 -1
- package/types/amount.d.ts +6 -45
- package/types/amount.js +4 -60
- package/types/amount.js.map +1 -1
- package/types/amount.mjs +3 -60
- package/types/amount.mjs.map +1 -1
- package/types/app-client.d.ts +75 -2120
- package/types/app-client.js +4 -904
- package/types/app-client.js.map +1 -1
- package/types/app-client.mjs +3 -902
- package/types/app-client.mjs.map +1 -1
- package/types/app-deployer.d.ts +21 -161
- package/types/app-deployer.js +4 -347
- package/types/app-deployer.js.map +1 -1
- package/types/app-deployer.mjs +3 -347
- package/types/app-deployer.mjs.map +1 -1
- package/types/app-factory.d.ts +21 -957
- package/types/app-factory.js +4 -442
- package/types/app-factory.js.map +1 -1
- package/types/app-factory.mjs +3 -442
- package/types/app-factory.mjs.map +1 -1
- package/types/app-manager.d.ts +15 -316
- package/types/app-manager.js +4 -461
- package/types/app-manager.js.map +1 -1
- package/types/app-manager.mjs +3 -461
- package/types/app-manager.mjs.map +1 -1
- package/types/app-spec.d.ts +39 -198
- package/types/app-spec.js +4 -124
- package/types/app-spec.js.map +1 -1
- package/types/app-spec.mjs +3 -124
- package/types/app-spec.mjs.map +1 -1
- package/types/app.d.ts +63 -248
- package/types/app.js +16 -37
- package/types/app.js.map +1 -1
- package/types/app.mjs +16 -37
- package/types/app.mjs.map +1 -1
- package/types/asset-manager.d.ts +9 -207
- package/types/asset-manager.js +4 -160
- package/types/asset-manager.js.map +1 -1
- package/types/asset-manager.mjs +3 -160
- package/types/asset-manager.mjs.map +1 -1
- package/types/async-event-emitter.d.ts +7 -14
- package/types/async-event-emitter.js +4 -32
- package/types/async-event-emitter.js.map +1 -1
- package/types/async-event-emitter.mjs +4 -32
- package/types/async-event-emitter.mjs.map +1 -1
- package/types/client-manager.d.ts +27 -470
- package/types/client-manager.js +4 -610
- package/types/client-manager.js.map +1 -1
- package/types/client-manager.mjs +3 -610
- package/types/client-manager.mjs.map +1 -1
- package/types/composer.d.ts +79 -935
- package/types/composer.js +4 -1566
- package/types/composer.js.map +1 -1
- package/types/composer.mjs +3 -1564
- package/types/composer.mjs.map +1 -1
- package/types/config.d.ts +7 -52
- package/types/config.js +4 -74
- package/types/config.js.map +1 -1
- package/types/config.mjs +3 -74
- package/types/config.mjs.map +1 -1
- package/types/debugging.d.ts +12 -33
- package/types/debugging.js +12 -10
- package/types/debugging.js.map +1 -1
- package/types/debugging.mjs +12 -10
- package/types/debugging.mjs.map +1 -1
- package/types/dispenser-client.d.ts +11 -85
- package/types/dispenser-client.js +4 -121
- package/types/dispenser-client.js.map +1 -1
- package/types/dispenser-client.mjs +3 -121
- package/types/dispenser-client.mjs.map +1 -1
- package/types/expand.d.ts +4 -5
- package/types/indexer.d.ts +16 -36
- package/types/indexer.js +8 -30
- package/types/indexer.js.map +1 -1
- package/types/indexer.mjs +8 -30
- package/types/indexer.mjs.map +1 -1
- package/types/instance-of.d.ts +4 -4
- package/types/kmd-account-manager.d.ts +5 -68
- package/types/kmd-account-manager.js +4 -150
- package/types/kmd-account-manager.js.map +1 -1
- package/types/kmd-account-manager.mjs +3 -148
- package/types/kmd-account-manager.mjs.map +1 -1
- package/types/lifecycle-events.d.ts +7 -10
- package/types/lifecycle-events.js +4 -5
- package/types/lifecycle-events.js.map +1 -1
- package/types/lifecycle-events.mjs +4 -5
- package/types/lifecycle-events.mjs.map +1 -1
- package/types/logging.d.ts +14 -9
- package/types/logging.js +12 -37
- package/types/logging.js.map +1 -1
- package/types/logging.mjs +12 -37
- package/types/logging.mjs.map +1 -1
- package/types/logic-error.d.ts +8 -35
- package/types/logic-error.js +4 -48
- package/types/logic-error.js.map +1 -1
- package/types/logic-error.mjs +4 -48
- package/types/logic-error.mjs.map +1 -1
- package/types/network-client.d.ts +10 -39
- package/types/network-client.js +4 -8
- package/types/network-client.js.map +1 -1
- package/types/network-client.mjs +4 -8
- package/types/network-client.mjs.map +1 -1
- package/types/testing.d.ts +13 -151
- package/types/transaction.d.ts +33 -128
- package/updatable-config.d.ts +57 -0
- package/updatable-config.js +80 -0
- package/updatable-config.js.map +1 -0
- package/updatable-config.mjs +80 -0
- package/updatable-config.mjs.map +1 -0
- package/util.js +1 -1
- package/util.js.map +1 -1
- package/util.mjs +1 -1
- package/util.mjs.map +1 -1
- package/_virtual/rolldown_runtime.mjs +0 -13
- package/indexer-lookup.js.map +0 -1
- package/indexer-lookup.mjs.map +0 -1
- package/packages/algod_client/src/core/model-runtime.d.ts +0 -10
- package/packages/algod_client/src/models/application-local-reference.d.ts +0 -20
- package/packages/algod_client/src/models/application-local-reference.js +0 -23
- package/packages/algod_client/src/models/application-local-reference.js.map +0 -1
- package/packages/algod_client/src/models/application-local-reference.mjs +0 -23
- package/packages/algod_client/src/models/application-local-reference.mjs.map +0 -1
- package/packages/algod_client/src/models/asset-holding-reference.d.ts +0 -20
- package/packages/algod_client/src/models/asset-holding-reference.js +0 -23
- package/packages/algod_client/src/models/asset-holding-reference.js.map +0 -1
- package/packages/algod_client/src/models/asset-holding-reference.mjs +0 -23
- package/packages/algod_client/src/models/asset-holding-reference.mjs.map +0 -1
- package/packages/algod_client/src/models/box-reference.d.ts +0 -17
- package/packages/algod_client/src/models/box-reference.js +0 -23
- package/packages/algod_client/src/models/box-reference.js.map +0 -1
- package/packages/algod_client/src/models/box-reference.mjs +0 -23
- package/packages/algod_client/src/models/box-reference.mjs.map +0 -1
- package/packages/common/src/crypto.js +0 -13
- package/packages/common/src/crypto.js.map +0 -1
- package/packages/common/src/crypto.mjs +0 -11
- package/packages/common/src/crypto.mjs.map +0 -1
- package/packages/indexer_client/src/core/model-runtime.d.ts +0 -10
- package/packages/kmd_client/src/core/model-runtime.d.ts +0 -10
- package/packages/sdk/src/convert.d.ts +0 -17
- package/packages/sdk/src/convert.js +0 -28
- package/packages/sdk/src/convert.js.map +0 -1
- package/packages/sdk/src/convert.mjs +0 -25
- package/packages/sdk/src/convert.mjs.map +0 -1
- package/packages/sdk/src/encoding/binarydata.d.ts +0 -34
- package/packages/sdk/src/encoding/binarydata.js +0 -65
- package/packages/sdk/src/encoding/binarydata.js.map +0 -1
- package/packages/sdk/src/encoding/binarydata.mjs +0 -60
- package/packages/sdk/src/encoding/binarydata.mjs.map +0 -1
- package/packages/sdk/src/encoding/encoding.d.ts +0 -237
- package/packages/sdk/src/encoding/encoding.js +0 -302
- package/packages/sdk/src/encoding/encoding.js.map +0 -1
- package/packages/sdk/src/encoding/encoding.mjs +0 -287
- package/packages/sdk/src/encoding/encoding.mjs.map +0 -1
- package/packages/sdk/src/encoding/schema/array.js +0 -35
- package/packages/sdk/src/encoding/schema/array.js.map +0 -1
- package/packages/sdk/src/encoding/schema/array.mjs +0 -35
- package/packages/sdk/src/encoding/schema/array.mjs.map +0 -1
- package/packages/sdk/src/encoding/schema/bytearray.js +0 -49
- package/packages/sdk/src/encoding/schema/bytearray.js.map +0 -1
- package/packages/sdk/src/encoding/schema/bytearray.mjs +0 -49
- package/packages/sdk/src/encoding/schema/bytearray.mjs.map +0 -1
- package/packages/sdk/src/encoding/schema/map.d.ts +0 -58
- package/packages/sdk/src/encoding/schema/map.js +0 -110
- package/packages/sdk/src/encoding/schema/map.js.map +0 -1
- package/packages/sdk/src/encoding/schema/map.mjs +0 -107
- package/packages/sdk/src/encoding/schema/map.mjs.map +0 -1
- package/packages/sdk/src/encoding/schema/optional.js +0 -46
- package/packages/sdk/src/encoding/schema/optional.js.map +0 -1
- package/packages/sdk/src/encoding/schema/optional.mjs +0 -46
- package/packages/sdk/src/encoding/schema/optional.mjs.map +0 -1
- package/packages/sdk/src/encoding/schema/uint64.js +0 -30
- package/packages/sdk/src/encoding/schema/uint64.js.map +0 -1
- package/packages/sdk/src/encoding/schema/uint64.mjs +0 -30
- package/packages/sdk/src/encoding/schema/uint64.mjs.map +0 -1
- package/packages/sdk/src/encoding/uint64.d.ts +0 -34
- package/packages/sdk/src/encoding/uint64.js +0 -34
- package/packages/sdk/src/encoding/uint64.js.map +0 -1
- package/packages/sdk/src/encoding/uint64.mjs +0 -33
- package/packages/sdk/src/encoding/uint64.mjs.map +0 -1
- package/packages/sdk/src/index.d.ts +0 -44
- package/packages/sdk/src/index.js +0 -62
- package/packages/sdk/src/index.js.map +0 -1
- package/packages/sdk/src/index.mjs +0 -58
- package/packages/sdk/src/index.mjs.map +0 -1
- package/packages/sdk/src/logic/sourcemap.js.map +0 -1
- package/packages/sdk/src/logic/sourcemap.mjs.map +0 -1
- package/packages/sdk/src/nacl/naclWrappers.js +0 -14
- package/packages/sdk/src/nacl/naclWrappers.js.map +0 -1
- package/packages/sdk/src/nacl/naclWrappers.mjs +0 -11
- package/packages/sdk/src/nacl/naclWrappers.mjs.map +0 -1
- package/packages/sdk/src/types/intDecoding.d.ts +0 -28
- package/packages/sdk/src/types/intDecoding.js +0 -32
- package/packages/sdk/src/types/intDecoding.js.map +0 -1
- package/packages/sdk/src/types/intDecoding.mjs +0 -31
- package/packages/sdk/src/types/intDecoding.mjs.map +0 -1
- package/packages/sdk/src/types/transactions/encoded.d.ts +0 -40
- package/packages/sdk/src/types/transactions/encoded.js +0 -64
- package/packages/sdk/src/types/transactions/encoded.js.map +0 -1
- package/packages/sdk/src/types/transactions/encoded.mjs +0 -59
- package/packages/sdk/src/types/transactions/encoded.mjs.map +0 -1
- package/packages/sdk/src/utils/utils.d.ts +0 -64
- package/packages/sdk/src/utils/utils.js +0 -140
- package/packages/sdk/src/utils/utils.js.map +0 -1
- package/packages/sdk/src/utils/utils.mjs +0 -128
- package/packages/sdk/src/utils/utils.mjs.map +0 -1
- package/packages/transact/src/transactions/common.d.ts +0 -37
- package/sdk/index.d.ts +0 -10
- package/sdk/index.js +0 -59
- package/sdk/index.mjs +0 -11
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
const require_amount = require('./amount.js');
|
|
2
|
+
|
|
3
|
+
//#region src/network-manager.ts
|
|
4
|
+
/**
|
|
5
|
+
* Manager for LocalNet-specific network operations.
|
|
6
|
+
* These methods only work on LocalNet and will throw an error if called on other networks.
|
|
7
|
+
*/
|
|
8
|
+
var LocalNetManager = class {
|
|
9
|
+
_algod;
|
|
10
|
+
_networkManager;
|
|
11
|
+
_algorand;
|
|
12
|
+
/** @param algod The algod client to use for LocalNet operations */
|
|
13
|
+
constructor(algod, networkManager, algorand) {
|
|
14
|
+
this._algod = algod;
|
|
15
|
+
this._networkManager = networkManager;
|
|
16
|
+
this._algorand = algorand;
|
|
17
|
+
}
|
|
18
|
+
async _ensureLocalNet() {
|
|
19
|
+
if (!await this._algorand.client.isLocalNet()) throw new Error("LocalNet methods are only available when connected to a LocalNet network");
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Generates a single block by sending a zero-amount payment transaction from the dispenser to itself.
|
|
23
|
+
* This triggers block creation in LocalNet dev mode.
|
|
24
|
+
*/
|
|
25
|
+
async _generateBlock() {
|
|
26
|
+
const algorand = this._algorand;
|
|
27
|
+
const dispenser = await algorand.account.localNetDispenser();
|
|
28
|
+
await algorand.send.payment({
|
|
29
|
+
sender: dispenser,
|
|
30
|
+
receiver: dispenser,
|
|
31
|
+
amount: require_amount.AlgoAmount.MicroAlgo(0),
|
|
32
|
+
note: "algokit-utils:block-generation"
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Advances the blockchain by generating blocks until the target round is reached.
|
|
37
|
+
* @param targetRound The round number to advance to
|
|
38
|
+
* @throws Error if not connected to LocalNet
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* // Advance LocalNet to round 100
|
|
42
|
+
* await algorand.network.localNet.blockWarp(100n)
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
async blockWarp(targetRound) {
|
|
46
|
+
await this._ensureLocalNet();
|
|
47
|
+
while (await this._networkManager.getLastRound() < targetRound) await this._generateBlock();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Advances the blockchain timestamp to a target Unix timestamp.
|
|
51
|
+
* @param targetTimestamp The target Unix timestamp in seconds
|
|
52
|
+
* @throws Error if not connected to LocalNet
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* // Advance LocalNet time by 1 hour
|
|
56
|
+
* const oneHourFromNow = BigInt(Math.floor(Date.now() / 1000)) + 3600n
|
|
57
|
+
* await algorand.network.localNet.timeWarp(oneHourFromNow)
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
async timeWarp(targetTimestamp) {
|
|
61
|
+
await this._ensureLocalNet();
|
|
62
|
+
const currentTimestamp = await this._networkManager.getLatestTimestamp();
|
|
63
|
+
const offsetSeconds = Number(targetTimestamp - currentTimestamp);
|
|
64
|
+
await this._algod.setBlockTimeStampOffset(offsetSeconds);
|
|
65
|
+
await this._generateBlock();
|
|
66
|
+
await this._algod.setBlockTimeStampOffset(0);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Manager for network-related operations.
|
|
71
|
+
* Provides utilities for querying blockchain state and waiting for specific conditions.
|
|
72
|
+
*/
|
|
73
|
+
var NetworkManager = class {
|
|
74
|
+
_algod;
|
|
75
|
+
_algorand;
|
|
76
|
+
_localNet;
|
|
77
|
+
/**
|
|
78
|
+
* Create a new NetworkManager instance.
|
|
79
|
+
* @param algod The algod client to use for network operations
|
|
80
|
+
* @param algorand The AlgorandClient instance (for LocalNet operations)
|
|
81
|
+
*/
|
|
82
|
+
constructor(algod, algorand) {
|
|
83
|
+
this._algod = algod;
|
|
84
|
+
this._algorand = algorand;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get the last committed round number.
|
|
88
|
+
* @returns The last round number
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* const lastRound = await algorand.network.getLastRound()
|
|
92
|
+
* console.log(`Current round: ${lastRound}`)
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
async getLastRound() {
|
|
96
|
+
return (await this._algod.status()).lastRound;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get the Unix timestamp of the latest block.
|
|
100
|
+
*
|
|
101
|
+
* Note: This method makes two sequential API calls (status then block fetch).
|
|
102
|
+
* The round may advance between these calls, so the returned timestamp may not
|
|
103
|
+
* be from the actual latest timestamp.
|
|
104
|
+
*
|
|
105
|
+
* @returns The UNIX timestamp of the last round
|
|
106
|
+
* @example
|
|
107
|
+
* ```typescript
|
|
108
|
+
* const timestamp = await algorand.network.getLatestTimestamp()
|
|
109
|
+
* console.log(`Latest block time: ${new Date(Number(timestamp) * 1000)}`)
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
async getLatestTimestamp() {
|
|
113
|
+
const status = await this._algod.status();
|
|
114
|
+
return (await this._algod.block(status.lastRound)).block.header.timestamp;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Wait until a specific round is reached.
|
|
118
|
+
*
|
|
119
|
+
* @param targetRound The round number to wait for
|
|
120
|
+
* @throws Error if timeout is reached before the target round
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* // Wait for round 1000
|
|
124
|
+
* await algorand.network.waitUntilRound(1000n)
|
|
125
|
+
*
|
|
126
|
+
* // Wait with a 30 second timeout
|
|
127
|
+
* await algorand.network.waitUntilRound(1000n, 30000)
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
async waitUntilRound(targetRound) {
|
|
131
|
+
let status = await this._algod.status();
|
|
132
|
+
while (status.lastRound < targetRound) status = await this._algod.statusAfterBlock(status.lastRound);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Wait until a specific Unix timestamp is reached on the blockchain.
|
|
136
|
+
*
|
|
137
|
+
* @param targetTimestamp The target Unix timestamp in seconds
|
|
138
|
+
* @param options Optional parameters for waiting
|
|
139
|
+
* @example
|
|
140
|
+
* ```typescript
|
|
141
|
+
* // Wait until a specific time
|
|
142
|
+
* const futureTime = BigInt(Math.floor(Date.now() / 1000)) + 60n // 1 minute from now
|
|
143
|
+
* await algorand.network.waitUntilTimestamp(futureTime)
|
|
144
|
+
*
|
|
145
|
+
* // Wait with custom timing parameters
|
|
146
|
+
* await algorand.network.waitUntilTimestamp(futureTime, { blockTimeSeconds: 3.0, pollingIntervalMs: 500 })
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
async waitUntilTimestamp(targetTimestamp, options) {
|
|
150
|
+
const blockTimeSeconds = options?.blockTimeSeconds ?? 2.7;
|
|
151
|
+
const pollingIntervalMs = options?.pollingIntervalMs ?? 1e3;
|
|
152
|
+
const pollingTimeoutMs = options?.pollingTimeoutMs ?? 5e3;
|
|
153
|
+
const currentRound = (await this._algod.status()).lastRound;
|
|
154
|
+
const currentBlockTimestamp = (await this._algod.block(currentRound)).block.header.timestamp;
|
|
155
|
+
if (currentBlockTimestamp >= targetTimestamp) return;
|
|
156
|
+
const secondsToWait = Number(targetTimestamp - currentBlockTimestamp);
|
|
157
|
+
const roundsToWait = Math.floor(secondsToWait / blockTimeSeconds);
|
|
158
|
+
if (roundsToWait > 1) await this.waitUntilRound(currentRound + BigInt(roundsToWait));
|
|
159
|
+
const pollingStartTime = Date.now();
|
|
160
|
+
while (true) {
|
|
161
|
+
const latestTimeStamp = await this.getLatestTimestamp();
|
|
162
|
+
if (latestTimeStamp > targetTimestamp) return;
|
|
163
|
+
if (Date.now() - pollingStartTime >= pollingTimeoutMs) throw new Error(`Timeout waiting for timestamp ${targetTimestamp} (current: ${latestTimeStamp})`);
|
|
164
|
+
await new Promise((resolve) => setTimeout(resolve, pollingIntervalMs));
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get LocalNet-specific network utilities.
|
|
169
|
+
* These methods only work when connected to a LocalNet network and will throw
|
|
170
|
+
* an error if called on other networks.
|
|
171
|
+
*
|
|
172
|
+
* @returns The LocalNetManager instance
|
|
173
|
+
* @example
|
|
174
|
+
* ```typescript
|
|
175
|
+
* // Block warp on LocalNet
|
|
176
|
+
* await algorand.network.localNet.blockWarp(100n)
|
|
177
|
+
*
|
|
178
|
+
* // Time warp on LocalNet
|
|
179
|
+
* await algorand.network.localNet.timeWarp(BigInt(Date.now() / 1000) + 3600n)
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
get localNet() {
|
|
183
|
+
if (!this._localNet) this._localNet = new LocalNetManager(this._algod, this, this._algorand);
|
|
184
|
+
return this._localNet;
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
//#endregion
|
|
189
|
+
exports.LocalNetManager = LocalNetManager;
|
|
190
|
+
exports.NetworkManager = NetworkManager;
|
|
191
|
+
//# sourceMappingURL=network-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-manager.js","names":["AlgoAmount"],"sources":["../src/network-manager.ts"],"sourcesContent":["import { AlgodClient } from '@algorandfoundation/algokit-algod-client'\nimport type { AlgorandClient } from './algorand-client'\nimport { AlgoAmount } from './amount'\n\n/** Options for waiting until a specific timestamp is reached on the blockchain. */\nexport interface WaitUntilTimestampOptions {\n /** Estimated block time in seconds, used to calculate rounds to wait. Should be slightly lower than average to undershoot. Defaults to 2.7. */\n blockTimeSeconds?: number\n /** Polling interval in milliseconds when close to target. Defaults to 1000. */\n pollingIntervalMs?: number\n /** Timeout in milliseconds for the polling loop. Defaults to 5000. */\n pollingTimeoutMs?: number\n}\n\n/**\n * Manager for LocalNet-specific network operations.\n * These methods only work on LocalNet and will throw an error if called on other networks.\n */\nexport class LocalNetManager {\n private _algod: AlgodClient\n private _networkManager: NetworkManager\n private _algorand: AlgorandClient\n\n /** @param algod The algod client to use for LocalNet operations */\n constructor(algod: AlgodClient, networkManager: NetworkManager, algorand: AlgorandClient) {\n this._algod = algod\n this._networkManager = networkManager\n this._algorand = algorand\n }\n\n private async _ensureLocalNet(): Promise<void> {\n if (!(await this._algorand.client.isLocalNet())) {\n throw new Error('LocalNet methods are only available when connected to a LocalNet network')\n }\n }\n\n /**\n * Generates a single block by sending a zero-amount payment transaction from the dispenser to itself.\n * This triggers block creation in LocalNet dev mode.\n */\n private async _generateBlock(): Promise<void> {\n const algorand = this._algorand\n const dispenser = await algorand.account.localNetDispenser()\n await algorand.send.payment({\n sender: dispenser,\n receiver: dispenser,\n amount: AlgoAmount.MicroAlgo(0),\n note: 'algokit-utils:block-generation',\n })\n }\n\n /**\n * Advances the blockchain by generating blocks until the target round is reached.\n * @param targetRound The round number to advance to\n * @throws Error if not connected to LocalNet\n * @example\n * ```typescript\n * // Advance LocalNet to round 100\n * await algorand.network.localNet.blockWarp(100n)\n * ```\n */\n async blockWarp(targetRound: bigint): Promise<void> {\n await this._ensureLocalNet()\n\n // Generate blocks until we reach the target round\n while ((await this._networkManager.getLastRound()) < targetRound) {\n await this._generateBlock()\n }\n }\n\n /**\n * Advances the blockchain timestamp to a target Unix timestamp.\n * @param targetTimestamp The target Unix timestamp in seconds\n * @throws Error if not connected to LocalNet\n * @example\n * ```typescript\n * // Advance LocalNet time by 1 hour\n * const oneHourFromNow = BigInt(Math.floor(Date.now() / 1000)) + 3600n\n * await algorand.network.localNet.timeWarp(oneHourFromNow)\n * ```\n */\n async timeWarp(targetTimestamp: bigint): Promise<void> {\n await this._ensureLocalNet()\n\n const currentTimestamp = await this._networkManager.getLatestTimestamp()\n const offsetSeconds = Number(targetTimestamp - currentTimestamp)\n\n // Set the timestamp offset so the next block will have the target timestamp\n await this._algod.setBlockTimeStampOffset(offsetSeconds)\n // Generate a block with the new timestamp\n await this._generateBlock()\n // Reset the offset to use real clock for subsequent blocks\n await this._algod.setBlockTimeStampOffset(0)\n }\n}\n\n/**\n * Manager for network-related operations.\n * Provides utilities for querying blockchain state and waiting for specific conditions.\n */\nexport class NetworkManager {\n private _algod: AlgodClient\n private _algorand: AlgorandClient\n private _localNet: LocalNetManager | undefined\n\n /**\n * Create a new NetworkManager instance.\n * @param algod The algod client to use for network operations\n * @param algorand The AlgorandClient instance (for LocalNet operations)\n */\n constructor(algod: AlgodClient, algorand: AlgorandClient) {\n this._algod = algod\n this._algorand = algorand\n }\n\n /**\n * Get the last committed round number.\n * @returns The last round number\n * @example\n * ```typescript\n * const lastRound = await algorand.network.getLastRound()\n * console.log(`Current round: ${lastRound}`)\n * ```\n */\n async getLastRound(): Promise<bigint> {\n const status = await this._algod.status()\n return status.lastRound\n }\n\n /**\n * Get the Unix timestamp of the latest block.\n *\n * Note: This method makes two sequential API calls (status then block fetch).\n * The round may advance between these calls, so the returned timestamp may not\n * be from the actual latest timestamp.\n *\n * @returns The UNIX timestamp of the last round\n * @example\n * ```typescript\n * const timestamp = await algorand.network.getLatestTimestamp()\n * console.log(`Latest block time: ${new Date(Number(timestamp) * 1000)}`)\n * ```\n */\n async getLatestTimestamp(): Promise<bigint> {\n const status = await this._algod.status()\n const block = await this._algod.block(status.lastRound)\n return block.block.header.timestamp\n }\n\n /**\n * Wait until a specific round is reached.\n *\n * @param targetRound The round number to wait for\n * @throws Error if timeout is reached before the target round\n * @example\n * ```typescript\n * // Wait for round 1000\n * await algorand.network.waitUntilRound(1000n)\n *\n * // Wait with a 30 second timeout\n * await algorand.network.waitUntilRound(1000n, 30000)\n * ```\n */\n async waitUntilRound(targetRound: bigint): Promise<void> {\n let status = await this._algod.status()\n\n // statusAfterBlock has 1 min timeout, loop if target not reached\n while (status.lastRound < targetRound) {\n status = await this._algod.statusAfterBlock(status.lastRound)\n }\n }\n\n /**\n * Wait until a specific Unix timestamp is reached on the blockchain.\n *\n * @param targetTimestamp The target Unix timestamp in seconds\n * @param options Optional parameters for waiting\n * @example\n * ```typescript\n * // Wait until a specific time\n * const futureTime = BigInt(Math.floor(Date.now() / 1000)) + 60n // 1 minute from now\n * await algorand.network.waitUntilTimestamp(futureTime)\n *\n * // Wait with custom timing parameters\n * await algorand.network.waitUntilTimestamp(futureTime, { blockTimeSeconds: 3.0, pollingIntervalMs: 500 })\n * ```\n */\n async waitUntilTimestamp(targetTimestamp: bigint, options?: WaitUntilTimestampOptions): Promise<void> {\n // Note: this method reduces the number of calls to algod\n // by estimating the number of rounds to wait first\n // then wait for the target round to be committed\n // then poll every second for the right timestamp\n\n // blockTimeSeconds should be slightly lower than the average block time so that it will undershoot\n const blockTimeSeconds = options?.blockTimeSeconds ?? 2.7\n const pollingIntervalMs = options?.pollingIntervalMs ?? 1000\n const pollingTimeoutMs = options?.pollingTimeoutMs ?? 5000\n\n const currentStatus = await this._algod.status()\n const currentRound = currentStatus.lastRound\n const currentBlock = await this._algod.block(currentRound)\n const currentBlockTimestamp = currentBlock.block.header.timestamp\n\n if (currentBlockTimestamp >= targetTimestamp) return\n\n const secondsToWait = Number(targetTimestamp - currentBlockTimestamp)\n const roundsToWait = Math.floor(secondsToWait / blockTimeSeconds)\n\n // Wait for estimated round\n if (roundsToWait > 1) {\n await this.waitUntilRound(currentRound + BigInt(roundsToWait))\n }\n\n const pollingStartTime = Date.now()\n while (true) {\n const latestTimeStamp = await this.getLatestTimestamp()\n if (latestTimeStamp > targetTimestamp) {\n return\n }\n\n if (Date.now() - pollingStartTime >= pollingTimeoutMs) {\n throw new Error(`Timeout waiting for timestamp ${targetTimestamp} (current: ${latestTimeStamp})`)\n }\n\n await new Promise((resolve) => setTimeout(resolve, pollingIntervalMs))\n }\n }\n\n /**\n * Get LocalNet-specific network utilities.\n * These methods only work when connected to a LocalNet network and will throw\n * an error if called on other networks.\n *\n * @returns The LocalNetManager instance\n * @example\n * ```typescript\n * // Block warp on LocalNet\n * await algorand.network.localNet.blockWarp(100n)\n *\n * // Time warp on LocalNet\n * await algorand.network.localNet.timeWarp(BigInt(Date.now() / 1000) + 3600n)\n * ```\n */\n get localNet(): LocalNetManager {\n if (!this._localNet) {\n this._localNet = new LocalNetManager(this._algod, this, this._algorand)\n }\n return this._localNet\n }\n}\n"],"mappings":";;;;;;;AAkBA,IAAa,kBAAb,MAA6B;CAC3B,AAAQ;CACR,AAAQ;CACR,AAAQ;;CAGR,YAAY,OAAoB,gBAAgC,UAA0B;AACxF,OAAK,SAAS;AACd,OAAK,kBAAkB;AACvB,OAAK,YAAY;;CAGnB,MAAc,kBAAiC;AAC7C,MAAI,CAAE,MAAM,KAAK,UAAU,OAAO,YAAY,CAC5C,OAAM,IAAI,MAAM,2EAA2E;;;;;;CAQ/F,MAAc,iBAAgC;EAC5C,MAAM,WAAW,KAAK;EACtB,MAAM,YAAY,MAAM,SAAS,QAAQ,mBAAmB;AAC5D,QAAM,SAAS,KAAK,QAAQ;GAC1B,QAAQ;GACR,UAAU;GACV,QAAQA,0BAAW,UAAU,EAAE;GAC/B,MAAM;GACP,CAAC;;;;;;;;;;;;CAaJ,MAAM,UAAU,aAAoC;AAClD,QAAM,KAAK,iBAAiB;AAG5B,SAAQ,MAAM,KAAK,gBAAgB,cAAc,GAAI,YACnD,OAAM,KAAK,gBAAgB;;;;;;;;;;;;;CAe/B,MAAM,SAAS,iBAAwC;AACrD,QAAM,KAAK,iBAAiB;EAE5B,MAAM,mBAAmB,MAAM,KAAK,gBAAgB,oBAAoB;EACxE,MAAM,gBAAgB,OAAO,kBAAkB,iBAAiB;AAGhE,QAAM,KAAK,OAAO,wBAAwB,cAAc;AAExD,QAAM,KAAK,gBAAgB;AAE3B,QAAM,KAAK,OAAO,wBAAwB,EAAE;;;;;;;AAQhD,IAAa,iBAAb,MAA4B;CAC1B,AAAQ;CACR,AAAQ;CACR,AAAQ;;;;;;CAOR,YAAY,OAAoB,UAA0B;AACxD,OAAK,SAAS;AACd,OAAK,YAAY;;;;;;;;;;;CAYnB,MAAM,eAAgC;AAEpC,UADe,MAAM,KAAK,OAAO,QAAQ,EAC3B;;;;;;;;;;;;;;;;CAiBhB,MAAM,qBAAsC;EAC1C,MAAM,SAAS,MAAM,KAAK,OAAO,QAAQ;AAEzC,UADc,MAAM,KAAK,OAAO,MAAM,OAAO,UAAU,EAC1C,MAAM,OAAO;;;;;;;;;;;;;;;;CAiB5B,MAAM,eAAe,aAAoC;EACvD,IAAI,SAAS,MAAM,KAAK,OAAO,QAAQ;AAGvC,SAAO,OAAO,YAAY,YACxB,UAAS,MAAM,KAAK,OAAO,iBAAiB,OAAO,UAAU;;;;;;;;;;;;;;;;;CAmBjE,MAAM,mBAAmB,iBAAyB,SAAoD;EAOpG,MAAM,mBAAmB,SAAS,oBAAoB;EACtD,MAAM,oBAAoB,SAAS,qBAAqB;EACxD,MAAM,mBAAmB,SAAS,oBAAoB;EAGtD,MAAM,gBADgB,MAAM,KAAK,OAAO,QAAQ,EACb;EAEnC,MAAM,yBADe,MAAM,KAAK,OAAO,MAAM,aAAa,EACf,MAAM,OAAO;AAExD,MAAI,yBAAyB,gBAAiB;EAE9C,MAAM,gBAAgB,OAAO,kBAAkB,sBAAsB;EACrE,MAAM,eAAe,KAAK,MAAM,gBAAgB,iBAAiB;AAGjE,MAAI,eAAe,EACjB,OAAM,KAAK,eAAe,eAAe,OAAO,aAAa,CAAC;EAGhE,MAAM,mBAAmB,KAAK,KAAK;AACnC,SAAO,MAAM;GACX,MAAM,kBAAkB,MAAM,KAAK,oBAAoB;AACvD,OAAI,kBAAkB,gBACpB;AAGF,OAAI,KAAK,KAAK,GAAG,oBAAoB,iBACnC,OAAM,IAAI,MAAM,iCAAiC,gBAAgB,aAAa,gBAAgB,GAAG;AAGnG,SAAM,IAAI,SAAS,YAAY,WAAW,SAAS,kBAAkB,CAAC;;;;;;;;;;;;;;;;;;CAmB1E,IAAI,WAA4B;AAC9B,MAAI,CAAC,KAAK,UACR,MAAK,YAAY,IAAI,gBAAgB,KAAK,QAAQ,MAAM,KAAK,UAAU;AAEzE,SAAO,KAAK"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { AlgoAmount } from "./amount.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/network-manager.ts
|
|
4
|
+
/**
|
|
5
|
+
* Manager for LocalNet-specific network operations.
|
|
6
|
+
* These methods only work on LocalNet and will throw an error if called on other networks.
|
|
7
|
+
*/
|
|
8
|
+
var LocalNetManager = class {
|
|
9
|
+
_algod;
|
|
10
|
+
_networkManager;
|
|
11
|
+
_algorand;
|
|
12
|
+
/** @param algod The algod client to use for LocalNet operations */
|
|
13
|
+
constructor(algod, networkManager, algorand) {
|
|
14
|
+
this._algod = algod;
|
|
15
|
+
this._networkManager = networkManager;
|
|
16
|
+
this._algorand = algorand;
|
|
17
|
+
}
|
|
18
|
+
async _ensureLocalNet() {
|
|
19
|
+
if (!await this._algorand.client.isLocalNet()) throw new Error("LocalNet methods are only available when connected to a LocalNet network");
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Generates a single block by sending a zero-amount payment transaction from the dispenser to itself.
|
|
23
|
+
* This triggers block creation in LocalNet dev mode.
|
|
24
|
+
*/
|
|
25
|
+
async _generateBlock() {
|
|
26
|
+
const algorand = this._algorand;
|
|
27
|
+
const dispenser = await algorand.account.localNetDispenser();
|
|
28
|
+
await algorand.send.payment({
|
|
29
|
+
sender: dispenser,
|
|
30
|
+
receiver: dispenser,
|
|
31
|
+
amount: AlgoAmount.MicroAlgo(0),
|
|
32
|
+
note: "algokit-utils:block-generation"
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Advances the blockchain by generating blocks until the target round is reached.
|
|
37
|
+
* @param targetRound The round number to advance to
|
|
38
|
+
* @throws Error if not connected to LocalNet
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* // Advance LocalNet to round 100
|
|
42
|
+
* await algorand.network.localNet.blockWarp(100n)
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
async blockWarp(targetRound) {
|
|
46
|
+
await this._ensureLocalNet();
|
|
47
|
+
while (await this._networkManager.getLastRound() < targetRound) await this._generateBlock();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Advances the blockchain timestamp to a target Unix timestamp.
|
|
51
|
+
* @param targetTimestamp The target Unix timestamp in seconds
|
|
52
|
+
* @throws Error if not connected to LocalNet
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* // Advance LocalNet time by 1 hour
|
|
56
|
+
* const oneHourFromNow = BigInt(Math.floor(Date.now() / 1000)) + 3600n
|
|
57
|
+
* await algorand.network.localNet.timeWarp(oneHourFromNow)
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
async timeWarp(targetTimestamp) {
|
|
61
|
+
await this._ensureLocalNet();
|
|
62
|
+
const currentTimestamp = await this._networkManager.getLatestTimestamp();
|
|
63
|
+
const offsetSeconds = Number(targetTimestamp - currentTimestamp);
|
|
64
|
+
await this._algod.setBlockTimeStampOffset(offsetSeconds);
|
|
65
|
+
await this._generateBlock();
|
|
66
|
+
await this._algod.setBlockTimeStampOffset(0);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Manager for network-related operations.
|
|
71
|
+
* Provides utilities for querying blockchain state and waiting for specific conditions.
|
|
72
|
+
*/
|
|
73
|
+
var NetworkManager = class {
|
|
74
|
+
_algod;
|
|
75
|
+
_algorand;
|
|
76
|
+
_localNet;
|
|
77
|
+
/**
|
|
78
|
+
* Create a new NetworkManager instance.
|
|
79
|
+
* @param algod The algod client to use for network operations
|
|
80
|
+
* @param algorand The AlgorandClient instance (for LocalNet operations)
|
|
81
|
+
*/
|
|
82
|
+
constructor(algod, algorand) {
|
|
83
|
+
this._algod = algod;
|
|
84
|
+
this._algorand = algorand;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get the last committed round number.
|
|
88
|
+
* @returns The last round number
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* const lastRound = await algorand.network.getLastRound()
|
|
92
|
+
* console.log(`Current round: ${lastRound}`)
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
async getLastRound() {
|
|
96
|
+
return (await this._algod.status()).lastRound;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get the Unix timestamp of the latest block.
|
|
100
|
+
*
|
|
101
|
+
* Note: This method makes two sequential API calls (status then block fetch).
|
|
102
|
+
* The round may advance between these calls, so the returned timestamp may not
|
|
103
|
+
* be from the actual latest timestamp.
|
|
104
|
+
*
|
|
105
|
+
* @returns The UNIX timestamp of the last round
|
|
106
|
+
* @example
|
|
107
|
+
* ```typescript
|
|
108
|
+
* const timestamp = await algorand.network.getLatestTimestamp()
|
|
109
|
+
* console.log(`Latest block time: ${new Date(Number(timestamp) * 1000)}`)
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
async getLatestTimestamp() {
|
|
113
|
+
const status = await this._algod.status();
|
|
114
|
+
return (await this._algod.block(status.lastRound)).block.header.timestamp;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Wait until a specific round is reached.
|
|
118
|
+
*
|
|
119
|
+
* @param targetRound The round number to wait for
|
|
120
|
+
* @throws Error if timeout is reached before the target round
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* // Wait for round 1000
|
|
124
|
+
* await algorand.network.waitUntilRound(1000n)
|
|
125
|
+
*
|
|
126
|
+
* // Wait with a 30 second timeout
|
|
127
|
+
* await algorand.network.waitUntilRound(1000n, 30000)
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
async waitUntilRound(targetRound) {
|
|
131
|
+
let status = await this._algod.status();
|
|
132
|
+
while (status.lastRound < targetRound) status = await this._algod.statusAfterBlock(status.lastRound);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Wait until a specific Unix timestamp is reached on the blockchain.
|
|
136
|
+
*
|
|
137
|
+
* @param targetTimestamp The target Unix timestamp in seconds
|
|
138
|
+
* @param options Optional parameters for waiting
|
|
139
|
+
* @example
|
|
140
|
+
* ```typescript
|
|
141
|
+
* // Wait until a specific time
|
|
142
|
+
* const futureTime = BigInt(Math.floor(Date.now() / 1000)) + 60n // 1 minute from now
|
|
143
|
+
* await algorand.network.waitUntilTimestamp(futureTime)
|
|
144
|
+
*
|
|
145
|
+
* // Wait with custom timing parameters
|
|
146
|
+
* await algorand.network.waitUntilTimestamp(futureTime, { blockTimeSeconds: 3.0, pollingIntervalMs: 500 })
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
async waitUntilTimestamp(targetTimestamp, options) {
|
|
150
|
+
const blockTimeSeconds = options?.blockTimeSeconds ?? 2.7;
|
|
151
|
+
const pollingIntervalMs = options?.pollingIntervalMs ?? 1e3;
|
|
152
|
+
const pollingTimeoutMs = options?.pollingTimeoutMs ?? 5e3;
|
|
153
|
+
const currentRound = (await this._algod.status()).lastRound;
|
|
154
|
+
const currentBlockTimestamp = (await this._algod.block(currentRound)).block.header.timestamp;
|
|
155
|
+
if (currentBlockTimestamp >= targetTimestamp) return;
|
|
156
|
+
const secondsToWait = Number(targetTimestamp - currentBlockTimestamp);
|
|
157
|
+
const roundsToWait = Math.floor(secondsToWait / blockTimeSeconds);
|
|
158
|
+
if (roundsToWait > 1) await this.waitUntilRound(currentRound + BigInt(roundsToWait));
|
|
159
|
+
const pollingStartTime = Date.now();
|
|
160
|
+
while (true) {
|
|
161
|
+
const latestTimeStamp = await this.getLatestTimestamp();
|
|
162
|
+
if (latestTimeStamp > targetTimestamp) return;
|
|
163
|
+
if (Date.now() - pollingStartTime >= pollingTimeoutMs) throw new Error(`Timeout waiting for timestamp ${targetTimestamp} (current: ${latestTimeStamp})`);
|
|
164
|
+
await new Promise((resolve) => setTimeout(resolve, pollingIntervalMs));
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get LocalNet-specific network utilities.
|
|
169
|
+
* These methods only work when connected to a LocalNet network and will throw
|
|
170
|
+
* an error if called on other networks.
|
|
171
|
+
*
|
|
172
|
+
* @returns The LocalNetManager instance
|
|
173
|
+
* @example
|
|
174
|
+
* ```typescript
|
|
175
|
+
* // Block warp on LocalNet
|
|
176
|
+
* await algorand.network.localNet.blockWarp(100n)
|
|
177
|
+
*
|
|
178
|
+
* // Time warp on LocalNet
|
|
179
|
+
* await algorand.network.localNet.timeWarp(BigInt(Date.now() / 1000) + 3600n)
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
get localNet() {
|
|
183
|
+
if (!this._localNet) this._localNet = new LocalNetManager(this._algod, this, this._algorand);
|
|
184
|
+
return this._localNet;
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
//#endregion
|
|
189
|
+
export { LocalNetManager, NetworkManager };
|
|
190
|
+
//# sourceMappingURL=network-manager.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-manager.mjs","names":[],"sources":["../src/network-manager.ts"],"sourcesContent":["import { AlgodClient } from '@algorandfoundation/algokit-algod-client'\nimport type { AlgorandClient } from './algorand-client'\nimport { AlgoAmount } from './amount'\n\n/** Options for waiting until a specific timestamp is reached on the blockchain. */\nexport interface WaitUntilTimestampOptions {\n /** Estimated block time in seconds, used to calculate rounds to wait. Should be slightly lower than average to undershoot. Defaults to 2.7. */\n blockTimeSeconds?: number\n /** Polling interval in milliseconds when close to target. Defaults to 1000. */\n pollingIntervalMs?: number\n /** Timeout in milliseconds for the polling loop. Defaults to 5000. */\n pollingTimeoutMs?: number\n}\n\n/**\n * Manager for LocalNet-specific network operations.\n * These methods only work on LocalNet and will throw an error if called on other networks.\n */\nexport class LocalNetManager {\n private _algod: AlgodClient\n private _networkManager: NetworkManager\n private _algorand: AlgorandClient\n\n /** @param algod The algod client to use for LocalNet operations */\n constructor(algod: AlgodClient, networkManager: NetworkManager, algorand: AlgorandClient) {\n this._algod = algod\n this._networkManager = networkManager\n this._algorand = algorand\n }\n\n private async _ensureLocalNet(): Promise<void> {\n if (!(await this._algorand.client.isLocalNet())) {\n throw new Error('LocalNet methods are only available when connected to a LocalNet network')\n }\n }\n\n /**\n * Generates a single block by sending a zero-amount payment transaction from the dispenser to itself.\n * This triggers block creation in LocalNet dev mode.\n */\n private async _generateBlock(): Promise<void> {\n const algorand = this._algorand\n const dispenser = await algorand.account.localNetDispenser()\n await algorand.send.payment({\n sender: dispenser,\n receiver: dispenser,\n amount: AlgoAmount.MicroAlgo(0),\n note: 'algokit-utils:block-generation',\n })\n }\n\n /**\n * Advances the blockchain by generating blocks until the target round is reached.\n * @param targetRound The round number to advance to\n * @throws Error if not connected to LocalNet\n * @example\n * ```typescript\n * // Advance LocalNet to round 100\n * await algorand.network.localNet.blockWarp(100n)\n * ```\n */\n async blockWarp(targetRound: bigint): Promise<void> {\n await this._ensureLocalNet()\n\n // Generate blocks until we reach the target round\n while ((await this._networkManager.getLastRound()) < targetRound) {\n await this._generateBlock()\n }\n }\n\n /**\n * Advances the blockchain timestamp to a target Unix timestamp.\n * @param targetTimestamp The target Unix timestamp in seconds\n * @throws Error if not connected to LocalNet\n * @example\n * ```typescript\n * // Advance LocalNet time by 1 hour\n * const oneHourFromNow = BigInt(Math.floor(Date.now() / 1000)) + 3600n\n * await algorand.network.localNet.timeWarp(oneHourFromNow)\n * ```\n */\n async timeWarp(targetTimestamp: bigint): Promise<void> {\n await this._ensureLocalNet()\n\n const currentTimestamp = await this._networkManager.getLatestTimestamp()\n const offsetSeconds = Number(targetTimestamp - currentTimestamp)\n\n // Set the timestamp offset so the next block will have the target timestamp\n await this._algod.setBlockTimeStampOffset(offsetSeconds)\n // Generate a block with the new timestamp\n await this._generateBlock()\n // Reset the offset to use real clock for subsequent blocks\n await this._algod.setBlockTimeStampOffset(0)\n }\n}\n\n/**\n * Manager for network-related operations.\n * Provides utilities for querying blockchain state and waiting for specific conditions.\n */\nexport class NetworkManager {\n private _algod: AlgodClient\n private _algorand: AlgorandClient\n private _localNet: LocalNetManager | undefined\n\n /**\n * Create a new NetworkManager instance.\n * @param algod The algod client to use for network operations\n * @param algorand The AlgorandClient instance (for LocalNet operations)\n */\n constructor(algod: AlgodClient, algorand: AlgorandClient) {\n this._algod = algod\n this._algorand = algorand\n }\n\n /**\n * Get the last committed round number.\n * @returns The last round number\n * @example\n * ```typescript\n * const lastRound = await algorand.network.getLastRound()\n * console.log(`Current round: ${lastRound}`)\n * ```\n */\n async getLastRound(): Promise<bigint> {\n const status = await this._algod.status()\n return status.lastRound\n }\n\n /**\n * Get the Unix timestamp of the latest block.\n *\n * Note: This method makes two sequential API calls (status then block fetch).\n * The round may advance between these calls, so the returned timestamp may not\n * be from the actual latest timestamp.\n *\n * @returns The UNIX timestamp of the last round\n * @example\n * ```typescript\n * const timestamp = await algorand.network.getLatestTimestamp()\n * console.log(`Latest block time: ${new Date(Number(timestamp) * 1000)}`)\n * ```\n */\n async getLatestTimestamp(): Promise<bigint> {\n const status = await this._algod.status()\n const block = await this._algod.block(status.lastRound)\n return block.block.header.timestamp\n }\n\n /**\n * Wait until a specific round is reached.\n *\n * @param targetRound The round number to wait for\n * @throws Error if timeout is reached before the target round\n * @example\n * ```typescript\n * // Wait for round 1000\n * await algorand.network.waitUntilRound(1000n)\n *\n * // Wait with a 30 second timeout\n * await algorand.network.waitUntilRound(1000n, 30000)\n * ```\n */\n async waitUntilRound(targetRound: bigint): Promise<void> {\n let status = await this._algod.status()\n\n // statusAfterBlock has 1 min timeout, loop if target not reached\n while (status.lastRound < targetRound) {\n status = await this._algod.statusAfterBlock(status.lastRound)\n }\n }\n\n /**\n * Wait until a specific Unix timestamp is reached on the blockchain.\n *\n * @param targetTimestamp The target Unix timestamp in seconds\n * @param options Optional parameters for waiting\n * @example\n * ```typescript\n * // Wait until a specific time\n * const futureTime = BigInt(Math.floor(Date.now() / 1000)) + 60n // 1 minute from now\n * await algorand.network.waitUntilTimestamp(futureTime)\n *\n * // Wait with custom timing parameters\n * await algorand.network.waitUntilTimestamp(futureTime, { blockTimeSeconds: 3.0, pollingIntervalMs: 500 })\n * ```\n */\n async waitUntilTimestamp(targetTimestamp: bigint, options?: WaitUntilTimestampOptions): Promise<void> {\n // Note: this method reduces the number of calls to algod\n // by estimating the number of rounds to wait first\n // then wait for the target round to be committed\n // then poll every second for the right timestamp\n\n // blockTimeSeconds should be slightly lower than the average block time so that it will undershoot\n const blockTimeSeconds = options?.blockTimeSeconds ?? 2.7\n const pollingIntervalMs = options?.pollingIntervalMs ?? 1000\n const pollingTimeoutMs = options?.pollingTimeoutMs ?? 5000\n\n const currentStatus = await this._algod.status()\n const currentRound = currentStatus.lastRound\n const currentBlock = await this._algod.block(currentRound)\n const currentBlockTimestamp = currentBlock.block.header.timestamp\n\n if (currentBlockTimestamp >= targetTimestamp) return\n\n const secondsToWait = Number(targetTimestamp - currentBlockTimestamp)\n const roundsToWait = Math.floor(secondsToWait / blockTimeSeconds)\n\n // Wait for estimated round\n if (roundsToWait > 1) {\n await this.waitUntilRound(currentRound + BigInt(roundsToWait))\n }\n\n const pollingStartTime = Date.now()\n while (true) {\n const latestTimeStamp = await this.getLatestTimestamp()\n if (latestTimeStamp > targetTimestamp) {\n return\n }\n\n if (Date.now() - pollingStartTime >= pollingTimeoutMs) {\n throw new Error(`Timeout waiting for timestamp ${targetTimestamp} (current: ${latestTimeStamp})`)\n }\n\n await new Promise((resolve) => setTimeout(resolve, pollingIntervalMs))\n }\n }\n\n /**\n * Get LocalNet-specific network utilities.\n * These methods only work when connected to a LocalNet network and will throw\n * an error if called on other networks.\n *\n * @returns The LocalNetManager instance\n * @example\n * ```typescript\n * // Block warp on LocalNet\n * await algorand.network.localNet.blockWarp(100n)\n *\n * // Time warp on LocalNet\n * await algorand.network.localNet.timeWarp(BigInt(Date.now() / 1000) + 3600n)\n * ```\n */\n get localNet(): LocalNetManager {\n if (!this._localNet) {\n this._localNet = new LocalNetManager(this._algod, this, this._algorand)\n }\n return this._localNet\n }\n}\n"],"mappings":";;;;;;;AAkBA,IAAa,kBAAb,MAA6B;CAC3B,AAAQ;CACR,AAAQ;CACR,AAAQ;;CAGR,YAAY,OAAoB,gBAAgC,UAA0B;AACxF,OAAK,SAAS;AACd,OAAK,kBAAkB;AACvB,OAAK,YAAY;;CAGnB,MAAc,kBAAiC;AAC7C,MAAI,CAAE,MAAM,KAAK,UAAU,OAAO,YAAY,CAC5C,OAAM,IAAI,MAAM,2EAA2E;;;;;;CAQ/F,MAAc,iBAAgC;EAC5C,MAAM,WAAW,KAAK;EACtB,MAAM,YAAY,MAAM,SAAS,QAAQ,mBAAmB;AAC5D,QAAM,SAAS,KAAK,QAAQ;GAC1B,QAAQ;GACR,UAAU;GACV,QAAQ,WAAW,UAAU,EAAE;GAC/B,MAAM;GACP,CAAC;;;;;;;;;;;;CAaJ,MAAM,UAAU,aAAoC;AAClD,QAAM,KAAK,iBAAiB;AAG5B,SAAQ,MAAM,KAAK,gBAAgB,cAAc,GAAI,YACnD,OAAM,KAAK,gBAAgB;;;;;;;;;;;;;CAe/B,MAAM,SAAS,iBAAwC;AACrD,QAAM,KAAK,iBAAiB;EAE5B,MAAM,mBAAmB,MAAM,KAAK,gBAAgB,oBAAoB;EACxE,MAAM,gBAAgB,OAAO,kBAAkB,iBAAiB;AAGhE,QAAM,KAAK,OAAO,wBAAwB,cAAc;AAExD,QAAM,KAAK,gBAAgB;AAE3B,QAAM,KAAK,OAAO,wBAAwB,EAAE;;;;;;;AAQhD,IAAa,iBAAb,MAA4B;CAC1B,AAAQ;CACR,AAAQ;CACR,AAAQ;;;;;;CAOR,YAAY,OAAoB,UAA0B;AACxD,OAAK,SAAS;AACd,OAAK,YAAY;;;;;;;;;;;CAYnB,MAAM,eAAgC;AAEpC,UADe,MAAM,KAAK,OAAO,QAAQ,EAC3B;;;;;;;;;;;;;;;;CAiBhB,MAAM,qBAAsC;EAC1C,MAAM,SAAS,MAAM,KAAK,OAAO,QAAQ;AAEzC,UADc,MAAM,KAAK,OAAO,MAAM,OAAO,UAAU,EAC1C,MAAM,OAAO;;;;;;;;;;;;;;;;CAiB5B,MAAM,eAAe,aAAoC;EACvD,IAAI,SAAS,MAAM,KAAK,OAAO,QAAQ;AAGvC,SAAO,OAAO,YAAY,YACxB,UAAS,MAAM,KAAK,OAAO,iBAAiB,OAAO,UAAU;;;;;;;;;;;;;;;;;CAmBjE,MAAM,mBAAmB,iBAAyB,SAAoD;EAOpG,MAAM,mBAAmB,SAAS,oBAAoB;EACtD,MAAM,oBAAoB,SAAS,qBAAqB;EACxD,MAAM,mBAAmB,SAAS,oBAAoB;EAGtD,MAAM,gBADgB,MAAM,KAAK,OAAO,QAAQ,EACb;EAEnC,MAAM,yBADe,MAAM,KAAK,OAAO,MAAM,aAAa,EACf,MAAM,OAAO;AAExD,MAAI,yBAAyB,gBAAiB;EAE9C,MAAM,gBAAgB,OAAO,kBAAkB,sBAAsB;EACrE,MAAM,eAAe,KAAK,MAAM,gBAAgB,iBAAiB;AAGjE,MAAI,eAAe,EACjB,OAAM,KAAK,eAAe,eAAe,OAAO,aAAa,CAAC;EAGhE,MAAM,mBAAmB,KAAK,KAAK;AACnC,SAAO,MAAM;GACX,MAAM,kBAAkB,MAAM,KAAK,oBAAoB;AACvD,OAAI,kBAAkB,gBACpB;AAGF,OAAI,KAAK,KAAK,GAAG,oBAAoB,iBACnC,OAAM,IAAI,MAAM,iCAAiC,gBAAgB,aAAa,gBAAgB,GAAG;AAGnG,SAAM,IAAI,SAAS,YAAY,WAAW,SAAS,kBAAkB,CAAC;;;;;;;;;;;;;;;;;;CAmB1E,IAAI,WAA4B;AAC9B,MAAI,CAAC,KAAK,UACR,MAAK,YAAY,IAAI,gBAAgB,KAAK,QAAQ,MAAM,KAAK,UAAU;AAEzE,SAAO,KAAK"}
|
package/package.json
CHANGED
|
@@ -6,11 +6,15 @@
|
|
|
6
6
|
"**"
|
|
7
7
|
],
|
|
8
8
|
"name": "@algorandfoundation/algokit-utils",
|
|
9
|
-
"version": "10.0.0-alpha.
|
|
9
|
+
"version": "10.0.0-alpha.41",
|
|
10
10
|
"private": false,
|
|
11
11
|
"description": "A set of core Algorand utilities written in TypeScript and released via npm that make it easier to build solutions on Algorand.",
|
|
12
12
|
"author": "Algorand Foundation",
|
|
13
13
|
"license": "MIT",
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "https://github.com/algorandfoundation/algokit-utils-ts.git"
|
|
17
|
+
},
|
|
14
18
|
"engines": {
|
|
15
19
|
"node": ">=20.0"
|
|
16
20
|
},
|
|
@@ -42,6 +46,11 @@
|
|
|
42
46
|
"import": "./transact/index.mjs",
|
|
43
47
|
"require": "./transact/index.js"
|
|
44
48
|
},
|
|
49
|
+
"./transaction": {
|
|
50
|
+
"types": "./transaction/index.d.ts",
|
|
51
|
+
"import": "./transaction/index.mjs",
|
|
52
|
+
"require": "./transaction/index.js"
|
|
53
|
+
},
|
|
45
54
|
"./algod-client": {
|
|
46
55
|
"types": "./algod-client/index.d.ts",
|
|
47
56
|
"import": "./algod-client/index.mjs",
|
|
@@ -62,10 +71,20 @@
|
|
|
62
71
|
"import": "./algo25/index.mjs",
|
|
63
72
|
"require": "./algo25/index.js"
|
|
64
73
|
},
|
|
65
|
-
"./
|
|
66
|
-
"types": "./
|
|
67
|
-
"import": "./
|
|
68
|
-
"require": "./
|
|
74
|
+
"./crypto": {
|
|
75
|
+
"types": "./crypto/index.d.ts",
|
|
76
|
+
"import": "./crypto/index.mjs",
|
|
77
|
+
"require": "./crypto/index.js"
|
|
78
|
+
},
|
|
79
|
+
"./common": {
|
|
80
|
+
"types": "./common/index.d.ts",
|
|
81
|
+
"import": "./common/index.mjs",
|
|
82
|
+
"require": "./common/index.js"
|
|
83
|
+
},
|
|
84
|
+
"./*": {
|
|
85
|
+
"types": "./*.d.ts",
|
|
86
|
+
"import": "./*.mjs",
|
|
87
|
+
"require": "./*.js"
|
|
69
88
|
},
|
|
70
89
|
"./index.d.ts": "./index.d.ts",
|
|
71
90
|
"./package.json": "./package.json"
|
|
@@ -74,10 +93,13 @@
|
|
|
74
93
|
"esbuild": "0.25.0"
|
|
75
94
|
},
|
|
76
95
|
"dependencies": {
|
|
96
|
+
"@algorandfoundation/xhd-wallet-api": "2.0.0-canary.1",
|
|
97
|
+
"@noble/ed25519": "^3.0.0",
|
|
98
|
+
"@noble/hashes": "^2.0.1",
|
|
77
99
|
"algorand-msgpack": "^1.1.0",
|
|
78
100
|
"buffer": "^6.0.3",
|
|
101
|
+
"dotenv": "^16.4.5",
|
|
79
102
|
"hi-base32": "^0.5.1",
|
|
80
|
-
"js-sha512": "^0.8.0",
|
|
81
103
|
"json-bigint": "^1.0.0",
|
|
82
104
|
"tweetnacl": "^1.0.3",
|
|
83
105
|
"vlq": "^2.0.4"
|
|
@@ -1,24 +1,23 @@
|
|
|
1
|
-
const
|
|
1
|
+
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
|
|
2
2
|
const require_abi_type = require('./abi-type.js');
|
|
3
|
-
let
|
|
4
|
-
js_sha512 = require_rolldown_runtime.__toESM(js_sha512);
|
|
3
|
+
let _noble_hashes_sha2_js = require("@noble/hashes/sha2.js");
|
|
5
4
|
|
|
6
5
|
//#region packages/abi/src/abi-method.ts
|
|
7
|
-
let ABITransactionType = /* @__PURE__ */ function(ABITransactionType
|
|
8
|
-
ABITransactionType
|
|
9
|
-
ABITransactionType
|
|
10
|
-
ABITransactionType
|
|
11
|
-
ABITransactionType
|
|
12
|
-
ABITransactionType
|
|
13
|
-
ABITransactionType
|
|
14
|
-
ABITransactionType
|
|
15
|
-
return ABITransactionType
|
|
6
|
+
let ABITransactionType = /* @__PURE__ */ function(ABITransactionType) {
|
|
7
|
+
ABITransactionType["Txn"] = "txn";
|
|
8
|
+
ABITransactionType["Payment"] = "pay";
|
|
9
|
+
ABITransactionType["KeyRegistration"] = "keyreg";
|
|
10
|
+
ABITransactionType["AssetConfig"] = "acfg";
|
|
11
|
+
ABITransactionType["AssetTransfer"] = "axfer";
|
|
12
|
+
ABITransactionType["AssetFreeze"] = "afrz";
|
|
13
|
+
ABITransactionType["AppCall"] = "appl";
|
|
14
|
+
return ABITransactionType;
|
|
16
15
|
}({});
|
|
17
|
-
let ABIReferenceType = /* @__PURE__ */ function(ABIReferenceType
|
|
18
|
-
ABIReferenceType
|
|
19
|
-
ABIReferenceType
|
|
20
|
-
ABIReferenceType
|
|
21
|
-
return ABIReferenceType
|
|
16
|
+
let ABIReferenceType = /* @__PURE__ */ function(ABIReferenceType) {
|
|
17
|
+
ABIReferenceType["Account"] = "account";
|
|
18
|
+
ABIReferenceType["Application"] = "application";
|
|
19
|
+
ABIReferenceType["Asset"] = "asset";
|
|
20
|
+
return ABIReferenceType;
|
|
22
21
|
}({});
|
|
23
22
|
var ABIMethod = class ABIMethod {
|
|
24
23
|
name;
|
|
@@ -51,7 +50,7 @@ var ABIMethod = class ABIMethod {
|
|
|
51
50
|
* @returns The 4-byte method selector
|
|
52
51
|
*/
|
|
53
52
|
getSelector() {
|
|
54
|
-
const hash =
|
|
53
|
+
const hash = (0, _noble_hashes_sha2_js.sha512_256)(new TextEncoder().encode(this.getSignature()));
|
|
55
54
|
return new Uint8Array(hash.slice(0, 4));
|
|
56
55
|
}
|
|
57
56
|
/**
|
|
@@ -139,7 +138,7 @@ function arc56MethodToABIMethod(method, appSpec) {
|
|
|
139
138
|
});
|
|
140
139
|
const returns = {
|
|
141
140
|
type: method.returns.type === "void" ? "void" : method.returns.struct ? require_abi_type.ABIStructType.fromStruct(method.returns.struct, appSpec.structs) : require_abi_type.ABIType.from(method.returns.type),
|
|
142
|
-
|
|
141
|
+
description: method.returns.desc
|
|
143
142
|
};
|
|
144
143
|
return new ABIMethod({
|
|
145
144
|
name: method.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abi-method.js","names":["sha512","parseTupleContent","ABIType","convertedDefaultValue: ABIDefaultValue | undefined","ABIStructType","ABIUintType","ABIAddressType"],"sources":["../../../../packages/abi/src/abi-method.ts"],"sourcesContent":["import sha512 from 'js-sha512'\nimport { ABIAddressType, ABIStructType, ABIType, ABIUintType, parseTupleContent } from './abi-type'\nimport { ABIValue } from './abi-value'\nimport { ARC28Event } from './arc28-event'\nimport { AVMType, Arc56Contract, Arc56Method } from './arc56-contract'\n\nexport enum ABITransactionType {\n Txn = 'txn',\n Payment = 'pay',\n KeyRegistration = 'keyreg',\n AssetConfig = 'acfg',\n AssetTransfer = 'axfer',\n AssetFreeze = 'afrz',\n AppCall = 'appl',\n}\nexport enum ABIReferenceType {\n Account = 'account',\n Application = 'application',\n Asset = 'asset',\n}\nexport type ABIMethodArgType = ABIType | ABITransactionType | ABIReferenceType\nexport type ABIMethodReturnType = ABIType | 'void'\n\nexport type ABIMethodArg = {\n type: ABIMethodArgType\n name?: string\n description?: string\n defaultValue?: ABIDefaultValue\n}\n\nexport type ABIMethodReturn = {\n type: ABIMethodReturnType\n description?: string\n}\n\nexport type ABIDefaultValue = {\n /** Base64 encoded bytes, base64 ARC4 encoded uint64, or UTF-8 method selector */\n data: string\n /** Where the default value is coming from */\n source: DefaultValueSource\n /** How the data is encoded. This is the encoding for the data provided here, not the arg type */\n type?: ABIType | AVMType\n}\n\nexport enum DefaultValueSource {\n Box = 'box',\n Global = 'global',\n Local = 'local',\n Literal = 'literal',\n Method = 'method',\n}\n\n/** Represents an ABI method return value with parsed data. */\nexport type ABIReturn =\n | {\n /** The method that was called. */\n method: ABIMethod\n /** The raw return value as bytes.\n *\n * This is the value from the last app call log with the first 4 bytes (the ABI return prefix) omitted.\n */\n rawReturnValue: Uint8Array\n /** The parsed ABI return value. */\n returnValue: ABIValue\n decodeError: undefined\n }\n | { rawReturnValue?: undefined; returnValue?: undefined; method: ABIMethod; decodeError?: Error }\n\n/** Decoded ARC-56 struct as a struct rather than a tuple. */\nexport type ABIStruct = {\n [key: string]: ABIStruct | ABIValue\n}\n\nexport class ABIMethod {\n readonly name: string\n readonly description?: string\n readonly args: ABIMethodArg[]\n readonly returns: ABIMethodReturn\n readonly events?: ARC28Event[]\n readonly readonly?: boolean\n\n constructor(params: {\n name: string\n description?: string\n args: ABIMethodArg[]\n returns: ABIMethodReturn\n events?: ARC28Event[]\n readonly?: boolean\n }) {\n this.name = params.name\n this.description = params.description\n this.args = params.args\n this.returns = params.returns\n this.events = params.events\n this.readonly = params.readonly\n }\n\n /**\n * Returns the signature of this ABI method.\n * @returns The signature, e.g. `my_method(unit64,string)bytes`\n */\n getSignature(): string {\n const args = this.args\n .map((arg) => {\n if (argTypeIsTransaction(arg.type) || argTypeIsReference(arg.type)) return arg.type\n return arg.type.name\n })\n .join(',')\n const returns = this.returns.type === 'void' ? 'void' : this.returns.type.name\n return `${this.name}(${args})${returns}`\n }\n\n /**\n * Returns the method selector of this ABI method.\n * @returns The 4-byte method selector\n */\n getSelector(): Uint8Array {\n const hash = sha512.sha512_256.array(this.getSignature())\n return new Uint8Array(hash.slice(0, 4))\n }\n\n /**\n * Returns the ABI method object for a given method signature.\n * @param signature The method signature\n * e.g. `my_method(unit64,string)bytes`\n * @returns The `ABIMethod`\n */\n static fromSignature(signature: string): ABIMethod {\n const argsStart = signature.indexOf('(')\n if (argsStart === -1) {\n throw new Error(`Invalid method signature: ${signature}`)\n }\n\n let argsEnd = -1\n let depth = 0\n for (let i = argsStart; i < signature.length; i++) {\n const char = signature[i]\n\n if (char === '(') {\n depth += 1\n } else if (char === ')') {\n if (depth === 0) {\n // unpaired parenthesis\n break\n }\n\n depth -= 1\n if (depth === 0) {\n argsEnd = i\n break\n }\n }\n }\n\n if (argsEnd === -1) {\n throw new Error(`Invalid method signature: ${signature}`)\n }\n\n const name = signature.slice(0, argsStart)\n const args = parseTupleContent(signature.slice(argsStart + 1, argsEnd)).map((n: string) => {\n if (argTypeIsTransaction(n as ABIMethodArgType) || argTypeIsReference(n as ABIMethodArgType)) {\n return { type: n as ABIMethodArgType } satisfies ABIMethodArg\n }\n return { type: ABIType.from(n) } satisfies ABIMethodArg\n })\n const returnType = signature.slice(argsEnd + 1)\n const returns = { type: returnType === 'void' ? ('void' as const) : ABIType.from(returnType) } satisfies ABIMethodReturn\n\n return new ABIMethod({\n name,\n args,\n returns,\n })\n }\n}\n\n/**\n * Returns the ABI method object for a given method name or signature and ARC-56 app spec.\n * @param methodNameOrSignature The method name or method signature to call if an ABI call is being emitted.\n * e.g. `my_method` or `my_method(unit64,string)bytes`\n * @param appSpec The app spec for the app\n * @returns The `ABIMethod`\n */\nexport function getABIMethod(methodNameOrSignature: string, appSpec: Arc56Contract): ABIMethod {\n if (!methodNameOrSignature.includes('(')) {\n const methods = appSpec.methods.filter((m) => m.name === methodNameOrSignature)\n if (methods.length === 0) throw new Error(`Unable to find method ${methodNameOrSignature} in ${appSpec.name} app.`)\n if (methods.length > 1) {\n throw new Error(\n `Received a call to method ${methodNameOrSignature} in contract ${\n appSpec.name\n }, but this resolved to multiple methods; please pass in an ABI signature instead: ${appSpec.methods\n .map((m) => getArc56MethodSignature(m))\n .join(', ')}`,\n )\n }\n return arc56MethodToABIMethod(methods[0], appSpec)\n } else {\n const method = appSpec.methods.find((m) => getArc56MethodSignature(m) === methodNameOrSignature)\n if (!method) throw new Error(`Unable to find method ${methodNameOrSignature} in ${appSpec.name} app.`)\n return arc56MethodToABIMethod(method, appSpec)\n }\n}\n\nexport function arc56MethodToABIMethod(method: Arc56Method, appSpec: Arc56Contract): ABIMethod {\n if (typeof method.name !== 'string' || typeof method.returns !== 'object' || !Array.isArray(method.args)) {\n throw new Error('Invalid ABIMethod parameters')\n }\n\n const args = method.args.map(({ type, name, desc, struct, defaultValue }) => {\n const convertedDefaultValue: ABIDefaultValue | undefined = defaultValue\n ? {\n data: defaultValue.data,\n source: defaultValue.source as DefaultValueSource,\n type: defaultValue.type ? (isAVMType(defaultValue.type) ? defaultValue.type : ABIType.from(defaultValue.type)) : undefined,\n }\n : undefined\n\n if (argTypeIsTransaction(type as ABIMethodArgType) || argTypeIsReference(type as ABIMethodArgType)) {\n return {\n type: type as ABIMethodArgType,\n name,\n description: desc,\n defaultValue: convertedDefaultValue,\n } satisfies ABIMethodArg\n }\n\n if (struct) {\n return {\n type: ABIStructType.fromStruct(struct, appSpec.structs),\n name,\n description: desc,\n defaultValue: convertedDefaultValue,\n } satisfies ABIMethodArg\n }\n\n return {\n type: ABIType.from(type),\n name,\n description: desc,\n defaultValue: convertedDefaultValue,\n } satisfies ABIMethodArg\n })\n\n const returns = {\n type:\n method.returns.type === ('void' as const)\n ? ('void' as const)\n : method.returns.struct\n ? ABIStructType.fromStruct(method.returns.struct, appSpec.structs)\n : ABIType.from(method.returns.type),\n desc: method.returns.desc,\n }\n\n return new ABIMethod({\n name: method.name,\n description: method.desc,\n args,\n returns,\n events: method.events,\n readonly: method.readonly,\n })\n}\n\nexport function argTypeIsTransaction(type: ABIMethodArgType): type is ABITransactionType {\n return (\n typeof type === 'string' &&\n (type === ABITransactionType.Txn ||\n type === ABITransactionType.Payment ||\n type === ABITransactionType.KeyRegistration ||\n type === ABITransactionType.AssetConfig ||\n type === ABITransactionType.AssetTransfer ||\n type === ABITransactionType.AssetFreeze ||\n type === ABITransactionType.AppCall)\n )\n}\n\nexport function argTypeIsReference(type: ABIMethodArgType): type is ABIReferenceType {\n return (\n typeof type === 'string' &&\n (type === ABIReferenceType.Account || type === ABIReferenceType.Application || type === ABIReferenceType.Asset)\n )\n}\n\nexport function argTypeIsAbiType(type: ABIMethodArgType): type is ABIType {\n return !argTypeIsTransaction(type) && !argTypeIsReference(type)\n}\n\nfunction getArc56MethodSignature(method: Arc56Method): string {\n const args = method.args.map((arg) => arg.type).join(',')\n const returns = method.returns.type\n return `${method.name}(${args})${returns}`\n}\n\nexport function decodeAVMValue(avmType: AVMType, bytes: Uint8Array): ABIValue {\n switch (avmType) {\n case 'AVMString':\n return Buffer.from(bytes).toString('utf-8')\n case 'AVMBytes':\n return bytes\n case 'AVMUint64':\n return ABIType.from('uint64').decode(bytes)\n }\n}\n\nexport function encodeAVMValue(avmType: AVMType, value: ABIValue): Uint8Array {\n switch (avmType) {\n case 'AVMString':\n return ABIType.from('string').encode(value)\n case 'AVMBytes':\n if (typeof value === 'string') return Buffer.from(value, 'utf-8')\n if (typeof value !== 'object' || !(value instanceof Uint8Array))\n throw new Error(`Expected bytes value for AVMBytes, but got ${value}`)\n return value\n case 'AVMUint64':\n return ABIType.from('uint64').encode(value)\n }\n}\n\nexport function isAVMType(type: unknown): type is AVMType {\n return typeof type === 'string' && (type === 'AVMString' || type === 'AVMBytes' || type === 'AVMUint64')\n}\n\nexport function getABIDecodedValue(type: AVMType | ABIType | ABIReferenceType, bytes: Uint8Array): ABIValue {\n if (type === ABIReferenceType.Asset || type === ABIReferenceType.Application) {\n return new ABIUintType(64).decode(bytes)\n } else if (type === ABIReferenceType.Account) {\n return new ABIAddressType().decode(bytes)\n } else if (isAVMType(type)) {\n return decodeAVMValue(type, bytes)\n }\n return type.decode(bytes)\n}\n\nexport function getABIEncodedValue(type: AVMType | ABIType, value: ABIValue): Uint8Array {\n return isAVMType(type) ? encodeAVMValue(type, value) : type.encode(value)\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"abi-method.js","names":["parseTupleContent","ABIType","ABIStructType","ABIUintType","ABIAddressType"],"sources":["../../../../packages/abi/src/abi-method.ts"],"sourcesContent":["import { sha512_256 } from '@noble/hashes/sha2.js'\nimport { ABIAddressType, ABIStructType, ABIType, ABIUintType, parseTupleContent } from './abi-type'\nimport { ABIValue } from './abi-value'\nimport { ARC28Event } from './arc28-event'\nimport { AVMType, Arc56Contract, Arc56Method } from './arc56-contract'\n\nexport enum ABITransactionType {\n Txn = 'txn',\n Payment = 'pay',\n KeyRegistration = 'keyreg',\n AssetConfig = 'acfg',\n AssetTransfer = 'axfer',\n AssetFreeze = 'afrz',\n AppCall = 'appl',\n}\nexport enum ABIReferenceType {\n Account = 'account',\n Application = 'application',\n Asset = 'asset',\n}\nexport type ABIMethodArgType = ABIType | ABITransactionType | ABIReferenceType\nexport type ABIMethodReturnType = ABIType | 'void'\n\nexport type ABIMethodArg = {\n type: ABIMethodArgType\n name?: string\n description?: string\n defaultValue?: ABIDefaultValue\n}\n\nexport type ABIMethodReturn = {\n type: ABIMethodReturnType\n description?: string\n}\n\nexport type ABIDefaultValue = {\n /** Base64 encoded bytes, base64 ARC4 encoded uint64, or UTF-8 method selector */\n data: string\n /** Where the default value is coming from */\n source: DefaultValueSource\n /** How the data is encoded. This is the encoding for the data provided here, not the arg type */\n type?: ABIType | AVMType\n}\n\nexport enum DefaultValueSource {\n Box = 'box',\n Global = 'global',\n Local = 'local',\n Literal = 'literal',\n Method = 'method',\n}\n\n/** Represents an ABI method return value with parsed data. */\nexport type ABIReturn =\n | {\n /** The method that was called. */\n method: ABIMethod\n /** The raw return value as bytes.\n *\n * This is the value from the last app call log with the first 4 bytes (the ABI return prefix) omitted.\n */\n rawReturnValue: Uint8Array\n /** The parsed ABI return value. */\n returnValue: ABIValue\n decodeError: undefined\n }\n | { rawReturnValue?: undefined; returnValue?: undefined; method: ABIMethod; decodeError?: Error }\n\n/** Decoded ARC-56 struct as a struct rather than a tuple. */\nexport type ABIStruct = {\n [key: string]: ABIStruct | ABIValue\n}\n\nexport class ABIMethod {\n readonly name: string\n readonly description?: string\n readonly args: ABIMethodArg[]\n readonly returns: ABIMethodReturn\n readonly events?: ARC28Event[]\n readonly readonly?: boolean\n\n constructor(params: {\n name: string\n description?: string\n args: ABIMethodArg[]\n returns: ABIMethodReturn\n events?: ARC28Event[]\n readonly?: boolean\n }) {\n this.name = params.name\n this.description = params.description\n this.args = params.args\n this.returns = params.returns\n this.events = params.events\n this.readonly = params.readonly\n }\n\n /**\n * Returns the signature of this ABI method.\n * @returns The signature, e.g. `my_method(unit64,string)bytes`\n */\n getSignature(): string {\n const args = this.args\n .map((arg) => {\n if (argTypeIsTransaction(arg.type) || argTypeIsReference(arg.type)) return arg.type\n return arg.type.name\n })\n .join(',')\n const returns = this.returns.type === 'void' ? 'void' : this.returns.type.name\n return `${this.name}(${args})${returns}`\n }\n\n /**\n * Returns the method selector of this ABI method.\n * @returns The 4-byte method selector\n */\n getSelector(): Uint8Array {\n const hash = sha512_256(new TextEncoder().encode(this.getSignature()))\n return new Uint8Array(hash.slice(0, 4))\n }\n\n /**\n * Returns the ABI method object for a given method signature.\n * @param signature The method signature\n * e.g. `my_method(unit64,string)bytes`\n * @returns The `ABIMethod`\n */\n static fromSignature(signature: string): ABIMethod {\n const argsStart = signature.indexOf('(')\n if (argsStart === -1) {\n throw new Error(`Invalid method signature: ${signature}`)\n }\n\n let argsEnd = -1\n let depth = 0\n for (let i = argsStart; i < signature.length; i++) {\n const char = signature[i]\n\n if (char === '(') {\n depth += 1\n } else if (char === ')') {\n if (depth === 0) {\n // unpaired parenthesis\n break\n }\n\n depth -= 1\n if (depth === 0) {\n argsEnd = i\n break\n }\n }\n }\n\n if (argsEnd === -1) {\n throw new Error(`Invalid method signature: ${signature}`)\n }\n\n const name = signature.slice(0, argsStart)\n const args = parseTupleContent(signature.slice(argsStart + 1, argsEnd)).map((n: string) => {\n if (argTypeIsTransaction(n as ABIMethodArgType) || argTypeIsReference(n as ABIMethodArgType)) {\n return { type: n as ABIMethodArgType } satisfies ABIMethodArg\n }\n return { type: ABIType.from(n) } satisfies ABIMethodArg\n })\n const returnType = signature.slice(argsEnd + 1)\n const returns = { type: returnType === 'void' ? ('void' as const) : ABIType.from(returnType) } satisfies ABIMethodReturn\n\n return new ABIMethod({\n name,\n args,\n returns,\n })\n }\n}\n\n/**\n * Returns the ABI method object for a given method name or signature and ARC-56 app spec.\n * @param methodNameOrSignature The method name or method signature to call if an ABI call is being emitted.\n * e.g. `my_method` or `my_method(unit64,string)bytes`\n * @param appSpec The app spec for the app\n * @returns The `ABIMethod`\n */\nexport function getABIMethod(methodNameOrSignature: string, appSpec: Arc56Contract): ABIMethod {\n if (!methodNameOrSignature.includes('(')) {\n const methods = appSpec.methods.filter((m) => m.name === methodNameOrSignature)\n if (methods.length === 0) throw new Error(`Unable to find method ${methodNameOrSignature} in ${appSpec.name} app.`)\n if (methods.length > 1) {\n throw new Error(\n `Received a call to method ${methodNameOrSignature} in contract ${\n appSpec.name\n }, but this resolved to multiple methods; please pass in an ABI signature instead: ${appSpec.methods\n .map((m) => getArc56MethodSignature(m))\n .join(', ')}`,\n )\n }\n return arc56MethodToABIMethod(methods[0], appSpec)\n } else {\n const method = appSpec.methods.find((m) => getArc56MethodSignature(m) === methodNameOrSignature)\n if (!method) throw new Error(`Unable to find method ${methodNameOrSignature} in ${appSpec.name} app.`)\n return arc56MethodToABIMethod(method, appSpec)\n }\n}\n\nexport function arc56MethodToABIMethod(method: Arc56Method, appSpec: Arc56Contract): ABIMethod {\n if (typeof method.name !== 'string' || typeof method.returns !== 'object' || !Array.isArray(method.args)) {\n throw new Error('Invalid ABIMethod parameters')\n }\n\n const args = method.args.map(({ type, name, desc, struct, defaultValue }) => {\n const convertedDefaultValue: ABIDefaultValue | undefined = defaultValue\n ? {\n data: defaultValue.data,\n source: defaultValue.source as DefaultValueSource,\n type: defaultValue.type ? (isAVMType(defaultValue.type) ? defaultValue.type : ABIType.from(defaultValue.type)) : undefined,\n }\n : undefined\n\n if (argTypeIsTransaction(type as ABIMethodArgType) || argTypeIsReference(type as ABIMethodArgType)) {\n return {\n type: type as ABIMethodArgType,\n name,\n description: desc,\n defaultValue: convertedDefaultValue,\n } satisfies ABIMethodArg\n }\n\n if (struct) {\n return {\n type: ABIStructType.fromStruct(struct, appSpec.structs),\n name,\n description: desc,\n defaultValue: convertedDefaultValue,\n } satisfies ABIMethodArg\n }\n\n return {\n type: ABIType.from(type),\n name,\n description: desc,\n defaultValue: convertedDefaultValue,\n } satisfies ABIMethodArg\n })\n\n const returns = {\n type:\n method.returns.type === ('void' as const)\n ? ('void' as const)\n : method.returns.struct\n ? ABIStructType.fromStruct(method.returns.struct, appSpec.structs)\n : ABIType.from(method.returns.type),\n description: method.returns.desc,\n } satisfies ABIMethodReturn\n\n return new ABIMethod({\n name: method.name,\n description: method.desc,\n args,\n returns,\n events: method.events,\n readonly: method.readonly,\n })\n}\n\nexport function argTypeIsTransaction(type: ABIMethodArgType): type is ABITransactionType {\n return (\n typeof type === 'string' &&\n (type === ABITransactionType.Txn ||\n type === ABITransactionType.Payment ||\n type === ABITransactionType.KeyRegistration ||\n type === ABITransactionType.AssetConfig ||\n type === ABITransactionType.AssetTransfer ||\n type === ABITransactionType.AssetFreeze ||\n type === ABITransactionType.AppCall)\n )\n}\n\nexport function argTypeIsReference(type: ABIMethodArgType): type is ABIReferenceType {\n return (\n typeof type === 'string' &&\n (type === ABIReferenceType.Account || type === ABIReferenceType.Application || type === ABIReferenceType.Asset)\n )\n}\n\nexport function argTypeIsAbiType(type: ABIMethodArgType): type is ABIType {\n return !argTypeIsTransaction(type) && !argTypeIsReference(type)\n}\n\nfunction getArc56MethodSignature(method: Arc56Method): string {\n const args = method.args.map((arg) => arg.type).join(',')\n const returns = method.returns.type\n return `${method.name}(${args})${returns}`\n}\n\nexport function decodeAVMValue(avmType: AVMType, bytes: Uint8Array): ABIValue {\n switch (avmType) {\n case 'AVMString':\n return Buffer.from(bytes).toString('utf-8')\n case 'AVMBytes':\n return bytes\n case 'AVMUint64':\n return ABIType.from('uint64').decode(bytes)\n }\n}\n\nexport function encodeAVMValue(avmType: AVMType, value: ABIValue): Uint8Array {\n switch (avmType) {\n case 'AVMString':\n return ABIType.from('string').encode(value)\n case 'AVMBytes':\n if (typeof value === 'string') return Buffer.from(value, 'utf-8')\n if (typeof value !== 'object' || !(value instanceof Uint8Array))\n throw new Error(`Expected bytes value for AVMBytes, but got ${value}`)\n return value\n case 'AVMUint64':\n return ABIType.from('uint64').encode(value)\n }\n}\n\nexport function isAVMType(type: unknown): type is AVMType {\n return typeof type === 'string' && (type === 'AVMString' || type === 'AVMBytes' || type === 'AVMUint64')\n}\n\nexport function getABIDecodedValue(type: AVMType | ABIType | ABIReferenceType, bytes: Uint8Array): ABIValue {\n if (type === ABIReferenceType.Asset || type === ABIReferenceType.Application) {\n return new ABIUintType(64).decode(bytes)\n } else if (type === ABIReferenceType.Account) {\n return new ABIAddressType().decode(bytes)\n } else if (isAVMType(type)) {\n return decodeAVMValue(type, bytes)\n }\n return type.decode(bytes)\n}\n\nexport function getABIEncodedValue(type: AVMType | ABIType, value: ABIValue): Uint8Array {\n return isAVMType(type) ? encodeAVMValue(type, value) : type.encode(value)\n}\n"],"mappings":"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"}
|