@aeternity/aepp-sdk 13.2.2 → 13.3.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/LICENSE +1 -1
- package/README.md +1 -1
- package/bin/aesophia_cli +0 -0
- package/bin/aesophia_cli_8 +0 -0
- 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 +9171 -7086
- package/dist/aepp-sdk.js.map +1 -1
- package/es/AeSdk.d.ts +3 -0
- package/es/AeSdk.mjs +12 -12
- package/es/AeSdk.mjs.map +1 -1
- package/es/AeSdkAepp.d.ts +0 -1
- package/es/AeSdkAepp.mjs +12 -16
- package/es/AeSdkAepp.mjs.map +1 -1
- package/es/AeSdkBase.d.ts +61 -6
- package/es/AeSdkBase.mjs +150 -69
- package/es/AeSdkBase.mjs.map +1 -1
- package/es/AeSdkMethods.d.ts +19 -7
- package/es/AeSdkMethods.mjs +39 -38
- package/es/AeSdkMethods.mjs.map +1 -1
- package/es/AeSdkWallet.mjs +86 -55
- package/es/AeSdkWallet.mjs.map +1 -1
- package/es/Middleware.mjs +31 -27
- package/es/Middleware.mjs.map +1 -1
- package/es/MiddlewareSubscriber.mjs +5 -14
- package/es/MiddlewareSubscriber.mjs.map +1 -1
- package/es/Node.d.ts +10 -2
- package/es/Node.mjs +53 -54
- package/es/Node.mjs.map +1 -1
- package/es/account/Base.d.ts +39 -3
- package/es/account/Base.mjs +35 -1
- package/es/account/Base.mjs.map +1 -1
- package/es/account/Generalized.d.ts +2 -0
- package/es/account/Generalized.mjs +15 -6
- package/es/account/Generalized.mjs.map +1 -1
- package/es/account/Ledger.d.ts +2 -0
- package/es/account/Ledger.mjs +14 -5
- package/es/account/Ledger.mjs.map +1 -1
- package/es/account/LedgerFactory.mjs +4 -6
- package/es/account/LedgerFactory.mjs.map +1 -1
- package/es/account/Memory.d.ts +15 -4
- package/es/account/Memory.mjs +96 -31
- package/es/account/Memory.mjs.map +1 -1
- package/es/account/Rpc.d.ts +16 -5
- package/es/account/Rpc.mjs +94 -21
- package/es/account/Rpc.mjs.map +1 -1
- package/es/aens.d.ts +17 -44
- package/es/aens.mjs +32 -71
- package/es/aens.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection/Browser.mjs +3 -4
- package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +3 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +7 -5
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +8 -9
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs +7 -7
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
- package/es/aepp-wallet-communication/rpc/types.d.ts +14 -0
- package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
- package/es/aepp-wallet-communication/schema.d.ts +2 -0
- package/es/aepp-wallet-communication/schema.mjs +2 -0
- package/es/aepp-wallet-communication/schema.mjs.map +1 -1
- package/es/aepp-wallet-communication/wallet-detector.mjs +4 -5
- package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
- package/es/apis/compiler/compiler.mjs.map +1 -1
- package/es/apis/compiler/models/index.d.ts +1 -0
- package/es/apis/compiler/models/index.mjs.map +1 -1
- package/es/apis/compiler/models/mappers.mjs +13 -0
- package/es/apis/compiler/models/mappers.mjs.map +1 -1
- package/es/apis/compiler/models/parameters.mjs.map +1 -1
- package/es/apis/middleware/middleware.d.ts +23 -5
- package/es/apis/middleware/middleware.mjs +114 -18
- package/es/apis/middleware/middleware.mjs.map +1 -1
- package/es/apis/middleware/models/index.d.ts +164 -15
- package/es/apis/middleware/models/index.mjs +53 -3
- package/es/apis/middleware/models/index.mjs.map +1 -1
- package/es/apis/middleware/models/mappers.d.ts +8 -1
- package/es/apis/middleware/models/mappers.mjs +376 -3
- package/es/apis/middleware/models/mappers.mjs.map +1 -1
- package/es/apis/middleware/models/parameters.d.ts +6 -3
- package/es/apis/middleware/models/parameters.mjs +38 -11
- package/es/apis/middleware/models/parameters.mjs.map +1 -1
- package/es/apis/node/models/index.d.ts +66 -2
- package/es/apis/node/models/index.mjs.map +1 -1
- package/es/apis/node/models/mappers.d.ts +5 -1
- package/es/apis/node/models/mappers.mjs +229 -7
- package/es/apis/node/models/mappers.mjs.map +1 -1
- package/es/apis/node/models/parameters.d.ts +2 -2
- package/es/apis/node/models/parameters.mjs +2 -2
- package/es/apis/node/models/parameters.mjs.map +1 -1
- package/es/apis/node/node.d.ts +24 -3
- package/es/apis/node/node.mjs +135 -3
- package/es/apis/node/node.mjs.map +1 -1
- package/es/chain.d.ts +14 -44
- package/es/chain.mjs +125 -219
- package/es/chain.mjs.map +1 -1
- package/es/channel/Base.d.ts +3 -47
- package/es/channel/Base.mjs +21 -54
- package/es/channel/Base.mjs.map +1 -1
- package/es/channel/Contract.d.ts +16 -25
- package/es/channel/Contract.mjs +39 -63
- package/es/channel/Contract.mjs.map +1 -1
- package/es/channel/Spend.d.ts +0 -8
- package/es/channel/Spend.mjs +17 -29
- package/es/channel/Spend.mjs.map +1 -1
- package/es/channel/handlers.mjs +1 -1
- package/es/channel/handlers.mjs.map +1 -1
- package/es/channel/internal.d.ts +104 -5
- package/es/channel/internal.mjs +26 -34
- package/es/channel/internal.mjs.map +1 -1
- package/es/contract/Contract.d.ts +9 -1
- package/es/contract/Contract.mjs +67 -73
- package/es/contract/Contract.mjs.map +1 -1
- package/es/contract/compiler/Base.d.ts +14 -8
- package/es/contract/compiler/Base.mjs.map +1 -1
- package/es/contract/compiler/Cli.d.ts +5 -9
- package/es/contract/compiler/Cli.mjs +45 -23
- package/es/contract/compiler/Cli.mjs.map +1 -1
- package/es/contract/compiler/Cli8.d.ts +13 -0
- package/es/contract/compiler/Cli8.mjs +22 -0
- package/es/contract/compiler/Cli8.mjs.map +1 -0
- package/es/contract/compiler/Http.d.ts +3 -9
- package/es/contract/compiler/Http.mjs +28 -16
- package/es/contract/compiler/Http.mjs.map +1 -1
- package/es/contract/compiler/HttpNode.d.ts +2 -5
- package/es/contract/compiler/HttpNode.mjs.map +1 -1
- package/es/contract/delegation-signature.d.ts +2 -1
- package/es/contract/delegation-signature.mjs +18 -14
- package/es/contract/delegation-signature.mjs.map +1 -1
- package/es/contract/ga.d.ts +1 -2
- package/es/contract/ga.mjs +23 -25
- package/es/contract/ga.mjs.map +1 -1
- package/es/deprecated.d.ts +38 -0
- package/es/deprecated.mjs +45 -0
- package/es/deprecated.mjs.map +1 -1
- package/es/index-browser.d.ts +10 -5
- package/es/index-browser.mjs +9 -5
- package/es/index-browser.mjs.map +1 -1
- package/es/index.d.ts +1 -0
- package/es/index.mjs +1 -0
- package/es/index.mjs.map +1 -1
- package/es/oracle.d.ts +6 -37
- package/es/oracle.mjs +32 -66
- package/es/oracle.mjs.map +1 -1
- package/es/send-transaction.d.ts +53 -0
- package/es/send-transaction.mjs +109 -0
- package/es/send-transaction.mjs.map +1 -0
- package/es/spend.d.ts +4 -3
- package/es/spend.mjs +6 -1
- package/es/spend.mjs.map +1 -1
- package/es/tx/builder/common.d.ts +29 -0
- package/es/tx/builder/common.mjs +42 -0
- package/es/tx/builder/common.mjs.map +1 -0
- package/es/tx/builder/constants.d.ts +4 -4
- package/es/tx/builder/constants.mjs +6 -15
- package/es/tx/builder/constants.mjs.map +1 -1
- package/es/tx/builder/delegation/index.d.ts +20 -0
- package/es/tx/builder/delegation/index.mjs +24 -0
- package/es/tx/builder/delegation/index.mjs.map +1 -0
- package/es/tx/builder/delegation/schema.d.ts +130 -0
- package/es/tx/builder/delegation/schema.generated.d.ts +141 -0
- package/es/tx/builder/delegation/schema.generated.mjs +2 -0
- package/es/tx/builder/delegation/schema.generated.mjs.map +1 -0
- package/es/tx/builder/delegation/schema.mjs +54 -0
- package/es/tx/builder/delegation/schema.mjs.map +1 -0
- package/es/tx/builder/field-types/abi-version.mjs +8 -11
- package/es/tx/builder/field-types/abi-version.mjs.map +1 -1
- package/es/tx/builder/field-types/address.mjs +1 -4
- package/es/tx/builder/field-types/address.mjs.map +1 -1
- package/es/tx/builder/field-types/coin-amount.d.ts +2 -2
- package/es/tx/builder/field-types/coin-amount.mjs +6 -6
- package/es/tx/builder/field-types/coin-amount.mjs.map +1 -1
- package/es/tx/builder/field-types/ct-version.mjs +3 -4
- package/es/tx/builder/field-types/ct-version.mjs.map +1 -1
- package/es/tx/builder/field-types/entry.mjs +7 -13
- package/es/tx/builder/field-types/entry.mjs.map +1 -1
- package/es/tx/builder/field-types/fee.d.ts +19 -11
- package/es/tx/builder/field-types/fee.mjs +56 -38
- package/es/tx/builder/field-types/fee.mjs.map +1 -1
- package/es/tx/builder/field-types/gas-limit.mjs +13 -15
- package/es/tx/builder/field-types/gas-limit.mjs.map +1 -1
- package/es/tx/builder/field-types/gas-price.d.ts +10 -2
- package/es/tx/builder/field-types/gas-price.mjs +52 -3
- package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
- package/es/tx/builder/field-types/index.d.ts +31 -29
- package/es/tx/builder/field-types/index.mjs +31 -29
- package/es/tx/builder/field-types/index.mjs.map +1 -1
- package/es/tx/builder/field-types/map.mjs +20 -31
- package/es/tx/builder/field-types/map.mjs.map +1 -1
- package/es/tx/builder/field-types/mptree.mjs +14 -29
- package/es/tx/builder/field-types/mptree.mjs.map +1 -1
- package/es/tx/builder/field-types/name-fee.d.ts +1 -1
- package/es/tx/builder/field-types/name-fee.mjs +1 -1
- package/es/tx/builder/field-types/name-fee.mjs.map +1 -1
- package/es/tx/builder/field-types/nonce.d.ts +1 -0
- package/es/tx/builder/field-types/nonce.mjs +2 -0
- package/es/tx/builder/field-types/nonce.mjs.map +1 -1
- package/es/tx/builder/field-types/pointers.mjs +4 -7
- package/es/tx/builder/field-types/pointers.mjs.map +1 -1
- package/es/tx/builder/field-types/pointers2.d.ts +23 -0
- package/es/tx/builder/field-types/pointers2.mjs +65 -0
- package/es/tx/builder/field-types/pointers2.mjs.map +1 -0
- package/es/tx/builder/field-types/query-fee.d.ts +19 -0
- package/es/tx/builder/field-types/query-fee.mjs +20 -0
- package/es/tx/builder/field-types/query-fee.mjs.map +1 -0
- package/es/tx/builder/field-types/ttl.d.ts +9 -1
- package/es/tx/builder/field-types/ttl.mjs +19 -8
- package/es/tx/builder/field-types/ttl.mjs.map +1 -1
- package/es/tx/builder/field-types/with-default.d.ts +7 -0
- package/es/tx/builder/field-types/with-default.mjs +9 -0
- package/es/tx/builder/field-types/with-default.mjs.map +1 -0
- package/es/tx/builder/field-types/with-formatting.d.ts +7 -0
- package/es/tx/builder/field-types/with-formatting.mjs +9 -0
- package/es/tx/builder/field-types/with-formatting.mjs.map +1 -0
- package/es/tx/builder/field-types/wrapped.mjs +6 -8
- package/es/tx/builder/field-types/wrapped.mjs.map +1 -1
- package/es/tx/builder/helpers.d.ts +2 -2
- package/es/tx/builder/helpers.mjs +12 -21
- package/es/tx/builder/helpers.mjs.map +1 -1
- package/es/tx/builder/index.d.ts +17 -10
- package/es/tx/builder/index.mjs +39 -65
- package/es/tx/builder/index.mjs.map +1 -1
- package/es/tx/builder/schema.d.ts +478 -257
- package/es/tx/builder/schema.generated.d.ts +39 -3
- package/es/tx/builder/schema.generated.mjs.map +1 -1
- package/es/tx/builder/schema.mjs +48 -36
- package/es/tx/builder/schema.mjs.map +1 -1
- package/es/tx/execution-cost.d.ts +6 -5
- package/es/tx/execution-cost.mjs +16 -17
- package/es/tx/execution-cost.mjs.map +1 -1
- package/es/tx/transaction-signer.mjs +1 -4
- package/es/tx/transaction-signer.mjs.map +1 -1
- package/es/tx/validator.mjs +61 -42
- package/es/tx/validator.mjs.map +1 -1
- package/es/utils/amount-formatter.mjs +15 -22
- package/es/utils/amount-formatter.mjs.map +1 -1
- package/es/utils/autorest.d.ts +2 -3
- package/es/utils/autorest.mjs +40 -24
- package/es/utils/autorest.mjs.map +1 -1
- package/es/utils/bytes.mjs +1 -2
- package/es/utils/bytes.mjs.map +1 -1
- package/es/utils/crypto.d.ts +8 -4
- package/es/utils/crypto.mjs +17 -13
- package/es/utils/crypto.mjs.map +1 -1
- package/es/utils/errors.d.ts +6 -0
- package/es/utils/errors.mjs +12 -6
- package/es/utils/errors.mjs.map +1 -1
- package/es/utils/hd-wallet.d.ts +2 -0
- package/es/utils/hd-wallet.mjs +6 -5
- package/es/utils/hd-wallet.mjs.map +1 -1
- package/es/utils/json-big.mjs +2 -10
- package/es/utils/json-big.mjs.map +1 -1
- package/es/utils/jwt.d.ts +53 -0
- package/es/utils/jwt.mjs +120 -0
- package/es/utils/jwt.mjs.map +1 -0
- package/es/utils/keystore.d.ts +6 -2
- package/es/utils/keystore.mjs +8 -16
- package/es/utils/keystore.mjs.map +1 -1
- package/es/utils/typed-data.mjs +1 -0
- package/es/utils/typed-data.mjs.map +1 -1
- package/es/utils/wrap-proxy.d.ts +2 -0
- package/es/utils/wrap-proxy.mjs +15 -0
- package/es/utils/wrap-proxy.mjs.map +1 -0
- package/package.json +57 -51
- package/src/AeSdk.ts +3 -0
- package/src/AeSdkAepp.ts +0 -1
- package/src/AeSdkBase.ts +97 -10
- package/src/AeSdkMethods.ts +37 -33
- package/src/AeSdkWallet.ts +22 -3
- package/src/Middleware.ts +16 -8
- package/src/MiddlewareSubscriber.ts +1 -1
- package/src/Node.ts +37 -18
- package/src/account/Base.ts +62 -3
- package/src/account/Generalized.ts +10 -0
- package/src/account/Ledger.ts +10 -0
- package/src/account/Memory.ts +83 -9
- package/src/account/Rpc.ts +69 -6
- package/src/aens.ts +35 -56
- package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +3 -0
- package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +2 -2
- package/src/aepp-wallet-communication/rpc/RpcClient.ts +4 -2
- package/src/aepp-wallet-communication/rpc/types.ts +13 -0
- package/src/aepp-wallet-communication/schema.ts +2 -0
- package/src/apis/compiler/compiler.ts +93 -93
- package/src/apis/compiler/models/index.ts +1 -0
- package/src/apis/compiler/models/mappers.ts +178 -165
- package/src/apis/compiler/models/parameters.ts +18 -18
- package/src/apis/middleware/middleware.ts +462 -341
- package/src/apis/middleware/models/index.ts +258 -56
- package/src/apis/middleware/models/mappers.ts +2357 -1919
- package/src/apis/middleware/models/parameters.ts +172 -142
- package/src/apis/node/models/index.ts +79 -2
- package/src/apis/node/models/mappers.ts +1529 -1302
- package/src/apis/node/models/parameters.ts +51 -51
- package/src/apis/node/node.ts +420 -275
- package/src/chain.ts +42 -128
- package/src/channel/Base.ts +14 -47
- package/src/channel/Contract.ts +18 -26
- package/src/channel/Spend.ts +0 -8
- package/src/channel/internal.ts +115 -13
- package/src/contract/Contract.ts +26 -8
- package/src/contract/compiler/Base.ts +15 -8
- package/src/contract/compiler/Cli.ts +37 -21
- package/src/contract/compiler/Cli8.ts +17 -0
- package/src/contract/compiler/Http.ts +24 -14
- package/src/contract/compiler/HttpNode.ts +2 -2
- package/src/contract/delegation-signature.ts +11 -5
- package/src/contract/ga.ts +4 -3
- package/src/deprecated.ts +36 -0
- package/src/index-browser.ts +14 -7
- package/src/index.ts +1 -0
- package/src/oracle.ts +11 -54
- package/src/send-transaction.ts +136 -0
- package/src/spend.ts +25 -11
- package/src/tx/builder/common.ts +74 -0
- package/src/tx/builder/constants.ts +6 -9
- package/src/tx/builder/delegation/index.ts +28 -0
- package/src/tx/builder/delegation/schema.generated.ts +143 -0
- package/src/tx/builder/delegation/schema.ts +61 -0
- package/src/tx/builder/field-types/coin-amount.ts +3 -2
- package/src/tx/builder/field-types/entry.ts +1 -4
- package/src/tx/builder/field-types/fee.ts +71 -43
- package/src/tx/builder/field-types/gas-limit.ts +4 -4
- package/src/tx/builder/field-types/gas-price.ts +58 -2
- package/src/tx/builder/field-types/index.ts +31 -59
- package/src/tx/builder/field-types/name-fee.ts +1 -1
- package/src/tx/builder/field-types/nonce.ts +7 -1
- package/src/tx/builder/field-types/pointers2.ts +62 -0
- package/src/tx/builder/field-types/query-fee.ts +25 -0
- package/src/tx/builder/field-types/ttl.ts +13 -3
- package/src/tx/builder/field-types/with-default.ts +18 -0
- package/src/tx/builder/field-types/with-formatting.ts +18 -0
- package/src/tx/builder/helpers.ts +2 -2
- package/src/tx/builder/index.ts +42 -59
- package/src/tx/builder/schema.generated.ts +39 -3
- package/src/tx/builder/schema.ts +55 -29
- package/src/tx/execution-cost.ts +6 -5
- package/src/tx/validator.ts +31 -5
- package/src/utils/autorest.ts +36 -27
- package/src/utils/crypto.ts +23 -13
- package/src/utils/errors.ts +10 -0
- package/src/utils/hd-wallet.ts +2 -0
- package/src/utils/jwt.ts +126 -0
- package/src/utils/keystore.ts +6 -2
- package/src/utils/wrap-proxy.ts +24 -0
- package/types-legacy/ts4.2/AeSdk.d.ts +3 -0
- package/types-legacy/ts4.2/AeSdkAepp.d.ts +0 -1
- package/types-legacy/ts4.2/AeSdkBase.d.ts +61 -6
- package/types-legacy/ts4.2/AeSdkMethods.d.ts +19 -7
- package/types-legacy/ts4.2/Node.d.ts +14 -1
- package/types-legacy/ts4.2/account/Base.d.ts +39 -3
- package/types-legacy/ts4.2/account/Generalized.d.ts +2 -0
- package/types-legacy/ts4.2/account/Ledger.d.ts +2 -0
- package/types-legacy/ts4.2/account/Memory.d.ts +15 -4
- package/types-legacy/ts4.2/account/Rpc.d.ts +16 -5
- package/types-legacy/ts4.2/aens.d.ts +17 -44
- package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserRuntime.d.ts +3 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/rpc/types.d.ts +14 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/schema.d.ts +2 -0
- package/types-legacy/ts4.2/apis/compiler/models/index.d.ts +1 -0
- package/types-legacy/ts4.2/apis/middleware/middleware.d.ts +23 -5
- package/types-legacy/ts4.2/apis/middleware/models/index.d.ts +164 -15
- package/types-legacy/ts4.2/apis/middleware/models/mappers.d.ts +8 -1
- package/types-legacy/ts4.2/apis/middleware/models/parameters.d.ts +6 -3
- package/types-legacy/ts4.2/apis/node/models/index.d.ts +66 -2
- package/types-legacy/ts4.2/apis/node/models/mappers.d.ts +5 -1
- package/types-legacy/ts4.2/apis/node/models/parameters.d.ts +2 -2
- package/types-legacy/ts4.2/apis/node/node.d.ts +24 -3
- package/types-legacy/ts4.2/chain.d.ts +14 -44
- package/types-legacy/ts4.2/channel/Base.d.ts +3 -47
- package/types-legacy/ts4.2/channel/Contract.d.ts +16 -25
- package/types-legacy/ts4.2/channel/Spend.d.ts +0 -8
- package/types-legacy/ts4.2/channel/internal.d.ts +104 -5
- package/types-legacy/ts4.2/contract/Contract.d.ts +9 -1
- package/types-legacy/ts4.2/contract/compiler/Base.d.ts +14 -8
- package/types-legacy/ts4.2/contract/compiler/Cli.d.ts +5 -9
- package/types-legacy/ts4.2/contract/compiler/Cli8.d.ts +13 -0
- package/types-legacy/ts4.2/contract/compiler/Http.d.ts +3 -9
- package/types-legacy/ts4.2/contract/compiler/HttpNode.d.ts +2 -5
- package/types-legacy/ts4.2/contract/delegation-signature.d.ts +2 -1
- package/types-legacy/ts4.2/contract/ga.d.ts +1 -2
- package/types-legacy/ts4.2/deprecated.d.ts +38 -0
- package/types-legacy/ts4.2/index-browser.d.ts +10 -5
- package/types-legacy/ts4.2/index.d.ts +1 -0
- package/types-legacy/ts4.2/oracle.d.ts +6 -37
- package/types-legacy/ts4.2/send-transaction.d.ts +53 -0
- package/types-legacy/ts4.2/spend.d.ts +4 -3
- package/types-legacy/ts4.2/tx/builder/common.d.ts +32 -0
- package/types-legacy/ts4.2/tx/builder/constants.d.ts +4 -4
- package/types-legacy/ts4.2/tx/builder/delegation/index.d.ts +20 -0
- package/types-legacy/ts4.2/tx/builder/delegation/schema.d.ts +136 -0
- package/types-legacy/ts4.2/tx/builder/delegation/schema.generated.d.ts +141 -0
- package/types-legacy/ts4.2/tx/builder/field-types/coin-amount.d.ts +2 -2
- package/types-legacy/ts4.2/tx/builder/field-types/fee.d.ts +19 -11
- package/types-legacy/ts4.2/tx/builder/field-types/gas-price.d.ts +10 -2
- package/types-legacy/ts4.2/tx/builder/field-types/index.d.ts +31 -29
- package/types-legacy/ts4.2/tx/builder/field-types/name-fee.d.ts +1 -1
- package/types-legacy/ts4.2/tx/builder/field-types/nonce.d.ts +1 -0
- package/types-legacy/ts4.2/tx/builder/field-types/pointers2.d.ts +26 -0
- package/types-legacy/ts4.2/tx/builder/field-types/query-fee.d.ts +19 -0
- package/types-legacy/ts4.2/tx/builder/field-types/ttl.d.ts +9 -1
- package/types-legacy/ts4.2/tx/builder/field-types/with-default.d.ts +7 -0
- package/types-legacy/ts4.2/tx/builder/field-types/with-formatting.d.ts +7 -0
- package/types-legacy/ts4.2/tx/builder/helpers.d.ts +2 -2
- package/types-legacy/ts4.2/tx/builder/index.d.ts +17 -10
- package/types-legacy/ts4.2/tx/builder/schema.d.ts +482 -257
- package/types-legacy/ts4.2/tx/builder/schema.generated.d.ts +39 -3
- package/types-legacy/ts4.2/tx/execution-cost.d.ts +6 -5
- package/types-legacy/ts4.2/utils/autorest.d.ts +2 -3
- package/types-legacy/ts4.2/utils/crypto.d.ts +8 -4
- package/types-legacy/ts4.2/utils/errors.d.ts +6 -0
- package/types-legacy/ts4.2/utils/hd-wallet.d.ts +2 -0
- package/types-legacy/ts4.2/utils/jwt.d.ts +53 -0
- package/types-legacy/ts4.2/utils/keystore.d.ts +6 -2
- package/types-legacy/ts4.2/utils/wrap-proxy.d.ts +2 -0
- package/types-legacy/ts4.5/AeSdk.d.ts +3 -0
- package/types-legacy/ts4.5/AeSdkAepp.d.ts +0 -1
- package/types-legacy/ts4.5/AeSdkBase.d.ts +61 -6
- package/types-legacy/ts4.5/AeSdkMethods.d.ts +19 -7
- package/types-legacy/ts4.5/Node.d.ts +14 -1
- package/types-legacy/ts4.5/account/Base.d.ts +39 -3
- package/types-legacy/ts4.5/account/Generalized.d.ts +2 -0
- package/types-legacy/ts4.5/account/Ledger.d.ts +2 -0
- package/types-legacy/ts4.5/account/Memory.d.ts +15 -4
- package/types-legacy/ts4.5/account/Rpc.d.ts +16 -5
- package/types-legacy/ts4.5/aens.d.ts +17 -44
- package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserRuntime.d.ts +3 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/rpc/types.d.ts +14 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/schema.d.ts +2 -0
- package/types-legacy/ts4.5/apis/compiler/models/index.d.ts +1 -0
- package/types-legacy/ts4.5/apis/middleware/middleware.d.ts +23 -5
- package/types-legacy/ts4.5/apis/middleware/models/index.d.ts +164 -15
- package/types-legacy/ts4.5/apis/middleware/models/mappers.d.ts +8 -1
- package/types-legacy/ts4.5/apis/middleware/models/parameters.d.ts +6 -3
- package/types-legacy/ts4.5/apis/node/models/index.d.ts +66 -2
- package/types-legacy/ts4.5/apis/node/models/mappers.d.ts +5 -1
- package/types-legacy/ts4.5/apis/node/models/parameters.d.ts +2 -2
- package/types-legacy/ts4.5/apis/node/node.d.ts +24 -3
- package/types-legacy/ts4.5/chain.d.ts +14 -44
- package/types-legacy/ts4.5/channel/Base.d.ts +3 -47
- package/types-legacy/ts4.5/channel/Contract.d.ts +16 -25
- package/types-legacy/ts4.5/channel/Spend.d.ts +0 -8
- package/types-legacy/ts4.5/channel/internal.d.ts +104 -5
- package/types-legacy/ts4.5/contract/Contract.d.ts +9 -1
- package/types-legacy/ts4.5/contract/compiler/Base.d.ts +14 -8
- package/types-legacy/ts4.5/contract/compiler/Cli.d.ts +5 -9
- package/types-legacy/ts4.5/contract/compiler/Cli8.d.ts +13 -0
- package/types-legacy/ts4.5/contract/compiler/Http.d.ts +3 -9
- package/types-legacy/ts4.5/contract/compiler/HttpNode.d.ts +2 -5
- package/types-legacy/ts4.5/contract/delegation-signature.d.ts +2 -1
- package/types-legacy/ts4.5/contract/ga.d.ts +1 -2
- package/types-legacy/ts4.5/deprecated.d.ts +38 -0
- package/types-legacy/ts4.5/index-browser.d.ts +10 -5
- package/types-legacy/ts4.5/index.d.ts +1 -0
- package/types-legacy/ts4.5/oracle.d.ts +6 -37
- package/types-legacy/ts4.5/send-transaction.d.ts +53 -0
- package/types-legacy/ts4.5/spend.d.ts +4 -3
- package/types-legacy/ts4.5/tx/builder/common.d.ts +32 -0
- package/types-legacy/ts4.5/tx/builder/constants.d.ts +4 -4
- package/types-legacy/ts4.5/tx/builder/delegation/index.d.ts +20 -0
- package/types-legacy/ts4.5/tx/builder/delegation/schema.d.ts +136 -0
- package/types-legacy/ts4.5/tx/builder/delegation/schema.generated.d.ts +141 -0
- package/types-legacy/ts4.5/tx/builder/field-types/coin-amount.d.ts +2 -2
- package/types-legacy/ts4.5/tx/builder/field-types/fee.d.ts +19 -11
- package/types-legacy/ts4.5/tx/builder/field-types/gas-price.d.ts +10 -2
- package/types-legacy/ts4.5/tx/builder/field-types/index.d.ts +31 -29
- package/types-legacy/ts4.5/tx/builder/field-types/name-fee.d.ts +1 -1
- package/types-legacy/ts4.5/tx/builder/field-types/nonce.d.ts +1 -0
- package/types-legacy/ts4.5/tx/builder/field-types/pointers2.d.ts +26 -0
- package/types-legacy/ts4.5/tx/builder/field-types/query-fee.d.ts +19 -0
- package/types-legacy/ts4.5/tx/builder/field-types/ttl.d.ts +9 -1
- package/types-legacy/ts4.5/tx/builder/field-types/with-default.d.ts +7 -0
- package/types-legacy/ts4.5/tx/builder/field-types/with-formatting.d.ts +7 -0
- package/types-legacy/ts4.5/tx/builder/helpers.d.ts +2 -2
- package/types-legacy/ts4.5/tx/builder/index.d.ts +17 -10
- package/types-legacy/ts4.5/tx/builder/schema.d.ts +482 -257
- package/types-legacy/ts4.5/tx/builder/schema.generated.d.ts +39 -3
- package/types-legacy/ts4.5/tx/execution-cost.d.ts +6 -5
- package/types-legacy/ts4.5/utils/autorest.d.ts +2 -3
- package/types-legacy/ts4.5/utils/crypto.d.ts +8 -4
- package/types-legacy/ts4.5/utils/errors.d.ts +6 -0
- package/types-legacy/ts4.5/utils/hd-wallet.d.ts +2 -0
- package/types-legacy/ts4.5/utils/jwt.d.ts +53 -0
- package/types-legacy/ts4.5/utils/keystore.d.ts +6 -2
- package/types-legacy/ts4.5/utils/wrap-proxy.d.ts +2 -0
- package/es/tx/builder/field-types/deposit.d.ts +0 -15
- package/es/tx/builder/field-types/deposit.mjs +0 -18
- package/es/tx/builder/field-types/deposit.mjs.map +0 -1
- package/src/tx/builder/field-types/deposit.ts +0 -23
- package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +0 -15
- package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +0 -15
|
@@ -2,46 +2,35 @@ import { Tag } from "../constants.mjs";
|
|
|
2
2
|
import { encode, Encoding, decode } from "../../../utils/encoder.mjs";
|
|
3
3
|
export default function genMapField(encoding, tag) {
|
|
4
4
|
return {
|
|
5
|
-
serialize(object,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
} = _ref;
|
|
5
|
+
serialize(object, {
|
|
6
|
+
buildTx
|
|
7
|
+
}) {
|
|
9
8
|
return decode(buildTx({
|
|
10
9
|
tag: Tag.Mtree,
|
|
11
|
-
values: Object.entries(object).map(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}))
|
|
20
|
-
};
|
|
21
|
-
})
|
|
10
|
+
values: Object.entries(object).map(([key, value]) => ({
|
|
11
|
+
tag: Tag.MtreeValue,
|
|
12
|
+
key: decode(key),
|
|
13
|
+
value: decode(buildTx({
|
|
14
|
+
...value,
|
|
15
|
+
tag
|
|
16
|
+
}))
|
|
17
|
+
}))
|
|
22
18
|
}));
|
|
23
19
|
},
|
|
24
|
-
deserialize(buffer,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
} = _ref3;
|
|
20
|
+
deserialize(buffer, {
|
|
21
|
+
unpackTx
|
|
22
|
+
}) {
|
|
28
23
|
const {
|
|
29
24
|
values
|
|
30
25
|
} = unpackTx(encode(buffer, Encoding.Transaction), Tag.Mtree);
|
|
31
26
|
return Object.fromEntries(values
|
|
32
27
|
// TODO: remove after resolving https://github.com/aeternity/aeternity/issues/4066
|
|
33
|
-
.filter(
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
})
|
|
39
|
-
let {
|
|
40
|
-
key,
|
|
41
|
-
value
|
|
42
|
-
} = _ref5;
|
|
43
|
-
return [encode(key, encoding), unpackTx(encode(value, Encoding.Transaction), tag)];
|
|
44
|
-
}));
|
|
28
|
+
.filter(({
|
|
29
|
+
key
|
|
30
|
+
}) => encoding !== Encoding.ContractAddress || key.length === 32).map(({
|
|
31
|
+
key,
|
|
32
|
+
value
|
|
33
|
+
}) => [encode(key, encoding), unpackTx(encode(value, Encoding.Transaction), tag)]));
|
|
45
34
|
},
|
|
46
35
|
recursiveType: true
|
|
47
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.mjs","names":["Tag","encode","Encoding","decode","genMapField","encoding","tag","serialize","object","
|
|
1
|
+
{"version":3,"file":"map.mjs","names":["Tag","encode","Encoding","decode","genMapField","encoding","tag","serialize","object","buildTx","Mtree","values","Object","entries","map","key","value","MtreeValue","deserialize","buffer","unpackTx","Transaction","fromEntries","filter","ContractAddress","length","recursiveType"],"sources":["../../../../src/tx/builder/field-types/map.ts"],"sourcesContent":["import { Tag } from '../constants';\nimport {\n encode, Encoding, Encoded, decode,\n} from '../../../utils/encoder';\nimport type { unpackTx as unpackTxType, buildTx as buildTxType } from '../index';\n\nexport default function genMapField<E extends Encoding, T extends Tag>(encoding: E, tag: T): {\n serialize: (\n // TODO: replace with `TxParams & { tag: T }`,\n // but fix TS2502 value is referenced directly or indirectly in its own type annotation\n value: Record<Encoded.Generic<E>, any>, options: { buildTx: typeof buildTxType }\n ) => Buffer;\n deserialize: (\n value: Buffer, options: { unpackTx: typeof unpackTxType },\n // TODO: replace with `TxUnpacked & { tag: T }`,\n // TS2577 Return type annotation circularly references itself\n ) => Record<Encoded.Generic<E>, any>;\n recursiveType: true;\n} {\n return {\n serialize(object, { buildTx }) {\n return decode(buildTx({\n tag: Tag.Mtree,\n values: Object.entries(object).map(([key, value]) => ({\n tag: Tag.MtreeValue,\n key: decode(key as Encoded.Generic<E>),\n value: decode(buildTx({ ...value as any, tag })),\n })),\n }));\n },\n\n deserialize(buffer, { unpackTx }) {\n const { values } = unpackTx(encode(buffer, Encoding.Transaction), Tag.Mtree);\n return Object.fromEntries(values\n // TODO: remove after resolving https://github.com/aeternity/aeternity/issues/4066\n .filter(({ key }) => encoding !== Encoding.ContractAddress || key.length === 32)\n .map(({ key, value }) => [\n encode(key, encoding),\n unpackTx(encode(value, Encoding.Transaction), tag),\n ])) as Record<Encoded.Generic<E>, any>;\n },\n\n recursiveType: true,\n };\n}\n"],"mappings":"SAASA,GAAG;AAAA,SAEVC,MAAM,EAAEC,QAAQ,EAAWC,MAAM;AAInC,eAAe,SAASC,WAAWA,CAAoCC,QAAW,EAAEC,GAAM,EAYxF;EACA,OAAO;IACLC,SAASA,CAACC,MAAM,EAAE;MAAEC;IAAQ,CAAC,EAAE;MAC7B,OAAON,MAAM,CAACM,OAAO,CAAC;QACpBH,GAAG,EAAEN,GAAG,CAACU,KAAK;QACdC,MAAM,EAAEC,MAAM,CAACC,OAAO,CAACL,MAAM,CAAC,CAACM,GAAG,CAAC,CAAC,CAACC,GAAG,EAAEC,KAAK,CAAC,MAAM;UACpDV,GAAG,EAAEN,GAAG,CAACiB,UAAU;UACnBF,GAAG,EAAEZ,MAAM,CAACY,GAAyB,CAAC;UACtCC,KAAK,EAAEb,MAAM,CAACM,OAAO,CAAC;YAAE,GAAGO,KAAY;YAAEV;UAAI,CAAC,CAAC;QACjD,CAAC,CAAC;MACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEDY,WAAWA,CAACC,MAAM,EAAE;MAAEC;IAAS,CAAC,EAAE;MAChC,MAAM;QAAET;MAAO,CAAC,GAAGS,QAAQ,CAACnB,MAAM,CAACkB,MAAM,EAAEjB,QAAQ,CAACmB,WAAW,CAAC,EAAErB,GAAG,CAACU,KAAK,CAAC;MAC5E,OAAOE,MAAM,CAACU,WAAW,CAACX;MACxB;MAAA,CACCY,MAAM,CAAC,CAAC;QAAER;MAAI,CAAC,KAAKV,QAAQ,KAAKH,QAAQ,CAACsB,eAAe,IAAIT,GAAG,CAACU,MAAM,KAAK,EAAE,CAAC,CAC/EX,GAAG,CAAC,CAAC;QAAEC,GAAG;QAAEC;MAAM,CAAC,KAAK,CACvBf,MAAM,CAACc,GAAG,EAAEV,QAAQ,CAAC,EACrBe,QAAQ,CAACnB,MAAM,CAACe,KAAK,EAAEd,QAAQ,CAACmB,WAAW,CAAC,EAAEf,GAAG,CAAC,CACnD,CAAC,CAAC;IACP,CAAC;IAEDoB,aAAa,EAAE;EACjB,CAAC;AACH"}
|
|
@@ -4,12 +4,13 @@ const {
|
|
|
4
4
|
} = _buffer;
|
|
5
5
|
import _classPrivateFieldSet from "@babel/runtime-corejs3/helpers/classPrivateFieldSet";
|
|
6
6
|
import _classPrivateFieldGet from "@babel/runtime-corejs3/helpers/classPrivateFieldGet";
|
|
7
|
+
var _MPTree;
|
|
7
8
|
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
|
8
9
|
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
|
9
10
|
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
|
10
|
-
function _classPrivateMethodGet(receiver, privateSet, fn) {
|
|
11
|
-
function _classStaticPrivateMethodGet(receiver, classConstructor, method) {
|
|
12
|
-
function
|
|
11
|
+
function _classPrivateMethodGet(receiver, privateSet, fn) { _assertClassBrand(privateSet, receiver); return fn; }
|
|
12
|
+
function _classStaticPrivateMethodGet(receiver, classConstructor, method) { _assertClassBrand(classConstructor, receiver); return method; }
|
|
13
|
+
function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
|
|
13
14
|
import _rlp from 'rlp';
|
|
14
15
|
const {
|
|
15
16
|
encode: rlpEncode
|
|
@@ -86,8 +87,7 @@ class MPTree {
|
|
|
86
87
|
_classPrivateFieldSet(this, _isComplete, false);
|
|
87
88
|
return;
|
|
88
89
|
}
|
|
89
|
-
Object.entries(_classPrivateFieldGet(this, _nodes)).forEach(
|
|
90
|
-
let [key, node] = _ref;
|
|
90
|
+
Object.entries(_classPrivateFieldGet(this, _nodes)).forEach(([key, node]) => {
|
|
91
91
|
if (_classStaticPrivateMethodGet(MPTree, MPTree, _nodeHash).call(MPTree, node) !== key) throw new MerkleTreeHashMismatchError();
|
|
92
92
|
const {
|
|
93
93
|
type
|
|
@@ -122,10 +122,7 @@ class MPTree {
|
|
|
122
122
|
* @returns Binary
|
|
123
123
|
*/
|
|
124
124
|
serialize() {
|
|
125
|
-
return [_Buffer.from(_classPrivateFieldGet(this, _rootHash), 'hex'), Object.entries(_classPrivateFieldGet(this, _nodes)).map(
|
|
126
|
-
let [mptHash, value] = _ref2;
|
|
127
|
-
return [_Buffer.from(mptHash, 'hex'), value];
|
|
128
|
-
})];
|
|
125
|
+
return [_Buffer.from(_classPrivateFieldGet(this, _rootHash), 'hex'), Object.entries(_classPrivateFieldGet(this, _nodes)).map(([mptHash, value]) => [_Buffer.from(mptHash, 'hex'), value])];
|
|
129
126
|
}
|
|
130
127
|
/**
|
|
131
128
|
* Retrieve value from Merkle Patricia Tree
|
|
@@ -139,15 +136,10 @@ class MPTree {
|
|
|
139
136
|
}
|
|
140
137
|
toObject() {
|
|
141
138
|
return Object.fromEntries(_classPrivateMethodGet(this, _entriesRaw, _entriesRaw2).call(this) // TODO: remove after resolving https://github.com/aeternity/aeternity/issues/4066
|
|
142
|
-
.filter(
|
|
143
|
-
let [k] = _ref3;
|
|
144
|
-
return _classPrivateFieldGet(this, _encoding) !== Encoding.ContractAddress || k.length !== 66;
|
|
145
|
-
}).map(_ref4 => {
|
|
146
|
-
let [k, v] = _ref4;
|
|
147
|
-
return [encode(_Buffer.from(k, 'hex'), _classPrivateFieldGet(this, _encoding)), _classPrivateFieldGet(this, _unpackTx).call(this, encode(v, Encoding.Transaction), _classPrivateFieldGet(this, _tag))];
|
|
148
|
-
}));
|
|
139
|
+
.filter(([k]) => _classPrivateFieldGet(this, _encoding) !== Encoding.ContractAddress || k.length !== 66).map(([k, v]) => [encode(_Buffer.from(k, 'hex'), _classPrivateFieldGet(this, _encoding)), _classPrivateFieldGet(this, _unpackTx).call(this, encode(v, Encoding.Transaction), _classPrivateFieldGet(this, _tag))]));
|
|
149
140
|
}
|
|
150
141
|
}
|
|
142
|
+
_MPTree = MPTree;
|
|
151
143
|
function _nodeHash(node) {
|
|
152
144
|
return _Buffer.from(hash(rlpEncode(node))).toString('hex');
|
|
153
145
|
}
|
|
@@ -192,7 +184,7 @@ function _getRaw2(_key) {
|
|
|
192
184
|
type,
|
|
193
185
|
value,
|
|
194
186
|
path
|
|
195
|
-
} = _classStaticPrivateMethodGet(
|
|
187
|
+
} = _classStaticPrivateMethodGet(_MPTree, _MPTree, _parseNode).call(_MPTree, node);
|
|
196
188
|
switch (type) {
|
|
197
189
|
case NodeType.Branch:
|
|
198
190
|
if (key.length === 0) return value;
|
|
@@ -224,16 +216,10 @@ function _entriesRaw2() {
|
|
|
224
216
|
type,
|
|
225
217
|
value,
|
|
226
218
|
path
|
|
227
|
-
} = _classStaticPrivateMethodGet(
|
|
219
|
+
} = _classStaticPrivateMethodGet(_MPTree, _MPTree, _parseNode).call(_MPTree, node);
|
|
228
220
|
switch (type) {
|
|
229
221
|
case NodeType.Branch:
|
|
230
|
-
node.slice(0, 16).map((t, idx) => [t, idx]).filter(
|
|
231
|
-
let [t] = _ref6;
|
|
232
|
-
return t.length;
|
|
233
|
-
}).forEach(_ref7 => {
|
|
234
|
-
let [t, idx] = _ref7;
|
|
235
|
-
return rec(t.toString('hex'), key + idx.toString(16));
|
|
236
|
-
});
|
|
222
|
+
node.slice(0, 16).map((t, idx) => [t, idx]).filter(([t]) => t.length).forEach(([t, idx]) => rec(t.toString('hex'), key + idx.toString(16)));
|
|
237
223
|
if (value != null) entries.push([key, value]);
|
|
238
224
|
break;
|
|
239
225
|
case NodeType.Extension:
|
|
@@ -255,10 +241,9 @@ export default function genMPTreeField(encoding, tag) {
|
|
|
255
241
|
serialize(value) {
|
|
256
242
|
return value.serialize();
|
|
257
243
|
},
|
|
258
|
-
deserialize(value,
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
} = _ref5;
|
|
244
|
+
deserialize(value, {
|
|
245
|
+
unpackTx
|
|
246
|
+
}) {
|
|
262
247
|
return new MPTree(value, encoding, tag, unpackTx);
|
|
263
248
|
}
|
|
264
249
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mptree.mjs","names":["_rlp","encode","rlpEncode","hash","MerkleTreeHashMismatchError","MissingNodeInTreeError","UnknownPathNibbleError","UnexpectedTsError","UnknownNodeLengthError","InternalError","decode","Encoding","NodeType","_rootHash","WeakMap","_isComplete","_nodes","_encoding","_tag","_unpackTx","_getRaw","WeakSet","_entriesRaw","MPTree","isComplete","_classPrivateFieldGet","constructor","binary","encoding","tag","unpTx","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","writable","value","_classPrivateFieldSet","toString","Object","fromEntries","map","node","keys","length","entries","forEach","_ref","key","_classStaticPrivateMethodGet","_nodeHash","call","type","_parseNode","Branch","slice","filter","n","Extension","Leaf","isEqual","tree","serialize","_Buffer","from","_ref2","mptHash","get","d","_classPrivateMethodGet","_getRaw2","Transaction","toObject","_entriesRaw2","_ref3","k","ContractAddress","_ref4","v","nibble","includes","path","_key","searchFrom","undefined","substring","rec","t","idx","_ref6","_ref7","push","genMPTreeField","deserialize","_ref5","unpackTx"],"sources":["../../../../src/tx/builder/field-types/mptree.ts"],"sourcesContent":["import { encode as rlpEncode, Input } from 'rlp';\nimport { Tag } from '../constants';\nimport { hash } from '../../../utils/crypto';\nimport {\n MerkleTreeHashMismatchError,\n MissingNodeInTreeError,\n UnknownPathNibbleError,\n UnexpectedTsError,\n UnknownNodeLengthError,\n InternalError,\n} from '../../../utils/errors';\nimport {\n decode, encode, Encoded, Encoding,\n} from '../../../utils/encoder';\nimport type { unpackTx } from '..';\nimport type { TxUnpacked } from '../schema.generated';\n\nenum NodeType {\n Branch,\n Extension,\n Leaf,\n}\n\ntype MPTreeBinary = [Buffer, Array<[Buffer, Buffer[]]>];\n\nclass MPTree<E extends Encoding, T extends Tag> {\n readonly #rootHash: string;\n\n #isComplete = true;\n\n get isComplete(): boolean {\n return this.#isComplete;\n }\n\n readonly #nodes: { [key: string]: Buffer[] };\n\n readonly #encoding: E;\n\n readonly #tag: T;\n\n readonly #unpackTx: typeof unpackTx;\n\n static #nodeHash(node: Input): string {\n return Buffer.from(hash(rlpEncode(node))).toString('hex');\n }\n\n /**\n * Deserialize Merkle Patricia Tree\n * @param binary - Binary\n * @param tag - Tag to use to decode value\n * @param unpTx - Implementation of unpackTx use to decode values\n * @returns Merkle Patricia Tree\n */\n constructor(binary: MPTreeBinary, encoding: E, tag: T, unpTx: typeof unpackTx) {\n this.#encoding = encoding;\n this.#tag = tag;\n this.#unpackTx = unpTx;\n this.#rootHash = binary[0].toString('hex');\n this.#nodes = Object.fromEntries(\n binary[1].map((node) => [node[0].toString('hex'), node[1]]),\n );\n\n if (this.#nodes[this.#rootHash] == null) {\n if (Object.keys(this.#nodes).length !== 0) {\n throw new MissingNodeInTreeError('Can\\'t find a node by root hash');\n }\n this.#isComplete = false;\n return;\n }\n Object.entries(this.#nodes).forEach(([key, node]) => {\n if (MPTree.#nodeHash(node) !== key) throw new MerkleTreeHashMismatchError();\n const { type } = MPTree.#parseNode(node);\n switch (type) {\n case NodeType.Branch:\n node\n .slice(0, 16)\n .filter((n) => n.length)\n .forEach((n) => {\n // TODO: enable after resolving https://github.com/aeternity/aeternity/issues/4066\n // if (n.length !== 32) {\n // throw new ArgumentError('MPTree branch item length', 32, n.length);\n // }\n if (this.#nodes[n.toString('hex')] == null) this.#isComplete = false;\n });\n break;\n case NodeType.Extension:\n if (this.#nodes[node[1].toString('hex')] == null) {\n throw new MissingNodeInTreeError('Can\\'t find a node by hash in extension node');\n }\n break;\n case NodeType.Leaf:\n break;\n default:\n throw new InternalError(`Unknown MPTree node type: ${type}`);\n }\n });\n }\n\n isEqual(tree: MPTree<E, T>): boolean {\n return this.#rootHash === tree.#rootHash;\n }\n\n static #parseNode(node: Buffer[]): { type: NodeType; value?: Buffer; path?: string } {\n switch (node.length) {\n case 17:\n return {\n type: NodeType.Branch,\n ...node[16].length !== 0 && { value: node[16] },\n };\n case 2: {\n const nibble = node[0][0] >> 4; // eslint-disable-line no-bitwise\n if (nibble > 3) throw new UnknownPathNibbleError(nibble);\n const type = nibble <= 1 ? NodeType.Extension : NodeType.Leaf;\n const slice = [0, 2].includes(nibble) ? 2 : 1;\n return {\n type,\n ...type === NodeType.Leaf && { value: node[1] },\n path: node[0].toString('hex').slice(slice),\n };\n }\n default:\n throw new UnknownNodeLengthError(node.length);\n }\n }\n\n /**\n * Serialize Merkle Patricia Tree\n * @returns Binary\n */\n serialize(): MPTreeBinary {\n return [\n Buffer.from(this.#rootHash, 'hex'),\n Object.entries(this.#nodes).map(([mptHash, value]) => ([\n Buffer.from(mptHash, 'hex'),\n value,\n ])),\n ];\n }\n\n /**\n * Retrieve value from Merkle Patricia Tree\n * @param _key - The key of the element to retrieve\n * @returns Value associated to the specified key\n */\n #getRaw(_key: string): Buffer | undefined {\n let searchFrom = this.#rootHash;\n let key = _key;\n while (true) { // eslint-disable-line no-constant-condition\n const node = this.#nodes[searchFrom];\n if (node == null) {\n if (!this.isComplete) return undefined;\n throw new InternalError('Can\\'t find node in complete tree');\n }\n const { type, value, path } = MPTree.#parseNode(node);\n switch (type) {\n case NodeType.Branch:\n if (key.length === 0) return value;\n searchFrom = node[+`0x${key[0]}`].toString('hex');\n key = key.substring(1);\n break;\n case NodeType.Extension:\n if (key.substring(0, path?.length) !== path) return undefined;\n searchFrom = node[1].toString('hex');\n key = key.substring(path.length);\n break;\n case NodeType.Leaf:\n if (path !== key) return undefined;\n return value;\n default:\n throw new InternalError(`Unknown MPTree node type: ${type}`);\n }\n }\n }\n\n /**\n * Retrieve value from Merkle Patricia Tree\n * @param key - The key of the element to retrieve\n * @returns Value associated to the specified key\n */\n get(key: Encoded.Generic<E>): TxUnpacked & { tag: T } | undefined {\n const d = this.#getRaw(decode(key).toString('hex'));\n if (d == null) return d;\n return this.#unpackTx(encode(d, Encoding.Transaction), this.#tag);\n }\n\n #entriesRaw(): Array<[string, Buffer]> {\n const entries: Array<[string, Buffer]> = [];\n const rec = (searchFrom: string, key: string): void => {\n const node = this.#nodes[searchFrom];\n if (node == null) {\n if (!this.isComplete) return;\n throw new InternalError('Can\\'t find node in complete tree');\n }\n const { type, value, path } = MPTree.#parseNode(node);\n switch (type) {\n case NodeType.Branch:\n node\n .slice(0, 16)\n .map((t, idx): [typeof t, number] => [t, idx])\n .filter(([t]) => t.length)\n .forEach(([t, idx]) => rec(t.toString('hex'), key + idx.toString(16)));\n if (value != null) entries.push([key, value]);\n break;\n case NodeType.Extension:\n rec(node[1].toString('hex'), key + path);\n break;\n case NodeType.Leaf:\n if (value == null) throw new UnexpectedTsError();\n entries.push([key + path, value]);\n break;\n default:\n throw new InternalError(`Unknown MPTree node type: ${type}`);\n }\n };\n rec(this.#rootHash, '');\n return entries;\n }\n\n toObject(): Record<Encoded.Generic<E>, TxUnpacked & { tag: T }> {\n return Object.fromEntries(this.#entriesRaw()\n // TODO: remove after resolving https://github.com/aeternity/aeternity/issues/4066\n .filter(([k]) => this.#encoding !== Encoding.ContractAddress || k.length !== 66)\n .map(([k, v]) => [\n encode(Buffer.from(k, 'hex'), this.#encoding),\n this.#unpackTx(encode(v, Encoding.Transaction), this.#tag),\n ])) as Record<Encoded.Generic<E>, TxUnpacked & { tag: T }>;\n }\n}\n\nexport default function genMPTreeField<E extends Encoding, T extends Tag>(encoding: E, tag: T): {\n serialize: (value: MPTree<E, T>) => MPTreeBinary;\n deserialize: (value: MPTreeBinary, o: { unpackTx: typeof unpackTx }) => MPTree<E, T>;\n} {\n return {\n serialize(value) {\n return value.serialize();\n },\n\n deserialize(value, { unpackTx }) {\n return new MPTree(value, encoding, tag, unpackTx);\n },\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mptree.mjs","names":["_rlp","encode","rlpEncode","hash","MerkleTreeHashMismatchError","MissingNodeInTreeError","UnknownPathNibbleError","UnexpectedTsError","UnknownNodeLengthError","InternalError","decode","Encoding","NodeType","_rootHash","WeakMap","_isComplete","_nodes","_encoding","_tag","_unpackTx","_getRaw","WeakSet","_entriesRaw","MPTree","isComplete","_classPrivateFieldGet","constructor","binary","encoding","tag","unpTx","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","writable","value","_classPrivateFieldSet","toString","Object","fromEntries","map","node","keys","length","entries","forEach","key","_classStaticPrivateMethodGet","_nodeHash","call","type","_parseNode","Branch","slice","filter","n","Extension","Leaf","isEqual","tree","serialize","_Buffer","from","mptHash","get","d","_classPrivateMethodGet","_getRaw2","Transaction","toObject","_entriesRaw2","k","ContractAddress","v","_MPTree","nibble","includes","path","_key","searchFrom","undefined","substring","rec","t","idx","push","genMPTreeField","deserialize","unpackTx"],"sources":["../../../../src/tx/builder/field-types/mptree.ts"],"sourcesContent":["import { encode as rlpEncode, Input } from 'rlp';\nimport { Tag } from '../constants';\nimport { hash } from '../../../utils/crypto';\nimport {\n MerkleTreeHashMismatchError,\n MissingNodeInTreeError,\n UnknownPathNibbleError,\n UnexpectedTsError,\n UnknownNodeLengthError,\n InternalError,\n} from '../../../utils/errors';\nimport {\n decode, encode, Encoded, Encoding,\n} from '../../../utils/encoder';\nimport type { unpackTx } from '..';\nimport type { TxUnpacked } from '../schema.generated';\n\nenum NodeType {\n Branch,\n Extension,\n Leaf,\n}\n\ntype MPTreeBinary = [Buffer, Array<[Buffer, Buffer[]]>];\n\nclass MPTree<E extends Encoding, T extends Tag> {\n readonly #rootHash: string;\n\n #isComplete = true;\n\n get isComplete(): boolean {\n return this.#isComplete;\n }\n\n readonly #nodes: { [key: string]: Buffer[] };\n\n readonly #encoding: E;\n\n readonly #tag: T;\n\n readonly #unpackTx: typeof unpackTx;\n\n static #nodeHash(node: Input): string {\n return Buffer.from(hash(rlpEncode(node))).toString('hex');\n }\n\n /**\n * Deserialize Merkle Patricia Tree\n * @param binary - Binary\n * @param tag - Tag to use to decode value\n * @param unpTx - Implementation of unpackTx use to decode values\n * @returns Merkle Patricia Tree\n */\n constructor(binary: MPTreeBinary, encoding: E, tag: T, unpTx: typeof unpackTx) {\n this.#encoding = encoding;\n this.#tag = tag;\n this.#unpackTx = unpTx;\n this.#rootHash = binary[0].toString('hex');\n this.#nodes = Object.fromEntries(\n binary[1].map((node) => [node[0].toString('hex'), node[1]]),\n );\n\n if (this.#nodes[this.#rootHash] == null) {\n if (Object.keys(this.#nodes).length !== 0) {\n throw new MissingNodeInTreeError('Can\\'t find a node by root hash');\n }\n this.#isComplete = false;\n return;\n }\n Object.entries(this.#nodes).forEach(([key, node]) => {\n if (MPTree.#nodeHash(node) !== key) throw new MerkleTreeHashMismatchError();\n const { type } = MPTree.#parseNode(node);\n switch (type) {\n case NodeType.Branch:\n node\n .slice(0, 16)\n .filter((n) => n.length)\n .forEach((n) => {\n // TODO: enable after resolving https://github.com/aeternity/aeternity/issues/4066\n // if (n.length !== 32) {\n // throw new ArgumentError('MPTree branch item length', 32, n.length);\n // }\n if (this.#nodes[n.toString('hex')] == null) this.#isComplete = false;\n });\n break;\n case NodeType.Extension:\n if (this.#nodes[node[1].toString('hex')] == null) {\n throw new MissingNodeInTreeError('Can\\'t find a node by hash in extension node');\n }\n break;\n case NodeType.Leaf:\n break;\n default:\n throw new InternalError(`Unknown MPTree node type: ${type}`);\n }\n });\n }\n\n isEqual(tree: MPTree<E, T>): boolean {\n return this.#rootHash === tree.#rootHash;\n }\n\n static #parseNode(node: Buffer[]): { type: NodeType; value?: Buffer; path?: string } {\n switch (node.length) {\n case 17:\n return {\n type: NodeType.Branch,\n ...node[16].length !== 0 && { value: node[16] },\n };\n case 2: {\n const nibble = node[0][0] >> 4; // eslint-disable-line no-bitwise\n if (nibble > 3) throw new UnknownPathNibbleError(nibble);\n const type = nibble <= 1 ? NodeType.Extension : NodeType.Leaf;\n const slice = [0, 2].includes(nibble) ? 2 : 1;\n return {\n type,\n ...type === NodeType.Leaf && { value: node[1] },\n path: node[0].toString('hex').slice(slice),\n };\n }\n default:\n throw new UnknownNodeLengthError(node.length);\n }\n }\n\n /**\n * Serialize Merkle Patricia Tree\n * @returns Binary\n */\n serialize(): MPTreeBinary {\n return [\n Buffer.from(this.#rootHash, 'hex'),\n Object.entries(this.#nodes).map(([mptHash, value]) => ([\n Buffer.from(mptHash, 'hex'),\n value,\n ])),\n ];\n }\n\n /**\n * Retrieve value from Merkle Patricia Tree\n * @param _key - The key of the element to retrieve\n * @returns Value associated to the specified key\n */\n #getRaw(_key: string): Buffer | undefined {\n let searchFrom = this.#rootHash;\n let key = _key;\n while (true) { // eslint-disable-line no-constant-condition\n const node = this.#nodes[searchFrom];\n if (node == null) {\n if (!this.isComplete) return undefined;\n throw new InternalError('Can\\'t find node in complete tree');\n }\n const { type, value, path } = MPTree.#parseNode(node);\n switch (type) {\n case NodeType.Branch:\n if (key.length === 0) return value;\n searchFrom = node[+`0x${key[0]}`].toString('hex');\n key = key.substring(1);\n break;\n case NodeType.Extension:\n if (key.substring(0, path?.length) !== path) return undefined;\n searchFrom = node[1].toString('hex');\n key = key.substring(path.length);\n break;\n case NodeType.Leaf:\n if (path !== key) return undefined;\n return value;\n default:\n throw new InternalError(`Unknown MPTree node type: ${type}`);\n }\n }\n }\n\n /**\n * Retrieve value from Merkle Patricia Tree\n * @param key - The key of the element to retrieve\n * @returns Value associated to the specified key\n */\n get(key: Encoded.Generic<E>): TxUnpacked & { tag: T } | undefined {\n const d = this.#getRaw(decode(key).toString('hex'));\n if (d == null) return d;\n return this.#unpackTx(encode(d, Encoding.Transaction), this.#tag);\n }\n\n #entriesRaw(): Array<[string, Buffer]> {\n const entries: Array<[string, Buffer]> = [];\n const rec = (searchFrom: string, key: string): void => {\n const node = this.#nodes[searchFrom];\n if (node == null) {\n if (!this.isComplete) return;\n throw new InternalError('Can\\'t find node in complete tree');\n }\n const { type, value, path } = MPTree.#parseNode(node);\n switch (type) {\n case NodeType.Branch:\n node\n .slice(0, 16)\n .map((t, idx): [typeof t, number] => [t, idx])\n .filter(([t]) => t.length)\n .forEach(([t, idx]) => rec(t.toString('hex'), key + idx.toString(16)));\n if (value != null) entries.push([key, value]);\n break;\n case NodeType.Extension:\n rec(node[1].toString('hex'), key + path);\n break;\n case NodeType.Leaf:\n if (value == null) throw new UnexpectedTsError();\n entries.push([key + path, value]);\n break;\n default:\n throw new InternalError(`Unknown MPTree node type: ${type}`);\n }\n };\n rec(this.#rootHash, '');\n return entries;\n }\n\n toObject(): Record<Encoded.Generic<E>, TxUnpacked & { tag: T }> {\n return Object.fromEntries(this.#entriesRaw()\n // TODO: remove after resolving https://github.com/aeternity/aeternity/issues/4066\n .filter(([k]) => this.#encoding !== Encoding.ContractAddress || k.length !== 66)\n .map(([k, v]) => [\n encode(Buffer.from(k, 'hex'), this.#encoding),\n this.#unpackTx(encode(v, Encoding.Transaction), this.#tag),\n ])) as Record<Encoded.Generic<E>, TxUnpacked & { tag: T }>;\n }\n}\n\nexport default function genMPTreeField<E extends Encoding, T extends Tag>(encoding: E, tag: T): {\n serialize: (value: MPTree<E, T>) => MPTreeBinary;\n deserialize: (value: MPTreeBinary, o: { unpackTx: typeof unpackTx }) => MPTree<E, T>;\n} {\n return {\n serialize(value) {\n return value.serialize();\n },\n\n deserialize(value, { unpackTx }) {\n return new MPTree(value, encoding, tag, unpackTx);\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"name-fee.mjs","names":["BigNumber","getMinimumNameFee","InsufficientNameFeeError","coinAmount","serializeAettos","_value","txFields","minNameFee","name","value","gt","toFixed","serialize","parameters","call"],"sources":["../../../../src/tx/builder/field-types/name-fee.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { getMinimumNameFee } from '../helpers';\nimport { InsufficientNameFeeError } from '../../../utils/errors';\nimport coinAmount from './coin-amount';\nimport { AensName, Int } from '../constants';\n\nexport default {\n ...coinAmount,\n\n serializeAettos(\n _value: string | undefined,\n txFields: { name: AensName },\n ): string {\n const minNameFee = getMinimumNameFee(txFields.name);\n const value = new BigNumber(_value ?? minNameFee);\n if (minNameFee.gt(value)) throw new InsufficientNameFeeError(value, minNameFee);\n return value.toFixed();\n },\n\n /**\n * @param value - AENS name fee
|
|
1
|
+
{"version":3,"file":"name-fee.mjs","names":["BigNumber","getMinimumNameFee","InsufficientNameFeeError","coinAmount","serializeAettos","_value","txFields","minNameFee","name","value","gt","toFixed","serialize","parameters","call"],"sources":["../../../../src/tx/builder/field-types/name-fee.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { getMinimumNameFee } from '../helpers';\nimport { InsufficientNameFeeError } from '../../../utils/errors';\nimport coinAmount from './coin-amount';\nimport { AensName, Int } from '../constants';\n\nexport default {\n ...coinAmount,\n\n serializeAettos(\n _value: string | undefined,\n txFields: { name: AensName },\n ): string {\n const minNameFee = getMinimumNameFee(txFields.name);\n const value = new BigNumber(_value ?? minNameFee);\n if (minNameFee.gt(value)) throw new InsufficientNameFeeError(value, minNameFee);\n return value.toFixed();\n },\n\n /**\n * @param value - AENS name fee\n * @param txFields - Transaction fields\n * @param txFields.name - AENS Name in transaction\n */\n serialize(\n value: Int | undefined,\n txFields: { name: AensName } & Parameters<typeof coinAmount['serialize']>[1],\n parameters: Parameters<typeof coinAmount['serialize']>[2],\n ): Buffer {\n return coinAmount.serialize.call(this, value, txFields, parameters);\n },\n};\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,cAAc;AAAC,SAC5BC,iBAAiB;AAAA,SACjBC,wBAAwB;AAAA,OAC1BC,UAAU;AAGjB,eAAe;EACb,GAAGA,UAAU;EAEbC,eAAeA,CACbC,MAA0B,EAC1BC,QAA4B,EACpB;IACR,MAAMC,UAAU,GAAGN,iBAAiB,CAACK,QAAQ,CAACE,IAAI,CAAC;IACnD,MAAMC,KAAK,GAAG,IAAIT,SAAS,CAACK,MAAM,aAANA,MAAM,cAANA,MAAM,GAAIE,UAAU,CAAC;IACjD,IAAIA,UAAU,CAACG,EAAE,CAACD,KAAK,CAAC,EAAE,MAAM,IAAIP,wBAAwB,CAACO,KAAK,EAAEF,UAAU,CAAC;IAC/E,OAAOE,KAAK,CAACE,OAAO,CAAC,CAAC;EACxB,CAAC;EAED;AACF;AACA;AACA;AACA;EACEC,SAASA,CACPH,KAAsB,EACtBH,QAA4E,EAC5EO,UAAyD,EACjD;IACR,OAAOV,UAAU,CAACS,SAAS,CAACE,IAAI,CAAC,IAAI,EAAEL,KAAK,EAAEH,QAAQ,EAAEO,UAAU,CAAC;EACrE;AACF,CAAC"}
|
|
@@ -6,6 +6,8 @@ export default function genNonceField(senderKey) {
|
|
|
6
6
|
...shortUInt,
|
|
7
7
|
async prepare(value, params, options) {
|
|
8
8
|
if (value != null) return value;
|
|
9
|
+
// TODO: uncomment the below line
|
|
10
|
+
// if (options._isInternalBuild === true) return 0;
|
|
9
11
|
const {
|
|
10
12
|
onNode,
|
|
11
13
|
strategy
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nonce.mjs","names":["isAccountNotFoundError","shortUInt","ArgumentError","genNonceField","senderKey","prepare","value","params","options","onNode","strategy","senderId","requirement","getAccountNextNonce","replace","catch","error","nextNonce"],"sources":["../../../../src/tx/builder/field-types/nonce.ts"],"sourcesContent":["import { isAccountNotFoundError } from '../../../utils/other';\nimport shortUInt from './short-u-int';\nimport Node from '../../../Node';\nimport { ArgumentError } from '../../../utils/errors';\nimport { NextNonceStrategy } from '../../../apis/node';\n\nexport default function genNonceField<SenderKey extends string>(senderKey: SenderKey): {\n serialize: (value: number) => Buffer;\n // TODO: (value: number) => Promise<number> | (value: undefined, ...) => Promise<number>\n prepare: (\n value: number | undefined,\n params: {},\n // TODO: replace `string` with AddressEncodings\n options: { [key in SenderKey]: string } & {
|
|
1
|
+
{"version":3,"file":"nonce.mjs","names":["isAccountNotFoundError","shortUInt","ArgumentError","genNonceField","senderKey","prepare","value","params","options","onNode","strategy","senderId","requirement","getAccountNextNonce","replace","catch","error","nextNonce"],"sources":["../../../../src/tx/builder/field-types/nonce.ts"],"sourcesContent":["import { isAccountNotFoundError } from '../../../utils/other';\nimport shortUInt from './short-u-int';\nimport Node from '../../../Node';\nimport { ArgumentError } from '../../../utils/errors';\nimport { NextNonceStrategy } from '../../../apis/node';\n\nexport default function genNonceField<SenderKey extends string>(senderKey: SenderKey): {\n serialize: (value: number) => Buffer;\n // TODO: (value: number) => Promise<number> | (value: undefined, ...) => Promise<number>\n prepare: (\n value: number | undefined,\n params: {},\n // TODO: replace `string` with AddressEncodings\n options: { [key in SenderKey]: string } & {\n strategy?: NextNonceStrategy;\n onNode?: Node;\n _isInternalBuild?: boolean;\n },\n ) => Promise<number>;\n deserialize: (value: Buffer) => number;\n senderKey: string;\n} {\n return {\n ...shortUInt,\n\n async prepare(value, params, options) {\n if (value != null) return value;\n // TODO: uncomment the below line\n // if (options._isInternalBuild === true) return 0;\n const { onNode, strategy } = options;\n const senderId = options[senderKey];\n const requirement = 'provided (or provide `nonce` instead)';\n if (onNode == null) throw new ArgumentError('onNode', requirement, onNode);\n if (senderId == null) throw new ArgumentError('senderId', requirement, senderId);\n return (\n await onNode.getAccountNextNonce(senderId.replace(/^ok_/, 'ak_'), { strategy })\n .catch((error) => {\n if (!isAccountNotFoundError(error)) throw error;\n return { nextNonce: 1 };\n })\n ).nextNonce;\n },\n\n senderKey,\n };\n}\n"],"mappings":"SAASA,sBAAsB;AAAA,OACxBC,SAAS;AAAA,SAEPC,aAAa;AAGtB,eAAe,SAASC,aAAaA,CAA2BC,SAAoB,EAelF;EACA,OAAO;IACL,GAAGH,SAAS;IAEZ,MAAMI,OAAOA,CAACC,KAAK,EAAEC,MAAM,EAAEC,OAAO,EAAE;MACpC,IAAIF,KAAK,IAAI,IAAI,EAAE,OAAOA,KAAK;MAC/B;MACA;MACA,MAAM;QAAEG,MAAM;QAAEC;MAAS,CAAC,GAAGF,OAAO;MACpC,MAAMG,QAAQ,GAAGH,OAAO,CAACJ,SAAS,CAAC;MACnC,MAAMQ,WAAW,GAAG,uCAAuC;MAC3D,IAAIH,MAAM,IAAI,IAAI,EAAE,MAAM,IAAIP,aAAa,CAAC,QAAQ,EAAEU,WAAW,EAAEH,MAAM,CAAC;MAC1E,IAAIE,QAAQ,IAAI,IAAI,EAAE,MAAM,IAAIT,aAAa,CAAC,UAAU,EAAEU,WAAW,EAAED,QAAQ,CAAC;MAChF,OAAO,CACL,MAAMF,MAAM,CAACI,mBAAmB,CAACF,QAAQ,CAACG,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;QAAEJ;MAAS,CAAC,CAAC,CAC5EK,KAAK,CAAEC,KAAK,IAAK;QAChB,IAAI,CAAChB,sBAAsB,CAACgB,KAAK,CAAC,EAAE,MAAMA,KAAK;QAC/C,OAAO;UAAEC,SAAS,EAAE;QAAE,CAAC;MACzB,CAAC,CAAC,EACJA,SAAS;IACb,CAAC;IAEDb;EACF,CAAC;AACH"}
|
|
@@ -24,13 +24,10 @@ export default {
|
|
|
24
24
|
* @returns Deserialize pointer array
|
|
25
25
|
*/
|
|
26
26
|
deserialize(pointers) {
|
|
27
|
-
return pointers.map(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
id: addressAny.deserialize(id)
|
|
32
|
-
};
|
|
33
|
-
});
|
|
27
|
+
return pointers.map(([key, id]) => ({
|
|
28
|
+
key: key.toString(),
|
|
29
|
+
id: addressAny.deserialize(id)
|
|
30
|
+
}));
|
|
34
31
|
}
|
|
35
32
|
};
|
|
36
33
|
//# sourceMappingURL=pointers.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointers.mjs","names":["toBytes","IllegalArgumentError","address","idTagToEncoding","addressAny","serialize","pointers","length","map","pointer","key","id","deserialize","
|
|
1
|
+
{"version":3,"file":"pointers.mjs","names":["toBytes","IllegalArgumentError","address","idTagToEncoding","addressAny","serialize","pointers","length","map","pointer","key","id","deserialize","toString"],"sources":["../../../../src/tx/builder/field-types/pointers.ts"],"sourcesContent":["import { NamePointer as NamePointerString } from '../../../apis/node';\nimport { toBytes } from '../../../utils/bytes';\nimport { Encoded } from '../../../utils/encoder';\nimport { IllegalArgumentError } from '../../../utils/errors';\nimport address, { AddressEncodings, idTagToEncoding } from './address';\n\nconst addressAny = address(...idTagToEncoding);\n\n// TODO: remove after fixing node types\ntype NamePointer = NamePointerString & {\n id: Encoded.Generic<AddressEncodings>;\n};\n\nexport default {\n /**\n * Helper function to build pointers for name update TX\n * @param pointers - Array of pointers\n * `([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])`\n * @returns Serialized pointers array\n */\n serialize(pointers: NamePointer[]): Buffer[][] {\n if (pointers.length > 32) {\n throw new IllegalArgumentError(`Expected 32 pointers or less, got ${pointers.length} instead`);\n }\n\n return pointers.map(\n (pointer) => [toBytes(pointer.key), addressAny.serialize(pointer.id)],\n );\n },\n\n /**\n * Helper function to read pointers from name update TX\n * @param pointers - Array of pointers\n * @returns Deserialize pointer array\n */\n deserialize(pointers: Array<[key: Buffer, id: Buffer]>): NamePointer[] {\n return pointers.map(\n ([key, id]) => ({ key: key.toString(), id: addressAny.deserialize(id) }),\n );\n },\n};\n"],"mappings":"SACSA,OAAO;AAAA,SAEPC,oBAAoB;AAAA,OACtBC,OAAO,IAAsBC,eAAe;AAEnD,MAAMC,UAAU,GAAGF,OAAO,CAAC,GAAGC,eAAe,CAAC;;AAE9C;;AAKA,eAAe;EACb;AACF;AACA;AACA;AACA;AACA;EACEE,SAASA,CAACC,QAAuB,EAAc;IAC7C,IAAIA,QAAQ,CAACC,MAAM,GAAG,EAAE,EAAE;MACxB,MAAM,IAAIN,oBAAoB,CAAE,qCAAoCK,QAAQ,CAACC,MAAO,UAAS,CAAC;IAChG;IAEA,OAAOD,QAAQ,CAACE,GAAG,CAChBC,OAAO,IAAK,CAACT,OAAO,CAACS,OAAO,CAACC,GAAG,CAAC,EAAEN,UAAU,CAACC,SAAS,CAACI,OAAO,CAACE,EAAE,CAAC,CACtE,CAAC;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;EACEC,WAAWA,CAACN,QAA0C,EAAiB;IACrE,OAAOA,QAAQ,CAACE,GAAG,CACjB,CAAC,CAACE,GAAG,EAAEC,EAAE,CAAC,MAAM;MAAED,GAAG,EAAEA,GAAG,CAACG,QAAQ,CAAC,CAAC;MAAEF,EAAE,EAAEP,UAAU,CAACQ,WAAW,CAACD,EAAE;IAAE,CAAC,CACzE,CAAC;EACH;AACF,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { NamePointer as NamePointerString } from '../../../apis/node';
|
|
3
|
+
import { Encoded, Encoding } from '../../../utils/encoder';
|
|
4
|
+
import { AddressEncodings } from './address';
|
|
5
|
+
type NamePointer = NamePointerString & {
|
|
6
|
+
id: Encoded.Generic<AddressEncodings | Encoding.Bytearray>;
|
|
7
|
+
};
|
|
8
|
+
declare const _default: {
|
|
9
|
+
/**
|
|
10
|
+
* Helper function to build pointers for name update TX
|
|
11
|
+
* @param pointers - Array of pointers
|
|
12
|
+
* `([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])`
|
|
13
|
+
* @returns Serialized pointers array
|
|
14
|
+
*/
|
|
15
|
+
serialize(pointers: NamePointer[]): Buffer[][];
|
|
16
|
+
/**
|
|
17
|
+
* Helper function to read pointers from name update TX
|
|
18
|
+
* @param pointers - Array of pointers
|
|
19
|
+
* @returns Deserialize pointer array
|
|
20
|
+
*/
|
|
21
|
+
deserialize(pointers: Array<[key: Buffer, id: Buffer]>): NamePointer[];
|
|
22
|
+
};
|
|
23
|
+
export default _default;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import _buffer from "buffer";
|
|
2
|
+
const {
|
|
3
|
+
Buffer: _Buffer
|
|
4
|
+
} = _buffer;
|
|
5
|
+
import { toBytes } from "../../../utils/bytes.mjs";
|
|
6
|
+
import { Encoding, decode, encode } from "../../../utils/encoder.mjs";
|
|
7
|
+
import { isAddressValid } from "../../../utils/crypto.mjs";
|
|
8
|
+
import { IllegalArgumentError, DecodeError, ArgumentError } from "../../../utils/errors.mjs";
|
|
9
|
+
import address, { idTagToEncoding } from "./address.mjs";
|
|
10
|
+
const ID_TAG = _Buffer.from([1]);
|
|
11
|
+
const DATA_TAG = _Buffer.from([2]);
|
|
12
|
+
const DATA_LENGTH_MAX = 1024;
|
|
13
|
+
const addressAny = address(...idTagToEncoding);
|
|
14
|
+
|
|
15
|
+
// TODO: remove after fixing node types
|
|
16
|
+
|
|
17
|
+
export default {
|
|
18
|
+
/**
|
|
19
|
+
* Helper function to build pointers for name update TX
|
|
20
|
+
* @param pointers - Array of pointers
|
|
21
|
+
* `([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])`
|
|
22
|
+
* @returns Serialized pointers array
|
|
23
|
+
*/
|
|
24
|
+
serialize(pointers) {
|
|
25
|
+
if (pointers.length > 32) {
|
|
26
|
+
throw new IllegalArgumentError(`Expected 32 pointers or less, got ${pointers.length} instead`);
|
|
27
|
+
}
|
|
28
|
+
return pointers.map(({
|
|
29
|
+
key,
|
|
30
|
+
id
|
|
31
|
+
}) => {
|
|
32
|
+
let payload;
|
|
33
|
+
if (isAddressValid(id, ...idTagToEncoding)) payload = [ID_TAG, addressAny.serialize(id)];
|
|
34
|
+
if (isAddressValid(id, Encoding.Bytearray)) {
|
|
35
|
+
const data = decode(id);
|
|
36
|
+
if (data.length > DATA_LENGTH_MAX) {
|
|
37
|
+
throw new ArgumentError('Raw pointer', `shorter than ${DATA_LENGTH_MAX + 1} bytes`, `${data.length} bytes`);
|
|
38
|
+
}
|
|
39
|
+
payload = [DATA_TAG, data];
|
|
40
|
+
}
|
|
41
|
+
if (payload == null) throw new DecodeError(`Unknown AENS pointer value: ${id}`);
|
|
42
|
+
return [toBytes(key), _Buffer.concat(payload)];
|
|
43
|
+
});
|
|
44
|
+
},
|
|
45
|
+
/**
|
|
46
|
+
* Helper function to read pointers from name update TX
|
|
47
|
+
* @param pointers - Array of pointers
|
|
48
|
+
* @returns Deserialize pointer array
|
|
49
|
+
*/
|
|
50
|
+
deserialize(pointers) {
|
|
51
|
+
return pointers.map(([bKey, bId]) => {
|
|
52
|
+
const tag = bId.subarray(0, 1);
|
|
53
|
+
const payload = bId.subarray(1);
|
|
54
|
+
let id;
|
|
55
|
+
if (tag.equals(ID_TAG)) id = addressAny.deserialize(payload);
|
|
56
|
+
if (tag.equals(DATA_TAG)) id = encode(payload, Encoding.Bytearray);
|
|
57
|
+
if (id == null) throw new DecodeError(`Unknown AENS pointer tag: ${tag}`);
|
|
58
|
+
return {
|
|
59
|
+
key: bKey.toString(),
|
|
60
|
+
id
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=pointers2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pointers2.mjs","names":["toBytes","Encoding","decode","encode","isAddressValid","IllegalArgumentError","DecodeError","ArgumentError","address","idTagToEncoding","ID_TAG","_Buffer","from","DATA_TAG","DATA_LENGTH_MAX","addressAny","serialize","pointers","length","map","key","id","payload","Bytearray","data","concat","deserialize","bKey","bId","tag","subarray","equals","toString"],"sources":["../../../../src/tx/builder/field-types/pointers2.ts"],"sourcesContent":["import { NamePointer as NamePointerString } from '../../../apis/node';\nimport { toBytes } from '../../../utils/bytes';\nimport {\n Encoded, Encoding, decode, encode,\n} from '../../../utils/encoder';\nimport { isAddressValid } from '../../../utils/crypto';\nimport { IllegalArgumentError, DecodeError, ArgumentError } from '../../../utils/errors';\nimport address, { AddressEncodings, idTagToEncoding } from './address';\n\nconst ID_TAG = Buffer.from([1]);\nconst DATA_TAG = Buffer.from([2]);\nconst DATA_LENGTH_MAX = 1024;\nconst addressAny = address(...idTagToEncoding);\n\n// TODO: remove after fixing node types\ntype NamePointer = NamePointerString & {\n id: Encoded.Generic<AddressEncodings | Encoding.Bytearray>;\n};\n\nexport default {\n /**\n * Helper function to build pointers for name update TX\n * @param pointers - Array of pointers\n * `([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])`\n * @returns Serialized pointers array\n */\n serialize(pointers: NamePointer[]): Buffer[][] {\n if (pointers.length > 32) {\n throw new IllegalArgumentError(`Expected 32 pointers or less, got ${pointers.length} instead`);\n }\n return pointers.map(({ key, id }) => {\n let payload;\n if (isAddressValid(id, ...idTagToEncoding)) payload = [ID_TAG, addressAny.serialize(id)];\n if (isAddressValid(id, Encoding.Bytearray)) {\n const data = decode(id);\n if (data.length > DATA_LENGTH_MAX) {\n throw new ArgumentError('Raw pointer', `shorter than ${DATA_LENGTH_MAX + 1} bytes`, `${data.length} bytes`);\n }\n payload = [DATA_TAG, data];\n }\n if (payload == null) throw new DecodeError(`Unknown AENS pointer value: ${id}`);\n return [toBytes(key), Buffer.concat(payload)];\n });\n },\n\n /**\n * Helper function to read pointers from name update TX\n * @param pointers - Array of pointers\n * @returns Deserialize pointer array\n */\n deserialize(pointers: Array<[key: Buffer, id: Buffer]>): NamePointer[] {\n return pointers.map(([bKey, bId]) => {\n const tag = bId.subarray(0, 1);\n const payload = bId.subarray(1);\n let id;\n if (tag.equals(ID_TAG)) id = addressAny.deserialize(payload);\n if (tag.equals(DATA_TAG)) id = encode(payload, Encoding.Bytearray);\n if (id == null) throw new DecodeError(`Unknown AENS pointer tag: ${tag}`);\n return { key: bKey.toString(), id };\n });\n },\n};\n"],"mappings":";;;;SACSA,OAAO;AAAA,SAELC,QAAQ,EAAEC,MAAM,EAAEC,MAAM;AAAA,SAE1BC,cAAc;AAAA,SACdC,oBAAoB,EAAEC,WAAW,EAAEC,aAAa;AAAA,OAClDC,OAAO,IAAsBC,eAAe;AAEnD,MAAMC,MAAM,GAAGC,OAAA,CAAOC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,MAAMC,QAAQ,GAAGF,OAAA,CAAOC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,MAAME,eAAe,GAAG,IAAI;AAC5B,MAAMC,UAAU,GAAGP,OAAO,CAAC,GAAGC,eAAe,CAAC;;AAE9C;;AAKA,eAAe;EACb;AACF;AACA;AACA;AACA;AACA;EACEO,SAASA,CAACC,QAAuB,EAAc;IAC7C,IAAIA,QAAQ,CAACC,MAAM,GAAG,EAAE,EAAE;MACxB,MAAM,IAAIb,oBAAoB,CAAE,qCAAoCY,QAAQ,CAACC,MAAO,UAAS,CAAC;IAChG;IACA,OAAOD,QAAQ,CAACE,GAAG,CAAC,CAAC;MAAEC,GAAG;MAAEC;IAAG,CAAC,KAAK;MACnC,IAAIC,OAAO;MACX,IAAIlB,cAAc,CAACiB,EAAE,EAAE,GAAGZ,eAAe,CAAC,EAAEa,OAAO,GAAG,CAACZ,MAAM,EAAEK,UAAU,CAACC,SAAS,CAACK,EAAE,CAAC,CAAC;MACxF,IAAIjB,cAAc,CAACiB,EAAE,EAAEpB,QAAQ,CAACsB,SAAS,CAAC,EAAE;QAC1C,MAAMC,IAAI,GAAGtB,MAAM,CAACmB,EAAE,CAAC;QACvB,IAAIG,IAAI,CAACN,MAAM,GAAGJ,eAAe,EAAE;UACjC,MAAM,IAAIP,aAAa,CAAC,aAAa,EAAG,gBAAeO,eAAe,GAAG,CAAE,QAAO,EAAG,GAAEU,IAAI,CAACN,MAAO,QAAO,CAAC;QAC7G;QACAI,OAAO,GAAG,CAACT,QAAQ,EAAEW,IAAI,CAAC;MAC5B;MACA,IAAIF,OAAO,IAAI,IAAI,EAAE,MAAM,IAAIhB,WAAW,CAAE,+BAA8Be,EAAG,EAAC,CAAC;MAC/E,OAAO,CAACrB,OAAO,CAACoB,GAAG,CAAC,EAAET,OAAA,CAAOc,MAAM,CAACH,OAAO,CAAC,CAAC;IAC/C,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;EACEI,WAAWA,CAACT,QAA0C,EAAiB;IACrE,OAAOA,QAAQ,CAACE,GAAG,CAAC,CAAC,CAACQ,IAAI,EAAEC,GAAG,CAAC,KAAK;MACnC,MAAMC,GAAG,GAAGD,GAAG,CAACE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;MAC9B,MAAMR,OAAO,GAAGM,GAAG,CAACE,QAAQ,CAAC,CAAC,CAAC;MAC/B,IAAIT,EAAE;MACN,IAAIQ,GAAG,CAACE,MAAM,CAACrB,MAAM,CAAC,EAAEW,EAAE,GAAGN,UAAU,CAACW,WAAW,CAACJ,OAAO,CAAC;MAC5D,IAAIO,GAAG,CAACE,MAAM,CAAClB,QAAQ,CAAC,EAAEQ,EAAE,GAAGlB,MAAM,CAACmB,OAAO,EAAErB,QAAQ,CAACsB,SAAS,CAAC;MAClE,IAAIF,EAAE,IAAI,IAAI,EAAE,MAAM,IAAIf,WAAW,CAAE,6BAA4BuB,GAAI,EAAC,CAAC;MACzE,OAAO;QAAET,GAAG,EAAEO,IAAI,CAACK,QAAQ,CAAC,CAAC;QAAEX;MAAG,CAAC;IACrC,CAAC,CAAC;EACJ;AACF,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Int } from '../constants';
|
|
3
|
+
import Node from '../../../Node';
|
|
4
|
+
import { Encoded } from '../../../utils/encoder';
|
|
5
|
+
/**
|
|
6
|
+
* Oracle query fee
|
|
7
|
+
*/
|
|
8
|
+
declare const _default: {
|
|
9
|
+
prepare(value: Int | undefined, params: {}, options: {
|
|
10
|
+
oracleId?: Encoded.OracleAddress;
|
|
11
|
+
onNode?: Node;
|
|
12
|
+
}): Promise<Int>;
|
|
13
|
+
serializeAettos(value: string | undefined, params: {}, options: {}): string;
|
|
14
|
+
serialize(value: Int | undefined, params: {}, { denomination, ...options }: {
|
|
15
|
+
denomination?: import("../../..").AE_AMOUNT_FORMATS | undefined;
|
|
16
|
+
}): Buffer;
|
|
17
|
+
deserialize(value: Buffer): string;
|
|
18
|
+
};
|
|
19
|
+
export default _default;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import coinAmount from "./coin-amount.mjs";
|
|
2
|
+
import { ArgumentError } from "../../../utils/errors.mjs";
|
|
3
|
+
/**
|
|
4
|
+
* Oracle query fee
|
|
5
|
+
*/
|
|
6
|
+
export default {
|
|
7
|
+
...coinAmount,
|
|
8
|
+
async prepare(value, params, options) {
|
|
9
|
+
if (value != null) return value;
|
|
10
|
+
const {
|
|
11
|
+
onNode,
|
|
12
|
+
oracleId
|
|
13
|
+
} = options;
|
|
14
|
+
const requirement = 'provided (or provide `queryFee` instead)';
|
|
15
|
+
if (onNode == null) throw new ArgumentError('onNode', requirement, onNode);
|
|
16
|
+
if (oracleId == null) throw new ArgumentError('oracleId', requirement, oracleId);
|
|
17
|
+
return (await onNode.getOracleByPubkey(oracleId)).queryFee.toString();
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=query-fee.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-fee.mjs","names":["coinAmount","ArgumentError","prepare","value","params","options","onNode","oracleId","requirement","getOracleByPubkey","queryFee","toString"],"sources":["../../../../src/tx/builder/field-types/query-fee.ts"],"sourcesContent":["import coinAmount from './coin-amount';\nimport { Int } from '../constants';\nimport Node from '../../../Node';\nimport { Encoded } from '../../../utils/encoder';\nimport { ArgumentError } from '../../../utils/errors';\n\n/**\n * Oracle query fee\n */\nexport default {\n ...coinAmount,\n\n async prepare(\n value: Int | undefined,\n params: {},\n options: { oracleId?: Encoded.OracleAddress; onNode?: Node },\n ) {\n if (value != null) return value;\n const { onNode, oracleId } = options;\n const requirement = 'provided (or provide `queryFee` instead)';\n if (onNode == null) throw new ArgumentError('onNode', requirement, onNode);\n if (oracleId == null) throw new ArgumentError('oracleId', requirement, oracleId);\n return (await onNode.getOracleByPubkey(oracleId)).queryFee.toString();\n },\n};\n"],"mappings":"OAAOA,UAAU;AAAA,SAIRC,aAAa;AAEtB;AACA;AACA;AACA,eAAe;EACb,GAAGD,UAAU;EAEb,MAAME,OAAOA,CACXC,KAAsB,EACtBC,MAAU,EACVC,OAA4D,EAC5D;IACA,IAAIF,KAAK,IAAI,IAAI,EAAE,OAAOA,KAAK;IAC/B,MAAM;MAAEG,MAAM;MAAEC;IAAS,CAAC,GAAGF,OAAO;IACpC,MAAMG,WAAW,GAAG,0CAA0C;IAC9D,IAAIF,MAAM,IAAI,IAAI,EAAE,MAAM,IAAIL,aAAa,CAAC,QAAQ,EAAEO,WAAW,EAAEF,MAAM,CAAC;IAC1E,IAAIC,QAAQ,IAAI,IAAI,EAAE,MAAM,IAAIN,aAAa,CAAC,UAAU,EAAEO,WAAW,EAAED,QAAQ,CAAC;IAChF,OAAO,CAAC,MAAMD,MAAM,CAACG,iBAAiB,CAACF,QAAQ,CAAC,EAAEG,QAAQ,CAACC,QAAQ,CAAC,CAAC;EACvE;AACF,CAAC"}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import Node from '../../../Node';
|
|
3
|
+
import { _getPollInterval } from '../../../chain';
|
|
4
|
+
/**
|
|
5
|
+
* Time to leave
|
|
6
|
+
*/
|
|
3
7
|
declare const _default: {
|
|
4
8
|
serialize(value: number | undefined): Buffer;
|
|
5
|
-
prepare(value: number | undefined, params: {}, { onNode, absoluteTtl }: {
|
|
9
|
+
prepare(value: number | undefined, params: {}, { onNode, absoluteTtl, _isInternalBuild, ...options }: {
|
|
6
10
|
onNode?: Node | undefined;
|
|
7
11
|
absoluteTtl?: boolean | undefined;
|
|
12
|
+
_isInternalBuild?: boolean | undefined;
|
|
13
|
+
} & {
|
|
14
|
+
_expectedMineRate?: number | undefined;
|
|
15
|
+
_microBlockCycle?: number | undefined;
|
|
8
16
|
}): Promise<number | undefined>;
|
|
9
17
|
deserialize(value: Buffer): number;
|
|
10
18
|
};
|
|
@@ -1,19 +1,30 @@
|
|
|
1
1
|
import shortUInt from "./short-u-int.mjs";
|
|
2
2
|
import { ArgumentError } from "../../../utils/errors.mjs";
|
|
3
|
+
import { getHeight } from "../../../chain.mjs";
|
|
4
|
+
/**
|
|
5
|
+
* Time to leave
|
|
6
|
+
*/
|
|
3
7
|
export default {
|
|
4
8
|
...shortUInt,
|
|
5
9
|
serialize(value) {
|
|
6
10
|
return shortUInt.serialize(value !== null && value !== void 0 ? value : 0);
|
|
7
11
|
},
|
|
8
|
-
async prepare(value, params,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
async prepare(value, params,
|
|
13
|
+
// TODO: { absoluteTtl: true } | { absoluteTtl: false, onNode: Node }
|
|
14
|
+
{
|
|
15
|
+
onNode,
|
|
16
|
+
absoluteTtl,
|
|
17
|
+
_isInternalBuild,
|
|
18
|
+
...options
|
|
19
|
+
}) {
|
|
20
|
+
if (absoluteTtl !== true && value !== 0 && (value != null || _isInternalBuild === true)) {
|
|
21
|
+
var _value;
|
|
15
22
|
if (onNode == null) throw new ArgumentError('onNode', 'provided', onNode);
|
|
16
|
-
value
|
|
23
|
+
value = ((_value = value) !== null && _value !== void 0 ? _value : 3) + (await getHeight({
|
|
24
|
+
...options,
|
|
25
|
+
onNode,
|
|
26
|
+
cached: true
|
|
27
|
+
}));
|
|
17
28
|
}
|
|
18
29
|
return value;
|
|
19
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ttl.mjs","names":["shortUInt","ArgumentError","serialize","value","prepare","params","
|
|
1
|
+
{"version":3,"file":"ttl.mjs","names":["shortUInt","ArgumentError","getHeight","serialize","value","prepare","params","onNode","absoluteTtl","_isInternalBuild","options","_value","cached"],"sources":["../../../../src/tx/builder/field-types/ttl.ts"],"sourcesContent":["import shortUInt from './short-u-int';\nimport Node from '../../../Node';\nimport { ArgumentError } from '../../../utils/errors';\nimport { _getPollInterval, getHeight } from '../../../chain';\n\n/**\n * Time to leave\n */\nexport default {\n ...shortUInt,\n\n serialize(value: number | undefined): Buffer {\n return shortUInt.serialize(value ?? 0);\n },\n\n async prepare(\n value: number | undefined,\n params: {},\n // TODO: { absoluteTtl: true } | { absoluteTtl: false, onNode: Node }\n {\n onNode, absoluteTtl, _isInternalBuild, ...options\n }: {\n onNode?: Node;\n absoluteTtl?: boolean;\n _isInternalBuild?: boolean;\n } & Parameters<typeof _getPollInterval>[1],\n ) {\n if (absoluteTtl !== true && value !== 0 && (value != null || _isInternalBuild === true)) {\n if (onNode == null) throw new ArgumentError('onNode', 'provided', onNode);\n value = (value ?? 3) + await getHeight({ ...options, onNode, cached: true });\n }\n return value;\n },\n};\n"],"mappings":"OAAOA,SAAS;AAAA,SAEPC,aAAa;AAAA,SACKC,SAAS;AAEpC;AACA;AACA;AACA,eAAe;EACb,GAAGF,SAAS;EAEZG,SAASA,CAACC,KAAyB,EAAU;IAC3C,OAAOJ,SAAS,CAACG,SAAS,CAACC,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC;EACxC,CAAC;EAED,MAAMC,OAAOA,CACXD,KAAyB,EACzBE,MAAU;EACV;EACA;IACEC,MAAM;IAAEC,WAAW;IAAEC,gBAAgB;IAAE,GAAGC;EAKH,CAAC,EAC1C;IACA,IAAIF,WAAW,KAAK,IAAI,IAAIJ,KAAK,KAAK,CAAC,KAAKA,KAAK,IAAI,IAAI,IAAIK,gBAAgB,KAAK,IAAI,CAAC,EAAE;MAAA,IAAAE,MAAA;MACvF,IAAIJ,MAAM,IAAI,IAAI,EAAE,MAAM,IAAIN,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAEM,MAAM,CAAC;MACzEH,KAAK,GAAG,EAAAO,MAAA,GAACP,KAAK,cAAAO,MAAA,cAAAA,MAAA,GAAI,CAAC,KAAI,MAAMT,SAAS,CAAC;QAAE,GAAGQ,OAAO;QAAEH,MAAM;QAAEK,MAAM,EAAE;MAAK,CAAC,CAAC;IAC9E;IACA,OAAOR,KAAK;EACd;AACF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export default function withDefault<Input, Output, Binary>(defaultValue: Input, field: {
|
|
2
|
+
serialize: (value: Input, params: unknown) => Binary;
|
|
3
|
+
deserialize: (value: Binary, params: unknown) => Output;
|
|
4
|
+
}): {
|
|
5
|
+
serialize: (value: Input | undefined, params: unknown) => Binary;
|
|
6
|
+
deserialize: (value: Binary, params: unknown) => Output;
|
|
7
|
+
};
|