@algorandfoundation/algokit-utils 10.0.0-beta.2 → 10.0.0-beta.4
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/account-manager.d.ts +72 -1
- package/account-manager.js +63 -1
- package/account-manager.js.map +1 -1
- package/account-manager.mjs +63 -1
- package/account-manager.mjs.map +1 -1
- package/algo25/index.d.ts +1 -1
- package/algo25/index.js +1 -1
- package/algo25/index.mjs +1 -1
- package/algorand-client-transaction-creator.js.map +1 -1
- package/algorand-client-transaction-creator.mjs.map +1 -1
- package/algorand-client-transaction-sender.js +0 -1
- package/algorand-client-transaction-sender.js.map +1 -1
- package/algorand-client-transaction-sender.mjs.map +1 -1
- package/algorand-client.js +5 -1
- package/algorand-client.js.map +1 -1
- package/algorand-client.mjs +5 -1
- package/algorand-client.mjs.map +1 -1
- package/amount.js.map +1 -1
- package/amount.mjs.map +1 -1
- package/app-client.js +174 -17
- package/app-client.js.map +1 -1
- package/app-client.mjs +174 -16
- package/app-client.mjs.map +1 -1
- package/app-deployer.js +8 -8
- package/app-deployer.js.map +1 -1
- package/app-deployer.mjs +9 -9
- package/app-deployer.mjs.map +1 -1
- package/app-factory.d.ts +2 -2
- package/app-factory.js +49 -9
- package/app-factory.js.map +1 -1
- package/app-factory.mjs +49 -9
- package/app-factory.mjs.map +1 -1
- package/app-manager.js.map +1 -1
- package/app-manager.mjs.map +1 -1
- package/app-spec.js.map +1 -1
- package/app-spec.mjs.map +1 -1
- package/app.js.map +1 -1
- package/app.mjs.map +1 -1
- package/asset-manager.js.map +1 -1
- package/asset-manager.mjs.map +1 -1
- package/async-event-emitter.js.map +1 -1
- package/async-event-emitter.mjs.map +1 -1
- package/client-manager.js.map +1 -1
- package/client-manager.mjs.map +1 -1
- package/composer.js +17 -18
- package/composer.js.map +1 -1
- package/composer.mjs +17 -17
- package/composer.mjs.map +1 -1
- package/config.js.map +1 -1
- package/config.mjs.map +1 -1
- package/crypto/index.d.ts +3 -3
- package/crypto/index.js +5 -2
- package/crypto/index.mjs +3 -3
- package/dispenser-client.js +4 -8
- package/dispenser-client.js.map +1 -1
- package/dispenser-client.mjs +4 -8
- package/dispenser-client.mjs.map +1 -1
- package/indexer-client/indexer-lookup.js.map +1 -1
- package/indexer-client/indexer-lookup.mjs.map +1 -1
- package/indexer.js.map +1 -1
- package/indexer.mjs.map +1 -1
- package/kmd-account-manager.js.map +1 -1
- package/kmd-account-manager.mjs.map +1 -1
- package/lifecycle-events.js.map +1 -1
- package/lifecycle-events.mjs.map +1 -1
- package/logging.js.map +1 -1
- package/logging.mjs.map +1 -1
- package/logic-error.js.map +1 -1
- package/logic-error.mjs.map +1 -1
- package/network-client.js.map +1 -1
- package/network-client.mjs.map +1 -1
- package/network-manager.js.map +1 -1
- package/network-manager.mjs.map +1 -1
- package/package.json +3 -2
- package/packages/abi/src/abi-method.js +6 -6
- package/packages/abi/src/abi-method.js.map +1 -1
- package/packages/abi/src/abi-method.mjs +6 -5
- package/packages/abi/src/abi-method.mjs.map +1 -1
- package/packages/abi/src/abi-type.js +9 -0
- package/packages/abi/src/abi-type.js.map +1 -1
- package/packages/abi/src/abi-type.mjs +9 -0
- package/packages/abi/src/abi-type.mjs.map +1 -1
- package/packages/abi/src/arc56-contract.js.map +1 -1
- package/packages/abi/src/arc56-contract.mjs.map +1 -1
- package/packages/abi/src/bigint.js.map +1 -1
- package/packages/abi/src/bigint.mjs.map +1 -1
- package/packages/abi/src/utils.js.map +1 -1
- package/packages/abi/src/utils.mjs.map +1 -1
- package/packages/algod_client/src/apis/api-service.js +3 -1
- package/packages/algod_client/src/apis/api-service.js.map +1 -1
- package/packages/algod_client/src/apis/api-service.mjs +3 -1
- package/packages/algod_client/src/apis/api-service.mjs.map +1 -1
- package/packages/algod_client/src/client.js.map +1 -1
- package/packages/algod_client/src/client.mjs.map +1 -1
- package/packages/algod_client/src/core/api-error.js.map +1 -1
- package/packages/algod_client/src/core/api-error.mjs.map +1 -1
- package/packages/algod_client/src/core/base-http-request.js +1 -0
- package/packages/algod_client/src/core/base-http-request.js.map +1 -1
- package/packages/algod_client/src/core/base-http-request.mjs +1 -0
- 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.map +1 -1
- 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.map +1 -1
- 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.js.map +1 -1
- 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.map +1 -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.map +1 -1
- 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.js.map +1 -1
- 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.map +1 -1
- package/packages/algod_client/src/models/eval-delta-key-value.mjs.map +1 -1
- package/packages/algod_client/src/models/eval-delta.js.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- package/packages/algod_client/src/models/simulate-request.mjs.map +1 -1
- package/packages/algod_client/src/models/simulate-response.js.map +1 -1
- 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.js.map +1 -1
- 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.map +1 -1
- 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.js.map +1 -1
- package/packages/common/src/address.mjs.map +1 -1
- package/packages/common/src/array.js.map +1 -1
- package/packages/common/src/array.mjs.map +1 -1
- package/packages/common/src/codecs/codec.js.map +1 -1
- package/packages/common/src/codecs/codec.mjs.map +1 -1
- 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 -0
- package/packages/common/src/codecs/composite/array.mjs.map +1 -1
- package/packages/common/src/codecs/composite/map.js +2 -0
- package/packages/common/src/codecs/composite/map.js.map +1 -1
- package/packages/common/src/codecs/composite/map.mjs +2 -0
- package/packages/common/src/codecs/composite/map.mjs.map +1 -1
- package/packages/common/src/codecs/composite/record.js +1 -1
- package/packages/common/src/codecs/composite/record.js.map +1 -1
- package/packages/common/src/codecs/composite/record.mjs +1 -0
- package/packages/common/src/codecs/composite/record.mjs.map +1 -1
- package/packages/common/src/codecs/models/array-model.js +1 -0
- package/packages/common/src/codecs/models/array-model.js.map +1 -1
- package/packages/common/src/codecs/models/array-model.mjs +1 -0
- package/packages/common/src/codecs/models/array-model.mjs.map +1 -1
- package/packages/common/src/codecs/models/object-model.js +3 -1
- package/packages/common/src/codecs/models/object-model.js.map +1 -1
- package/packages/common/src/codecs/models/object-model.mjs +3 -1
- package/packages/common/src/codecs/models/object-model.mjs.map +1 -1
- package/packages/common/src/codecs/models/primitive-model.js +1 -0
- package/packages/common/src/codecs/models/primitive-model.js.map +1 -1
- package/packages/common/src/codecs/models/primitive-model.mjs +1 -0
- package/packages/common/src/codecs/models/primitive-model.mjs.map +1 -1
- package/packages/common/src/codecs/primitives/address.js +0 -1
- package/packages/common/src/codecs/primitives/address.js.map +1 -1
- package/packages/common/src/codecs/primitives/address.mjs.map +1 -1
- package/packages/common/src/codecs/primitives/bigint.js.map +1 -1
- package/packages/common/src/codecs/primitives/bigint.mjs.map +1 -1
- package/packages/common/src/codecs/primitives/boolean.js.map +1 -1
- package/packages/common/src/codecs/primitives/boolean.mjs.map +1 -1
- package/packages/common/src/codecs/primitives/bytes-base64.js +0 -1
- package/packages/common/src/codecs/primitives/bytes-base64.js.map +1 -1
- package/packages/common/src/codecs/primitives/bytes-base64.mjs.map +1 -1
- package/packages/common/src/codecs/primitives/bytes.js +0 -1
- package/packages/common/src/codecs/primitives/bytes.js.map +1 -1
- package/packages/common/src/codecs/primitives/bytes.mjs.map +1 -1
- package/packages/common/src/codecs/primitives/fixed-bytes.js +1 -1
- package/packages/common/src/codecs/primitives/fixed-bytes.js.map +1 -1
- package/packages/common/src/codecs/primitives/fixed-bytes.mjs +1 -0
- package/packages/common/src/codecs/primitives/fixed-bytes.mjs.map +1 -1
- package/packages/common/src/codecs/primitives/number.js.map +1 -1
- package/packages/common/src/codecs/primitives/number.mjs.map +1 -1
- package/packages/common/src/codecs/primitives/string.js.map +1 -1
- package/packages/common/src/codecs/primitives/string.mjs.map +1 -1
- package/packages/common/src/codecs/primitives/unknown.js.map +1 -1
- package/packages/common/src/codecs/primitives/unknown.mjs.map +1 -1
- package/packages/common/src/codecs/wire.js +0 -1
- 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.js.map +1 -1
- package/packages/common/src/constants.mjs.map +1 -1
- package/packages/common/src/encoding.js +0 -1
- package/packages/common/src/encoding.js.map +1 -1
- package/packages/common/src/encoding.mjs.map +1 -1
- package/packages/common/src/json.js.map +1 -1
- package/packages/common/src/json.mjs.map +1 -1
- package/packages/common/src/msgpack.js +0 -1
- package/packages/common/src/msgpack.js.map +1 -1
- package/packages/common/src/msgpack.mjs.map +1 -1
- package/packages/common/src/sourcemap.js.map +1 -1
- package/packages/common/src/sourcemap.mjs.map +1 -1
- package/packages/{algo25/src → crypto/src/algo25}/english.js +1 -1
- package/packages/crypto/src/algo25/english.js.map +1 -0
- package/packages/{algo25/src → crypto/src/algo25}/english.mjs +1 -1
- package/packages/crypto/src/algo25/english.mjs.map +1 -0
- package/packages/{algo25/src → crypto/src/algo25}/index.d.ts +1 -1
- package/packages/{algo25/src → crypto/src/algo25}/index.js +2 -2
- package/packages/crypto/src/algo25/index.js.map +1 -0
- package/packages/{algo25/src → crypto/src/algo25}/index.mjs +2 -2
- package/packages/crypto/src/algo25/index.mjs.map +1 -0
- package/packages/crypto/src/ed25519.d.ts +13 -3
- package/packages/crypto/src/ed25519.js.map +1 -1
- package/packages/crypto/src/ed25519.mjs.map +1 -1
- package/packages/crypto/src/hash.js +0 -1
- package/packages/crypto/src/hash.js.map +1 -1
- package/packages/crypto/src/hash.mjs.map +1 -1
- package/packages/crypto/src/hd.d.ts +17 -4
- package/packages/crypto/src/hd.js +13 -1
- package/packages/crypto/src/hd.js.map +1 -1
- package/packages/crypto/src/hd.mjs +11 -1
- package/packages/crypto/src/hd.mjs.map +1 -1
- package/packages/crypto/src/index.d.ts +12 -6
- package/packages/crypto/src/index.js +27 -18
- package/packages/crypto/src/index.js.map +1 -1
- package/packages/crypto/src/index.mjs +27 -18
- package/packages/crypto/src/index.mjs.map +1 -1
- package/packages/indexer_client/src/apis/api-service.js +1 -0
- package/packages/indexer_client/src/apis/api-service.js.map +1 -1
- package/packages/indexer_client/src/apis/api-service.mjs +1 -0
- package/packages/indexer_client/src/apis/api-service.mjs.map +1 -1
- package/packages/indexer_client/src/client.js.map +1 -1
- package/packages/indexer_client/src/client.mjs.map +1 -1
- package/packages/indexer_client/src/core/api-error.js.map +1 -1
- package/packages/indexer_client/src/core/api-error.mjs.map +1 -1
- package/packages/indexer_client/src/core/base-http-request.js +1 -0
- package/packages/indexer_client/src/core/base-http-request.js.map +1 -1
- package/packages/indexer_client/src/core/base-http-request.mjs +1 -0
- 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.map +1 -1
- 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.map +1 -1
- 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.js.map +1 -1
- 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.map +1 -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.js.map +1 -1
- 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.js.map +1 -1
- package/packages/indexer_client/src/models/eval-delta-key-value.mjs.map +1 -1
- package/packages/indexer_client/src/models/eval-delta.js.map +1 -1
- 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.map +1 -1
- 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.js.map +1 -1
- 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.map +1 -1
- package/packages/indexer_client/src/models/state-proof-verifier.mjs.map +1 -1
- package/packages/indexer_client/src/models/state-schema.js.map +1 -1
- 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.js.map +1 -1
- 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.map +1 -1
- package/packages/indexer_client/src/models/transaction-heartbeat.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction-keyreg.js.map +1 -1
- 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.map +1 -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.map +1 -1
- 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.js.map +1 -1
- package/packages/indexer_client/src/models/transaction-state-proof.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction.js.map +1 -1
- 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.js +4 -2
- package/packages/kmd_client/src/apis/api-service.js.map +1 -1
- package/packages/kmd_client/src/apis/api-service.mjs +4 -2
- package/packages/kmd_client/src/apis/api-service.mjs.map +1 -1
- package/packages/kmd_client/src/client.js.map +1 -1
- package/packages/kmd_client/src/client.mjs.map +1 -1
- package/packages/kmd_client/src/core/api-error.js.map +1 -1
- package/packages/kmd_client/src/core/api-error.mjs.map +1 -1
- package/packages/kmd_client/src/core/base-http-request.js +1 -0
- package/packages/kmd_client/src/core/base-http-request.js.map +1 -1
- package/packages/kmd_client/src/core/base-http-request.mjs +1 -0
- 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.map +1 -1
- 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 +0 -1
- package/packages/testing/src/globalSetup.js.map +1 -1
- package/packages/testing/src/globalSetup.mjs.map +1 -1
- package/packages/testing/src/mockServer.js.map +1 -1
- package/packages/testing/src/mockServer.mjs.map +1 -1
- package/packages/transact/src/logicsig.js +2 -1
- package/packages/transact/src/logicsig.js.map +1 -1
- package/packages/transact/src/logicsig.mjs +2 -1
- package/packages/transact/src/logicsig.mjs.map +1 -1
- package/packages/transact/src/multisig.js +0 -2
- package/packages/transact/src/multisig.js.map +1 -1
- package/packages/transact/src/multisig.mjs +0 -2
- package/packages/transact/src/multisig.mjs.map +1 -1
- package/packages/transact/src/signer.js.map +1 -1
- package/packages/transact/src/signer.mjs.map +1 -1
- package/packages/transact/src/transactions/app-call.js +22 -23
- package/packages/transact/src/transactions/app-call.js.map +1 -1
- package/packages/transact/src/transactions/app-call.mjs +22 -23
- package/packages/transact/src/transactions/app-call.mjs.map +1 -1
- package/packages/transact/src/transactions/asset-config.js +12 -13
- package/packages/transact/src/transactions/asset-config.js.map +1 -1
- package/packages/transact/src/transactions/asset-config.mjs +12 -13
- package/packages/transact/src/transactions/asset-config.mjs.map +1 -1
- package/packages/transact/src/transactions/asset-freeze.js +1 -2
- package/packages/transact/src/transactions/asset-freeze.js.map +1 -1
- package/packages/transact/src/transactions/asset-freeze.mjs +1 -2
- package/packages/transact/src/transactions/asset-freeze.mjs.map +1 -1
- package/packages/transact/src/transactions/asset-transfer.js +1 -2
- package/packages/transact/src/transactions/asset-transfer.js.map +1 -1
- package/packages/transact/src/transactions/asset-transfer.mjs +1 -2
- package/packages/transact/src/transactions/asset-transfer.mjs.map +1 -1
- package/packages/transact/src/transactions/common.js +5 -14
- package/packages/transact/src/transactions/common.js.map +1 -1
- package/packages/transact/src/transactions/common.mjs +6 -14
- package/packages/transact/src/transactions/common.mjs.map +1 -1
- package/packages/transact/src/transactions/key-registration.js +8 -9
- package/packages/transact/src/transactions/key-registration.js.map +1 -1
- package/packages/transact/src/transactions/key-registration.mjs +8 -9
- package/packages/transact/src/transactions/key-registration.mjs.map +1 -1
- package/packages/transact/src/transactions/reference-types-meta.js.map +1 -1
- package/packages/transact/src/transactions/reference-types-meta.mjs.map +1 -1
- package/packages/transact/src/transactions/signed-transaction-meta.js.map +1 -1
- package/packages/transact/src/transactions/signed-transaction-meta.mjs.map +1 -1
- package/packages/transact/src/transactions/signed-transaction.js.map +1 -1
- package/packages/transact/src/transactions/signed-transaction.mjs.map +1 -1
- package/packages/transact/src/transactions/transaction-meta.js +27 -26
- package/packages/transact/src/transactions/transaction-meta.js.map +1 -1
- package/packages/transact/src/transactions/transaction-meta.mjs +27 -26
- package/packages/transact/src/transactions/transaction-meta.mjs.map +1 -1
- package/packages/transact/src/transactions/transaction-type.js.map +1 -1
- package/packages/transact/src/transactions/transaction-type.mjs.map +1 -1
- package/packages/transact/src/transactions/transaction.js +2 -2
- package/packages/transact/src/transactions/transaction.js.map +1 -1
- package/packages/transact/src/transactions/transaction.mjs +2 -2
- package/packages/transact/src/transactions/transaction.mjs.map +1 -1
- package/testing/account.js.map +1 -1
- package/testing/account.mjs.map +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.js.map +1 -1
- package/testing/fixtures/algorand-fixture.mjs.map +1 -1
- package/testing/indexer.js.map +1 -1
- package/testing/indexer.mjs.map +1 -1
- package/testing/test-logger.js.map +1 -1
- package/testing/test-logger.mjs.map +1 -1
- package/testing/transaction-logger.js.map +1 -1
- package/testing/transaction-logger.mjs.map +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.js.map +1 -1
- package/transaction/transaction.mjs.map +1 -1
- package/transactions/app-call.js +33 -43
- package/transactions/app-call.js.map +1 -1
- package/transactions/app-call.mjs +33 -43
- package/transactions/app-call.mjs.map +1 -1
- package/transactions/asset-config.js +5 -5
- package/transactions/asset-config.js.map +1 -1
- package/transactions/asset-config.mjs +5 -5
- package/transactions/asset-config.mjs.map +1 -1
- package/transactions/asset-transfer.js +4 -4
- package/transactions/asset-transfer.js.map +1 -1
- package/transactions/asset-transfer.mjs +4 -4
- package/transactions/asset-transfer.mjs.map +1 -1
- package/transactions/common.js.map +1 -1
- package/transactions/common.mjs.map +1 -1
- package/transactions/fee-coverage.js +7 -10
- package/transactions/fee-coverage.js.map +1 -1
- package/transactions/fee-coverage.mjs +7 -10
- package/transactions/fee-coverage.mjs.map +1 -1
- package/transactions/key-registration.js +3 -3
- package/transactions/key-registration.js.map +1 -1
- package/transactions/key-registration.mjs +3 -3
- package/transactions/key-registration.mjs.map +1 -1
- package/transactions/method-call.js +8 -8
- package/transactions/method-call.js.map +1 -1
- package/transactions/method-call.mjs +8 -8
- package/transactions/method-call.mjs.map +1 -1
- package/transactions/payment.js +2 -2
- package/transactions/payment.js.map +1 -1
- package/transactions/payment.mjs +2 -2
- package/transactions/payment.mjs.map +1 -1
- package/types/account.js.map +1 -1
- package/types/algorand-client-transaction-creator.js.map +1 -1
- package/types/algorand-client-transaction-sender.js.map +1 -1
- package/types/algorand-client.js.map +1 -1
- package/types/amount.js.map +1 -1
- package/types/app-client.js.map +1 -1
- package/types/app-deployer.js.map +1 -1
- package/types/app-factory.js.map +1 -1
- package/types/app-manager.js.map +1 -1
- package/types/app-spec.js.map +1 -1
- package/types/asset-manager.js.map +1 -1
- package/types/async-event-emitter.js.map +1 -1
- package/types/client-manager.js.map +1 -1
- package/types/composer.js.map +1 -1
- package/types/config.js.map +1 -1
- package/types/dispenser-client.js.map +1 -1
- package/types/kmd-account-manager.js.map +1 -1
- package/types/lifecycle-events.js.map +1 -1
- package/types/logic-error.js.map +1 -1
- package/types/network-client.js.map +1 -1
- package/updatable-config.js.map +1 -1
- package/updatable-config.mjs.map +1 -1
- package/util.js.map +1 -1
- package/util.mjs.map +1 -1
- package/packages/algo25/src/english.js.map +0 -1
- package/packages/algo25/src/english.mjs.map +0 -1
- package/packages/algo25/src/index.js.map +0 -1
- package/packages/algo25/src/index.mjs.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "../packages/common/src/constants.mjs";
|
|
2
2
|
import { getAddress, getApplicationAddress } from "../packages/common/src/address.mjs";
|
|
3
|
-
import
|
|
4
|
-
import
|
|
3
|
+
import "../packages/transact/src/transactions/app-call.mjs";
|
|
4
|
+
import "../packages/transact/src/transactions/transaction-type.mjs";
|
|
5
5
|
import { Transaction } from "../packages/transact/src/transactions/transaction.mjs";
|
|
6
6
|
import { calculateExtraProgramPages } from "../util.mjs";
|
|
7
7
|
import { AppManager } from "../app-manager.mjs";
|
|
@@ -23,10 +23,10 @@ const buildAppCreate = async (params, appManager, suggestedParams, defaultValidi
|
|
|
23
23
|
const hasAccessReferences = params.accessReferences && params.accessReferences.length > 0;
|
|
24
24
|
return new Transaction({
|
|
25
25
|
...commonData,
|
|
26
|
-
type:
|
|
26
|
+
type: "appl",
|
|
27
27
|
appCall: {
|
|
28
28
|
appId: 0n,
|
|
29
|
-
onComplete: params.onComplete ??
|
|
29
|
+
onComplete: params.onComplete ?? 0,
|
|
30
30
|
approvalProgram,
|
|
31
31
|
clearStateProgram,
|
|
32
32
|
globalStateSchema,
|
|
@@ -50,10 +50,10 @@ const buildAppUpdate = async (params, appManager, suggestedParams, defaultValidi
|
|
|
50
50
|
const hasAccessReferences = params.accessReferences && params.accessReferences.length > 0;
|
|
51
51
|
return new Transaction({
|
|
52
52
|
...commonData,
|
|
53
|
-
type:
|
|
53
|
+
type: "appl",
|
|
54
54
|
appCall: {
|
|
55
55
|
appId: params.appId,
|
|
56
|
-
onComplete:
|
|
56
|
+
onComplete: 4,
|
|
57
57
|
approvalProgram,
|
|
58
58
|
clearStateProgram,
|
|
59
59
|
args: params.args,
|
|
@@ -72,10 +72,10 @@ const buildAppCall = (params, suggestedParams, defaultValidityWindow) => {
|
|
|
72
72
|
const hasAccessReferences = params.accessReferences && params.accessReferences.length > 0;
|
|
73
73
|
return new Transaction({
|
|
74
74
|
...commonData,
|
|
75
|
-
type:
|
|
75
|
+
type: "appl",
|
|
76
76
|
appCall: {
|
|
77
77
|
appId: params.appId,
|
|
78
|
-
onComplete: params.onComplete ??
|
|
78
|
+
onComplete: params.onComplete ?? 0,
|
|
79
79
|
args: params.args,
|
|
80
80
|
...hasAccessReferences ? { accessReferences: params.accessReferences } : {
|
|
81
81
|
accountReferences: params.accountReferences?.map((a) => getAddress(a)),
|
|
@@ -91,7 +91,7 @@ const buildAppCall = (params, suggestedParams, defaultValidityWindow) => {
|
|
|
91
91
|
* Populate transaction-level resources for app call transactions
|
|
92
92
|
*/
|
|
93
93
|
function populateTransactionResources(transaction, resourcesAccessed, groupIndex) {
|
|
94
|
-
if (transaction.type !==
|
|
94
|
+
if (transaction.type !== "appl" || transaction.appCall === void 0) return;
|
|
95
95
|
if (resourcesAccessed.boxes || resourcesAccessed.extraBoxRefs) throw new Error("Unexpected boxes at the transaction level");
|
|
96
96
|
if (resourcesAccessed.appLocals) throw new Error("Unexpected app locals at the transaction level");
|
|
97
97
|
if (resourcesAccessed.assetHoldings) throw new Error("Unexpected asset holdings at the transaction level");
|
|
@@ -119,16 +119,6 @@ function populateTransactionResources(transaction, resourcesAccessed, groupIndex
|
|
|
119
119
|
}
|
|
120
120
|
if (accountsCount + assetsCount + appsCount + boxesCount > 8) throw new Error(`Resource reference limit of 8 exceeded in transaction ${groupIndex}`);
|
|
121
121
|
}
|
|
122
|
-
var GroupResourceType = /* @__PURE__ */ function(GroupResourceType) {
|
|
123
|
-
GroupResourceType[GroupResourceType["Account"] = 0] = "Account";
|
|
124
|
-
GroupResourceType[GroupResourceType["App"] = 1] = "App";
|
|
125
|
-
GroupResourceType[GroupResourceType["Asset"] = 2] = "Asset";
|
|
126
|
-
GroupResourceType[GroupResourceType["Box"] = 3] = "Box";
|
|
127
|
-
GroupResourceType[GroupResourceType["ExtraBoxRef"] = 4] = "ExtraBoxRef";
|
|
128
|
-
GroupResourceType[GroupResourceType["AssetHolding"] = 5] = "AssetHolding";
|
|
129
|
-
GroupResourceType[GroupResourceType["AppLocal"] = 6] = "AppLocal";
|
|
130
|
-
return GroupResourceType;
|
|
131
|
-
}(GroupResourceType || {});
|
|
132
122
|
/**
|
|
133
123
|
* Populate group-level resources for app call transactions
|
|
134
124
|
*/
|
|
@@ -139,7 +129,7 @@ function populateGroupResources(transactions, groupResources) {
|
|
|
139
129
|
const remainingBoxes = [...groupResources.boxes ?? []];
|
|
140
130
|
if (groupResources.appLocals) groupResources.appLocals.forEach((appLocal) => {
|
|
141
131
|
populateGroupResource(transactions, {
|
|
142
|
-
type:
|
|
132
|
+
type: 6,
|
|
143
133
|
data: appLocal
|
|
144
134
|
});
|
|
145
135
|
remainingAccounts = remainingAccounts.filter((acc) => acc !== appLocal.address);
|
|
@@ -147,7 +137,7 @@ function populateGroupResources(transactions, groupResources) {
|
|
|
147
137
|
});
|
|
148
138
|
if (groupResources.assetHoldings) groupResources.assetHoldings.forEach((assetHolding) => {
|
|
149
139
|
populateGroupResource(transactions, {
|
|
150
|
-
type:
|
|
140
|
+
type: 5,
|
|
151
141
|
data: assetHolding
|
|
152
142
|
});
|
|
153
143
|
remainingAccounts = remainingAccounts.filter((acc) => acc !== assetHolding.address);
|
|
@@ -155,13 +145,13 @@ function populateGroupResources(transactions, groupResources) {
|
|
|
155
145
|
});
|
|
156
146
|
remainingAccounts.forEach((account) => {
|
|
157
147
|
populateGroupResource(transactions, {
|
|
158
|
-
type:
|
|
148
|
+
type: 0,
|
|
159
149
|
data: account
|
|
160
150
|
});
|
|
161
151
|
});
|
|
162
152
|
remainingBoxes.forEach((boxRef) => {
|
|
163
153
|
populateGroupResource(transactions, {
|
|
164
|
-
type:
|
|
154
|
+
type: 3,
|
|
165
155
|
data: {
|
|
166
156
|
appId: boxRef.appId,
|
|
167
157
|
name: boxRef.name
|
|
@@ -171,23 +161,23 @@ function populateGroupResources(transactions, groupResources) {
|
|
|
171
161
|
});
|
|
172
162
|
remainingAssets.forEach((asset) => {
|
|
173
163
|
populateGroupResource(transactions, {
|
|
174
|
-
type:
|
|
164
|
+
type: 2,
|
|
175
165
|
data: asset
|
|
176
166
|
});
|
|
177
167
|
});
|
|
178
168
|
remainingApps.forEach((app) => {
|
|
179
169
|
populateGroupResource(transactions, {
|
|
180
|
-
type:
|
|
170
|
+
type: 1,
|
|
181
171
|
data: app
|
|
182
172
|
});
|
|
183
173
|
});
|
|
184
|
-
if (groupResources.extraBoxRefs) for (let i = 0; i < groupResources.extraBoxRefs; i++) populateGroupResource(transactions, { type:
|
|
174
|
+
if (groupResources.extraBoxRefs) for (let i = 0; i < groupResources.extraBoxRefs; i++) populateGroupResource(transactions, { type: 4 });
|
|
185
175
|
}
|
|
186
176
|
/**
|
|
187
177
|
* Helper function to check if an app call transaction is below resource limit
|
|
188
178
|
*/
|
|
189
179
|
function isAppCallBelowResourceLimit(txn) {
|
|
190
|
-
if (txn.type !==
|
|
180
|
+
if (txn.type !== "appl") return false;
|
|
191
181
|
if (txn.appCall?.accessReferences?.length) return false;
|
|
192
182
|
const accountsCount = txn.appCall?.accountReferences?.length || 0;
|
|
193
183
|
const assetsCount = txn.appCall?.assetReferences?.length || 0;
|
|
@@ -199,7 +189,7 @@ function isAppCallBelowResourceLimit(txn) {
|
|
|
199
189
|
* Helper function to populate a specific resource into a transaction group
|
|
200
190
|
*/
|
|
201
191
|
function populateGroupResource(transactions, resource) {
|
|
202
|
-
if (resource.type ===
|
|
192
|
+
if (resource.type === 5 || resource.type === 6) {
|
|
203
193
|
const address = resource.data.address;
|
|
204
194
|
const groupIndex1 = transactions.findIndex((txn) => {
|
|
205
195
|
if (!isAppCallBelowResourceLimit(txn)) return false;
|
|
@@ -213,7 +203,7 @@ function populateGroupResource(transactions, resource) {
|
|
|
213
203
|
});
|
|
214
204
|
if (groupIndex1 !== -1) {
|
|
215
205
|
const appCall = transactions[groupIndex1].appCall;
|
|
216
|
-
if (resource.type ===
|
|
206
|
+
if (resource.type === 5) {
|
|
217
207
|
appCall.assetReferences = appCall.assetReferences ?? [];
|
|
218
208
|
if (!appCall.assetReferences.includes(resource.data.assetId)) appCall.assetReferences.push(resource.data.assetId);
|
|
219
209
|
} else {
|
|
@@ -226,7 +216,7 @@ function populateGroupResource(transactions, resource) {
|
|
|
226
216
|
if (!isAppCallBelowResourceLimit(txn)) return false;
|
|
227
217
|
const appCall = txn.appCall;
|
|
228
218
|
if ((appCall.accountReferences?.length ?? 0) >= 8) return false;
|
|
229
|
-
if (resource.type ===
|
|
219
|
+
if (resource.type === 5) return appCall.assetReferences?.includes(resource.data.assetId) || false;
|
|
230
220
|
else return appCall.appReferences?.includes(resource.data.appId) || appCall.appId === resource.data.appId;
|
|
231
221
|
});
|
|
232
222
|
if (groupIndex2 !== -1) {
|
|
@@ -236,7 +226,7 @@ function populateGroupResource(transactions, resource) {
|
|
|
236
226
|
return;
|
|
237
227
|
}
|
|
238
228
|
}
|
|
239
|
-
if (resource.type ===
|
|
229
|
+
if (resource.type === 3) {
|
|
240
230
|
const groupIndex = transactions.findIndex((txn) => {
|
|
241
231
|
if (!isAppCallBelowResourceLimit(txn)) return false;
|
|
242
232
|
const appCall = txn.appCall;
|
|
@@ -253,7 +243,7 @@ function populateGroupResource(transactions, resource) {
|
|
|
253
243
|
}
|
|
254
244
|
}
|
|
255
245
|
const groupIndex = transactions.findIndex((txn) => {
|
|
256
|
-
if (txn.type !==
|
|
246
|
+
if (txn.type !== "appl") return false;
|
|
257
247
|
if (txn.appCall?.accessReferences?.length) return false;
|
|
258
248
|
const appCall = txn.appCall;
|
|
259
249
|
const accountsCount = appCall.accountReferences?.length ?? 0;
|
|
@@ -261,10 +251,10 @@ function populateGroupResource(transactions, resource) {
|
|
|
261
251
|
const appsCount = appCall.appReferences?.length ?? 0;
|
|
262
252
|
const boxesCount = appCall.boxReferences?.length ?? 0;
|
|
263
253
|
switch (resource.type) {
|
|
264
|
-
case
|
|
265
|
-
case
|
|
266
|
-
case
|
|
267
|
-
case
|
|
254
|
+
case 0: return accountsCount + assetsCount + appsCount + boxesCount < 8;
|
|
255
|
+
case 5:
|
|
256
|
+
case 6: return accountsCount + assetsCount + appsCount + boxesCount < 7;
|
|
257
|
+
case 3: if (resource.data.appId !== 0n) return accountsCount + assetsCount + appsCount + boxesCount < 7;
|
|
268
258
|
else return accountsCount + assetsCount + appsCount + boxesCount < 8;
|
|
269
259
|
default: return accountsCount + assetsCount + appsCount + boxesCount < 8;
|
|
270
260
|
}
|
|
@@ -272,17 +262,17 @@ function populateGroupResource(transactions, resource) {
|
|
|
272
262
|
if (groupIndex === -1) throw new Error("No more transactions below reference limit. Add another app call to the group.");
|
|
273
263
|
const appCall = transactions[groupIndex].appCall;
|
|
274
264
|
switch (resource.type) {
|
|
275
|
-
case
|
|
265
|
+
case 0: {
|
|
276
266
|
appCall.accountReferences = appCall.accountReferences ?? [];
|
|
277
267
|
const address = resource.data;
|
|
278
268
|
if (!appCall.accountReferences.some((a) => a.equals(address))) appCall.accountReferences.push(address);
|
|
279
269
|
break;
|
|
280
270
|
}
|
|
281
|
-
case
|
|
271
|
+
case 1:
|
|
282
272
|
appCall.appReferences = appCall.appReferences ?? [];
|
|
283
273
|
if (!appCall.appReferences.includes(resource.data)) appCall.appReferences.push(resource.data);
|
|
284
274
|
break;
|
|
285
|
-
case
|
|
275
|
+
case 3:
|
|
286
276
|
appCall.boxReferences = appCall.boxReferences ?? [];
|
|
287
277
|
if (!appCall.boxReferences.some((b) => b.appId === resource.data.appId && b.name.length === resource.data.name.length && b.name.every((byte, i) => byte === resource.data.name[i]))) appCall.boxReferences.push({
|
|
288
278
|
appId: resource.data.appId,
|
|
@@ -293,14 +283,14 @@ function populateGroupResource(transactions, resource) {
|
|
|
293
283
|
if (!appCall.appReferences.includes(resource.data.appId)) appCall.appReferences.push(resource.data.appId);
|
|
294
284
|
}
|
|
295
285
|
break;
|
|
296
|
-
case
|
|
286
|
+
case 4:
|
|
297
287
|
appCall.boxReferences = appCall.boxReferences ?? [];
|
|
298
288
|
appCall.boxReferences.push({
|
|
299
289
|
appId: 0n,
|
|
300
290
|
name: new Uint8Array(0)
|
|
301
291
|
});
|
|
302
292
|
break;
|
|
303
|
-
case
|
|
293
|
+
case 5: {
|
|
304
294
|
appCall.assetReferences = appCall.assetReferences ?? [];
|
|
305
295
|
if (!appCall.assetReferences.includes(resource.data.assetId)) appCall.assetReferences.push(resource.data.assetId);
|
|
306
296
|
const address = resource.data.address;
|
|
@@ -308,7 +298,7 @@ function populateGroupResource(transactions, resource) {
|
|
|
308
298
|
if (!appCall.accountReferences.some((a) => a.equals(address))) appCall.accountReferences.push(address);
|
|
309
299
|
break;
|
|
310
300
|
}
|
|
311
|
-
case
|
|
301
|
+
case 6: {
|
|
312
302
|
appCall.appReferences = appCall.appReferences ?? [];
|
|
313
303
|
if (!appCall.appReferences.includes(resource.data.appId)) appCall.appReferences.push(resource.data.appId);
|
|
314
304
|
const address = resource.data.address;
|
|
@@ -316,7 +306,7 @@ function populateGroupResource(transactions, resource) {
|
|
|
316
306
|
if (!appCall.accountReferences.some((a) => a.equals(address))) appCall.accountReferences.push(address);
|
|
317
307
|
break;
|
|
318
308
|
}
|
|
319
|
-
case
|
|
309
|
+
case 2:
|
|
320
310
|
appCall.assetReferences = appCall.assetReferences ?? [];
|
|
321
311
|
if (!appCall.assetReferences.includes(resource.data)) appCall.assetReferences.push(resource.data);
|
|
322
312
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-call.mjs","names":[],"sources":["../../src/transactions/app-call.ts"],"sourcesContent":["import { SimulateUnnamedResourcesAccessed, SuggestedParams } from '@algorandfoundation/algokit-algod-client'\nimport {\n Address,\n Expand,\n MAX_ACCOUNT_REFERENCES,\n MAX_OVERALL_REFERENCES,\n ReadableAddress,\n getAddress,\n getApplicationAddress,\n} from '@algorandfoundation/algokit-common'\nimport {\n HoldingReference,\n LocalsReference,\n OnApplicationComplete,\n ResourceReference,\n BoxReference as TransactBoxReference,\n Transaction,\n TransactionType,\n} from '@algorandfoundation/algokit-transact'\nimport { AppManager, BoxIdentifier, BoxReference as UtilsBoxReference } from '../app-manager'\nimport { calculateExtraProgramPages } from '../util'\nimport { CommonTransactionParams, buildTransactionCommonData } from './common'\n\n/** Common parameters for defining an application call transaction. */\nexport type CommonAppCallParams = CommonTransactionParams & {\n /** ID of the application; 0 if the application is being created. */\n appId: bigint\n /** The [on-complete](https://dev.algorand.co/concepts/smart-contracts/avm#oncomplete) action of the call; defaults to no-op. */\n onComplete?: OnApplicationComplete\n /** Any [arguments to pass to the smart contract call](/concepts/smart-contracts/languages/teal/#argument-passing). */\n args?: Uint8Array[]\n /** Any account addresses to add to the [accounts array](https://dev.algorand.co/concepts/smart-contracts/resource-usage#what-are-reference-arrays). */\n accountReferences?: ReadableAddress[]\n /** The ID of any apps to load to the [foreign apps array](https://dev.algorand.co/concepts/smart-contracts/resource-usage#what-are-reference-arrays). */\n appReferences?: bigint[]\n /** The ID of any assets to load to the [foreign assets array](https://dev.algorand.co/concepts/smart-contracts/resource-usage#what-are-reference-arrays). */\n assetReferences?: bigint[]\n /** Any boxes to load to the [boxes array](https://dev.algorand.co/concepts/smart-contracts/resource-usage#what-are-reference-arrays).\n *\n * Either the name identifier (which will be set against app ID of `0` i.e.\n * the current app), or a box identifier with the name identifier and app ID.\n */\n boxReferences?: (UtilsBoxReference | BoxIdentifier)[]\n /** Access references unifies `accountReferences`, `appReferences`, `assetReferences`, and `boxReferences` under a single list. If non-empty, these other reference lists must be empty. If access is empty, those other reference lists may be non-empty. */\n accessReferences?: ResourceReference[]\n /** If set, the transaction will be rejected when the app's version is greater than or equal to this value. This can be used to prevent calling an app after it has been updated. Set to 0 or leave undefined to skip the version check. */\n rejectVersion?: number\n}\n\n/** Parameters to define an app create transaction */\nexport type AppCreateParams = Expand<\n Omit<CommonAppCallParams, 'appId'> & {\n appId?: 0\n onComplete?: Exclude<OnApplicationComplete, OnApplicationComplete.ClearState>\n /** The program to execute for all OnCompletes other than ClearState as raw teal that will be compiled (string) or compiled teal (encoded as a byte array (Uint8Array)). */\n approvalProgram: string | Uint8Array\n /** The program to execute for ClearState OnComplete as raw teal that will be compiled (string) or compiled teal (encoded as a byte array (Uint8Array)). */\n clearStateProgram: string | Uint8Array\n /** The state schema for the app. This is immutable once the app is created. */\n schema?: {\n /** The number of integers saved in global state. */\n globalInts: number\n /** The number of byte slices saved in global state. */\n globalByteSlices: number\n /** The number of integers saved in local state. */\n localInts: number\n /** The number of byte slices saved in local state. */\n localByteSlices: number\n }\n /** Number of extra pages required for the programs.\n * Defaults to the number needed for the programs in this call if not specified.\n * This is immutable once the app is created. */\n extraProgramPages?: number\n }\n>\n\n/** Parameters to define an app update transaction */\nexport type AppUpdateParams = Expand<\n CommonAppCallParams & {\n onComplete?: OnApplicationComplete.UpdateApplication\n /** The program to execute for all OnCompletes other than ClearState as raw teal (string) or compiled teal (base 64 encoded as a byte array (Uint8Array)) */\n approvalProgram: string | Uint8Array\n /** The program to execute for ClearState OnComplete as raw teal (string) or compiled teal (base 64 encoded as a byte array (Uint8Array)) */\n clearStateProgram: string | Uint8Array\n }\n>\n\n/** Parameters to define an application call transaction. */\nexport type AppCallParams = CommonAppCallParams & { onComplete?: Exclude<OnApplicationComplete, OnApplicationComplete.UpdateApplication> }\n\n/** Common parameters to define an ABI method call transaction. */\nexport type AppMethodCallParams = CommonAppCallParams & {\n onComplete?: Exclude<OnApplicationComplete, OnApplicationComplete.UpdateApplication | OnApplicationComplete.ClearState>\n}\n\n/** Parameters to define an application delete call transaction. */\nexport type AppDeleteParams = CommonAppCallParams & { onComplete?: OnApplicationComplete.DeleteApplication }\n\nexport const buildAppCreate = async (\n params: AppCreateParams,\n appManager: AppManager,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Promise<Transaction> => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n const approvalProgram =\n typeof params.approvalProgram === 'string'\n ? (await appManager.compileTeal(params.approvalProgram)).compiledBase64ToBytes\n : params.approvalProgram\n const clearStateProgram =\n typeof params.clearStateProgram === 'string'\n ? (await appManager.compileTeal(params.clearStateProgram)).compiledBase64ToBytes\n : params.clearStateProgram\n const globalStateSchema =\n params.schema?.globalByteSlices !== undefined || params.schema?.globalInts !== undefined\n ? { numByteSlices: params.schema?.globalByteSlices ?? 0, numUints: params.schema?.globalInts ?? 0 }\n : undefined\n const localStateSchema =\n params.schema?.localByteSlices !== undefined || params.schema?.localInts !== undefined\n ? { numByteSlices: params.schema?.localByteSlices ?? 0, numUints: params.schema?.localInts ?? 0 }\n : undefined\n const extraProgramPages =\n params.extraProgramPages !== undefined ? params.extraProgramPages : calculateExtraProgramPages(approvalProgram!, clearStateProgram!)\n\n // If accessReferences is provided, we should not pass legacy foreign arrays\n const hasAccessReferences = params.accessReferences && params.accessReferences.length > 0\n\n return new Transaction({\n ...commonData,\n type: TransactionType.AppCall,\n appCall: {\n appId: 0n, // App creation always uses ID 0\n onComplete: params.onComplete ?? OnApplicationComplete.NoOp,\n approvalProgram: approvalProgram,\n clearStateProgram: clearStateProgram,\n globalStateSchema: globalStateSchema,\n localStateSchema: localStateSchema,\n extraProgramPages: extraProgramPages,\n args: params.args,\n ...(hasAccessReferences\n ? { accessReferences: params.accessReferences }\n : {\n accountReferences: params.accountReferences?.map((a) => getAddress(a)),\n appReferences: params.appReferences,\n assetReferences: params.assetReferences,\n boxReferences: params.boxReferences?.map(AppManager.getBoxReference),\n }),\n rejectVersion: params.rejectVersion,\n },\n })\n}\n\nexport const buildAppUpdate = async (\n params: AppUpdateParams,\n appManager: AppManager,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Promise<Transaction> => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n const approvalProgram =\n typeof params.approvalProgram === 'string'\n ? (await appManager.compileTeal(params.approvalProgram)).compiledBase64ToBytes\n : params.approvalProgram\n const clearStateProgram =\n typeof params.clearStateProgram === 'string'\n ? (await appManager.compileTeal(params.clearStateProgram)).compiledBase64ToBytes\n : params.clearStateProgram\n\n // If accessReferences is provided, we should not pass legacy foreign arrays\n const hasAccessReferences = params.accessReferences && params.accessReferences.length > 0\n\n return new Transaction({\n ...commonData,\n type: TransactionType.AppCall,\n appCall: {\n appId: params.appId,\n onComplete: OnApplicationComplete.UpdateApplication,\n approvalProgram: approvalProgram,\n clearStateProgram: clearStateProgram,\n args: params.args,\n ...(hasAccessReferences\n ? { accessReferences: params.accessReferences }\n : {\n accountReferences: params.accountReferences?.map((a) => getAddress(a)),\n appReferences: params.appReferences,\n assetReferences: params.assetReferences,\n boxReferences: params.boxReferences?.map(AppManager.getBoxReference),\n }),\n rejectVersion: params.rejectVersion,\n },\n })\n}\n\nexport const buildAppCall = (\n params: AppCallParams | AppDeleteParams,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Transaction => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n // If accessReferences is provided, we should not pass legacy foreign arrays\n const hasAccessReferences = params.accessReferences && params.accessReferences.length > 0\n\n return new Transaction({\n ...commonData,\n type: TransactionType.AppCall,\n appCall: {\n appId: params.appId,\n onComplete: params.onComplete ?? OnApplicationComplete.NoOp,\n args: params.args,\n ...(hasAccessReferences\n ? { accessReferences: params.accessReferences }\n : {\n accountReferences: params.accountReferences?.map((a) => getAddress(a)),\n appReferences: params.appReferences,\n assetReferences: params.assetReferences,\n boxReferences: params.boxReferences?.map(AppManager.getBoxReference),\n }),\n rejectVersion: params.rejectVersion,\n },\n })\n}\n\n/**\n * Populate transaction-level resources for app call transactions\n */\nexport function populateTransactionResources(\n transaction: Transaction, // NOTE: transaction is mutated in place\n resourcesAccessed: SimulateUnnamedResourcesAccessed,\n groupIndex: number,\n): void {\n if (transaction.type !== TransactionType.AppCall || transaction.appCall === undefined) {\n return\n }\n\n // Check for unexpected resources at transaction level\n if (resourcesAccessed.boxes || resourcesAccessed.extraBoxRefs) {\n throw new Error('Unexpected boxes at the transaction level')\n }\n if (resourcesAccessed.appLocals) {\n throw new Error('Unexpected app locals at the transaction level')\n }\n if (resourcesAccessed.assetHoldings) {\n throw new Error('Unexpected asset holdings at the transaction level')\n }\n\n let accountsCount = 0\n let appsCount = 0\n let assetsCount = 0\n const boxesCount = transaction.appCall.boxReferences?.length ?? 0\n\n // Populate accounts\n if (resourcesAccessed.accounts) {\n transaction.appCall.accountReferences = transaction.appCall.accountReferences ?? []\n for (const account of resourcesAccessed.accounts) {\n const address = account\n if (!transaction.appCall.accountReferences.some((a) => a.equals(address))) {\n transaction.appCall.accountReferences.push(address)\n }\n }\n accountsCount = transaction.appCall.accountReferences.length\n }\n\n // Populate apps\n if (resourcesAccessed.apps) {\n transaction.appCall.appReferences = transaction.appCall.appReferences ?? []\n for (const appId of resourcesAccessed.apps) {\n if (!transaction.appCall.appReferences.includes(appId)) {\n transaction.appCall.appReferences.push(appId)\n }\n }\n appsCount = transaction.appCall.appReferences.length\n }\n\n // Populate assets\n if (resourcesAccessed.assets) {\n transaction.appCall.assetReferences = transaction.appCall.assetReferences ?? []\n for (const assetId of resourcesAccessed.assets) {\n if (!transaction.appCall.assetReferences.includes(assetId)) {\n transaction.appCall.assetReferences.push(assetId)\n }\n }\n assetsCount = transaction.appCall.assetReferences.length\n }\n\n if (accountsCount + assetsCount + appsCount + boxesCount > MAX_OVERALL_REFERENCES) {\n throw new Error(`Resource reference limit of ${MAX_OVERALL_REFERENCES} exceeded in transaction ${groupIndex}`)\n }\n}\n\nenum GroupResourceType {\n Account,\n App,\n Asset,\n Box,\n ExtraBoxRef,\n AssetHolding,\n AppLocal,\n}\n\n/**\n * Populate group-level resources for app call transactions\n */\nexport function populateGroupResources(\n transactions: Transaction[], // NOTE: transactions are mutated in place\n groupResources: SimulateUnnamedResourcesAccessed,\n): void {\n let remainingAccounts = [...(groupResources.accounts ?? [])]\n let remainingApps = [...(groupResources.apps ?? [])]\n let remainingAssets = [...(groupResources.assets ?? [])]\n const remainingBoxes = [...(groupResources.boxes ?? [])]\n\n // Process cross-reference resources first (app locals and asset holdings) as they are most restrictive\n if (groupResources.appLocals) {\n groupResources.appLocals.forEach((appLocal) => {\n populateGroupResource(transactions, { type: GroupResourceType.AppLocal, data: appLocal })\n // Remove resources from remaining if we're adding them here\n remainingAccounts = remainingAccounts.filter((acc) => acc !== appLocal.address)\n remainingApps = remainingApps.filter((app) => app !== appLocal.appId)\n })\n }\n\n if (groupResources.assetHoldings) {\n groupResources.assetHoldings.forEach((assetHolding) => {\n populateGroupResource(transactions, { type: GroupResourceType.AssetHolding, data: assetHolding })\n // Remove resources from remaining if we're adding them here\n remainingAccounts = remainingAccounts.filter((acc) => acc !== assetHolding.address)\n remainingAssets = remainingAssets.filter((asset) => asset !== assetHolding.assetId)\n })\n }\n\n // Process accounts next because account limit is 4\n remainingAccounts.forEach((account) => {\n populateGroupResource(transactions, { type: GroupResourceType.Account, data: account })\n })\n\n // Process boxes\n remainingBoxes.forEach((boxRef) => {\n populateGroupResource(transactions, { type: GroupResourceType.Box, data: { appId: boxRef.appId, name: boxRef.name } })\n // Remove apps as resource if we're adding it here\n remainingApps = remainingApps.filter((app) => app !== boxRef.appId)\n })\n\n // Process assets\n remainingAssets.forEach((asset) => {\n populateGroupResource(transactions, { type: GroupResourceType.Asset, data: asset })\n })\n\n // Process remaining apps\n remainingApps.forEach((app) => {\n populateGroupResource(transactions, { type: GroupResourceType.App, data: app })\n })\n\n // Handle extra box refs\n if (groupResources.extraBoxRefs) {\n for (let i = 0; i < groupResources.extraBoxRefs; i++) {\n populateGroupResource(transactions, { type: GroupResourceType.ExtraBoxRef })\n }\n }\n}\n\n/**\n * Helper function to check if an app call transaction is below resource limit\n */\nfunction isAppCallBelowResourceLimit(txn: Transaction): boolean {\n if (txn.type !== TransactionType.AppCall) {\n return false\n }\n if (txn.appCall?.accessReferences?.length) {\n return false\n }\n\n const accountsCount = txn.appCall?.accountReferences?.length || 0\n const assetsCount = txn.appCall?.assetReferences?.length || 0\n const appsCount = txn.appCall?.appReferences?.length || 0\n const boxesCount = txn.appCall?.boxReferences?.length || 0\n\n return accountsCount + assetsCount + appsCount + boxesCount < MAX_OVERALL_REFERENCES\n}\n\ntype GroupResourceToPopulate =\n | { type: GroupResourceType.Account; data: Address }\n | { type: GroupResourceType.App; data: bigint }\n | { type: GroupResourceType.Asset; data: bigint }\n | { type: GroupResourceType.Box; data: TransactBoxReference }\n | { type: GroupResourceType.ExtraBoxRef }\n | { type: GroupResourceType.AssetHolding; data: HoldingReference }\n | { type: GroupResourceType.AppLocal; data: LocalsReference }\n\n/**\n * Helper function to populate a specific resource into a transaction group\n */\nfunction populateGroupResource(\n transactions: Transaction[], // NOTE: transactions are mutated in place\n resource: GroupResourceToPopulate,\n): void {\n // For asset holdings and app locals, first try to find a transaction that already has the account available\n if (resource.type === GroupResourceType.AssetHolding || resource.type === GroupResourceType.AppLocal) {\n const address = resource.data.address\n\n // Try to find a transaction that already has the account available\n const groupIndex1 = transactions.findIndex((txn) => {\n if (!isAppCallBelowResourceLimit(txn)) {\n return false\n }\n\n const appCall = txn.appCall!\n\n // Check if account is in foreign accounts array\n if (appCall.accountReferences?.some((a) => a.equals(address))) {\n return true\n }\n\n // Check if account is available as an app account\n if (appCall.appReferences) {\n for (const appId of appCall.appReferences) {\n if (address === getApplicationAddress(appId)) {\n return true\n }\n }\n }\n\n // Check if account appears in any app call transaction fields\n if (txn.sender.equals(address)) {\n return true\n }\n\n return false\n })\n\n if (groupIndex1 !== -1) {\n const appCall = transactions[groupIndex1].appCall!\n if (resource.type === GroupResourceType.AssetHolding) {\n appCall.assetReferences = appCall.assetReferences ?? []\n if (!appCall.assetReferences.includes(resource.data.assetId)) {\n appCall.assetReferences.push(resource.data.assetId)\n }\n } else {\n appCall.appReferences = appCall.appReferences ?? []\n if (!appCall.appReferences.includes(resource.data.appId)) {\n appCall.appReferences.push(resource.data.appId)\n }\n }\n return\n }\n\n // Try to find a transaction that has the asset/app available and space for account\n const groupIndex2 = transactions.findIndex((txn) => {\n if (!isAppCallBelowResourceLimit(txn)) {\n return false\n }\n\n const appCall = txn.appCall!\n if ((appCall.accountReferences?.length ?? 0) >= MAX_ACCOUNT_REFERENCES) {\n return false\n }\n\n if (resource.type === GroupResourceType.AssetHolding) {\n return appCall.assetReferences?.includes(resource.data.assetId) || false\n } else {\n return appCall.appReferences?.includes(resource.data.appId) || appCall.appId === resource.data.appId\n }\n })\n\n if (groupIndex2 !== -1) {\n const appCall = transactions[groupIndex2].appCall!\n appCall.accountReferences = appCall.accountReferences ?? []\n if (!appCall.accountReferences.includes(address)) {\n appCall.accountReferences.push(address)\n }\n return\n }\n }\n\n // For boxes, first try to find a transaction that already has the app available\n if (resource.type === GroupResourceType.Box) {\n const groupIndex = transactions.findIndex((txn) => {\n if (!isAppCallBelowResourceLimit(txn)) {\n return false\n }\n\n const appCall = txn.appCall!\n return appCall.appReferences?.includes(resource.data.appId) || appCall.appId === resource.data.appId\n })\n\n if (groupIndex !== -1) {\n const appCall = transactions[groupIndex].appCall!\n appCall.boxReferences = appCall.boxReferences ?? []\n const exists = appCall.boxReferences.some(\n (b) =>\n b.appId === resource.data.appId &&\n b.name.length === resource.data.name.length &&\n b.name.every((byte, i) => byte === resource.data.name[i]),\n )\n if (!exists) {\n appCall.boxReferences.push({ appId: resource.data.appId, name: resource.data.name })\n }\n return\n }\n }\n\n // Find the first transaction that can accommodate the resource\n const groupIndex = transactions.findIndex((txn) => {\n if (txn.type !== TransactionType.AppCall) {\n return false\n }\n if (txn.appCall?.accessReferences?.length) {\n return false\n }\n\n const appCall = txn.appCall!\n const accountsCount = appCall.accountReferences?.length ?? 0\n const assetsCount = appCall.assetReferences?.length ?? 0\n const appsCount = appCall.appReferences?.length ?? 0\n const boxesCount = appCall.boxReferences?.length ?? 0\n\n switch (resource.type) {\n case GroupResourceType.Account:\n return accountsCount + assetsCount + appsCount + boxesCount < MAX_OVERALL_REFERENCES\n case GroupResourceType.AssetHolding:\n case GroupResourceType.AppLocal:\n return accountsCount + assetsCount + appsCount + boxesCount < MAX_OVERALL_REFERENCES - 1\n case GroupResourceType.Box:\n if (resource.data.appId !== 0n) {\n return accountsCount + assetsCount + appsCount + boxesCount < MAX_OVERALL_REFERENCES - 1\n } else {\n return accountsCount + assetsCount + appsCount + boxesCount < MAX_OVERALL_REFERENCES\n }\n default:\n return accountsCount + assetsCount + appsCount + boxesCount < MAX_OVERALL_REFERENCES\n }\n })\n\n if (groupIndex === -1) {\n throw new Error('No more transactions below reference limit. Add another app call to the group.')\n }\n\n const appCall = transactions[groupIndex].appCall!\n\n switch (resource.type) {\n case GroupResourceType.Account: {\n appCall.accountReferences = appCall.accountReferences ?? []\n const address = resource.data\n if (!appCall.accountReferences.some((a) => a.equals(address))) {\n appCall.accountReferences.push(address)\n }\n break\n }\n case GroupResourceType.App:\n appCall.appReferences = appCall.appReferences ?? []\n if (!appCall.appReferences.includes(resource.data)) {\n appCall.appReferences.push(resource.data)\n }\n break\n case GroupResourceType.Box: {\n appCall.boxReferences = appCall.boxReferences ?? []\n const exists = appCall.boxReferences.some(\n (b) =>\n b.appId === resource.data.appId &&\n b.name.length === resource.data.name.length &&\n b.name.every((byte, i) => byte === resource.data.name[i]),\n )\n if (!exists) {\n appCall.boxReferences.push({ appId: resource.data.appId, name: resource.data.name })\n }\n if (resource.data.appId !== 0n) {\n appCall.appReferences = appCall.appReferences ?? []\n if (!appCall.appReferences.includes(resource.data.appId)) {\n appCall.appReferences.push(resource.data.appId)\n }\n }\n break\n }\n case GroupResourceType.ExtraBoxRef:\n appCall.boxReferences = appCall.boxReferences ?? []\n appCall.boxReferences.push({ appId: 0n, name: new Uint8Array(0) })\n break\n case GroupResourceType.AssetHolding: {\n appCall.assetReferences = appCall.assetReferences ?? []\n if (!appCall.assetReferences.includes(resource.data.assetId)) {\n appCall.assetReferences.push(resource.data.assetId)\n }\n const address = resource.data.address\n appCall.accountReferences = appCall.accountReferences ?? []\n if (!appCall.accountReferences.some((a) => a.equals(address))) {\n appCall.accountReferences.push(address)\n }\n break\n }\n case GroupResourceType.AppLocal: {\n appCall.appReferences = appCall.appReferences ?? []\n if (!appCall.appReferences.includes(resource.data.appId)) {\n appCall.appReferences.push(resource.data.appId)\n }\n const address = resource.data.address\n appCall.accountReferences = appCall.accountReferences ?? []\n if (!appCall.accountReferences.some((a) => a.equals(address))) {\n appCall.accountReferences.push(address)\n }\n break\n }\n case GroupResourceType.Asset:\n appCall.assetReferences = appCall.assetReferences ?? []\n if (!appCall.assetReferences.includes(resource.data)) {\n appCall.assetReferences.push(resource.data)\n }\n break\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app-call.mjs","names":[],"sources":["../../src/transactions/app-call.ts"],"sourcesContent":["import { SimulateUnnamedResourcesAccessed, SuggestedParams } from '@algorandfoundation/algokit-algod-client'\nimport {\n Address,\n Expand,\n MAX_ACCOUNT_REFERENCES,\n MAX_OVERALL_REFERENCES,\n ReadableAddress,\n getAddress,\n getApplicationAddress,\n} from '@algorandfoundation/algokit-common'\nimport {\n HoldingReference,\n LocalsReference,\n OnApplicationComplete,\n ResourceReference,\n BoxReference as TransactBoxReference,\n Transaction,\n TransactionType,\n} from '@algorandfoundation/algokit-transact'\nimport { AppManager, BoxIdentifier, BoxReference as UtilsBoxReference } from '../app-manager'\nimport { calculateExtraProgramPages } from '../util'\nimport { CommonTransactionParams, buildTransactionCommonData } from './common'\n\n/** Common parameters for defining an application call transaction. */\nexport type CommonAppCallParams = CommonTransactionParams & {\n /** ID of the application; 0 if the application is being created. */\n appId: bigint\n /** The [on-complete](https://dev.algorand.co/concepts/smart-contracts/avm#oncomplete) action of the call; defaults to no-op. */\n onComplete?: OnApplicationComplete\n /** Any [arguments to pass to the smart contract call](/concepts/smart-contracts/languages/teal/#argument-passing). */\n args?: Uint8Array[]\n /** Any account addresses to add to the [accounts array](https://dev.algorand.co/concepts/smart-contracts/resource-usage#what-are-reference-arrays). */\n accountReferences?: ReadableAddress[]\n /** The ID of any apps to load to the [foreign apps array](https://dev.algorand.co/concepts/smart-contracts/resource-usage#what-are-reference-arrays). */\n appReferences?: bigint[]\n /** The ID of any assets to load to the [foreign assets array](https://dev.algorand.co/concepts/smart-contracts/resource-usage#what-are-reference-arrays). */\n assetReferences?: bigint[]\n /** Any boxes to load to the [boxes array](https://dev.algorand.co/concepts/smart-contracts/resource-usage#what-are-reference-arrays).\n *\n * Either the name identifier (which will be set against app ID of `0` i.e.\n * the current app), or a box identifier with the name identifier and app ID.\n */\n boxReferences?: (UtilsBoxReference | BoxIdentifier)[]\n /** Access references unifies `accountReferences`, `appReferences`, `assetReferences`, and `boxReferences` under a single list. If non-empty, these other reference lists must be empty. If access is empty, those other reference lists may be non-empty. */\n accessReferences?: ResourceReference[]\n /** If set, the transaction will be rejected when the app's version is greater than or equal to this value. This can be used to prevent calling an app after it has been updated. Set to 0 or leave undefined to skip the version check. */\n rejectVersion?: number\n}\n\n/** Parameters to define an app create transaction */\nexport type AppCreateParams = Expand<\n Omit<CommonAppCallParams, 'appId'> & {\n appId?: 0\n onComplete?: Exclude<OnApplicationComplete, OnApplicationComplete.ClearState>\n /** The program to execute for all OnCompletes other than ClearState as raw teal that will be compiled (string) or compiled teal (encoded as a byte array (Uint8Array)). */\n approvalProgram: string | Uint8Array\n /** The program to execute for ClearState OnComplete as raw teal that will be compiled (string) or compiled teal (encoded as a byte array (Uint8Array)). */\n clearStateProgram: string | Uint8Array\n /** The state schema for the app. This is immutable once the app is created. */\n schema?: {\n /** The number of integers saved in global state. */\n globalInts: number\n /** The number of byte slices saved in global state. */\n globalByteSlices: number\n /** The number of integers saved in local state. */\n localInts: number\n /** The number of byte slices saved in local state. */\n localByteSlices: number\n }\n /** Number of extra pages required for the programs.\n * Defaults to the number needed for the programs in this call if not specified.\n * This is immutable once the app is created. */\n extraProgramPages?: number\n }\n>\n\n/** Parameters to define an app update transaction */\nexport type AppUpdateParams = Expand<\n CommonAppCallParams & {\n onComplete?: OnApplicationComplete.UpdateApplication\n /** The program to execute for all OnCompletes other than ClearState as raw teal (string) or compiled teal (base 64 encoded as a byte array (Uint8Array)) */\n approvalProgram: string | Uint8Array\n /** The program to execute for ClearState OnComplete as raw teal (string) or compiled teal (base 64 encoded as a byte array (Uint8Array)) */\n clearStateProgram: string | Uint8Array\n }\n>\n\n/** Parameters to define an application call transaction. */\nexport type AppCallParams = CommonAppCallParams & { onComplete?: Exclude<OnApplicationComplete, OnApplicationComplete.UpdateApplication> }\n\n/** Common parameters to define an ABI method call transaction. */\nexport type AppMethodCallParams = CommonAppCallParams & {\n onComplete?: Exclude<OnApplicationComplete, OnApplicationComplete.UpdateApplication | OnApplicationComplete.ClearState>\n}\n\n/** Parameters to define an application delete call transaction. */\nexport type AppDeleteParams = CommonAppCallParams & { onComplete?: OnApplicationComplete.DeleteApplication }\n\nexport const buildAppCreate = async (\n params: AppCreateParams,\n appManager: AppManager,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Promise<Transaction> => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n const approvalProgram =\n typeof params.approvalProgram === 'string'\n ? (await appManager.compileTeal(params.approvalProgram)).compiledBase64ToBytes\n : params.approvalProgram\n const clearStateProgram =\n typeof params.clearStateProgram === 'string'\n ? (await appManager.compileTeal(params.clearStateProgram)).compiledBase64ToBytes\n : params.clearStateProgram\n const globalStateSchema =\n params.schema?.globalByteSlices !== undefined || params.schema?.globalInts !== undefined\n ? { numByteSlices: params.schema?.globalByteSlices ?? 0, numUints: params.schema?.globalInts ?? 0 }\n : undefined\n const localStateSchema =\n params.schema?.localByteSlices !== undefined || params.schema?.localInts !== undefined\n ? { numByteSlices: params.schema?.localByteSlices ?? 0, numUints: params.schema?.localInts ?? 0 }\n : undefined\n const extraProgramPages =\n params.extraProgramPages !== undefined ? params.extraProgramPages : calculateExtraProgramPages(approvalProgram!, clearStateProgram!)\n\n // If accessReferences is provided, we should not pass legacy foreign arrays\n const hasAccessReferences = params.accessReferences && params.accessReferences.length > 0\n\n return new Transaction({\n ...commonData,\n type: TransactionType.AppCall,\n appCall: {\n appId: 0n, // App creation always uses ID 0\n onComplete: params.onComplete ?? OnApplicationComplete.NoOp,\n approvalProgram: approvalProgram,\n clearStateProgram: clearStateProgram,\n globalStateSchema: globalStateSchema,\n localStateSchema: localStateSchema,\n extraProgramPages: extraProgramPages,\n args: params.args,\n ...(hasAccessReferences\n ? { accessReferences: params.accessReferences }\n : {\n accountReferences: params.accountReferences?.map((a) => getAddress(a)),\n appReferences: params.appReferences,\n assetReferences: params.assetReferences,\n boxReferences: params.boxReferences?.map(AppManager.getBoxReference),\n }),\n rejectVersion: params.rejectVersion,\n },\n })\n}\n\nexport const buildAppUpdate = async (\n params: AppUpdateParams,\n appManager: AppManager,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Promise<Transaction> => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n const approvalProgram =\n typeof params.approvalProgram === 'string'\n ? (await appManager.compileTeal(params.approvalProgram)).compiledBase64ToBytes\n : params.approvalProgram\n const clearStateProgram =\n typeof params.clearStateProgram === 'string'\n ? (await appManager.compileTeal(params.clearStateProgram)).compiledBase64ToBytes\n : params.clearStateProgram\n\n // If accessReferences is provided, we should not pass legacy foreign arrays\n const hasAccessReferences = params.accessReferences && params.accessReferences.length > 0\n\n return new Transaction({\n ...commonData,\n type: TransactionType.AppCall,\n appCall: {\n appId: params.appId,\n onComplete: OnApplicationComplete.UpdateApplication,\n approvalProgram: approvalProgram,\n clearStateProgram: clearStateProgram,\n args: params.args,\n ...(hasAccessReferences\n ? { accessReferences: params.accessReferences }\n : {\n accountReferences: params.accountReferences?.map((a) => getAddress(a)),\n appReferences: params.appReferences,\n assetReferences: params.assetReferences,\n boxReferences: params.boxReferences?.map(AppManager.getBoxReference),\n }),\n rejectVersion: params.rejectVersion,\n },\n })\n}\n\nexport const buildAppCall = (\n params: AppCallParams | AppDeleteParams,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Transaction => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n // If accessReferences is provided, we should not pass legacy foreign arrays\n const hasAccessReferences = params.accessReferences && params.accessReferences.length > 0\n\n return new Transaction({\n ...commonData,\n type: TransactionType.AppCall,\n appCall: {\n appId: params.appId,\n onComplete: params.onComplete ?? OnApplicationComplete.NoOp,\n args: params.args,\n ...(hasAccessReferences\n ? { accessReferences: params.accessReferences }\n : {\n accountReferences: params.accountReferences?.map((a) => getAddress(a)),\n appReferences: params.appReferences,\n assetReferences: params.assetReferences,\n boxReferences: params.boxReferences?.map(AppManager.getBoxReference),\n }),\n rejectVersion: params.rejectVersion,\n },\n })\n}\n\n/**\n * Populate transaction-level resources for app call transactions\n */\nexport function populateTransactionResources(\n transaction: Transaction, // NOTE: transaction is mutated in place\n resourcesAccessed: SimulateUnnamedResourcesAccessed,\n groupIndex: number,\n): void {\n if (transaction.type !== TransactionType.AppCall || transaction.appCall === undefined) {\n return\n }\n\n // Check for unexpected resources at transaction level\n if (resourcesAccessed.boxes || resourcesAccessed.extraBoxRefs) {\n throw new Error('Unexpected boxes at the transaction level')\n }\n if (resourcesAccessed.appLocals) {\n throw new Error('Unexpected app locals at the transaction level')\n }\n if (resourcesAccessed.assetHoldings) {\n throw new Error('Unexpected asset holdings at the transaction level')\n }\n\n let accountsCount = 0\n let appsCount = 0\n let assetsCount = 0\n const boxesCount = transaction.appCall.boxReferences?.length ?? 0\n\n // Populate accounts\n if (resourcesAccessed.accounts) {\n transaction.appCall.accountReferences = transaction.appCall.accountReferences ?? []\n for (const account of resourcesAccessed.accounts) {\n const address = account\n if (!transaction.appCall.accountReferences.some((a) => a.equals(address))) {\n transaction.appCall.accountReferences.push(address)\n }\n }\n accountsCount = transaction.appCall.accountReferences.length\n }\n\n // Populate apps\n if (resourcesAccessed.apps) {\n transaction.appCall.appReferences = transaction.appCall.appReferences ?? []\n for (const appId of resourcesAccessed.apps) {\n if (!transaction.appCall.appReferences.includes(appId)) {\n transaction.appCall.appReferences.push(appId)\n }\n }\n appsCount = transaction.appCall.appReferences.length\n }\n\n // Populate assets\n if (resourcesAccessed.assets) {\n transaction.appCall.assetReferences = transaction.appCall.assetReferences ?? []\n for (const assetId of resourcesAccessed.assets) {\n if (!transaction.appCall.assetReferences.includes(assetId)) {\n transaction.appCall.assetReferences.push(assetId)\n }\n }\n assetsCount = transaction.appCall.assetReferences.length\n }\n\n if (accountsCount + assetsCount + appsCount + boxesCount > MAX_OVERALL_REFERENCES) {\n throw new Error(`Resource reference limit of ${MAX_OVERALL_REFERENCES} exceeded in transaction ${groupIndex}`)\n }\n}\n\nenum GroupResourceType {\n Account,\n App,\n Asset,\n Box,\n ExtraBoxRef,\n AssetHolding,\n AppLocal,\n}\n\n/**\n * Populate group-level resources for app call transactions\n */\nexport function populateGroupResources(\n transactions: Transaction[], // NOTE: transactions are mutated in place\n groupResources: SimulateUnnamedResourcesAccessed,\n): void {\n let remainingAccounts = [...(groupResources.accounts ?? [])]\n let remainingApps = [...(groupResources.apps ?? [])]\n let remainingAssets = [...(groupResources.assets ?? [])]\n const remainingBoxes = [...(groupResources.boxes ?? [])]\n\n // Process cross-reference resources first (app locals and asset holdings) as they are most restrictive\n if (groupResources.appLocals) {\n groupResources.appLocals.forEach((appLocal) => {\n populateGroupResource(transactions, { type: GroupResourceType.AppLocal, data: appLocal })\n // Remove resources from remaining if we're adding them here\n remainingAccounts = remainingAccounts.filter((acc) => acc !== appLocal.address)\n remainingApps = remainingApps.filter((app) => app !== appLocal.appId)\n })\n }\n\n if (groupResources.assetHoldings) {\n groupResources.assetHoldings.forEach((assetHolding) => {\n populateGroupResource(transactions, { type: GroupResourceType.AssetHolding, data: assetHolding })\n // Remove resources from remaining if we're adding them here\n remainingAccounts = remainingAccounts.filter((acc) => acc !== assetHolding.address)\n remainingAssets = remainingAssets.filter((asset) => asset !== assetHolding.assetId)\n })\n }\n\n // Process accounts next because account limit is 4\n remainingAccounts.forEach((account) => {\n populateGroupResource(transactions, { type: GroupResourceType.Account, data: account })\n })\n\n // Process boxes\n remainingBoxes.forEach((boxRef) => {\n populateGroupResource(transactions, { type: GroupResourceType.Box, data: { appId: boxRef.appId, name: boxRef.name } })\n // Remove apps as resource if we're adding it here\n remainingApps = remainingApps.filter((app) => app !== boxRef.appId)\n })\n\n // Process assets\n remainingAssets.forEach((asset) => {\n populateGroupResource(transactions, { type: GroupResourceType.Asset, data: asset })\n })\n\n // Process remaining apps\n remainingApps.forEach((app) => {\n populateGroupResource(transactions, { type: GroupResourceType.App, data: app })\n })\n\n // Handle extra box refs\n if (groupResources.extraBoxRefs) {\n for (let i = 0; i < groupResources.extraBoxRefs; i++) {\n populateGroupResource(transactions, { type: GroupResourceType.ExtraBoxRef })\n }\n }\n}\n\n/**\n * Helper function to check if an app call transaction is below resource limit\n */\nfunction isAppCallBelowResourceLimit(txn: Transaction): boolean {\n if (txn.type !== TransactionType.AppCall) {\n return false\n }\n if (txn.appCall?.accessReferences?.length) {\n return false\n }\n\n const accountsCount = txn.appCall?.accountReferences?.length || 0\n const assetsCount = txn.appCall?.assetReferences?.length || 0\n const appsCount = txn.appCall?.appReferences?.length || 0\n const boxesCount = txn.appCall?.boxReferences?.length || 0\n\n return accountsCount + assetsCount + appsCount + boxesCount < MAX_OVERALL_REFERENCES\n}\n\ntype GroupResourceToPopulate =\n | { type: GroupResourceType.Account; data: Address }\n | { type: GroupResourceType.App; data: bigint }\n | { type: GroupResourceType.Asset; data: bigint }\n | { type: GroupResourceType.Box; data: TransactBoxReference }\n | { type: GroupResourceType.ExtraBoxRef }\n | { type: GroupResourceType.AssetHolding; data: HoldingReference }\n | { type: GroupResourceType.AppLocal; data: LocalsReference }\n\n/**\n * Helper function to populate a specific resource into a transaction group\n */\nfunction populateGroupResource(\n transactions: Transaction[], // NOTE: transactions are mutated in place\n resource: GroupResourceToPopulate,\n): void {\n // For asset holdings and app locals, first try to find a transaction that already has the account available\n if (resource.type === GroupResourceType.AssetHolding || resource.type === GroupResourceType.AppLocal) {\n const address = resource.data.address\n\n // Try to find a transaction that already has the account available\n const groupIndex1 = transactions.findIndex((txn) => {\n if (!isAppCallBelowResourceLimit(txn)) {\n return false\n }\n\n const appCall = txn.appCall!\n\n // Check if account is in foreign accounts array\n if (appCall.accountReferences?.some((a) => a.equals(address))) {\n return true\n }\n\n // Check if account is available as an app account\n if (appCall.appReferences) {\n for (const appId of appCall.appReferences) {\n if (address === getApplicationAddress(appId)) {\n return true\n }\n }\n }\n\n // Check if account appears in any app call transaction fields\n if (txn.sender.equals(address)) {\n return true\n }\n\n return false\n })\n\n if (groupIndex1 !== -1) {\n const appCall = transactions[groupIndex1].appCall!\n if (resource.type === GroupResourceType.AssetHolding) {\n appCall.assetReferences = appCall.assetReferences ?? []\n if (!appCall.assetReferences.includes(resource.data.assetId)) {\n appCall.assetReferences.push(resource.data.assetId)\n }\n } else {\n appCall.appReferences = appCall.appReferences ?? []\n if (!appCall.appReferences.includes(resource.data.appId)) {\n appCall.appReferences.push(resource.data.appId)\n }\n }\n return\n }\n\n // Try to find a transaction that has the asset/app available and space for account\n const groupIndex2 = transactions.findIndex((txn) => {\n if (!isAppCallBelowResourceLimit(txn)) {\n return false\n }\n\n const appCall = txn.appCall!\n if ((appCall.accountReferences?.length ?? 0) >= MAX_ACCOUNT_REFERENCES) {\n return false\n }\n\n if (resource.type === GroupResourceType.AssetHolding) {\n return appCall.assetReferences?.includes(resource.data.assetId) || false\n } else {\n return appCall.appReferences?.includes(resource.data.appId) || appCall.appId === resource.data.appId\n }\n })\n\n if (groupIndex2 !== -1) {\n const appCall = transactions[groupIndex2].appCall!\n appCall.accountReferences = appCall.accountReferences ?? []\n if (!appCall.accountReferences.includes(address)) {\n appCall.accountReferences.push(address)\n }\n return\n }\n }\n\n // For boxes, first try to find a transaction that already has the app available\n if (resource.type === GroupResourceType.Box) {\n const groupIndex = transactions.findIndex((txn) => {\n if (!isAppCallBelowResourceLimit(txn)) {\n return false\n }\n\n const appCall = txn.appCall!\n return appCall.appReferences?.includes(resource.data.appId) || appCall.appId === resource.data.appId\n })\n\n if (groupIndex !== -1) {\n const appCall = transactions[groupIndex].appCall!\n appCall.boxReferences = appCall.boxReferences ?? []\n const exists = appCall.boxReferences.some(\n (b) =>\n b.appId === resource.data.appId &&\n b.name.length === resource.data.name.length &&\n b.name.every((byte, i) => byte === resource.data.name[i]),\n )\n if (!exists) {\n appCall.boxReferences.push({ appId: resource.data.appId, name: resource.data.name })\n }\n return\n }\n }\n\n // Find the first transaction that can accommodate the resource\n const groupIndex = transactions.findIndex((txn) => {\n if (txn.type !== TransactionType.AppCall) {\n return false\n }\n if (txn.appCall?.accessReferences?.length) {\n return false\n }\n\n const appCall = txn.appCall!\n const accountsCount = appCall.accountReferences?.length ?? 0\n const assetsCount = appCall.assetReferences?.length ?? 0\n const appsCount = appCall.appReferences?.length ?? 0\n const boxesCount = appCall.boxReferences?.length ?? 0\n\n switch (resource.type) {\n case GroupResourceType.Account:\n return accountsCount + assetsCount + appsCount + boxesCount < MAX_OVERALL_REFERENCES\n case GroupResourceType.AssetHolding:\n case GroupResourceType.AppLocal:\n return accountsCount + assetsCount + appsCount + boxesCount < MAX_OVERALL_REFERENCES - 1\n case GroupResourceType.Box:\n if (resource.data.appId !== 0n) {\n return accountsCount + assetsCount + appsCount + boxesCount < MAX_OVERALL_REFERENCES - 1\n } else {\n return accountsCount + assetsCount + appsCount + boxesCount < MAX_OVERALL_REFERENCES\n }\n default:\n return accountsCount + assetsCount + appsCount + boxesCount < MAX_OVERALL_REFERENCES\n }\n })\n\n if (groupIndex === -1) {\n throw new Error('No more transactions below reference limit. Add another app call to the group.')\n }\n\n const appCall = transactions[groupIndex].appCall!\n\n switch (resource.type) {\n case GroupResourceType.Account: {\n appCall.accountReferences = appCall.accountReferences ?? []\n const address = resource.data\n if (!appCall.accountReferences.some((a) => a.equals(address))) {\n appCall.accountReferences.push(address)\n }\n break\n }\n case GroupResourceType.App:\n appCall.appReferences = appCall.appReferences ?? []\n if (!appCall.appReferences.includes(resource.data)) {\n appCall.appReferences.push(resource.data)\n }\n break\n case GroupResourceType.Box: {\n appCall.boxReferences = appCall.boxReferences ?? []\n const exists = appCall.boxReferences.some(\n (b) =>\n b.appId === resource.data.appId &&\n b.name.length === resource.data.name.length &&\n b.name.every((byte, i) => byte === resource.data.name[i]),\n )\n if (!exists) {\n appCall.boxReferences.push({ appId: resource.data.appId, name: resource.data.name })\n }\n if (resource.data.appId !== 0n) {\n appCall.appReferences = appCall.appReferences ?? []\n if (!appCall.appReferences.includes(resource.data.appId)) {\n appCall.appReferences.push(resource.data.appId)\n }\n }\n break\n }\n case GroupResourceType.ExtraBoxRef:\n appCall.boxReferences = appCall.boxReferences ?? []\n appCall.boxReferences.push({ appId: 0n, name: new Uint8Array(0) })\n break\n case GroupResourceType.AssetHolding: {\n appCall.assetReferences = appCall.assetReferences ?? []\n if (!appCall.assetReferences.includes(resource.data.assetId)) {\n appCall.assetReferences.push(resource.data.assetId)\n }\n const address = resource.data.address\n appCall.accountReferences = appCall.accountReferences ?? []\n if (!appCall.accountReferences.some((a) => a.equals(address))) {\n appCall.accountReferences.push(address)\n }\n break\n }\n case GroupResourceType.AppLocal: {\n appCall.appReferences = appCall.appReferences ?? []\n if (!appCall.appReferences.includes(resource.data.appId)) {\n appCall.appReferences.push(resource.data.appId)\n }\n const address = resource.data.address\n appCall.accountReferences = appCall.accountReferences ?? []\n if (!appCall.accountReferences.some((a) => a.equals(address))) {\n appCall.accountReferences.push(address)\n }\n break\n }\n case GroupResourceType.Asset:\n appCall.assetReferences = appCall.assetReferences ?? []\n if (!appCall.assetReferences.includes(resource.data)) {\n appCall.assetReferences.push(resource.data)\n }\n break\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
const require_address = require("../packages/common/src/address.js");
|
|
2
|
-
|
|
2
|
+
require("../packages/transact/src/transactions/transaction-type.js");
|
|
3
3
|
const require_transaction = require("../packages/transact/src/transactions/transaction.js");
|
|
4
4
|
const require_common = require("./common.js");
|
|
5
5
|
//#region src/transactions/asset-config.ts
|
|
6
6
|
const buildAssetCreate = (params, suggestedParams, defaultValidityWindow) => {
|
|
7
7
|
return new require_transaction.Transaction({
|
|
8
8
|
...require_common.buildTransactionCommonData(params, suggestedParams, defaultValidityWindow),
|
|
9
|
-
type:
|
|
9
|
+
type: "acfg",
|
|
10
10
|
assetConfig: {
|
|
11
11
|
assetId: 0n,
|
|
12
12
|
total: params.total,
|
|
@@ -26,7 +26,7 @@ const buildAssetCreate = (params, suggestedParams, defaultValidityWindow) => {
|
|
|
26
26
|
const buildAssetConfig = (params, suggestedParams, defaultValidityWindow) => {
|
|
27
27
|
return new require_transaction.Transaction({
|
|
28
28
|
...require_common.buildTransactionCommonData(params, suggestedParams, defaultValidityWindow),
|
|
29
|
-
type:
|
|
29
|
+
type: "acfg",
|
|
30
30
|
assetConfig: {
|
|
31
31
|
assetId: params.assetId,
|
|
32
32
|
manager: require_address.getOptionalAddress(params.manager),
|
|
@@ -39,7 +39,7 @@ const buildAssetConfig = (params, suggestedParams, defaultValidityWindow) => {
|
|
|
39
39
|
const buildAssetFreeze = (params, suggestedParams, defaultValidityWindow) => {
|
|
40
40
|
return new require_transaction.Transaction({
|
|
41
41
|
...require_common.buildTransactionCommonData(params, suggestedParams, defaultValidityWindow),
|
|
42
|
-
type:
|
|
42
|
+
type: "afrz",
|
|
43
43
|
assetFreeze: {
|
|
44
44
|
assetId: params.assetId,
|
|
45
45
|
freezeTarget: require_address.getAddress(params.freezeTarget),
|
|
@@ -50,7 +50,7 @@ const buildAssetFreeze = (params, suggestedParams, defaultValidityWindow) => {
|
|
|
50
50
|
const buildAssetDestroy = (params, suggestedParams, defaultValidityWindow) => {
|
|
51
51
|
return new require_transaction.Transaction({
|
|
52
52
|
...require_common.buildTransactionCommonData(params, suggestedParams, defaultValidityWindow),
|
|
53
|
-
type:
|
|
53
|
+
type: "acfg",
|
|
54
54
|
assetConfig: { assetId: params.assetId }
|
|
55
55
|
});
|
|
56
56
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-config.js","names":["Transaction","buildTransactionCommonData","TransactionType","ensureString","getOptionalAddress","getAddress"],"sources":["../../src/transactions/asset-config.ts"],"sourcesContent":["import { SuggestedParams } from '@algorandfoundation/algokit-algod-client'\nimport { ReadableAddress, getAddress, getOptionalAddress } from '@algorandfoundation/algokit-common'\nimport { Transaction, TransactionType } from '@algorandfoundation/algokit-transact'\nimport { CommonTransactionParams, buildTransactionCommonData, ensureString } from './common'\n\n/** Parameters to define an asset create transaction.\n *\n * The account that sends this transaction will automatically be opted in to the asset and will hold all units after creation.\n */\nexport type AssetCreateParams = CommonTransactionParams & {\n /** The total amount of the smallest divisible (decimal) unit to create.\n *\n * For example, if `decimals` is, say, 2, then for every 100 `total` there would be 1 whole unit.\n *\n * This field can only be specified upon asset creation.\n */\n total: bigint\n\n /** The amount of decimal places the asset should have.\n *\n * If unspecified then the asset will be in whole units (i.e. `0`).\n *\n * * If 0, the asset is not divisible;\n * * If 1, the base unit of the asset is in tenths;\n * * If 2, the base unit of the asset is in hundredths;\n * * If 3, the base unit of the asset is in thousandths;\n * * and so on up to 19 decimal places.\n *\n * This field can only be specified upon asset creation.\n */\n decimals?: number\n\n /** The optional name of the asset.\n *\n * Max size is 32 bytes.\n *\n * This field can only be specified upon asset creation.\n */\n assetName?: string\n\n /** The optional name of the unit of this asset (e.g. ticker name).\n *\n * Max size is 8 bytes.\n *\n * This field can only be specified upon asset creation.\n */\n unitName?: string\n\n /** Specifies an optional URL where more information about the asset can be retrieved (e.g. metadata).\n *\n * Max size is 96 bytes.\n *\n * This field can only be specified upon asset creation.\n */\n url?: string\n\n /** 32-byte hash of some metadata that is relevant to your asset and/or asset holders.\n *\n * The format of this metadata is up to the application.\n *\n * This field can only be specified upon asset creation.\n */\n metadataHash?: string | Uint8Array\n\n /** Whether the asset is frozen by default for all accounts.\n * Defaults to `false`.\n *\n * If `true` then for anyone apart from the creator to hold the\n * asset it needs to be unfrozen per account using an asset freeze\n * transaction from the `freeze` account, which must be set on creation.\n *\n * This field can only be specified upon asset creation.\n */\n defaultFrozen?: boolean\n\n /** The address of the optional account that can manage the configuration of the asset and destroy it.\n *\n * The configuration fields it can change are `manager`, `reserve`, `clawback`, and `freeze`.\n *\n * If not set (`undefined` or `\"\"`) at asset creation or subsequently set to empty by the `manager` the asset becomes permanently immutable.\n */\n manager?: ReadableAddress\n\n /**\n * The address of the optional account that holds the reserve (uncirculated supply) units of the asset.\n *\n * This address has no specific authority in the protocol itself and is informational only.\n *\n * Some standards like [ARC-19](https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0019.md)\n * rely on this field to hold meaningful data.\n *\n * It can be used in the case where you want to signal to holders of your asset that the uncirculated units\n * of the asset reside in an account that is different from the default creator account.\n *\n * If not set (`undefined` or `\"\"`) at asset creation or subsequently set to empty by the manager the field is permanently empty.\n */\n reserve?: ReadableAddress\n\n /**\n * The address of the optional account that can be used to freeze or unfreeze holdings of this asset for any account.\n *\n * If empty, freezing is not permitted.\n *\n * If not set (`undefined` or `\"\"`) at asset creation or subsequently set to empty by the manager the field is permanently empty.\n */\n freeze?: ReadableAddress\n\n /**\n * The address of the optional account that can clawback holdings of this asset from any account.\n *\n * **This field should be used with caution** as the clawback account has the ability to **unconditionally take assets from any account**.\n *\n * If empty, clawback is not permitted.\n *\n * If not set (`undefined` or `\"\"`) at asset creation or subsequently set to empty by the manager the field is permanently empty.\n */\n clawback?: ReadableAddress\n}\n\n/** Parameters to define an asset reconfiguration transaction.\n *\n * **Note:** The manager, reserve, freeze, and clawback addresses\n * are immutably empty if they are not set. If manager is not set then\n * all fields are immutable from that point forward.\n */\nexport type AssetConfigParams = CommonTransactionParams & {\n /** ID of the asset to reconfigure */\n assetId: bigint\n /** The address of the optional account that can manage the configuration of the asset and destroy it.\n *\n * The configuration fields it can change are `manager`, `reserve`, `clawback`, and `freeze`.\n *\n * If not set (`undefined` or `\"\"`) the asset will become permanently immutable.\n */\n manager?: ReadableAddress\n /**\n * The address of the optional account that holds the reserve (uncirculated supply) units of the asset.\n *\n * This address has no specific authority in the protocol itself and is informational only.\n *\n * Some standards like [ARC-19](https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0019.md)\n * rely on this field to hold meaningful data.\n *\n * It can be used in the case where you want to signal to holders of your asset that the uncirculated units\n * of the asset reside in an account that is different from the default creator account.\n *\n * If not set (`undefined` or `\"\"`) the field will become permanently empty.\n */\n reserve?: ReadableAddress\n /**\n * The address of the optional account that can be used to freeze or unfreeze holdings of this asset for any account.\n *\n * If empty, freezing is not permitted.\n *\n * If not set (`undefined` or `\"\"`) the field will become permanently empty.\n */\n freeze?: ReadableAddress\n /**\n * The address of the optional account that can clawback holdings of this asset from any account.\n *\n * **This field should be used with caution** as the clawback account has the ability to **unconditionally take assets from any account**.\n *\n * If empty, clawback is not permitted.\n *\n * If not set (`undefined` or `\"\"`) the field will become permanently empty.\n */\n clawback?: ReadableAddress\n}\n\n/** Parameters to define an asset freeze transaction. */\nexport type AssetFreezeParams = CommonTransactionParams & {\n /** The ID of the asset to freeze/unfreeze */\n assetId: bigint\n /** The address of the account to freeze or unfreeze */\n freezeTarget: ReadableAddress\n /** Whether the assets in the account should be frozen */\n frozen: boolean\n}\n\n/** Parameters to define an asset destroy transaction.\n *\n * Created assets can be destroyed only by the asset manager account. All of the assets must be owned by the creator of the asset before the asset can be deleted.\n */\nexport type AssetDestroyParams = CommonTransactionParams & {\n /** ID of the asset to destroy */\n assetId: bigint\n}\n\nexport const buildAssetCreate = (\n params: AssetCreateParams,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Transaction => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n return new Transaction({\n ...commonData,\n type: TransactionType.AssetConfig,\n assetConfig: {\n assetId: 0n, // Asset creation always uses ID 0\n total: params.total,\n decimals: params.decimals,\n defaultFrozen: params.defaultFrozen,\n assetName: params.assetName,\n unitName: params.unitName,\n url: params.url,\n metadataHash: ensureString(params.metadataHash),\n manager: getOptionalAddress(params.manager),\n reserve: getOptionalAddress(params.reserve),\n freeze: getOptionalAddress(params.freeze),\n clawback: getOptionalAddress(params.clawback),\n },\n })\n}\n\nexport const buildAssetConfig = (\n params: AssetConfigParams,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Transaction => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n return new Transaction({\n ...commonData,\n type: TransactionType.AssetConfig,\n assetConfig: {\n assetId: params.assetId,\n manager: getOptionalAddress(params.manager),\n reserve: getOptionalAddress(params.reserve),\n freeze: getOptionalAddress(params.freeze),\n clawback: getOptionalAddress(params.clawback),\n },\n })\n}\n\nexport const buildAssetFreeze = (\n params: AssetFreezeParams,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Transaction => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n return new Transaction({\n ...commonData,\n type: TransactionType.AssetFreeze,\n assetFreeze: {\n assetId: params.assetId,\n freezeTarget: getAddress(params.freezeTarget),\n frozen: params.frozen,\n },\n })\n}\n\nexport const buildAssetDestroy = (\n params: AssetDestroyParams,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Transaction => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n return new Transaction({\n ...commonData,\n type: TransactionType.AssetConfig,\n assetConfig: {\n assetId: params.assetId,\n },\n })\n}\n"],"mappings":";;;;;AA4LA,MAAa,oBACX,QACA,iBACA,0BACgB;AAEhB,QAAO,IAAIA,oBAAAA,YAAY;EACrB,GAFiBC,eAAAA,2BAA2B,QAAQ,iBAAiB,sBAAsB;EAG3F,MAAMC,yBAAAA,gBAAgB;EACtB,aAAa;GACX,SAAS;GACT,OAAO,OAAO;GACd,UAAU,OAAO;GACjB,eAAe,OAAO;GACtB,WAAW,OAAO;GAClB,UAAU,OAAO;GACjB,KAAK,OAAO;GACZ,cAAcC,eAAAA,aAAa,OAAO,aAAa;GAC/C,SAASC,gBAAAA,mBAAmB,OAAO,QAAQ;GAC3C,SAASA,gBAAAA,mBAAmB,OAAO,QAAQ;GAC3C,QAAQA,gBAAAA,mBAAmB,OAAO,OAAO;GACzC,UAAUA,gBAAAA,mBAAmB,OAAO,SAAS;GAC9C;EACF,CAAC;;AAGJ,MAAa,oBACX,QACA,iBACA,0BACgB;AAEhB,QAAO,IAAIJ,oBAAAA,YAAY;EACrB,GAFiBC,eAAAA,2BAA2B,QAAQ,iBAAiB,sBAAsB;EAG3F,MAAMC,yBAAAA,gBAAgB;EACtB,aAAa;GACX,SAAS,OAAO;GAChB,SAASE,gBAAAA,mBAAmB,OAAO,QAAQ;GAC3C,SAASA,gBAAAA,mBAAmB,OAAO,QAAQ;GAC3C,QAAQA,gBAAAA,mBAAmB,OAAO,OAAO;GACzC,UAAUA,gBAAAA,mBAAmB,OAAO,SAAS;GAC9C;EACF,CAAC;;AAGJ,MAAa,oBACX,QACA,iBACA,0BACgB;AAEhB,QAAO,IAAIJ,oBAAAA,YAAY;EACrB,GAFiBC,eAAAA,2BAA2B,QAAQ,iBAAiB,sBAAsB;EAG3F,MAAMC,yBAAAA,gBAAgB;EACtB,aAAa;GACX,SAAS,OAAO;GAChB,cAAcG,gBAAAA,WAAW,OAAO,aAAa;GAC7C,QAAQ,OAAO;GAChB;EACF,CAAC;;AAGJ,MAAa,qBACX,QACA,iBACA,0BACgB;AAEhB,QAAO,IAAIL,oBAAAA,YAAY;EACrB,GAFiBC,eAAAA,2BAA2B,QAAQ,iBAAiB,sBAAsB;EAG3F,MAAMC,yBAAAA,gBAAgB;EACtB,aAAa,EACX,SAAS,OAAO,SACjB;EACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"asset-config.js","names":["Transaction","buildTransactionCommonData","ensureString","getOptionalAddress","getAddress"],"sources":["../../src/transactions/asset-config.ts"],"sourcesContent":["import { SuggestedParams } from '@algorandfoundation/algokit-algod-client'\nimport { ReadableAddress, getAddress, getOptionalAddress } from '@algorandfoundation/algokit-common'\nimport { Transaction, TransactionType } from '@algorandfoundation/algokit-transact'\nimport { CommonTransactionParams, buildTransactionCommonData, ensureString } from './common'\n\n/** Parameters to define an asset create transaction.\n *\n * The account that sends this transaction will automatically be opted in to the asset and will hold all units after creation.\n */\nexport type AssetCreateParams = CommonTransactionParams & {\n /** The total amount of the smallest divisible (decimal) unit to create.\n *\n * For example, if `decimals` is, say, 2, then for every 100 `total` there would be 1 whole unit.\n *\n * This field can only be specified upon asset creation.\n */\n total: bigint\n\n /** The amount of decimal places the asset should have.\n *\n * If unspecified then the asset will be in whole units (i.e. `0`).\n *\n * * If 0, the asset is not divisible;\n * * If 1, the base unit of the asset is in tenths;\n * * If 2, the base unit of the asset is in hundredths;\n * * If 3, the base unit of the asset is in thousandths;\n * * and so on up to 19 decimal places.\n *\n * This field can only be specified upon asset creation.\n */\n decimals?: number\n\n /** The optional name of the asset.\n *\n * Max size is 32 bytes.\n *\n * This field can only be specified upon asset creation.\n */\n assetName?: string\n\n /** The optional name of the unit of this asset (e.g. ticker name).\n *\n * Max size is 8 bytes.\n *\n * This field can only be specified upon asset creation.\n */\n unitName?: string\n\n /** Specifies an optional URL where more information about the asset can be retrieved (e.g. metadata).\n *\n * Max size is 96 bytes.\n *\n * This field can only be specified upon asset creation.\n */\n url?: string\n\n /** 32-byte hash of some metadata that is relevant to your asset and/or asset holders.\n *\n * The format of this metadata is up to the application.\n *\n * This field can only be specified upon asset creation.\n */\n metadataHash?: string | Uint8Array\n\n /** Whether the asset is frozen by default for all accounts.\n * Defaults to `false`.\n *\n * If `true` then for anyone apart from the creator to hold the\n * asset it needs to be unfrozen per account using an asset freeze\n * transaction from the `freeze` account, which must be set on creation.\n *\n * This field can only be specified upon asset creation.\n */\n defaultFrozen?: boolean\n\n /** The address of the optional account that can manage the configuration of the asset and destroy it.\n *\n * The configuration fields it can change are `manager`, `reserve`, `clawback`, and `freeze`.\n *\n * If not set (`undefined` or `\"\"`) at asset creation or subsequently set to empty by the `manager` the asset becomes permanently immutable.\n */\n manager?: ReadableAddress\n\n /**\n * The address of the optional account that holds the reserve (uncirculated supply) units of the asset.\n *\n * This address has no specific authority in the protocol itself and is informational only.\n *\n * Some standards like [ARC-19](https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0019.md)\n * rely on this field to hold meaningful data.\n *\n * It can be used in the case where you want to signal to holders of your asset that the uncirculated units\n * of the asset reside in an account that is different from the default creator account.\n *\n * If not set (`undefined` or `\"\"`) at asset creation or subsequently set to empty by the manager the field is permanently empty.\n */\n reserve?: ReadableAddress\n\n /**\n * The address of the optional account that can be used to freeze or unfreeze holdings of this asset for any account.\n *\n * If empty, freezing is not permitted.\n *\n * If not set (`undefined` or `\"\"`) at asset creation or subsequently set to empty by the manager the field is permanently empty.\n */\n freeze?: ReadableAddress\n\n /**\n * The address of the optional account that can clawback holdings of this asset from any account.\n *\n * **This field should be used with caution** as the clawback account has the ability to **unconditionally take assets from any account**.\n *\n * If empty, clawback is not permitted.\n *\n * If not set (`undefined` or `\"\"`) at asset creation or subsequently set to empty by the manager the field is permanently empty.\n */\n clawback?: ReadableAddress\n}\n\n/** Parameters to define an asset reconfiguration transaction.\n *\n * **Note:** The manager, reserve, freeze, and clawback addresses\n * are immutably empty if they are not set. If manager is not set then\n * all fields are immutable from that point forward.\n */\nexport type AssetConfigParams = CommonTransactionParams & {\n /** ID of the asset to reconfigure */\n assetId: bigint\n /** The address of the optional account that can manage the configuration of the asset and destroy it.\n *\n * The configuration fields it can change are `manager`, `reserve`, `clawback`, and `freeze`.\n *\n * If not set (`undefined` or `\"\"`) the asset will become permanently immutable.\n */\n manager?: ReadableAddress\n /**\n * The address of the optional account that holds the reserve (uncirculated supply) units of the asset.\n *\n * This address has no specific authority in the protocol itself and is informational only.\n *\n * Some standards like [ARC-19](https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0019.md)\n * rely on this field to hold meaningful data.\n *\n * It can be used in the case where you want to signal to holders of your asset that the uncirculated units\n * of the asset reside in an account that is different from the default creator account.\n *\n * If not set (`undefined` or `\"\"`) the field will become permanently empty.\n */\n reserve?: ReadableAddress\n /**\n * The address of the optional account that can be used to freeze or unfreeze holdings of this asset for any account.\n *\n * If empty, freezing is not permitted.\n *\n * If not set (`undefined` or `\"\"`) the field will become permanently empty.\n */\n freeze?: ReadableAddress\n /**\n * The address of the optional account that can clawback holdings of this asset from any account.\n *\n * **This field should be used with caution** as the clawback account has the ability to **unconditionally take assets from any account**.\n *\n * If empty, clawback is not permitted.\n *\n * If not set (`undefined` or `\"\"`) the field will become permanently empty.\n */\n clawback?: ReadableAddress\n}\n\n/** Parameters to define an asset freeze transaction. */\nexport type AssetFreezeParams = CommonTransactionParams & {\n /** The ID of the asset to freeze/unfreeze */\n assetId: bigint\n /** The address of the account to freeze or unfreeze */\n freezeTarget: ReadableAddress\n /** Whether the assets in the account should be frozen */\n frozen: boolean\n}\n\n/** Parameters to define an asset destroy transaction.\n *\n * Created assets can be destroyed only by the asset manager account. All of the assets must be owned by the creator of the asset before the asset can be deleted.\n */\nexport type AssetDestroyParams = CommonTransactionParams & {\n /** ID of the asset to destroy */\n assetId: bigint\n}\n\nexport const buildAssetCreate = (\n params: AssetCreateParams,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Transaction => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n return new Transaction({\n ...commonData,\n type: TransactionType.AssetConfig,\n assetConfig: {\n assetId: 0n, // Asset creation always uses ID 0\n total: params.total,\n decimals: params.decimals,\n defaultFrozen: params.defaultFrozen,\n assetName: params.assetName,\n unitName: params.unitName,\n url: params.url,\n metadataHash: ensureString(params.metadataHash),\n manager: getOptionalAddress(params.manager),\n reserve: getOptionalAddress(params.reserve),\n freeze: getOptionalAddress(params.freeze),\n clawback: getOptionalAddress(params.clawback),\n },\n })\n}\n\nexport const buildAssetConfig = (\n params: AssetConfigParams,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Transaction => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n return new Transaction({\n ...commonData,\n type: TransactionType.AssetConfig,\n assetConfig: {\n assetId: params.assetId,\n manager: getOptionalAddress(params.manager),\n reserve: getOptionalAddress(params.reserve),\n freeze: getOptionalAddress(params.freeze),\n clawback: getOptionalAddress(params.clawback),\n },\n })\n}\n\nexport const buildAssetFreeze = (\n params: AssetFreezeParams,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Transaction => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n return new Transaction({\n ...commonData,\n type: TransactionType.AssetFreeze,\n assetFreeze: {\n assetId: params.assetId,\n freezeTarget: getAddress(params.freezeTarget),\n frozen: params.frozen,\n },\n })\n}\n\nexport const buildAssetDestroy = (\n params: AssetDestroyParams,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Transaction => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n return new Transaction({\n ...commonData,\n type: TransactionType.AssetConfig,\n assetConfig: {\n assetId: params.assetId,\n },\n })\n}\n"],"mappings":";;;;;AA4LA,MAAa,oBACX,QACA,iBACA,0BACgB;CAEhB,OAAO,IAAIA,oBAAAA,YAAY;EACrB,GAFiBC,eAAAA,2BAA2B,QAAQ,iBAAiB,qBAEzD;EACZ,MAAA;EACA,aAAa;GACX,SAAS;GACT,OAAO,OAAO;GACd,UAAU,OAAO;GACjB,eAAe,OAAO;GACtB,WAAW,OAAO;GAClB,UAAU,OAAO;GACjB,KAAK,OAAO;GACZ,cAAcC,eAAAA,aAAa,OAAO,YAAY;GAC9C,SAASC,gBAAAA,mBAAmB,OAAO,OAAO;GAC1C,SAASA,gBAAAA,mBAAmB,OAAO,OAAO;GAC1C,QAAQA,gBAAAA,mBAAmB,OAAO,MAAM;GACxC,UAAUA,gBAAAA,mBAAmB,OAAO,QAAQ;EAC9C;CACF,CAAC;AACH;AAEA,MAAa,oBACX,QACA,iBACA,0BACgB;CAEhB,OAAO,IAAIH,oBAAAA,YAAY;EACrB,GAFiBC,eAAAA,2BAA2B,QAAQ,iBAAiB,qBAEzD;EACZ,MAAA;EACA,aAAa;GACX,SAAS,OAAO;GAChB,SAASE,gBAAAA,mBAAmB,OAAO,OAAO;GAC1C,SAASA,gBAAAA,mBAAmB,OAAO,OAAO;GAC1C,QAAQA,gBAAAA,mBAAmB,OAAO,MAAM;GACxC,UAAUA,gBAAAA,mBAAmB,OAAO,QAAQ;EAC9C;CACF,CAAC;AACH;AAEA,MAAa,oBACX,QACA,iBACA,0BACgB;CAEhB,OAAO,IAAIH,oBAAAA,YAAY;EACrB,GAFiBC,eAAAA,2BAA2B,QAAQ,iBAAiB,qBAEzD;EACZ,MAAA;EACA,aAAa;GACX,SAAS,OAAO;GAChB,cAAcG,gBAAAA,WAAW,OAAO,YAAY;GAC5C,QAAQ,OAAO;EACjB;CACF,CAAC;AACH;AAEA,MAAa,qBACX,QACA,iBACA,0BACgB;CAEhB,OAAO,IAAIJ,oBAAAA,YAAY;EACrB,GAFiBC,eAAAA,2BAA2B,QAAQ,iBAAiB,qBAEzD;EACZ,MAAA;EACA,aAAa,EACX,SAAS,OAAO,QAClB;CACF,CAAC;AACH"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { getAddress, getOptionalAddress } from "../packages/common/src/address.mjs";
|
|
2
|
-
import
|
|
2
|
+
import "../packages/transact/src/transactions/transaction-type.mjs";
|
|
3
3
|
import { Transaction } from "../packages/transact/src/transactions/transaction.mjs";
|
|
4
4
|
import { buildTransactionCommonData, ensureString } from "./common.mjs";
|
|
5
5
|
//#region src/transactions/asset-config.ts
|
|
6
6
|
const buildAssetCreate = (params, suggestedParams, defaultValidityWindow) => {
|
|
7
7
|
return new Transaction({
|
|
8
8
|
...buildTransactionCommonData(params, suggestedParams, defaultValidityWindow),
|
|
9
|
-
type:
|
|
9
|
+
type: "acfg",
|
|
10
10
|
assetConfig: {
|
|
11
11
|
assetId: 0n,
|
|
12
12
|
total: params.total,
|
|
@@ -26,7 +26,7 @@ const buildAssetCreate = (params, suggestedParams, defaultValidityWindow) => {
|
|
|
26
26
|
const buildAssetConfig = (params, suggestedParams, defaultValidityWindow) => {
|
|
27
27
|
return new Transaction({
|
|
28
28
|
...buildTransactionCommonData(params, suggestedParams, defaultValidityWindow),
|
|
29
|
-
type:
|
|
29
|
+
type: "acfg",
|
|
30
30
|
assetConfig: {
|
|
31
31
|
assetId: params.assetId,
|
|
32
32
|
manager: getOptionalAddress(params.manager),
|
|
@@ -39,7 +39,7 @@ const buildAssetConfig = (params, suggestedParams, defaultValidityWindow) => {
|
|
|
39
39
|
const buildAssetFreeze = (params, suggestedParams, defaultValidityWindow) => {
|
|
40
40
|
return new Transaction({
|
|
41
41
|
...buildTransactionCommonData(params, suggestedParams, defaultValidityWindow),
|
|
42
|
-
type:
|
|
42
|
+
type: "afrz",
|
|
43
43
|
assetFreeze: {
|
|
44
44
|
assetId: params.assetId,
|
|
45
45
|
freezeTarget: getAddress(params.freezeTarget),
|
|
@@ -50,7 +50,7 @@ const buildAssetFreeze = (params, suggestedParams, defaultValidityWindow) => {
|
|
|
50
50
|
const buildAssetDestroy = (params, suggestedParams, defaultValidityWindow) => {
|
|
51
51
|
return new Transaction({
|
|
52
52
|
...buildTransactionCommonData(params, suggestedParams, defaultValidityWindow),
|
|
53
|
-
type:
|
|
53
|
+
type: "acfg",
|
|
54
54
|
assetConfig: { assetId: params.assetId }
|
|
55
55
|
});
|
|
56
56
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-config.mjs","names":[],"sources":["../../src/transactions/asset-config.ts"],"sourcesContent":["import { SuggestedParams } from '@algorandfoundation/algokit-algod-client'\nimport { ReadableAddress, getAddress, getOptionalAddress } from '@algorandfoundation/algokit-common'\nimport { Transaction, TransactionType } from '@algorandfoundation/algokit-transact'\nimport { CommonTransactionParams, buildTransactionCommonData, ensureString } from './common'\n\n/** Parameters to define an asset create transaction.\n *\n * The account that sends this transaction will automatically be opted in to the asset and will hold all units after creation.\n */\nexport type AssetCreateParams = CommonTransactionParams & {\n /** The total amount of the smallest divisible (decimal) unit to create.\n *\n * For example, if `decimals` is, say, 2, then for every 100 `total` there would be 1 whole unit.\n *\n * This field can only be specified upon asset creation.\n */\n total: bigint\n\n /** The amount of decimal places the asset should have.\n *\n * If unspecified then the asset will be in whole units (i.e. `0`).\n *\n * * If 0, the asset is not divisible;\n * * If 1, the base unit of the asset is in tenths;\n * * If 2, the base unit of the asset is in hundredths;\n * * If 3, the base unit of the asset is in thousandths;\n * * and so on up to 19 decimal places.\n *\n * This field can only be specified upon asset creation.\n */\n decimals?: number\n\n /** The optional name of the asset.\n *\n * Max size is 32 bytes.\n *\n * This field can only be specified upon asset creation.\n */\n assetName?: string\n\n /** The optional name of the unit of this asset (e.g. ticker name).\n *\n * Max size is 8 bytes.\n *\n * This field can only be specified upon asset creation.\n */\n unitName?: string\n\n /** Specifies an optional URL where more information about the asset can be retrieved (e.g. metadata).\n *\n * Max size is 96 bytes.\n *\n * This field can only be specified upon asset creation.\n */\n url?: string\n\n /** 32-byte hash of some metadata that is relevant to your asset and/or asset holders.\n *\n * The format of this metadata is up to the application.\n *\n * This field can only be specified upon asset creation.\n */\n metadataHash?: string | Uint8Array\n\n /** Whether the asset is frozen by default for all accounts.\n * Defaults to `false`.\n *\n * If `true` then for anyone apart from the creator to hold the\n * asset it needs to be unfrozen per account using an asset freeze\n * transaction from the `freeze` account, which must be set on creation.\n *\n * This field can only be specified upon asset creation.\n */\n defaultFrozen?: boolean\n\n /** The address of the optional account that can manage the configuration of the asset and destroy it.\n *\n * The configuration fields it can change are `manager`, `reserve`, `clawback`, and `freeze`.\n *\n * If not set (`undefined` or `\"\"`) at asset creation or subsequently set to empty by the `manager` the asset becomes permanently immutable.\n */\n manager?: ReadableAddress\n\n /**\n * The address of the optional account that holds the reserve (uncirculated supply) units of the asset.\n *\n * This address has no specific authority in the protocol itself and is informational only.\n *\n * Some standards like [ARC-19](https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0019.md)\n * rely on this field to hold meaningful data.\n *\n * It can be used in the case where you want to signal to holders of your asset that the uncirculated units\n * of the asset reside in an account that is different from the default creator account.\n *\n * If not set (`undefined` or `\"\"`) at asset creation or subsequently set to empty by the manager the field is permanently empty.\n */\n reserve?: ReadableAddress\n\n /**\n * The address of the optional account that can be used to freeze or unfreeze holdings of this asset for any account.\n *\n * If empty, freezing is not permitted.\n *\n * If not set (`undefined` or `\"\"`) at asset creation or subsequently set to empty by the manager the field is permanently empty.\n */\n freeze?: ReadableAddress\n\n /**\n * The address of the optional account that can clawback holdings of this asset from any account.\n *\n * **This field should be used with caution** as the clawback account has the ability to **unconditionally take assets from any account**.\n *\n * If empty, clawback is not permitted.\n *\n * If not set (`undefined` or `\"\"`) at asset creation or subsequently set to empty by the manager the field is permanently empty.\n */\n clawback?: ReadableAddress\n}\n\n/** Parameters to define an asset reconfiguration transaction.\n *\n * **Note:** The manager, reserve, freeze, and clawback addresses\n * are immutably empty if they are not set. If manager is not set then\n * all fields are immutable from that point forward.\n */\nexport type AssetConfigParams = CommonTransactionParams & {\n /** ID of the asset to reconfigure */\n assetId: bigint\n /** The address of the optional account that can manage the configuration of the asset and destroy it.\n *\n * The configuration fields it can change are `manager`, `reserve`, `clawback`, and `freeze`.\n *\n * If not set (`undefined` or `\"\"`) the asset will become permanently immutable.\n */\n manager?: ReadableAddress\n /**\n * The address of the optional account that holds the reserve (uncirculated supply) units of the asset.\n *\n * This address has no specific authority in the protocol itself and is informational only.\n *\n * Some standards like [ARC-19](https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0019.md)\n * rely on this field to hold meaningful data.\n *\n * It can be used in the case where you want to signal to holders of your asset that the uncirculated units\n * of the asset reside in an account that is different from the default creator account.\n *\n * If not set (`undefined` or `\"\"`) the field will become permanently empty.\n */\n reserve?: ReadableAddress\n /**\n * The address of the optional account that can be used to freeze or unfreeze holdings of this asset for any account.\n *\n * If empty, freezing is not permitted.\n *\n * If not set (`undefined` or `\"\"`) the field will become permanently empty.\n */\n freeze?: ReadableAddress\n /**\n * The address of the optional account that can clawback holdings of this asset from any account.\n *\n * **This field should be used with caution** as the clawback account has the ability to **unconditionally take assets from any account**.\n *\n * If empty, clawback is not permitted.\n *\n * If not set (`undefined` or `\"\"`) the field will become permanently empty.\n */\n clawback?: ReadableAddress\n}\n\n/** Parameters to define an asset freeze transaction. */\nexport type AssetFreezeParams = CommonTransactionParams & {\n /** The ID of the asset to freeze/unfreeze */\n assetId: bigint\n /** The address of the account to freeze or unfreeze */\n freezeTarget: ReadableAddress\n /** Whether the assets in the account should be frozen */\n frozen: boolean\n}\n\n/** Parameters to define an asset destroy transaction.\n *\n * Created assets can be destroyed only by the asset manager account. All of the assets must be owned by the creator of the asset before the asset can be deleted.\n */\nexport type AssetDestroyParams = CommonTransactionParams & {\n /** ID of the asset to destroy */\n assetId: bigint\n}\n\nexport const buildAssetCreate = (\n params: AssetCreateParams,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Transaction => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n return new Transaction({\n ...commonData,\n type: TransactionType.AssetConfig,\n assetConfig: {\n assetId: 0n, // Asset creation always uses ID 0\n total: params.total,\n decimals: params.decimals,\n defaultFrozen: params.defaultFrozen,\n assetName: params.assetName,\n unitName: params.unitName,\n url: params.url,\n metadataHash: ensureString(params.metadataHash),\n manager: getOptionalAddress(params.manager),\n reserve: getOptionalAddress(params.reserve),\n freeze: getOptionalAddress(params.freeze),\n clawback: getOptionalAddress(params.clawback),\n },\n })\n}\n\nexport const buildAssetConfig = (\n params: AssetConfigParams,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Transaction => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n return new Transaction({\n ...commonData,\n type: TransactionType.AssetConfig,\n assetConfig: {\n assetId: params.assetId,\n manager: getOptionalAddress(params.manager),\n reserve: getOptionalAddress(params.reserve),\n freeze: getOptionalAddress(params.freeze),\n clawback: getOptionalAddress(params.clawback),\n },\n })\n}\n\nexport const buildAssetFreeze = (\n params: AssetFreezeParams,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Transaction => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n return new Transaction({\n ...commonData,\n type: TransactionType.AssetFreeze,\n assetFreeze: {\n assetId: params.assetId,\n freezeTarget: getAddress(params.freezeTarget),\n frozen: params.frozen,\n },\n })\n}\n\nexport const buildAssetDestroy = (\n params: AssetDestroyParams,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Transaction => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n return new Transaction({\n ...commonData,\n type: TransactionType.AssetConfig,\n assetConfig: {\n assetId: params.assetId,\n },\n })\n}\n"],"mappings":";;;;;AA4LA,MAAa,oBACX,QACA,iBACA,0BACgB;AAEhB,QAAO,IAAI,YAAY;EACrB,GAFiB,2BAA2B,QAAQ,iBAAiB,sBAAsB;EAG3F,MAAM,gBAAgB;EACtB,aAAa;GACX,SAAS;GACT,OAAO,OAAO;GACd,UAAU,OAAO;GACjB,eAAe,OAAO;GACtB,WAAW,OAAO;GAClB,UAAU,OAAO;GACjB,KAAK,OAAO;GACZ,cAAc,aAAa,OAAO,aAAa;GAC/C,SAAS,mBAAmB,OAAO,QAAQ;GAC3C,SAAS,mBAAmB,OAAO,QAAQ;GAC3C,QAAQ,mBAAmB,OAAO,OAAO;GACzC,UAAU,mBAAmB,OAAO,SAAS;GAC9C;EACF,CAAC;;AAGJ,MAAa,oBACX,QACA,iBACA,0BACgB;AAEhB,QAAO,IAAI,YAAY;EACrB,GAFiB,2BAA2B,QAAQ,iBAAiB,sBAAsB;EAG3F,MAAM,gBAAgB;EACtB,aAAa;GACX,SAAS,OAAO;GAChB,SAAS,mBAAmB,OAAO,QAAQ;GAC3C,SAAS,mBAAmB,OAAO,QAAQ;GAC3C,QAAQ,mBAAmB,OAAO,OAAO;GACzC,UAAU,mBAAmB,OAAO,SAAS;GAC9C;EACF,CAAC;;AAGJ,MAAa,oBACX,QACA,iBACA,0BACgB;AAEhB,QAAO,IAAI,YAAY;EACrB,GAFiB,2BAA2B,QAAQ,iBAAiB,sBAAsB;EAG3F,MAAM,gBAAgB;EACtB,aAAa;GACX,SAAS,OAAO;GAChB,cAAc,WAAW,OAAO,aAAa;GAC7C,QAAQ,OAAO;GAChB;EACF,CAAC;;AAGJ,MAAa,qBACX,QACA,iBACA,0BACgB;AAEhB,QAAO,IAAI,YAAY;EACrB,GAFiB,2BAA2B,QAAQ,iBAAiB,sBAAsB;EAG3F,MAAM,gBAAgB;EACtB,aAAa,EACX,SAAS,OAAO,SACjB;EACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"asset-config.mjs","names":[],"sources":["../../src/transactions/asset-config.ts"],"sourcesContent":["import { SuggestedParams } from '@algorandfoundation/algokit-algod-client'\nimport { ReadableAddress, getAddress, getOptionalAddress } from '@algorandfoundation/algokit-common'\nimport { Transaction, TransactionType } from '@algorandfoundation/algokit-transact'\nimport { CommonTransactionParams, buildTransactionCommonData, ensureString } from './common'\n\n/** Parameters to define an asset create transaction.\n *\n * The account that sends this transaction will automatically be opted in to the asset and will hold all units after creation.\n */\nexport type AssetCreateParams = CommonTransactionParams & {\n /** The total amount of the smallest divisible (decimal) unit to create.\n *\n * For example, if `decimals` is, say, 2, then for every 100 `total` there would be 1 whole unit.\n *\n * This field can only be specified upon asset creation.\n */\n total: bigint\n\n /** The amount of decimal places the asset should have.\n *\n * If unspecified then the asset will be in whole units (i.e. `0`).\n *\n * * If 0, the asset is not divisible;\n * * If 1, the base unit of the asset is in tenths;\n * * If 2, the base unit of the asset is in hundredths;\n * * If 3, the base unit of the asset is in thousandths;\n * * and so on up to 19 decimal places.\n *\n * This field can only be specified upon asset creation.\n */\n decimals?: number\n\n /** The optional name of the asset.\n *\n * Max size is 32 bytes.\n *\n * This field can only be specified upon asset creation.\n */\n assetName?: string\n\n /** The optional name of the unit of this asset (e.g. ticker name).\n *\n * Max size is 8 bytes.\n *\n * This field can only be specified upon asset creation.\n */\n unitName?: string\n\n /** Specifies an optional URL where more information about the asset can be retrieved (e.g. metadata).\n *\n * Max size is 96 bytes.\n *\n * This field can only be specified upon asset creation.\n */\n url?: string\n\n /** 32-byte hash of some metadata that is relevant to your asset and/or asset holders.\n *\n * The format of this metadata is up to the application.\n *\n * This field can only be specified upon asset creation.\n */\n metadataHash?: string | Uint8Array\n\n /** Whether the asset is frozen by default for all accounts.\n * Defaults to `false`.\n *\n * If `true` then for anyone apart from the creator to hold the\n * asset it needs to be unfrozen per account using an asset freeze\n * transaction from the `freeze` account, which must be set on creation.\n *\n * This field can only be specified upon asset creation.\n */\n defaultFrozen?: boolean\n\n /** The address of the optional account that can manage the configuration of the asset and destroy it.\n *\n * The configuration fields it can change are `manager`, `reserve`, `clawback`, and `freeze`.\n *\n * If not set (`undefined` or `\"\"`) at asset creation or subsequently set to empty by the `manager` the asset becomes permanently immutable.\n */\n manager?: ReadableAddress\n\n /**\n * The address of the optional account that holds the reserve (uncirculated supply) units of the asset.\n *\n * This address has no specific authority in the protocol itself and is informational only.\n *\n * Some standards like [ARC-19](https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0019.md)\n * rely on this field to hold meaningful data.\n *\n * It can be used in the case where you want to signal to holders of your asset that the uncirculated units\n * of the asset reside in an account that is different from the default creator account.\n *\n * If not set (`undefined` or `\"\"`) at asset creation or subsequently set to empty by the manager the field is permanently empty.\n */\n reserve?: ReadableAddress\n\n /**\n * The address of the optional account that can be used to freeze or unfreeze holdings of this asset for any account.\n *\n * If empty, freezing is not permitted.\n *\n * If not set (`undefined` or `\"\"`) at asset creation or subsequently set to empty by the manager the field is permanently empty.\n */\n freeze?: ReadableAddress\n\n /**\n * The address of the optional account that can clawback holdings of this asset from any account.\n *\n * **This field should be used with caution** as the clawback account has the ability to **unconditionally take assets from any account**.\n *\n * If empty, clawback is not permitted.\n *\n * If not set (`undefined` or `\"\"`) at asset creation or subsequently set to empty by the manager the field is permanently empty.\n */\n clawback?: ReadableAddress\n}\n\n/** Parameters to define an asset reconfiguration transaction.\n *\n * **Note:** The manager, reserve, freeze, and clawback addresses\n * are immutably empty if they are not set. If manager is not set then\n * all fields are immutable from that point forward.\n */\nexport type AssetConfigParams = CommonTransactionParams & {\n /** ID of the asset to reconfigure */\n assetId: bigint\n /** The address of the optional account that can manage the configuration of the asset and destroy it.\n *\n * The configuration fields it can change are `manager`, `reserve`, `clawback`, and `freeze`.\n *\n * If not set (`undefined` or `\"\"`) the asset will become permanently immutable.\n */\n manager?: ReadableAddress\n /**\n * The address of the optional account that holds the reserve (uncirculated supply) units of the asset.\n *\n * This address has no specific authority in the protocol itself and is informational only.\n *\n * Some standards like [ARC-19](https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0019.md)\n * rely on this field to hold meaningful data.\n *\n * It can be used in the case where you want to signal to holders of your asset that the uncirculated units\n * of the asset reside in an account that is different from the default creator account.\n *\n * If not set (`undefined` or `\"\"`) the field will become permanently empty.\n */\n reserve?: ReadableAddress\n /**\n * The address of the optional account that can be used to freeze or unfreeze holdings of this asset for any account.\n *\n * If empty, freezing is not permitted.\n *\n * If not set (`undefined` or `\"\"`) the field will become permanently empty.\n */\n freeze?: ReadableAddress\n /**\n * The address of the optional account that can clawback holdings of this asset from any account.\n *\n * **This field should be used with caution** as the clawback account has the ability to **unconditionally take assets from any account**.\n *\n * If empty, clawback is not permitted.\n *\n * If not set (`undefined` or `\"\"`) the field will become permanently empty.\n */\n clawback?: ReadableAddress\n}\n\n/** Parameters to define an asset freeze transaction. */\nexport type AssetFreezeParams = CommonTransactionParams & {\n /** The ID of the asset to freeze/unfreeze */\n assetId: bigint\n /** The address of the account to freeze or unfreeze */\n freezeTarget: ReadableAddress\n /** Whether the assets in the account should be frozen */\n frozen: boolean\n}\n\n/** Parameters to define an asset destroy transaction.\n *\n * Created assets can be destroyed only by the asset manager account. All of the assets must be owned by the creator of the asset before the asset can be deleted.\n */\nexport type AssetDestroyParams = CommonTransactionParams & {\n /** ID of the asset to destroy */\n assetId: bigint\n}\n\nexport const buildAssetCreate = (\n params: AssetCreateParams,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Transaction => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n return new Transaction({\n ...commonData,\n type: TransactionType.AssetConfig,\n assetConfig: {\n assetId: 0n, // Asset creation always uses ID 0\n total: params.total,\n decimals: params.decimals,\n defaultFrozen: params.defaultFrozen,\n assetName: params.assetName,\n unitName: params.unitName,\n url: params.url,\n metadataHash: ensureString(params.metadataHash),\n manager: getOptionalAddress(params.manager),\n reserve: getOptionalAddress(params.reserve),\n freeze: getOptionalAddress(params.freeze),\n clawback: getOptionalAddress(params.clawback),\n },\n })\n}\n\nexport const buildAssetConfig = (\n params: AssetConfigParams,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Transaction => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n return new Transaction({\n ...commonData,\n type: TransactionType.AssetConfig,\n assetConfig: {\n assetId: params.assetId,\n manager: getOptionalAddress(params.manager),\n reserve: getOptionalAddress(params.reserve),\n freeze: getOptionalAddress(params.freeze),\n clawback: getOptionalAddress(params.clawback),\n },\n })\n}\n\nexport const buildAssetFreeze = (\n params: AssetFreezeParams,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Transaction => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n return new Transaction({\n ...commonData,\n type: TransactionType.AssetFreeze,\n assetFreeze: {\n assetId: params.assetId,\n freezeTarget: getAddress(params.freezeTarget),\n frozen: params.frozen,\n },\n })\n}\n\nexport const buildAssetDestroy = (\n params: AssetDestroyParams,\n suggestedParams: SuggestedParams,\n defaultValidityWindow: bigint,\n): Transaction => {\n const commonData = buildTransactionCommonData(params, suggestedParams, defaultValidityWindow)\n return new Transaction({\n ...commonData,\n type: TransactionType.AssetConfig,\n assetConfig: {\n assetId: params.assetId,\n },\n })\n}\n"],"mappings":";;;;;AA4LA,MAAa,oBACX,QACA,iBACA,0BACgB;CAEhB,OAAO,IAAI,YAAY;EACrB,GAFiB,2BAA2B,QAAQ,iBAAiB,qBAEzD;EACZ,MAAA;EACA,aAAa;GACX,SAAS;GACT,OAAO,OAAO;GACd,UAAU,OAAO;GACjB,eAAe,OAAO;GACtB,WAAW,OAAO;GAClB,UAAU,OAAO;GACjB,KAAK,OAAO;GACZ,cAAc,aAAa,OAAO,YAAY;GAC9C,SAAS,mBAAmB,OAAO,OAAO;GAC1C,SAAS,mBAAmB,OAAO,OAAO;GAC1C,QAAQ,mBAAmB,OAAO,MAAM;GACxC,UAAU,mBAAmB,OAAO,QAAQ;EAC9C;CACF,CAAC;AACH;AAEA,MAAa,oBACX,QACA,iBACA,0BACgB;CAEhB,OAAO,IAAI,YAAY;EACrB,GAFiB,2BAA2B,QAAQ,iBAAiB,qBAEzD;EACZ,MAAA;EACA,aAAa;GACX,SAAS,OAAO;GAChB,SAAS,mBAAmB,OAAO,OAAO;GAC1C,SAAS,mBAAmB,OAAO,OAAO;GAC1C,QAAQ,mBAAmB,OAAO,MAAM;GACxC,UAAU,mBAAmB,OAAO,QAAQ;EAC9C;CACF,CAAC;AACH;AAEA,MAAa,oBACX,QACA,iBACA,0BACgB;CAEhB,OAAO,IAAI,YAAY;EACrB,GAFiB,2BAA2B,QAAQ,iBAAiB,qBAEzD;EACZ,MAAA;EACA,aAAa;GACX,SAAS,OAAO;GAChB,cAAc,WAAW,OAAO,YAAY;GAC5C,QAAQ,OAAO;EACjB;CACF,CAAC;AACH;AAEA,MAAa,qBACX,QACA,iBACA,0BACgB;CAEhB,OAAO,IAAI,YAAY;EACrB,GAFiB,2BAA2B,QAAQ,iBAAiB,qBAEzD;EACZ,MAAA;EACA,aAAa,EACX,SAAS,OAAO,QAClB;CACF,CAAC;AACH"}
|