@aeternity/aepp-sdk 12.1.2 → 13.0.0-alpha.0
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/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.map +1 -1
- package/dist/aepp-sdk.browser.js +1 -1
- package/dist/aepp-sdk.browser.js.map +1 -1
- package/dist/aepp-sdk.js +6580 -8860
- package/dist/aepp-sdk.js.map +1 -1
- package/es/AeSdk.d.ts +7 -3
- package/es/AeSdk.mjs +17 -22
- package/es/AeSdk.mjs.map +1 -1
- package/es/AeSdkAepp.d.ts +6 -5
- package/es/AeSdkAepp.mjs +7 -30
- package/es/AeSdkAepp.mjs.map +1 -1
- package/es/AeSdkBase.d.ts +18 -140
- package/es/AeSdkBase.mjs +27 -185
- package/es/AeSdkBase.mjs.map +1 -1
- package/es/AeSdkMethods.d.ts +124 -0
- package/es/AeSdkMethods.mjs +122 -0
- package/es/AeSdkMethods.mjs.map +1 -0
- package/es/AeSdkWallet.d.ts +7 -21
- package/es/AeSdkWallet.mjs +38 -86
- package/es/AeSdkWallet.mjs.map +1 -1
- package/es/Node.d.ts +7 -12
- package/es/Node.mjs +34 -47
- package/es/Node.mjs.map +1 -1
- package/es/account/Base.d.ts +24 -40
- package/es/account/Base.mjs +1 -101
- package/es/account/Base.mjs.map +1 -1
- package/es/account/Generalized.d.ts +16 -0
- package/es/account/Generalized.mjs +111 -0
- package/es/account/Generalized.mjs.map +1 -0
- package/es/account/Ledger.d.ts +28 -0
- package/es/account/Ledger.mjs +101 -0
- package/es/account/Ledger.mjs.map +1 -0
- package/es/account/LedgerFactory.d.ts +39 -0
- package/es/account/LedgerFactory.mjs +81 -0
- package/es/account/LedgerFactory.mjs.map +1 -0
- package/es/account/Memory.d.ts +13 -17
- package/es/account/Memory.mjs +43 -65
- package/es/account/Memory.mjs.map +1 -1
- package/es/account/Rpc.d.ts +6 -8
- package/es/account/Rpc.mjs +14 -32
- package/es/account/Rpc.mjs.map +1 -1
- package/es/aens.d.ts +3 -3
- package/es/aens.mjs +42 -41
- package/es/aens.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection/Browser.mjs +9 -13
- package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +3 -7
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +1 -1
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +0 -31
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -1
- package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +3 -3
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs +4 -41
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
- package/es/aepp-wallet-communication/rpc/types.d.ts +7 -1
- package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
- package/es/aepp-wallet-communication/schema.mjs +14 -68
- package/es/aepp-wallet-communication/schema.mjs.map +1 -1
- package/es/aepp-wallet-communication/wallet-detector.mjs +0 -3
- package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
- package/es/apis/compiler/compiler.d.ts +23 -29
- package/es/apis/compiler/compiler.mjs +128 -189
- package/es/apis/compiler/compiler.mjs.map +1 -1
- package/es/apis/compiler/index.mjs.map +1 -1
- package/es/apis/compiler/models/index.d.ts +82 -135
- package/es/apis/compiler/models/index.mjs +1 -47
- package/es/apis/compiler/models/index.mjs.map +1 -1
- package/es/apis/compiler/models/mappers.d.ts +8 -8
- package/es/apis/compiler/models/mappers.mjs +165 -183
- package/es/apis/compiler/models/mappers.mjs.map +1 -1
- package/es/apis/compiler/models/parameters.d.ts +0 -1
- package/es/apis/compiler/models/parameters.mjs +5 -9
- package/es/apis/compiler/models/parameters.mjs.map +1 -1
- package/es/apis/node/index.mjs.map +1 -1
- package/es/apis/node/models/index.d.ts +48 -48
- package/es/apis/node/models/mappers.mjs +12 -6
- package/es/apis/node/models/mappers.mjs.map +1 -1
- package/es/apis/node/models/parameters.mjs.map +1 -1
- package/es/apis/node/node.mjs +43 -84
- package/es/apis/node/node.mjs.map +1 -1
- package/es/chain.d.ts +1 -1
- package/es/chain.mjs +33 -58
- package/es/chain.mjs.map +1 -1
- package/es/channel/Base.d.ts +195 -0
- package/es/channel/Base.mjs +290 -0
- package/es/channel/Base.mjs.map +1 -0
- package/es/channel/Contract.d.ts +247 -0
- package/es/channel/Contract.mjs +420 -0
- package/es/channel/Contract.mjs.map +1 -0
- package/es/channel/Spend.d.ts +217 -0
- package/es/channel/Spend.mjs +383 -0
- package/es/channel/Spend.mjs.map +1 -0
- package/es/channel/handlers.d.ts +8 -21
- package/es/channel/handlers.mjs +141 -891
- package/es/channel/handlers.mjs.map +1 -1
- package/es/channel/internal.d.ts +27 -21
- package/es/channel/internal.mjs +98 -190
- package/es/channel/internal.mjs.map +1 -1
- package/es/contract/{Compiler.d.ts → CompilerHttp.d.ts} +3 -3
- package/es/contract/{Compiler.mjs → CompilerHttp.mjs} +8 -13
- package/es/contract/CompilerHttp.mjs.map +1 -0
- package/es/contract/Contract.d.ts +235 -0
- package/es/contract/Contract.mjs +534 -0
- package/es/contract/Contract.mjs.map +1 -0
- package/es/contract/ga.d.ts +7 -33
- package/es/contract/ga.mjs +20 -112
- package/es/contract/ga.mjs.map +1 -1
- package/es/index.d.ts +9 -6
- package/es/index.mjs +8 -6
- package/es/index.mjs.map +1 -1
- package/es/oracle.d.ts +5 -5
- package/es/oracle.mjs +33 -39
- package/es/oracle.mjs.map +1 -1
- package/es/spend.d.ts +3 -3
- package/es/spend.mjs +17 -20
- package/es/spend.mjs.map +1 -1
- package/es/tx/builder/constants.d.ts +2 -1
- package/es/tx/builder/constants.mjs +12 -12
- package/es/tx/builder/constants.mjs.map +1 -1
- package/es/tx/builder/field-types/address.d.ts +15 -0
- package/es/tx/builder/field-types/address.mjs +42 -0
- package/es/tx/builder/field-types/address.mjs.map +1 -0
- package/es/tx/builder/field-types/addresses.d.ts +6 -0
- package/es/tx/builder/field-types/addresses.mjs +13 -0
- package/es/tx/builder/field-types/addresses.mjs.map +1 -0
- package/es/tx/builder/field-types/coin-amount.d.ts +1 -2
- package/es/tx/builder/field-types/coin-amount.mjs +4 -12
- package/es/tx/builder/field-types/coin-amount.mjs.map +1 -1
- package/es/tx/builder/field-types/deposit.d.ts +0 -1
- package/es/tx/builder/field-types/deposit.mjs +2 -4
- package/es/tx/builder/field-types/deposit.mjs.map +1 -1
- package/es/tx/builder/field-types/enumeration.d.ts +5 -0
- package/es/tx/builder/field-types/enumeration.mjs +21 -0
- package/es/tx/builder/field-types/enumeration.mjs.map +1 -0
- package/es/tx/builder/field-types/fee.d.ts +1 -9
- package/es/tx/builder/field-types/fee.mjs +9 -25
- package/es/tx/builder/field-types/fee.mjs.map +1 -1
- package/es/tx/builder/field-types/field.mjs +0 -2
- package/es/tx/builder/field-types/field.mjs.map +1 -1
- package/es/tx/builder/field-types/gas-limit.mjs +4 -9
- package/es/tx/builder/field-types/gas-limit.mjs.map +1 -1
- package/es/tx/builder/field-types/gas-price.d.ts +1 -2
- package/es/tx/builder/field-types/gas-price.mjs +3 -7
- package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
- package/es/tx/builder/field-types/index.d.ts +23 -11
- package/es/tx/builder/field-types/index.mjs +10 -3
- package/es/tx/builder/field-types/index.mjs.map +1 -1
- package/es/tx/builder/field-types/name-fee.d.ts +0 -1
- package/es/tx/builder/field-types/name-fee.mjs +3 -5
- package/es/tx/builder/field-types/name-fee.mjs.map +1 -1
- package/es/tx/builder/field-types/name-id.d.ts +1 -4
- package/es/tx/builder/field-types/name-id.mjs +4 -10
- package/es/tx/builder/field-types/name-id.mjs.map +1 -1
- package/es/tx/builder/field-types/name.mjs +0 -2
- package/es/tx/builder/field-types/name.mjs.map +1 -1
- package/es/tx/builder/field-types/pointers.d.ts +23 -0
- package/es/tx/builder/field-types/pointers.mjs +36 -0
- package/es/tx/builder/field-types/pointers.mjs.map +1 -0
- package/es/tx/builder/field-types/short-u-int.mjs +0 -2
- package/es/tx/builder/field-types/short-u-int.mjs.map +1 -1
- package/es/tx/builder/field-types/u-int.d.ts +1 -1
- package/es/tx/builder/field-types/u-int.mjs +3 -4
- package/es/tx/builder/field-types/u-int.mjs.map +1 -1
- package/es/tx/builder/helpers.d.ts +2 -32
- package/es/tx/builder/helpers.mjs +19 -71
- package/es/tx/builder/helpers.mjs.map +1 -1
- package/es/tx/builder/index.d.ts +1 -21
- package/es/tx/builder/index.mjs +29 -148
- package/es/tx/builder/index.mjs.map +1 -1
- package/es/tx/builder/schema.d.ts +336 -176
- package/es/tx/builder/schema.mjs +71 -78
- package/es/tx/builder/schema.mjs.map +1 -1
- package/es/tx/index.d.ts +3 -33
- package/es/tx/index.mjs +26 -43
- package/es/tx/index.mjs.map +1 -1
- package/es/tx/validator.d.ts +2 -2
- package/es/tx/validator.mjs +86 -59
- package/es/tx/validator.mjs.map +1 -1
- package/es/typings/{@aeternity__argon2-browser → @aeternity__aepp-calldata}/index.d.mjs +0 -0
- package/es/typings/@aeternity__aepp-calldata/index.d.mjs.map +1 -0
- package/es/utils/amount-formatter.mjs +4 -10
- package/es/utils/amount-formatter.mjs.map +1 -1
- package/es/utils/autorest.d.ts +1 -0
- package/es/utils/autorest.mjs +17 -19
- package/es/utils/autorest.mjs.map +1 -1
- package/es/utils/bignumber.mjs +4 -7
- package/es/utils/bignumber.mjs.map +1 -1
- package/es/utils/bytes.d.ts +0 -17
- package/es/utils/bytes.mjs +6 -35
- package/es/utils/bytes.mjs.map +1 -1
- package/es/utils/crypto.d.ts +15 -8
- package/es/utils/crypto.mjs +40 -40
- package/es/utils/crypto.mjs.map +1 -1
- package/es/utils/encoder-types.d.ts +28 -28
- package/es/utils/encoder-types.mjs +0 -1
- package/es/utils/encoder-types.mjs.map +1 -1
- package/es/utils/encoder.d.ts +0 -1
- package/es/utils/encoder.mjs +7 -15
- package/es/utils/encoder.mjs.map +1 -1
- package/es/utils/errors.d.ts +12 -6
- package/es/utils/errors.mjs +87 -163
- package/es/utils/errors.mjs.map +1 -1
- package/es/utils/hd-wallet.d.ts +27 -19
- package/es/utils/hd-wallet.mjs +42 -26
- package/es/utils/hd-wallet.mjs.map +1 -1
- package/es/utils/json-big.mjs +0 -8
- package/es/utils/json-big.mjs.map +1 -1
- package/es/utils/keystore.d.ts +2 -0
- package/es/utils/keystore.mjs +37 -36
- package/es/utils/keystore.mjs.map +1 -1
- package/es/utils/mptree.d.ts +1 -1
- package/es/utils/mptree.mjs +4 -26
- package/es/utils/mptree.mjs.map +1 -1
- package/es/utils/other.d.ts +3 -1
- package/es/utils/other.mjs +11 -7
- package/es/utils/other.mjs.map +1 -1
- package/es/utils/semver-satisfies.mjs +0 -3
- package/es/utils/semver-satisfies.mjs.map +1 -1
- package/es/utils/string.d.ts +0 -12
- package/es/utils/string.mjs +1 -21
- package/es/utils/string.mjs.map +1 -1
- package/package.json +87 -48
- package/src/AeSdk.ts +15 -11
- package/src/AeSdkAepp.ts +9 -7
- package/src/AeSdkBase.ts +28 -202
- package/src/AeSdkMethods.ts +170 -0
- package/src/AeSdkWallet.ts +16 -47
- package/src/Node.ts +11 -15
- package/src/account/Base.ts +29 -75
- package/src/account/Generalized.ts +98 -0
- package/src/account/Ledger.ts +131 -0
- package/src/account/LedgerFactory.ts +86 -0
- package/src/account/Memory.ts +46 -60
- package/src/account/Rpc.ts +17 -26
- package/src/aens.ts +10 -9
- package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +5 -4
- package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +3 -3
- package/src/aepp-wallet-communication/rpc/RpcClient.ts +2 -2
- package/src/aepp-wallet-communication/rpc/types.ts +11 -1
- package/src/aepp-wallet-communication/schema.ts +18 -18
- package/src/apis/compiler/code-model-v4.yaml +681 -888
- package/src/apis/compiler/compiler.ts +113 -154
- package/src/apis/compiler/models/index.ts +80 -140
- package/src/apis/compiler/models/mappers.ts +165 -183
- package/src/apis/compiler/models/parameters.ts +6 -12
- package/src/chain.ts +6 -3
- package/src/channel/Base.ts +327 -0
- package/src/channel/Contract.ts +487 -0
- package/src/channel/Spend.ts +403 -0
- package/src/channel/handlers.ts +154 -573
- package/src/channel/internal.ts +113 -142
- package/src/contract/{Compiler.ts → CompilerHttp.ts} +5 -5
- package/src/contract/Contract.ts +620 -0
- package/src/contract/ga.ts +18 -104
- package/src/index.ts +9 -8
- package/src/oracle.ts +7 -7
- package/src/spend.ts +5 -13
- package/src/tx/builder/constants.ts +1 -0
- package/src/tx/builder/field-types/address.ts +52 -0
- package/src/tx/builder/field-types/addresses.ts +18 -0
- package/src/tx/builder/field-types/coin-amount.ts +2 -8
- package/src/tx/builder/field-types/enumeration.ts +21 -0
- package/src/tx/builder/field-types/fee.ts +1 -3
- package/src/tx/builder/field-types/gas-limit.ts +2 -2
- package/src/tx/builder/field-types/gas-price.ts +0 -2
- package/src/tx/builder/field-types/index.ts +16 -6
- package/src/tx/builder/field-types/name-fee.ts +1 -1
- package/src/tx/builder/field-types/name-id.ts +7 -10
- package/src/tx/builder/field-types/pointers.ts +41 -0
- package/src/tx/builder/field-types/u-int.ts +3 -2
- package/src/tx/builder/helpers.ts +10 -60
- package/src/tx/builder/index.ts +6 -65
- package/src/tx/builder/schema.ts +89 -100
- package/src/tx/index.ts +19 -15
- package/src/tx/validator.ts +36 -18
- package/src/typings/@aeternity__aepp-calldata/index.d.ts +20 -0
- package/src/utils/autorest.ts +16 -1
- package/src/utils/bytes.ts +5 -33
- package/src/utils/crypto.ts +23 -16
- package/src/utils/encoder.ts +0 -1
- package/src/utils/errors.ts +18 -12
- package/src/utils/hd-wallet.ts +30 -9
- package/src/utils/keystore.ts +24 -21
- package/src/utils/other.ts +16 -1
- package/src/utils/string.ts +0 -20
- package/types-legacy/ts4.2/AeSdk.d.ts +41 -0
- package/types-legacy/ts4.2/AeSdkAepp.d.ts +71 -0
- package/types-legacy/ts4.2/AeSdkBase.d.ts +91 -0
- package/types-legacy/ts4.2/AeSdkMethods.d.ts +141 -0
- package/types-legacy/ts4.2/AeSdkWallet.d.ts +90 -0
- package/types-legacy/ts4.2/Node.d.ts +78 -0
- package/types-legacy/ts4.2/account/Base.d.ts +52 -0
- package/types-legacy/ts4.2/account/Generalized.d.ts +16 -0
- package/types-legacy/ts4.2/account/Ledger.d.ts +28 -0
- package/types-legacy/ts4.2/account/LedgerFactory.d.ts +39 -0
- package/types-legacy/ts4.2/account/Memory.d.ts +22 -0
- package/types-legacy/ts4.2/account/Rpc.d.ts +25 -0
- package/types-legacy/ts4.2/aens.d.ts +222 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/connection/Browser.d.ts +33 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserRuntime.d.ts +18 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/connection-proxy.d.ts +11 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/rpc/types.d.ts +83 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/schema.d.ts +133 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/wallet-detector.d.ts +25 -0
- package/types-legacy/ts4.2/apis/compiler/compiler.d.ts +86 -0
- package/types-legacy/ts4.2/apis/compiler/index.d.ts +2 -0
- package/types-legacy/ts4.2/apis/compiler/models/index.d.ts +195 -0
- package/types-legacy/ts4.2/apis/compiler/models/mappers.d.ts +23 -0
- package/types-legacy/ts4.2/apis/compiler/models/parameters.d.ts +12 -0
- package/types-legacy/ts4.2/apis/node/index.d.ts +2 -0
- package/types-legacy/ts4.2/apis/node/models/index.d.ts +1065 -0
- package/types-legacy/ts4.2/apis/node/models/mappers.d.ts +95 -0
- package/types-legacy/ts4.2/apis/node/models/parameters.d.ts +17 -0
- package/types-legacy/ts4.2/apis/node/node.d.ts +215 -0
- package/types-legacy/ts4.2/chain.d.ts +248 -0
- package/types-legacy/ts4.2/channel/Base.d.ts +194 -0
- package/types-legacy/ts4.2/channel/Contract.d.ts +247 -0
- package/types-legacy/ts4.2/channel/Spend.d.ts +217 -0
- package/types-legacy/ts4.2/channel/handlers.d.ts +21 -0
- package/types-legacy/ts4.2/channel/internal.d.ts +107 -0
- package/types-legacy/ts4.2/contract/CompilerHttp.d.ts +18 -0
- package/types-legacy/ts4.2/contract/Contract.d.ts +237 -0
- package/types-legacy/ts4.2/contract/ga.d.ts +43 -0
- package/types-legacy/ts4.2/globals.d.ts +16 -0
- package/types-legacy/ts4.2/index.d.ts +39 -0
- package/types-legacy/ts4.2/oracle.d.ts +161 -0
- package/types-legacy/ts4.2/spend.d.ts +62 -0
- package/types-legacy/ts4.2/tx/builder/constants.d.ts +71 -0
- package/types-legacy/ts4.2/tx/builder/field-types/address.d.ts +22 -0
- package/types-legacy/ts4.2/tx/builder/field-types/addresses.d.ts +6 -0
- package/types-legacy/ts4.2/tx/builder/field-types/coin-amount.d.ts +12 -0
- package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +14 -0
- package/types-legacy/ts4.2/tx/builder/field-types/enumeration.d.ts +5 -0
- package/types-legacy/ts4.2/tx/builder/field-types/fee.d.ts +17 -0
- package/types-legacy/ts4.2/tx/builder/field-types/field.d.ts +6 -0
- package/types-legacy/ts4.2/tx/builder/field-types/gas-limit.d.ts +12 -0
- package/types-legacy/ts4.2/tx/builder/field-types/gas-price.d.ts +7 -0
- package/types-legacy/ts4.2/tx/builder/field-types/index.d.ts +85 -0
- package/types-legacy/ts4.2/tx/builder/field-types/name-fee.d.ts +19 -0
- package/types-legacy/ts4.2/tx/builder/field-types/name-id.d.ts +11 -0
- package/types-legacy/ts4.2/tx/builder/field-types/name.d.ts +13 -0
- package/types-legacy/ts4.2/tx/builder/field-types/pointers.d.ts +26 -0
- package/types-legacy/ts4.2/tx/builder/field-types/short-u-int.d.ts +6 -0
- package/types-legacy/ts4.2/tx/builder/field-types/u-int.d.ts +8 -0
- package/types-legacy/ts4.2/tx/builder/helpers.d.ts +112 -0
- package/types-legacy/ts4.2/tx/builder/index.d.ts +68 -0
- package/types-legacy/ts4.2/tx/builder/schema.d.ts +2963 -0
- package/types-legacy/ts4.2/tx/index.d.ts +34 -0
- package/types-legacy/ts4.2/tx/validator.d.ts +20 -0
- package/types-legacy/ts4.2/utils/amount-formatter.d.ts +42 -0
- package/types-legacy/ts4.2/utils/autorest.d.ts +7 -0
- package/types-legacy/ts4.2/utils/bignumber.d.ts +13 -0
- package/types-legacy/ts4.2/utils/bytes.d.ts +9 -0
- package/types-legacy/ts4.2/utils/crypto.d.ts +95 -0
- package/types-legacy/ts4.2/utils/encoder-types.d.ts +61 -0
- package/types-legacy/ts4.2/utils/encoder.d.ts +24 -0
- package/types-legacy/ts4.2/utils/errors.d.ts +480 -0
- package/types-legacy/ts4.2/utils/hd-wallet.d.ts +65 -0
- package/types-legacy/ts4.2/utils/json-big.d.ts +5 -0
- package/types-legacy/ts4.2/utils/keystore.d.ts +53 -0
- package/types-legacy/ts4.2/utils/mptree.d.ts +32 -0
- package/types-legacy/ts4.2/utils/other.d.ts +31 -0
- package/types-legacy/ts4.2/utils/semver-satisfies.d.ts +1 -0
- package/types-legacy/ts4.2/utils/string.d.ts +12 -0
- package/types-legacy/ts4.5/AeSdk.d.ts +41 -0
- package/types-legacy/ts4.5/AeSdkAepp.d.ts +71 -0
- package/types-legacy/ts4.5/AeSdkBase.d.ts +91 -0
- package/types-legacy/ts4.5/AeSdkMethods.d.ts +141 -0
- package/types-legacy/ts4.5/AeSdkWallet.d.ts +90 -0
- package/types-legacy/ts4.5/Node.d.ts +78 -0
- package/types-legacy/ts4.5/account/Base.d.ts +52 -0
- package/types-legacy/ts4.5/account/Generalized.d.ts +16 -0
- package/types-legacy/ts4.5/account/Ledger.d.ts +28 -0
- package/types-legacy/ts4.5/account/LedgerFactory.d.ts +39 -0
- package/types-legacy/ts4.5/account/Memory.d.ts +22 -0
- package/types-legacy/ts4.5/account/Rpc.d.ts +25 -0
- package/types-legacy/ts4.5/aens.d.ts +222 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/connection/Browser.d.ts +33 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserRuntime.d.ts +18 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/connection-proxy.d.ts +11 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/rpc/types.d.ts +83 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/schema.d.ts +133 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/wallet-detector.d.ts +25 -0
- package/types-legacy/ts4.5/apis/compiler/compiler.d.ts +86 -0
- package/types-legacy/ts4.5/apis/compiler/index.d.ts +2 -0
- package/types-legacy/ts4.5/apis/compiler/models/index.d.ts +195 -0
- package/types-legacy/ts4.5/apis/compiler/models/mappers.d.ts +23 -0
- package/types-legacy/ts4.5/apis/compiler/models/parameters.d.ts +12 -0
- package/types-legacy/ts4.5/apis/node/index.d.ts +2 -0
- package/types-legacy/ts4.5/apis/node/models/index.d.ts +1065 -0
- package/types-legacy/ts4.5/apis/node/models/mappers.d.ts +95 -0
- package/types-legacy/ts4.5/apis/node/models/parameters.d.ts +17 -0
- package/types-legacy/ts4.5/apis/node/node.d.ts +215 -0
- package/types-legacy/ts4.5/chain.d.ts +248 -0
- package/types-legacy/ts4.5/channel/Base.d.ts +194 -0
- package/types-legacy/ts4.5/channel/Contract.d.ts +247 -0
- package/types-legacy/ts4.5/channel/Spend.d.ts +217 -0
- package/types-legacy/ts4.5/channel/handlers.d.ts +21 -0
- package/types-legacy/ts4.5/channel/internal.d.ts +107 -0
- package/types-legacy/ts4.5/contract/CompilerHttp.d.ts +18 -0
- package/types-legacy/ts4.5/contract/Contract.d.ts +237 -0
- package/types-legacy/ts4.5/contract/ga.d.ts +43 -0
- package/types-legacy/ts4.5/index.d.ts +38 -0
- package/types-legacy/ts4.5/oracle.d.ts +161 -0
- package/types-legacy/ts4.5/spend.d.ts +62 -0
- package/types-legacy/ts4.5/tx/builder/constants.d.ts +71 -0
- package/types-legacy/ts4.5/tx/builder/field-types/address.d.ts +22 -0
- package/types-legacy/ts4.5/tx/builder/field-types/addresses.d.ts +6 -0
- package/types-legacy/ts4.5/tx/builder/field-types/coin-amount.d.ts +12 -0
- package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +14 -0
- package/types-legacy/ts4.5/tx/builder/field-types/enumeration.d.ts +5 -0
- package/types-legacy/ts4.5/tx/builder/field-types/fee.d.ts +17 -0
- package/types-legacy/ts4.5/tx/builder/field-types/field.d.ts +6 -0
- package/types-legacy/ts4.5/tx/builder/field-types/gas-limit.d.ts +12 -0
- package/types-legacy/ts4.5/tx/builder/field-types/gas-price.d.ts +7 -0
- package/types-legacy/ts4.5/tx/builder/field-types/index.d.ts +85 -0
- package/types-legacy/ts4.5/tx/builder/field-types/name-fee.d.ts +19 -0
- package/types-legacy/ts4.5/tx/builder/field-types/name-id.d.ts +11 -0
- package/types-legacy/ts4.5/tx/builder/field-types/name.d.ts +13 -0
- package/types-legacy/ts4.5/tx/builder/field-types/pointers.d.ts +26 -0
- package/types-legacy/ts4.5/tx/builder/field-types/short-u-int.d.ts +6 -0
- package/types-legacy/ts4.5/tx/builder/field-types/u-int.d.ts +8 -0
- package/types-legacy/ts4.5/tx/builder/helpers.d.ts +112 -0
- package/types-legacy/ts4.5/tx/builder/index.d.ts +68 -0
- package/types-legacy/ts4.5/tx/builder/schema.d.ts +2963 -0
- package/types-legacy/ts4.5/tx/index.d.ts +34 -0
- package/types-legacy/ts4.5/tx/validator.d.ts +20 -0
- package/types-legacy/ts4.5/utils/amount-formatter.d.ts +42 -0
- package/types-legacy/ts4.5/utils/autorest.d.ts +7 -0
- package/types-legacy/ts4.5/utils/bignumber.d.ts +13 -0
- package/types-legacy/ts4.5/utils/bytes.d.ts +9 -0
- package/types-legacy/ts4.5/utils/crypto.d.ts +95 -0
- package/types-legacy/ts4.5/utils/encoder-types.d.ts +61 -0
- package/types-legacy/ts4.5/utils/encoder.d.ts +24 -0
- package/types-legacy/ts4.5/utils/errors.d.ts +480 -0
- package/types-legacy/ts4.5/utils/hd-wallet.d.ts +65 -0
- package/types-legacy/ts4.5/utils/json-big.d.ts +5 -0
- package/types-legacy/ts4.5/utils/keystore.d.ts +53 -0
- package/types-legacy/ts4.5/utils/mptree.d.ts +32 -0
- package/types-legacy/ts4.5/utils/other.d.ts +31 -0
- package/types-legacy/ts4.5/utils/semver-satisfies.d.ts +1 -0
- package/types-legacy/ts4.5/utils/string.d.ts +12 -0
- package/es/channel/index.d.ts +0 -625
- package/es/channel/index.mjs +0 -975
- package/es/channel/index.mjs.map +0 -1
- package/es/contract/Compiler.mjs.map +0 -1
- package/es/contract/aci.d.ts +0 -127
- package/es/contract/aci.mjs +0 -509
- package/es/contract/aci.mjs.map +0 -1
- package/es/contract/methods.d.ts +0 -71
- package/es/contract/methods.mjs +0 -104
- package/es/contract/methods.mjs.map +0 -1
- package/es/deprecated/index.d.ts +0 -143
- package/es/deprecated/index.mjs +0 -162
- package/es/deprecated/index.mjs.map +0 -1
- package/es/deprecated/methods.d.ts +0 -18
- package/es/deprecated/methods.mjs +0 -26
- package/es/deprecated/methods.mjs.map +0 -1
- package/es/tx/builder/address.d.ts +0 -25
- package/es/tx/builder/address.mjs +0 -45
- package/es/tx/builder/address.mjs.map +0 -1
- package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +0 -1
- package/src/channel/index.ts +0 -1025
- package/src/contract/aci.ts +0 -538
- package/src/contract/methods.ts +0 -123
- package/src/deprecated/index.ts +0 -172
- package/src/deprecated/methods.ts +0 -25
- package/src/tx/builder/address.ts +0 -50
- package/src/typings/@aeternity__argon2-browser/index.d.ts +0 -3
package/es/tx/builder/index.mjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import _buffer from "buffer";
|
|
2
|
-
import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
|
|
3
2
|
const {
|
|
4
3
|
Buffer: _Buffer
|
|
5
4
|
} = _buffer;
|
|
@@ -13,20 +12,17 @@ import { AE_AMOUNT_FORMATS } from "../../utils/amount-formatter.mjs";
|
|
|
13
12
|
import { hash } from "../../utils/crypto.mjs";
|
|
14
13
|
import { FIELD_TYPES, TX_SCHEMA } from "./schema.mjs";
|
|
15
14
|
import { Tag } from "./constants.mjs";
|
|
16
|
-
import { buildContractId,
|
|
17
|
-
import { readId, writeId } from "./address.mjs";
|
|
15
|
+
import { buildContractId, readInt } from "./helpers.mjs";
|
|
18
16
|
import { toBytes } from "../../utils/bytes.mjs";
|
|
19
17
|
import MPTree from "../../utils/mptree.mjs";
|
|
20
18
|
import { ArgumentError, DecodeError, InvalidTxParamsError, SchemaNotFoundError } from "../../utils/errors.mjs";
|
|
21
19
|
import { isKeyOfObject } from "../../utils/other.mjs";
|
|
22
|
-
|
|
23
20
|
/**
|
|
24
21
|
* JavaScript-based Transaction builder
|
|
25
22
|
*/
|
|
26
23
|
// SERIALIZE AND DESERIALIZE PART
|
|
27
24
|
function deserializeField(value, type, prefix) {
|
|
28
25
|
if (value == null) return '';
|
|
29
|
-
|
|
30
26
|
switch (type) {
|
|
31
27
|
case FIELD_TYPES.ctVersion:
|
|
32
28
|
{
|
|
@@ -36,79 +32,39 @@ function deserializeField(value, type, prefix) {
|
|
|
36
32
|
abiVersion: readInt(_Buffer.from([abi]))
|
|
37
33
|
};
|
|
38
34
|
}
|
|
39
|
-
|
|
40
|
-
case FIELD_TYPES.abiVersion:
|
|
41
|
-
case FIELD_TYPES.ttlType:
|
|
42
|
-
return readInt(value);
|
|
43
|
-
|
|
44
|
-
case FIELD_TYPES.id:
|
|
45
|
-
return readId(value);
|
|
46
|
-
|
|
47
|
-
case FIELD_TYPES.ids:
|
|
48
|
-
return value.map(readId);
|
|
49
|
-
|
|
50
35
|
case FIELD_TYPES.bool:
|
|
51
36
|
return value[0] === 1;
|
|
52
|
-
|
|
53
37
|
case FIELD_TYPES.binary:
|
|
54
38
|
return encode(value, prefix);
|
|
55
|
-
|
|
56
39
|
case FIELD_TYPES.stateTree:
|
|
57
40
|
return encode(value, Encoding.StateTrees);
|
|
58
|
-
|
|
59
41
|
case FIELD_TYPES.string:
|
|
60
42
|
return value.toString();
|
|
61
|
-
|
|
62
43
|
case FIELD_TYPES.payload:
|
|
63
44
|
return encode(value, Encoding.Bytearray);
|
|
64
|
-
|
|
65
|
-
case FIELD_TYPES.pointers:
|
|
66
|
-
return readPointers(value);
|
|
67
|
-
|
|
68
45
|
case FIELD_TYPES.rlpBinary:
|
|
69
46
|
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
70
47
|
return unpackTx(encode(value, Encoding.Transaction));
|
|
71
|
-
|
|
72
48
|
case FIELD_TYPES.rlpBinaries:
|
|
73
49
|
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
74
50
|
return value.map(v => unpackTx(encode(v, Encoding.Transaction)));
|
|
75
|
-
|
|
76
51
|
case FIELD_TYPES.rawBinary:
|
|
77
52
|
return value;
|
|
78
|
-
|
|
79
53
|
case FIELD_TYPES.hex:
|
|
80
54
|
return value.toString('hex');
|
|
81
|
-
|
|
82
55
|
case FIELD_TYPES.offChainUpdates:
|
|
83
56
|
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
84
57
|
return value.map(v => unpackTx(encode(v, Encoding.Transaction)));
|
|
85
|
-
|
|
86
58
|
case FIELD_TYPES.callStack:
|
|
87
59
|
// TODO: fix this
|
|
88
60
|
return [readInt(value)];
|
|
89
|
-
|
|
90
61
|
case FIELD_TYPES.mptrees:
|
|
91
62
|
return value.map(t => new MPTree(t));
|
|
92
|
-
|
|
93
|
-
case FIELD_TYPES.callReturnType:
|
|
94
|
-
switch (readInt(value)) {
|
|
95
|
-
case '0':
|
|
96
|
-
return 'ok';
|
|
97
|
-
|
|
98
|
-
case '1':
|
|
99
|
-
return 'error';
|
|
100
|
-
|
|
101
|
-
case '2':
|
|
102
|
-
return 'revert';
|
|
103
|
-
|
|
104
|
-
default:
|
|
105
|
-
return value;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
63
|
case FIELD_TYPES.sophiaCodeTypeInfo:
|
|
109
64
|
return value.reduce((acc, _ref) => {
|
|
110
65
|
let [funHash, fnName, argType, outType] = _ref;
|
|
111
|
-
return {
|
|
66
|
+
return {
|
|
67
|
+
...acc,
|
|
112
68
|
[fnName.toString()]: {
|
|
113
69
|
funHash,
|
|
114
70
|
argType,
|
|
@@ -116,126 +72,55 @@ function deserializeField(value, type, prefix) {
|
|
|
116
72
|
}
|
|
117
73
|
};
|
|
118
74
|
}, {});
|
|
119
|
-
|
|
120
75
|
default:
|
|
121
76
|
if (typeof type === 'number') return value;
|
|
122
77
|
return type.deserialize(value);
|
|
123
78
|
}
|
|
124
79
|
}
|
|
125
|
-
|
|
126
80
|
function serializeField(value, type, params) {
|
|
127
81
|
var _value$rlpEncoded;
|
|
128
|
-
|
|
129
82
|
switch (type) {
|
|
130
|
-
case FIELD_TYPES.abiVersion:
|
|
131
|
-
case FIELD_TYPES.ttlType:
|
|
132
|
-
return writeInt(value);
|
|
133
|
-
|
|
134
|
-
case FIELD_TYPES.id:
|
|
135
|
-
return writeId(value);
|
|
136
|
-
|
|
137
|
-
case FIELD_TYPES.ids:
|
|
138
|
-
return value.map(writeId);
|
|
139
|
-
|
|
140
83
|
case FIELD_TYPES.bool:
|
|
141
84
|
return _Buffer.from([value === true ? 1 : 0]);
|
|
142
|
-
|
|
143
85
|
case FIELD_TYPES.binary:
|
|
144
86
|
return decode(value);
|
|
145
|
-
|
|
146
87
|
case FIELD_TYPES.stateTree:
|
|
147
88
|
return decode(value);
|
|
148
|
-
|
|
149
89
|
case FIELD_TYPES.hex:
|
|
150
90
|
return _Buffer.from(value, 'hex');
|
|
151
|
-
|
|
152
91
|
case FIELD_TYPES.signatures:
|
|
153
92
|
return value.map(_Buffer.from);
|
|
154
|
-
|
|
155
93
|
case FIELD_TYPES.payload:
|
|
156
94
|
return typeof value === 'string' && value.split('_')[0] === 'ba' ? decode(value) : toBytes(value);
|
|
157
|
-
|
|
158
95
|
case FIELD_TYPES.string:
|
|
159
96
|
return toBytes(value);
|
|
160
|
-
|
|
161
|
-
case FIELD_TYPES.pointers:
|
|
162
|
-
return buildPointers(value);
|
|
163
|
-
|
|
164
97
|
case FIELD_TYPES.rlpBinary:
|
|
165
98
|
return (_value$rlpEncoded = value.rlpEncoded) !== null && _value$rlpEncoded !== void 0 ? _value$rlpEncoded : value;
|
|
166
|
-
|
|
167
99
|
case FIELD_TYPES.mptrees:
|
|
168
100
|
return value.map(t => t.serialize());
|
|
169
|
-
|
|
170
101
|
case FIELD_TYPES.ctVersion:
|
|
171
102
|
return _Buffer.from([...toBytes(value.vmVersion), 0, ...toBytes(value.abiVersion)]);
|
|
172
|
-
|
|
173
|
-
case FIELD_TYPES.callReturnType:
|
|
174
|
-
switch (value) {
|
|
175
|
-
case 'ok':
|
|
176
|
-
return writeInt(0);
|
|
177
|
-
|
|
178
|
-
case 'error':
|
|
179
|
-
return writeInt(1);
|
|
180
|
-
|
|
181
|
-
case 'revert':
|
|
182
|
-
return writeInt(2);
|
|
183
|
-
|
|
184
|
-
default:
|
|
185
|
-
return value;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
103
|
default:
|
|
189
|
-
if (typeof type === 'number') return value;
|
|
190
|
-
|
|
104
|
+
if (typeof type === 'number') return value;
|
|
191
105
|
return type.serialize(value, params);
|
|
192
106
|
}
|
|
193
107
|
}
|
|
194
|
-
|
|
195
|
-
function validateField(value, type, prefix) {
|
|
108
|
+
function validateField(value, type) {
|
|
196
109
|
// All fields are required
|
|
197
|
-
if (value == null) return 'Field is required';
|
|
110
|
+
if (value == null) return 'Field is required';
|
|
198
111
|
|
|
112
|
+
// Validate type of value
|
|
199
113
|
switch (type) {
|
|
200
|
-
case FIELD_TYPES.id:
|
|
201
|
-
{
|
|
202
|
-
const prefixes = Array.isArray(prefix) ? prefix : [prefix];
|
|
203
|
-
|
|
204
|
-
if (!_includesInstanceProperty(prefixes).call(prefixes, value.split('_')[0])) {
|
|
205
|
-
if (prefix == null) {
|
|
206
|
-
return `'${String(value)}' prefix doesn't exist'`;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
return `'${String(value)}' prefix doesn't match expected prefix '${prefix.toString()}'`;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
return undefined;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
114
|
case FIELD_TYPES.ctVersion:
|
|
216
115
|
if (!(Boolean(value.abiVersion) && Boolean(value.vmVersion))) {
|
|
217
116
|
return 'Value must be an object with "vmVersion" and "abiVersion" fields';
|
|
218
117
|
}
|
|
219
|
-
|
|
220
|
-
return undefined;
|
|
221
|
-
|
|
222
|
-
case FIELD_TYPES.pointers:
|
|
223
|
-
if (!Array.isArray(value)) return 'Value must be of type Array';
|
|
224
|
-
|
|
225
|
-
if (value.some(p => !(Boolean(p.key) && Boolean(p.id)))) {
|
|
226
|
-
return 'Value must contains only object\'s like \'{key: "account_pubkey", id: "ak_lkamsflkalsdalksdlasdlasdlamd"}\'';
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
if (value.length > 32) {
|
|
230
|
-
return `Expected 32 pointers or less, got ${value.length} instead`;
|
|
231
|
-
}
|
|
232
|
-
|
|
233
118
|
return undefined;
|
|
234
|
-
|
|
235
119
|
default:
|
|
236
120
|
return undefined;
|
|
237
121
|
}
|
|
238
122
|
}
|
|
123
|
+
|
|
239
124
|
/**
|
|
240
125
|
* Validate transaction params
|
|
241
126
|
* @category transaction builder
|
|
@@ -244,26 +129,25 @@ function validateField(value, type, prefix) {
|
|
|
244
129
|
* @param excludeKeys - Array of keys to exclude for validation
|
|
245
130
|
* @returns Object with validation errors
|
|
246
131
|
*/
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
export function validateParams(params, schema, _ref2) {
|
|
132
|
+
function validateParams(params, schema, _ref2) {
|
|
250
133
|
let {
|
|
251
134
|
excludeKeys = []
|
|
252
135
|
} = _ref2;
|
|
253
|
-
|
|
136
|
+
const optionalFields = ['payload', 'nameFee', 'deposit', 'gasPrice', 'fee', 'gasLimit', 'amount'];
|
|
137
|
+
return Object.fromEntries(schema
|
|
138
|
+
// TODO: allow optional keys in schema
|
|
254
139
|
.filter(_ref3 => {
|
|
255
|
-
var _context;
|
|
256
|
-
|
|
257
140
|
let [key] = _ref3;
|
|
258
|
-
return !
|
|
141
|
+
return !excludeKeys.includes(key) && !optionalFields.includes(key);
|
|
259
142
|
}).map(_ref4 => {
|
|
260
|
-
let [key, type
|
|
261
|
-
return [key, validateField(params[key], type
|
|
143
|
+
let [key, type] = _ref4;
|
|
144
|
+
return [key, validateField(params[key], type)];
|
|
262
145
|
}).filter(_ref5 => {
|
|
263
146
|
let [, message] = _ref5;
|
|
264
147
|
return message;
|
|
265
148
|
}));
|
|
266
149
|
}
|
|
150
|
+
|
|
267
151
|
/**
|
|
268
152
|
* Unpack binary transaction
|
|
269
153
|
* @category transaction builder
|
|
@@ -271,8 +155,7 @@ export function validateParams(params, schema, _ref2) {
|
|
|
271
155
|
* @param schema - Transaction schema
|
|
272
156
|
* @returns Object with transaction field's
|
|
273
157
|
*/
|
|
274
|
-
|
|
275
|
-
export function unpackRawTx(binary, schema) {
|
|
158
|
+
function unpackRawTx(binary, schema) {
|
|
276
159
|
return schema.reduce((acc, _ref6, index) => {
|
|
277
160
|
let [key, fieldType, prefix] = _ref6;
|
|
278
161
|
return Object.assign(acc, {
|
|
@@ -280,6 +163,7 @@ export function unpackRawTx(binary, schema) {
|
|
|
280
163
|
});
|
|
281
164
|
}, {});
|
|
282
165
|
}
|
|
166
|
+
|
|
283
167
|
/**
|
|
284
168
|
* @category transaction builder
|
|
285
169
|
*/
|
|
@@ -301,7 +185,6 @@ export function unpackRawTx(binary, schema) {
|
|
|
301
185
|
*/
|
|
302
186
|
export function buildTx(_params, type) {
|
|
303
187
|
var _vsn;
|
|
304
|
-
|
|
305
188
|
let {
|
|
306
189
|
excludeKeys = [],
|
|
307
190
|
prefix = Encoding.Transaction,
|
|
@@ -318,22 +201,23 @@ export function buildTx(_params, type) {
|
|
|
318
201
|
params.denomination = denomination;
|
|
319
202
|
const filteredSchema = schema.filter(_ref7 => {
|
|
320
203
|
let [key] = _ref7;
|
|
321
|
-
return !
|
|
322
|
-
});
|
|
204
|
+
return !excludeKeys.includes(key);
|
|
205
|
+
});
|
|
323
206
|
|
|
207
|
+
// Validation
|
|
324
208
|
const valid = validateParams(params, schema, {
|
|
325
209
|
excludeKeys
|
|
326
210
|
});
|
|
327
|
-
|
|
328
211
|
if (Object.keys(valid).length > 0) {
|
|
329
212
|
throw new InvalidTxParamsError(`Transaction build error. ${JSON.stringify(valid)}`);
|
|
330
213
|
}
|
|
331
|
-
|
|
332
214
|
const binary = filteredSchema.map(_ref8 => {
|
|
333
215
|
let [key, fieldType] = _ref8;
|
|
334
|
-
return serializeField(params[key], fieldType, {
|
|
216
|
+
return serializeField(params[key], fieldType, {
|
|
217
|
+
...params,
|
|
335
218
|
txType: type,
|
|
336
|
-
rebuildTx: overrideParams => buildTx({
|
|
219
|
+
rebuildTx: overrideParams => buildTx({
|
|
220
|
+
...params,
|
|
337
221
|
...overrideParams
|
|
338
222
|
}, type, {
|
|
339
223
|
excludeKeys,
|
|
@@ -352,6 +236,7 @@ export function buildTx(_params, type) {
|
|
|
352
236
|
txObject: unpackRawTx(binary, schema)
|
|
353
237
|
};
|
|
354
238
|
}
|
|
239
|
+
|
|
355
240
|
/**
|
|
356
241
|
* @category transaction builder
|
|
357
242
|
*/
|
|
@@ -380,36 +265,32 @@ export function unpackTx(encodedTx, txType) {
|
|
|
380
265
|
rlpEncoded
|
|
381
266
|
};
|
|
382
267
|
}
|
|
268
|
+
|
|
383
269
|
/**
|
|
384
270
|
* Build a transaction hash
|
|
385
271
|
* @category transaction builder
|
|
386
272
|
* @param rawTx - base64 or rlp encoded transaction
|
|
387
273
|
* @returns Transaction hash
|
|
388
274
|
*/
|
|
389
|
-
|
|
390
275
|
export function buildTxHash(rawTx) {
|
|
391
276
|
const data = typeof rawTx === 'string' && rawTx.startsWith('tx_') ? decode(rawTx) : rawTx;
|
|
392
277
|
return encode(hash(data), Encoding.TxHash);
|
|
393
278
|
}
|
|
279
|
+
|
|
394
280
|
/**
|
|
395
281
|
* Build a contract public key by contractCreateTx or gaAttach
|
|
396
282
|
* @category contract
|
|
397
283
|
* @param contractTx - Transaction
|
|
398
284
|
* @returns Contract public key
|
|
399
285
|
*/
|
|
400
|
-
|
|
401
286
|
export function buildContractIdByContractTx(contractTx) {
|
|
402
|
-
var _context2;
|
|
403
|
-
|
|
404
287
|
const {
|
|
405
288
|
txType,
|
|
406
289
|
tx
|
|
407
290
|
} = unpackTx(contractTx);
|
|
408
|
-
|
|
409
|
-
if (!_includesInstanceProperty(_context2 = [Tag.ContractCreateTx, Tag.GaAttachTx]).call(_context2, txType)) {
|
|
291
|
+
if (![Tag.ContractCreateTx, Tag.GaAttachTx].includes(txType)) {
|
|
410
292
|
throw new ArgumentError('contractCreateTx', 'a contractCreateTx or gaAttach', txType);
|
|
411
293
|
}
|
|
412
|
-
|
|
413
294
|
return buildContractId(tx.ownerId, +tx.nonce);
|
|
414
295
|
}
|
|
415
296
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["decode","encode","Encoding","AE_AMOUNT_FORMATS","hash","FIELD_TYPES","TX_SCHEMA","Tag","buildContractId","buildPointers","readInt","readPointers","writeInt","readId","writeId","toBytes","MPTree","ArgumentError","DecodeError","InvalidTxParamsError","SchemaNotFoundError","isKeyOfObject","deserializeField","value","type","prefix","ctVersion","vm","abi","vmVersion","from","abiVersion","ttlType","id","ids","map","bool","binary","stateTree","StateTrees","string","toString","payload","Bytearray","pointers","rlpBinary","unpackTx","Transaction","rlpBinaries","v","rawBinary","hex","offChainUpdates","callStack","mptrees","t","callReturnType","sophiaCodeTypeInfo","reduce","acc","funHash","fnName","argType","outType","deserialize","serializeField","params","signatures","split","rlpEncoded","serialize","validateField","prefixes","Array","isArray","String","undefined","Boolean","some","p","key","length","validateParams","schema","excludeKeys","Object","fromEntries","filter","message","unpackRawTx","index","fieldType","assign","buildTx","_params","vsn","denomination","AETTOS","schemas","Math","max","keys","a","VSN","tag","filteredSchema","valid","JSON","stringify","txType","rebuildTx","overrideParams","e","rlpEncode","tx","txObject","encodedTx","rlpDecode","objId","buildTxHash","rawTx","data","startsWith","TxHash","buildContractIdByContractTx","contractTx","ContractCreateTx","GaAttachTx","ownerId","nonce"],"sources":["../../../src/tx/builder/index.ts"],"sourcesContent":["import { decode as rlpDecode, encode as rlpEncode, NestedUint8Array } from 'rlp';\nimport {\n decode, encode, Encoded, Encoding,\n} from '../../utils/encoder';\nimport { AE_AMOUNT_FORMATS } from '../../utils/amount-formatter';\nimport { hash } from '../../utils/crypto';\nimport { Field } from './field-types';\nimport {\n FIELD_TYPES,\n RawTxObject,\n TX_SCHEMA,\n TxField,\n TxParamsCommon,\n TxSchema,\n TxTypeSchemas,\n} from './schema';\nimport { Tag } from './constants';\nimport {\n buildContractId, buildPointers, readInt, readPointers, writeInt,\n} from './helpers';\nimport { readId, writeId } from './address';\nimport { toBytes } from '../../utils/bytes';\nimport MPTree, { MPTreeBinary } from '../../utils/mptree';\nimport {\n ArgumentError,\n DecodeError,\n InvalidTxParamsError,\n SchemaNotFoundError,\n} from '../../utils/errors';\nimport { isKeyOfObject } from '../../utils/other';\nimport { NamePointer } from '../../apis/node';\n\n/**\n * JavaScript-based Transaction builder\n */\n\n// SERIALIZE AND DESERIALIZE PART\nfunction deserializeField(\n value: any,\n type: FIELD_TYPES | Field,\n prefix?: Encoding | Encoding[],\n): any {\n if (value == null) return '';\n switch (type) {\n case FIELD_TYPES.ctVersion: {\n const [vm, , abi] = value;\n return {\n vmVersion: readInt(Buffer.from([vm])),\n abiVersion: readInt(Buffer.from([abi])),\n };\n }\n case FIELD_TYPES.abiVersion:\n case FIELD_TYPES.ttlType:\n return readInt(value);\n case FIELD_TYPES.id:\n return readId(value);\n case FIELD_TYPES.ids:\n return value.map(readId);\n case FIELD_TYPES.bool:\n return value[0] === 1;\n case FIELD_TYPES.binary:\n return encode(value, prefix as Encoding);\n case FIELD_TYPES.stateTree:\n return encode(value, Encoding.StateTrees);\n case FIELD_TYPES.string:\n return value.toString();\n case FIELD_TYPES.payload:\n return encode(value, Encoding.Bytearray);\n case FIELD_TYPES.pointers:\n return readPointers(value);\n case FIELD_TYPES.rlpBinary:\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return unpackTx(encode(value, Encoding.Transaction));\n case FIELD_TYPES.rlpBinaries:\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return value.map((v: Buffer) => unpackTx(encode(v, Encoding.Transaction)));\n case FIELD_TYPES.rawBinary:\n return value;\n case FIELD_TYPES.hex:\n return value.toString('hex');\n case FIELD_TYPES.offChainUpdates:\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return value.map((v: Buffer) => unpackTx(encode(v, Encoding.Transaction)));\n case FIELD_TYPES.callStack:\n // TODO: fix this\n return [readInt(value)];\n case FIELD_TYPES.mptrees:\n return value.map((t: MPTreeBinary) => new MPTree(t));\n case FIELD_TYPES.callReturnType:\n switch (readInt(value)) {\n case '0':\n return 'ok';\n case '1':\n return 'error';\n case '2':\n return 'revert';\n default:\n return value;\n }\n case FIELD_TYPES.sophiaCodeTypeInfo:\n return value.reduce(\n (acc: object, [funHash, fnName, argType, outType]: [\n funHash: Buffer,\n fnName: string,\n argType: string,\n outType: string,\n ]) => ({\n ...acc,\n [fnName.toString()]: { funHash, argType, outType },\n }),\n {},\n );\n default:\n if (typeof type === 'number') return value;\n return type.deserialize(value);\n }\n}\n\nfunction serializeField(value: any, type: FIELD_TYPES | Field, params: any): any {\n switch (type) {\n case FIELD_TYPES.abiVersion:\n case FIELD_TYPES.ttlType:\n return writeInt(value);\n case FIELD_TYPES.id:\n return writeId(value);\n case FIELD_TYPES.ids:\n return value.map(writeId);\n case FIELD_TYPES.bool:\n return Buffer.from([(value === true) ? 1 : 0]);\n case FIELD_TYPES.binary:\n return decode(value);\n case FIELD_TYPES.stateTree:\n return decode(value);\n case FIELD_TYPES.hex:\n return Buffer.from(value, 'hex');\n case FIELD_TYPES.signatures:\n return value.map(Buffer.from);\n case FIELD_TYPES.payload:\n return typeof value === 'string' && value.split('_')[0] === 'ba'\n ? decode(value as Encoded.Bytearray)\n : toBytes(value);\n case FIELD_TYPES.string:\n return toBytes(value);\n case FIELD_TYPES.pointers:\n return buildPointers(value);\n case FIELD_TYPES.rlpBinary:\n return value.rlpEncoded ?? value;\n case FIELD_TYPES.mptrees:\n return value.map((t: MPTree) => t.serialize());\n case FIELD_TYPES.ctVersion:\n return Buffer.from([...toBytes(value.vmVersion), 0, ...toBytes(value.abiVersion)]);\n case FIELD_TYPES.callReturnType:\n switch (value) {\n case 'ok': return writeInt(0);\n case 'error': return writeInt(1);\n case 'revert': return writeInt(2);\n default: return value;\n }\n default:\n if (typeof type === 'number') return value;\n // @ts-expect-error will be solved after removing the whole serializeField function\n return type.serialize(value, params);\n }\n}\n\nfunction validateField(\n value: any,\n type: FIELD_TYPES | Field,\n prefix?: Encoding | Encoding[],\n): string | undefined {\n // All fields are required\n if (value == null) return 'Field is required';\n\n // Validate type of value\n switch (type) {\n case FIELD_TYPES.id: {\n const prefixes = Array.isArray(prefix) ? prefix : [prefix];\n if (!prefixes.includes(value.split('_')[0])) {\n if (prefix == null) { return `'${String(value)}' prefix doesn't exist'`; }\n return `'${String(value)}' prefix doesn't match expected prefix '${prefix.toString()}'`;\n }\n return undefined;\n }\n case FIELD_TYPES.ctVersion:\n if (!(Boolean(value.abiVersion) && Boolean(value.vmVersion))) {\n return 'Value must be an object with \"vmVersion\" and \"abiVersion\" fields';\n }\n return undefined;\n case FIELD_TYPES.pointers:\n if (!Array.isArray(value)) return 'Value must be of type Array';\n if (value.some((p: NamePointer) => !(Boolean(p.key) && Boolean(p.id)))) {\n return 'Value must contains only object\\'s like \\'{key: \"account_pubkey\", id: \"ak_lkamsflkalsdalksdlasdlasdlamd\"}\\'';\n }\n if (value.length > 32) {\n return `Expected 32 pointers or less, got ${value.length} instead`;\n }\n return undefined;\n default:\n return undefined;\n }\n}\n\n/**\n * Validate transaction params\n * @category transaction builder\n * @param params - Object with tx params\n * @param schema - Transaction schema\n * @param excludeKeys - Array of keys to exclude for validation\n * @returns Object with validation errors\n */\nexport function validateParams(\n params: any,\n schema: TxField[],\n { excludeKeys = [] }: { excludeKeys: string[] },\n): object {\n return Object.fromEntries(\n schema\n // TODO: allow optional keys in schema\n .filter(([key]) => !excludeKeys.includes(key)\n && !['payload', 'nameFee', 'deposit', 'gasPrice', 'fee', 'gasLimit'].includes(key))\n .map(([key, type, prefix]) => [key, validateField(params[key], type, prefix)])\n .filter(([, message]) => message),\n );\n}\n\n/**\n * Unpack binary transaction\n * @category transaction builder\n * @param binary - Array with binary transaction field's\n * @param schema - Transaction schema\n * @returns Object with transaction field's\n */\nexport function unpackRawTx<Tx extends TxSchema>(\n binary: Uint8Array | NestedUint8Array,\n schema: TxField[],\n): RawTxObject<Tx> {\n return schema\n .reduce<any>(\n (\n acc,\n [key, fieldType, prefix],\n index,\n ) => Object.assign(acc, { [key]: deserializeField(binary[index], fieldType, prefix) }),\n {},\n );\n}\n\n/**\n * @category transaction builder\n */\nexport interface BuiltTx<Tx extends TxSchema, Prefix extends Encoding> {\n tx: Encoded.Generic<Prefix>;\n rlpEncoded: Uint8Array;\n binary: Uint8Array;\n txObject: RawTxObject<Tx>;\n}\n\n/**\n * Build transaction hash\n * @category transaction builder\n * @param _params - Object with tx params\n * @param type - Transaction type\n * @param options - options\n * @param options.excludeKeys - Array of keys to exclude for validation and build\n * @param options.denomination - Denomination of amounts\n * @param options.prefix - Prefix of transaction\n * @throws {@link InvalidTxParamsError}\n * @returns object\n * @returns object.tx Base64Check transaction hash with 'tx_' prefix\n * @returns object.rlpEncoded rlp encoded transaction\n * @returns object.binary binary transaction\n */\nexport function buildTx<TxType extends Tag, Prefix>(\n _params: Omit<TxTypeSchemas[TxType], 'tag' | 'VSN'> & { VSN?: number },\n type: TxType,\n {\n excludeKeys = [],\n prefix = Encoding.Transaction,\n vsn,\n denomination = AE_AMOUNT_FORMATS.AETTOS,\n }: {\n excludeKeys?: string[];\n prefix?: Encoding;\n vsn?: number;\n denomination?: AE_AMOUNT_FORMATS;\n } = {},\n): BuiltTx<TxSchema, Prefix extends Encoding ? Prefix : Encoding.Transaction> {\n const schemas = TX_SCHEMA[type];\n\n vsn ??= Math.max(...Object.keys(schemas).map((a) => +a));\n if (!isKeyOfObject(vsn, schemas)) throw new SchemaNotFoundError('serialization', Tag[type], vsn);\n\n const schema = schemas[vsn] as unknown as TxField[];\n\n const params = _params as TxParamsCommon & { onNode: Node; denomination?: AE_AMOUNT_FORMATS };\n params.VSN = vsn;\n params.tag = type;\n params.denomination = denomination;\n const filteredSchema = schema.filter(([key]) => !excludeKeys.includes(key));\n\n // Validation\n const valid = validateParams(params, schema, { excludeKeys });\n if (Object.keys(valid).length > 0) {\n throw new InvalidTxParamsError(`Transaction build error. ${JSON.stringify(valid)}`);\n }\n\n const binary = filteredSchema\n .map(([key, fieldType]: [keyof TxSchema, FIELD_TYPES, Encoding]) => (\n serializeField(\n params[key],\n fieldType,\n {\n ...params,\n txType: type,\n rebuildTx: (overrideParams: any) => buildTx(\n { ...params, ...overrideParams },\n type,\n {\n excludeKeys, prefix: Encoding.Transaction, vsn, denomination,\n },\n ),\n },\n )\n ))\n .filter((e) => e !== undefined);\n\n const rlpEncoded = rlpEncode(binary);\n const tx = encode(rlpEncoded, prefix);\n return {\n tx,\n rlpEncoded,\n binary,\n txObject: unpackRawTx<TxTypeSchemas[Tag]>(binary, schema),\n } as any;\n}\n\n/**\n * @category transaction builder\n */\nexport interface TxUnpacked<Tx extends TxSchema> {\n txType: Tag;\n tx: RawTxObject<Tx>;\n rlpEncoded: Uint8Array;\n}\n/**\n * Unpack transaction hash\n * @category transaction builder\n * @param encodedTx - Transaction to unpack\n * @param txType - Expected transaction type\n * @returns object\n * @returns object.tx Object with transaction param's\n * @returns object.txType Transaction type\n */\nexport function unpackTx<TxType extends Tag>(\n encodedTx: Encoded.Transaction | Encoded.Poi,\n txType?: TxType,\n): TxUnpacked<TxTypeSchemas[TxType]> {\n const rlpEncoded = decode(encodedTx);\n const binary = rlpDecode(rlpEncoded);\n const objId = +readInt(binary[0] as Buffer);\n if (!isKeyOfObject(objId, TX_SCHEMA)) throw new DecodeError(`Unknown transaction tag: ${objId}`);\n if (txType != null && txType !== objId) throw new DecodeError(`Expected transaction to have ${Tag[txType]} tag, got ${Tag[objId]} instead`);\n const vsn = +readInt(binary[1] as Buffer);\n if (!isKeyOfObject(vsn, TX_SCHEMA[objId])) throw new SchemaNotFoundError('deserialization', `tag ${objId}`, vsn);\n const schema = TX_SCHEMA[objId][vsn];\n return {\n txType: objId,\n tx: unpackRawTx<TxTypeSchemas[TxType]>(binary, schema),\n rlpEncoded,\n };\n}\n\n/**\n * Build a transaction hash\n * @category transaction builder\n * @param rawTx - base64 or rlp encoded transaction\n * @returns Transaction hash\n */\nexport function buildTxHash(rawTx: Encoded.Transaction | Uint8Array): Encoded.TxHash {\n const data = typeof rawTx === 'string' && rawTx.startsWith('tx_')\n ? decode(rawTx)\n : rawTx;\n return encode(hash(data), Encoding.TxHash);\n}\n\n/**\n * Build a contract public key by contractCreateTx or gaAttach\n * @category contract\n * @param contractTx - Transaction\n * @returns Contract public key\n */\nexport function buildContractIdByContractTx(\n contractTx: Encoded.Transaction,\n): Encoded.ContractAddress {\n const { txType, tx } = unpackTx<Tag.ContractCreateTx | Tag.GaAttachTx>(contractTx);\n if (![Tag.ContractCreateTx, Tag.GaAttachTx].includes(txType)) {\n throw new ArgumentError('contractCreateTx', 'a contractCreateTx or gaAttach', txType);\n }\n return buildContractId(tx.ownerId, +tx.nonce);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["decode","encode","Encoding","AE_AMOUNT_FORMATS","hash","FIELD_TYPES","TX_SCHEMA","Tag","buildContractId","readInt","toBytes","MPTree","ArgumentError","DecodeError","InvalidTxParamsError","SchemaNotFoundError","isKeyOfObject","deserializeField","value","type","prefix","ctVersion","vm","abi","vmVersion","from","abiVersion","bool","binary","stateTree","StateTrees","string","toString","payload","Bytearray","rlpBinary","unpackTx","Transaction","rlpBinaries","map","v","rawBinary","hex","offChainUpdates","callStack","mptrees","t","sophiaCodeTypeInfo","reduce","acc","funHash","fnName","argType","outType","deserialize","serializeField","params","signatures","split","rlpEncoded","serialize","validateField","Boolean","undefined","validateParams","schema","excludeKeys","optionalFields","Object","fromEntries","filter","key","includes","message","unpackRawTx","index","fieldType","assign","buildTx","_params","vsn","denomination","AETTOS","schemas","Math","max","keys","a","VSN","tag","filteredSchema","valid","length","JSON","stringify","txType","rebuildTx","overrideParams","e","rlpEncode","tx","txObject","encodedTx","rlpDecode","objId","buildTxHash","rawTx","data","startsWith","TxHash","buildContractIdByContractTx","contractTx","ContractCreateTx","GaAttachTx","ownerId","nonce"],"sources":["../../../src/tx/builder/index.ts"],"sourcesContent":["import { decode as rlpDecode, encode as rlpEncode, NestedUint8Array } from 'rlp';\nimport {\n decode, encode, Encoded, Encoding,\n} from '../../utils/encoder';\nimport { AE_AMOUNT_FORMATS } from '../../utils/amount-formatter';\nimport { hash } from '../../utils/crypto';\nimport { Field } from './field-types';\nimport {\n FIELD_TYPES,\n RawTxObject,\n TX_SCHEMA,\n TxField,\n TxParamsCommon,\n TxSchema,\n TxTypeSchemas,\n} from './schema';\nimport { Tag } from './constants';\nimport { buildContractId, readInt } from './helpers';\nimport { toBytes } from '../../utils/bytes';\nimport MPTree, { MPTreeBinary } from '../../utils/mptree';\nimport {\n ArgumentError,\n DecodeError,\n InvalidTxParamsError,\n SchemaNotFoundError,\n} from '../../utils/errors';\nimport { isKeyOfObject } from '../../utils/other';\n\n/**\n * JavaScript-based Transaction builder\n */\n\n// SERIALIZE AND DESERIALIZE PART\nfunction deserializeField(\n value: any,\n type: FIELD_TYPES | Field,\n prefix?: Encoding | Encoding[],\n): any {\n if (value == null) return '';\n switch (type) {\n case FIELD_TYPES.ctVersion: {\n const [vm, , abi] = value;\n return {\n vmVersion: readInt(Buffer.from([vm])),\n abiVersion: readInt(Buffer.from([abi])),\n };\n }\n case FIELD_TYPES.bool:\n return value[0] === 1;\n case FIELD_TYPES.binary:\n return encode(value, prefix as Encoding);\n case FIELD_TYPES.stateTree:\n return encode(value, Encoding.StateTrees);\n case FIELD_TYPES.string:\n return value.toString();\n case FIELD_TYPES.payload:\n return encode(value, Encoding.Bytearray);\n case FIELD_TYPES.rlpBinary:\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return unpackTx(encode(value, Encoding.Transaction));\n case FIELD_TYPES.rlpBinaries:\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return value.map((v: Buffer) => unpackTx(encode(v, Encoding.Transaction)));\n case FIELD_TYPES.rawBinary:\n return value;\n case FIELD_TYPES.hex:\n return value.toString('hex');\n case FIELD_TYPES.offChainUpdates:\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return value.map((v: Buffer) => unpackTx(encode(v, Encoding.Transaction)));\n case FIELD_TYPES.callStack:\n // TODO: fix this\n return [readInt(value)];\n case FIELD_TYPES.mptrees:\n return value.map((t: MPTreeBinary) => new MPTree(t));\n case FIELD_TYPES.sophiaCodeTypeInfo:\n return value.reduce(\n (acc: object, [funHash, fnName, argType, outType]: [\n funHash: Buffer,\n fnName: string,\n argType: string,\n outType: string,\n ]) => ({\n ...acc,\n [fnName.toString()]: { funHash, argType, outType },\n }),\n {},\n );\n default:\n if (typeof type === 'number') return value;\n return type.deserialize(value);\n }\n}\n\nfunction serializeField(value: any, type: FIELD_TYPES | Field, params: any): any {\n switch (type) {\n case FIELD_TYPES.bool:\n return Buffer.from([(value === true) ? 1 : 0]);\n case FIELD_TYPES.binary:\n return decode(value);\n case FIELD_TYPES.stateTree:\n return decode(value);\n case FIELD_TYPES.hex:\n return Buffer.from(value, 'hex');\n case FIELD_TYPES.signatures:\n return value.map(Buffer.from);\n case FIELD_TYPES.payload:\n return typeof value === 'string' && value.split('_')[0] === 'ba'\n ? decode(value as Encoded.Bytearray)\n : toBytes(value);\n case FIELD_TYPES.string:\n return toBytes(value);\n case FIELD_TYPES.rlpBinary:\n return value.rlpEncoded ?? value;\n case FIELD_TYPES.mptrees:\n return value.map((t: MPTree) => t.serialize());\n case FIELD_TYPES.ctVersion:\n return Buffer.from([...toBytes(value.vmVersion), 0, ...toBytes(value.abiVersion)]);\n default:\n if (typeof type === 'number') return value;\n return type.serialize(value, params);\n }\n}\n\nfunction validateField(\n value: any,\n type: FIELD_TYPES | Field,\n): string | undefined {\n // All fields are required\n if (value == null) return 'Field is required';\n\n // Validate type of value\n switch (type) {\n case FIELD_TYPES.ctVersion:\n if (!(Boolean(value.abiVersion) && Boolean(value.vmVersion))) {\n return 'Value must be an object with \"vmVersion\" and \"abiVersion\" fields';\n }\n return undefined;\n default:\n return undefined;\n }\n}\n\n/**\n * Validate transaction params\n * @category transaction builder\n * @param params - Object with tx params\n * @param schema - Transaction schema\n * @param excludeKeys - Array of keys to exclude for validation\n * @returns Object with validation errors\n */\nfunction validateParams(\n params: any,\n schema: TxField[],\n { excludeKeys = [] }: { excludeKeys: string[] },\n): object {\n const optionalFields = ['payload', 'nameFee', 'deposit', 'gasPrice', 'fee', 'gasLimit', 'amount'];\n return Object.fromEntries(\n schema\n // TODO: allow optional keys in schema\n .filter(([key]) => !excludeKeys.includes(key) && !optionalFields.includes(key))\n .map(([key, type]) => [key, validateField(params[key], type)])\n .filter(([, message]) => message),\n );\n}\n\n/**\n * Unpack binary transaction\n * @category transaction builder\n * @param binary - Array with binary transaction field's\n * @param schema - Transaction schema\n * @returns Object with transaction field's\n */\nfunction unpackRawTx<Tx extends TxSchema>(\n binary: Uint8Array | NestedUint8Array,\n schema: TxField[],\n): RawTxObject<Tx> {\n return schema\n .reduce<any>(\n (\n acc,\n [key, fieldType, prefix],\n index,\n ) => Object.assign(acc, { [key]: deserializeField(binary[index], fieldType, prefix) }),\n {},\n );\n}\n\n/**\n * @category transaction builder\n */\nexport interface BuiltTx<Tx extends TxSchema, Prefix extends Encoding> {\n tx: Encoded.Generic<Prefix>;\n rlpEncoded: Uint8Array;\n binary: Uint8Array;\n txObject: RawTxObject<Tx>;\n}\n\n/**\n * Build transaction hash\n * @category transaction builder\n * @param _params - Object with tx params\n * @param type - Transaction type\n * @param options - options\n * @param options.excludeKeys - Array of keys to exclude for validation and build\n * @param options.denomination - Denomination of amounts\n * @param options.prefix - Prefix of transaction\n * @throws {@link InvalidTxParamsError}\n * @returns object\n * @returns object.tx Base64Check transaction hash with 'tx_' prefix\n * @returns object.rlpEncoded rlp encoded transaction\n * @returns object.binary binary transaction\n */\nexport function buildTx<TxType extends Tag, Prefix>(\n _params: Omit<TxTypeSchemas[TxType], 'tag' | 'VSN'> & { VSN?: number },\n type: TxType,\n {\n excludeKeys = [],\n prefix = Encoding.Transaction,\n vsn,\n denomination = AE_AMOUNT_FORMATS.AETTOS,\n }: {\n excludeKeys?: string[];\n prefix?: Encoding;\n vsn?: number;\n denomination?: AE_AMOUNT_FORMATS;\n } = {},\n): BuiltTx<TxSchema, Prefix extends Encoding ? Prefix : Encoding.Transaction> {\n const schemas = TX_SCHEMA[type];\n\n vsn ??= Math.max(...Object.keys(schemas).map((a) => +a));\n if (!isKeyOfObject(vsn, schemas)) throw new SchemaNotFoundError('serialization', Tag[type], vsn);\n\n const schema = schemas[vsn] as unknown as TxField[];\n\n const params = _params as TxParamsCommon & { onNode: Node; denomination?: AE_AMOUNT_FORMATS };\n params.VSN = vsn;\n params.tag = type;\n params.denomination = denomination;\n const filteredSchema = schema.filter(([key]) => !excludeKeys.includes(key));\n\n // Validation\n const valid = validateParams(params, schema, { excludeKeys });\n if (Object.keys(valid).length > 0) {\n throw new InvalidTxParamsError(`Transaction build error. ${JSON.stringify(valid)}`);\n }\n\n const binary = filteredSchema\n .map(([key, fieldType]: [keyof TxSchema, FIELD_TYPES, Encoding]) => (\n serializeField(\n params[key],\n fieldType,\n {\n ...params,\n txType: type,\n rebuildTx: (overrideParams: any) => buildTx(\n { ...params, ...overrideParams },\n type,\n {\n excludeKeys, prefix: Encoding.Transaction, vsn, denomination,\n },\n ),\n },\n )\n ))\n .filter((e) => e !== undefined);\n\n const rlpEncoded = rlpEncode(binary);\n const tx = encode(rlpEncoded, prefix);\n return {\n tx,\n rlpEncoded,\n binary,\n txObject: unpackRawTx<TxTypeSchemas[Tag]>(binary, schema),\n } as any;\n}\n\n/**\n * @category transaction builder\n */\nexport interface TxUnpacked<Tx extends TxSchema> {\n txType: Tag;\n tx: RawTxObject<Tx>;\n rlpEncoded: Uint8Array;\n}\n/**\n * Unpack transaction hash\n * @category transaction builder\n * @param encodedTx - Transaction to unpack\n * @param txType - Expected transaction type\n * @returns object\n * @returns object.tx Object with transaction param's\n * @returns object.txType Transaction type\n */\nexport function unpackTx<TxType extends Tag>(\n encodedTx: Encoded.Transaction | Encoded.Poi,\n txType?: TxType,\n): TxUnpacked<TxTypeSchemas[TxType]> {\n const rlpEncoded = decode(encodedTx);\n const binary = rlpDecode(rlpEncoded);\n const objId = +readInt(binary[0] as Buffer);\n if (!isKeyOfObject(objId, TX_SCHEMA)) throw new DecodeError(`Unknown transaction tag: ${objId}`);\n if (txType != null && txType !== objId) throw new DecodeError(`Expected transaction to have ${Tag[txType]} tag, got ${Tag[objId]} instead`);\n const vsn = +readInt(binary[1] as Buffer);\n if (!isKeyOfObject(vsn, TX_SCHEMA[objId])) throw new SchemaNotFoundError('deserialization', `tag ${objId}`, vsn);\n const schema = TX_SCHEMA[objId][vsn];\n return {\n txType: objId,\n tx: unpackRawTx<TxTypeSchemas[TxType]>(binary, schema),\n rlpEncoded,\n };\n}\n\n/**\n * Build a transaction hash\n * @category transaction builder\n * @param rawTx - base64 or rlp encoded transaction\n * @returns Transaction hash\n */\nexport function buildTxHash(rawTx: Encoded.Transaction | Uint8Array): Encoded.TxHash {\n const data = typeof rawTx === 'string' && rawTx.startsWith('tx_')\n ? decode(rawTx)\n : rawTx;\n return encode(hash(data), Encoding.TxHash);\n}\n\n/**\n * Build a contract public key by contractCreateTx or gaAttach\n * @category contract\n * @param contractTx - Transaction\n * @returns Contract public key\n */\nexport function buildContractIdByContractTx(\n contractTx: Encoded.Transaction,\n): Encoded.ContractAddress {\n const { txType, tx } = unpackTx<Tag.ContractCreateTx | Tag.GaAttachTx>(contractTx);\n if (![Tag.ContractCreateTx, Tag.GaAttachTx].includes(txType)) {\n throw new ArgumentError('contractCreateTx', 'a contractCreateTx or gaAttach', txType);\n }\n return buildContractId(tx.ownerId, +tx.nonce);\n}\n"],"mappings":"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"}
|