@aeternity/aepp-sdk 10.0.0 → 12.0.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 +15 -14
- package/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.LICENSE.txt +13 -40
- 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 +1 -1
- package/dist/aepp-sdk.js.map +1 -1
- package/es/AeSdk.d.ts +37 -0
- package/es/AeSdk.mjs +81 -0
- package/es/AeSdk.mjs.map +1 -0
- package/es/AeSdkAepp.d.ts +69 -0
- package/es/AeSdkAepp.mjs +175 -0
- package/es/AeSdkAepp.mjs.map +1 -0
- package/es/AeSdkBase.d.ts +212 -0
- package/es/AeSdkBase.mjs +310 -0
- package/es/AeSdkBase.mjs.map +1 -0
- package/es/AeSdkWallet.d.ts +103 -0
- package/es/AeSdkWallet.mjs +322 -0
- package/es/AeSdkWallet.mjs.map +1 -0
- package/es/Node.d.ts +44 -0
- package/es/Node.mjs +141 -0
- package/es/Node.mjs.map +1 -0
- package/es/account/Base.d.ts +65 -0
- package/es/account/Base.mjs +123 -0
- package/es/account/Base.mjs.map +1 -0
- package/es/account/Memory.d.ts +25 -0
- package/es/account/Memory.mjs +81 -0
- package/es/account/Memory.mjs.map +1 -0
- package/es/account/Rpc.d.ts +27 -0
- package/es/account/Rpc.mjs +79 -0
- package/es/account/Rpc.mjs.map +1 -0
- package/es/aens.d.ts +209 -0
- package/es/aens.mjs +332 -0
- package/es/aens.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/Browser.d.ts +32 -0
- package/es/aepp-wallet-communication/connection/Browser.mjs +70 -0
- package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +17 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +57 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +35 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +142 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection-proxy.d.ts +10 -0
- package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +15 -11
- package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +33 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
- package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
- package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
- package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
- package/es/aepp-wallet-communication/schema.d.ts +118 -0
- package/es/aepp-wallet-communication/schema.mjs +214 -0
- package/es/aepp-wallet-communication/schema.mjs.map +1 -0
- package/es/aepp-wallet-communication/wallet-detector.d.ts +24 -0
- package/es/aepp-wallet-communication/wallet-detector.mjs +63 -0
- package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
- package/es/apis/compiler/compiler.d.ts +92 -0
- package/es/apis/compiler/compiler.mjs +576 -0
- package/es/apis/compiler/compiler.mjs.map +1 -0
- package/es/apis/compiler/index.d.ts +2 -0
- package/es/apis/compiler/index.mjs +3 -0
- package/es/apis/compiler/index.mjs.map +1 -0
- package/es/apis/compiler/models/index.d.ts +248 -0
- package/es/apis/compiler/models/index.mjs +48 -0
- package/es/apis/compiler/models/index.mjs.map +1 -0
- package/es/apis/compiler/models/mappers.d.ts +23 -0
- package/es/apis/compiler/models/mappers.mjs +585 -0
- package/es/apis/compiler/models/mappers.mjs.map +1 -0
- package/es/apis/compiler/models/parameters.d.ts +13 -0
- package/es/apis/compiler/models/parameters.mjs +71 -0
- package/es/apis/compiler/models/parameters.mjs.map +1 -0
- package/es/apis/node/index.d.ts +2 -0
- package/es/apis/node/index.mjs +3 -0
- package/es/apis/node/index.mjs.map +1 -0
- package/es/apis/node/models/index.d.ts +1061 -0
- package/es/apis/node/models/index.mjs +2 -0
- package/es/apis/node/models/index.mjs.map +1 -0
- package/es/apis/node/models/mappers.d.ts +95 -0
- package/es/apis/node/models/mappers.mjs +4164 -0
- package/es/apis/node/models/mappers.mjs.map +1 -0
- package/es/apis/node/models/parameters.d.ts +17 -0
- package/es/apis/node/models/parameters.mjs +165 -0
- package/es/apis/node/models/parameters.mjs.map +1 -0
- package/es/apis/node/node.d.ts +215 -0
- package/es/apis/node/node.mjs +1165 -0
- package/es/apis/node/node.mjs.map +1 -0
- package/es/chain.d.ts +220 -0
- package/es/chain.mjs +524 -0
- package/es/chain.mjs.map +1 -0
- package/es/channel/handlers.d.ts +34 -0
- package/es/channel/{handlers.js → handlers.mjs} +163 -130
- package/es/channel/handlers.mjs.map +1 -0
- package/es/channel/index.d.ts +634 -0
- package/es/channel/index.mjs +978 -0
- package/es/channel/index.mjs.map +1 -0
- package/es/channel/internal.d.ts +100 -0
- package/es/channel/internal.mjs +328 -0
- package/es/channel/internal.mjs.map +1 -0
- package/es/contract/Compiler.d.ts +17 -0
- package/es/contract/Compiler.mjs +67 -0
- package/es/contract/Compiler.mjs.map +1 -0
- package/es/contract/aci.d.ts +125 -0
- package/es/contract/aci.mjs +496 -0
- package/es/contract/aci.mjs.map +1 -0
- package/es/contract/ga.d.ts +68 -0
- package/es/contract/ga.mjs +190 -0
- package/es/contract/ga.mjs.map +1 -0
- package/es/contract/methods.d.ts +68 -0
- package/es/contract/methods.mjs +101 -0
- package/es/contract/methods.mjs.map +1 -0
- package/es/index.d.ts +32 -0
- package/es/index.mjs +49 -0
- package/es/index.mjs.map +1 -0
- package/es/oracle.d.ts +154 -0
- package/es/oracle.mjs +288 -0
- package/es/oracle.mjs.map +1 -0
- package/es/spend.d.ts +61 -0
- package/es/spend.mjs +122 -0
- package/es/spend.mjs.map +1 -0
- package/es/tx/builder/constants.d.ts +41 -0
- package/es/tx/builder/constants.mjs +100 -0
- package/es/tx/builder/constants.mjs.map +1 -0
- package/es/tx/builder/field-types.d.ts +62 -0
- package/es/tx/builder/field-types.mjs +126 -0
- package/es/tx/builder/field-types.mjs.map +1 -0
- package/es/tx/builder/helpers.d.ts +131 -0
- package/es/tx/builder/helpers.mjs +223 -0
- package/es/tx/builder/helpers.mjs.map +1 -0
- package/es/tx/builder/index.d.ts +75 -0
- package/es/tx/builder/index.mjs +424 -0
- package/es/tx/builder/index.mjs.map +1 -0
- package/es/tx/builder/schema.d.ts +350 -0
- package/es/tx/builder/schema.mjs +320 -0
- package/es/tx/builder/schema.mjs.map +1 -0
- package/es/tx/index.d.ts +63 -0
- package/es/tx/index.mjs +209 -0
- package/es/tx/index.mjs.map +1 -0
- package/es/tx/min-fee.d.ts +20 -0
- package/es/tx/min-fee.mjs +148 -0
- package/es/tx/min-fee.mjs.map +1 -0
- package/es/tx/validator.d.ts +19 -0
- package/es/tx/validator.mjs +240 -0
- package/es/tx/validator.mjs.map +1 -0
- package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
- package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
- package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
- package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
- package/es/typings/bip32-path/index.d.mjs +2 -0
- package/es/typings/bip32-path/index.d.mjs.map +1 -0
- package/es/typings/blakejs/index.d.mjs +2 -0
- package/es/typings/blakejs/index.d.mjs.map +1 -0
- package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
- package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
- package/es/utils/amount-formatter.d.ts +42 -0
- package/es/utils/{amount-formatter.js → amount-formatter.mjs} +38 -44
- package/es/utils/amount-formatter.mjs.map +1 -0
- package/es/utils/autorest.d.ts +6 -0
- package/es/utils/autorest.mjs +97 -0
- package/es/utils/autorest.mjs.map +1 -0
- package/es/utils/bignumber.d.ts +13 -0
- package/es/utils/bignumber.mjs +23 -0
- package/es/utils/bignumber.mjs.map +1 -0
- package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
- package/es/utils/{bytes.js → bytes.mjs} +26 -22
- package/es/utils/bytes.mjs.map +1 -0
- package/es/utils/crypto.d.ts +103 -0
- package/es/utils/crypto.mjs +221 -0
- package/es/utils/crypto.mjs.map +1 -0
- package/es/utils/encoder.d.ts +26 -0
- package/es/utils/encoder.mjs +102 -0
- package/es/utils/encoder.mjs.map +1 -0
- package/es/utils/errors.d.ts +481 -0
- package/es/utils/errors.mjs +882 -0
- package/es/utils/errors.mjs.map +1 -0
- package/es/utils/hd-wallet.d.ts +34 -0
- package/es/utils/hd-wallet.mjs +122 -0
- package/es/utils/hd-wallet.mjs.map +1 -0
- package/es/utils/json-big.d.ts +5 -0
- package/es/utils/json-big.mjs +41 -0
- package/es/utils/json-big.mjs.map +1 -0
- package/es/utils/keystore.d.ts +51 -0
- package/es/utils/keystore.mjs +145 -0
- package/es/utils/keystore.mjs.map +1 -0
- package/es/{mptree.d.ts → utils/mptree.d.ts} +5 -8
- package/es/utils/{mptree.js → mptree.mjs} +33 -25
- package/es/utils/mptree.mjs.map +1 -0
- package/es/utils/other.d.ts +14 -0
- package/es/utils/other.mjs +28 -0
- package/es/utils/other.mjs.map +1 -0
- package/es/{semver-satisfies.d.ts → utils/semver-satisfies.d.ts} +0 -0
- package/es/utils/{semver-satisfies.js → semver-satisfies.mjs} +1 -1
- package/es/utils/semver-satisfies.mjs.map +1 -0
- package/es/utils/string.d.ts +24 -0
- package/es/utils/{string.js → string.mjs} +9 -11
- package/es/utils/string.mjs.map +1 -0
- package/package.json +67 -64
- package/src/AeSdk.ts +65 -0
- package/src/AeSdkAepp.ts +167 -0
- package/src/AeSdkBase.ts +320 -0
- package/src/AeSdkWallet.ts +332 -0
- package/src/Node.ts +167 -0
- package/src/account/Base.ts +114 -0
- package/src/account/Memory.ts +83 -0
- package/src/account/Rpc.ts +67 -0
- package/src/aens.ts +391 -0
- package/src/aepp-wallet-communication/connection/Browser.ts +68 -0
- package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +58 -0
- package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +111 -0
- package/{es/utils/crypto-ts.js → src/aepp-wallet-communication/connection-proxy.ts} +16 -9
- package/src/aepp-wallet-communication/rpc/RpcClient.ts +137 -0
- package/src/aepp-wallet-communication/rpc/types.ts +66 -0
- package/src/aepp-wallet-communication/schema.ts +181 -0
- package/src/aepp-wallet-communication/wallet-detector.ts +71 -0
- package/src/apis/compiler/code-model-v4.yaml +2649 -0
- package/src/apis/compiler/compiler.ts +585 -0
- package/src/apis/compiler/index.ts +2 -0
- package/src/apis/compiler/models/index.ts +301 -0
- package/src/apis/compiler/models/mappers.ts +583 -0
- package/src/apis/compiler/models/parameters.ts +93 -0
- package/src/apis/node/code-model-v4.yaml +10046 -0
- package/src/apis/node/index.ts +2 -0
- package/src/apis/node/models/index.ts +1253 -0
- package/src/apis/node/models/mappers.ts +4278 -0
- package/src/apis/node/models/parameters.ts +188 -0
- package/src/apis/node/node.ts +1299 -0
- package/src/chain.ts +444 -0
- package/src/channel/{handlers.js → handlers.ts} +238 -143
- package/src/channel/index.ts +991 -0
- package/src/channel/internal.ts +345 -0
- package/src/contract/Compiler.ts +66 -0
- package/src/contract/aci.ts +529 -0
- package/src/contract/ga.ts +178 -0
- package/src/contract/methods.ts +118 -0
- package/src/index.ts +51 -0
- package/src/oracle.ts +342 -0
- package/src/spend.ts +152 -0
- package/src/tx/builder/constants.ts +96 -0
- package/src/tx/builder/field-types.ts +111 -0
- package/src/tx/builder/helpers.ts +253 -0
- package/src/tx/builder/index.ts +394 -0
- package/src/tx/builder/schema.ts +771 -0
- package/src/tx/index.ts +199 -0
- package/src/tx/min-fee.ts +136 -0
- package/src/tx/validator.ts +226 -0
- package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
- package/src/typings/@aeternity__uuid/index.d.ts +3 -0
- package/src/typings/bip32-path/index.d.ts +33 -0
- package/src/typings/tweetnacl-auth/index.d.ts +14 -0
- package/src/utils/amount-formatter.ts +29 -41
- package/src/utils/autorest.ts +90 -0
- package/src/utils/bignumber.ts +9 -19
- package/src/utils/bytes.ts +15 -16
- package/src/utils/crypto.ts +217 -0
- package/src/utils/encoder.ts +98 -0
- package/src/utils/errors.ts +817 -0
- package/src/utils/hd-wallet.ts +134 -0
- package/src/utils/json-big.ts +26 -0
- package/src/utils/keystore.ts +179 -0
- package/src/utils/mptree.ts +26 -20
- package/src/utils/other.ts +28 -43
- package/src/utils/string.ts +8 -10
- package/CHANGELOG.md +0 -1603
- package/es/account/base.js +0 -169
- package/es/account/base.js.map +0 -1
- package/es/account/memory.js +0 -84
- package/es/account/memory.js.map +0 -1
- package/es/account/multiple.js +0 -178
- package/es/account/multiple.js.map +0 -1
- package/es/ae/aens.js +0 -408
- package/es/ae/aens.js.map +0 -1
- package/es/ae/aepp.js +0 -45
- package/es/ae/aepp.js.map +0 -1
- package/es/ae/contract.js +0 -312
- package/es/ae/contract.js.map +0 -1
- package/es/ae/index.js +0 -206
- package/es/ae/index.js.map +0 -1
- package/es/ae/oracle.js +0 -322
- package/es/ae/oracle.js.map +0 -1
- package/es/ae/universal.js +0 -45
- package/es/ae/universal.js.map +0 -1
- package/es/ae/wallet.js +0 -50
- package/es/ae/wallet.js.map +0 -1
- package/es/amount-formatter.d.ts +0 -58
- package/es/bignumber.d.ts +0 -24
- package/es/chain/index.js +0 -256
- package/es/chain/index.js.map +0 -1
- package/es/chain/node.js +0 -394
- package/es/chain/node.js.map +0 -1
- package/es/channel/handlers.js.map +0 -1
- package/es/channel/index.js +0 -980
- package/es/channel/index.js.map +0 -1
- package/es/channel/internal.js +0 -266
- package/es/channel/internal.js.map +0 -1
- package/es/contract/aci/helpers.js +0 -298
- package/es/contract/aci/helpers.js.map +0 -1
- package/es/contract/aci/index.js +0 -361
- package/es/contract/aci/index.js.map +0 -1
- package/es/contract/aci/transformation.js +0 -66
- package/es/contract/aci/transformation.js.map +0 -1
- package/es/contract/compiler.js +0 -244
- package/es/contract/compiler.js.map +0 -1
- package/es/contract/ga/helpers.js +0 -22
- package/es/contract/ga/helpers.js.map +0 -1
- package/es/contract/ga/index.js +0 -170
- package/es/contract/ga/index.js.map +0 -1
- package/es/contract/index.js +0 -162
- package/es/contract/index.js.map +0 -1
- package/es/crypto-ts.d.ts +0 -9
- package/es/index.js +0 -57
- package/es/index.js.map +0 -1
- package/es/node-pool/index.js +0 -187
- package/es/node-pool/index.js.map +0 -1
- package/es/node.js +0 -132
- package/es/node.js.map +0 -1
- package/es/other.d.ts +0 -31
- package/es/string.d.ts +0 -26
- package/es/tx/builder/helpers.js +0 -305
- package/es/tx/builder/helpers.js.map +0 -1
- package/es/tx/builder/index.js +0 -595
- package/es/tx/builder/index.js.map +0 -1
- package/es/tx/builder/schema.js +0 -814
- package/es/tx/builder/schema.js.map +0 -1
- package/es/tx/index.js +0 -300
- package/es/tx/index.js.map +0 -1
- package/es/tx/tx-object.js +0 -276
- package/es/tx/tx-object.js.map +0 -1
- package/es/tx/tx.js +0 -937
- package/es/tx/tx.js.map +0 -1
- package/es/tx/validator.js +0 -208
- package/es/tx/validator.js.map +0 -1
- package/es/typings/blakejs/index.d.js +0 -2
- package/es/typings/blakejs/index.d.js.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -131
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -184
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/index.js +0 -84
- package/es/utils/aepp-wallet-communication/connection/index.js.map +0 -1
- package/es/utils/aepp-wallet-communication/content-script-bridge.js +0 -97
- package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +0 -1
- package/es/utils/aepp-wallet-communication/helpers.js +0 -103
- package/es/utils/aepp-wallet-communication/helpers.js.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -329
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -270
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -533
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +0 -1
- package/es/utils/aepp-wallet-communication/schema.js +0 -107
- package/es/utils/aepp-wallet-communication/schema.js.map +0 -1
- package/es/utils/aepp-wallet-communication/wallet-detector.js +0 -109
- package/es/utils/aepp-wallet-communication/wallet-detector.js.map +0 -1
- package/es/utils/amount-formatter.js.map +0 -1
- package/es/utils/async-init.js +0 -67
- package/es/utils/async-init.js.map +0 -1
- package/es/utils/bignumber.js +0 -28
- package/es/utils/bignumber.js.map +0 -1
- package/es/utils/bytes.js.map +0 -1
- package/es/utils/crypto-ts.js.map +0 -1
- package/es/utils/crypto.js +0 -304
- package/es/utils/crypto.js.map +0 -1
- package/es/utils/hd-wallet.js +0 -112
- package/es/utils/hd-wallet.js.map +0 -1
- package/es/utils/json-big.js +0 -45
- package/es/utils/json-big.js.map +0 -1
- package/es/utils/keystore.js +0 -228
- package/es/utils/keystore.js.map +0 -1
- package/es/utils/mptree.js.map +0 -1
- package/es/utils/other.js +0 -43
- package/es/utils/other.js.map +0 -1
- package/es/utils/semver-satisfies.js.map +0 -1
- package/es/utils/string.js.map +0 -1
- package/es/utils/swagger.js +0 -132
- package/es/utils/swagger.js.map +0 -1
- package/src/account/base.js +0 -153
- package/src/account/memory.js +0 -78
- package/src/account/multiple.js +0 -154
- package/src/ae/aens.js +0 -366
- package/src/ae/aepp.js +0 -45
- package/src/ae/contract.js +0 -285
- package/src/ae/index.js +0 -167
- package/src/ae/oracle.js +0 -296
- package/src/ae/universal.js +0 -47
- package/src/ae/wallet.js +0 -50
- package/src/chain/index.js +0 -250
- package/src/chain/node.js +0 -293
- package/src/channel/index.js +0 -898
- package/src/channel/internal.js +0 -231
- package/src/contract/aci/index.js +0 -317
- package/src/contract/aci/transformation.js +0 -72
- package/src/contract/compiler.js +0 -195
- package/src/contract/ga/helpers.js +0 -17
- package/src/contract/ga/index.js +0 -147
- package/src/contract/index.js +0 -163
- package/src/index.js +0 -90
- package/src/node-pool/index.js +0 -171
- package/src/node.js +0 -118
- package/src/tx/builder/helpers.js +0 -325
- package/src/tx/builder/index.js +0 -460
- package/src/tx/builder/schema.js +0 -1211
- package/src/tx/index.js +0 -301
- package/src/tx/tx-object.js +0 -186
- package/src/tx/tx.js +0 -622
- package/src/tx/validator.js +0 -161
- package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -114
- package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -161
- package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
- package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -85
- package/src/utils/aepp-wallet-communication/helpers.js +0 -70
- package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -268
- package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -223
- package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -390
- package/src/utils/aepp-wallet-communication/schema.js +0 -108
- package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -91
- package/src/utils/async-init.js +0 -41
- package/src/utils/crypto.js +0 -312
- package/src/utils/hd-wallet.js +0 -115
- package/src/utils/json-big.js +0 -26
- package/src/utils/keystore.js +0 -223
- package/src/utils/swagger.js +0 -133
|
@@ -15,8 +15,9 @@
|
|
|
15
15
|
* PERFORMANCE OF THIS SOFTWARE.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import { generateKeyPair, encodeContractAddress
|
|
18
|
+
import { generateKeyPair, encodeContractAddress } from '../utils/crypto'
|
|
19
19
|
import {
|
|
20
|
+
ChannelState,
|
|
20
21
|
options,
|
|
21
22
|
changeStatus,
|
|
22
23
|
changeState,
|
|
@@ -25,44 +26,60 @@ import {
|
|
|
25
26
|
emit,
|
|
26
27
|
channelId,
|
|
27
28
|
disconnect,
|
|
28
|
-
fsmId
|
|
29
|
+
fsmId,
|
|
30
|
+
ChannelMessage,
|
|
31
|
+
ChannelFsm,
|
|
32
|
+
SignTx
|
|
29
33
|
} from './internal'
|
|
30
34
|
import { unpackTx, buildTx } from '../tx/builder'
|
|
35
|
+
import { encode } from '../tx/builder/helpers'
|
|
36
|
+
import { EncodedData } from '../utils/encoder'
|
|
37
|
+
import {
|
|
38
|
+
IllegalArgumentError,
|
|
39
|
+
InsufficientBalanceError,
|
|
40
|
+
ChannelConnectionError,
|
|
41
|
+
UnexpectedChannelMessageError
|
|
42
|
+
} from '../utils/errors'
|
|
43
|
+
import Channel from '.'
|
|
44
|
+
import { TX_TYPE } from '../tx/builder/schema'
|
|
31
45
|
|
|
32
|
-
function
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const { signatures, encodedTx } = unpackTx(tx).tx
|
|
38
|
-
const result = await signFn(encodeRlpTx(encodedTx.rlpEncoded))
|
|
46
|
+
export async function appendSignature (
|
|
47
|
+
tx: EncodedData<'tx'>, signFn: SignTx
|
|
48
|
+
): Promise<EncodedData<'tx'> | number | null> {
|
|
49
|
+
const { signatures, encodedTx } = unpackTx(tx, TX_TYPE.signed).tx
|
|
50
|
+
const result = await signFn(encode(encodedTx.rlpEncoded, 'tx'))
|
|
39
51
|
if (typeof result === 'string') {
|
|
40
|
-
const { tx: signedTx
|
|
41
|
-
return
|
|
52
|
+
const { tx: signedTx } = unpackTx(result, TX_TYPE.signed)
|
|
53
|
+
return buildTx({
|
|
42
54
|
signatures: signatures.concat(signedTx.signatures),
|
|
43
55
|
encodedTx: signedTx.encodedTx.rlpEncoded
|
|
44
|
-
},
|
|
56
|
+
}, TX_TYPE.signed).tx
|
|
45
57
|
}
|
|
46
58
|
return result
|
|
47
59
|
}
|
|
48
60
|
|
|
49
|
-
function handleUnexpectedMessage (
|
|
50
|
-
|
|
61
|
+
function handleUnexpectedMessage (
|
|
62
|
+
_channel: Channel, message: ChannelMessage, state: ChannelState
|
|
63
|
+
): ChannelFsm {
|
|
64
|
+
if (state?.reject != null) {
|
|
51
65
|
state.reject(Object.assign(
|
|
52
|
-
new
|
|
66
|
+
new UnexpectedChannelMessageError(`Unexpected message received:\n\n${JSON.stringify(message)}`),
|
|
53
67
|
{ wsMessage: message }
|
|
54
68
|
))
|
|
55
69
|
}
|
|
56
70
|
return { handler: channelOpen }
|
|
57
71
|
}
|
|
58
72
|
|
|
59
|
-
export function awaitingConnection (
|
|
73
|
+
export function awaitingConnection (
|
|
74
|
+
channel: Channel, message: ChannelMessage
|
|
75
|
+
): ChannelFsm | undefined {
|
|
60
76
|
if (message.method === 'channels.info') {
|
|
61
|
-
|
|
77
|
+
const channelInfoStatus: string = message.params.data.event
|
|
78
|
+
if (['channel_accept', 'funding_created'].includes(channelInfoStatus)) {
|
|
62
79
|
changeStatus(channel, {
|
|
63
80
|
channel_accept: 'accepted',
|
|
64
81
|
funding_created: 'halfSigned'
|
|
65
|
-
}[
|
|
82
|
+
}[channelInfoStatus as 'channel_accept' | 'funding_created'])
|
|
66
83
|
return { handler: awaitingChannelCreateTx }
|
|
67
84
|
}
|
|
68
85
|
if (message.params.data.event === 'channel_reestablished') {
|
|
@@ -75,12 +92,14 @@ export function awaitingConnection (channel, message, state) {
|
|
|
75
92
|
return { handler: awaitingConnection }
|
|
76
93
|
}
|
|
77
94
|
if (message.method === 'channels.error') {
|
|
78
|
-
emit(channel, 'error', new
|
|
95
|
+
emit(channel, 'error', new ChannelConnectionError(message?.payload?.message))
|
|
79
96
|
return { handler: channelClosed }
|
|
80
97
|
}
|
|
81
98
|
}
|
|
82
99
|
|
|
83
|
-
export async function awaitingReconnection (
|
|
100
|
+
export async function awaitingReconnection (
|
|
101
|
+
channel: Channel, message: ChannelMessage, state: ChannelState
|
|
102
|
+
): Promise<ChannelFsm> {
|
|
84
103
|
if (message.method === 'channels.info') {
|
|
85
104
|
if (message.params.data.event === 'fsm_up') {
|
|
86
105
|
fsmId.set(channel, message.params.data.fsm_id)
|
|
@@ -91,59 +110,74 @@ export async function awaitingReconnection (channel, message, state) {
|
|
|
91
110
|
return handleUnexpectedMessage(channel, message, state)
|
|
92
111
|
}
|
|
93
112
|
|
|
94
|
-
export async function awaitingChannelCreateTx (
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
113
|
+
export async function awaitingChannelCreateTx (
|
|
114
|
+
channel: Channel, message: ChannelMessage
|
|
115
|
+
): Promise<ChannelFsm | undefined> {
|
|
116
|
+
const channelOptions = options.get(channel)
|
|
117
|
+
if (channelOptions != null) {
|
|
118
|
+
const tag = {
|
|
119
|
+
initiator: 'initiator_sign',
|
|
120
|
+
responder: 'responder_sign'
|
|
121
|
+
}[channelOptions.role]
|
|
122
|
+
if (message.method === `channels.sign.${tag}`) {
|
|
123
|
+
if (message.params.data.tx != null) {
|
|
124
|
+
const signedTx = await channelOptions.sign(tag, message.params.data.tx)
|
|
125
|
+
send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { tx: signedTx } })
|
|
126
|
+
return { handler: awaitingOnChainTx }
|
|
127
|
+
}
|
|
128
|
+
const signedTx = await appendSignature(
|
|
129
|
+
message.params.data.signed_tx, async tx => await channelOptions.sign(tag, tx)
|
|
130
|
+
)
|
|
131
|
+
send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } })
|
|
103
132
|
return { handler: awaitingOnChainTx }
|
|
104
133
|
}
|
|
105
|
-
const signedTx = await appendSignature(
|
|
106
|
-
message.params.data.signed_tx, tx => options.get(channel).sign(tag, tx)
|
|
107
|
-
)
|
|
108
|
-
send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } })
|
|
109
|
-
return { handler: awaitingOnChainTx }
|
|
110
134
|
}
|
|
111
135
|
}
|
|
112
136
|
|
|
113
|
-
export function awaitingOnChainTx (
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
) {
|
|
119
|
-
|
|
137
|
+
export function awaitingOnChainTx (
|
|
138
|
+
channel: Channel, message: ChannelMessage
|
|
139
|
+
): ChannelFsm | undefined {
|
|
140
|
+
const channelOptions = options.get(channel)
|
|
141
|
+
if (channelOptions != null) {
|
|
142
|
+
if (message.method === 'channels.on_chain_tx') {
|
|
143
|
+
if (
|
|
144
|
+
message.params.data.info === 'funding_signed' &&
|
|
145
|
+
channelOptions.role === 'initiator'
|
|
146
|
+
) {
|
|
147
|
+
return { handler: awaitingBlockInclusion }
|
|
148
|
+
}
|
|
149
|
+
if (
|
|
150
|
+
message.params.data.info === 'funding_created' &&
|
|
151
|
+
channelOptions.role === 'responder'
|
|
152
|
+
) {
|
|
153
|
+
return { handler: awaitingBlockInclusion }
|
|
154
|
+
}
|
|
120
155
|
}
|
|
121
156
|
if (
|
|
122
|
-
message.
|
|
123
|
-
|
|
157
|
+
message.method === 'channels.info' &&
|
|
158
|
+
message.params.data.event === 'funding_signed' &&
|
|
159
|
+
channelOptions.role === 'initiator'
|
|
124
160
|
) {
|
|
125
|
-
|
|
161
|
+
channelId.set(channel, message.params.channel_id)
|
|
162
|
+
changeStatus(channel, 'signed')
|
|
163
|
+
return { handler: awaitingOnChainTx }
|
|
126
164
|
}
|
|
127
165
|
}
|
|
128
|
-
if (
|
|
129
|
-
message.method === 'channels.info' &&
|
|
130
|
-
message.params.data.event === 'funding_signed' &&
|
|
131
|
-
options.get(channel).role === 'initiator'
|
|
132
|
-
) {
|
|
133
|
-
channelId.set(channel, message.params.channel_id)
|
|
134
|
-
changeStatus(channel, 'signed')
|
|
135
|
-
return { handler: awaitingOnChainTx }
|
|
136
|
-
}
|
|
137
166
|
}
|
|
138
167
|
|
|
139
|
-
export function awaitingBlockInclusion (
|
|
168
|
+
export function awaitingBlockInclusion (
|
|
169
|
+
channel: Channel, message: ChannelMessage
|
|
170
|
+
): ChannelFsm | undefined {
|
|
140
171
|
if (message.method === 'channels.info') {
|
|
141
|
-
const
|
|
172
|
+
const handlers: {
|
|
173
|
+
[key: string]: (channel: Channel, message: ChannelMessage) => ChannelFsm | undefined
|
|
174
|
+
} = {
|
|
142
175
|
funding_created: awaitingBlockInclusion,
|
|
143
176
|
own_funding_locked: awaitingBlockInclusion,
|
|
144
177
|
funding_locked: awaitingOpenConfirmation
|
|
145
|
-
}
|
|
146
|
-
|
|
178
|
+
}
|
|
179
|
+
const handler = handlers[message.params.data.event as string]
|
|
180
|
+
if (handler != null) {
|
|
147
181
|
return { handler }
|
|
148
182
|
}
|
|
149
183
|
}
|
|
@@ -156,21 +190,27 @@ export function awaitingBlockInclusion (channel, message, state) {
|
|
|
156
190
|
}
|
|
157
191
|
}
|
|
158
192
|
|
|
159
|
-
export function awaitingOpenConfirmation (
|
|
193
|
+
export function awaitingOpenConfirmation (
|
|
194
|
+
channel: Channel, message: ChannelMessage
|
|
195
|
+
): ChannelFsm | undefined {
|
|
160
196
|
if (message.method === 'channels.info' && message.params.data.event === 'open') {
|
|
161
197
|
channelId.set(channel, message.params.channel_id)
|
|
162
198
|
return { handler: awaitingInitialState }
|
|
163
199
|
}
|
|
164
200
|
}
|
|
165
201
|
|
|
166
|
-
export function awaitingInitialState (
|
|
202
|
+
export function awaitingInitialState (
|
|
203
|
+
channel: Channel, message: ChannelMessage
|
|
204
|
+
): ChannelFsm | undefined {
|
|
167
205
|
if (message.method === 'channels.update') {
|
|
168
206
|
changeState(channel, message.params.data.state)
|
|
169
207
|
return { handler: channelOpen }
|
|
170
208
|
}
|
|
171
209
|
}
|
|
172
210
|
|
|
173
|
-
export async function channelOpen (
|
|
211
|
+
export async function channelOpen (
|
|
212
|
+
channel: Channel, message: ChannelMessage, state: ChannelState
|
|
213
|
+
): Promise<ChannelFsm | undefined> {
|
|
174
214
|
switch (message.method) {
|
|
175
215
|
case 'channels.info':
|
|
176
216
|
switch (message.params.data.event) {
|
|
@@ -223,23 +263,26 @@ export async function channelOpen (channel, message, state) {
|
|
|
223
263
|
changeState(channel, message.params.data.state)
|
|
224
264
|
return { handler: channelOpen }
|
|
225
265
|
case 'channels.sign.shutdown_sign_ack':
|
|
226
|
-
return awaitingTxSignRequest(channel, message, state)
|
|
266
|
+
return await awaitingTxSignRequest(channel, message, state)
|
|
227
267
|
}
|
|
228
268
|
}
|
|
229
|
-
channelOpen.enter = (channel) => {
|
|
269
|
+
channelOpen.enter = (channel: Channel) => {
|
|
230
270
|
changeStatus(channel, 'open')
|
|
231
271
|
}
|
|
232
272
|
|
|
233
|
-
export async function awaitingOffChainTx (
|
|
273
|
+
export async function awaitingOffChainTx (
|
|
274
|
+
channel: Channel, message: ChannelMessage, state: ChannelState
|
|
275
|
+
): Promise<ChannelFsm> {
|
|
234
276
|
if (message.method === 'channels.sign.update') {
|
|
235
277
|
const { sign } = state
|
|
236
|
-
if (message.params.data.tx) {
|
|
237
|
-
const signedTx =
|
|
278
|
+
if (message.params.data.tx != null) {
|
|
279
|
+
const signedTx =
|
|
280
|
+
await sign(message.params.data.tx, { updates: message.params.data.updates })
|
|
238
281
|
send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } })
|
|
239
282
|
return { handler: awaitingOffChainUpdate, state }
|
|
240
283
|
}
|
|
241
|
-
const signedTx = await appendSignature(message.params.data.signed_tx, tx =>
|
|
242
|
-
sign(tx, { updates: message.params.data.updates })
|
|
284
|
+
const signedTx = await appendSignature(message.params.data.signed_tx, async tx =>
|
|
285
|
+
await sign(tx, { updates: message.params.data.updates })
|
|
243
286
|
)
|
|
244
287
|
if (typeof signedTx === 'string') {
|
|
245
288
|
send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } })
|
|
@@ -251,17 +294,17 @@ export async function awaitingOffChainTx (channel, message, state) {
|
|
|
251
294
|
}
|
|
252
295
|
}
|
|
253
296
|
if (message.method === 'channels.error') {
|
|
254
|
-
state.reject(new
|
|
297
|
+
state.reject(new ChannelConnectionError(message.data.message))
|
|
255
298
|
return { handler: channelOpen }
|
|
256
299
|
}
|
|
257
|
-
if (message.error) {
|
|
258
|
-
const { data
|
|
259
|
-
if (data.find(i => i.code === 1001)) {
|
|
260
|
-
state.reject(new
|
|
261
|
-
} else if (data.find(i => i.code === 1002)) {
|
|
262
|
-
state.reject(new
|
|
300
|
+
if (message.error != null) {
|
|
301
|
+
const { data } = message.error ?? { data: [] }
|
|
302
|
+
if (data.find(i => i.code === 1001) != null) {
|
|
303
|
+
state.reject(new InsufficientBalanceError('Insufficient balance'))
|
|
304
|
+
} else if (data.find(i => i.code === 1002) != null) {
|
|
305
|
+
state.reject(new IllegalArgumentError('Amount cannot be negative'))
|
|
263
306
|
} else {
|
|
264
|
-
state.reject(new
|
|
307
|
+
state.reject(new ChannelConnectionError(message.error.message))
|
|
265
308
|
}
|
|
266
309
|
return { handler: channelOpen }
|
|
267
310
|
}
|
|
@@ -282,7 +325,9 @@ export async function awaitingOffChainTx (channel, message, state) {
|
|
|
282
325
|
return handleUnexpectedMessage(channel, message, state)
|
|
283
326
|
}
|
|
284
327
|
|
|
285
|
-
export function awaitingOffChainUpdate (
|
|
328
|
+
export function awaitingOffChainUpdate (
|
|
329
|
+
channel: Channel, message: ChannelMessage, state: ChannelState
|
|
330
|
+
): ChannelFsm | undefined {
|
|
286
331
|
if (message.method === 'channels.update') {
|
|
287
332
|
changeState(channel, message.params.data.state)
|
|
288
333
|
state.resolve({ accepted: true, signedTx: message.params.data.state })
|
|
@@ -302,27 +347,30 @@ export function awaitingOffChainUpdate (channel, message, state) {
|
|
|
302
347
|
return { handler: channelOpen }
|
|
303
348
|
}
|
|
304
349
|
}
|
|
305
|
-
if (message.error) {
|
|
306
|
-
state.reject(new
|
|
350
|
+
if (message.error != null) {
|
|
351
|
+
state.reject(new ChannelConnectionError(message.error.message))
|
|
307
352
|
return { handler: channelOpen }
|
|
308
353
|
}
|
|
309
354
|
return handleUnexpectedMessage(channel, message, state)
|
|
310
355
|
}
|
|
311
356
|
|
|
312
|
-
export async function awaitingTxSignRequest (
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
357
|
+
export async function awaitingTxSignRequest (
|
|
358
|
+
channel: Channel, message: ChannelMessage, state: ChannelState
|
|
359
|
+
): Promise<ChannelFsm | undefined> {
|
|
360
|
+
const [, tag] = message.method.match(/^channels\.sign\.([^.]+)$/) ?? []
|
|
361
|
+
const channelOptions = options.get(channel)
|
|
362
|
+
if (tag != null && (channelOptions != null)) {
|
|
363
|
+
if (message.params.data.tx != null) {
|
|
364
|
+
const signedTx = await channelOptions.sign(tag, message.params.data.tx, {
|
|
317
365
|
updates: message.params.data.updates
|
|
318
366
|
})
|
|
319
|
-
if (signedTx) {
|
|
367
|
+
if (signedTx != null) {
|
|
320
368
|
send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { tx: signedTx } })
|
|
321
369
|
return { handler: channelOpen }
|
|
322
370
|
}
|
|
323
371
|
} else {
|
|
324
|
-
const signedTx = await appendSignature(message.params.data.signed_tx, tx =>
|
|
325
|
-
|
|
372
|
+
const signedTx = await appendSignature(message.params.data.signed_tx, async tx =>
|
|
373
|
+
await channelOptions.sign(tag, tx, { updates: message.params.data.updates })
|
|
326
374
|
)
|
|
327
375
|
if (typeof signedTx === 'string') {
|
|
328
376
|
send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } })
|
|
@@ -348,8 +396,10 @@ export async function awaitingTxSignRequest (channel, message, state) {
|
|
|
348
396
|
return handleUnexpectedMessage(channel, message, state)
|
|
349
397
|
}
|
|
350
398
|
|
|
351
|
-
export function awaitingUpdateConflict (
|
|
352
|
-
|
|
399
|
+
export function awaitingUpdateConflict (
|
|
400
|
+
channel: Channel, message: ChannelMessage, state: ChannelState
|
|
401
|
+
): ChannelFsm {
|
|
402
|
+
if (message.error != null) {
|
|
353
403
|
return { handler: awaitingUpdateConflict, state }
|
|
354
404
|
}
|
|
355
405
|
if (message.method === 'channels.conflict') {
|
|
@@ -358,21 +408,26 @@ export function awaitingUpdateConflict (channel, message, state) {
|
|
|
358
408
|
return handleUnexpectedMessage(channel, message, state)
|
|
359
409
|
}
|
|
360
410
|
|
|
361
|
-
export async function awaitingShutdownTx (
|
|
411
|
+
export async function awaitingShutdownTx (
|
|
412
|
+
channel: Channel, message: ChannelMessage, state: ChannelState
|
|
413
|
+
): Promise<ChannelFsm | undefined> {
|
|
362
414
|
if (message.method === 'channels.sign.shutdown_sign') {
|
|
363
|
-
if (message.params.data.tx) {
|
|
415
|
+
if (message.params.data.tx != null) {
|
|
364
416
|
const signedTx = await state.sign(message.params.data.tx)
|
|
365
417
|
send(channel, { jsonrpc: '2.0', method: 'channels.shutdown_sign', params: { tx: signedTx } })
|
|
366
418
|
return { handler: awaitingShutdownOnChainTx, state }
|
|
367
419
|
}
|
|
368
|
-
const signedTx = await appendSignature(message.params.data.signed_tx, tx =>
|
|
420
|
+
const signedTx = await appendSignature(message.params.data.signed_tx, async tx =>
|
|
421
|
+
await state.sign(tx))
|
|
369
422
|
send(channel, { jsonrpc: '2.0', method: 'channels.shutdown_sign', params: { signed_tx: signedTx } })
|
|
370
423
|
return { handler: awaitingShutdownOnChainTx, state }
|
|
371
424
|
}
|
|
372
425
|
return handleUnexpectedMessage(channel, message, state)
|
|
373
426
|
}
|
|
374
427
|
|
|
375
|
-
export function awaitingShutdownOnChainTx (
|
|
428
|
+
export function awaitingShutdownOnChainTx (
|
|
429
|
+
channel: Channel, message: ChannelMessage, state: ChannelState
|
|
430
|
+
): ChannelFsm {
|
|
376
431
|
if (message.method === 'channels.on_chain_tx') {
|
|
377
432
|
// state.resolve(message.params.data.tx)
|
|
378
433
|
return { handler: channelClosed, state }
|
|
@@ -380,29 +435,34 @@ export function awaitingShutdownOnChainTx (channel, message, state) {
|
|
|
380
435
|
return handleUnexpectedMessage(channel, message, state)
|
|
381
436
|
}
|
|
382
437
|
|
|
383
|
-
export function awaitingLeave (
|
|
438
|
+
export function awaitingLeave (
|
|
439
|
+
channel: Channel, message: ChannelMessage, state: ChannelState
|
|
440
|
+
): ChannelFsm {
|
|
384
441
|
if (message.method === 'channels.leave') {
|
|
385
442
|
state.resolve({ channelId: message.params.channel_id, signedTx: message.params.data.state })
|
|
386
443
|
disconnect(channel)
|
|
387
444
|
return { handler: channelClosed }
|
|
388
445
|
}
|
|
389
446
|
if (message.method === 'channels.error') {
|
|
390
|
-
state.reject(new
|
|
447
|
+
state.reject(new ChannelConnectionError(message.data.message))
|
|
391
448
|
return { handler: channelOpen }
|
|
392
449
|
}
|
|
393
450
|
return handleUnexpectedMessage(channel, message, state)
|
|
394
451
|
}
|
|
395
452
|
|
|
396
|
-
export async function awaitingWithdrawTx (
|
|
453
|
+
export async function awaitingWithdrawTx (
|
|
454
|
+
channel: Channel, message: ChannelMessage, state: ChannelState
|
|
455
|
+
): Promise<ChannelFsm | undefined> {
|
|
397
456
|
if (message.method === 'channels.sign.withdraw_tx') {
|
|
398
457
|
const { sign } = state
|
|
399
|
-
if (message.params.data.tx) {
|
|
400
|
-
const signedTx =
|
|
458
|
+
if (message.params.data.tx != null) {
|
|
459
|
+
const signedTx =
|
|
460
|
+
await sign(message.params.data.tx, { updates: message.params.data.updates })
|
|
401
461
|
send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { tx: signedTx } })
|
|
402
462
|
return { handler: awaitingWithdrawCompletion, state }
|
|
403
463
|
}
|
|
404
|
-
const signedTx = await appendSignature(message.params.data.signed_tx, tx =>
|
|
405
|
-
sign(tx, { updates: message.params.data.updates })
|
|
464
|
+
const signedTx = await appendSignature(message.params.data.signed_tx, async tx =>
|
|
465
|
+
await sign(tx, { updates: message.params.data.updates })
|
|
406
466
|
)
|
|
407
467
|
if (typeof signedTx === 'string') {
|
|
408
468
|
send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { signed_tx: signedTx } })
|
|
@@ -416,20 +476,25 @@ export async function awaitingWithdrawTx (channel, message, state) {
|
|
|
416
476
|
return handleUnexpectedMessage(channel, message, state)
|
|
417
477
|
}
|
|
418
478
|
|
|
419
|
-
export function awaitingWithdrawCompletion (
|
|
479
|
+
export function awaitingWithdrawCompletion (
|
|
480
|
+
channel: Channel, message: ChannelMessage, state: ChannelState
|
|
481
|
+
): ChannelFsm {
|
|
420
482
|
if (message.method === 'channels.on_chain_tx') {
|
|
421
|
-
if (state.onOnChainTx) {
|
|
483
|
+
if (state.onOnChainTx != null) {
|
|
422
484
|
state.onOnChainTx(message.params.data.tx)
|
|
423
485
|
}
|
|
424
486
|
return { handler: awaitingWithdrawCompletion, state }
|
|
425
487
|
}
|
|
426
488
|
if (message.method === 'channels.info') {
|
|
427
489
|
if (['own_withdraw_locked', 'withdraw_locked'].includes(message.params.data.event)) {
|
|
428
|
-
const
|
|
490
|
+
const callbacks: {
|
|
491
|
+
[key: string]: Function | undefined
|
|
492
|
+
} = {
|
|
429
493
|
own_withdraw_locked: state.onOwnWithdrawLocked,
|
|
430
494
|
withdraw_locked: state.onWithdrawLocked
|
|
431
|
-
}
|
|
432
|
-
|
|
495
|
+
}
|
|
496
|
+
const callback = callbacks[message.params.data.event]
|
|
497
|
+
if (callback != null) {
|
|
433
498
|
callback()
|
|
434
499
|
}
|
|
435
500
|
return { handler: awaitingWithdrawCompletion, state }
|
|
@@ -457,16 +522,19 @@ export function awaitingWithdrawCompletion (channel, message, state) {
|
|
|
457
522
|
return handleUnexpectedMessage(channel, message, state)
|
|
458
523
|
}
|
|
459
524
|
|
|
460
|
-
export async function awaitingDepositTx (
|
|
525
|
+
export async function awaitingDepositTx (
|
|
526
|
+
channel: Channel, message: ChannelMessage, state: ChannelState
|
|
527
|
+
): Promise<ChannelFsm | undefined> {
|
|
461
528
|
if (message.method === 'channels.sign.deposit_tx') {
|
|
462
529
|
const { sign } = state
|
|
463
|
-
if (message.params.data.tx) {
|
|
464
|
-
const signedTx = await sign(message.params.data.tx,
|
|
530
|
+
if (message.params.data.tx != null) {
|
|
531
|
+
const signedTx = await sign(message.params.data.tx,
|
|
532
|
+
{ updates: message.params.data.updates })
|
|
465
533
|
send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { tx: signedTx } })
|
|
466
534
|
return { handler: awaitingDepositCompletion, state }
|
|
467
535
|
}
|
|
468
|
-
const signedTx = await appendSignature(message.params.data.signed_tx, tx =>
|
|
469
|
-
sign(tx, { updates: message.params.data.updates })
|
|
536
|
+
const signedTx = await appendSignature(message.params.data.signed_tx, async tx =>
|
|
537
|
+
await sign(tx, { updates: message.params.data.updates })
|
|
470
538
|
)
|
|
471
539
|
if (typeof signedTx === 'string') {
|
|
472
540
|
send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { signed_tx: signedTx } })
|
|
@@ -480,20 +548,25 @@ export async function awaitingDepositTx (channel, message, state) {
|
|
|
480
548
|
return handleUnexpectedMessage(channel, message, state)
|
|
481
549
|
}
|
|
482
550
|
|
|
483
|
-
export function awaitingDepositCompletion (
|
|
551
|
+
export function awaitingDepositCompletion (
|
|
552
|
+
channel: Channel, message: ChannelMessage, state: ChannelState
|
|
553
|
+
): ChannelFsm {
|
|
484
554
|
if (message.method === 'channels.on_chain_tx') {
|
|
485
|
-
if (state.onOnChainTx) {
|
|
555
|
+
if (state.onOnChainTx != null) {
|
|
486
556
|
state.onOnChainTx(message.params.data.tx)
|
|
487
557
|
}
|
|
488
558
|
return { handler: awaitingDepositCompletion, state }
|
|
489
559
|
}
|
|
490
560
|
if (message.method === 'channels.info') {
|
|
491
561
|
if (['own_deposit_locked', 'deposit_locked'].includes(message.params.data.event)) {
|
|
492
|
-
const
|
|
562
|
+
const callbacks: {
|
|
563
|
+
[key: string]: Function | undefined
|
|
564
|
+
} = {
|
|
493
565
|
own_deposit_locked: state.onOwnDepositLocked,
|
|
494
566
|
deposit_locked: state.onDepositLocked
|
|
495
|
-
}
|
|
496
|
-
|
|
567
|
+
}
|
|
568
|
+
const callback = callbacks[message.params.data.event]
|
|
569
|
+
if (callback != null) {
|
|
497
570
|
callback()
|
|
498
571
|
}
|
|
499
572
|
return { handler: awaitingDepositCompletion, state }
|
|
@@ -521,14 +594,17 @@ export function awaitingDepositCompletion (channel, message, state) {
|
|
|
521
594
|
return handleUnexpectedMessage(channel, message, state)
|
|
522
595
|
}
|
|
523
596
|
|
|
524
|
-
export async function awaitingNewContractTx (
|
|
597
|
+
export async function awaitingNewContractTx (
|
|
598
|
+
channel: Channel, message: ChannelMessage, state: ChannelState
|
|
599
|
+
): Promise<ChannelFsm | undefined> {
|
|
525
600
|
if (message.method === 'channels.sign.update') {
|
|
526
|
-
if (message.params.data.tx) {
|
|
601
|
+
if (message.params.data.tx != null) {
|
|
527
602
|
const signedTx = await state.sign(message.params.data.tx)
|
|
528
603
|
send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } })
|
|
529
604
|
return { handler: awaitingNewContractCompletion, state }
|
|
530
605
|
}
|
|
531
|
-
const signedTx = await appendSignature(message.params.data.signed_tx,
|
|
606
|
+
const signedTx = await appendSignature(message.params.data.signed_tx,
|
|
607
|
+
async tx => await state.sign(tx))
|
|
532
608
|
if (typeof signedTx === 'string') {
|
|
533
609
|
send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } })
|
|
534
610
|
return { handler: awaitingNewContractCompletion, state }
|
|
@@ -541,20 +617,27 @@ export async function awaitingNewContractTx (channel, message, state) {
|
|
|
541
617
|
return handleUnexpectedMessage(channel, message, state)
|
|
542
618
|
}
|
|
543
619
|
|
|
544
|
-
export function awaitingNewContractCompletion (
|
|
620
|
+
export function awaitingNewContractCompletion (
|
|
621
|
+
channel: Channel, message: ChannelMessage, state: ChannelState
|
|
622
|
+
): ChannelFsm {
|
|
623
|
+
const channelOptions = options.get(channel)
|
|
545
624
|
if (message.method === 'channels.update') {
|
|
546
|
-
const { round } = unpackTx(message.params.data.state).tx.encodedTx.tx
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
625
|
+
const { round } = unpackTx(message.params.data.state, TX_TYPE.signed).tx.encodedTx.tx
|
|
626
|
+
if (channelOptions?.role != null) {
|
|
627
|
+
const role = channelOptions.role === 'initiator'
|
|
628
|
+
? 'initiatorId'
|
|
629
|
+
: channelOptions.role === 'responder' ? 'responderId' : null
|
|
630
|
+
if (role != null) {
|
|
631
|
+
const owner = channelOptions?.[role]
|
|
632
|
+
changeState(channel, message.params.data.state)
|
|
633
|
+
state.resolve({
|
|
634
|
+
accepted: true,
|
|
635
|
+
address: encodeContractAddress(owner, round),
|
|
636
|
+
signedTx: message.params.data.state
|
|
637
|
+
})
|
|
638
|
+
return { handler: channelOpen }
|
|
639
|
+
}
|
|
640
|
+
}
|
|
558
641
|
}
|
|
559
642
|
if (message.method === 'channels.conflict') {
|
|
560
643
|
state.resolve({
|
|
@@ -573,9 +656,11 @@ export function awaitingNewContractCompletion (channel, message, state) {
|
|
|
573
656
|
return handleUnexpectedMessage(channel, message, state)
|
|
574
657
|
}
|
|
575
658
|
|
|
576
|
-
export async function awaitingCallContractUpdateTx (
|
|
659
|
+
export async function awaitingCallContractUpdateTx (
|
|
660
|
+
channel: Channel, message: ChannelMessage, state: ChannelState
|
|
661
|
+
): Promise<ChannelFsm | undefined> {
|
|
577
662
|
if (message.method === 'channels.sign.update') {
|
|
578
|
-
if (message.params.data.tx) {
|
|
663
|
+
if (message.params.data.tx != null) {
|
|
579
664
|
const signedTx = await state.sign(
|
|
580
665
|
message.params.data.tx, { updates: message.params.data.updates }
|
|
581
666
|
)
|
|
@@ -584,7 +669,7 @@ export async function awaitingCallContractUpdateTx (channel, message, state) {
|
|
|
584
669
|
}
|
|
585
670
|
const signedTx = await appendSignature(
|
|
586
671
|
message.params.data.signed_tx,
|
|
587
|
-
tx => state.sign(tx, { updates: message.params.data.updates })
|
|
672
|
+
async tx => await state.sign(tx, { updates: message.params.data.updates })
|
|
588
673
|
)
|
|
589
674
|
if (typeof signedTx === 'string') {
|
|
590
675
|
send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } })
|
|
@@ -598,10 +683,12 @@ export async function awaitingCallContractUpdateTx (channel, message, state) {
|
|
|
598
683
|
return handleUnexpectedMessage(channel, message, state)
|
|
599
684
|
}
|
|
600
685
|
|
|
601
|
-
export async function awaitingCallContractForceProgressUpdate (
|
|
686
|
+
export async function awaitingCallContractForceProgressUpdate (
|
|
687
|
+
channel: Channel, message: ChannelMessage, state: ChannelState
|
|
688
|
+
): Promise<ChannelFsm | undefined> {
|
|
602
689
|
if (message.method === 'channels.sign.force_progress_tx') {
|
|
603
|
-
const signedTx = await appendSignature(message.params.data.signed_tx, tx =>
|
|
604
|
-
state.sign(tx, { updates: message.params.data.updates })
|
|
690
|
+
const signedTx = await appendSignature(message.params.data.signed_tx, async tx =>
|
|
691
|
+
await state.sign(tx, { updates: message.params.data.updates })
|
|
605
692
|
)
|
|
606
693
|
send(channel, { jsonrpc: '2.0', method: 'channels.force_progress_sign', params: { signed_tx: signedTx } })
|
|
607
694
|
return { handler: awaitingForceProgressCompletion, state }
|
|
@@ -609,9 +696,11 @@ export async function awaitingCallContractForceProgressUpdate (channel, message,
|
|
|
609
696
|
return handleUnexpectedMessage(channel, message, state)
|
|
610
697
|
}
|
|
611
698
|
|
|
612
|
-
export function awaitingForceProgressCompletion (
|
|
699
|
+
export function awaitingForceProgressCompletion (
|
|
700
|
+
channel: Channel, message: ChannelMessage, state: ChannelState
|
|
701
|
+
): ChannelFsm {
|
|
613
702
|
if (message.method === 'channels.on_chain_tx') {
|
|
614
|
-
if (state.onOnChainTx) {
|
|
703
|
+
if (state.onOnChainTx != null) {
|
|
615
704
|
state.onOnChainTx(message.params.data)
|
|
616
705
|
}
|
|
617
706
|
emit(channel, 'onChainTx', message.params.data.tx, {
|
|
@@ -623,7 +712,9 @@ export function awaitingForceProgressCompletion (channel, message, state) {
|
|
|
623
712
|
return handleUnexpectedMessage(channel, message, state)
|
|
624
713
|
}
|
|
625
714
|
|
|
626
|
-
export function awaitingCallContractCompletion (
|
|
715
|
+
export function awaitingCallContractCompletion (
|
|
716
|
+
channel: Channel, message: ChannelMessage, state: ChannelState
|
|
717
|
+
): ChannelFsm {
|
|
627
718
|
if (message.method === 'channels.update') {
|
|
628
719
|
changeState(channel, message.params.data.state)
|
|
629
720
|
state.resolve({ accepted: true, signedTx: message.params.data.state })
|
|
@@ -646,17 +737,21 @@ export function awaitingCallContractCompletion (channel, message, state) {
|
|
|
646
737
|
return handleUnexpectedMessage(channel, message, state)
|
|
647
738
|
}
|
|
648
739
|
|
|
649
|
-
export function awaitingCallsPruned (
|
|
740
|
+
export function awaitingCallsPruned (
|
|
741
|
+
_channels: Channel[], message: ChannelMessage, state: ChannelState
|
|
742
|
+
): ChannelFsm {
|
|
650
743
|
if (message.method === 'channels.calls_pruned.reply') {
|
|
651
744
|
state.resolve()
|
|
652
745
|
return { handler: channelOpen }
|
|
653
746
|
}
|
|
654
|
-
state.reject(new
|
|
747
|
+
state.reject(new UnexpectedChannelMessageError('Unexpected message received'))
|
|
655
748
|
return { handler: channelClosed }
|
|
656
749
|
}
|
|
657
750
|
|
|
658
|
-
export function channelClosed (
|
|
659
|
-
|
|
751
|
+
export function channelClosed (
|
|
752
|
+
_channel: Channel, message: ChannelMessage, state: ChannelState
|
|
753
|
+
): ChannelFsm {
|
|
754
|
+
if (state == null) return { handler: channelClosed }
|
|
660
755
|
if (message.params.data.event === 'closing') return { handler: channelClosed, state }
|
|
661
756
|
if (message.params.data.info === 'channel_closed') {
|
|
662
757
|
state.closeTx = message.params.data.tx
|