@algorandfoundation/algokit-utils 6.2.1 → 7.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +22 -26
- package/account/account.d.ts +21 -11
- package/account/get-account-config-from-environment.d.ts +0 -1
- package/account/get-account.d.ts +6 -7
- package/account/get-dispenser-account.d.ts +2 -3
- package/account/index.d.ts +0 -1
- package/account/mnemonic-account.d.ts +1 -2
- package/amount.d.ts +41 -9
- package/app-client.d.ts +19 -5
- package/app-deploy.d.ts +18 -2
- package/app.d.ts +39 -3
- package/asset.d.ts +10 -1
- package/config.d.ts +0 -1
- package/debugging/debugging.d.ts +3 -5
- package/debugging/index.d.ts +0 -2
- package/dispenser-client.d.ts +1 -2
- package/index.d.ts +8 -6
- package/index.js +61 -48
- package/index.js.map +1 -1
- package/index.mjs +27 -24
- package/index.mjs.map +1 -1
- package/indexer-lookup.d.ts +10 -9
- package/localnet/get-kmd-wallet-account.d.ts +1 -2
- package/localnet/get-localnet-dispenser-account.d.ts +1 -2
- package/localnet/get-or-create-kmd-wallet-account.d.ts +2 -3
- package/localnet/index.d.ts +0 -1
- package/localnet/is-localnet.d.ts +1 -2
- package/network-client.d.ts +3 -10
- package/package.json +5 -5
- package/{account → src/account}/account.js +38 -15
- package/src/account/account.js.map +1 -0
- package/{account → src/account}/account.mjs +39 -16
- package/src/account/account.mjs.map +1 -0
- package/src/account/get-account-config-from-environment.js.map +1 -0
- package/src/account/get-account-config-from-environment.mjs.map +1 -0
- package/{account → src/account}/get-account.js +5 -5
- package/src/account/get-account.js.map +1 -0
- package/{account → src/account}/get-account.mjs +5 -5
- package/src/account/get-account.mjs.map +1 -0
- package/{account → src/account}/get-dispenser-account.js +3 -3
- package/src/account/get-dispenser-account.js.map +1 -0
- package/{account → src/account}/get-dispenser-account.mjs +3 -3
- package/src/account/get-dispenser-account.mjs.map +1 -0
- package/{account → src/account}/mnemonic-account.js +1 -1
- package/src/account/mnemonic-account.js.map +1 -0
- package/{account → src/account}/mnemonic-account.mjs +1 -1
- package/src/account/mnemonic-account.mjs.map +1 -0
- package/src/amount.js +61 -0
- package/src/amount.js.map +1 -0
- package/src/amount.mjs +54 -0
- package/src/amount.mjs.map +1 -0
- package/{app-client.js → src/app-client.js} +20 -5
- package/src/app-client.js.map +1 -0
- package/{app-client.mjs → src/app-client.mjs} +20 -5
- package/src/app-client.mjs.map +1 -0
- package/src/app-deploy.js +285 -0
- package/src/app-deploy.js.map +1 -0
- package/src/app-deploy.mjs +276 -0
- package/src/app-deploy.mjs.map +1 -0
- package/src/app.js +349 -0
- package/src/app.js.map +1 -0
- package/src/app.mjs +329 -0
- package/src/app.mjs.map +1 -0
- package/src/asset.js +142 -0
- package/src/asset.js.map +1 -0
- package/src/asset.mjs +136 -0
- package/src/asset.mjs.map +1 -0
- package/{config.js → src/config.js} +1 -1
- package/src/config.js.map +1 -0
- package/{config.mjs → src/config.mjs} +1 -1
- package/src/config.mjs.map +1 -0
- package/src/debugging/debugging.js +15 -0
- package/src/debugging/debugging.js.map +1 -0
- package/src/debugging/debugging.mjs +13 -0
- package/src/debugging/debugging.mjs.map +1 -0
- package/{dispenser-client.js → src/dispenser-client.js} +3 -3
- package/src/dispenser-client.js.map +1 -0
- package/{dispenser-client.mjs → src/dispenser-client.mjs} +3 -3
- package/src/dispenser-client.mjs.map +1 -0
- package/{indexer-lookup.js → src/indexer-lookup.js} +14 -10
- package/src/indexer-lookup.js.map +1 -0
- package/{indexer-lookup.mjs → src/indexer-lookup.mjs} +14 -10
- package/src/indexer-lookup.mjs.map +1 -0
- package/{localnet → src/localnet}/get-kmd-wallet-account.js +3 -3
- package/src/localnet/get-kmd-wallet-account.js.map +1 -0
- package/{localnet → src/localnet}/get-kmd-wallet-account.mjs +3 -3
- package/src/localnet/get-kmd-wallet-account.mjs.map +1 -0
- package/{localnet → src/localnet}/get-localnet-dispenser-account.js +3 -3
- package/src/localnet/get-localnet-dispenser-account.js.map +1 -0
- package/{localnet → src/localnet}/get-localnet-dispenser-account.mjs +3 -3
- package/src/localnet/get-localnet-dispenser-account.mjs.map +1 -0
- package/{localnet → src/localnet}/get-or-create-kmd-wallet-account.js +4 -4
- package/src/localnet/get-or-create-kmd-wallet-account.js.map +1 -0
- package/{localnet → src/localnet}/get-or-create-kmd-wallet-account.mjs +4 -4
- package/src/localnet/get-or-create-kmd-wallet-account.mjs.map +1 -0
- package/{localnet → src/localnet}/is-localnet.js +2 -2
- package/src/localnet/is-localnet.js.map +1 -0
- package/{localnet → src/localnet}/is-localnet.mjs +2 -2
- package/src/localnet/is-localnet.mjs.map +1 -0
- package/{network-client.js → src/network-client.js} +5 -12
- package/src/network-client.js.map +1 -0
- package/{network-client.mjs → src/network-client.mjs} +5 -12
- package/src/network-client.mjs.map +1 -0
- package/{testing → src/testing}/account.js +16 -4
- package/src/testing/account.js.map +1 -0
- package/{testing → src/testing}/account.mjs +17 -5
- package/src/testing/account.mjs.map +1 -0
- package/src/testing/fixtures/algokit-log-capture-fixture.js.map +1 -0
- package/src/testing/fixtures/algokit-log-capture-fixture.mjs.map +1 -0
- package/{testing → src/testing}/fixtures/algorand-fixture.js +18 -14
- package/src/testing/fixtures/algorand-fixture.js.map +1 -0
- package/{testing → src/testing}/fixtures/algorand-fixture.mjs +18 -14
- package/src/testing/fixtures/algorand-fixture.mjs.map +1 -0
- package/src/testing/indexer.js.map +1 -0
- package/src/testing/indexer.mjs.map +1 -0
- package/{testing → src/testing}/test-logger.js +7 -3
- package/src/testing/test-logger.js.map +1 -0
- package/{testing → src/testing}/test-logger.mjs +7 -3
- package/src/testing/test-logger.mjs.map +1 -0
- package/src/testing/transaction-logger.js.map +1 -0
- package/src/testing/transaction-logger.mjs.map +1 -0
- package/src/transaction/legacy-bridge.js +129 -0
- package/src/transaction/legacy-bridge.js.map +1 -0
- package/src/transaction/legacy-bridge.mjs +124 -0
- package/src/transaction/legacy-bridge.mjs.map +1 -0
- package/{transaction → src/transaction}/perform-atomic-transaction-composer-simulate.js +14 -9
- package/src/transaction/perform-atomic-transaction-composer-simulate.js.map +1 -0
- package/{transaction → src/transaction}/perform-atomic-transaction-composer-simulate.mjs +15 -10
- package/src/transaction/perform-atomic-transaction-composer-simulate.mjs.map +1 -0
- package/{transaction → src/transaction}/transaction.js +221 -141
- package/src/transaction/transaction.js.map +1 -0
- package/{transaction → src/transaction}/transaction.mjs +222 -142
- package/src/transaction/transaction.mjs.map +1 -0
- package/src/transfer/transfer-algos.js +31 -0
- package/src/transfer/transfer-algos.js.map +1 -0
- package/src/transfer/transfer-algos.mjs +29 -0
- package/src/transfer/transfer-algos.mjs.map +1 -0
- package/src/transfer/transfer.js +112 -0
- package/src/transfer/transfer.js.map +1 -0
- package/src/transfer/transfer.mjs +108 -0
- package/src/transfer/transfer.mjs.map +1 -0
- package/{util.js → src/util.js} +33 -7
- package/src/util.js.map +1 -0
- package/{util.mjs → src/util.mjs} +31 -7
- package/src/util.mjs.map +1 -0
- package/testing/_asset.d.ts +3 -5
- package/testing/account.d.ts +4 -4
- package/testing/fixtures/algokit-log-capture-fixture.d.ts +0 -1
- package/testing/fixtures/algorand-fixture.d.ts +1 -2
- package/testing/fixtures/index.d.ts +0 -1
- package/testing/index.d.ts +0 -1
- package/testing/index.js +6 -6
- package/testing/index.mjs +6 -6
- package/testing/indexer.d.ts +0 -1
- package/testing/test-logger.d.ts +0 -1
- package/testing/transaction-logger.d.ts +0 -1
- package/transaction/index.d.ts +0 -1
- package/transaction/legacy-bridge.d.ts +35 -0
- package/transaction/perform-atomic-transaction-composer-simulate.d.ts +4 -2
- package/transaction/transaction.d.ts +39 -20
- package/transfer/index.d.ts +0 -1
- package/transfer/transfer-algos.d.ts +4 -3
- package/transfer/transfer.d.ts +8 -2
- package/types/account-manager.d.ts +165 -40
- package/types/account-manager.js +255 -59
- package/types/account-manager.js.map +1 -1
- package/types/account-manager.mjs +255 -59
- package/types/account-manager.mjs.map +1 -1
- package/types/account.d.ts +137 -14
- package/types/account.js +2 -2
- package/types/account.js.map +1 -1
- package/types/account.mjs +3 -3
- package/types/account.mjs.map +1 -1
- package/types/algo-http-client-with-retry.d.ts +1 -3
- package/types/algo-http-client-with-retry.js +34 -4
- package/types/algo-http-client-with-retry.js.map +1 -1
- package/types/algo-http-client-with-retry.mjs +33 -3
- package/types/algo-http-client-with-retry.mjs.map +1 -1
- package/types/algorand-client-interface.d.ts +28 -0
- package/types/algorand-client-interface.js +3 -0
- package/types/algorand-client-interface.js.map +1 -0
- package/types/algorand-client-interface.mjs +2 -0
- package/types/algorand-client-interface.mjs.map +1 -0
- package/types/algorand-client-transaction-creator.d.ts +718 -0
- package/types/algorand-client-transaction-creator.js +683 -0
- package/types/algorand-client-transaction-creator.js.map +1 -0
- package/types/algorand-client-transaction-creator.mjs +681 -0
- package/types/algorand-client-transaction-creator.mjs.map +1 -0
- package/types/algorand-client-transaction-sender.d.ts +1158 -0
- package/types/algorand-client-transaction-sender.js +852 -0
- package/types/algorand-client-transaction-sender.js.map +1 -0
- package/types/algorand-client-transaction-sender.mjs +850 -0
- package/types/algorand-client-transaction-sender.mjs.map +1 -0
- package/types/algorand-client.d.ts +48 -91
- package/types/algorand-client.js +53 -132
- package/types/algorand-client.js.map +1 -1
- package/types/algorand-client.mjs +55 -131
- package/types/algorand-client.mjs.map +1 -1
- package/types/amount.d.ts +23 -12
- package/types/amount.js +33 -10
- package/types/amount.js.map +1 -1
- package/types/amount.mjs +33 -10
- package/types/amount.mjs.map +1 -1
- package/types/app-arc56.d.ts +359 -0
- package/types/app-arc56.js +184 -0
- package/types/app-arc56.js.map +1 -0
- package/types/app-arc56.mjs +175 -0
- package/types/app-arc56.mjs.map +1 -0
- package/types/app-client.d.ts +1511 -15
- package/types/app-client.js +1029 -43
- package/types/app-client.js.map +1 -1
- package/types/app-client.mjs +1030 -45
- package/types/app-client.mjs.map +1 -1
- package/types/app-deployer.d.ts +126 -0
- package/types/app-deployer.js +353 -0
- package/types/app-deployer.js.map +1 -0
- package/types/app-deployer.mjs +351 -0
- package/types/app-deployer.mjs.map +1 -0
- package/types/app-factory.d.ts +846 -0
- package/types/app-factory.js +410 -0
- package/types/app-factory.js.map +1 -0
- package/types/app-factory.mjs +408 -0
- package/types/app-factory.mjs.map +1 -0
- package/types/app-manager.d.ts +244 -0
- package/types/app-manager.js +423 -0
- package/types/app-manager.js.map +1 -0
- package/types/app-manager.mjs +421 -0
- package/types/app-manager.mjs.map +1 -0
- package/types/app-spec.d.ts +2 -1
- package/types/app-spec.js +127 -0
- package/types/app-spec.js.map +1 -1
- package/types/app-spec.mjs +126 -0
- package/types/app-spec.mjs.map +1 -1
- package/types/app.d.ts +57 -18
- package/types/app.js +1 -1
- package/types/app.js.map +1 -1
- package/types/app.mjs +1 -1
- package/types/app.mjs.map +1 -1
- package/types/asset-manager.d.ts +205 -0
- package/types/asset-manager.js +176 -0
- package/types/asset-manager.js.map +1 -0
- package/types/asset-manager.mjs +174 -0
- package/types/asset-manager.mjs.map +1 -0
- package/types/asset.d.ts +4 -5
- package/types/async-event-emitter.d.ts +14 -0
- package/types/async-event-emitter.js +50 -0
- package/types/async-event-emitter.js.map +1 -0
- package/types/async-event-emitter.mjs +48 -0
- package/types/async-event-emitter.mjs.map +1 -0
- package/types/client-manager.d.ts +171 -58
- package/types/client-manager.js +198 -43
- package/types/client-manager.js.map +1 -1
- package/types/client-manager.mjs +199 -44
- package/types/client-manager.mjs.map +1 -1
- package/types/composer.d.ts +474 -132
- package/types/composer.js +461 -167
- package/types/composer.js.map +1 -1
- package/types/composer.mjs +461 -168
- package/types/composer.mjs.map +1 -1
- package/types/config.d.ts +3 -6
- package/types/config.js +5 -44
- package/types/config.js.map +1 -1
- package/types/config.mjs +5 -27
- package/types/config.mjs.map +1 -1
- package/types/debugging.d.ts +29 -101
- package/types/debugging.js +16 -109
- package/types/debugging.js.map +1 -1
- package/types/debugging.mjs +12 -107
- package/types/debugging.mjs.map +1 -1
- package/types/dispenser-client.d.ts +14 -6
- package/types/dispenser-client.js +19 -14
- package/types/dispenser-client.js.map +1 -1
- package/types/dispenser-client.mjs +19 -14
- package/types/dispenser-client.mjs.map +1 -1
- package/types/expand.d.ts +7 -0
- package/types/expand.js +3 -0
- package/types/expand.js.map +1 -0
- package/types/expand.mjs +2 -0
- package/types/expand.mjs.map +1 -0
- package/types/indexer.d.ts +74 -756
- package/types/indexer.js.map +1 -1
- package/types/indexer.mjs.map +1 -1
- package/types/kmd-account-manager.d.ts +5 -6
- package/types/kmd-account-manager.js +9 -9
- package/types/kmd-account-manager.js.map +1 -1
- package/types/kmd-account-manager.mjs +10 -10
- package/types/kmd-account-manager.mjs.map +1 -1
- package/types/lifecycle-events.d.ts +10 -0
- package/types/lifecycle-events.js +8 -0
- package/types/lifecycle-events.js.map +1 -0
- package/types/lifecycle-events.mjs +8 -0
- package/types/lifecycle-events.mjs.map +1 -0
- package/types/logging.d.ts +0 -1
- package/types/logging.js.map +1 -1
- package/types/logging.mjs.map +1 -1
- package/types/logic-error.d.ts +2 -4
- package/types/logic-error.js +3 -3
- package/types/logic-error.js.map +1 -1
- package/types/logic-error.mjs +3 -3
- package/types/logic-error.mjs.map +1 -1
- package/types/network-client.d.ts +21 -3
- package/types/network-client.js +10 -0
- package/types/network-client.js.map +1 -1
- package/types/network-client.mjs +9 -0
- package/types/network-client.mjs.map +1 -1
- package/types/testing.d.ts +9 -11
- package/types/transaction.d.ts +17 -4
- package/types/transfer.d.ts +8 -8
- package/util.d.ts +15 -2
- package/account/account.d.ts.map +0 -1
- package/account/account.js.map +0 -1
- package/account/account.mjs.map +0 -1
- package/account/get-account-config-from-environment.d.ts.map +0 -1
- package/account/get-account-config-from-environment.js.map +0 -1
- package/account/get-account-config-from-environment.mjs.map +0 -1
- package/account/get-account.d.ts.map +0 -1
- package/account/get-account.js.map +0 -1
- package/account/get-account.mjs.map +0 -1
- package/account/get-dispenser-account.d.ts.map +0 -1
- package/account/get-dispenser-account.js.map +0 -1
- package/account/get-dispenser-account.mjs.map +0 -1
- package/account/index.d.ts.map +0 -1
- package/account/mnemonic-account.d.ts.map +0 -1
- package/account/mnemonic-account.js.map +0 -1
- package/account/mnemonic-account.mjs.map +0 -1
- package/amount.d.ts.map +0 -1
- package/amount.js +0 -34
- package/amount.js.map +0 -1
- package/amount.mjs +0 -30
- package/amount.mjs.map +0 -1
- package/app-client.d.ts.map +0 -1
- package/app-client.js.map +0 -1
- package/app-client.mjs.map +0 -1
- package/app-deploy.d.ts.map +0 -1
- package/app-deploy.js +0 -468
- package/app-deploy.js.map +0 -1
- package/app-deploy.mjs +0 -459
- package/app-deploy.mjs.map +0 -1
- package/app.d.ts.map +0 -1
- package/app.js +0 -599
- package/app.js.map +0 -1
- package/app.mjs +0 -579
- package/app.mjs.map +0 -1
- package/asset.d.ts.map +0 -1
- package/asset.js +0 -272
- package/asset.js.map +0 -1
- package/asset.mjs +0 -266
- package/asset.mjs.map +0 -1
- package/config.d.ts.map +0 -1
- package/config.js.map +0 -1
- package/config.mjs.map +0 -1
- package/debugging/debugging.d.ts.map +0 -1
- package/debugging/debugging.js +0 -139
- package/debugging/debugging.js.map +0 -1
- package/debugging/debugging.mjs +0 -118
- package/debugging/debugging.mjs.map +0 -1
- package/debugging/index.d.ts.map +0 -1
- package/debugging/simulate-and-persist-response.d.ts +0 -20
- package/debugging/simulate-and-persist-response.d.ts.map +0 -1
- package/debugging/simulate-and-persist-response.js +0 -108
- package/debugging/simulate-and-persist-response.js.map +0 -1
- package/debugging/simulate-and-persist-response.mjs +0 -89
- package/debugging/simulate-and-persist-response.mjs.map +0 -1
- package/dispenser-client.d.ts.map +0 -1
- package/dispenser-client.js.map +0 -1
- package/dispenser-client.mjs.map +0 -1
- package/index.d.ts.map +0 -1
- package/indexer-lookup.d.ts.map +0 -1
- package/indexer-lookup.js.map +0 -1
- package/indexer-lookup.mjs.map +0 -1
- package/localnet/get-kmd-wallet-account.d.ts.map +0 -1
- package/localnet/get-kmd-wallet-account.js.map +0 -1
- package/localnet/get-kmd-wallet-account.mjs.map +0 -1
- package/localnet/get-localnet-dispenser-account.d.ts.map +0 -1
- package/localnet/get-localnet-dispenser-account.js.map +0 -1
- package/localnet/get-localnet-dispenser-account.mjs.map +0 -1
- package/localnet/get-or-create-kmd-wallet-account.d.ts.map +0 -1
- package/localnet/get-or-create-kmd-wallet-account.js.map +0 -1
- package/localnet/get-or-create-kmd-wallet-account.mjs.map +0 -1
- package/localnet/index.d.ts.map +0 -1
- package/localnet/is-localnet.d.ts.map +0 -1
- package/localnet/is-localnet.js.map +0 -1
- package/localnet/is-localnet.mjs.map +0 -1
- package/network-client.d.ts.map +0 -1
- package/network-client.js.map +0 -1
- package/network-client.mjs.map +0 -1
- package/testing/_asset.d.ts.map +0 -1
- package/testing/account.d.ts.map +0 -1
- package/testing/account.js.map +0 -1
- package/testing/account.mjs.map +0 -1
- package/testing/fixtures/algokit-log-capture-fixture.d.ts.map +0 -1
- package/testing/fixtures/algokit-log-capture-fixture.js.map +0 -1
- package/testing/fixtures/algokit-log-capture-fixture.mjs.map +0 -1
- package/testing/fixtures/algorand-fixture.d.ts.map +0 -1
- package/testing/fixtures/algorand-fixture.js.map +0 -1
- package/testing/fixtures/algorand-fixture.mjs.map +0 -1
- package/testing/fixtures/index.d.ts.map +0 -1
- package/testing/index.d.ts.map +0 -1
- package/testing/indexer.d.ts.map +0 -1
- package/testing/indexer.js.map +0 -1
- package/testing/indexer.mjs.map +0 -1
- package/testing/test-logger.d.ts.map +0 -1
- package/testing/test-logger.js.map +0 -1
- package/testing/test-logger.mjs.map +0 -1
- package/testing/transaction-logger.d.ts.map +0 -1
- package/testing/transaction-logger.js.map +0 -1
- package/testing/transaction-logger.mjs.map +0 -1
- package/transaction/index.d.ts.map +0 -1
- package/transaction/perform-atomic-transaction-composer-simulate.d.ts.map +0 -1
- package/transaction/perform-atomic-transaction-composer-simulate.js.map +0 -1
- package/transaction/perform-atomic-transaction-composer-simulate.mjs.map +0 -1
- package/transaction/transaction.d.ts.map +0 -1
- package/transaction/transaction.js.map +0 -1
- package/transaction/transaction.mjs.map +0 -1
- package/transfer/index.d.ts.map +0 -1
- package/transfer/transfer-algos.d.ts.map +0 -1
- package/transfer/transfer-algos.js +0 -40
- package/transfer/transfer-algos.js.map +0 -1
- package/transfer/transfer-algos.mjs +0 -38
- package/transfer/transfer-algos.mjs.map +0 -1
- package/transfer/transfer.d.ts.map +0 -1
- package/transfer/transfer.js +0 -147
- package/transfer/transfer.js.map +0 -1
- package/transfer/transfer.mjs +0 -143
- package/transfer/transfer.mjs.map +0 -1
- package/types/account-manager.d.ts.map +0 -1
- package/types/account.d.ts.map +0 -1
- package/types/algo-http-client-with-retry.d.ts.map +0 -1
- package/types/algorand-client.d.ts.map +0 -1
- package/types/amount.d.ts.map +0 -1
- package/types/app-client.d.ts.map +0 -1
- package/types/app-spec.d.ts.map +0 -1
- package/types/app.d.ts.map +0 -1
- package/types/asset.d.ts.map +0 -1
- package/types/client-manager.d.ts.map +0 -1
- package/types/composer.d.ts.map +0 -1
- package/types/config.d.ts.map +0 -1
- package/types/debugging.d.ts.map +0 -1
- package/types/dispenser-client.d.ts.map +0 -1
- package/types/indexer.d.ts.map +0 -1
- package/types/kmd-account-manager.d.ts.map +0 -1
- package/types/logging.d.ts.map +0 -1
- package/types/logic-error.d.ts.map +0 -1
- package/types/network-client.d.ts.map +0 -1
- package/types/testing.d.ts.map +0 -1
- package/types/transaction.d.ts.map +0 -1
- package/types/transfer.d.ts.map +0 -1
- package/types/urlTokenBaseHTTPClient.d.ts +0 -41
- package/types/urlTokenBaseHTTPClient.d.ts.map +0 -1
- package/types/urlTokenBaseHTTPClient.js +0 -153
- package/types/urlTokenBaseHTTPClient.js.map +0 -1
- package/types/urlTokenBaseHTTPClient.mjs +0 -151
- package/types/urlTokenBaseHTTPClient.mjs.map +0 -1
- package/util.d.ts.map +0 -1
- package/util.js.map +0 -1
- package/util.mjs.map +0 -1
- /package/{account → src/account}/get-account-config-from-environment.js +0 -0
- /package/{account → src/account}/get-account-config-from-environment.mjs +0 -0
- /package/{testing → src/testing}/fixtures/algokit-log-capture-fixture.js +0 -0
- /package/{testing → src/testing}/fixtures/algokit-log-capture-fixture.mjs +0 -0
- /package/{testing → src/testing}/indexer.js +0 -0
- /package/{testing → src/testing}/indexer.mjs +0 -0
- /package/{testing → src/testing}/transaction-logger.js +0 -0
- /package/{testing → src/testing}/transaction-logger.mjs +0 -0
package/types/composer.mjs
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
import algosdk from 'algosdk';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import algosdk, { Address } from 'algosdk';
|
|
2
|
+
import { Config } from '../src/config.mjs';
|
|
3
|
+
import { encodeLease, sendAtomicTransactionComposer, getABIReturnValue } from '../src/transaction/transaction.mjs';
|
|
4
|
+
import { APP_PAGE_MAX_SIZE } from './app.mjs';
|
|
5
|
+
import { AppManager } from './app-manager.mjs';
|
|
6
|
+
import { EventType } from './lifecycle-events.mjs';
|
|
7
|
+
import { genesisIdIsLocalNet } from './network-client.mjs';
|
|
4
8
|
|
|
9
|
+
var AtomicTransactionComposer = algosdk.AtomicTransactionComposer;
|
|
5
10
|
var isTransactionWithSigner = algosdk.isTransactionWithSigner;
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class AlgokitComposer {
|
|
11
|
+
var modelsv2 = algosdk.modelsv2;
|
|
12
|
+
const address = (address) => {
|
|
13
|
+
return typeof address === 'string' ? Address.fromString(address) : address;
|
|
14
|
+
};
|
|
15
|
+
const MAX_TRANSACTION_GROUP_SIZE = 16;
|
|
16
|
+
/** TransactionComposer helps you compose and execute transactions as a transaction group. */
|
|
17
|
+
class TransactionComposer {
|
|
14
18
|
/**
|
|
15
|
-
* Create
|
|
19
|
+
* Create a `TransactionComposer`.
|
|
16
20
|
* @param params The configuration for this composer
|
|
17
21
|
*/
|
|
18
22
|
constructor(params) {
|
|
@@ -23,7 +27,7 @@ class AlgokitComposer {
|
|
|
23
27
|
/** Transactions that have not yet been composed */
|
|
24
28
|
this.txns = [];
|
|
25
29
|
/** The default transaction validity window */
|
|
26
|
-
this.defaultValidityWindow =
|
|
30
|
+
this.defaultValidityWindow = 10n;
|
|
27
31
|
/** Whether the validity window was explicitly set on construction */
|
|
28
32
|
this.defaultValidityWindowIsExplicit = false;
|
|
29
33
|
this.algod = params.algod;
|
|
@@ -32,6 +36,21 @@ class AlgokitComposer {
|
|
|
32
36
|
this.getSigner = params.getSigner;
|
|
33
37
|
this.defaultValidityWindow = params.defaultValidityWindow ?? this.defaultValidityWindow;
|
|
34
38
|
this.defaultValidityWindowIsExplicit = params.defaultValidityWindow !== undefined;
|
|
39
|
+
this.appManager = params.appManager ?? new AppManager(params.algod);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Add a pre-built transaction to the transaction group.
|
|
43
|
+
* @param transaction The pre-built transaction
|
|
44
|
+
* @param signer Optional signer override for the transaction
|
|
45
|
+
* @returns The composer so you can chain method calls
|
|
46
|
+
*/
|
|
47
|
+
addTransaction(transaction, signer) {
|
|
48
|
+
this.txns.push({
|
|
49
|
+
txn: transaction,
|
|
50
|
+
signer: signer ?? this.getSigner(transaction.sender),
|
|
51
|
+
type: 'txnWithSigner',
|
|
52
|
+
});
|
|
53
|
+
return this;
|
|
35
54
|
}
|
|
36
55
|
/**
|
|
37
56
|
* Add a payment transaction to the transaction group.
|
|
@@ -96,9 +115,53 @@ class AlgokitComposer {
|
|
|
96
115
|
this.txns.push({ ...params, type: 'assetOptIn' });
|
|
97
116
|
return this;
|
|
98
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Add an asset opt-out transaction to the transaction group.
|
|
120
|
+
* @param params The asset opt-out transaction parameters
|
|
121
|
+
* @returns The composer so you can chain method calls
|
|
122
|
+
*/
|
|
123
|
+
addAssetOptOut(params) {
|
|
124
|
+
this.txns.push({ ...params, type: 'assetOptOut' });
|
|
125
|
+
return this;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Add an application create transaction to the transaction group.
|
|
129
|
+
*
|
|
130
|
+
* Note: we recommend using app clients to make it easier to make app calls.
|
|
131
|
+
* @param params The application create transaction parameters
|
|
132
|
+
* @returns The composer so you can chain method calls
|
|
133
|
+
*/
|
|
134
|
+
addAppCreate(params) {
|
|
135
|
+
this.txns.push({ ...params, type: 'appCall' });
|
|
136
|
+
return this;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Add an application update transaction to the transaction group.
|
|
140
|
+
*
|
|
141
|
+
* Note: we recommend using app clients to make it easier to make app calls.
|
|
142
|
+
* @param params The application update transaction parameters
|
|
143
|
+
* @returns The composer so you can chain method calls
|
|
144
|
+
*/
|
|
145
|
+
addAppUpdate(params) {
|
|
146
|
+
this.txns.push({ ...params, type: 'appCall', onComplete: algosdk.OnApplicationComplete.UpdateApplicationOC });
|
|
147
|
+
return this;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Add an application delete transaction to the transaction group.
|
|
151
|
+
*
|
|
152
|
+
* Note: we recommend using app clients to make it easier to make app calls.
|
|
153
|
+
* @param params The application delete transaction parameters
|
|
154
|
+
* @returns The composer so you can chain method calls
|
|
155
|
+
*/
|
|
156
|
+
addAppDelete(params) {
|
|
157
|
+
this.txns.push({ ...params, type: 'appCall', onComplete: algosdk.OnApplicationComplete.DeleteApplicationOC });
|
|
158
|
+
return this;
|
|
159
|
+
}
|
|
99
160
|
/**
|
|
100
161
|
* Add an application call transaction to the transaction group.
|
|
101
162
|
*
|
|
163
|
+
* If you want to create or update an app use `addAppCreate` or `addAppUpdate`.
|
|
164
|
+
*
|
|
102
165
|
* Note: we recommend using app clients to make it easier to make app calls.
|
|
103
166
|
* @param params The application call transaction parameters
|
|
104
167
|
* @returns The composer so you can chain method calls
|
|
@@ -108,13 +171,46 @@ class AlgokitComposer {
|
|
|
108
171
|
return this;
|
|
109
172
|
}
|
|
110
173
|
/**
|
|
111
|
-
* Add an ABI method application call transaction to the transaction group.
|
|
174
|
+
* Add an ABI method create application call transaction to the transaction group.
|
|
175
|
+
*
|
|
176
|
+
* Note: we recommend using app clients to make it easier to make app calls.
|
|
177
|
+
* @param params The ABI create method application call transaction parameters
|
|
178
|
+
* @returns The composer so you can chain method calls
|
|
179
|
+
*/
|
|
180
|
+
addAppCreateMethodCall(params) {
|
|
181
|
+
this.txns.push({ ...params, type: 'methodCall' });
|
|
182
|
+
return this;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Add an ABI method update application call transaction to the transaction group.
|
|
186
|
+
*
|
|
187
|
+
* Note: we recommend using app clients to make it easier to make app calls.
|
|
188
|
+
* @param params The ABI update method application call transaction parameters
|
|
189
|
+
* @returns The composer so you can chain method calls
|
|
190
|
+
*/
|
|
191
|
+
addAppUpdateMethodCall(params) {
|
|
192
|
+
this.txns.push({ ...params, type: 'methodCall', onComplete: algosdk.OnApplicationComplete.UpdateApplicationOC });
|
|
193
|
+
return this;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Add an ABI method delete application call transaction to the transaction group.
|
|
197
|
+
*
|
|
198
|
+
* Note: we recommend using app clients to make it easier to make app calls.
|
|
199
|
+
* @param params The ABI delete method application call transaction parameters
|
|
200
|
+
* @returns The composer so you can chain method calls
|
|
201
|
+
*/
|
|
202
|
+
addAppDeleteMethodCall(params) {
|
|
203
|
+
this.txns.push({ ...params, type: 'methodCall', onComplete: algosdk.OnApplicationComplete.DeleteApplicationOC });
|
|
204
|
+
return this;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Add a non-create/non-update ABI method application call transaction to the transaction group.
|
|
112
208
|
*
|
|
113
209
|
* Note: we recommend using app clients to make it easier to make app calls.
|
|
114
210
|
* @param params The ABI method application call transaction parameters
|
|
115
211
|
* @returns The composer so you can chain method calls
|
|
116
212
|
*/
|
|
117
|
-
|
|
213
|
+
addAppCallMethodCall(params) {
|
|
118
214
|
this.txns.push({ ...params, type: 'methodCall' });
|
|
119
215
|
return this;
|
|
120
216
|
}
|
|
@@ -136,150 +232,206 @@ class AlgokitComposer {
|
|
|
136
232
|
this.txns.push({ atc, type: 'atc' });
|
|
137
233
|
return this;
|
|
138
234
|
}
|
|
235
|
+
/** Build an ATC and return transactions ready to be incorporated into a broader set of transactions this composer is composing */
|
|
139
236
|
buildAtc(atc) {
|
|
140
237
|
const group = atc.buildGroup();
|
|
141
|
-
const txnWithSigners = group.map((ts) => {
|
|
238
|
+
const txnWithSigners = group.map((ts, idx) => {
|
|
239
|
+
// Remove underlying group ID from the transaction since it will be re-grouped when this TransactionComposer is built
|
|
142
240
|
ts.txn.group = undefined;
|
|
241
|
+
// If this was a method call stash the ABIMethod for later
|
|
242
|
+
if (atc['methodCalls'].get(idx)) {
|
|
243
|
+
this.txnMethodMap.set(ts.txn.txID(), atc['methodCalls'].get(idx));
|
|
244
|
+
}
|
|
143
245
|
return ts;
|
|
144
246
|
});
|
|
145
|
-
const method = atc['methodCalls'].get(group.length - 1);
|
|
146
|
-
if (method)
|
|
147
|
-
this.txnMethodMap.set(txnWithSigners.at(-1).txn.txID(), method);
|
|
148
247
|
return txnWithSigners;
|
|
149
248
|
}
|
|
150
|
-
commonTxnBuildStep(
|
|
249
|
+
commonTxnBuildStep(buildTxn, params, txnParams) {
|
|
250
|
+
// We are going to mutate suggested params, let's create a clone first
|
|
251
|
+
txnParams.suggestedParams = { ...txnParams.suggestedParams };
|
|
151
252
|
if (params.lease)
|
|
152
|
-
|
|
253
|
+
txnParams.lease = encodeLease(params.lease);
|
|
153
254
|
if (params.rekeyTo)
|
|
154
|
-
|
|
255
|
+
txnParams.rekeyTo = address(params.rekeyTo);
|
|
256
|
+
const encoder = new TextEncoder();
|
|
155
257
|
if (params.note)
|
|
156
|
-
|
|
258
|
+
txnParams.note = (typeof params.note === 'string' ? encoder.encode(params.note) : params.note);
|
|
157
259
|
if (params.firstValidRound) {
|
|
158
|
-
|
|
260
|
+
txnParams.suggestedParams.firstValid = params.firstValidRound;
|
|
159
261
|
}
|
|
160
262
|
if (params.lastValidRound) {
|
|
161
|
-
|
|
263
|
+
txnParams.suggestedParams.lastValid = params.lastValidRound;
|
|
162
264
|
}
|
|
163
265
|
else {
|
|
164
266
|
// If the validity window isn't set in this transaction or by default and we are pointing at
|
|
165
267
|
// LocalNet set a bigger window to avoid dead transactions
|
|
166
|
-
const window = params.validityWindow
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
268
|
+
const window = params.validityWindow
|
|
269
|
+
? BigInt(params.validityWindow)
|
|
270
|
+
: !this.defaultValidityWindowIsExplicit && genesisIdIsLocalNet(txnParams.suggestedParams.genesisID ?? 'unknown')
|
|
271
|
+
? 1000n
|
|
272
|
+
: this.defaultValidityWindow;
|
|
273
|
+
txnParams.suggestedParams.lastValid = BigInt(txnParams.suggestedParams.firstValid) + window;
|
|
171
274
|
}
|
|
172
275
|
if (params.staticFee !== undefined && params.extraFee !== undefined) {
|
|
173
276
|
throw Error('Cannot set both staticFee and extraFee');
|
|
174
277
|
}
|
|
175
278
|
if (params.staticFee !== undefined) {
|
|
176
|
-
|
|
279
|
+
txnParams.suggestedParams.fee = params.staticFee.microAlgo;
|
|
280
|
+
txnParams.suggestedParams.flatFee = true;
|
|
177
281
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
txn.flatFee = true;
|
|
184
|
-
if (params.maxFee !== undefined && txn.fee > params.maxFee.microAlgos) {
|
|
185
|
-
throw Error(`Transaction fee ${txn.fee} is greater than maxFee ${params.maxFee}`);
|
|
282
|
+
const txn = buildTxn(txnParams);
|
|
283
|
+
if (params.extraFee)
|
|
284
|
+
txn.fee += params.extraFee.microAlgo;
|
|
285
|
+
if (params.maxFee !== undefined && txn.fee > params.maxFee.microAlgo) {
|
|
286
|
+
throw Error(`Transaction fee ${txn.fee} µALGO is greater than maxFee ${params.maxFee}`);
|
|
186
287
|
}
|
|
187
288
|
return txn;
|
|
188
289
|
}
|
|
189
|
-
|
|
290
|
+
/**
|
|
291
|
+
* Builds an ABI method call transaction and any other associated transactions represented in the ABI args.
|
|
292
|
+
* @param includeSigner Whether to include the actual signer for the transactions.
|
|
293
|
+
* If you are just building transactions without signers yet then set this to `false`.
|
|
294
|
+
*/
|
|
295
|
+
async buildMethodCall(params, suggestedParams, includeSigner) {
|
|
190
296
|
const methodArgs = [];
|
|
297
|
+
const transactionsForGroup = [];
|
|
191
298
|
const isAbiValue = (x) => {
|
|
192
299
|
if (Array.isArray(x))
|
|
193
300
|
return x.length == 0 || x.every(isAbiValue);
|
|
194
|
-
return
|
|
301
|
+
return typeof x === 'bigint' || typeof x === 'boolean' || typeof x === 'number' || typeof x === 'string' || x instanceof Uint8Array;
|
|
195
302
|
};
|
|
196
|
-
for (
|
|
303
|
+
for (let i = (params.args ?? []).length - 1; i >= 0; i--) {
|
|
304
|
+
const arg = params.args[i];
|
|
305
|
+
if (arg === undefined) {
|
|
306
|
+
// An undefined transaction argument signals that the value will be supplied by a method call argument
|
|
307
|
+
if (algosdk.abiTypeIsTransaction(params.method.args[i].type) && transactionsForGroup.length > 0) {
|
|
308
|
+
// Move the last transaction from the group to the method call arguments to appease algosdk
|
|
309
|
+
const placeholderTransaction = transactionsForGroup.splice(-1, 1)[0];
|
|
310
|
+
methodArgs.push(placeholderTransaction);
|
|
311
|
+
continue;
|
|
312
|
+
}
|
|
313
|
+
throw Error(`No value provided for argument ${i + 1} within call to ${params.method.name}`);
|
|
314
|
+
}
|
|
197
315
|
if (isAbiValue(arg)) {
|
|
198
316
|
methodArgs.push(arg);
|
|
199
317
|
continue;
|
|
200
318
|
}
|
|
319
|
+
// Underlying ATC only supports addresses as strings
|
|
320
|
+
if (arg instanceof Address) {
|
|
321
|
+
methodArgs.push(arg.toString());
|
|
322
|
+
continue;
|
|
323
|
+
}
|
|
201
324
|
if (isTransactionWithSigner(arg)) {
|
|
202
325
|
methodArgs.push(arg);
|
|
203
326
|
continue;
|
|
204
327
|
}
|
|
205
328
|
if ('method' in arg) {
|
|
206
|
-
const tempTxnWithSigners = await this.buildMethodCall(arg, suggestedParams);
|
|
207
|
-
|
|
329
|
+
const tempTxnWithSigners = await this.buildMethodCall(arg, suggestedParams, includeSigner);
|
|
330
|
+
// If there is any transaction args, add to the atc
|
|
331
|
+
// Everything else should be added as method args
|
|
332
|
+
methodArgs.push(...tempTxnWithSigners.slice(-1)); // Add the method call itself as a method arg
|
|
333
|
+
transactionsForGroup.push(...tempTxnWithSigners.slice(0, -1).reverse()); // Add any transaction arguments to the atc
|
|
208
334
|
continue;
|
|
209
335
|
}
|
|
210
336
|
const txn = await arg;
|
|
211
337
|
methodArgs.push({
|
|
212
338
|
txn,
|
|
213
|
-
signer:
|
|
214
|
-
?
|
|
215
|
-
? params.signer
|
|
216
|
-
|
|
217
|
-
|
|
339
|
+
signer: includeSigner
|
|
340
|
+
? params.signer
|
|
341
|
+
? 'signer' in params.signer
|
|
342
|
+
? params.signer.signer
|
|
343
|
+
: params.signer
|
|
344
|
+
: this.getSigner(txn.sender)
|
|
345
|
+
: TransactionComposer.NULL_SIGNER,
|
|
218
346
|
});
|
|
219
347
|
}
|
|
220
348
|
const methodAtc = new algosdk.AtomicTransactionComposer();
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
349
|
+
transactionsForGroup.reverse().forEach((txn) => methodAtc.addTransaction(txn));
|
|
350
|
+
const appId = Number('appId' in params ? params.appId : 0n);
|
|
351
|
+
const approvalProgram = 'approvalProgram' in params
|
|
352
|
+
? typeof params.approvalProgram === 'string'
|
|
353
|
+
? (await this.appManager.compileTeal(params.approvalProgram)).compiledBase64ToBytes
|
|
354
|
+
: params.approvalProgram
|
|
355
|
+
: undefined;
|
|
356
|
+
const clearStateProgram = 'clearStateProgram' in params
|
|
357
|
+
? typeof params.clearStateProgram === 'string'
|
|
358
|
+
? (await this.appManager.compileTeal(params.clearStateProgram)).compiledBase64ToBytes
|
|
359
|
+
: params.clearStateProgram
|
|
360
|
+
: undefined;
|
|
361
|
+
const txnParams = {
|
|
362
|
+
appID: appId,
|
|
224
363
|
sender: params.sender,
|
|
225
364
|
suggestedParams,
|
|
226
|
-
onComplete: params.onComplete,
|
|
365
|
+
onComplete: params.onComplete ?? algosdk.OnApplicationComplete.NoOpOC,
|
|
227
366
|
appAccounts: params.accountReferences,
|
|
228
367
|
appForeignApps: params.appReferences?.map((x) => Number(x)),
|
|
229
368
|
appForeignAssets: params.assetReferences?.map((x) => Number(x)),
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
369
|
+
boxes: params.boxReferences?.map(AppManager.getBoxReference),
|
|
370
|
+
approvalProgram,
|
|
371
|
+
clearProgram: clearStateProgram,
|
|
372
|
+
extraPages: appId === 0
|
|
373
|
+
? 'extraProgramPages' in params && params.extraProgramPages !== undefined
|
|
374
|
+
? params.extraProgramPages
|
|
375
|
+
: approvalProgram
|
|
376
|
+
? Math.floor((approvalProgram.length + (clearStateProgram?.length ?? 0)) / APP_PAGE_MAX_SIZE)
|
|
377
|
+
: 0
|
|
378
|
+
: undefined,
|
|
379
|
+
numLocalInts: appId === 0 ? ('schema' in params ? (params.schema?.localInts ?? 0) : 0) : undefined,
|
|
380
|
+
numLocalByteSlices: appId === 0 ? ('schema' in params ? (params.schema?.localByteSlices ?? 0) : 0) : undefined,
|
|
381
|
+
numGlobalInts: appId === 0 ? ('schema' in params ? (params.schema?.globalInts ?? 0) : 0) : undefined,
|
|
382
|
+
numGlobalByteSlices: appId === 0 ? ('schema' in params ? (params.schema?.globalByteSlices ?? 0) : 0) : undefined,
|
|
237
383
|
method: params.method,
|
|
238
|
-
signer:
|
|
239
|
-
|
|
384
|
+
signer: includeSigner
|
|
385
|
+
? params.signer
|
|
386
|
+
? 'signer' in params.signer
|
|
387
|
+
? params.signer.signer
|
|
388
|
+
: params.signer
|
|
389
|
+
: this.getSigner(params.sender)
|
|
390
|
+
: TransactionComposer.NULL_SIGNER,
|
|
391
|
+
methodArgs: methodArgs.reverse(),
|
|
240
392
|
// note, lease, and rekeyTo are set in the common build step
|
|
241
393
|
note: undefined,
|
|
242
394
|
lease: undefined,
|
|
243
395
|
rekeyTo: undefined,
|
|
244
|
-
}
|
|
245
|
-
//
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
396
|
+
};
|
|
397
|
+
// Build the transaction
|
|
398
|
+
this.commonTxnBuildStep((txnParams) => {
|
|
399
|
+
methodAtc.addMethodCall(txnParams);
|
|
400
|
+
return methodAtc.buildGroup()[methodAtc.count() - 1].txn;
|
|
401
|
+
}, params, txnParams);
|
|
402
|
+
// Process the ATC to get a set of transactions ready for broader grouping
|
|
249
403
|
return this.buildAtc(methodAtc);
|
|
250
404
|
}
|
|
251
405
|
buildPayment(params, suggestedParams) {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
amount: params.amount.
|
|
406
|
+
return this.commonTxnBuildStep(algosdk.makePaymentTxnWithSuggestedParamsFromObject, params, {
|
|
407
|
+
sender: params.sender,
|
|
408
|
+
receiver: params.receiver,
|
|
409
|
+
amount: params.amount.microAlgo,
|
|
256
410
|
closeRemainderTo: params.closeRemainderTo,
|
|
257
411
|
suggestedParams,
|
|
258
412
|
});
|
|
259
|
-
return this.commonTxnBuildStep(params, txn, suggestedParams);
|
|
260
413
|
}
|
|
261
414
|
buildAssetCreate(params, suggestedParams) {
|
|
262
|
-
|
|
263
|
-
|
|
415
|
+
return this.commonTxnBuildStep(algosdk.makeAssetCreateTxnWithSuggestedParamsFromObject, params, {
|
|
416
|
+
sender: params.sender,
|
|
264
417
|
total: params.total,
|
|
265
418
|
decimals: params.decimals ?? 0,
|
|
266
419
|
assetName: params.assetName,
|
|
267
420
|
unitName: params.unitName,
|
|
268
421
|
assetURL: params.url,
|
|
269
422
|
defaultFrozen: params.defaultFrozen ?? false,
|
|
270
|
-
assetMetadataHash: params.metadataHash,
|
|
423
|
+
assetMetadataHash: typeof params.metadataHash === 'string' ? Buffer.from(params.metadataHash, 'utf-8') : params.metadataHash,
|
|
271
424
|
manager: params.manager,
|
|
272
425
|
reserve: params.reserve,
|
|
273
426
|
freeze: params.freeze,
|
|
274
427
|
clawback: params.clawback,
|
|
275
428
|
suggestedParams,
|
|
276
429
|
});
|
|
277
|
-
return this.commonTxnBuildStep(params, txn, suggestedParams);
|
|
278
430
|
}
|
|
279
431
|
buildAssetConfig(params, suggestedParams) {
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
assetIndex:
|
|
432
|
+
return this.commonTxnBuildStep(algosdk.makeAssetConfigTxnWithSuggestedParamsFromObject, params, {
|
|
433
|
+
sender: params.sender,
|
|
434
|
+
assetIndex: params.assetId,
|
|
283
435
|
suggestedParams,
|
|
284
436
|
manager: params.manager,
|
|
285
437
|
reserve: params.reserve,
|
|
@@ -287,76 +439,120 @@ class AlgokitComposer {
|
|
|
287
439
|
clawback: params.clawback,
|
|
288
440
|
strictEmptyAddressChecking: false,
|
|
289
441
|
});
|
|
290
|
-
return this.commonTxnBuildStep(params, txn, suggestedParams);
|
|
291
442
|
}
|
|
292
443
|
buildAssetDestroy(params, suggestedParams) {
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
assetIndex:
|
|
444
|
+
return this.commonTxnBuildStep(algosdk.makeAssetDestroyTxnWithSuggestedParamsFromObject, params, {
|
|
445
|
+
sender: params.sender,
|
|
446
|
+
assetIndex: params.assetId,
|
|
296
447
|
suggestedParams,
|
|
297
448
|
});
|
|
298
|
-
return this.commonTxnBuildStep(params, txn, suggestedParams);
|
|
299
449
|
}
|
|
300
450
|
buildAssetFreeze(params, suggestedParams) {
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
assetIndex:
|
|
451
|
+
return this.commonTxnBuildStep(algosdk.makeAssetFreezeTxnWithSuggestedParamsFromObject, params, {
|
|
452
|
+
sender: params.sender,
|
|
453
|
+
assetIndex: params.assetId,
|
|
304
454
|
freezeTarget: params.account,
|
|
305
|
-
|
|
455
|
+
frozen: params.frozen,
|
|
306
456
|
suggestedParams,
|
|
307
457
|
});
|
|
308
|
-
return this.commonTxnBuildStep(params, txn, suggestedParams);
|
|
309
458
|
}
|
|
310
459
|
buildAssetTransfer(params, suggestedParams) {
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
assetIndex:
|
|
460
|
+
return this.commonTxnBuildStep(algosdk.makeAssetTransferTxnWithSuggestedParamsFromObject, params, {
|
|
461
|
+
sender: params.sender,
|
|
462
|
+
receiver: params.receiver,
|
|
463
|
+
assetIndex: params.assetId,
|
|
315
464
|
amount: params.amount,
|
|
316
465
|
suggestedParams,
|
|
317
466
|
closeRemainderTo: params.closeAssetTo,
|
|
318
|
-
|
|
467
|
+
assetSender: params.clawbackTarget,
|
|
319
468
|
});
|
|
320
|
-
return this.commonTxnBuildStep(params, txn, suggestedParams);
|
|
321
469
|
}
|
|
322
|
-
buildAppCall(params, suggestedParams) {
|
|
470
|
+
async buildAppCall(params, suggestedParams) {
|
|
471
|
+
const appId = 'appId' in params ? params.appId : 0n;
|
|
472
|
+
const approvalProgram = 'approvalProgram' in params
|
|
473
|
+
? typeof params.approvalProgram === 'string'
|
|
474
|
+
? (await this.appManager.compileTeal(params.approvalProgram)).compiledBase64ToBytes
|
|
475
|
+
: params.approvalProgram
|
|
476
|
+
: undefined;
|
|
477
|
+
const clearStateProgram = 'clearStateProgram' in params
|
|
478
|
+
? typeof params.clearStateProgram === 'string'
|
|
479
|
+
? (await this.appManager.compileTeal(params.clearStateProgram)).compiledBase64ToBytes
|
|
480
|
+
: params.clearStateProgram
|
|
481
|
+
: undefined;
|
|
323
482
|
const sdkParams = {
|
|
324
|
-
|
|
483
|
+
sender: params.sender,
|
|
325
484
|
suggestedParams,
|
|
326
|
-
onComplete: params.onComplete,
|
|
327
|
-
approvalProgram: params.approvalProgram,
|
|
328
|
-
clearProgram: params.clearProgram,
|
|
329
485
|
appArgs: params.args,
|
|
486
|
+
onComplete: params.onComplete ?? algosdk.OnApplicationComplete.NoOpOC,
|
|
330
487
|
accounts: params.accountReferences,
|
|
331
488
|
foreignApps: params.appReferences?.map((x) => Number(x)),
|
|
332
489
|
foreignAssets: params.assetReferences?.map((x) => Number(x)),
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
numGlobalInts: params.schema?.globalUints || 0,
|
|
337
|
-
numGlobalByteSlices: params.schema?.globalByteSlices || 0,
|
|
490
|
+
boxes: params.boxReferences?.map(AppManager.getBoxReference),
|
|
491
|
+
approvalProgram,
|
|
492
|
+
clearProgram: clearStateProgram,
|
|
338
493
|
};
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
if (params.approvalProgram === undefined || params.clearProgram === undefined) {
|
|
343
|
-
throw new Error('approvalProgram and clearProgram are required for application creation');
|
|
494
|
+
if (appId === 0n) {
|
|
495
|
+
if (sdkParams.approvalProgram === undefined || sdkParams.clearProgram === undefined) {
|
|
496
|
+
throw new Error('approvalProgram and clearStateProgram are required for application creation');
|
|
344
497
|
}
|
|
345
|
-
|
|
498
|
+
return this.commonTxnBuildStep(algosdk.makeApplicationCreateTxnFromObject, params, {
|
|
346
499
|
...sdkParams,
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
500
|
+
extraPages: 'extraProgramPages' in params
|
|
501
|
+
? (params.extraProgramPages ?? Math.floor((approvalProgram.length + clearStateProgram.length) / APP_PAGE_MAX_SIZE))
|
|
502
|
+
: 0,
|
|
503
|
+
numLocalInts: 'schema' in params ? (params.schema?.localInts ?? 0) : 0,
|
|
504
|
+
numLocalByteSlices: 'schema' in params ? (params.schema?.localByteSlices ?? 0) : 0,
|
|
505
|
+
numGlobalInts: 'schema' in params ? (params.schema?.globalInts ?? 0) : 0,
|
|
506
|
+
numGlobalByteSlices: 'schema' in params ? (params.schema?.globalByteSlices ?? 0) : 0,
|
|
507
|
+
approvalProgram: approvalProgram,
|
|
508
|
+
clearProgram: clearStateProgram,
|
|
350
509
|
});
|
|
351
510
|
}
|
|
352
|
-
|
|
353
|
-
|
|
511
|
+
else {
|
|
512
|
+
return this.commonTxnBuildStep(algosdk.makeApplicationCallTxnFromObject, params, { ...sdkParams, appIndex: appId });
|
|
513
|
+
}
|
|
354
514
|
}
|
|
355
515
|
buildKeyReg(params, suggestedParams) {
|
|
356
|
-
|
|
357
|
-
|
|
516
|
+
return this.commonTxnBuildStep(algosdk.makeKeyRegistrationTxnWithSuggestedParamsFromObject, params, {
|
|
517
|
+
sender: params.sender,
|
|
518
|
+
voteKey: params.voteKey,
|
|
519
|
+
selectionKey: params.selectionKey,
|
|
520
|
+
voteFirst: params.voteFirst,
|
|
521
|
+
voteLast: params.voteLast,
|
|
522
|
+
voteKeyDilution: params.voteKeyDilution,
|
|
523
|
+
stateProofKey: params.stateProofKey,
|
|
524
|
+
nonParticipation: false,
|
|
525
|
+
suggestedParams,
|
|
526
|
+
});
|
|
358
527
|
}
|
|
528
|
+
/** Builds all transaction types apart from `txnWithSigner`, `atc` and `methodCall` since those ones can have custom signers that need to be retrieved. */
|
|
359
529
|
async buildTxn(txn, suggestedParams) {
|
|
530
|
+
switch (txn.type) {
|
|
531
|
+
case 'pay':
|
|
532
|
+
return [this.buildPayment(txn, suggestedParams)];
|
|
533
|
+
case 'assetCreate':
|
|
534
|
+
return [this.buildAssetCreate(txn, suggestedParams)];
|
|
535
|
+
case 'appCall':
|
|
536
|
+
return [await this.buildAppCall(txn, suggestedParams)];
|
|
537
|
+
case 'assetConfig':
|
|
538
|
+
return [this.buildAssetConfig(txn, suggestedParams)];
|
|
539
|
+
case 'assetDestroy':
|
|
540
|
+
return [this.buildAssetDestroy(txn, suggestedParams)];
|
|
541
|
+
case 'assetFreeze':
|
|
542
|
+
return [this.buildAssetFreeze(txn, suggestedParams)];
|
|
543
|
+
case 'assetTransfer':
|
|
544
|
+
return [this.buildAssetTransfer(txn, suggestedParams)];
|
|
545
|
+
case 'assetOptIn':
|
|
546
|
+
return [this.buildAssetTransfer({ ...txn, receiver: txn.sender, amount: 0n }, suggestedParams)];
|
|
547
|
+
case 'assetOptOut':
|
|
548
|
+
return [this.buildAssetTransfer({ ...txn, receiver: txn.sender, amount: 0n, closeAssetTo: txn.creator }, suggestedParams)];
|
|
549
|
+
case 'keyReg':
|
|
550
|
+
return [this.buildKeyReg(txn, suggestedParams)];
|
|
551
|
+
default:
|
|
552
|
+
throw Error(`Unsupported txn type`);
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
async buildTxnWithSigner(txn, suggestedParams) {
|
|
360
556
|
if (txn.type === 'txnWithSigner') {
|
|
361
557
|
return [txn];
|
|
362
558
|
}
|
|
@@ -364,75 +560,83 @@ class AlgokitComposer {
|
|
|
364
560
|
return this.buildAtc(txn.atc);
|
|
365
561
|
}
|
|
366
562
|
if (txn.type === 'methodCall') {
|
|
367
|
-
return await this.buildMethodCall(txn, suggestedParams);
|
|
563
|
+
return await this.buildMethodCall(txn, suggestedParams, true);
|
|
368
564
|
}
|
|
369
565
|
const signer = txn.signer ? ('signer' in txn.signer ? txn.signer.signer : txn.signer) : this.getSigner(txn.sender);
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
return [{ txn: assetConfig, signer }];
|
|
386
|
-
}
|
|
387
|
-
case 'assetDestroy': {
|
|
388
|
-
const assetDestroy = this.buildAssetDestroy(txn, suggestedParams);
|
|
389
|
-
return [{ txn: assetDestroy, signer }];
|
|
390
|
-
}
|
|
391
|
-
case 'assetFreeze': {
|
|
392
|
-
const assetFreeze = this.buildAssetFreeze(txn, suggestedParams);
|
|
393
|
-
return [{ txn: assetFreeze, signer }];
|
|
394
|
-
}
|
|
395
|
-
case 'assetTransfer': {
|
|
396
|
-
const assetTransfer = this.buildAssetTransfer(txn, suggestedParams);
|
|
397
|
-
return [{ txn: assetTransfer, signer }];
|
|
398
|
-
}
|
|
399
|
-
case 'assetOptIn': {
|
|
400
|
-
const assetTransfer = this.buildAssetTransfer({ ...txn, receiver: txn.sender, amount: 0n }, suggestedParams);
|
|
401
|
-
return [{ txn: assetTransfer, signer }];
|
|
566
|
+
return (await this.buildTxn(txn, suggestedParams)).map((txn) => ({ txn, signer }));
|
|
567
|
+
}
|
|
568
|
+
/**
|
|
569
|
+
* Compose all of the transactions without signers and return the transaction objects directly along with any ABI method calls.
|
|
570
|
+
*
|
|
571
|
+
* @returns The array of built transactions and any corresponding method calls
|
|
572
|
+
*/
|
|
573
|
+
async buildTransactions() {
|
|
574
|
+
const suggestedParams = await this.getSuggestedParams();
|
|
575
|
+
const transactions = [];
|
|
576
|
+
const methodCalls = new Map();
|
|
577
|
+
const signers = new Map();
|
|
578
|
+
for (const txn of this.txns) {
|
|
579
|
+
if (!['txnWithSigner', 'atc', 'methodCall'].includes(txn.type)) {
|
|
580
|
+
transactions.push(...(await this.buildTxn(txn, suggestedParams)));
|
|
402
581
|
}
|
|
403
|
-
|
|
404
|
-
const
|
|
405
|
-
|
|
582
|
+
else {
|
|
583
|
+
const transactionsWithSigner = txn.type === 'txnWithSigner'
|
|
584
|
+
? [txn]
|
|
585
|
+
: txn.type === 'atc'
|
|
586
|
+
? this.buildAtc(txn.atc)
|
|
587
|
+
: txn.type === 'methodCall'
|
|
588
|
+
? await this.buildMethodCall(txn, suggestedParams, false)
|
|
589
|
+
: [];
|
|
590
|
+
transactions.push(...transactionsWithSigner.map((ts) => ts.txn));
|
|
591
|
+
transactionsWithSigner.forEach((ts, idx) => {
|
|
592
|
+
if (ts.signer && ts.signer !== TransactionComposer.NULL_SIGNER) {
|
|
593
|
+
signers.set(idx, ts.signer);
|
|
594
|
+
}
|
|
595
|
+
});
|
|
406
596
|
}
|
|
407
|
-
default:
|
|
408
|
-
throw Error(`Unsupported txn type`);
|
|
409
597
|
}
|
|
598
|
+
for (let i = 0; i < transactions.length; i++) {
|
|
599
|
+
const method = this.txnMethodMap.get(transactions[i].txID());
|
|
600
|
+
if (method)
|
|
601
|
+
methodCalls.set(i, method);
|
|
602
|
+
}
|
|
603
|
+
return { transactions, methodCalls, signers };
|
|
604
|
+
}
|
|
605
|
+
/**
|
|
606
|
+
* Get the number of transactions currently added to this composer.
|
|
607
|
+
*/
|
|
608
|
+
async count() {
|
|
609
|
+
return (await this.buildTransactions()).transactions.length;
|
|
410
610
|
}
|
|
411
611
|
/**
|
|
412
612
|
* Compose all of the transactions in a single atomic transaction group and an atomic transaction composer.
|
|
413
613
|
*
|
|
414
614
|
* You can then use the transactions standalone, or use the composer to execute or simulate the transactions.
|
|
615
|
+
*
|
|
616
|
+
* Once this method is called, no further transactions will be able to be added.
|
|
617
|
+
* You can safely call this method multiple times to get the same result.
|
|
415
618
|
* @returns The built atomic transaction composer and the transactions
|
|
416
619
|
*/
|
|
417
620
|
async build() {
|
|
418
621
|
if (this.atc.getStatus() === algosdk.AtomicTransactionComposerStatus.BUILDING) {
|
|
419
622
|
const suggestedParams = await this.getSuggestedParams();
|
|
623
|
+
// Build all of the transactions
|
|
420
624
|
const txnWithSigners = [];
|
|
421
625
|
for (const txn of this.txns) {
|
|
422
|
-
txnWithSigners.push(...(await this.
|
|
626
|
+
txnWithSigners.push(...(await this.buildTxnWithSigner(txn, suggestedParams)));
|
|
423
627
|
}
|
|
424
|
-
|
|
425
|
-
this.atc.addTransaction(ts);
|
|
426
|
-
});
|
|
628
|
+
// Add all of the transactions to the underlying ATC
|
|
427
629
|
const methodCalls = new Map();
|
|
428
630
|
txnWithSigners.forEach((ts, idx) => {
|
|
631
|
+
this.atc.addTransaction(ts);
|
|
632
|
+
// Populate consolidated set of all ABI method calls
|
|
429
633
|
const method = this.txnMethodMap.get(ts.txn.txID());
|
|
430
634
|
if (method)
|
|
431
635
|
methodCalls.set(idx, method);
|
|
432
636
|
});
|
|
433
637
|
this.atc['methodCalls'] = methodCalls;
|
|
434
638
|
}
|
|
435
|
-
return { atc: this.atc, transactions: this.atc.buildGroup() };
|
|
639
|
+
return { atc: this.atc, transactions: this.atc.buildGroup(), methodCalls: this.atc['methodCalls'] };
|
|
436
640
|
}
|
|
437
641
|
/**
|
|
438
642
|
* Rebuild the group, discarding any previously built transactions.
|
|
@@ -444,24 +648,113 @@ class AlgokitComposer {
|
|
|
444
648
|
return await this.build();
|
|
445
649
|
}
|
|
446
650
|
/**
|
|
447
|
-
* Compose the atomic transaction group and send it to the network
|
|
651
|
+
* Compose the atomic transaction group and send it to the network.
|
|
448
652
|
* @param params The parameters to control execution with
|
|
449
653
|
* @returns The execution result
|
|
450
654
|
*/
|
|
451
|
-
async
|
|
655
|
+
async send(params) {
|
|
452
656
|
const group = (await this.build()).transactions;
|
|
453
657
|
let waitRounds = params?.maxRoundsToWaitForConfirmation;
|
|
454
658
|
if (waitRounds === undefined) {
|
|
455
|
-
const lastRound = group.reduce((max, txn) =>
|
|
456
|
-
const { firstRound } = await this.getSuggestedParams();
|
|
457
|
-
waitRounds = lastRound - firstRound + 1;
|
|
659
|
+
const lastRound = group.reduce((max, txn) => (txn.txn.lastValid > max ? txn.txn.lastValid : BigInt(max)), 0n);
|
|
660
|
+
const { firstValid: firstRound } = await this.getSuggestedParams();
|
|
661
|
+
waitRounds = Number(BigInt(lastRound) - BigInt(firstRound)) + 1;
|
|
458
662
|
}
|
|
459
663
|
return await sendAtomicTransactionComposer({
|
|
460
664
|
atc: this.atc,
|
|
461
|
-
|
|
665
|
+
suppressLog: params?.suppressLog,
|
|
666
|
+
maxRoundsToWaitForConfirmation: waitRounds,
|
|
667
|
+
populateAppCallResources: params?.populateAppCallResources,
|
|
462
668
|
}, this.algod);
|
|
463
669
|
}
|
|
670
|
+
/**
|
|
671
|
+
* @deprecated Use `send` instead.
|
|
672
|
+
*
|
|
673
|
+
* Compose the atomic transaction group and send it to the network
|
|
674
|
+
*
|
|
675
|
+
* An alias for `composer.send(params)`.
|
|
676
|
+
* @param params The parameters to control execution with
|
|
677
|
+
* @returns The execution result
|
|
678
|
+
*/
|
|
679
|
+
async execute(params) {
|
|
680
|
+
return this.send(params);
|
|
681
|
+
}
|
|
682
|
+
/**
|
|
683
|
+
* Compose the atomic transaction group and simulate sending it to the network
|
|
684
|
+
* @returns The simulation result
|
|
685
|
+
*/
|
|
686
|
+
async simulate(options) {
|
|
687
|
+
const atc = options?.skipSignatures ? new AtomicTransactionComposer() : this.atc;
|
|
688
|
+
// Build the transactions
|
|
689
|
+
if (options?.skipSignatures) {
|
|
690
|
+
options.allowEmptySignatures = true;
|
|
691
|
+
options.fixSigners = true;
|
|
692
|
+
// Build transactions uses empty signers
|
|
693
|
+
const transactions = await this.buildTransactions();
|
|
694
|
+
for (const txn of transactions.transactions) {
|
|
695
|
+
atc.addTransaction({ txn, signer: TransactionComposer.NULL_SIGNER });
|
|
696
|
+
}
|
|
697
|
+
atc['methodCalls'] = transactions.methodCalls;
|
|
698
|
+
}
|
|
699
|
+
else {
|
|
700
|
+
// Build creates real signatures
|
|
701
|
+
await this.build();
|
|
702
|
+
}
|
|
703
|
+
const { methodResults, simulateResponse } = await atc.simulate(this.algod, new modelsv2.SimulateRequest({
|
|
704
|
+
txnGroups: [],
|
|
705
|
+
...options,
|
|
706
|
+
...(Config.debug
|
|
707
|
+
? {
|
|
708
|
+
allowEmptySignatures: true,
|
|
709
|
+
fixSigners: true,
|
|
710
|
+
allowMoreLogging: true,
|
|
711
|
+
execTraceConfig: new modelsv2.SimulateTraceConfig({
|
|
712
|
+
enable: true,
|
|
713
|
+
scratchChange: true,
|
|
714
|
+
stackChange: true,
|
|
715
|
+
stateChange: true,
|
|
716
|
+
}),
|
|
717
|
+
}
|
|
718
|
+
: undefined),
|
|
719
|
+
}));
|
|
720
|
+
const failedGroup = simulateResponse?.txnGroups[0];
|
|
721
|
+
if (failedGroup?.failureMessage) {
|
|
722
|
+
const errorMessage = `Transaction failed at transaction(s) ${failedGroup.failedAt?.join(', ') || 'unknown'} in the group. ${failedGroup.failureMessage}`;
|
|
723
|
+
const error = new Error(errorMessage);
|
|
724
|
+
if (Config.debug) {
|
|
725
|
+
await Config.events.emitAsync(EventType.TxnGroupSimulated, { simulateResponse });
|
|
726
|
+
}
|
|
727
|
+
error.simulateResponse = simulateResponse;
|
|
728
|
+
throw error;
|
|
729
|
+
}
|
|
730
|
+
if (Config.debug && Config.traceAll) {
|
|
731
|
+
await Config.events.emitAsync(EventType.TxnGroupSimulated, { simulateResponse });
|
|
732
|
+
}
|
|
733
|
+
const transactions = atc.buildGroup().map((t) => t.txn);
|
|
734
|
+
return {
|
|
735
|
+
confirmations: simulateResponse.txnGroups[0].txnResults.map((t) => t.txnResult),
|
|
736
|
+
transactions: transactions,
|
|
737
|
+
txIds: transactions.map((t) => t.txID()),
|
|
738
|
+
groupId: Buffer.from(transactions[0].group ?? new Uint8Array()).toString('base64'),
|
|
739
|
+
simulateResponse,
|
|
740
|
+
returns: methodResults.map(getABIReturnValue),
|
|
741
|
+
};
|
|
742
|
+
}
|
|
743
|
+
/**
|
|
744
|
+
* Create an encoded transaction note that follows the ARC-2 spec.
|
|
745
|
+
*
|
|
746
|
+
* https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0002.md
|
|
747
|
+
* @param note The ARC-2 transaction note data
|
|
748
|
+
* @returns The binary encoded transaction note
|
|
749
|
+
*/
|
|
750
|
+
static arc2Note(note) {
|
|
751
|
+
const arc2Payload = `${note.dAppName}:${note.format}${typeof note.data === 'string' ? note.data : JSON.stringify(note.data)}`;
|
|
752
|
+
const encoder = new TextEncoder();
|
|
753
|
+
return encoder.encode(arc2Payload);
|
|
754
|
+
}
|
|
464
755
|
}
|
|
756
|
+
/** Signer used to represent a lack of signer */
|
|
757
|
+
TransactionComposer.NULL_SIGNER = algosdk.makeEmptyTransactionSigner();
|
|
465
758
|
|
|
466
|
-
export {
|
|
759
|
+
export { MAX_TRANSACTION_GROUP_SIZE, TransactionComposer };
|
|
467
760
|
//# sourceMappingURL=composer.mjs.map
|