@aeternity/aepp-sdk 12.1.3 → 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 -8859
- 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 +86 -47
- 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 -508
- 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 -537
- 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
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { EventEmitter } from 'events';
|
|
4
|
+
import { w3cwebsocket as W3CWebSocket } from 'websocket';
|
|
5
|
+
import { SignTx, ChannelOptions, ChannelState, ChannelHandler, ChannelAction, ChannelStatus, ChannelFsm } from './internal';
|
|
6
|
+
import { Encoded } from '../utils/encoder';
|
|
7
|
+
type EventCallback = (...args: any[]) => void;
|
|
8
|
+
/**
|
|
9
|
+
* Channel
|
|
10
|
+
* @example
|
|
11
|
+
* ```js
|
|
12
|
+
* await Channel.initialize({
|
|
13
|
+
* url: 'ws://localhost:3001',
|
|
14
|
+
* role: 'initiator'
|
|
15
|
+
* initiatorId: 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',
|
|
16
|
+
* responderId: 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E',
|
|
17
|
+
* initiatorAmount: 1e18,
|
|
18
|
+
* responderAmount: 1e18,
|
|
19
|
+
* pushAmount: 0,
|
|
20
|
+
* channelReserve: 0,
|
|
21
|
+
* ttl: 1000,
|
|
22
|
+
* host: 'localhost',
|
|
23
|
+
* port: 3002,
|
|
24
|
+
* lockPeriod: 10,
|
|
25
|
+
* async sign (tag, tx) => await account.signTransaction(tx)
|
|
26
|
+
* })
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export default class Channel {
|
|
30
|
+
_eventEmitter: EventEmitter;
|
|
31
|
+
_pingTimeoutId: NodeJS.Timeout;
|
|
32
|
+
_nextRpcMessageId: number;
|
|
33
|
+
_rpcCallbacks: Map<number, (message: object) => void>;
|
|
34
|
+
_fsmId?: Encoded.Bytearray;
|
|
35
|
+
_messageQueue: object[];
|
|
36
|
+
_isMessageQueueLocked: boolean;
|
|
37
|
+
_actionQueue: ChannelAction[];
|
|
38
|
+
_isActionQueueLocked: boolean;
|
|
39
|
+
_status: ChannelStatus;
|
|
40
|
+
_fsm: ChannelFsm;
|
|
41
|
+
_websocket: W3CWebSocket;
|
|
42
|
+
_state?: Encoded.Transaction;
|
|
43
|
+
_options: ChannelOptions;
|
|
44
|
+
_channelId?: Encoded.Channel;
|
|
45
|
+
/**
|
|
46
|
+
* @param options - Channel params
|
|
47
|
+
* @param options.url - Channel url (for example: "ws://localhost:3001")
|
|
48
|
+
* @param options.role - Participant role ("initiator" or "responder")
|
|
49
|
+
* @param options.initiatorId - Initiator's public key
|
|
50
|
+
* @param options.responderId - Responder's public key
|
|
51
|
+
* @param options.pushAmount - Initial deposit in favour of the responder by the initiator
|
|
52
|
+
* @param options.initiatorAmount - Amount of coins the initiator has committed to
|
|
53
|
+
* the channel
|
|
54
|
+
* @param options.responderAmount - Amount of coins the responder has committed to
|
|
55
|
+
* the channel
|
|
56
|
+
* @param options.channelReserve - The minimum amount both peers need to maintain
|
|
57
|
+
* @param options.ttl - Minimum block height to include the channel_create_tx
|
|
58
|
+
* @param options.host - Host of the responder's node
|
|
59
|
+
* @param options.port - The port of the responders node
|
|
60
|
+
* @param options.lockPeriod - Amount of blocks for disputing a solo close
|
|
61
|
+
* @param options.minimumDepthStrategy - How to calculate minimum depth (default: txfee)
|
|
62
|
+
* @param options.minimumDepth - The minimum amount of blocks to be mined
|
|
63
|
+
* @param options.fee - The fee to be used for the channel open transaction
|
|
64
|
+
* @param options.gasPrice - Used for the fee computation of the channel open transaction
|
|
65
|
+
* @param options.existingChannelId - Existing channel id (required if reestablishing a
|
|
66
|
+
* channel)
|
|
67
|
+
* @param options.offchainTx - Offchain transaction (required if reestablishing
|
|
68
|
+
* a channel)
|
|
69
|
+
* @param options.timeoutIdle - The time waiting for a new event to be initiated
|
|
70
|
+
* (default: 600000)
|
|
71
|
+
* @param options.timeoutFundingCreate - The time waiting for the initiator to produce
|
|
72
|
+
* the create channel transaction after the noise session had been established (default: 120000)
|
|
73
|
+
* @param options.timeoutFundingSign - The time frame the other client has to sign an
|
|
74
|
+
* off-chain update after our client had initiated and signed it. This applies only for double
|
|
75
|
+
* signed on-chain intended updates: channel create transaction, deposit, withdrawal and etc.
|
|
76
|
+
* (default: 120000)
|
|
77
|
+
* @param options.timeoutFundingLock - The time frame the other client has to confirm an
|
|
78
|
+
* on-chain transaction reaching maturity (passing minimum depth) after the local node has
|
|
79
|
+
* detected this. This applies only for double signed on-chain intended updates: channel create
|
|
80
|
+
* transaction, deposit, withdrawal and etc. (default: 360000)
|
|
81
|
+
* @param options.timeoutSign - The time frame the client has to return a signed
|
|
82
|
+
* off-chain update or to decline it. This applies for all off-chain updates (default: 500000)
|
|
83
|
+
* @param options.timeoutAccept - The time frame the other client has to react to an
|
|
84
|
+
* event. This applies for all off-chain updates that are not meant to land on-chain, as well as
|
|
85
|
+
* some special cases: opening a noise connection, mutual closing acknowledgement and
|
|
86
|
+
* reestablishing an existing channel (default: 120000)
|
|
87
|
+
* @param options.timeoutInitialized - the time frame the responder has to accept an
|
|
88
|
+
* incoming noise session. Applicable only for initiator (default: timeout_accept's value)
|
|
89
|
+
* @param options.timeoutAwaitingOpen - The time frame the initiator has to start an
|
|
90
|
+
* outgoing noise session to the responder's node. Applicable only for responder (default:
|
|
91
|
+
* timeout_idle's value)
|
|
92
|
+
* @param options.debug=false - Log websocket communication
|
|
93
|
+
* @param options.sign - Function which verifies and signs transactions
|
|
94
|
+
*/
|
|
95
|
+
static initialize(options: ChannelOptions): Promise<Channel>;
|
|
96
|
+
static _initialize<T extends Channel>(channel: T, options: ChannelOptions): Promise<T>;
|
|
97
|
+
/**
|
|
98
|
+
* Register event listener function
|
|
99
|
+
*
|
|
100
|
+
* Possible events:
|
|
101
|
+
*
|
|
102
|
+
* - "error"
|
|
103
|
+
* - "onChainTx"
|
|
104
|
+
* - "ownWithdrawLocked"
|
|
105
|
+
* - "withdrawLocked"
|
|
106
|
+
* - "ownDepositLocked"
|
|
107
|
+
* - "depositLocked"
|
|
108
|
+
*
|
|
109
|
+
* TODO: the event list looks outdated
|
|
110
|
+
*
|
|
111
|
+
* @param eventName - Event name
|
|
112
|
+
* @param callback - Callback function
|
|
113
|
+
*/
|
|
114
|
+
on(eventName: string, callback: EventCallback): void;
|
|
115
|
+
/**
|
|
116
|
+
* Remove event listener function
|
|
117
|
+
* @param eventName - Event name
|
|
118
|
+
* @param callback - Callback function
|
|
119
|
+
*/
|
|
120
|
+
off(eventName: string, callback: EventCallback): void;
|
|
121
|
+
/**
|
|
122
|
+
* Close the connection
|
|
123
|
+
*/
|
|
124
|
+
disconnect(): void;
|
|
125
|
+
/**
|
|
126
|
+
* Get current status
|
|
127
|
+
*/
|
|
128
|
+
status(): ChannelStatus;
|
|
129
|
+
/**
|
|
130
|
+
* Get current state
|
|
131
|
+
*/
|
|
132
|
+
state(): Promise<ChannelState>;
|
|
133
|
+
/**
|
|
134
|
+
* Get current round
|
|
135
|
+
*
|
|
136
|
+
* If round cannot be determined (for example when channel has not been opened)
|
|
137
|
+
* it will return `null`.
|
|
138
|
+
*/
|
|
139
|
+
round(): number | null;
|
|
140
|
+
/**
|
|
141
|
+
* Get channel id
|
|
142
|
+
*
|
|
143
|
+
*/
|
|
144
|
+
id(): Encoded.Channel;
|
|
145
|
+
/**
|
|
146
|
+
* Get channel's fsm id
|
|
147
|
+
*
|
|
148
|
+
*/
|
|
149
|
+
fsmId(): Encoded.Bytearray;
|
|
150
|
+
protected enqueueAction(action: () => {
|
|
151
|
+
handler: ChannelHandler;
|
|
152
|
+
state?: Partial<ChannelState>;
|
|
153
|
+
}): Promise<any>;
|
|
154
|
+
/**
|
|
155
|
+
* Leave channel
|
|
156
|
+
*
|
|
157
|
+
* It is possible to leave a channel and then later reestablish the channel
|
|
158
|
+
* off-chain state and continue operation. When a leave method is called,
|
|
159
|
+
* the channel fsm passes it on to the peer fsm, reports the current mutually
|
|
160
|
+
* signed state and then terminates.
|
|
161
|
+
*
|
|
162
|
+
* The channel can be reestablished by instantiating another Channel instance
|
|
163
|
+
* with two extra params: existingChannelId and offchainTx (returned from leave
|
|
164
|
+
* method as channelId and signedTx respectively).
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```js
|
|
168
|
+
* channel.leave().then(({ channelId, signedTx }) => {
|
|
169
|
+
* console.log(channelId)
|
|
170
|
+
* console.log(signedTx)
|
|
171
|
+
* })
|
|
172
|
+
* ```
|
|
173
|
+
*/
|
|
174
|
+
leave(): Promise<{
|
|
175
|
+
channelId: Encoded.Bytearray;
|
|
176
|
+
signedTx: Encoded.Transaction;
|
|
177
|
+
}>;
|
|
178
|
+
/**
|
|
179
|
+
* Trigger mutual close
|
|
180
|
+
*
|
|
181
|
+
* At any moment after the channel is opened, a closing procedure can be triggered.
|
|
182
|
+
* This can be done by either of the parties. The process is similar to the off-chain updates.
|
|
183
|
+
*
|
|
184
|
+
* @param sign - Function which verifies and signs mutual close transaction
|
|
185
|
+
* @example
|
|
186
|
+
* ```js
|
|
187
|
+
* channel.shutdown(
|
|
188
|
+
* async (tx) => await account.signTransaction(tx)
|
|
189
|
+
* ).then(tx => console.log('on_chain_tx', tx))
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
192
|
+
shutdown(sign: SignTx): Promise<Encoded.Transaction>;
|
|
193
|
+
static reconnect(options: ChannelOptions, txParams: any): Promise<Channel>;
|
|
194
|
+
}
|
|
195
|
+
export {};
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
|
|
2
|
+
/*
|
|
3
|
+
* ISC License (ISC)
|
|
4
|
+
* Copyright (c) 2022 aeternity developers
|
|
5
|
+
*
|
|
6
|
+
* Permission to use, copy, modify, and/or distribute this software for any
|
|
7
|
+
* purpose with or without fee is hereby granted, provided that the above
|
|
8
|
+
* copyright notice and this permission notice appear in all copies.
|
|
9
|
+
*
|
|
10
|
+
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
11
|
+
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
12
|
+
* AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
13
|
+
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
14
|
+
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
15
|
+
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
16
|
+
* PERFORMANCE OF THIS SOFTWARE.
|
|
17
|
+
*/
|
|
18
|
+
import _events from 'events';
|
|
19
|
+
const {
|
|
20
|
+
EventEmitter
|
|
21
|
+
} = _events;
|
|
22
|
+
import { snakeToPascal } from "../utils/string.mjs";
|
|
23
|
+
import { buildTx, unpackTx } from "../tx/builder/index.mjs";
|
|
24
|
+
import { Tag } from "../tx/builder/constants.mjs";
|
|
25
|
+
import * as handlers from "./handlers.mjs";
|
|
26
|
+
import { initialize, enqueueAction, notify, call, disconnect as channelDisconnect } from "./internal.mjs";
|
|
27
|
+
import { ChannelError } from "../utils/errors.mjs";
|
|
28
|
+
function snakeToPascalObjKeys(obj) {
|
|
29
|
+
return Object.entries(obj).reduce((result, _ref) => {
|
|
30
|
+
let [key, val] = _ref;
|
|
31
|
+
return {
|
|
32
|
+
...result,
|
|
33
|
+
[snakeToPascal(key)]: val
|
|
34
|
+
};
|
|
35
|
+
}, {});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Channel
|
|
39
|
+
* @example
|
|
40
|
+
* ```js
|
|
41
|
+
* await Channel.initialize({
|
|
42
|
+
* url: 'ws://localhost:3001',
|
|
43
|
+
* role: 'initiator'
|
|
44
|
+
* initiatorId: 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',
|
|
45
|
+
* responderId: 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E',
|
|
46
|
+
* initiatorAmount: 1e18,
|
|
47
|
+
* responderAmount: 1e18,
|
|
48
|
+
* pushAmount: 0,
|
|
49
|
+
* channelReserve: 0,
|
|
50
|
+
* ttl: 1000,
|
|
51
|
+
* host: 'localhost',
|
|
52
|
+
* port: 3002,
|
|
53
|
+
* lockPeriod: 10,
|
|
54
|
+
* async sign (tag, tx) => await account.signTransaction(tx)
|
|
55
|
+
* })
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export default class Channel {
|
|
59
|
+
constructor() {
|
|
60
|
+
_defineProperty(this, "_eventEmitter", new EventEmitter());
|
|
61
|
+
_defineProperty(this, "_nextRpcMessageId", 0);
|
|
62
|
+
_defineProperty(this, "_rpcCallbacks", new Map());
|
|
63
|
+
_defineProperty(this, "_messageQueue", []);
|
|
64
|
+
_defineProperty(this, "_isMessageQueueLocked", false);
|
|
65
|
+
_defineProperty(this, "_actionQueue", []);
|
|
66
|
+
_defineProperty(this, "_isActionQueueLocked", false);
|
|
67
|
+
_defineProperty(this, "_status", 'disconnected');
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* @param options - Channel params
|
|
71
|
+
* @param options.url - Channel url (for example: "ws://localhost:3001")
|
|
72
|
+
* @param options.role - Participant role ("initiator" or "responder")
|
|
73
|
+
* @param options.initiatorId - Initiator's public key
|
|
74
|
+
* @param options.responderId - Responder's public key
|
|
75
|
+
* @param options.pushAmount - Initial deposit in favour of the responder by the initiator
|
|
76
|
+
* @param options.initiatorAmount - Amount of coins the initiator has committed to
|
|
77
|
+
* the channel
|
|
78
|
+
* @param options.responderAmount - Amount of coins the responder has committed to
|
|
79
|
+
* the channel
|
|
80
|
+
* @param options.channelReserve - The minimum amount both peers need to maintain
|
|
81
|
+
* @param options.ttl - Minimum block height to include the channel_create_tx
|
|
82
|
+
* @param options.host - Host of the responder's node
|
|
83
|
+
* @param options.port - The port of the responders node
|
|
84
|
+
* @param options.lockPeriod - Amount of blocks for disputing a solo close
|
|
85
|
+
* @param options.minimumDepthStrategy - How to calculate minimum depth (default: txfee)
|
|
86
|
+
* @param options.minimumDepth - The minimum amount of blocks to be mined
|
|
87
|
+
* @param options.fee - The fee to be used for the channel open transaction
|
|
88
|
+
* @param options.gasPrice - Used for the fee computation of the channel open transaction
|
|
89
|
+
* @param options.existingChannelId - Existing channel id (required if reestablishing a
|
|
90
|
+
* channel)
|
|
91
|
+
* @param options.offchainTx - Offchain transaction (required if reestablishing
|
|
92
|
+
* a channel)
|
|
93
|
+
* @param options.timeoutIdle - The time waiting for a new event to be initiated
|
|
94
|
+
* (default: 600000)
|
|
95
|
+
* @param options.timeoutFundingCreate - The time waiting for the initiator to produce
|
|
96
|
+
* the create channel transaction after the noise session had been established (default: 120000)
|
|
97
|
+
* @param options.timeoutFundingSign - The time frame the other client has to sign an
|
|
98
|
+
* off-chain update after our client had initiated and signed it. This applies only for double
|
|
99
|
+
* signed on-chain intended updates: channel create transaction, deposit, withdrawal and etc.
|
|
100
|
+
* (default: 120000)
|
|
101
|
+
* @param options.timeoutFundingLock - The time frame the other client has to confirm an
|
|
102
|
+
* on-chain transaction reaching maturity (passing minimum depth) after the local node has
|
|
103
|
+
* detected this. This applies only for double signed on-chain intended updates: channel create
|
|
104
|
+
* transaction, deposit, withdrawal and etc. (default: 360000)
|
|
105
|
+
* @param options.timeoutSign - The time frame the client has to return a signed
|
|
106
|
+
* off-chain update or to decline it. This applies for all off-chain updates (default: 500000)
|
|
107
|
+
* @param options.timeoutAccept - The time frame the other client has to react to an
|
|
108
|
+
* event. This applies for all off-chain updates that are not meant to land on-chain, as well as
|
|
109
|
+
* some special cases: opening a noise connection, mutual closing acknowledgement and
|
|
110
|
+
* reestablishing an existing channel (default: 120000)
|
|
111
|
+
* @param options.timeoutInitialized - the time frame the responder has to accept an
|
|
112
|
+
* incoming noise session. Applicable only for initiator (default: timeout_accept's value)
|
|
113
|
+
* @param options.timeoutAwaitingOpen - The time frame the initiator has to start an
|
|
114
|
+
* outgoing noise session to the responder's node. Applicable only for responder (default:
|
|
115
|
+
* timeout_idle's value)
|
|
116
|
+
* @param options.debug=false - Log websocket communication
|
|
117
|
+
* @param options.sign - Function which verifies and signs transactions
|
|
118
|
+
*/
|
|
119
|
+
static async initialize(options) {
|
|
120
|
+
return Channel._initialize(new Channel(), options);
|
|
121
|
+
}
|
|
122
|
+
static async _initialize(channel, options) {
|
|
123
|
+
await initialize(channel, options.existingFsmId != null ? handlers.awaitingReconnection : handlers.awaitingConnection, handlers.channelOpen, options);
|
|
124
|
+
return channel;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Register event listener function
|
|
129
|
+
*
|
|
130
|
+
* Possible events:
|
|
131
|
+
*
|
|
132
|
+
* - "error"
|
|
133
|
+
* - "onChainTx"
|
|
134
|
+
* - "ownWithdrawLocked"
|
|
135
|
+
* - "withdrawLocked"
|
|
136
|
+
* - "ownDepositLocked"
|
|
137
|
+
* - "depositLocked"
|
|
138
|
+
*
|
|
139
|
+
* TODO: the event list looks outdated
|
|
140
|
+
*
|
|
141
|
+
* @param eventName - Event name
|
|
142
|
+
* @param callback - Callback function
|
|
143
|
+
*/
|
|
144
|
+
// TODO define specific callback type depending on the event name
|
|
145
|
+
on(eventName, callback) {
|
|
146
|
+
this._eventEmitter.on(eventName, callback);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Remove event listener function
|
|
151
|
+
* @param eventName - Event name
|
|
152
|
+
* @param callback - Callback function
|
|
153
|
+
*/
|
|
154
|
+
off(eventName, callback) {
|
|
155
|
+
this._eventEmitter.removeListener(eventName, callback);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Close the connection
|
|
160
|
+
*/
|
|
161
|
+
disconnect() {
|
|
162
|
+
return channelDisconnect(this);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Get current status
|
|
167
|
+
*/
|
|
168
|
+
status() {
|
|
169
|
+
return this._status;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Get current state
|
|
174
|
+
*/
|
|
175
|
+
async state() {
|
|
176
|
+
return snakeToPascalObjKeys(await call(this, 'channels.get.offchain_state', {}));
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Get current round
|
|
181
|
+
*
|
|
182
|
+
* If round cannot be determined (for example when channel has not been opened)
|
|
183
|
+
* it will return `null`.
|
|
184
|
+
*/
|
|
185
|
+
round() {
|
|
186
|
+
if (this._state == null) {
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
const {
|
|
190
|
+
txType,
|
|
191
|
+
tx
|
|
192
|
+
} = unpackTx(this._state, Tag.SignedTx).tx.encodedTx;
|
|
193
|
+
switch (txType) {
|
|
194
|
+
case Tag.ChannelCreateTx:
|
|
195
|
+
return 1;
|
|
196
|
+
case Tag.ChannelOffChainTx:
|
|
197
|
+
case Tag.ChannelWithdrawTx:
|
|
198
|
+
case Tag.ChannelDepositTx:
|
|
199
|
+
return tx.round;
|
|
200
|
+
default:
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Get channel id
|
|
207
|
+
*
|
|
208
|
+
*/
|
|
209
|
+
id() {
|
|
210
|
+
if (this._channelId == null) throw new ChannelError('Channel is not initialized');
|
|
211
|
+
return this._channelId;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Get channel's fsm id
|
|
216
|
+
*
|
|
217
|
+
*/
|
|
218
|
+
fsmId() {
|
|
219
|
+
if (this._fsmId == null) throw new ChannelError('Channel is not initialized');
|
|
220
|
+
return this._fsmId;
|
|
221
|
+
}
|
|
222
|
+
async enqueueAction(action) {
|
|
223
|
+
return enqueueAction(this, (channel, state) => (state === null || state === void 0 ? void 0 : state.handler) === handlers.channelOpen, action);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Leave channel
|
|
228
|
+
*
|
|
229
|
+
* It is possible to leave a channel and then later reestablish the channel
|
|
230
|
+
* off-chain state and continue operation. When a leave method is called,
|
|
231
|
+
* the channel fsm passes it on to the peer fsm, reports the current mutually
|
|
232
|
+
* signed state and then terminates.
|
|
233
|
+
*
|
|
234
|
+
* The channel can be reestablished by instantiating another Channel instance
|
|
235
|
+
* with two extra params: existingChannelId and offchainTx (returned from leave
|
|
236
|
+
* method as channelId and signedTx respectively).
|
|
237
|
+
*
|
|
238
|
+
* @example
|
|
239
|
+
* ```js
|
|
240
|
+
* channel.leave().then(({ channelId, signedTx }) => {
|
|
241
|
+
* console.log(channelId)
|
|
242
|
+
* console.log(signedTx)
|
|
243
|
+
* })
|
|
244
|
+
* ```
|
|
245
|
+
*/
|
|
246
|
+
async leave() {
|
|
247
|
+
return this.enqueueAction(() => {
|
|
248
|
+
notify(this, 'channels.leave');
|
|
249
|
+
return {
|
|
250
|
+
handler: handlers.awaitingLeave
|
|
251
|
+
};
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Trigger mutual close
|
|
257
|
+
*
|
|
258
|
+
* At any moment after the channel is opened, a closing procedure can be triggered.
|
|
259
|
+
* This can be done by either of the parties. The process is similar to the off-chain updates.
|
|
260
|
+
*
|
|
261
|
+
* @param sign - Function which verifies and signs mutual close transaction
|
|
262
|
+
* @example
|
|
263
|
+
* ```js
|
|
264
|
+
* channel.shutdown(
|
|
265
|
+
* async (tx) => await account.signTransaction(tx)
|
|
266
|
+
* ).then(tx => console.log('on_chain_tx', tx))
|
|
267
|
+
* ```
|
|
268
|
+
*/
|
|
269
|
+
async shutdown(sign) {
|
|
270
|
+
return this.enqueueAction(() => {
|
|
271
|
+
notify(this, 'channels.shutdown');
|
|
272
|
+
return {
|
|
273
|
+
handler: handlers.awaitingShutdownTx,
|
|
274
|
+
state: {
|
|
275
|
+
sign
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
static async reconnect(options, txParams) {
|
|
281
|
+
const {
|
|
282
|
+
sign
|
|
283
|
+
} = options;
|
|
284
|
+
return Channel.initialize({
|
|
285
|
+
...options,
|
|
286
|
+
reconnectTx: await sign('reconnect', buildTx(txParams, Tag.ChannelClientReconnectTx).tx)
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=Base.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Base.mjs","names":["snakeToPascal","buildTx","unpackTx","Tag","handlers","initialize","enqueueAction","notify","call","disconnect","channelDisconnect","ChannelError","snakeToPascalObjKeys","obj","Object","entries","reduce","result","key","val","Channel","EventEmitter","Map","options","_initialize","channel","existingFsmId","awaitingReconnection","awaitingConnection","channelOpen","on","eventName","callback","_eventEmitter","off","removeListener","status","_status","state","round","_state","txType","tx","SignedTx","encodedTx","ChannelCreateTx","ChannelOffChainTx","ChannelWithdrawTx","ChannelDepositTx","id","_channelId","fsmId","_fsmId","action","handler","leave","awaitingLeave","shutdown","sign","awaitingShutdownTx","reconnect","txParams","reconnectTx","ChannelClientReconnectTx"],"sources":["../../src/channel/Base.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport { EventEmitter } from 'events';\nimport { w3cwebsocket as W3CWebSocket } from 'websocket';\nimport { snakeToPascal } from '../utils/string';\nimport { buildTx, unpackTx } from '../tx/builder';\nimport { Tag } from '../tx/builder/constants';\nimport * as handlers from './handlers';\nimport {\n initialize,\n enqueueAction,\n notify,\n call,\n disconnect as channelDisconnect,\n SignTx,\n ChannelOptions,\n ChannelState,\n ChannelHandler,\n ChannelAction,\n ChannelStatus,\n ChannelFsm,\n} from './internal';\nimport { ChannelError } from '../utils/errors';\nimport { Encoded } from '../utils/encoder';\n\nfunction snakeToPascalObjKeys<Type>(obj: object): Type {\n return Object.entries(obj).reduce((result, [key, val]) => ({\n ...result,\n [snakeToPascal(key)]: val,\n }), {}) as Type;\n}\n\ntype EventCallback = (...args: any[]) => void;\n\n/**\n * Channel\n * @example\n * ```js\n * await Channel.initialize({\n * url: 'ws://localhost:3001',\n * role: 'initiator'\n * initiatorId: 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * responderId: 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E',\n * initiatorAmount: 1e18,\n * responderAmount: 1e18,\n * pushAmount: 0,\n * channelReserve: 0,\n * ttl: 1000,\n * host: 'localhost',\n * port: 3002,\n * lockPeriod: 10,\n * async sign (tag, tx) => await account.signTransaction(tx)\n * })\n * ```\n */\nexport default class Channel {\n _eventEmitter = new EventEmitter();\n\n _pingTimeoutId: NodeJS.Timeout;\n\n _nextRpcMessageId = 0;\n\n _rpcCallbacks = new Map<number, (message: object) => void>();\n\n _fsmId?: Encoded.Bytearray;\n\n _messageQueue: object[] = [];\n\n _isMessageQueueLocked = false;\n\n _actionQueue: ChannelAction[] = [];\n\n _isActionQueueLocked = false;\n\n _status: ChannelStatus = 'disconnected';\n\n _fsm: ChannelFsm;\n\n _websocket: W3CWebSocket;\n\n _state?: Encoded.Transaction;\n\n _options: ChannelOptions;\n\n _channelId?: Encoded.Channel;\n\n /**\n * @param options - Channel params\n * @param options.url - Channel url (for example: \"ws://localhost:3001\")\n * @param options.role - Participant role (\"initiator\" or \"responder\")\n * @param options.initiatorId - Initiator's public key\n * @param options.responderId - Responder's public key\n * @param options.pushAmount - Initial deposit in favour of the responder by the initiator\n * @param options.initiatorAmount - Amount of coins the initiator has committed to\n * the channel\n * @param options.responderAmount - Amount of coins the responder has committed to\n * the channel\n * @param options.channelReserve - The minimum amount both peers need to maintain\n * @param options.ttl - Minimum block height to include the channel_create_tx\n * @param options.host - Host of the responder's node\n * @param options.port - The port of the responders node\n * @param options.lockPeriod - Amount of blocks for disputing a solo close\n * @param options.minimumDepthStrategy - How to calculate minimum depth (default: txfee)\n * @param options.minimumDepth - The minimum amount of blocks to be mined\n * @param options.fee - The fee to be used for the channel open transaction\n * @param options.gasPrice - Used for the fee computation of the channel open transaction\n * @param options.existingChannelId - Existing channel id (required if reestablishing a\n * channel)\n * @param options.offchainTx - Offchain transaction (required if reestablishing\n * a channel)\n * @param options.timeoutIdle - The time waiting for a new event to be initiated\n * (default: 600000)\n * @param options.timeoutFundingCreate - The time waiting for the initiator to produce\n * the create channel transaction after the noise session had been established (default: 120000)\n * @param options.timeoutFundingSign - The time frame the other client has to sign an\n * off-chain update after our client had initiated and signed it. This applies only for double\n * signed on-chain intended updates: channel create transaction, deposit, withdrawal and etc.\n * (default: 120000)\n * @param options.timeoutFundingLock - The time frame the other client has to confirm an\n * on-chain transaction reaching maturity (passing minimum depth) after the local node has\n * detected this. This applies only for double signed on-chain intended updates: channel create\n * transaction, deposit, withdrawal and etc. (default: 360000)\n * @param options.timeoutSign - The time frame the client has to return a signed\n * off-chain update or to decline it. This applies for all off-chain updates (default: 500000)\n * @param options.timeoutAccept - The time frame the other client has to react to an\n * event. This applies for all off-chain updates that are not meant to land on-chain, as well as\n * some special cases: opening a noise connection, mutual closing acknowledgement and\n * reestablishing an existing channel (default: 120000)\n * @param options.timeoutInitialized - the time frame the responder has to accept an\n * incoming noise session. Applicable only for initiator (default: timeout_accept's value)\n * @param options.timeoutAwaitingOpen - The time frame the initiator has to start an\n * outgoing noise session to the responder's node. Applicable only for responder (default:\n * timeout_idle's value)\n * @param options.debug=false - Log websocket communication\n * @param options.sign - Function which verifies and signs transactions\n */\n static async initialize(options: ChannelOptions): Promise<Channel> {\n return Channel._initialize(new Channel(), options);\n }\n\n static async _initialize<T extends Channel>(channel: T, options: ChannelOptions): Promise<T> {\n await initialize(\n channel,\n options.existingFsmId != null ? handlers.awaitingReconnection : handlers.awaitingConnection,\n handlers.channelOpen,\n options,\n );\n return channel;\n }\n\n /**\n * Register event listener function\n *\n * Possible events:\n *\n * - \"error\"\n * - \"onChainTx\"\n * - \"ownWithdrawLocked\"\n * - \"withdrawLocked\"\n * - \"ownDepositLocked\"\n * - \"depositLocked\"\n *\n * TODO: the event list looks outdated\n *\n * @param eventName - Event name\n * @param callback - Callback function\n */\n // TODO define specific callback type depending on the event name\n on(eventName: string, callback: EventCallback): void {\n this._eventEmitter.on(eventName, callback);\n }\n\n /**\n * Remove event listener function\n * @param eventName - Event name\n * @param callback - Callback function\n */\n off(eventName: string, callback: EventCallback): void {\n this._eventEmitter.removeListener(eventName, callback);\n }\n\n /**\n * Close the connection\n */\n disconnect(): void {\n return channelDisconnect(this);\n }\n\n /**\n * Get current status\n */\n status(): ChannelStatus {\n return this._status;\n }\n\n /**\n * Get current state\n */\n async state(): Promise<ChannelState> {\n return snakeToPascalObjKeys(await call(this, 'channels.get.offchain_state', {}));\n }\n\n /**\n * Get current round\n *\n * If round cannot be determined (for example when channel has not been opened)\n * it will return `null`.\n */\n round(): number | null {\n if (this._state == null) {\n return null;\n }\n const { txType, tx } = unpackTx(this._state, Tag.SignedTx).tx.encodedTx;\n switch (txType) {\n case Tag.ChannelCreateTx:\n return 1;\n case Tag.ChannelOffChainTx:\n case Tag.ChannelWithdrawTx:\n case Tag.ChannelDepositTx:\n return tx.round;\n default:\n return null;\n }\n }\n\n /**\n * Get channel id\n *\n */\n id(): Encoded.Channel {\n if (this._channelId == null) throw new ChannelError('Channel is not initialized');\n return this._channelId;\n }\n\n /**\n * Get channel's fsm id\n *\n */\n fsmId(): Encoded.Bytearray {\n if (this._fsmId == null) throw new ChannelError('Channel is not initialized');\n return this._fsmId;\n }\n\n protected async enqueueAction(\n action: () => { handler: ChannelHandler; state?: Partial<ChannelState> },\n ): Promise<any> {\n return enqueueAction(\n this,\n (channel, state) => state?.handler === handlers.channelOpen,\n action,\n );\n }\n\n /**\n * Leave channel\n *\n * It is possible to leave a channel and then later reestablish the channel\n * off-chain state and continue operation. When a leave method is called,\n * the channel fsm passes it on to the peer fsm, reports the current mutually\n * signed state and then terminates.\n *\n * The channel can be reestablished by instantiating another Channel instance\n * with two extra params: existingChannelId and offchainTx (returned from leave\n * method as channelId and signedTx respectively).\n *\n * @example\n * ```js\n * channel.leave().then(({ channelId, signedTx }) => {\n * console.log(channelId)\n * console.log(signedTx)\n * })\n * ```\n */\n async leave(): Promise<{ channelId: Encoded.Bytearray; signedTx: Encoded.Transaction }> {\n return this.enqueueAction(() => {\n notify(this, 'channels.leave');\n return { handler: handlers.awaitingLeave };\n });\n }\n\n /**\n * Trigger mutual close\n *\n * At any moment after the channel is opened, a closing procedure can be triggered.\n * This can be done by either of the parties. The process is similar to the off-chain updates.\n *\n * @param sign - Function which verifies and signs mutual close transaction\n * @example\n * ```js\n * channel.shutdown(\n * async (tx) => await account.signTransaction(tx)\n * ).then(tx => console.log('on_chain_tx', tx))\n * ```\n */\n async shutdown(sign: SignTx): Promise<Encoded.Transaction> {\n return this.enqueueAction(() => {\n notify(this, 'channels.shutdown');\n return {\n handler: handlers.awaitingShutdownTx,\n state: { sign },\n };\n });\n }\n\n static async reconnect(options: ChannelOptions, txParams: any): Promise<Channel> {\n const { sign } = options;\n\n return Channel.initialize({\n ...options,\n reconnectTx: await sign('reconnect', buildTx(txParams, Tag.ChannelClientReconnectTx).tx),\n });\n }\n}\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAA6B,QAAQ;AAAC;EAAA;AAAA;AAAA,SAE7BA,aAAa;AAAA,SACbC,OAAO,EAAEC,QAAQ;AAAA,SACjBC,GAAG;AAAA,OACL,KAAKC,QAAQ;AAAA,SAElBC,UAAU,EACVC,aAAa,EACbC,MAAM,EACNC,IAAI,EACJC,UAAU,IAAIC,iBAAiB;AAAA,SASxBC,YAAY;AAGrB,SAASC,oBAAoB,CAAOC,GAAW,EAAQ;EACrD,OAAOC,MAAM,CAACC,OAAO,CAACF,GAAG,CAAC,CAACG,MAAM,CAAC,CAACC,MAAM;IAAA,IAAE,CAACC,GAAG,EAAEC,GAAG,CAAC;IAAA,OAAM;MACzD,GAAGF,MAAM;MACT,CAACjB,aAAa,CAACkB,GAAG,CAAC,GAAGC;IACxB,CAAC;EAAA,CAAC,EAAE,CAAC,CAAC,CAAC;AACT;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMC,OAAO,CAAC;EAAA;IAAA,uCACX,IAAIC,YAAY,EAAE;IAAA,2CAId,CAAC;IAAA,uCAEL,IAAIC,GAAG,EAAqC;IAAA,uCAIlC,EAAE;IAAA,+CAEJ,KAAK;IAAA,sCAEG,EAAE;IAAA,8CAEX,KAAK;IAAA,iCAEH,cAAc;EAAA;EAYvC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAajB,UAAU,CAACkB,OAAuB,EAAoB;IACjE,OAAOH,OAAO,CAACI,WAAW,CAAC,IAAIJ,OAAO,EAAE,EAAEG,OAAO,CAAC;EACpD;EAEA,aA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"}
|