@algorandfoundation/algokit-utils 10.0.0-alpha.2 → 10.0.0-alpha.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_virtual/rolldown_runtime.js +10 -15
- package/algo25/index.d.ts +2 -0
- package/algo25/index.js +9 -0
- package/algo25/index.mjs +3 -0
- package/algod-client/index.d.ts +3 -7
- package/algod-client/index.js +2 -5
- package/algod-client/index.mjs +2 -2
- package/index.d.ts +1 -2
- package/index.js +0 -7
- package/index.mjs +1 -2
- package/indexer-client/index.d.ts +2 -2
- package/indexer-client/index.js +6 -6
- package/indexer-client/index.mjs +2 -2
- package/{indexer-lookup.d.ts → indexer-client/indexer-lookup.d.ts} +8 -11
- package/{indexer-lookup.mjs → indexer-client/indexer-lookup.js} +6 -10
- package/indexer-client/indexer-lookup.js.map +1 -0
- package/{indexer-lookup.js → indexer-client/indexer-lookup.mjs} +3 -18
- package/indexer-client/indexer-lookup.mjs.map +1 -0
- package/kmd-client/index.d.ts +1 -2
- package/kmd-client/index.js +0 -5
- package/kmd-client/index.mjs +1 -2
- package/package.json +1 -1
- package/packages/abi/src/abi-method.d.ts +1 -1
- package/packages/abi/src/abi-method.js +1 -1
- package/packages/abi/src/abi-method.js.map +1 -1
- package/packages/abi/src/abi-method.mjs +1 -1
- package/packages/abi/src/abi-method.mjs.map +1 -1
- package/packages/abi/src/abi-type.d.ts +1 -1
- package/packages/abi/src/abi-type.js +4 -2
- package/packages/abi/src/abi-type.js.map +1 -1
- package/packages/abi/src/abi-type.mjs +4 -2
- package/packages/abi/src/abi-type.mjs.map +1 -1
- package/packages/abi/src/arc56-contract.js +1 -0
- package/packages/abi/src/arc56-contract.js.map +1 -1
- package/packages/abi/src/arc56-contract.mjs +1 -0
- package/packages/abi/src/arc56-contract.mjs.map +1 -1
- package/packages/algo25/src/index.d.ts +40 -0
- package/packages/algo25/src/index.js +44 -0
- package/packages/algo25/src/index.js.map +1 -1
- package/packages/algo25/src/index.mjs +39 -1
- package/packages/algo25/src/index.mjs.map +1 -1
- package/packages/algod_client/src/apis/api-service.d.ts +44 -44
- package/packages/algod_client/src/apis/api-service.js +155 -155
- package/packages/algod_client/src/apis/api-service.js.map +1 -1
- package/packages/algod_client/src/apis/api-service.mjs +155 -155
- package/packages/algod_client/src/apis/api-service.mjs.map +1 -1
- package/packages/algod_client/src/core/api-error.js +3 -1
- package/packages/algod_client/src/core/api-error.js.map +1 -1
- package/packages/algod_client/src/core/api-error.mjs +3 -1
- package/packages/algod_client/src/core/api-error.mjs.map +1 -1
- package/packages/algod_client/src/core/model-runtime.js +6 -6
- package/packages/algod_client/src/core/model-runtime.js.map +1 -1
- package/packages/algod_client/src/core/model-runtime.mjs +8 -8
- package/packages/algod_client/src/core/model-runtime.mjs.map +1 -1
- package/packages/algod_client/src/models/account-participation.js +4 -4
- package/packages/algod_client/src/models/account-participation.js.map +1 -1
- package/packages/algod_client/src/models/account-participation.mjs +4 -4
- package/packages/algod_client/src/models/account-participation.mjs.map +1 -1
- package/packages/algod_client/src/models/application-state-schema.d.ts +2 -2
- package/packages/algod_client/src/models/application-state-schema.js +2 -2
- package/packages/algod_client/src/models/application-state-schema.js.map +1 -1
- package/packages/algod_client/src/models/application-state-schema.mjs +2 -2
- package/packages/algod_client/src/models/application-state-schema.mjs.map +1 -1
- package/packages/algod_client/src/models/asset-params.js +2 -1
- package/packages/algod_client/src/models/asset-params.js.map +1 -1
- package/packages/algod_client/src/models/asset-params.mjs +2 -1
- package/packages/algod_client/src/models/asset-params.mjs.map +1 -1
- package/packages/algod_client/src/models/block-response.js +1 -2
- package/packages/algod_client/src/models/block-response.js.map +1 -1
- package/packages/algod_client/src/models/block-response.mjs +2 -3
- package/packages/algod_client/src/models/block-response.mjs.map +1 -1
- package/packages/algod_client/src/models/block.d.ts +60 -40
- package/packages/algod_client/src/models/block.js +184 -108
- package/packages/algod_client/src/models/block.js.map +1 -1
- package/packages/algod_client/src/models/block.mjs +184 -108
- package/packages/algod_client/src/models/block.mjs.map +1 -1
- package/packages/algod_client/src/models/ledger-state-delta.js +1 -1
- package/packages/algod_client/src/models/ledger-state-delta.js.map +1 -1
- package/packages/algod_client/src/models/ledger-state-delta.mjs +2 -2
- package/packages/algod_client/src/models/ledger-state-delta.mjs.map +1 -1
- package/packages/algod_client/src/models/simulate-request.js +1 -1
- package/packages/algod_client/src/models/simulate-request.mjs +1 -1
- package/packages/algod_client/src/models/simulate-response.d.ts +2 -1
- package/packages/algod_client/src/models/simulate-response.js +6 -1
- package/packages/algod_client/src/models/simulate-response.js.map +1 -1
- package/packages/algod_client/src/models/simulate-response.mjs +6 -2
- package/packages/algod_client/src/models/simulate-response.mjs.map +1 -1
- package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.d.ts +3 -5
- package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.js +4 -6
- package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.js.map +1 -1
- package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.mjs +3 -5
- package/packages/algod_client/src/models/simulate-unnamed-resources-accessed.mjs.map +1 -1
- package/packages/algod_client/src/models/transaction-parameters-response.js +2 -2
- package/packages/algod_client/src/models/transaction-parameters-response.js.map +1 -1
- package/packages/algod_client/src/models/transaction-parameters-response.mjs +2 -2
- package/packages/algod_client/src/models/transaction-parameters-response.mjs.map +1 -1
- package/packages/common/src/address.js +0 -14
- package/packages/common/src/address.js.map +1 -1
- package/packages/common/src/address.mjs +1 -14
- package/packages/common/src/address.mjs.map +1 -1
- package/packages/common/src/codecs/composite/map.js +7 -4
- package/packages/common/src/codecs/composite/map.js.map +1 -1
- package/packages/common/src/codecs/composite/map.mjs +7 -4
- package/packages/common/src/codecs/composite/map.mjs.map +1 -1
- package/packages/common/src/codecs/composite/record.js +0 -1
- package/packages/common/src/codecs/composite/record.js.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/bytes.js +0 -1
- package/packages/common/src/codecs/primitives/bytes.js.map +1 -1
- package/packages/common/src/codecs/primitives/fixed-bytes.js +0 -1
- package/packages/common/src/codecs/primitives/fixed-bytes.js.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/msgpack.js +0 -1
- package/packages/common/src/msgpack.js.map +1 -1
- package/packages/indexer_client/src/apis/api-service.d.ts +1 -1
- package/packages/indexer_client/src/apis/api-service.js +12 -12
- package/packages/indexer_client/src/apis/api-service.js.map +1 -1
- package/packages/indexer_client/src/apis/api-service.mjs +12 -12
- package/packages/indexer_client/src/apis/api-service.mjs.map +1 -1
- package/packages/indexer_client/src/core/api-error.js +3 -1
- package/packages/indexer_client/src/core/api-error.js.map +1 -1
- package/packages/indexer_client/src/core/api-error.mjs +3 -1
- package/packages/indexer_client/src/core/api-error.mjs.map +1 -1
- package/packages/indexer_client/src/core/model-runtime.js +0 -15
- package/packages/indexer_client/src/core/model-runtime.js.map +1 -1
- package/packages/indexer_client/src/core/model-runtime.mjs +1 -13
- package/packages/indexer_client/src/core/model-runtime.mjs.map +1 -1
- package/packages/indexer_client/src/models/account-participation.js +4 -4
- package/packages/indexer_client/src/models/account-participation.js.map +1 -1
- package/packages/indexer_client/src/models/account-participation.mjs +4 -4
- package/packages/indexer_client/src/models/account-participation.mjs.map +1 -1
- package/packages/indexer_client/src/models/application-state-schema.d.ts +2 -2
- package/packages/indexer_client/src/models/application-state-schema.js +2 -2
- package/packages/indexer_client/src/models/application-state-schema.js.map +1 -1
- package/packages/indexer_client/src/models/application-state-schema.mjs +2 -2
- package/packages/indexer_client/src/models/application-state-schema.mjs.map +1 -1
- package/packages/indexer_client/src/models/asset-params.js +2 -1
- package/packages/indexer_client/src/models/asset-params.js.map +1 -1
- package/packages/indexer_client/src/models/asset-params.mjs +2 -1
- package/packages/indexer_client/src/models/asset-params.mjs.map +1 -1
- package/packages/indexer_client/src/models/block.d.ts +5 -5
- package/packages/indexer_client/src/models/block.js +13 -13
- package/packages/indexer_client/src/models/block.js.map +1 -1
- package/packages/indexer_client/src/models/block.mjs +13 -13
- package/packages/indexer_client/src/models/block.mjs.map +1 -1
- package/packages/indexer_client/src/models/eval-delta-key-value.d.ts +1 -1
- package/packages/indexer_client/src/models/eval-delta-key-value.js +2 -2
- package/packages/indexer_client/src/models/eval-delta-key-value.js.map +1 -1
- package/packages/indexer_client/src/models/eval-delta-key-value.mjs +2 -2
- package/packages/indexer_client/src/models/eval-delta-key-value.mjs.map +1 -1
- package/packages/indexer_client/src/models/eval-delta.d.ts +1 -1
- package/packages/indexer_client/src/models/eval-delta.js +2 -2
- package/packages/indexer_client/src/models/eval-delta.js.map +1 -1
- package/packages/indexer_client/src/models/eval-delta.mjs +2 -2
- package/packages/indexer_client/src/models/eval-delta.mjs.map +1 -1
- package/packages/indexer_client/src/models/hb-proof-fields.js +6 -6
- package/packages/indexer_client/src/models/hb-proof-fields.js.map +1 -1
- package/packages/indexer_client/src/models/hb-proof-fields.mjs +6 -6
- package/packages/indexer_client/src/models/hb-proof-fields.mjs.map +1 -1
- package/packages/indexer_client/src/models/participation-updates.d.ts +2 -2
- package/packages/indexer_client/src/models/participation-updates.js +2 -2
- package/packages/indexer_client/src/models/participation-updates.js.map +1 -1
- package/packages/indexer_client/src/models/participation-updates.mjs +2 -2
- package/packages/indexer_client/src/models/participation-updates.mjs.map +1 -1
- package/packages/indexer_client/src/models/state-proof-verifier.js +2 -2
- package/packages/indexer_client/src/models/state-proof-verifier.js.map +1 -1
- package/packages/indexer_client/src/models/state-proof-verifier.mjs +2 -2
- package/packages/indexer_client/src/models/state-proof-verifier.mjs.map +1 -1
- package/packages/indexer_client/src/models/state-schema.d.ts +2 -2
- package/packages/indexer_client/src/models/state-schema.js +2 -2
- package/packages/indexer_client/src/models/state-schema.js.map +1 -1
- package/packages/indexer_client/src/models/state-schema.mjs +2 -2
- package/packages/indexer_client/src/models/state-schema.mjs.map +1 -1
- package/packages/indexer_client/src/models/teal-key-value.d.ts +1 -1
- package/packages/indexer_client/src/models/teal-key-value.js +2 -2
- package/packages/indexer_client/src/models/teal-key-value.js.map +1 -1
- package/packages/indexer_client/src/models/teal-key-value.mjs +2 -2
- package/packages/indexer_client/src/models/teal-key-value.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction-heartbeat.js +2 -1
- package/packages/indexer_client/src/models/transaction-heartbeat.js.map +1 -1
- package/packages/indexer_client/src/models/transaction-heartbeat.mjs +2 -1
- package/packages/indexer_client/src/models/transaction-heartbeat.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction-keyreg.js +4 -4
- package/packages/indexer_client/src/models/transaction-keyreg.js.map +1 -1
- package/packages/indexer_client/src/models/transaction-keyreg.mjs +4 -4
- package/packages/indexer_client/src/models/transaction-keyreg.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction-signature-logicsig.js +2 -1
- package/packages/indexer_client/src/models/transaction-signature-logicsig.js.map +1 -1
- package/packages/indexer_client/src/models/transaction-signature-logicsig.mjs +2 -1
- package/packages/indexer_client/src/models/transaction-signature-logicsig.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.js +3 -3
- package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.js.map +1 -1
- package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.mjs +3 -3
- package/packages/indexer_client/src/models/transaction-signature-multisig-subsignature.mjs.map +1 -1
- package/packages/indexer_client/src/models/transaction.d.ts +2 -2
- package/packages/indexer_client/src/models/transaction.js +6 -5
- package/packages/indexer_client/src/models/transaction.js.map +1 -1
- package/packages/indexer_client/src/models/transaction.mjs +6 -5
- package/packages/indexer_client/src/models/transaction.mjs.map +1 -1
- package/packages/kmd_client/src/apis/api-service.d.ts +5 -5
- package/packages/kmd_client/src/apis/api-service.js +32 -32
- package/packages/kmd_client/src/apis/api-service.js.map +1 -1
- package/packages/kmd_client/src/apis/api-service.mjs +32 -32
- package/packages/kmd_client/src/apis/api-service.mjs.map +1 -1
- package/packages/kmd_client/src/core/api-error.js +3 -1
- package/packages/kmd_client/src/core/api-error.js.map +1 -1
- package/packages/kmd_client/src/core/api-error.mjs +3 -1
- package/packages/kmd_client/src/core/api-error.mjs.map +1 -1
- package/packages/kmd_client/src/core/model-runtime.js +2 -12
- package/packages/kmd_client/src/core/model-runtime.js.map +1 -1
- package/packages/kmd_client/src/core/model-runtime.mjs +3 -11
- package/packages/kmd_client/src/core/model-runtime.mjs.map +1 -1
- package/packages/sdk/src/encoding/encoding.js +12 -2
- package/packages/sdk/src/encoding/encoding.js.map +1 -1
- package/packages/sdk/src/encoding/encoding.mjs +12 -1
- package/packages/sdk/src/encoding/encoding.mjs.map +1 -1
- package/packages/sdk/src/encoding/schema/map.js +0 -2
- package/packages/sdk/src/encoding/schema/map.js.map +1 -1
- package/packages/transact/src/logicsig.d.ts +3 -15
- package/packages/transact/src/logicsig.js +16 -36
- package/packages/transact/src/logicsig.js.map +1 -1
- package/packages/transact/src/logicsig.mjs +18 -36
- package/packages/transact/src/logicsig.mjs.map +1 -1
- package/packages/transact/src/multisig.d.ts +7 -115
- package/packages/transact/src/multisig.js +86 -136
- package/packages/transact/src/multisig.js.map +1 -1
- package/packages/transact/src/multisig.mjs +87 -117
- package/packages/transact/src/multisig.mjs.map +1 -1
- package/packages/transact/src/transactions/app-call.d.ts +10 -15
- package/packages/transact/src/transactions/app-call.js.map +1 -1
- package/packages/transact/src/transactions/app-call.mjs.map +1 -1
- package/packages/transact/src/transactions/asset-config.d.ts +1 -6
- package/packages/transact/src/transactions/asset-config.js.map +1 -1
- package/packages/transact/src/transactions/asset-config.mjs.map +1 -1
- package/packages/transact/src/transactions/asset-freeze.d.ts +1 -6
- package/packages/transact/src/transactions/asset-transfer.d.ts +1 -6
- package/packages/transact/src/transactions/key-registration.d.ts +1 -8
- package/packages/transact/src/transactions/reference-types-meta.d.ts +26 -0
- package/packages/transact/src/transactions/reference-types-meta.js +71 -0
- package/packages/transact/src/transactions/reference-types-meta.js.map +1 -0
- package/packages/transact/src/transactions/reference-types-meta.mjs +69 -0
- package/packages/transact/src/transactions/reference-types-meta.mjs.map +1 -0
- package/packages/transact/src/transactions/signed-transaction-meta.js +2 -3
- package/packages/transact/src/transactions/signed-transaction-meta.js.map +1 -1
- package/packages/transact/src/transactions/signed-transaction-meta.mjs +3 -3
- package/packages/transact/src/transactions/signed-transaction-meta.mjs.map +1 -1
- package/packages/transact/src/transactions/signed-transaction.d.ts +7 -3
- package/packages/transact/src/transactions/signed-transaction.js +1 -1
- package/packages/transact/src/transactions/signed-transaction.js.map +1 -1
- package/packages/transact/src/transactions/signed-transaction.mjs +1 -2
- package/packages/transact/src/transactions/signed-transaction.mjs.map +1 -1
- package/packages/transact/src/transactions/transaction-meta.js +29 -23
- package/packages/transact/src/transactions/transaction-meta.js.map +1 -1
- package/packages/transact/src/transactions/transaction-meta.mjs +29 -23
- package/packages/transact/src/transactions/transaction-meta.mjs.map +1 -1
- package/packages/transact/src/transactions/transaction.d.ts +5 -1
- package/packages/transact/src/transactions/transaction.js +1 -1
- package/packages/transact/src/transactions/transaction.js.map +1 -1
- package/packages/transact/src/transactions/transaction.mjs +1 -1
- package/packages/transact/src/transactions/transaction.mjs.map +1 -1
- package/sdk/index.js +1 -1
- package/testing/account.js +2 -5
- package/testing/account.js.map +1 -1
- package/testing/account.mjs +2 -5
- package/testing/account.mjs.map +1 -1
- package/testing/fixtures/algorand-fixture.d.ts +3 -3
- package/testing/fixtures/algorand-fixture.js.map +1 -1
- package/testing/fixtures/algorand-fixture.mjs.map +1 -1
- package/transact/index.d.ts +11 -10
- package/transact/index.js +7 -32
- package/transact/index.mjs +7 -10
- package/transaction/transaction.js +2 -2
- package/transaction/transaction.js.map +1 -1
- package/transaction/transaction.mjs +2 -2
- package/transaction/transaction.mjs.map +1 -1
- package/transactions/app-call.d.ts +5 -4
- package/transactions/app-call.js +15 -15
- package/transactions/app-call.js.map +1 -1
- package/transactions/app-call.mjs +15 -15
- package/transactions/app-call.mjs.map +1 -1
- package/transactions/asset-config.d.ts +1 -1
- package/transactions/asset-config.js +1 -1
- package/transactions/asset-config.js.map +1 -1
- package/transactions/asset-config.mjs +1 -1
- package/transactions/asset-config.mjs.map +1 -1
- package/transactions/key-registration.d.ts +1 -1
- package/transactions/key-registration.js.map +1 -1
- package/transactions/key-registration.mjs.map +1 -1
- package/transactions/method-call.d.ts +1 -1
- package/transactions/method-call.js +69 -77
- package/transactions/method-call.js.map +1 -1
- package/transactions/method-call.mjs +69 -77
- package/transactions/method-call.mjs.map +1 -1
- package/types/account-manager.d.ts +1 -1
- package/types/account-manager.js +3 -3
- package/types/account-manager.js.map +1 -1
- package/types/account-manager.mjs +3 -3
- package/types/account-manager.mjs.map +1 -1
- package/types/algorand-client-transaction-creator.d.ts +57 -43
- package/types/algorand-client-transaction-creator.js +8 -0
- package/types/algorand-client-transaction-creator.js.map +1 -1
- package/types/algorand-client-transaction-creator.mjs +8 -0
- package/types/algorand-client-transaction-creator.mjs.map +1 -1
- package/types/algorand-client-transaction-sender.d.ts +62 -48
- package/types/algorand-client-transaction-sender.js +8 -1
- package/types/algorand-client-transaction-sender.js.map +1 -1
- package/types/algorand-client-transaction-sender.mjs +8 -0
- package/types/algorand-client-transaction-sender.mjs.map +1 -1
- package/types/app-client.d.ts +110 -105
- package/types/app-client.js +0 -1
- package/types/app-client.js.map +1 -1
- package/types/app-client.mjs.map +1 -1
- package/types/app-deployer.d.ts +1 -1
- package/types/app-deployer.js +2 -2
- package/types/app-deployer.js.map +1 -1
- package/types/app-deployer.mjs +2 -2
- package/types/app-deployer.mjs.map +1 -1
- package/types/app-factory.d.ts +44 -41
- package/types/app-factory.js.map +1 -1
- package/types/app-factory.mjs.map +1 -1
- package/types/app-manager.d.ts +3 -1
- package/types/app-manager.js +16 -10
- package/types/app-manager.js.map +1 -1
- package/types/app-manager.mjs +16 -10
- package/types/app-manager.mjs.map +1 -1
- package/types/app-spec.js +12 -5
- package/types/app-spec.js.map +1 -1
- package/types/app-spec.mjs +12 -5
- package/types/app-spec.mjs.map +1 -1
- package/types/app.d.ts +1 -1
- package/types/app.js.map +1 -1
- package/types/app.mjs.map +1 -1
- package/types/asset-manager.js +1 -1
- package/types/asset-manager.js.map +1 -1
- package/types/asset-manager.mjs +1 -1
- package/types/asset-manager.mjs.map +1 -1
- package/types/async-event-emitter.d.ts +3 -6
- package/types/async-event-emitter.js.map +1 -1
- package/types/async-event-emitter.mjs.map +1 -1
- package/types/client-manager.d.ts +1 -1
- package/types/client-manager.js.map +1 -1
- package/types/client-manager.mjs.map +1 -1
- package/types/composer.d.ts +9 -1
- package/types/composer.js +35 -23
- package/types/composer.js.map +1 -1
- package/types/composer.mjs +37 -24
- package/types/composer.mjs.map +1 -1
- package/types/debugging.d.ts +13 -9
- package/types/debugging.js.map +1 -1
- package/types/debugging.mjs.map +1 -1
- package/types/expand.d.ts +2 -9
- package/types/kmd-account-manager.d.ts +1 -0
- package/types/kmd-account-manager.js +21 -10
- package/types/kmd-account-manager.js.map +1 -1
- package/types/kmd-account-manager.mjs +22 -11
- package/types/kmd-account-manager.mjs.map +1 -1
- package/types/lifecycle-events.d.ts +0 -1
- package/types/lifecycle-events.js.map +1 -1
- package/types/lifecycle-events.mjs.map +1 -1
- package/types/testing.d.ts +2 -2
- package/types/transaction.d.ts +1 -1
- package/_virtual/rolldown_runtime.mjs +0 -13
- package/indexer-lookup.js.map +0 -1
- package/indexer-lookup.mjs.map +0 -1
- package/packages/algod_client/src/core/model-runtime.d.ts +0 -10
- package/packages/algod_client/src/models/application-local-reference.d.ts +0 -20
- package/packages/algod_client/src/models/application-local-reference.js +0 -23
- package/packages/algod_client/src/models/application-local-reference.js.map +0 -1
- package/packages/algod_client/src/models/application-local-reference.mjs +0 -23
- package/packages/algod_client/src/models/application-local-reference.mjs.map +0 -1
- package/packages/algod_client/src/models/asset-holding-reference.d.ts +0 -20
- package/packages/algod_client/src/models/asset-holding-reference.js +0 -23
- package/packages/algod_client/src/models/asset-holding-reference.js.map +0 -1
- package/packages/algod_client/src/models/asset-holding-reference.mjs +0 -23
- package/packages/algod_client/src/models/asset-holding-reference.mjs.map +0 -1
- package/packages/algod_client/src/models/box-reference.d.ts +0 -17
- package/packages/algod_client/src/models/box-reference.js +0 -23
- package/packages/algod_client/src/models/box-reference.js.map +0 -1
- package/packages/algod_client/src/models/box-reference.mjs +0 -23
- package/packages/algod_client/src/models/box-reference.mjs.map +0 -1
- package/packages/indexer_client/src/core/model-runtime.d.ts +0 -10
- package/packages/kmd_client/src/core/model-runtime.d.ts +0 -10
- package/packages/transact/src/transactions/common.d.ts +0 -37
|
@@ -188,38 +188,6 @@ var KmdApi = class {
|
|
|
188
188
|
body: serializedBody
|
|
189
189
|
}), GenerateKeyResponseMeta);
|
|
190
190
|
}
|
|
191
|
-
async getVersion() {
|
|
192
|
-
const headers = {};
|
|
193
|
-
headers["Accept"] = this.mimeTypeFor("json");
|
|
194
|
-
return decodeJson(await this.httpRequest.request({
|
|
195
|
-
method: "GET",
|
|
196
|
-
url: "/versions",
|
|
197
|
-
path: {},
|
|
198
|
-
query: {},
|
|
199
|
-
headers,
|
|
200
|
-
body: void 0
|
|
201
|
-
}), VersionsResponseMeta);
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Returns information about the wallet associated with the passed wallet handle token. Additionally returns expiration information about the token itself.
|
|
205
|
-
*/
|
|
206
|
-
async getWalletInfo(body) {
|
|
207
|
-
const headers = {};
|
|
208
|
-
const responseFormat = "json";
|
|
209
|
-
headers["Accept"] = this.mimeTypeFor(responseFormat);
|
|
210
|
-
const bodyMeta = WalletInfoRequestMeta;
|
|
211
|
-
const mediaType = this.mimeTypeFor(!bodyMeta ? "text" : responseFormat);
|
|
212
|
-
if (mediaType) headers["Content-Type"] = mediaType;
|
|
213
|
-
const serializedBody = body ? encodeJson(body, bodyMeta) : void 0;
|
|
214
|
-
return decodeJson(await this.httpRequest.request({
|
|
215
|
-
method: "POST",
|
|
216
|
-
url: "/v1/wallet/info",
|
|
217
|
-
path: {},
|
|
218
|
-
query: {},
|
|
219
|
-
headers,
|
|
220
|
-
body: serializedBody
|
|
221
|
-
}), WalletInfoResponseMeta);
|
|
222
|
-
}
|
|
223
191
|
/**
|
|
224
192
|
* Import an externally generated key into the wallet. Note that if you wish to back up the imported key, you must do so by backing up the entire wallet database, because imported keys were not derived from the wallet's master derivation key.
|
|
225
193
|
*/
|
|
@@ -475,6 +443,38 @@ var KmdApi = class {
|
|
|
475
443
|
body: serializedBody
|
|
476
444
|
}), SignTransactionResponseMeta);
|
|
477
445
|
}
|
|
446
|
+
async version() {
|
|
447
|
+
const headers = {};
|
|
448
|
+
headers["Accept"] = this.mimeTypeFor("json");
|
|
449
|
+
return decodeJson(await this.httpRequest.request({
|
|
450
|
+
method: "GET",
|
|
451
|
+
url: "/versions",
|
|
452
|
+
path: {},
|
|
453
|
+
query: {},
|
|
454
|
+
headers,
|
|
455
|
+
body: void 0
|
|
456
|
+
}), VersionsResponseMeta);
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Returns information about the wallet associated with the passed wallet handle token. Additionally returns expiration information about the token itself.
|
|
460
|
+
*/
|
|
461
|
+
async walletInfo(body) {
|
|
462
|
+
const headers = {};
|
|
463
|
+
const responseFormat = "json";
|
|
464
|
+
headers["Accept"] = this.mimeTypeFor(responseFormat);
|
|
465
|
+
const bodyMeta = WalletInfoRequestMeta;
|
|
466
|
+
const mediaType = this.mimeTypeFor(!bodyMeta ? "text" : responseFormat);
|
|
467
|
+
if (mediaType) headers["Content-Type"] = mediaType;
|
|
468
|
+
const serializedBody = body ? encodeJson(body, bodyMeta) : void 0;
|
|
469
|
+
return decodeJson(await this.httpRequest.request({
|
|
470
|
+
method: "POST",
|
|
471
|
+
url: "/v1/wallet/info",
|
|
472
|
+
path: {},
|
|
473
|
+
query: {},
|
|
474
|
+
headers,
|
|
475
|
+
body: serializedBody
|
|
476
|
+
}), WalletInfoResponseMeta);
|
|
477
|
+
}
|
|
478
478
|
/**
|
|
479
479
|
* Create a new wallet (collection of keys) with the given parameters.
|
|
480
480
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-service.mjs","names":["httpRequest: BaseHttpRequest","headers: Record<string, string>","responseFormat: EncodingFormat"],"sources":["../../../../../packages/kmd_client/src/apis/api-service.ts"],"sourcesContent":["import type { BaseHttpRequest } from '../core/base-http-request'\nimport { encodeJson, decodeJson } from '../core/model-runtime'\nimport { type EncodingFormat } from '@algorandfoundation/algokit-common'\nimport { encodeTransactionRaw } from '@algorandfoundation/algokit-transact'\nimport type { SignMultisigRequest, SignTransactionRequest } from '../models/index'\nimport type {\n CreateWalletRequest,\n CreateWalletResponse,\n DeleteKeyRequest,\n DeleteMultisigRequest,\n ExportKeyRequest,\n ExportKeyResponse,\n ExportMasterKeyRequest,\n ExportMasterKeyResponse,\n ExportMultisigRequest,\n ExportMultisigResponse,\n GenerateKeyRequest,\n GenerateKeyResponse,\n ImportKeyRequest,\n ImportKeyResponse,\n ImportMultisigRequest,\n ImportMultisigResponse,\n InitWalletHandleTokenRequest,\n InitWalletHandleTokenResponse,\n ListKeysRequest,\n ListKeysResponse,\n ListMultisigRequest,\n ListMultisigResponse,\n ListWalletsResponse,\n ReleaseWalletHandleTokenRequest,\n RenameWalletRequest,\n RenameWalletResponse,\n RenewWalletHandleTokenRequest,\n RenewWalletHandleTokenResponse,\n SignMultisigResponse,\n SignMultisigTxnRequest,\n SignProgramMultisigRequest,\n SignProgramMultisigResponse,\n SignProgramRequest,\n SignProgramResponse,\n SignTransactionResponse,\n SignTxnRequest,\n VersionsResponse,\n WalletInfoRequest,\n WalletInfoResponse,\n} from '../models/index'\nimport {\n CreateWalletRequestMeta,\n CreateWalletResponseMeta,\n DeleteKeyRequestMeta,\n DeleteMultisigRequestMeta,\n ExportKeyRequestMeta,\n ExportKeyResponseMeta,\n ExportMasterKeyRequestMeta,\n ExportMasterKeyResponseMeta,\n ExportMultisigRequestMeta,\n ExportMultisigResponseMeta,\n GenerateKeyRequestMeta,\n GenerateKeyResponseMeta,\n ImportKeyRequestMeta,\n ImportKeyResponseMeta,\n ImportMultisigRequestMeta,\n ImportMultisigResponseMeta,\n InitWalletHandleTokenRequestMeta,\n InitWalletHandleTokenResponseMeta,\n ListKeysRequestMeta,\n ListKeysResponseMeta,\n ListMultisigRequestMeta,\n ListMultisigResponseMeta,\n ListWalletsResponseMeta,\n ReleaseWalletHandleTokenRequestMeta,\n RenameWalletRequestMeta,\n RenameWalletResponseMeta,\n RenewWalletHandleTokenRequestMeta,\n RenewWalletHandleTokenResponseMeta,\n SignMultisigResponseMeta,\n SignMultisigTxnRequestMeta,\n SignProgramMultisigRequestMeta,\n SignProgramMultisigResponseMeta,\n SignProgramRequestMeta,\n SignProgramResponseMeta,\n SignTransactionResponseMeta,\n SignTxnRequestMeta,\n VersionsResponseMeta,\n WalletInfoRequestMeta,\n WalletInfoResponseMeta,\n} from '../models/model-meta'\n\nexport class KmdApi {\n constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n private mimeTypeFor(format: EncodingFormat | 'text'): string {\n return format === 'json' ? 'application/json' : format === 'msgpack' ? 'application/msgpack' : 'text/plain'\n }\n\n /**\n * Create a new wallet (collection of keys) with the given parameters.\n */\n private async _createWallet(body: CreateWalletRequest): Promise<CreateWalletResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = CreateWalletRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/wallet',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, CreateWalletResponseMeta)\n }\n\n /**\n * Deletes the key with the passed public key from the wallet.\n */\n async deleteKey(body: DeleteKeyRequest): Promise<void> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = DeleteKeyRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n await this.httpRequest.request<void>({\n method: 'DELETE',\n url: '/v1/key',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n }\n\n /**\n * Deletes multisig preimage information for the passed address from the wallet.\n */\n async deleteMultisig(body: DeleteMultisigRequest): Promise<void> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = DeleteMultisigRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n await this.httpRequest.request<void>({\n method: 'DELETE',\n url: '/v1/multisig',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n }\n\n /**\n * Export the secret key associated with the passed public key.\n */\n async exportKey(body: ExportKeyRequest): Promise<ExportKeyResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = ExportKeyRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/key/export',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, ExportKeyResponseMeta)\n }\n\n /**\n * Export the master derivation key from the wallet. This key is a master \"backup\" key for the underlying wallet. With it, you can regenerate all of the wallets that have been generated with this wallet's `POST /v1/key` endpoint. This key will not allow you to recover keys imported from other wallets, however.\n */\n async exportMasterKey(body: ExportMasterKeyRequest): Promise<ExportMasterKeyResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = ExportMasterKeyRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/master-key/export',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, ExportMasterKeyResponseMeta)\n }\n\n /**\n * Given a multisig address whose preimage this wallet stores, returns the information used to generate the address, including public keys, threshold, and multisig version.\n */\n async exportMultisig(body: ExportMultisigRequest): Promise<ExportMultisigResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = ExportMultisigRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/multisig/export',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, ExportMultisigResponseMeta)\n }\n\n /**\n * Generates the next key in the deterministic key sequence (as determined by the master derivation key) and adds it to the wallet, returning the public key.\n */\n async generateKey(body: GenerateKeyRequest): Promise<GenerateKeyResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = GenerateKeyRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/key',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, GenerateKeyResponseMeta)\n }\n\n async getVersion(): Promise<VersionsResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'GET',\n url: '/versions',\n path: {},\n query: {},\n headers,\n body: undefined,\n })\n\n return decodeJson(payload, VersionsResponseMeta)\n }\n\n /**\n * Returns information about the wallet associated with the passed wallet handle token. Additionally returns expiration information about the token itself.\n */\n async getWalletInfo(body: WalletInfoRequest): Promise<WalletInfoResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = WalletInfoRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/wallet/info',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, WalletInfoResponseMeta)\n }\n\n /**\n * Import an externally generated key into the wallet. Note that if you wish to back up the imported key, you must do so by backing up the entire wallet database, because imported keys were not derived from the wallet's master derivation key.\n */\n async importKey(body: ImportKeyRequest): Promise<ImportKeyResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = ImportKeyRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/key/import',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, ImportKeyResponseMeta)\n }\n\n /**\n * Generates a multisig account from the passed public keys array and multisig metadata, and stores all of this in the wallet.\n */\n async importMultisig(body: ImportMultisigRequest): Promise<ImportMultisigResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = ImportMultisigRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/multisig/import',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, ImportMultisigResponseMeta)\n }\n\n /**\n * Unlock the wallet and return a wallet handle token that can be used for subsequent operations. These tokens expire periodically and must be renewed. You can `POST` the token to `/v1/wallet/info` to see how much time remains until expiration, and renew it with `/v1/wallet/renew`. When you're done, you can invalidate the token with `/v1/wallet/release`.\n */\n async initWalletHandle(body: InitWalletHandleTokenRequest): Promise<InitWalletHandleTokenResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = InitWalletHandleTokenRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/wallet/init',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, InitWalletHandleTokenResponseMeta)\n }\n\n /**\n * Lists all of the public keys in this wallet. All of them have a stored private key.\n */\n async listKeysInWallet(body: ListKeysRequest): Promise<ListKeysResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = ListKeysRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/key/list',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, ListKeysResponseMeta)\n }\n\n /**\n * Lists all of the multisig accounts whose preimages this wallet stores\n */\n async listMultisig(body: ListMultisigRequest): Promise<ListMultisigResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = ListMultisigRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/multisig/list',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, ListMultisigResponseMeta)\n }\n\n /**\n * Lists all of the wallets that kmd is aware of.\n */\n async listWallets(): Promise<ListWalletsResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'GET',\n url: '/v1/wallets',\n path: {},\n query: {},\n headers,\n body: undefined,\n })\n\n return decodeJson(payload, ListWalletsResponseMeta)\n }\n\n /**\n * Invalidate the passed wallet handle token, making it invalid for use in subsequent requests.\n */\n async releaseWalletHandleToken(body: ReleaseWalletHandleTokenRequest): Promise<void> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = ReleaseWalletHandleTokenRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n await this.httpRequest.request<void>({\n method: 'POST',\n url: '/v1/wallet/release',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n }\n\n /**\n * Rename the underlying wallet to something else\n */\n async renameWallet(body: RenameWalletRequest): Promise<RenameWalletResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = RenameWalletRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/wallet/rename',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, RenameWalletResponseMeta)\n }\n\n /**\n * Renew a wallet handle token, increasing its expiration duration to its initial value\n */\n async renewWalletHandleToken(body: RenewWalletHandleTokenRequest): Promise<RenewWalletHandleTokenResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = RenewWalletHandleTokenRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/wallet/renew',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, RenewWalletHandleTokenResponseMeta)\n }\n\n /**\n * Start a multisig signature, or add a signature to a partially completed multisig signature object.\n */\n async signMultisigProgram(body: SignProgramMultisigRequest): Promise<SignProgramMultisigResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = SignProgramMultisigRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/multisig/signprogram',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, SignProgramMultisigResponseMeta)\n }\n\n /**\n * Start a multisig signature, or add a signature to a partially completed multisig signature object.\n */\n private async _signMultisigTransaction(body: SignMultisigTxnRequest): Promise<SignMultisigResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = SignMultisigTxnRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/multisig/sign',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, SignMultisigResponseMeta)\n }\n\n /**\n * Signs the passed program with a key from the wallet, determined by the account named in the request.\n */\n async signProgram(body: SignProgramRequest): Promise<SignProgramResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = SignProgramRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/program/sign',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, SignProgramResponseMeta)\n }\n\n /**\n * Signs the passed transaction with a key from the wallet, determined by the sender encoded in the transaction.\n */\n private async _signTransaction(body: SignTxnRequest): Promise<SignTransactionResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = SignTxnRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/transaction/sign',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, SignTransactionResponseMeta)\n }\n\n /**\n * Create a new wallet (collection of keys) with the given parameters.\n */\n async createWallet(body: CreateWalletRequest): Promise<CreateWalletResponse> {\n const requestBody = {\n ...body,\n walletDriverName: body.walletDriverName ?? 'sqlite',\n }\n return await this._createWallet(requestBody)\n }\n\n /**\n * Enables the signing of a transaction using the provided wallet and multisig info.\n * The public key is used to identify which multisig account key to use for signing.\n * When a signer is provided it is used to resolve the private key and sign the transaction, enabling rekeyed account signing.\n * @returns A multisig signature or partial signature, which can be used to form a signed transaction.\n */\n async signMultisigTransaction(body: SignMultisigRequest): Promise<SignMultisigResponse> {\n const requestBody = {\n ...body,\n transaction: encodeTransactionRaw(body.transaction),\n } satisfies SignMultisigTxnRequest\n return this._signMultisigTransaction(requestBody)\n }\n\n /**\n * Enables the signing of a transaction using the provided wallet info.\n * When a public key is provided it is used to resolve the private key and sign the transaction, enabling rekeyed account signing.\n * @returns An encoded, signed transaction.\n */\n async signTransaction(body: SignTransactionRequest): Promise<SignTransactionResponse> {\n const requestBody = {\n ...body,\n transaction: encodeTransactionRaw(body.transaction),\n } satisfies SignTxnRequest\n return this._signTransaction(requestBody)\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api-service.mjs","names":["httpRequest: BaseHttpRequest","headers: Record<string, string>","responseFormat: EncodingFormat"],"sources":["../../../../../packages/kmd_client/src/apis/api-service.ts"],"sourcesContent":["import type { BaseHttpRequest } from '../core/base-http-request'\nimport { encodeJson, decodeJson } from '../core/model-runtime'\nimport { type EncodingFormat } from '@algorandfoundation/algokit-common'\nimport { encodeTransactionRaw } from '@algorandfoundation/algokit-transact'\nimport type { SignMultisigRequest, SignTransactionRequest } from '../models/index'\nimport type {\n CreateWalletRequest,\n CreateWalletResponse,\n DeleteKeyRequest,\n DeleteMultisigRequest,\n ExportKeyRequest,\n ExportKeyResponse,\n ExportMasterKeyRequest,\n ExportMasterKeyResponse,\n ExportMultisigRequest,\n ExportMultisigResponse,\n GenerateKeyRequest,\n GenerateKeyResponse,\n ImportKeyRequest,\n ImportKeyResponse,\n ImportMultisigRequest,\n ImportMultisigResponse,\n InitWalletHandleTokenRequest,\n InitWalletHandleTokenResponse,\n ListKeysRequest,\n ListKeysResponse,\n ListMultisigRequest,\n ListMultisigResponse,\n ListWalletsResponse,\n ReleaseWalletHandleTokenRequest,\n RenameWalletRequest,\n RenameWalletResponse,\n RenewWalletHandleTokenRequest,\n RenewWalletHandleTokenResponse,\n SignMultisigResponse,\n SignMultisigTxnRequest,\n SignProgramMultisigRequest,\n SignProgramMultisigResponse,\n SignProgramRequest,\n SignProgramResponse,\n SignTransactionResponse,\n SignTxnRequest,\n VersionsResponse,\n WalletInfoRequest,\n WalletInfoResponse,\n} from '../models/index'\nimport {\n CreateWalletRequestMeta,\n CreateWalletResponseMeta,\n DeleteKeyRequestMeta,\n DeleteMultisigRequestMeta,\n ExportKeyRequestMeta,\n ExportKeyResponseMeta,\n ExportMasterKeyRequestMeta,\n ExportMasterKeyResponseMeta,\n ExportMultisigRequestMeta,\n ExportMultisigResponseMeta,\n GenerateKeyRequestMeta,\n GenerateKeyResponseMeta,\n ImportKeyRequestMeta,\n ImportKeyResponseMeta,\n ImportMultisigRequestMeta,\n ImportMultisigResponseMeta,\n InitWalletHandleTokenRequestMeta,\n InitWalletHandleTokenResponseMeta,\n ListKeysRequestMeta,\n ListKeysResponseMeta,\n ListMultisigRequestMeta,\n ListMultisigResponseMeta,\n ListWalletsResponseMeta,\n ReleaseWalletHandleTokenRequestMeta,\n RenameWalletRequestMeta,\n RenameWalletResponseMeta,\n RenewWalletHandleTokenRequestMeta,\n RenewWalletHandleTokenResponseMeta,\n SignMultisigResponseMeta,\n SignMultisigTxnRequestMeta,\n SignProgramMultisigRequestMeta,\n SignProgramMultisigResponseMeta,\n SignProgramRequestMeta,\n SignProgramResponseMeta,\n SignTransactionResponseMeta,\n SignTxnRequestMeta,\n VersionsResponseMeta,\n WalletInfoRequestMeta,\n WalletInfoResponseMeta,\n} from '../models/model-meta'\n\nexport class KmdApi {\n constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n private mimeTypeFor(format: EncodingFormat | 'text'): string {\n return format === 'json' ? 'application/json' : format === 'msgpack' ? 'application/msgpack' : 'text/plain'\n }\n\n /**\n * Create a new wallet (collection of keys) with the given parameters.\n */\n private async _createWallet(body: CreateWalletRequest): Promise<CreateWalletResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = CreateWalletRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/wallet',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, CreateWalletResponseMeta)\n }\n\n /**\n * Deletes the key with the passed public key from the wallet.\n */\n async deleteKey(body: DeleteKeyRequest): Promise<void> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = DeleteKeyRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n await this.httpRequest.request<void>({\n method: 'DELETE',\n url: '/v1/key',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n }\n\n /**\n * Deletes multisig preimage information for the passed address from the wallet.\n */\n async deleteMultisig(body: DeleteMultisigRequest): Promise<void> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = DeleteMultisigRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n await this.httpRequest.request<void>({\n method: 'DELETE',\n url: '/v1/multisig',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n }\n\n /**\n * Export the secret key associated with the passed public key.\n */\n async exportKey(body: ExportKeyRequest): Promise<ExportKeyResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = ExportKeyRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/key/export',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, ExportKeyResponseMeta)\n }\n\n /**\n * Export the master derivation key from the wallet. This key is a master \"backup\" key for the underlying wallet. With it, you can regenerate all of the wallets that have been generated with this wallet's `POST /v1/key` endpoint. This key will not allow you to recover keys imported from other wallets, however.\n */\n async exportMasterKey(body: ExportMasterKeyRequest): Promise<ExportMasterKeyResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = ExportMasterKeyRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/master-key/export',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, ExportMasterKeyResponseMeta)\n }\n\n /**\n * Given a multisig address whose preimage this wallet stores, returns the information used to generate the address, including public keys, threshold, and multisig version.\n */\n async exportMultisig(body: ExportMultisigRequest): Promise<ExportMultisigResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = ExportMultisigRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/multisig/export',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, ExportMultisigResponseMeta)\n }\n\n /**\n * Generates the next key in the deterministic key sequence (as determined by the master derivation key) and adds it to the wallet, returning the public key.\n */\n async generateKey(body: GenerateKeyRequest): Promise<GenerateKeyResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = GenerateKeyRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/key',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, GenerateKeyResponseMeta)\n }\n\n /**\n * Import an externally generated key into the wallet. Note that if you wish to back up the imported key, you must do so by backing up the entire wallet database, because imported keys were not derived from the wallet's master derivation key.\n */\n async importKey(body: ImportKeyRequest): Promise<ImportKeyResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = ImportKeyRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/key/import',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, ImportKeyResponseMeta)\n }\n\n /**\n * Generates a multisig account from the passed public keys array and multisig metadata, and stores all of this in the wallet.\n */\n async importMultisig(body: ImportMultisigRequest): Promise<ImportMultisigResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = ImportMultisigRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/multisig/import',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, ImportMultisigResponseMeta)\n }\n\n /**\n * Unlock the wallet and return a wallet handle token that can be used for subsequent operations. These tokens expire periodically and must be renewed. You can `POST` the token to `/v1/wallet/info` to see how much time remains until expiration, and renew it with `/v1/wallet/renew`. When you're done, you can invalidate the token with `/v1/wallet/release`.\n */\n async initWalletHandle(body: InitWalletHandleTokenRequest): Promise<InitWalletHandleTokenResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = InitWalletHandleTokenRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/wallet/init',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, InitWalletHandleTokenResponseMeta)\n }\n\n /**\n * Lists all of the public keys in this wallet. All of them have a stored private key.\n */\n async listKeysInWallet(body: ListKeysRequest): Promise<ListKeysResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = ListKeysRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/key/list',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, ListKeysResponseMeta)\n }\n\n /**\n * Lists all of the multisig accounts whose preimages this wallet stores\n */\n async listMultisig(body: ListMultisigRequest): Promise<ListMultisigResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = ListMultisigRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/multisig/list',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, ListMultisigResponseMeta)\n }\n\n /**\n * Lists all of the wallets that kmd is aware of.\n */\n async listWallets(): Promise<ListWalletsResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'GET',\n url: '/v1/wallets',\n path: {},\n query: {},\n headers,\n body: undefined,\n })\n\n return decodeJson(payload, ListWalletsResponseMeta)\n }\n\n /**\n * Invalidate the passed wallet handle token, making it invalid for use in subsequent requests.\n */\n async releaseWalletHandleToken(body: ReleaseWalletHandleTokenRequest): Promise<void> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = ReleaseWalletHandleTokenRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n await this.httpRequest.request<void>({\n method: 'POST',\n url: '/v1/wallet/release',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n }\n\n /**\n * Rename the underlying wallet to something else\n */\n async renameWallet(body: RenameWalletRequest): Promise<RenameWalletResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = RenameWalletRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/wallet/rename',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, RenameWalletResponseMeta)\n }\n\n /**\n * Renew a wallet handle token, increasing its expiration duration to its initial value\n */\n async renewWalletHandleToken(body: RenewWalletHandleTokenRequest): Promise<RenewWalletHandleTokenResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = RenewWalletHandleTokenRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/wallet/renew',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, RenewWalletHandleTokenResponseMeta)\n }\n\n /**\n * Start a multisig signature, or add a signature to a partially completed multisig signature object.\n */\n async signMultisigProgram(body: SignProgramMultisigRequest): Promise<SignProgramMultisigResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = SignProgramMultisigRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/multisig/signprogram',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, SignProgramMultisigResponseMeta)\n }\n\n /**\n * Start a multisig signature, or add a signature to a partially completed multisig signature object.\n */\n private async _signMultisigTransaction(body: SignMultisigTxnRequest): Promise<SignMultisigResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = SignMultisigTxnRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/multisig/sign',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, SignMultisigResponseMeta)\n }\n\n /**\n * Signs the passed program with a key from the wallet, determined by the account named in the request.\n */\n async signProgram(body: SignProgramRequest): Promise<SignProgramResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = SignProgramRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/program/sign',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, SignProgramResponseMeta)\n }\n\n /**\n * Signs the passed transaction with a key from the wallet, determined by the sender encoded in the transaction.\n */\n private async _signTransaction(body: SignTxnRequest): Promise<SignTransactionResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = SignTxnRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/transaction/sign',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, SignTransactionResponseMeta)\n }\n\n async version(): Promise<VersionsResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'GET',\n url: '/versions',\n path: {},\n query: {},\n headers,\n body: undefined,\n })\n\n return decodeJson(payload, VersionsResponseMeta)\n }\n\n /**\n * Returns information about the wallet associated with the passed wallet handle token. Additionally returns expiration information about the token itself.\n */\n async walletInfo(body: WalletInfoRequest): Promise<WalletInfoResponse> {\n const headers: Record<string, string> = {}\n const responseFormat: EncodingFormat = 'json'\n headers['Accept'] = this.mimeTypeFor(responseFormat)\n\n const bodyMeta = WalletInfoRequestMeta\n const mediaType = this.mimeTypeFor(!bodyMeta ? 'text' : responseFormat)\n if (mediaType) headers['Content-Type'] = mediaType\n const serializedBody = body ? encodeJson(body, bodyMeta) : undefined\n\n const payload = await this.httpRequest.request<Record<string, unknown>>({\n method: 'POST',\n url: '/v1/wallet/info',\n path: {},\n query: {},\n headers,\n body: serializedBody,\n })\n\n return decodeJson(payload, WalletInfoResponseMeta)\n }\n\n /**\n * Create a new wallet (collection of keys) with the given parameters.\n */\n async createWallet(body: CreateWalletRequest): Promise<CreateWalletResponse> {\n const requestBody = {\n ...body,\n walletDriverName: body.walletDriverName ?? 'sqlite',\n }\n return await this._createWallet(requestBody)\n }\n\n /**\n * Enables the signing of a transaction using the provided wallet and multisig info.\n * The public key is used to identify which multisig account key to use for signing.\n * When a signer is provided it is used to resolve the private key and sign the transaction, enabling rekeyed account signing.\n * @returns A multisig signature or partial signature, which can be used to form a signed transaction.\n */\n async signMultisigTransaction(body: SignMultisigRequest): Promise<SignMultisigResponse> {\n const requestBody = {\n ...body,\n transaction: encodeTransactionRaw(body.transaction),\n } satisfies SignMultisigTxnRequest\n return this._signMultisigTransaction(requestBody)\n }\n\n /**\n * Enables the signing of a transaction using the provided wallet info.\n * When a public key is provided it is used to resolve the private key and sign the transaction, enabling rekeyed account signing.\n * @returns An encoded, signed transaction.\n */\n async signTransaction(body: SignTransactionRequest): Promise<SignTransactionResponse> {\n const requestBody = {\n ...body,\n transaction: encodeTransactionRaw(body.transaction),\n } satisfies SignTxnRequest\n return this._signTransaction(requestBody)\n }\n}\n"],"mappings":"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"}
|
|
@@ -5,7 +5,9 @@ var ApiError = class extends Error {
|
|
|
5
5
|
status;
|
|
6
6
|
body;
|
|
7
7
|
constructor(url, status, body) {
|
|
8
|
-
|
|
8
|
+
let message = `Request to ${url} failed with status ${status}`;
|
|
9
|
+
if (body && typeof body === "object" && "message" in body && body.message) message += `: ${body.message}`;
|
|
10
|
+
super(message);
|
|
9
11
|
this.url = url;
|
|
10
12
|
this.status = status;
|
|
11
13
|
this.body = body;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-error.js","names":[],"sources":["../../../../../packages/kmd_client/src/core/api-error.ts"],"sourcesContent":["export class ApiError<T = unknown> extends Error {\n public readonly url: string\n public readonly status: number\n public readonly body: T | undefined\n\n constructor(url: string, status: number, body?: T) {\n
|
|
1
|
+
{"version":3,"file":"api-error.js","names":[],"sources":["../../../../../packages/kmd_client/src/core/api-error.ts"],"sourcesContent":["export class ApiError<T = unknown> extends Error {\n public readonly url: string\n public readonly status: number\n public readonly body: T | undefined\n\n constructor(url: string, status: number, body?: T) {\n let message = `Request to ${url} failed with status ${status}`\n if (body && typeof body === 'object' && 'message' in body && body.message) {\n message += `: ${body.message}`\n }\n\n super(message)\n this.url = url\n this.status = status\n this.body = body\n }\n}\n"],"mappings":";;AAAA,IAAa,WAAb,cAA2C,MAAM;CAC/C,AAAgB;CAChB,AAAgB;CAChB,AAAgB;CAEhB,YAAY,KAAa,QAAgB,MAAU;EACjD,IAAI,UAAU,cAAc,IAAI,sBAAsB;AACtD,MAAI,QAAQ,OAAO,SAAS,YAAY,aAAa,QAAQ,KAAK,QAChE,YAAW,KAAK,KAAK;AAGvB,QAAM,QAAQ;AACd,OAAK,MAAM;AACX,OAAK,SAAS;AACd,OAAK,OAAO"}
|
|
@@ -4,7 +4,9 @@ var ApiError = class extends Error {
|
|
|
4
4
|
status;
|
|
5
5
|
body;
|
|
6
6
|
constructor(url, status, body) {
|
|
7
|
-
|
|
7
|
+
let message = `Request to ${url} failed with status ${status}`;
|
|
8
|
+
if (body && typeof body === "object" && "message" in body && body.message) message += `: ${body.message}`;
|
|
9
|
+
super(message);
|
|
8
10
|
this.url = url;
|
|
9
11
|
this.status = status;
|
|
10
12
|
this.body = body;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-error.mjs","names":[],"sources":["../../../../../packages/kmd_client/src/core/api-error.ts"],"sourcesContent":["export class ApiError<T = unknown> extends Error {\n public readonly url: string\n public readonly status: number\n public readonly body: T | undefined\n\n constructor(url: string, status: number, body?: T) {\n
|
|
1
|
+
{"version":3,"file":"api-error.mjs","names":[],"sources":["../../../../../packages/kmd_client/src/core/api-error.ts"],"sourcesContent":["export class ApiError<T = unknown> extends Error {\n public readonly url: string\n public readonly status: number\n public readonly body: T | undefined\n\n constructor(url: string, status: number, body?: T) {\n let message = `Request to ${url} failed with status ${status}`\n if (body && typeof body === 'object' && 'message' in body && body.message) {\n message += `: ${body.message}`\n }\n\n super(message)\n this.url = url\n this.status = status\n this.body = body\n }\n}\n"],"mappings":";AAAA,IAAa,WAAb,cAA2C,MAAM;CAC/C,AAAgB;CAChB,AAAgB;CAChB,AAAgB;CAEhB,YAAY,KAAa,QAAgB,MAAU;EACjD,IAAI,UAAU,cAAc,IAAI,sBAAsB;AACtD,MAAI,QAAQ,OAAO,SAAS,YAAY,aAAa,QAAQ,KAAK,QAChE,YAAW,KAAK,KAAK;AAGvB,QAAM,QAAQ;AACd,OAAK,MAAM;AACX,OAAK,SAAS;AACd,OAAK,OAAO"}
|
|
@@ -1,25 +1,15 @@
|
|
|
1
1
|
const require_object_model = require('../../../common/src/codecs/models/object-model.js');
|
|
2
2
|
const require_json = require('../../../common/src/json.js');
|
|
3
|
-
const require_msgpack = require('../../../common/src/msgpack.js');
|
|
4
3
|
|
|
5
4
|
//#region packages/kmd_client/src/core/model-runtime.ts
|
|
6
|
-
function encodeJson(value, meta) {
|
|
7
|
-
return require_json.stringifyJson(new require_object_model.ObjectModelCodec(meta).encode(value, "json"));
|
|
8
|
-
}
|
|
9
|
-
function encodeMsgpack$1(value, meta) {
|
|
10
|
-
return require_msgpack.encodeMsgpack(new require_object_model.ObjectModelCodec(meta).encode(value, "msgpack"));
|
|
5
|
+
function encodeJson(value, meta, space) {
|
|
6
|
+
return require_json.stringifyJson(new require_object_model.ObjectModelCodec(meta).encode(value, "json"), void 0, space);
|
|
11
7
|
}
|
|
12
8
|
function decodeJson(value, meta) {
|
|
13
9
|
return new require_object_model.ObjectModelCodec(meta).decode(value, "json");
|
|
14
10
|
}
|
|
15
|
-
function decodeMsgpack$1(value, meta) {
|
|
16
|
-
const wire = require_msgpack.decodeMsgpack(value);
|
|
17
|
-
return new require_object_model.ObjectModelCodec(meta).decode(wire, "msgpack");
|
|
18
|
-
}
|
|
19
11
|
|
|
20
12
|
//#endregion
|
|
21
13
|
exports.decodeJson = decodeJson;
|
|
22
|
-
exports.decodeMsgpack = decodeMsgpack$1;
|
|
23
14
|
exports.encodeJson = encodeJson;
|
|
24
|
-
exports.encodeMsgpack = encodeMsgpack$1;
|
|
25
15
|
//# sourceMappingURL=model-runtime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-runtime.js","names":["stringifyJson","ObjectModelCodec"
|
|
1
|
+
{"version":3,"file":"model-runtime.js","names":["stringifyJson","ObjectModelCodec"],"sources":["../../../../../packages/kmd_client/src/core/model-runtime.ts"],"sourcesContent":["import {\n ObjectModelCodec,\n decodeMsgpack as rawDecodeMsgpack,\n encodeMsgpack as rawEncodeMsgpack,\n stringifyJson,\n type ObjectModelMetadata,\n} from '@algorandfoundation/algokit-common'\n\nexport function encodeJson<T extends Record<string, unknown>>(value: T, meta: ObjectModelMetadata<T>, space?: string | number): string {\n const wire = new ObjectModelCodec(meta).encode(value, 'json')\n return stringifyJson(wire, undefined, space)\n}\nexport function encodeMsgpack<T extends Record<string, unknown>>(value: T, meta: ObjectModelMetadata<T>): Uint8Array {\n const wire = new ObjectModelCodec(meta).encode(value, 'msgpack')\n return rawEncodeMsgpack(wire)\n}\nexport function decodeJson<T extends Record<string, unknown>>(value: Record<string, unknown>, meta: ObjectModelMetadata<T>): T {\n return new ObjectModelCodec<T>(meta).decode(value, 'json')\n}\nexport function decodeMsgpack<T extends Record<string, unknown>>(value: Uint8Array, meta: ObjectModelMetadata<T>): T {\n const wire = rawDecodeMsgpack(value)\n return new ObjectModelCodec<T>(meta).decode(wire, 'msgpack')\n}\n"],"mappings":";;;;AAQA,SAAgB,WAA8C,OAAU,MAA8B,OAAiC;AAErI,QAAOA,2BADM,IAAIC,sCAAiB,KAAK,CAAC,OAAO,OAAO,OAAO,EAClC,QAAW,MAAM;;AAM9C,SAAgB,WAA8C,OAAgC,MAAiC;AAC7H,QAAO,IAAIA,sCAAoB,KAAK,CAAC,OAAO,OAAO,OAAO"}
|
|
@@ -1,22 +1,14 @@
|
|
|
1
1
|
import { ObjectModelCodec } from "../../../common/src/codecs/models/object-model.mjs";
|
|
2
2
|
import { stringifyJson } from "../../../common/src/json.mjs";
|
|
3
|
-
import { decodeMsgpack, encodeMsgpack } from "../../../common/src/msgpack.mjs";
|
|
4
3
|
|
|
5
4
|
//#region packages/kmd_client/src/core/model-runtime.ts
|
|
6
|
-
function encodeJson(value, meta) {
|
|
7
|
-
return stringifyJson(new ObjectModelCodec(meta).encode(value, "json"));
|
|
8
|
-
}
|
|
9
|
-
function encodeMsgpack$1(value, meta) {
|
|
10
|
-
return encodeMsgpack(new ObjectModelCodec(meta).encode(value, "msgpack"));
|
|
5
|
+
function encodeJson(value, meta, space) {
|
|
6
|
+
return stringifyJson(new ObjectModelCodec(meta).encode(value, "json"), void 0, space);
|
|
11
7
|
}
|
|
12
8
|
function decodeJson(value, meta) {
|
|
13
9
|
return new ObjectModelCodec(meta).decode(value, "json");
|
|
14
10
|
}
|
|
15
|
-
function decodeMsgpack$1(value, meta) {
|
|
16
|
-
const wire = decodeMsgpack(value);
|
|
17
|
-
return new ObjectModelCodec(meta).decode(wire, "msgpack");
|
|
18
|
-
}
|
|
19
11
|
|
|
20
12
|
//#endregion
|
|
21
|
-
export { decodeJson,
|
|
13
|
+
export { decodeJson, encodeJson };
|
|
22
14
|
//# sourceMappingURL=model-runtime.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-runtime.mjs","names":[
|
|
1
|
+
{"version":3,"file":"model-runtime.mjs","names":[],"sources":["../../../../../packages/kmd_client/src/core/model-runtime.ts"],"sourcesContent":["import {\n ObjectModelCodec,\n decodeMsgpack as rawDecodeMsgpack,\n encodeMsgpack as rawEncodeMsgpack,\n stringifyJson,\n type ObjectModelMetadata,\n} from '@algorandfoundation/algokit-common'\n\nexport function encodeJson<T extends Record<string, unknown>>(value: T, meta: ObjectModelMetadata<T>, space?: string | number): string {\n const wire = new ObjectModelCodec(meta).encode(value, 'json')\n return stringifyJson(wire, undefined, space)\n}\nexport function encodeMsgpack<T extends Record<string, unknown>>(value: T, meta: ObjectModelMetadata<T>): Uint8Array {\n const wire = new ObjectModelCodec(meta).encode(value, 'msgpack')\n return rawEncodeMsgpack(wire)\n}\nexport function decodeJson<T extends Record<string, unknown>>(value: Record<string, unknown>, meta: ObjectModelMetadata<T>): T {\n return new ObjectModelCodec<T>(meta).decode(value, 'json')\n}\nexport function decodeMsgpack<T extends Record<string, unknown>>(value: Uint8Array, meta: ObjectModelMetadata<T>): T {\n const wire = rawDecodeMsgpack(value)\n return new ObjectModelCodec<T>(meta).decode(wire, 'msgpack')\n}\n"],"mappings":";;;;AAQA,SAAgB,WAA8C,OAAU,MAA8B,OAAiC;AAErI,QAAO,cADM,IAAI,iBAAiB,KAAK,CAAC,OAAO,OAAO,OAAO,EAClC,QAAW,MAAM;;AAM9C,SAAgB,WAA8C,OAAgC,MAAiC;AAC7H,QAAO,IAAI,iBAAoB,KAAK,CAAC,OAAO,OAAO,OAAO"}
|
|
@@ -3,9 +3,19 @@ const require_intDecoding = require('../types/intDecoding.js');
|
|
|
3
3
|
const require_utils = require('../utils/utils.js');
|
|
4
4
|
const require_binarydata = require('./binarydata.js');
|
|
5
5
|
let algorand_msgpack = require("algorand-msgpack");
|
|
6
|
-
algorand_msgpack = require_rolldown_runtime.__toESM(algorand_msgpack);
|
|
7
6
|
|
|
8
7
|
//#region packages/sdk/src/encoding/encoding.ts
|
|
8
|
+
/**
|
|
9
|
+
* This file is a wrapper of msgpack.js.
|
|
10
|
+
* The wrapper was written in order to ensure correct encoding of Algorand Transaction and other formats.
|
|
11
|
+
* In particular, it matches go-algorand blockchain client, written in go (https://www.github.com/algorand/go-algorand.
|
|
12
|
+
* Algorand's msgpack encoding follows to following rules -
|
|
13
|
+
* 1. Every integer must be encoded to the smallest type possible (0-255-\>8bit, 256-65535-\>16bit, etx)
|
|
14
|
+
* 2. All fields names must be sorted
|
|
15
|
+
* 3. All empty and 0 fields should be omitted
|
|
16
|
+
* 4. Every positive number must be encoded as uint
|
|
17
|
+
* 5. Binary blob should be used for binary data and string for strings
|
|
18
|
+
* */
|
|
9
19
|
const ERROR_CONTAINS_EMPTY_STRING = "The object contains empty or 0 values. First empty or 0 value encountered during encoding: ";
|
|
10
20
|
/**
|
|
11
21
|
* containsEmpty returns true if any of the object's values are empty, false otherwise.
|
|
@@ -280,7 +290,7 @@ function decodeJSON(encoded, c) {
|
|
|
280
290
|
* @returns A JSON string encoding of the object
|
|
281
291
|
*/
|
|
282
292
|
function encodeJSON(e, options) {
|
|
283
|
-
const { space
|
|
293
|
+
const { space, ...prepareJSONOptions } = options ?? {};
|
|
284
294
|
return require_utils.stringifyJSON(e.getEncodingSchema().prepareJSON(e.toEncodingData(), prepareJSONOptions), void 0, space);
|
|
285
295
|
}
|
|
286
296
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoding.js","names":["IntDecoding","IntMode","bytesToBase64","obj: { [key: string]: JSONEncodingData }","RawBinaryString","parentResolved: MsgpackEncodingData","coerceToBytes","potentialKeyBytes: Uint8Array | undefined","arrayEqual","decoded: JSONEncodingData","parseJSON","stringifyJSON"],"sources":["../../../../../packages/sdk/src/encoding/encoding.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * This file is a wrapper of msgpack.js.\n * The wrapper was written in order to ensure correct encoding of Algorand Transaction and other formats.\n * In particular, it matches go-algorand blockchain client, written in go (https://www.github.com/algorand/go-algorand.\n * Algorand's msgpack encoding follows to following rules -\n * 1. Every integer must be encoded to the smallest type possible (0-255-\\>8bit, 256-65535-\\>16bit, etx)\n * 2. All fields names must be sorted\n * 3. All empty and 0 fields should be omitted\n * 4. Every positive number must be encoded as uint\n * 5. Binary blob should be used for binary data and string for strings\n * */\n\nimport {\n DecoderOptions,\n EncoderOptions,\n IntMode,\n RawBinaryString,\n decode as msgpackDecode,\n encode as msgpackEncode,\n} from 'algorand-msgpack'\nimport IntDecoding from '../types/intDecoding.js'\nimport { arrayEqual, parseJSON, stringifyJSON } from '../utils/utils.js'\nimport { bytesToBase64, coerceToBytes } from './binarydata.js'\n\n// Errors\nexport const ERROR_CONTAINS_EMPTY_STRING = 'The object contains empty or 0 values. First empty or 0 value encountered during encoding: '\n\n/**\n * containsEmpty returns true if any of the object's values are empty, false otherwise.\n * Empty arrays considered empty\n * @param obj - The object to check\n * @returns \\{true, empty key\\} if contains empty, \\{false, undefined\\} otherwise\n */\nfunction containsEmpty(obj: Record<string | number | symbol, any>) {\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (!obj[key] || obj[key].length === 0) {\n return { containsEmpty: true, firstEmptyKey: key }\n }\n }\n }\n return { containsEmpty: false, firstEmptyKey: undefined }\n}\n\n/**\n * msgpackRawEncode encodes objects using msgpack, regardless of whether there are\n * empty or 0 value fields.\n * @param obj - a dictionary to be encoded. May or may not contain empty or 0 values.\n * @returns msgpack representation of the object\n */\nexport function msgpackRawEncode(obj: unknown) {\n // enable the canonical option\n const options: EncoderOptions = { sortKeys: true }\n return msgpackEncode(obj, options)\n}\n\n/**\n * encodeObj takes a javascript object and returns its msgpack encoding\n * Note that the encoding sorts the fields alphabetically\n * @param o - js object to be encoded. Must not contain empty or 0 values.\n * @returns Uint8Array binary representation\n * @throws Error containing ERROR_CONTAINS_EMPTY_STRING if the object contains empty or zero values\n *\n * @deprecated Use {@link msgpackRawEncode} instead. Note that function does not\n * check for empty values like this one does.\n */\nexport function encodeObj(obj: Record<string | number | symbol, any>) {\n // Check for empty values\n const emptyCheck = containsEmpty(obj)\n if (emptyCheck.containsEmpty) {\n throw new Error(ERROR_CONTAINS_EMPTY_STRING + emptyCheck.firstEmptyKey)\n }\n return msgpackRawEncode(obj)\n}\n\nfunction intDecodingToIntMode(intDecoding: IntDecoding): IntMode {\n switch (intDecoding) {\n case IntDecoding.UNSAFE:\n return IntMode.UNSAFE_NUMBER\n case IntDecoding.SAFE:\n return IntMode.SAFE_NUMBER\n case IntDecoding.MIXED:\n return IntMode.MIXED\n case IntDecoding.BIGINT:\n return IntMode.BIGINT\n default:\n throw new Error(`Invalid intDecoding: ${intDecoding}`)\n }\n}\n\n/**\n * Decodes msgpack bytes into a plain JavaScript object.\n * @param buffer - The msgpack bytes to decode\n * @param options - Options for decoding, including int decoding mode. See {@link IntDecoding} for more information.\n * @returns The decoded object\n */\nexport function msgpackRawDecode(buffer: ArrayLike<number>, options?: { intDecoding: IntDecoding }) {\n const decoderOptions: DecoderOptions = {\n intMode: options?.intDecoding ? intDecodingToIntMode(options?.intDecoding) : IntMode.BIGINT,\n }\n return msgpackDecode(buffer, decoderOptions)\n}\n\n/**\n * decodeObj takes a Uint8Array and returns its javascript obj\n * @param o - Uint8Array to decode\n * @returns object\n *\n * @deprecated Use {@link msgpackRawDecode} instead. Note that this function uses `IntDecoding.MIXED`\n * while `msgpackRawDecode` defaults to `IntDecoding.BIGINT` for int decoding, though it is\n * configurable.\n */\nexport function decodeObj(o: ArrayLike<number>) {\n return msgpackRawDecode(o, { intDecoding: IntDecoding.MIXED })\n}\n\n/**\n * Decodes msgpack bytes into a Map object. This supports decoding non-string map keys.\n * @param encoded - The msgpack bytes to decode\n * @param options - Options for decoding, including int decoding mode. See {@link IntDecoding} for more information.\n * @returns The decoded Map object\n */\nexport function msgpackRawDecodeAsMap(encoded: ArrayLike<number>, options?: { intDecoding: IntDecoding }) {\n const decoderOptions: DecoderOptions = {\n intMode: options?.intDecoding ? intDecodingToIntMode(options?.intDecoding) : IntMode.BIGINT,\n useMap: true,\n }\n return msgpackDecode(encoded, decoderOptions)\n}\n\nfunction msgpackRawDecodeAsMapWithRawStrings(encoded: ArrayLike<number>, options?: { intDecoding: IntDecoding }) {\n const decoderOptions: DecoderOptions = {\n intMode: options?.intDecoding ? intDecodingToIntMode(options?.intDecoding) : IntMode.BIGINT,\n useMap: true,\n rawBinaryStringKeys: true,\n rawBinaryStringValues: true,\n useRawBinaryStringClass: true,\n }\n return msgpackDecode(encoded, decoderOptions)\n}\n\nexport type MsgpackEncodingData =\n | null\n | undefined\n | string\n | number\n | bigint\n | boolean\n | Uint8Array\n | MsgpackEncodingData[]\n | Map<string | number | bigint | Uint8Array, MsgpackEncodingData>\n\nexport type JSONEncodingData =\n | null\n | undefined\n | string\n | number\n | bigint\n | boolean\n | JSONEncodingData[]\n | { [key: string]: JSONEncodingData }\n\nexport function msgpackEncodingDataToJSONEncodingData(e: MsgpackEncodingData): JSONEncodingData {\n if (e === null || e === undefined) {\n return e as JSONEncodingData\n }\n if (e instanceof Uint8Array) {\n return bytesToBase64(e)\n }\n if (Array.isArray(e)) {\n return e.map(msgpackEncodingDataToJSONEncodingData)\n }\n if (e instanceof Map) {\n const obj: { [key: string]: JSONEncodingData } = {}\n for (const [k, v] of e) {\n if (typeof k !== 'string') {\n throw new Error(`JSON map key must be a string: ${k}`)\n }\n obj[k] = msgpackEncodingDataToJSONEncodingData(v)\n }\n return obj\n }\n return e\n}\n\nexport function jsonEncodingDataToMsgpackEncodingData(e: JSONEncodingData): MsgpackEncodingData {\n if (e === null || e === undefined) {\n return e as MsgpackEncodingData\n }\n if (\n typeof e === 'string' || // Note, this will not convert base64 to Uint8Array\n typeof e === 'number' ||\n typeof e === 'bigint' ||\n typeof e === 'boolean'\n ) {\n return e\n }\n if (Array.isArray(e)) {\n return e.map(jsonEncodingDataToMsgpackEncodingData)\n }\n if (typeof e === 'object') {\n const obj = new Map<string, MsgpackEncodingData>()\n for (const [key, value] of Object.entries(e)) {\n obj.set(key, jsonEncodingDataToMsgpackEncodingData(value))\n }\n return obj\n }\n throw new Error(`Invalid JSON encoding data: ${e}`)\n}\n\nenum MsgpackObjectPathSegmentKind {\n MAP_VALUE,\n ARRAY_ELEMENT,\n}\n\ninterface MsgpackObjectPathSegment {\n kind: MsgpackObjectPathSegmentKind\n key: string | number | bigint | Uint8Array | RawBinaryString\n}\n\n/**\n * This class is used to index into an encoded msgpack object and extract raw strings.\n */\nexport class MsgpackRawStringProvider {\n private readonly parent?: MsgpackRawStringProvider\n\n private readonly baseObjectBytes?: ArrayLike<number>\n\n private readonly segment?: MsgpackObjectPathSegment\n\n private resolvedCache: MsgpackEncodingData = null\n private resolvedCachePresent = false\n\n public constructor({\n parent,\n segment,\n baseObjectBytes,\n }:\n | {\n parent: MsgpackRawStringProvider\n segment: MsgpackObjectPathSegment\n baseObjectBytes?: undefined\n }\n | {\n parent?: undefined\n segment?: undefined\n baseObjectBytes: ArrayLike<number>\n }) {\n this.parent = parent\n this.segment = segment\n this.baseObjectBytes = baseObjectBytes\n }\n\n /**\n * Create a new provider that resolves to the current provider's map value at the given key.\n */\n public withMapValue(key: string | number | bigint | Uint8Array | RawBinaryString): MsgpackRawStringProvider {\n return new MsgpackRawStringProvider({\n parent: this,\n segment: {\n kind: MsgpackObjectPathSegmentKind.MAP_VALUE,\n key,\n },\n })\n }\n\n /**\n * Create a new provider that resolves to the current provider's array element at the given index.\n */\n public withArrayElement(index: number): MsgpackRawStringProvider {\n return new MsgpackRawStringProvider({\n parent: this,\n segment: {\n kind: MsgpackObjectPathSegmentKind.ARRAY_ELEMENT,\n key: index,\n },\n })\n }\n\n /**\n * Get the raw string at the current location. If the current location is not a raw string, an error is thrown.\n */\n public getRawStringAtCurrentLocation(): Uint8Array {\n const resolved = this.resolve()\n if (resolved instanceof RawBinaryString) {\n // Decoded rawBinaryValue will always be a Uint8Array\n return resolved.rawBinaryValue as Uint8Array\n }\n throw new Error(`Invalid type. Expected RawBinaryString, got ${resolved} (${typeof resolved})`)\n }\n\n /**\n * Get the raw string map keys and values at the current location. If the current location is not a map, an error is thrown.\n */\n public getRawStringKeysAndValuesAtCurrentLocation(): Map<Uint8Array, MsgpackEncodingData> {\n const resolved = this.resolve()\n if (!(resolved instanceof Map)) {\n throw new Error(`Invalid type. Expected Map, got ${resolved} (${typeof resolved})`)\n }\n const keysAndValues = new Map<Uint8Array, MsgpackEncodingData>()\n for (const [key, value] of resolved) {\n if (key instanceof RawBinaryString) {\n // Decoded rawBinaryValue will always be a Uint8Array\n keysAndValues.set(key.rawBinaryValue as Uint8Array, value)\n } else {\n throw new Error(`Invalid type for map key. Expected RawBinaryString, got ${key} (${typeof key})`)\n }\n }\n return keysAndValues\n }\n\n /**\n * Resolve the provider by extracting the value it indicates from the base msgpack object.\n */\n private resolve(): MsgpackEncodingData {\n if (this.resolvedCachePresent) {\n return this.resolvedCache\n }\n let parentResolved: MsgpackEncodingData\n if (this.parent) {\n parentResolved = this.parent.resolve()\n } else {\n // Need to parse baseObjectBytes\n parentResolved = msgpackRawDecodeAsMapWithRawStrings(this.baseObjectBytes!) as MsgpackEncodingData\n }\n if (!this.segment) {\n this.resolvedCache = parentResolved\n this.resolvedCachePresent = true\n return parentResolved\n }\n if (this.segment.kind === MsgpackObjectPathSegmentKind.MAP_VALUE) {\n if (!(parentResolved instanceof Map)) {\n throw new Error(`Invalid type. Expected Map, got ${parentResolved} (${typeof parentResolved})`)\n }\n // All decoded map keys will be raw strings, and Map objects compare complex values by reference,\n // so we must check all the values for value-equality.\n if (typeof this.segment.key === 'string' || this.segment.key instanceof Uint8Array || this.segment.key instanceof RawBinaryString) {\n const targetBytes =\n this.segment.key instanceof RawBinaryString\n ? // Decoded rawBinaryValue will always be a Uint8Array\n (this.segment.key.rawBinaryValue as Uint8Array)\n : coerceToBytes(this.segment.key)\n const targetIsRawString = typeof this.segment.key === 'string' || this.segment.key instanceof RawBinaryString\n for (const [key, value] of parentResolved) {\n let potentialKeyBytes: Uint8Array | undefined\n if (targetIsRawString) {\n if (key instanceof RawBinaryString) {\n // Decoded rawBinaryValue will always be a Uint8Array\n potentialKeyBytes = key.rawBinaryValue as Uint8Array\n }\n } else if (key instanceof Uint8Array) {\n potentialKeyBytes = key\n }\n if (potentialKeyBytes && arrayEqual(targetBytes, potentialKeyBytes)) {\n this.resolvedCache = value\n break\n }\n }\n } else {\n this.resolvedCache = parentResolved.get(this.segment.key)\n }\n this.resolvedCachePresent = true\n return this.resolvedCache\n }\n if (this.segment.kind === MsgpackObjectPathSegmentKind.ARRAY_ELEMENT) {\n if (!Array.isArray(parentResolved)) {\n throw new Error(`Invalid type. Expected Array, got ${parentResolved} (${typeof parentResolved})`)\n }\n this.resolvedCache = parentResolved[this.segment.key as number]\n this.resolvedCachePresent = true\n return this.resolvedCache\n }\n throw new Error(`Invalid segment kind: ${this.segment.kind}`)\n }\n\n /**\n * Get the path string of the current location indicated by the provider. Useful for debugging.\n */\n public getPathString(): string {\n const parentPathString = this.parent ? this.parent.getPathString() : 'root'\n if (!this.segment) {\n return parentPathString\n }\n if (this.segment.kind === MsgpackObjectPathSegmentKind.MAP_VALUE) {\n return `${parentPathString} -> map key \"${this.segment.key}\" (${typeof this.segment.key})`\n }\n if (this.segment.kind === MsgpackObjectPathSegmentKind.ARRAY_ELEMENT) {\n return `${parentPathString} -> array index ${this.segment.key} (${typeof this.segment.key})`\n }\n return `${parentPathString} -> unknown segment kind ${this.segment.kind}`\n }\n}\n\n/**\n * Options for {@link Schema.prepareJSON}\n */\nexport interface PrepareJSONOptions {\n /**\n * If true, allows invalid UTF-8 binary strings to be converted to JSON strings.\n *\n * Otherwise, an error will be thrown if encoding a binary string to a JSON cannot be done losslessly.\n */\n lossyBinaryStringConversion?: boolean\n}\n\n/**\n * A Schema is used to prepare objects for encoding and decoding from msgpack and JSON.\n *\n * Schemas represent a specific type.\n */\nexport abstract class Schema {\n /**\n * Get the default value for this type.\n */\n public abstract defaultValue(): unknown\n\n /**\n * Checks if the value is the default value for this type.\n * @param data - The value to check\n * @returns True if the value is the default value, false otherwise\n */\n public abstract isDefaultValue(data: unknown): boolean\n\n /**\n * Prepares the encoding data for encoding to msgpack.\n * @param data - Encoding data to be prepared.\n * @returns A value ready to be msgpack encoded.\n */\n public abstract prepareMsgpack(data: unknown): MsgpackEncodingData\n\n /**\n * Restores the encoding data from a msgpack encoding object.\n * @param encoded - The msgpack encoding object to restore.\n * @param rawStringProvider - A provider for raw strings.\n * @returns The original encoding data.\n */\n public abstract fromPreparedMsgpack(encoded: MsgpackEncodingData, rawStringProvider: MsgpackRawStringProvider): unknown\n\n /**\n * Prepares the encoding data for encoding to JSON.\n * @param data - The JSON encoding data to be prepared.\n * @returns A value ready to be JSON encoded.\n */\n public abstract prepareJSON(data: unknown, options: PrepareJSONOptions): JSONEncodingData\n\n /**\n * Restores the encoding data from a JSON encoding object.\n * @param encoded - The JSON encoding object to restore.\n * @returns The original encoding data.\n */\n public abstract fromPreparedJSON(encoded: JSONEncodingData): unknown\n}\n\n/**\n * An interface for objects that can be encoded and decoded to/from msgpack and JSON.\n */\nexport interface Encodable {\n /**\n * Extract the encoding data for this object. This data, after being prepared by the encoding\n * Schema, can be encoded to msgpack or JSON.\n */\n toEncodingData(): unknown\n /**\n * Get the encoding Schema for this object, used to prepare the encoding data for msgpack and JSON.\n */\n getEncodingSchema(): Schema\n}\n\n/**\n * A type that represents the class of an Encodable object.\n */\nexport interface EncodableClass<T extends Encodable> {\n /**\n * Create a new instance of this class from the given encoding data.\n * @param data - The encoding data to create the object from\n */\n fromEncodingData(data: unknown): T\n /**\n * The encoding Schema for this class, used to prepare encoding data from msgpack and JSON.\n */\n readonly encodingSchema: Schema\n}\n\n/**\n * Decode a msgpack byte array to an Encodable object.\n * @param encoded - The msgpack bytes to decode\n * @param c - The class of the object to decode. This class must match the object that was encoded.\n * @returns An instance of the class with the decoded data\n */\nexport function decodeMsgpack<T extends Encodable>(encoded: ArrayLike<number>, c: EncodableClass<T>): T {\n const decoded = msgpackRawDecodeAsMap(encoded) as MsgpackEncodingData\n const rawStringProvider = new MsgpackRawStringProvider({\n baseObjectBytes: encoded,\n })\n return c.fromEncodingData(c.encodingSchema.fromPreparedMsgpack(decoded, rawStringProvider))\n}\n\n/**\n * Encode an Encodable object to a msgpack byte array.\n * @param e - The object to encode\n * @returns A msgpack byte array encoding of the object\n */\nexport function encodeMsgpack(e: Encodable): Uint8Array {\n return msgpackRawEncode(e.getEncodingSchema().prepareMsgpack(e.toEncodingData()))\n}\n\n/**\n * Decode a JSON string to an Encodable object.\n * @param encoded - The JSON string to decode\n * @param c - The class of the object to decode. This class must match the object that was encoded.\n * @returns An instance of the class with the decoded data\n */\nexport function decodeJSON<T extends Encodable>(encoded: string, c: EncodableClass<T>): T {\n const decoded: JSONEncodingData = parseJSON(encoded, {\n intDecoding: IntDecoding.BIGINT,\n })\n return c.fromEncodingData(c.encodingSchema.fromPreparedJSON(decoded) as JSONEncodingData)\n}\n\nexport interface EncodeJSONOptions {\n /**\n * Adds indentation, white space, and line break characters to the return-value JSON text to make\n * it easier to read.\n */\n space?: string | number\n\n /**\n * If true, allows invalid UTF-8 binary strings to be converted to JSON strings.\n *\n * Otherwise, an error will be thrown if encoding a binary string to a JSON cannot be done losslessly.\n */\n lossyBinaryStringConversion?: boolean\n}\n\n/**\n * Encode an Encodable object to a JSON string.\n * @param e - The object to encode\n * @param options - Optional encoding options. See {@link EncodeJSONOptions} for more information.\n * @returns A JSON string encoding of the object\n */\nexport function encodeJSON(e: Encodable, options?: EncodeJSONOptions): string {\n const { space, ...prepareJSONOptions } = options ?? {}\n const prepared = e.getEncodingSchema().prepareJSON(e.toEncodingData(), prepareJSONOptions)\n return stringifyJSON(prepared, undefined, space)\n}\n"],"mappings":";;;;;;;;AA0BA,MAAa,8BAA8B;;;;;;;AAQ3C,SAAS,cAAc,KAA4C;AACjE,MAAK,MAAM,OAAO,IAChB,KAAI,OAAO,UAAU,eAAe,KAAK,KAAK,IAAI,EAChD;MAAI,CAAC,IAAI,QAAQ,IAAI,KAAK,WAAW,EACnC,QAAO;GAAE,eAAe;GAAM,eAAe;GAAK;;AAIxD,QAAO;EAAE,eAAe;EAAO,eAAe;EAAW;;;;;;;;AAS3D,SAAgB,iBAAiB,KAAc;AAG7C,qCAAqB,KADW,EAAE,UAAU,MAAM,CAChB;;;;;;;;;;;;AAapC,SAAgB,UAAU,KAA4C;CAEpE,MAAM,aAAa,cAAc,IAAI;AACrC,KAAI,WAAW,cACb,OAAM,IAAI,MAAM,8BAA8B,WAAW,cAAc;AAEzE,QAAO,iBAAiB,IAAI;;AAG9B,SAAS,qBAAqB,aAAmC;AAC/D,SAAQ,aAAR;EACE,KAAKA,4BAAY,OACf,QAAOC,yBAAQ;EACjB,KAAKD,4BAAY,KACf,QAAOC,yBAAQ;EACjB,KAAKD,4BAAY,MACf,QAAOC,yBAAQ;EACjB,KAAKD,4BAAY,OACf,QAAOC,yBAAQ;EACjB,QACE,OAAM,IAAI,MAAM,wBAAwB,cAAc;;;;;;;;;AAU5D,SAAgB,iBAAiB,QAA2B,SAAwC;AAIlG,qCAAqB,QAHkB,EACrC,SAAS,SAAS,cAAc,qBAAqB,SAAS,YAAY,GAAGA,yBAAQ,QACtF,CAC2C;;;;;;;;;;;AAY9C,SAAgB,UAAU,GAAsB;AAC9C,QAAO,iBAAiB,GAAG,EAAE,aAAaD,4BAAY,OAAO,CAAC;;;;;;;;AAShE,SAAgB,sBAAsB,SAA4B,SAAwC;AAKxG,qCAAqB,SAJkB;EACrC,SAAS,SAAS,cAAc,qBAAqB,SAAS,YAAY,GAAGC,yBAAQ;EACrF,QAAQ;EACT,CAC4C;;AAG/C,SAAS,oCAAoC,SAA4B,SAAwC;AAQ/G,qCAAqB,SAPkB;EACrC,SAAS,SAAS,cAAc,qBAAqB,SAAS,YAAY,GAAGA,yBAAQ;EACrF,QAAQ;EACR,qBAAqB;EACrB,uBAAuB;EACvB,yBAAyB;EAC1B,CAC4C;;AAwB/C,SAAgB,sCAAsC,GAA0C;AAC9F,KAAI,MAAM,QAAQ,MAAM,OACtB,QAAO;AAET,KAAI,aAAa,WACf,QAAOC,iCAAc,EAAE;AAEzB,KAAI,MAAM,QAAQ,EAAE,CAClB,QAAO,EAAE,IAAI,sCAAsC;AAErD,KAAI,aAAa,KAAK;EACpB,MAAMC,MAA2C,EAAE;AACnD,OAAK,MAAM,CAAC,GAAG,MAAM,GAAG;AACtB,OAAI,OAAO,MAAM,SACf,OAAM,IAAI,MAAM,kCAAkC,IAAI;AAExD,OAAI,KAAK,sCAAsC,EAAE;;AAEnD,SAAO;;AAET,QAAO;;AAGT,SAAgB,sCAAsC,GAA0C;AAC9F,KAAI,MAAM,QAAQ,MAAM,OACtB,QAAO;AAET,KACE,OAAO,MAAM,YACb,OAAO,MAAM,YACb,OAAO,MAAM,YACb,OAAO,MAAM,UAEb,QAAO;AAET,KAAI,MAAM,QAAQ,EAAE,CAClB,QAAO,EAAE,IAAI,sCAAsC;AAErD,KAAI,OAAO,MAAM,UAAU;EACzB,MAAM,sBAAM,IAAI,KAAkC;AAClD,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,EAAE,CAC1C,KAAI,IAAI,KAAK,sCAAsC,MAAM,CAAC;AAE5D,SAAO;;AAET,OAAM,IAAI,MAAM,+BAA+B,IAAI;;AAGrD,IAAK,wFAAL;AACE;AACA;;EAFG;;;;AAaL,IAAa,2BAAb,MAAa,yBAAyB;CACpC,AAAiB;CAEjB,AAAiB;CAEjB,AAAiB;CAEjB,AAAQ,gBAAqC;CAC7C,AAAQ,uBAAuB;CAE/B,AAAO,YAAY,EACjB,QACA,SACA,mBAWK;AACL,OAAK,SAAS;AACd,OAAK,UAAU;AACf,OAAK,kBAAkB;;;;;CAMzB,AAAO,aAAa,KAAwF;AAC1G,SAAO,IAAI,yBAAyB;GAClC,QAAQ;GACR,SAAS;IACP,MAAM,6BAA6B;IACnC;IACD;GACF,CAAC;;;;;CAMJ,AAAO,iBAAiB,OAAyC;AAC/D,SAAO,IAAI,yBAAyB;GAClC,QAAQ;GACR,SAAS;IACP,MAAM,6BAA6B;IACnC,KAAK;IACN;GACF,CAAC;;;;;CAMJ,AAAO,gCAA4C;EACjD,MAAM,WAAW,KAAK,SAAS;AAC/B,MAAI,oBAAoBC,iCAEtB,QAAO,SAAS;AAElB,QAAM,IAAI,MAAM,+CAA+C,SAAS,IAAI,OAAO,SAAS,GAAG;;;;;CAMjG,AAAO,6CAAmF;EACxF,MAAM,WAAW,KAAK,SAAS;AAC/B,MAAI,EAAE,oBAAoB,KACxB,OAAM,IAAI,MAAM,mCAAmC,SAAS,IAAI,OAAO,SAAS,GAAG;EAErF,MAAM,gCAAgB,IAAI,KAAsC;AAChE,OAAK,MAAM,CAAC,KAAK,UAAU,SACzB,KAAI,eAAeA,iCAEjB,eAAc,IAAI,IAAI,gBAA8B,MAAM;MAE1D,OAAM,IAAI,MAAM,2DAA2D,IAAI,IAAI,OAAO,IAAI,GAAG;AAGrG,SAAO;;;;;CAMT,AAAQ,UAA+B;AACrC,MAAI,KAAK,qBACP,QAAO,KAAK;EAEd,IAAIC;AACJ,MAAI,KAAK,OACP,kBAAiB,KAAK,OAAO,SAAS;MAGtC,kBAAiB,oCAAoC,KAAK,gBAAiB;AAE7E,MAAI,CAAC,KAAK,SAAS;AACjB,QAAK,gBAAgB;AACrB,QAAK,uBAAuB;AAC5B,UAAO;;AAET,MAAI,KAAK,QAAQ,SAAS,6BAA6B,WAAW;AAChE,OAAI,EAAE,0BAA0B,KAC9B,OAAM,IAAI,MAAM,mCAAmC,eAAe,IAAI,OAAO,eAAe,GAAG;AAIjG,OAAI,OAAO,KAAK,QAAQ,QAAQ,YAAY,KAAK,QAAQ,eAAe,cAAc,KAAK,QAAQ,eAAeD,kCAAiB;IACjI,MAAM,cACJ,KAAK,QAAQ,eAAeA,mCAEvB,KAAK,QAAQ,IAAI,iBAClBE,iCAAc,KAAK,QAAQ,IAAI;IACrC,MAAM,oBAAoB,OAAO,KAAK,QAAQ,QAAQ,YAAY,KAAK,QAAQ,eAAeF;AAC9F,SAAK,MAAM,CAAC,KAAK,UAAU,gBAAgB;KACzC,IAAIG;AACJ,SAAI,mBACF;UAAI,eAAeH,iCAEjB,qBAAoB,IAAI;gBAEjB,eAAe,WACxB,qBAAoB;AAEtB,SAAI,qBAAqBI,yBAAW,aAAa,kBAAkB,EAAE;AACnE,WAAK,gBAAgB;AACrB;;;SAIJ,MAAK,gBAAgB,eAAe,IAAI,KAAK,QAAQ,IAAI;AAE3D,QAAK,uBAAuB;AAC5B,UAAO,KAAK;;AAEd,MAAI,KAAK,QAAQ,SAAS,6BAA6B,eAAe;AACpE,OAAI,CAAC,MAAM,QAAQ,eAAe,CAChC,OAAM,IAAI,MAAM,qCAAqC,eAAe,IAAI,OAAO,eAAe,GAAG;AAEnG,QAAK,gBAAgB,eAAe,KAAK,QAAQ;AACjD,QAAK,uBAAuB;AAC5B,UAAO,KAAK;;AAEd,QAAM,IAAI,MAAM,yBAAyB,KAAK,QAAQ,OAAO;;;;;CAM/D,AAAO,gBAAwB;EAC7B,MAAM,mBAAmB,KAAK,SAAS,KAAK,OAAO,eAAe,GAAG;AACrE,MAAI,CAAC,KAAK,QACR,QAAO;AAET,MAAI,KAAK,QAAQ,SAAS,6BAA6B,UACrD,QAAO,GAAG,iBAAiB,eAAe,KAAK,QAAQ,IAAI,KAAK,OAAO,KAAK,QAAQ,IAAI;AAE1F,MAAI,KAAK,QAAQ,SAAS,6BAA6B,cACrD,QAAO,GAAG,iBAAiB,kBAAkB,KAAK,QAAQ,IAAI,IAAI,OAAO,KAAK,QAAQ,IAAI;AAE5F,SAAO,GAAG,iBAAiB,2BAA2B,KAAK,QAAQ;;;;;;;;AAqBvE,IAAsB,SAAtB,MAA6B;;;;;;;AA+E7B,SAAgB,cAAmC,SAA4B,GAAyB;CACtG,MAAM,UAAU,sBAAsB,QAAQ;CAC9C,MAAM,oBAAoB,IAAI,yBAAyB,EACrD,iBAAiB,SAClB,CAAC;AACF,QAAO,EAAE,iBAAiB,EAAE,eAAe,oBAAoB,SAAS,kBAAkB,CAAC;;;;;;;AAQ7F,SAAgB,cAAc,GAA0B;AACtD,QAAO,iBAAiB,EAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;;;;;;;;AASnF,SAAgB,WAAgC,SAAiB,GAAyB;CACxF,MAAMC,UAA4BC,wBAAU,SAAS,EACnD,aAAaV,4BAAY,QAC1B,CAAC;AACF,QAAO,EAAE,iBAAiB,EAAE,eAAe,iBAAiB,QAAQ,CAAqB;;;;;;;;AAwB3F,SAAgB,WAAW,GAAc,SAAqC;CAC5E,MAAM,EAAE,MAAO,GAAG,uBAAuB,WAAW,EAAE;AAEtD,QAAOW,4BADU,EAAE,mBAAmB,CAAC,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAC3D,QAAW,MAAM"}
|
|
1
|
+
{"version":3,"file":"encoding.js","names":["IntDecoding","IntMode","bytesToBase64","obj: { [key: string]: JSONEncodingData }","RawBinaryString","parentResolved: MsgpackEncodingData","coerceToBytes","potentialKeyBytes: Uint8Array | undefined","arrayEqual","decoded: JSONEncodingData","parseJSON","stringifyJSON"],"sources":["../../../../../packages/sdk/src/encoding/encoding.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * This file is a wrapper of msgpack.js.\n * The wrapper was written in order to ensure correct encoding of Algorand Transaction and other formats.\n * In particular, it matches go-algorand blockchain client, written in go (https://www.github.com/algorand/go-algorand.\n * Algorand's msgpack encoding follows to following rules -\n * 1. Every integer must be encoded to the smallest type possible (0-255-\\>8bit, 256-65535-\\>16bit, etx)\n * 2. All fields names must be sorted\n * 3. All empty and 0 fields should be omitted\n * 4. Every positive number must be encoded as uint\n * 5. Binary blob should be used for binary data and string for strings\n * */\n\nimport {\n DecoderOptions,\n EncoderOptions,\n IntMode,\n RawBinaryString,\n decode as msgpackDecode,\n encode as msgpackEncode,\n} from 'algorand-msgpack'\nimport IntDecoding from '../types/intDecoding.js'\nimport { arrayEqual, parseJSON, stringifyJSON } from '../utils/utils.js'\nimport { bytesToBase64, coerceToBytes } from './binarydata.js'\n\n// Errors\nexport const ERROR_CONTAINS_EMPTY_STRING = 'The object contains empty or 0 values. First empty or 0 value encountered during encoding: '\n\n/**\n * containsEmpty returns true if any of the object's values are empty, false otherwise.\n * Empty arrays considered empty\n * @param obj - The object to check\n * @returns \\{true, empty key\\} if contains empty, \\{false, undefined\\} otherwise\n */\nfunction containsEmpty(obj: Record<string | number | symbol, any>) {\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (!obj[key] || obj[key].length === 0) {\n return { containsEmpty: true, firstEmptyKey: key }\n }\n }\n }\n return { containsEmpty: false, firstEmptyKey: undefined }\n}\n\n/**\n * msgpackRawEncode encodes objects using msgpack, regardless of whether there are\n * empty or 0 value fields.\n * @param obj - a dictionary to be encoded. May or may not contain empty or 0 values.\n * @returns msgpack representation of the object\n */\nexport function msgpackRawEncode(obj: unknown) {\n // enable the canonical option\n const options: EncoderOptions = { sortKeys: true }\n return msgpackEncode(obj, options)\n}\n\n/**\n * encodeObj takes a javascript object and returns its msgpack encoding\n * Note that the encoding sorts the fields alphabetically\n * @param o - js object to be encoded. Must not contain empty or 0 values.\n * @returns Uint8Array binary representation\n * @throws Error containing ERROR_CONTAINS_EMPTY_STRING if the object contains empty or zero values\n *\n * @deprecated Use {@link msgpackRawEncode} instead. Note that function does not\n * check for empty values like this one does.\n */\nexport function encodeObj(obj: Record<string | number | symbol, any>) {\n // Check for empty values\n const emptyCheck = containsEmpty(obj)\n if (emptyCheck.containsEmpty) {\n throw new Error(ERROR_CONTAINS_EMPTY_STRING + emptyCheck.firstEmptyKey)\n }\n return msgpackRawEncode(obj)\n}\n\nfunction intDecodingToIntMode(intDecoding: IntDecoding): IntMode {\n switch (intDecoding) {\n case IntDecoding.UNSAFE:\n return IntMode.UNSAFE_NUMBER\n case IntDecoding.SAFE:\n return IntMode.SAFE_NUMBER\n case IntDecoding.MIXED:\n return IntMode.MIXED\n case IntDecoding.BIGINT:\n return IntMode.BIGINT\n default:\n throw new Error(`Invalid intDecoding: ${intDecoding}`)\n }\n}\n\n/**\n * Decodes msgpack bytes into a plain JavaScript object.\n * @param buffer - The msgpack bytes to decode\n * @param options - Options for decoding, including int decoding mode. See {@link IntDecoding} for more information.\n * @returns The decoded object\n */\nexport function msgpackRawDecode(buffer: ArrayLike<number>, options?: { intDecoding: IntDecoding }) {\n const decoderOptions: DecoderOptions = {\n intMode: options?.intDecoding ? intDecodingToIntMode(options?.intDecoding) : IntMode.BIGINT,\n }\n return msgpackDecode(buffer, decoderOptions)\n}\n\n/**\n * decodeObj takes a Uint8Array and returns its javascript obj\n * @param o - Uint8Array to decode\n * @returns object\n *\n * @deprecated Use {@link msgpackRawDecode} instead. Note that this function uses `IntDecoding.MIXED`\n * while `msgpackRawDecode` defaults to `IntDecoding.BIGINT` for int decoding, though it is\n * configurable.\n */\nexport function decodeObj(o: ArrayLike<number>) {\n return msgpackRawDecode(o, { intDecoding: IntDecoding.MIXED })\n}\n\n/**\n * Decodes msgpack bytes into a Map object. This supports decoding non-string map keys.\n * @param encoded - The msgpack bytes to decode\n * @param options - Options for decoding, including int decoding mode. See {@link IntDecoding} for more information.\n * @returns The decoded Map object\n */\nexport function msgpackRawDecodeAsMap(encoded: ArrayLike<number>, options?: { intDecoding: IntDecoding }) {\n const decoderOptions: DecoderOptions = {\n intMode: options?.intDecoding ? intDecodingToIntMode(options?.intDecoding) : IntMode.BIGINT,\n useMap: true,\n }\n return msgpackDecode(encoded, decoderOptions)\n}\n\nfunction msgpackRawDecodeAsMapWithRawStrings(encoded: ArrayLike<number>, options?: { intDecoding: IntDecoding }) {\n const decoderOptions: DecoderOptions = {\n intMode: options?.intDecoding ? intDecodingToIntMode(options?.intDecoding) : IntMode.BIGINT,\n useMap: true,\n rawBinaryStringKeys: true,\n rawBinaryStringValues: true,\n useRawBinaryStringClass: true,\n }\n return msgpackDecode(encoded, decoderOptions)\n}\n\nexport type MsgpackEncodingData =\n | null\n | undefined\n | string\n | number\n | bigint\n | boolean\n | Uint8Array\n | MsgpackEncodingData[]\n | Map<string | number | bigint | Uint8Array, MsgpackEncodingData>\n\nexport type JSONEncodingData =\n | null\n | undefined\n | string\n | number\n | bigint\n | boolean\n | JSONEncodingData[]\n | { [key: string]: JSONEncodingData }\n\nexport function msgpackEncodingDataToJSONEncodingData(e: MsgpackEncodingData): JSONEncodingData {\n if (e === null || e === undefined) {\n return e as JSONEncodingData\n }\n if (e instanceof Uint8Array) {\n return bytesToBase64(e)\n }\n if (Array.isArray(e)) {\n return e.map(msgpackEncodingDataToJSONEncodingData)\n }\n if (e instanceof Map) {\n const obj: { [key: string]: JSONEncodingData } = {}\n for (const [k, v] of e) {\n if (typeof k !== 'string') {\n throw new Error(`JSON map key must be a string: ${k}`)\n }\n obj[k] = msgpackEncodingDataToJSONEncodingData(v)\n }\n return obj\n }\n return e\n}\n\nexport function jsonEncodingDataToMsgpackEncodingData(e: JSONEncodingData): MsgpackEncodingData {\n if (e === null || e === undefined) {\n return e as MsgpackEncodingData\n }\n if (\n typeof e === 'string' || // Note, this will not convert base64 to Uint8Array\n typeof e === 'number' ||\n typeof e === 'bigint' ||\n typeof e === 'boolean'\n ) {\n return e\n }\n if (Array.isArray(e)) {\n return e.map(jsonEncodingDataToMsgpackEncodingData)\n }\n if (typeof e === 'object') {\n const obj = new Map<string, MsgpackEncodingData>()\n for (const [key, value] of Object.entries(e)) {\n obj.set(key, jsonEncodingDataToMsgpackEncodingData(value))\n }\n return obj\n }\n throw new Error(`Invalid JSON encoding data: ${e}`)\n}\n\nenum MsgpackObjectPathSegmentKind {\n MAP_VALUE,\n ARRAY_ELEMENT,\n}\n\ninterface MsgpackObjectPathSegment {\n kind: MsgpackObjectPathSegmentKind\n key: string | number | bigint | Uint8Array | RawBinaryString\n}\n\n/**\n * This class is used to index into an encoded msgpack object and extract raw strings.\n */\nexport class MsgpackRawStringProvider {\n private readonly parent?: MsgpackRawStringProvider\n\n private readonly baseObjectBytes?: ArrayLike<number>\n\n private readonly segment?: MsgpackObjectPathSegment\n\n private resolvedCache: MsgpackEncodingData = null\n private resolvedCachePresent = false\n\n public constructor({\n parent,\n segment,\n baseObjectBytes,\n }:\n | {\n parent: MsgpackRawStringProvider\n segment: MsgpackObjectPathSegment\n baseObjectBytes?: undefined\n }\n | {\n parent?: undefined\n segment?: undefined\n baseObjectBytes: ArrayLike<number>\n }) {\n this.parent = parent\n this.segment = segment\n this.baseObjectBytes = baseObjectBytes\n }\n\n /**\n * Create a new provider that resolves to the current provider's map value at the given key.\n */\n public withMapValue(key: string | number | bigint | Uint8Array | RawBinaryString): MsgpackRawStringProvider {\n return new MsgpackRawStringProvider({\n parent: this,\n segment: {\n kind: MsgpackObjectPathSegmentKind.MAP_VALUE,\n key,\n },\n })\n }\n\n /**\n * Create a new provider that resolves to the current provider's array element at the given index.\n */\n public withArrayElement(index: number): MsgpackRawStringProvider {\n return new MsgpackRawStringProvider({\n parent: this,\n segment: {\n kind: MsgpackObjectPathSegmentKind.ARRAY_ELEMENT,\n key: index,\n },\n })\n }\n\n /**\n * Get the raw string at the current location. If the current location is not a raw string, an error is thrown.\n */\n public getRawStringAtCurrentLocation(): Uint8Array {\n const resolved = this.resolve()\n if (resolved instanceof RawBinaryString) {\n // Decoded rawBinaryValue will always be a Uint8Array\n return resolved.rawBinaryValue as Uint8Array\n }\n throw new Error(`Invalid type. Expected RawBinaryString, got ${resolved} (${typeof resolved})`)\n }\n\n /**\n * Get the raw string map keys and values at the current location. If the current location is not a map, an error is thrown.\n */\n public getRawStringKeysAndValuesAtCurrentLocation(): Map<Uint8Array, MsgpackEncodingData> {\n const resolved = this.resolve()\n if (!(resolved instanceof Map)) {\n throw new Error(`Invalid type. Expected Map, got ${resolved} (${typeof resolved})`)\n }\n const keysAndValues = new Map<Uint8Array, MsgpackEncodingData>()\n for (const [key, value] of resolved) {\n if (key instanceof RawBinaryString) {\n // Decoded rawBinaryValue will always be a Uint8Array\n keysAndValues.set(key.rawBinaryValue as Uint8Array, value)\n } else {\n throw new Error(`Invalid type for map key. Expected RawBinaryString, got ${key} (${typeof key})`)\n }\n }\n return keysAndValues\n }\n\n /**\n * Resolve the provider by extracting the value it indicates from the base msgpack object.\n */\n private resolve(): MsgpackEncodingData {\n if (this.resolvedCachePresent) {\n return this.resolvedCache\n }\n let parentResolved: MsgpackEncodingData\n if (this.parent) {\n parentResolved = this.parent.resolve()\n } else {\n // Need to parse baseObjectBytes\n parentResolved = msgpackRawDecodeAsMapWithRawStrings(this.baseObjectBytes!) as MsgpackEncodingData\n }\n if (!this.segment) {\n this.resolvedCache = parentResolved\n this.resolvedCachePresent = true\n return parentResolved\n }\n if (this.segment.kind === MsgpackObjectPathSegmentKind.MAP_VALUE) {\n if (!(parentResolved instanceof Map)) {\n throw new Error(`Invalid type. Expected Map, got ${parentResolved} (${typeof parentResolved})`)\n }\n // All decoded map keys will be raw strings, and Map objects compare complex values by reference,\n // so we must check all the values for value-equality.\n if (typeof this.segment.key === 'string' || this.segment.key instanceof Uint8Array || this.segment.key instanceof RawBinaryString) {\n const targetBytes =\n this.segment.key instanceof RawBinaryString\n ? // Decoded rawBinaryValue will always be a Uint8Array\n (this.segment.key.rawBinaryValue as Uint8Array)\n : coerceToBytes(this.segment.key)\n const targetIsRawString = typeof this.segment.key === 'string' || this.segment.key instanceof RawBinaryString\n for (const [key, value] of parentResolved) {\n let potentialKeyBytes: Uint8Array | undefined\n if (targetIsRawString) {\n if (key instanceof RawBinaryString) {\n // Decoded rawBinaryValue will always be a Uint8Array\n potentialKeyBytes = key.rawBinaryValue as Uint8Array\n }\n } else if (key instanceof Uint8Array) {\n potentialKeyBytes = key\n }\n if (potentialKeyBytes && arrayEqual(targetBytes, potentialKeyBytes)) {\n this.resolvedCache = value\n break\n }\n }\n } else {\n this.resolvedCache = parentResolved.get(this.segment.key)\n }\n this.resolvedCachePresent = true\n return this.resolvedCache\n }\n if (this.segment.kind === MsgpackObjectPathSegmentKind.ARRAY_ELEMENT) {\n if (!Array.isArray(parentResolved)) {\n throw new Error(`Invalid type. Expected Array, got ${parentResolved} (${typeof parentResolved})`)\n }\n this.resolvedCache = parentResolved[this.segment.key as number]\n this.resolvedCachePresent = true\n return this.resolvedCache\n }\n throw new Error(`Invalid segment kind: ${this.segment.kind}`)\n }\n\n /**\n * Get the path string of the current location indicated by the provider. Useful for debugging.\n */\n public getPathString(): string {\n const parentPathString = this.parent ? this.parent.getPathString() : 'root'\n if (!this.segment) {\n return parentPathString\n }\n if (this.segment.kind === MsgpackObjectPathSegmentKind.MAP_VALUE) {\n return `${parentPathString} -> map key \"${this.segment.key}\" (${typeof this.segment.key})`\n }\n if (this.segment.kind === MsgpackObjectPathSegmentKind.ARRAY_ELEMENT) {\n return `${parentPathString} -> array index ${this.segment.key} (${typeof this.segment.key})`\n }\n return `${parentPathString} -> unknown segment kind ${this.segment.kind}`\n }\n}\n\n/**\n * Options for {@link Schema.prepareJSON}\n */\nexport interface PrepareJSONOptions {\n /**\n * If true, allows invalid UTF-8 binary strings to be converted to JSON strings.\n *\n * Otherwise, an error will be thrown if encoding a binary string to a JSON cannot be done losslessly.\n */\n lossyBinaryStringConversion?: boolean\n}\n\n/**\n * A Schema is used to prepare objects for encoding and decoding from msgpack and JSON.\n *\n * Schemas represent a specific type.\n */\nexport abstract class Schema {\n /**\n * Get the default value for this type.\n */\n public abstract defaultValue(): unknown\n\n /**\n * Checks if the value is the default value for this type.\n * @param data - The value to check\n * @returns True if the value is the default value, false otherwise\n */\n public abstract isDefaultValue(data: unknown): boolean\n\n /**\n * Prepares the encoding data for encoding to msgpack.\n * @param data - Encoding data to be prepared.\n * @returns A value ready to be msgpack encoded.\n */\n public abstract prepareMsgpack(data: unknown): MsgpackEncodingData\n\n /**\n * Restores the encoding data from a msgpack encoding object.\n * @param encoded - The msgpack encoding object to restore.\n * @param rawStringProvider - A provider for raw strings.\n * @returns The original encoding data.\n */\n public abstract fromPreparedMsgpack(encoded: MsgpackEncodingData, rawStringProvider: MsgpackRawStringProvider): unknown\n\n /**\n * Prepares the encoding data for encoding to JSON.\n * @param data - The JSON encoding data to be prepared.\n * @returns A value ready to be JSON encoded.\n */\n public abstract prepareJSON(data: unknown, options: PrepareJSONOptions): JSONEncodingData\n\n /**\n * Restores the encoding data from a JSON encoding object.\n * @param encoded - The JSON encoding object to restore.\n * @returns The original encoding data.\n */\n public abstract fromPreparedJSON(encoded: JSONEncodingData): unknown\n}\n\n/**\n * An interface for objects that can be encoded and decoded to/from msgpack and JSON.\n */\nexport interface Encodable {\n /**\n * Extract the encoding data for this object. This data, after being prepared by the encoding\n * Schema, can be encoded to msgpack or JSON.\n */\n toEncodingData(): unknown\n /**\n * Get the encoding Schema for this object, used to prepare the encoding data for msgpack and JSON.\n */\n getEncodingSchema(): Schema\n}\n\n/**\n * A type that represents the class of an Encodable object.\n */\nexport interface EncodableClass<T extends Encodable> {\n /**\n * Create a new instance of this class from the given encoding data.\n * @param data - The encoding data to create the object from\n */\n fromEncodingData(data: unknown): T\n /**\n * The encoding Schema for this class, used to prepare encoding data from msgpack and JSON.\n */\n readonly encodingSchema: Schema\n}\n\n/**\n * Decode a msgpack byte array to an Encodable object.\n * @param encoded - The msgpack bytes to decode\n * @param c - The class of the object to decode. This class must match the object that was encoded.\n * @returns An instance of the class with the decoded data\n */\nexport function decodeMsgpack<T extends Encodable>(encoded: ArrayLike<number>, c: EncodableClass<T>): T {\n const decoded = msgpackRawDecodeAsMap(encoded) as MsgpackEncodingData\n const rawStringProvider = new MsgpackRawStringProvider({\n baseObjectBytes: encoded,\n })\n return c.fromEncodingData(c.encodingSchema.fromPreparedMsgpack(decoded, rawStringProvider))\n}\n\n/**\n * Encode an Encodable object to a msgpack byte array.\n * @param e - The object to encode\n * @returns A msgpack byte array encoding of the object\n */\nexport function encodeMsgpack(e: Encodable): Uint8Array {\n return msgpackRawEncode(e.getEncodingSchema().prepareMsgpack(e.toEncodingData()))\n}\n\n/**\n * Decode a JSON string to an Encodable object.\n * @param encoded - The JSON string to decode\n * @param c - The class of the object to decode. This class must match the object that was encoded.\n * @returns An instance of the class with the decoded data\n */\nexport function decodeJSON<T extends Encodable>(encoded: string, c: EncodableClass<T>): T {\n const decoded: JSONEncodingData = parseJSON(encoded, {\n intDecoding: IntDecoding.BIGINT,\n })\n return c.fromEncodingData(c.encodingSchema.fromPreparedJSON(decoded) as JSONEncodingData)\n}\n\nexport interface EncodeJSONOptions {\n /**\n * Adds indentation, white space, and line break characters to the return-value JSON text to make\n * it easier to read.\n */\n space?: string | number\n\n /**\n * If true, allows invalid UTF-8 binary strings to be converted to JSON strings.\n *\n * Otherwise, an error will be thrown if encoding a binary string to a JSON cannot be done losslessly.\n */\n lossyBinaryStringConversion?: boolean\n}\n\n/**\n * Encode an Encodable object to a JSON string.\n * @param e - The object to encode\n * @param options - Optional encoding options. See {@link EncodeJSONOptions} for more information.\n * @returns A JSON string encoding of the object\n */\nexport function encodeJSON(e: Encodable, options?: EncodeJSONOptions): string {\n const { space, ...prepareJSONOptions } = options ?? {}\n const prepared = e.getEncodingSchema().prepareJSON(e.toEncodingData(), prepareJSONOptions)\n return stringifyJSON(prepared, undefined, space)\n}\n"],"mappings":"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"}
|
|
@@ -4,6 +4,17 @@ import { bytesToBase64, coerceToBytes } from "./binarydata.mjs";
|
|
|
4
4
|
import { IntMode, RawBinaryString, decode, encode } from "algorand-msgpack";
|
|
5
5
|
|
|
6
6
|
//#region packages/sdk/src/encoding/encoding.ts
|
|
7
|
+
/**
|
|
8
|
+
* This file is a wrapper of msgpack.js.
|
|
9
|
+
* The wrapper was written in order to ensure correct encoding of Algorand Transaction and other formats.
|
|
10
|
+
* In particular, it matches go-algorand blockchain client, written in go (https://www.github.com/algorand/go-algorand.
|
|
11
|
+
* Algorand's msgpack encoding follows to following rules -
|
|
12
|
+
* 1. Every integer must be encoded to the smallest type possible (0-255-\>8bit, 256-65535-\>16bit, etx)
|
|
13
|
+
* 2. All fields names must be sorted
|
|
14
|
+
* 3. All empty and 0 fields should be omitted
|
|
15
|
+
* 4. Every positive number must be encoded as uint
|
|
16
|
+
* 5. Binary blob should be used for binary data and string for strings
|
|
17
|
+
* */
|
|
7
18
|
const ERROR_CONTAINS_EMPTY_STRING = "The object contains empty or 0 values. First empty or 0 value encountered during encoding: ";
|
|
8
19
|
/**
|
|
9
20
|
* containsEmpty returns true if any of the object's values are empty, false otherwise.
|
|
@@ -278,7 +289,7 @@ function decodeJSON(encoded, c) {
|
|
|
278
289
|
* @returns A JSON string encoding of the object
|
|
279
290
|
*/
|
|
280
291
|
function encodeJSON(e, options) {
|
|
281
|
-
const { space
|
|
292
|
+
const { space, ...prepareJSONOptions } = options ?? {};
|
|
282
293
|
return stringifyJSON(e.getEncodingSchema().prepareJSON(e.toEncodingData(), prepareJSONOptions), void 0, space);
|
|
283
294
|
}
|
|
284
295
|
|