@algorandfoundation/algokit-utils 10.0.0-alpha.1 → 10.0.0-alpha.10
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/README.md +27 -5
- package/_virtual/rolldown_runtime.js +20 -11
- package/_virtual/rolldown_runtime.mjs +10 -5
- 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 +2 -5
- package/package.json +1 -1
- package/packages/abi/src/abi-method.d.ts +1 -1
- package/packages/abi/src/abi-method.js.map +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 +2 -1
- package/packages/abi/src/abi-type.js.map +1 -1
- package/packages/abi/src/abi-type.mjs +2 -1
- 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/english.js.map +1 -1
- package/packages/algo25/src/english.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 +153 -153
- package/packages/algod_client/src/apis/api-service.js.map +1 -1
- package/packages/algod_client/src/apis/api-service.mjs +153 -153
- 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 +4 -4
- package/packages/algod_client/src/core/model-runtime.js.map +1 -1
- package/packages/algod_client/src/core/model-runtime.mjs +6 -6
- 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 +49 -29
- package/packages/algod_client/src/models/block.js +174 -98
- package/packages/algod_client/src/models/block.js.map +1 -1
- package/packages/algod_client/src/models/block.mjs +174 -98
- 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-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/json.mjs +2 -2
- package/packages/common/src/json.mjs.map +1 -1
- package/packages/common/src/msgpack.js +0 -1
- package/packages/common/src/msgpack.js.map +1 -1
- package/packages/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 +4 -4
- package/packages/indexer_client/src/core/model-runtime.js.map +1 -1
- package/packages/indexer_client/src/core/model-runtime.mjs +6 -6
- 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.js +8 -8
- package/packages/indexer_client/src/models/block.js.map +1 -1
- package/packages/indexer_client/src/models/block.mjs +8 -8
- 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/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 +4 -4
- package/packages/kmd_client/src/core/model-runtime.js.map +1 -1
- package/packages/kmd_client/src/core/model-runtime.mjs +6 -6
- 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/sdk/src/utils/utils.mjs +2 -2
- package/packages/sdk/src/utils/utils.mjs.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 -10
- 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/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 +2 -2
- package/packages/transact/src/transactions/signed-transaction.js.map +1 -1
- package/packages/transact/src/transactions/signed-transaction.mjs.map +1 -1
- package/packages/transact/src/transactions/transaction-meta.js +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.js +1 -0
- package/packages/transact/src/transactions/transaction.js.map +1 -1
- package/packages/transact/src/transactions/transaction.mjs +1 -0
- package/packages/transact/src/transactions/transaction.mjs.map +1 -1
- package/sdk/index.js +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 +5 -4
- package/transact/index.js +4 -22
- package/transact/index.mjs +4 -3
- 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 +4 -3
- 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/method-call.js +12 -12
- package/transactions/method-call.js.map +1 -1
- package/transactions/method-call.mjs +12 -12
- package/transactions/method-call.mjs.map +1 -1
- package/types/account-manager.js +2 -2
- package/types/account-manager.js.map +1 -1
- package/types/account-manager.mjs +2 -2
- package/types/account-manager.mjs.map +1 -1
- package/types/algorand-client-transaction-creator.d.ts +97 -83
- 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 +100 -86
- 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 +265 -260
- package/types/app-client.js +0 -1
- package/types/app-client.js.map +1 -1
- package/types/app-deployer.js +1 -1
- package/types/app-deployer.js.map +1 -1
- package/types/app-deployer.mjs +1 -1
- package/types/app-deployer.mjs.map +1 -1
- package/types/app-factory.d.ts +91 -88
- 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/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/composer.d.ts +9 -0
- package/types/composer.js +28 -13
- package/types/composer.js.map +1 -1
- package/types/composer.mjs +28 -12
- package/types/composer.mjs.map +1 -1
- 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/testing.d.ts +2 -2
- 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
|
@@ -6,39 +6,31 @@ const require_signed_transaction_meta = require('./transactions/signed-transacti
|
|
|
6
6
|
const require_signed_transaction = require('./transactions/signed-transaction.js');
|
|
7
7
|
|
|
8
8
|
//#region packages/transact/src/logicsig.ts
|
|
9
|
-
const base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;
|
|
10
|
-
/** sanityCheckProgram performs heuristic program validation:
|
|
11
|
-
* check if passed in bytes are Algorand address or is B64 encoded, rather than Teal bytes
|
|
12
|
-
*
|
|
13
|
-
* @param program - Program bytes to check
|
|
14
|
-
*/
|
|
15
|
-
function sanityCheckProgram(program) {
|
|
16
|
-
if (!program || program.length === 0) throw new Error("empty program");
|
|
17
|
-
const lineBreakOrd = "\n".charCodeAt(0);
|
|
18
|
-
const blankSpaceOrd = " ".charCodeAt(0);
|
|
19
|
-
const tildeOrd = "~".charCodeAt(0);
|
|
20
|
-
const isPrintable = (x) => blankSpaceOrd <= x && x <= tildeOrd;
|
|
21
|
-
if (program.every((x) => x === lineBreakOrd || isPrintable(x))) {
|
|
22
|
-
const programStr = new TextDecoder().decode(program);
|
|
23
|
-
if (require_address.isValidAddress(programStr)) throw new Error("requesting program bytes, get Algorand address");
|
|
24
|
-
if (base64regex.test(programStr)) throw new Error("program should not be b64 encoded");
|
|
25
|
-
throw new Error("program bytes are all ASCII printable characters, not looking like Teal byte code");
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
9
|
const PROGRAM_TAG = new TextEncoder().encode("Program");
|
|
29
10
|
const MSIG_PROGRAM_TAG = new TextEncoder().encode("MsigProgram");
|
|
30
11
|
const SIGN_PROGRAM_DATA_PREFIX = new TextEncoder().encode("ProgData");
|
|
31
|
-
var LogicSigAccount = class {
|
|
12
|
+
var LogicSigAccount = class LogicSigAccount {
|
|
32
13
|
logic;
|
|
33
14
|
args;
|
|
34
15
|
sig;
|
|
35
16
|
msig;
|
|
36
17
|
lmsig;
|
|
18
|
+
static fromSignature(signature) {
|
|
19
|
+
const lsigAccount = new LogicSigAccount(signature.logic, signature.args || []);
|
|
20
|
+
lsigAccount.sig = signature.sig;
|
|
21
|
+
lsigAccount.msig = signature.msig;
|
|
22
|
+
lsigAccount.lmsig = signature.lmsig;
|
|
23
|
+
return lsigAccount;
|
|
24
|
+
}
|
|
25
|
+
static fromBytes(encodedLsig) {
|
|
26
|
+
const decoded = require_msgpack.decodeMsgpack(encodedLsig);
|
|
27
|
+
const lsigSignature = require_signed_transaction_meta.logicSignatureCodec.decode(decoded, "msgpack");
|
|
28
|
+
return LogicSigAccount.fromSignature(lsigSignature);
|
|
29
|
+
}
|
|
37
30
|
constructor(program, programArgs) {
|
|
38
31
|
if (programArgs && (!Array.isArray(programArgs) || !programArgs.every((arg) => arg.constructor === Uint8Array))) throw new TypeError("Invalid arguments");
|
|
39
32
|
let args = [];
|
|
40
33
|
if (programArgs != null) args = programArgs.map((arg) => new Uint8Array(arg));
|
|
41
|
-
sanityCheckProgram(program);
|
|
42
34
|
this.logic = program;
|
|
43
35
|
this.args = args;
|
|
44
36
|
}
|
|
@@ -76,16 +68,16 @@ var LogicSigAccount = class {
|
|
|
76
68
|
}
|
|
77
69
|
async delegateMultisig(msig) {
|
|
78
70
|
if (this.lmsig == void 0) this.lmsig = {
|
|
79
|
-
|
|
71
|
+
subsigs: [],
|
|
80
72
|
version: msig.params.version,
|
|
81
73
|
threshold: msig.params.threshold
|
|
82
74
|
};
|
|
83
75
|
for (const addrWithSigner of msig.subSigners) {
|
|
84
76
|
const { lsigSigner, addr } = addrWithSigner;
|
|
85
77
|
const signature = await lsigSigner(this, msig);
|
|
86
|
-
this.lmsig.
|
|
78
|
+
this.lmsig.subsigs.push({
|
|
87
79
|
publicKey: addr.publicKey,
|
|
88
|
-
signature
|
|
80
|
+
sig: signature
|
|
89
81
|
});
|
|
90
82
|
}
|
|
91
83
|
}
|
|
@@ -100,19 +92,7 @@ var LogicSigAccount = class {
|
|
|
100
92
|
return require_array.concatArrays(SIGN_PROGRAM_DATA_PREFIX, this.address().publicKey, data);
|
|
101
93
|
}
|
|
102
94
|
};
|
|
103
|
-
/**
|
|
104
|
-
* Decodes MsgPack bytes into a logic signature.
|
|
105
|
-
*
|
|
106
|
-
* @param encodedLogicSignature - The MsgPack encoded logic signature
|
|
107
|
-
* @returns The decoded LogicSignature or an error if decoding fails.
|
|
108
|
-
*/
|
|
109
|
-
function decodeLogicSignature(encodedLogicSignature) {
|
|
110
|
-
const decodedData = require_msgpack.decodeMsgpack(encodedLogicSignature);
|
|
111
|
-
return require_signed_transaction_meta.logicSignatureCodec.decode(decodedData, "msgpack");
|
|
112
|
-
}
|
|
113
95
|
|
|
114
96
|
//#endregion
|
|
115
97
|
exports.LogicSigAccount = LogicSigAccount;
|
|
116
|
-
exports.decodeLogicSignature = decodeLogicSignature;
|
|
117
|
-
exports.sanityCheckProgram = sanityCheckProgram;
|
|
118
98
|
//# sourceMappingURL=logicsig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logicsig.js","names":["
|
|
1
|
+
{"version":3,"file":"logicsig.js","names":["decodeMsgpack","logicSignatureCodec","args: Uint8Array[]","signedTxns: Uint8Array[]","stxn: SignedTransaction","encodeSignedTransaction","Address","hash","concatArrays"],"sources":["../../../../packages/transact/src/logicsig.ts"],"sourcesContent":["import { Address, concatArrays, decodeMsgpack, hash } from '@algorandfoundation/algokit-common'\nimport { MultisigAccount } from './multisig'\nimport { TransactionSigner } from './signer'\nimport { LogicSignature, MultisigSignature, SignedTransaction, encodeSignedTransaction } from './transactions/signed-transaction'\nimport { Transaction } from './transactions/transaction'\nimport { logicSignatureCodec } from './transactions/signed-transaction-meta'\n\nconst PROGRAM_TAG = new TextEncoder().encode('Program')\nconst MSIG_PROGRAM_TAG = new TextEncoder().encode('MsigProgram')\nconst SIGN_PROGRAM_DATA_PREFIX = new TextEncoder().encode('ProgData')\n\n/** Function for signing logic signatures for delegation */\nexport type DelegatedLsigSigner = (lsig: LogicSigAccount, msig?: MultisigAccount) => Promise<Uint8Array>\n\n/** Function for signing program data for a logic signature */\nexport type ProgramDataSigner = (data: Uint8Array, lsig: LogicSigAccount) => Promise<Uint8Array>\n\nexport class LogicSigAccount {\n logic: Uint8Array\n args: Uint8Array[]\n sig?: Uint8Array\n msig?: MultisigSignature\n lmsig?: MultisigSignature\n\n static fromSignature(signature: LogicSignature): LogicSigAccount {\n const lsigAccount = new LogicSigAccount(signature.logic, signature.args || [])\n lsigAccount.sig = signature.sig\n lsigAccount.msig = signature.msig\n lsigAccount.lmsig = signature.lmsig\n return lsigAccount\n }\n\n static fromBytes(encodedLsig: Uint8Array): LogicSigAccount {\n const decoded = decodeMsgpack(encodedLsig)\n const lsigSignature = logicSignatureCodec.decode(decoded, 'msgpack')\n return LogicSigAccount.fromSignature(lsigSignature)\n }\n\n constructor(program: Uint8Array, programArgs?: Array<Uint8Array> | null) {\n if (programArgs && (!Array.isArray(programArgs) || !programArgs.every((arg) => arg.constructor === Uint8Array))) {\n throw new TypeError('Invalid arguments')\n }\n\n let args: Uint8Array[] = []\n if (programArgs != null) args = programArgs.map((arg) => new Uint8Array(arg))\n\n this.logic = program\n this.args = args\n }\n\n get signer(): TransactionSigner {\n return async (txns: Transaction[], indexes: number[]) => {\n const signedTxns: Uint8Array[] = []\n for (const index of indexes) {\n const txn = txns[index]\n\n const stxn: SignedTransaction = {\n txn,\n lsig: { logic: this.logic, args: this.args, msig: this.msig, lmsig: this.lmsig, sig: this.sig },\n }\n\n signedTxns.push(encodeSignedTransaction(stxn))\n }\n\n return signedTxns\n }\n }\n\n get addr(): Address {\n return this.address()\n }\n\n /**\n * Compute hash of the logic sig program (that is the same as escrow account address) as string address\n * @returns String representation of the address\n */\n address(): Address {\n const toBeSigned = concatArrays(PROGRAM_TAG, this.logic)\n const h = hash(toBeSigned)\n return new Address(h)\n }\n\n async delegate(signer: DelegatedLsigSigner) {\n this.sig = await signer(this)\n }\n\n async delegateMultisig(msig: MultisigAccount) {\n if (this.lmsig == undefined) {\n this.lmsig = {\n subsigs: [],\n version: msig.params.version,\n threshold: msig.params.threshold,\n }\n }\n for (const addrWithSigner of msig.subSigners) {\n const { lsigSigner, addr } = addrWithSigner\n const signature = await lsigSigner(this, msig)\n\n this.lmsig.subsigs.push({ publicKey: addr.publicKey, sig: signature })\n }\n }\n\n bytesToSignForDelegation(msig?: MultisigAccount): Uint8Array {\n if (msig) {\n return concatArrays(MSIG_PROGRAM_TAG, msig.addr.publicKey, this.logic)\n } else {\n return concatArrays(PROGRAM_TAG, this.logic)\n }\n }\n\n signProgramData(data: Uint8Array, signer: ProgramDataSigner): Promise<Uint8Array> {\n return signer(data, this)\n }\n\n programDataToSign(data: Uint8Array): Uint8Array {\n return concatArrays(SIGN_PROGRAM_DATA_PREFIX, this.address().publicKey, data)\n }\n}\n"],"mappings":";;;;;;;;AAOA,MAAM,cAAc,IAAI,aAAa,CAAC,OAAO,UAAU;AACvD,MAAM,mBAAmB,IAAI,aAAa,CAAC,OAAO,cAAc;AAChE,MAAM,2BAA2B,IAAI,aAAa,CAAC,OAAO,WAAW;AAQrE,IAAa,kBAAb,MAAa,gBAAgB;CAC3B;CACA;CACA;CACA;CACA;CAEA,OAAO,cAAc,WAA4C;EAC/D,MAAM,cAAc,IAAI,gBAAgB,UAAU,OAAO,UAAU,QAAQ,EAAE,CAAC;AAC9E,cAAY,MAAM,UAAU;AAC5B,cAAY,OAAO,UAAU;AAC7B,cAAY,QAAQ,UAAU;AAC9B,SAAO;;CAGT,OAAO,UAAU,aAA0C;EACzD,MAAM,UAAUA,8BAAc,YAAY;EAC1C,MAAM,gBAAgBC,oDAAoB,OAAO,SAAS,UAAU;AACpE,SAAO,gBAAgB,cAAc,cAAc;;CAGrD,YAAY,SAAqB,aAAwC;AACvE,MAAI,gBAAgB,CAAC,MAAM,QAAQ,YAAY,IAAI,CAAC,YAAY,OAAO,QAAQ,IAAI,gBAAgB,WAAW,EAC5G,OAAM,IAAI,UAAU,oBAAoB;EAG1C,IAAIC,OAAqB,EAAE;AAC3B,MAAI,eAAe,KAAM,QAAO,YAAY,KAAK,QAAQ,IAAI,WAAW,IAAI,CAAC;AAE7E,OAAK,QAAQ;AACb,OAAK,OAAO;;CAGd,IAAI,SAA4B;AAC9B,SAAO,OAAO,MAAqB,YAAsB;GACvD,MAAMC,aAA2B,EAAE;AACnC,QAAK,MAAM,SAAS,SAAS;IAG3B,MAAMC,OAA0B;KAC9B,KAHU,KAAK;KAIf,MAAM;MAAE,OAAO,KAAK;MAAO,MAAM,KAAK;MAAM,MAAM,KAAK;MAAM,OAAO,KAAK;MAAO,KAAK,KAAK;MAAK;KAChG;AAED,eAAW,KAAKC,mDAAwB,KAAK,CAAC;;AAGhD,UAAO;;;CAIX,IAAI,OAAgB;AAClB,SAAO,KAAK,SAAS;;;;;;CAOvB,UAAmB;AAGjB,SAAO,IAAIC,wBADDC,oBADSC,2BAAa,aAAa,KAAK,MAAM,CAC9B,CACL;;CAGvB,MAAM,SAAS,QAA6B;AAC1C,OAAK,MAAM,MAAM,OAAO,KAAK;;CAG/B,MAAM,iBAAiB,MAAuB;AAC5C,MAAI,KAAK,SAAS,OAChB,MAAK,QAAQ;GACX,SAAS,EAAE;GACX,SAAS,KAAK,OAAO;GACrB,WAAW,KAAK,OAAO;GACxB;AAEH,OAAK,MAAM,kBAAkB,KAAK,YAAY;GAC5C,MAAM,EAAE,YAAY,SAAS;GAC7B,MAAM,YAAY,MAAM,WAAW,MAAM,KAAK;AAE9C,QAAK,MAAM,QAAQ,KAAK;IAAE,WAAW,KAAK;IAAW,KAAK;IAAW,CAAC;;;CAI1E,yBAAyB,MAAoC;AAC3D,MAAI,KACF,QAAOA,2BAAa,kBAAkB,KAAK,KAAK,WAAW,KAAK,MAAM;MAEtE,QAAOA,2BAAa,aAAa,KAAK,MAAM;;CAIhD,gBAAgB,MAAkB,QAAgD;AAChF,SAAO,OAAO,MAAM,KAAK;;CAG3B,kBAAkB,MAA8B;AAC9C,SAAOA,2BAAa,0BAA0B,KAAK,SAAS,CAAC,WAAW,KAAK"}
|
|
@@ -1,44 +1,36 @@
|
|
|
1
1
|
import { concatArrays } from "../../common/src/array.mjs";
|
|
2
|
-
import { Address
|
|
2
|
+
import { Address } from "../../common/src/address.mjs";
|
|
3
3
|
import { hash } from "../../common/src/crypto.mjs";
|
|
4
4
|
import { decodeMsgpack } from "../../common/src/msgpack.mjs";
|
|
5
5
|
import { logicSignatureCodec } from "./transactions/signed-transaction-meta.mjs";
|
|
6
6
|
import { encodeSignedTransaction } from "./transactions/signed-transaction.mjs";
|
|
7
7
|
|
|
8
8
|
//#region packages/transact/src/logicsig.ts
|
|
9
|
-
const base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;
|
|
10
|
-
/** sanityCheckProgram performs heuristic program validation:
|
|
11
|
-
* check if passed in bytes are Algorand address or is B64 encoded, rather than Teal bytes
|
|
12
|
-
*
|
|
13
|
-
* @param program - Program bytes to check
|
|
14
|
-
*/
|
|
15
|
-
function sanityCheckProgram(program) {
|
|
16
|
-
if (!program || program.length === 0) throw new Error("empty program");
|
|
17
|
-
const lineBreakOrd = "\n".charCodeAt(0);
|
|
18
|
-
const blankSpaceOrd = " ".charCodeAt(0);
|
|
19
|
-
const tildeOrd = "~".charCodeAt(0);
|
|
20
|
-
const isPrintable = (x) => blankSpaceOrd <= x && x <= tildeOrd;
|
|
21
|
-
if (program.every((x) => x === lineBreakOrd || isPrintable(x))) {
|
|
22
|
-
const programStr = new TextDecoder().decode(program);
|
|
23
|
-
if (isValidAddress(programStr)) throw new Error("requesting program bytes, get Algorand address");
|
|
24
|
-
if (base64regex.test(programStr)) throw new Error("program should not be b64 encoded");
|
|
25
|
-
throw new Error("program bytes are all ASCII printable characters, not looking like Teal byte code");
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
9
|
const PROGRAM_TAG = new TextEncoder().encode("Program");
|
|
29
10
|
const MSIG_PROGRAM_TAG = new TextEncoder().encode("MsigProgram");
|
|
30
11
|
const SIGN_PROGRAM_DATA_PREFIX = new TextEncoder().encode("ProgData");
|
|
31
|
-
var LogicSigAccount = class {
|
|
12
|
+
var LogicSigAccount = class LogicSigAccount {
|
|
32
13
|
logic;
|
|
33
14
|
args;
|
|
34
15
|
sig;
|
|
35
16
|
msig;
|
|
36
17
|
lmsig;
|
|
18
|
+
static fromSignature(signature) {
|
|
19
|
+
const lsigAccount = new LogicSigAccount(signature.logic, signature.args || []);
|
|
20
|
+
lsigAccount.sig = signature.sig;
|
|
21
|
+
lsigAccount.msig = signature.msig;
|
|
22
|
+
lsigAccount.lmsig = signature.lmsig;
|
|
23
|
+
return lsigAccount;
|
|
24
|
+
}
|
|
25
|
+
static fromBytes(encodedLsig) {
|
|
26
|
+
const decoded = decodeMsgpack(encodedLsig);
|
|
27
|
+
const lsigSignature = logicSignatureCodec.decode(decoded, "msgpack");
|
|
28
|
+
return LogicSigAccount.fromSignature(lsigSignature);
|
|
29
|
+
}
|
|
37
30
|
constructor(program, programArgs) {
|
|
38
31
|
if (programArgs && (!Array.isArray(programArgs) || !programArgs.every((arg) => arg.constructor === Uint8Array))) throw new TypeError("Invalid arguments");
|
|
39
32
|
let args = [];
|
|
40
33
|
if (programArgs != null) args = programArgs.map((arg) => new Uint8Array(arg));
|
|
41
|
-
sanityCheckProgram(program);
|
|
42
34
|
this.logic = program;
|
|
43
35
|
this.args = args;
|
|
44
36
|
}
|
|
@@ -76,16 +68,16 @@ var LogicSigAccount = class {
|
|
|
76
68
|
}
|
|
77
69
|
async delegateMultisig(msig) {
|
|
78
70
|
if (this.lmsig == void 0) this.lmsig = {
|
|
79
|
-
|
|
71
|
+
subsigs: [],
|
|
80
72
|
version: msig.params.version,
|
|
81
73
|
threshold: msig.params.threshold
|
|
82
74
|
};
|
|
83
75
|
for (const addrWithSigner of msig.subSigners) {
|
|
84
76
|
const { lsigSigner, addr } = addrWithSigner;
|
|
85
77
|
const signature = await lsigSigner(this, msig);
|
|
86
|
-
this.lmsig.
|
|
78
|
+
this.lmsig.subsigs.push({
|
|
87
79
|
publicKey: addr.publicKey,
|
|
88
|
-
signature
|
|
80
|
+
sig: signature
|
|
89
81
|
});
|
|
90
82
|
}
|
|
91
83
|
}
|
|
@@ -100,17 +92,7 @@ var LogicSigAccount = class {
|
|
|
100
92
|
return concatArrays(SIGN_PROGRAM_DATA_PREFIX, this.address().publicKey, data);
|
|
101
93
|
}
|
|
102
94
|
};
|
|
103
|
-
/**
|
|
104
|
-
* Decodes MsgPack bytes into a logic signature.
|
|
105
|
-
*
|
|
106
|
-
* @param encodedLogicSignature - The MsgPack encoded logic signature
|
|
107
|
-
* @returns The decoded LogicSignature or an error if decoding fails.
|
|
108
|
-
*/
|
|
109
|
-
function decodeLogicSignature(encodedLogicSignature) {
|
|
110
|
-
const decodedData = decodeMsgpack(encodedLogicSignature);
|
|
111
|
-
return logicSignatureCodec.decode(decodedData, "msgpack");
|
|
112
|
-
}
|
|
113
95
|
|
|
114
96
|
//#endregion
|
|
115
|
-
export { LogicSigAccount
|
|
97
|
+
export { LogicSigAccount };
|
|
116
98
|
//# sourceMappingURL=logicsig.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logicsig.mjs","names":["args: Uint8Array[]","signedTxns: Uint8Array[]","stxn: SignedTransaction"],"sources":["../../../../packages/transact/src/logicsig.ts"],"sourcesContent":["import { Address, concatArrays, decodeMsgpack, hash
|
|
1
|
+
{"version":3,"file":"logicsig.mjs","names":["args: Uint8Array[]","signedTxns: Uint8Array[]","stxn: SignedTransaction"],"sources":["../../../../packages/transact/src/logicsig.ts"],"sourcesContent":["import { Address, concatArrays, decodeMsgpack, hash } from '@algorandfoundation/algokit-common'\nimport { MultisigAccount } from './multisig'\nimport { TransactionSigner } from './signer'\nimport { LogicSignature, MultisigSignature, SignedTransaction, encodeSignedTransaction } from './transactions/signed-transaction'\nimport { Transaction } from './transactions/transaction'\nimport { logicSignatureCodec } from './transactions/signed-transaction-meta'\n\nconst PROGRAM_TAG = new TextEncoder().encode('Program')\nconst MSIG_PROGRAM_TAG = new TextEncoder().encode('MsigProgram')\nconst SIGN_PROGRAM_DATA_PREFIX = new TextEncoder().encode('ProgData')\n\n/** Function for signing logic signatures for delegation */\nexport type DelegatedLsigSigner = (lsig: LogicSigAccount, msig?: MultisigAccount) => Promise<Uint8Array>\n\n/** Function for signing program data for a logic signature */\nexport type ProgramDataSigner = (data: Uint8Array, lsig: LogicSigAccount) => Promise<Uint8Array>\n\nexport class LogicSigAccount {\n logic: Uint8Array\n args: Uint8Array[]\n sig?: Uint8Array\n msig?: MultisigSignature\n lmsig?: MultisigSignature\n\n static fromSignature(signature: LogicSignature): LogicSigAccount {\n const lsigAccount = new LogicSigAccount(signature.logic, signature.args || [])\n lsigAccount.sig = signature.sig\n lsigAccount.msig = signature.msig\n lsigAccount.lmsig = signature.lmsig\n return lsigAccount\n }\n\n static fromBytes(encodedLsig: Uint8Array): LogicSigAccount {\n const decoded = decodeMsgpack(encodedLsig)\n const lsigSignature = logicSignatureCodec.decode(decoded, 'msgpack')\n return LogicSigAccount.fromSignature(lsigSignature)\n }\n\n constructor(program: Uint8Array, programArgs?: Array<Uint8Array> | null) {\n if (programArgs && (!Array.isArray(programArgs) || !programArgs.every((arg) => arg.constructor === Uint8Array))) {\n throw new TypeError('Invalid arguments')\n }\n\n let args: Uint8Array[] = []\n if (programArgs != null) args = programArgs.map((arg) => new Uint8Array(arg))\n\n this.logic = program\n this.args = args\n }\n\n get signer(): TransactionSigner {\n return async (txns: Transaction[], indexes: number[]) => {\n const signedTxns: Uint8Array[] = []\n for (const index of indexes) {\n const txn = txns[index]\n\n const stxn: SignedTransaction = {\n txn,\n lsig: { logic: this.logic, args: this.args, msig: this.msig, lmsig: this.lmsig, sig: this.sig },\n }\n\n signedTxns.push(encodeSignedTransaction(stxn))\n }\n\n return signedTxns\n }\n }\n\n get addr(): Address {\n return this.address()\n }\n\n /**\n * Compute hash of the logic sig program (that is the same as escrow account address) as string address\n * @returns String representation of the address\n */\n address(): Address {\n const toBeSigned = concatArrays(PROGRAM_TAG, this.logic)\n const h = hash(toBeSigned)\n return new Address(h)\n }\n\n async delegate(signer: DelegatedLsigSigner) {\n this.sig = await signer(this)\n }\n\n async delegateMultisig(msig: MultisigAccount) {\n if (this.lmsig == undefined) {\n this.lmsig = {\n subsigs: [],\n version: msig.params.version,\n threshold: msig.params.threshold,\n }\n }\n for (const addrWithSigner of msig.subSigners) {\n const { lsigSigner, addr } = addrWithSigner\n const signature = await lsigSigner(this, msig)\n\n this.lmsig.subsigs.push({ publicKey: addr.publicKey, sig: signature })\n }\n }\n\n bytesToSignForDelegation(msig?: MultisigAccount): Uint8Array {\n if (msig) {\n return concatArrays(MSIG_PROGRAM_TAG, msig.addr.publicKey, this.logic)\n } else {\n return concatArrays(PROGRAM_TAG, this.logic)\n }\n }\n\n signProgramData(data: Uint8Array, signer: ProgramDataSigner): Promise<Uint8Array> {\n return signer(data, this)\n }\n\n programDataToSign(data: Uint8Array): Uint8Array {\n return concatArrays(SIGN_PROGRAM_DATA_PREFIX, this.address().publicKey, data)\n }\n}\n"],"mappings":";;;;;;;;AAOA,MAAM,cAAc,IAAI,aAAa,CAAC,OAAO,UAAU;AACvD,MAAM,mBAAmB,IAAI,aAAa,CAAC,OAAO,cAAc;AAChE,MAAM,2BAA2B,IAAI,aAAa,CAAC,OAAO,WAAW;AAQrE,IAAa,kBAAb,MAAa,gBAAgB;CAC3B;CACA;CACA;CACA;CACA;CAEA,OAAO,cAAc,WAA4C;EAC/D,MAAM,cAAc,IAAI,gBAAgB,UAAU,OAAO,UAAU,QAAQ,EAAE,CAAC;AAC9E,cAAY,MAAM,UAAU;AAC5B,cAAY,OAAO,UAAU;AAC7B,cAAY,QAAQ,UAAU;AAC9B,SAAO;;CAGT,OAAO,UAAU,aAA0C;EACzD,MAAM,UAAU,cAAc,YAAY;EAC1C,MAAM,gBAAgB,oBAAoB,OAAO,SAAS,UAAU;AACpE,SAAO,gBAAgB,cAAc,cAAc;;CAGrD,YAAY,SAAqB,aAAwC;AACvE,MAAI,gBAAgB,CAAC,MAAM,QAAQ,YAAY,IAAI,CAAC,YAAY,OAAO,QAAQ,IAAI,gBAAgB,WAAW,EAC5G,OAAM,IAAI,UAAU,oBAAoB;EAG1C,IAAIA,OAAqB,EAAE;AAC3B,MAAI,eAAe,KAAM,QAAO,YAAY,KAAK,QAAQ,IAAI,WAAW,IAAI,CAAC;AAE7E,OAAK,QAAQ;AACb,OAAK,OAAO;;CAGd,IAAI,SAA4B;AAC9B,SAAO,OAAO,MAAqB,YAAsB;GACvD,MAAMC,aAA2B,EAAE;AACnC,QAAK,MAAM,SAAS,SAAS;IAG3B,MAAMC,OAA0B;KAC9B,KAHU,KAAK;KAIf,MAAM;MAAE,OAAO,KAAK;MAAO,MAAM,KAAK;MAAM,MAAM,KAAK;MAAM,OAAO,KAAK;MAAO,KAAK,KAAK;MAAK;KAChG;AAED,eAAW,KAAK,wBAAwB,KAAK,CAAC;;AAGhD,UAAO;;;CAIX,IAAI,OAAgB;AAClB,SAAO,KAAK,SAAS;;;;;;CAOvB,UAAmB;AAGjB,SAAO,IAAI,QADD,KADS,aAAa,aAAa,KAAK,MAAM,CAC9B,CACL;;CAGvB,MAAM,SAAS,QAA6B;AAC1C,OAAK,MAAM,MAAM,OAAO,KAAK;;CAG/B,MAAM,iBAAiB,MAAuB;AAC5C,MAAI,KAAK,SAAS,OAChB,MAAK,QAAQ;GACX,SAAS,EAAE;GACX,SAAS,KAAK,OAAO;GACrB,WAAW,KAAK,OAAO;GACxB;AAEH,OAAK,MAAM,kBAAkB,KAAK,YAAY;GAC5C,MAAM,EAAE,YAAY,SAAS;GAC7B,MAAM,YAAY,MAAM,WAAW,MAAM,KAAK;AAE9C,QAAK,MAAM,QAAQ,KAAK;IAAE,WAAW,KAAK;IAAW,KAAK;IAAW,CAAC;;;CAI1E,yBAAyB,MAAoC;AAC3D,MAAI,KACF,QAAO,aAAa,kBAAkB,KAAK,KAAK,WAAW,KAAK,MAAM;MAEtE,QAAO,aAAa,aAAa,KAAK,MAAM;;CAIhD,gBAAgB,MAAkB,QAAgD;AAChF,SAAO,OAAO,MAAM,KAAK;;CAG3B,kBAAkB,MAA8B;AAC9C,SAAO,aAAa,0BAA0B,KAAK,SAAS,CAAC,WAAW,KAAK"}
|
|
@@ -1,115 +1,9 @@
|
|
|
1
1
|
import { Address } from "../../common/src/address.js";
|
|
2
2
|
import { Transaction } from "./transactions/transaction.js";
|
|
3
|
-
import { MultisigSignature } from "./transactions/signed-transaction.js";
|
|
3
|
+
import { MultisigSignature, SignedTransaction } from "./transactions/signed-transaction.js";
|
|
4
4
|
import { AddressWithDelegatedLsigSigner, AddressWithTransactionSigner, TransactionSigner } from "./signer.js";
|
|
5
5
|
|
|
6
6
|
//#region packages/transact/src/multisig.d.ts
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Creates an empty multisignature signature from a list of participant public keys.
|
|
10
|
-
*/
|
|
11
|
-
declare function newMultisigSignature(version: number, threshold: number, participants: Uint8Array[]): MultisigSignature;
|
|
12
|
-
/**
|
|
13
|
-
* Returns the list of participant public keys from a multisignature signature.
|
|
14
|
-
*/
|
|
15
|
-
declare function participantsFromMultisigSignature(multisigSignature: MultisigSignature): Uint8Array[];
|
|
16
|
-
/**
|
|
17
|
-
* Returns the address of the multisignature account.
|
|
18
|
-
*/
|
|
19
|
-
declare function addressFromMultisigSignature(multisigSignature: MultisigSignature): Address;
|
|
20
|
-
/**
|
|
21
|
-
* Applies a subsignature for a participant to a multisignature signature, replacing any existing signature.
|
|
22
|
-
*
|
|
23
|
-
* This method applies the signature to ALL instances of the given public key (to support weighted multisig).
|
|
24
|
-
* Since ed25519 signatures are deterministic, there's only one valid signature for a given message and public key.
|
|
25
|
-
*/
|
|
26
|
-
declare function applyMultisigSubsignature(multisigSignature: MultisigSignature, participant: Uint8Array, signature: Uint8Array): MultisigSignature;
|
|
27
|
-
/**
|
|
28
|
-
* Merges two multisignature signatures, replacing signatures in the first with those from the second where present.
|
|
29
|
-
* For each participant, the resulting signature will be taken from the second multisig if present, otherwise from the first.
|
|
30
|
-
*/
|
|
31
|
-
declare function mergeMultisignatures(multisigSignatureA: MultisigSignature, multisigSignatureB: MultisigSignature): MultisigSignature;
|
|
32
|
-
declare const MULTISIG_MERGE_LESSTHANTWO_ERROR_MSG = "Not enough multisig transactions to merge. Need at least two";
|
|
33
|
-
declare const MULTISIG_MERGE_MISMATCH_ERROR_MSG = "Cannot merge txs. txIDs differ";
|
|
34
|
-
declare const MULTISIG_MERGE_MISMATCH_AUTH_ADDR_MSG = "Cannot merge txs. Auth addrs differ";
|
|
35
|
-
declare const MULTISIG_MERGE_WRONG_PREIMAGE_ERROR_MSG = "Cannot merge txs. Multisig preimages differ";
|
|
36
|
-
declare const MULTISIG_MERGE_SIG_MISMATCH_ERROR_MSG = "Cannot merge txs. subsigs are mismatched.";
|
|
37
|
-
declare const MULTISIG_NO_MUTATE_ERROR_MSG = "Cannot mutate a multisig field as it would invalidate all existing signatures.";
|
|
38
|
-
declare const MULTISIG_USE_PARTIAL_SIGN_ERROR_MSG = "Cannot sign a multisig transaction using `signTxn`. Use `partialSignTxn` instead.";
|
|
39
|
-
declare const MULTISIG_SIGNATURE_LENGTH_ERROR_MSG = "Cannot add multisig signature. Signature is not of the correct length.";
|
|
40
|
-
/**
|
|
41
|
-
* creates a raw, multisig transaction blob without any signatures.
|
|
42
|
-
* @param txn - the actual transaction.
|
|
43
|
-
* @param version - multisig version
|
|
44
|
-
* @param threshold - multisig threshold
|
|
45
|
-
* @param pks - ordered list of public keys in this multisig
|
|
46
|
-
* @returns encoded multisig blob
|
|
47
|
-
*/
|
|
48
|
-
declare function createMultisigTransaction(txn: Transaction, {
|
|
49
|
-
version,
|
|
50
|
-
threshold,
|
|
51
|
-
addrs
|
|
52
|
-
}: MultisigMetadata): Uint8Array;
|
|
53
|
-
/**
|
|
54
|
-
* takes a list of multisig transaction blobs, and merges them.
|
|
55
|
-
* @param multisigTxnBlobs - a list of blobs representing encoded multisig txns
|
|
56
|
-
* @returns typed array msg-pack encoded multisig txn
|
|
57
|
-
*/
|
|
58
|
-
declare function mergeMultisigTransactions(multisigTxnBlobs: Uint8Array[]): Uint8Array;
|
|
59
|
-
/**
|
|
60
|
-
* Takes a multisig transaction blob, and appends a given raw signature to it.
|
|
61
|
-
* This makes it possible to compile a multisig signature using only raw signatures from external methods.
|
|
62
|
-
* @param multisigTxnBlob - an encoded multisig txn. Supports non-payment txn types.
|
|
63
|
-
* @param version - multisig version
|
|
64
|
-
* @param threshold - multisig threshold
|
|
65
|
-
* @param addrs - a list of Algorand addresses representing possible signers for this multisig. Order is important.
|
|
66
|
-
* @param signerAddr - address of the signer
|
|
67
|
-
* @param signature - raw multisig signature
|
|
68
|
-
* @returns object containing txID, and blob representing encoded multisig txn
|
|
69
|
-
*/
|
|
70
|
-
declare function appendSignRawMultisigSignature(multisigTxnBlob: Uint8Array, {
|
|
71
|
-
version,
|
|
72
|
-
threshold,
|
|
73
|
-
addrs
|
|
74
|
-
}: MultisigMetadata, signerAddr: string | Address, signature: Uint8Array): {
|
|
75
|
-
txID: string;
|
|
76
|
-
blob: Uint8Array;
|
|
77
|
-
};
|
|
78
|
-
/**
|
|
79
|
-
* Takes multisig parameters and returns a 32 byte typed array public key,
|
|
80
|
-
* representing an address that identifies the "exact group, version, and public keys" that are required for signing.
|
|
81
|
-
* Hash("MultisigAddr" || version uint8 || threshold uint8 || PK1 || PK2 || ...)
|
|
82
|
-
* Encoding this output yields a human readable address.
|
|
83
|
-
* @param version - multisig version
|
|
84
|
-
* @param threshold - multisig threshold
|
|
85
|
-
* @param pks - array of typed array public keys
|
|
86
|
-
*/
|
|
87
|
-
declare function addressFromMultisigPreImg({
|
|
88
|
-
version,
|
|
89
|
-
threshold,
|
|
90
|
-
pks
|
|
91
|
-
}: Omit<MultisigMetadata, 'addrs'> & {
|
|
92
|
-
pks: Uint8Array[];
|
|
93
|
-
}): Address;
|
|
94
|
-
/**
|
|
95
|
-
* Takes multisig parameters and returns a human readable Algorand address.
|
|
96
|
-
* This is equivalent to fromMultisigPreImg, but interfaces with encoded addresses.
|
|
97
|
-
* @param version - multisig version
|
|
98
|
-
* @param threshold - multisig threshold
|
|
99
|
-
* @param addrs - array of encoded addresses
|
|
100
|
-
*/
|
|
101
|
-
declare function addressFromMultisigPreImgAddrs({
|
|
102
|
-
version,
|
|
103
|
-
threshold,
|
|
104
|
-
addrs
|
|
105
|
-
}: MultisigMetadata): Address;
|
|
106
|
-
/**
|
|
107
|
-
* Takes multisig metadata (preimage) and returns the corresponding human readable Algorand address.
|
|
108
|
-
* @param version - multisig version
|
|
109
|
-
* @param threshold - multisig threshold
|
|
110
|
-
* @param addrs - list of Algorand addresses
|
|
111
|
-
*/
|
|
112
|
-
declare const multisigAddress: typeof addressFromMultisigPreImgAddrs;
|
|
113
7
|
interface MultisigMetadata {
|
|
114
8
|
/**
|
|
115
9
|
* Multisig version
|
|
@@ -139,15 +33,13 @@ declare class MultisigAccount implements AddressWithTransactionSigner {
|
|
|
139
33
|
get addr(): Readonly<Address>;
|
|
140
34
|
/** The transaction signer for the multisig account */
|
|
141
35
|
get signer(): TransactionSigner;
|
|
36
|
+
static fromSignature(signature: MultisigSignature): MultisigAccount;
|
|
142
37
|
constructor(multisigParams: MultisigMetadata, subSigners: (AddressWithTransactionSigner & AddressWithDelegatedLsigSigner)[]);
|
|
38
|
+
createMultisigTransaction(txn: Transaction): SignedTransaction;
|
|
39
|
+
createMultisigSignature(): MultisigSignature;
|
|
40
|
+
applySignatureToTxn(txn: SignedTransaction, pubkey: Uint8Array, signature: Uint8Array): void;
|
|
41
|
+
applySignature(msigSignature: MultisigSignature, pubkey: Uint8Array, signature: Uint8Array): MultisigSignature;
|
|
143
42
|
}
|
|
144
|
-
/**
|
|
145
|
-
* Decodes MsgPack bytes into a multi signature.
|
|
146
|
-
*
|
|
147
|
-
* @param encodedMultiSignature - The MsgPack encoded multi signature
|
|
148
|
-
* @returns The decoded MultisigSignature or an error if decoding fails.
|
|
149
|
-
*/
|
|
150
|
-
declare function decodeMultiSignature(encodedMultiSignature: Uint8Array): MultisigSignature;
|
|
151
43
|
//#endregion
|
|
152
|
-
export {
|
|
44
|
+
export { MultisigAccount, MultisigMetadata };
|
|
153
45
|
//# sourceMappingURL=multisig.d.ts.map
|