@aeternity/aepp-sdk 13.0.0-alpha.1 → 13.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/README.md +1 -1
- package/bin/aesophia_cli +0 -0
- package/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.map +1 -1
- package/dist/aepp-sdk.browser.js +1 -1
- package/dist/aepp-sdk.browser.js.map +1 -1
- package/dist/aepp-sdk.js +1833 -1543
- package/dist/aepp-sdk.js.map +1 -1
- package/es/AeSdk.mjs.map +1 -1
- package/es/AeSdkAepp.d.ts +5 -4
- package/es/AeSdkAepp.mjs +13 -17
- package/es/AeSdkAepp.mjs.map +1 -1
- package/es/AeSdkBase.mjs.map +1 -1
- package/es/AeSdkMethods.d.ts +11 -12
- package/es/AeSdkMethods.mjs +6 -8
- package/es/AeSdkMethods.mjs.map +1 -1
- package/es/AeSdkWallet.mjs +1 -1
- package/es/AeSdkWallet.mjs.map +1 -1
- package/es/Node.d.ts +5 -1
- package/es/Node.mjs +11 -5
- package/es/Node.mjs.map +1 -1
- package/es/account/Base.d.ts +11 -6
- package/es/account/Base.mjs +0 -17
- package/es/account/Base.mjs.map +1 -1
- package/es/account/Generalized.mjs +12 -25
- package/es/account/Generalized.mjs.map +1 -1
- package/es/account/Ledger.mjs.map +1 -1
- package/es/account/LedgerFactory.mjs.map +1 -1
- package/es/account/Memory.d.ts +2 -1
- package/es/account/Memory.mjs +9 -21
- package/es/account/Memory.mjs.map +1 -1
- package/es/account/Rpc.mjs.map +1 -1
- package/es/aens.d.ts +12 -14
- package/es/aens.mjs +17 -31
- package/es/aens.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection/Browser.mjs +0 -16
- package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +0 -16
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +0 -16
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
- package/es/aepp-wallet-communication/connection-proxy.mjs +0 -17
- package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -1
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs +4 -5
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
- package/es/aepp-wallet-communication/rpc/types.d.ts +6 -2
- package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
- package/es/aepp-wallet-communication/schema.mjs.map +1 -1
- package/es/aepp-wallet-communication/wallet-detector.mjs +0 -16
- package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
- package/es/apis/compiler/compiler.d.ts +1 -1
- package/es/apis/compiler/compiler.mjs +4 -20
- package/es/apis/compiler/compiler.mjs.map +1 -1
- package/es/apis/compiler/models/index.d.ts +3 -2
- package/es/apis/compiler/models/index.mjs.map +1 -1
- package/es/apis/compiler/models/mappers.d.ts +1 -1
- package/es/apis/compiler/models/mappers.mjs +19 -2
- package/es/apis/compiler/models/mappers.mjs.map +1 -1
- package/es/apis/node/models/index.d.ts +15 -15
- package/es/apis/node/models/index.mjs.map +1 -1
- package/es/apis/node/models/mappers.d.ts +1 -1
- package/es/apis/node/models/mappers.mjs +2 -1
- package/es/apis/node/models/mappers.mjs.map +1 -1
- package/es/apis/node/models/parameters.d.ts +2 -2
- package/es/apis/node/models/parameters.mjs +2 -2
- package/es/apis/node/models/parameters.mjs.map +1 -1
- package/es/apis/node/node.mjs +3 -19
- package/es/apis/node/node.mjs.map +1 -1
- package/es/chain.d.ts +8 -8
- package/es/chain.mjs +20 -23
- package/es/chain.mjs.map +1 -1
- package/es/channel/Base.d.ts +25 -12
- package/es/channel/Base.mjs +23 -26
- package/es/channel/Base.mjs.map +1 -1
- package/es/channel/Contract.mjs +8 -21
- package/es/channel/Contract.mjs.map +1 -1
- package/es/channel/Spend.d.ts +4 -2
- package/es/channel/Spend.mjs +0 -16
- package/es/channel/Spend.mjs.map +1 -1
- package/es/channel/handlers.mjs +6 -18
- package/es/channel/handlers.mjs.map +1 -1
- package/es/channel/internal.d.ts +19 -2
- package/es/channel/internal.mjs +19 -19
- package/es/channel/internal.mjs.map +1 -1
- package/es/contract/Contract.d.ts +30 -85
- package/es/contract/Contract.mjs +197 -215
- package/es/contract/Contract.mjs.map +1 -1
- package/es/contract/compiler/Base.d.ts +10 -14
- package/es/contract/compiler/Base.mjs.map +1 -1
- package/es/contract/compiler/Cli.mjs +5 -11
- package/es/contract/compiler/Cli.mjs.map +1 -1
- package/es/contract/compiler/Http.mjs +6 -30
- package/es/contract/compiler/Http.mjs.map +1 -1
- package/es/contract/compiler/HttpNode.mjs.map +1 -1
- package/es/contract/compiler/getFileSystem.mjs.map +1 -1
- package/es/contract/delegation-signature.d.ts +43 -0
- package/es/contract/delegation-signature.mjs +45 -0
- package/es/contract/delegation-signature.mjs.map +1 -0
- package/es/contract/ga.d.ts +23 -7
- package/es/contract/ga.mjs +52 -27
- package/es/contract/ga.mjs.map +1 -1
- package/es/index-browser.d.ts +5 -4
- package/es/index-browser.mjs +7 -21
- package/es/index-browser.mjs.map +1 -1
- package/es/oracle.d.ts +12 -17
- package/es/oracle.mjs +28 -48
- package/es/oracle.mjs.map +1 -1
- package/es/spend.d.ts +19 -27
- package/es/spend.mjs +20 -43
- package/es/spend.mjs.map +1 -1
- package/es/tx/builder/SchemaTypes.d.ts +37 -0
- package/es/tx/builder/SchemaTypes.mjs +2 -0
- package/es/tx/builder/SchemaTypes.mjs.map +1 -0
- package/es/tx/builder/constants.d.ts +4 -2
- package/es/tx/builder/constants.mjs +2 -0
- package/es/tx/builder/constants.mjs.map +1 -1
- package/es/tx/builder/field-types/abi-version.d.ts +11 -2
- package/es/tx/builder/field-types/abi-version.mjs +24 -4
- package/es/tx/builder/field-types/abi-version.mjs.map +1 -1
- package/es/tx/builder/field-types/address.mjs.map +1 -1
- package/es/tx/builder/field-types/array.d.ts +1 -1
- package/es/tx/builder/field-types/array.mjs.map +1 -1
- package/es/tx/builder/field-types/boolean.mjs.map +1 -1
- package/es/tx/builder/field-types/coin-amount.d.ts +3 -4
- package/es/tx/builder/field-types/coin-amount.mjs +4 -5
- package/es/tx/builder/field-types/coin-amount.mjs.map +1 -1
- package/es/tx/builder/field-types/ct-version.d.ts +22 -3
- package/es/tx/builder/field-types/ct-version.mjs +32 -4
- package/es/tx/builder/field-types/ct-version.mjs.map +1 -1
- package/es/tx/builder/field-types/deposit.d.ts +2 -1
- package/es/tx/builder/field-types/deposit.mjs +3 -2
- package/es/tx/builder/field-types/deposit.mjs.map +1 -1
- package/es/tx/builder/field-types/encoded.d.ts +1 -1
- package/es/tx/builder/field-types/encoded.mjs.map +1 -1
- package/es/tx/builder/field-types/entry.mjs +3 -0
- package/es/tx/builder/field-types/entry.mjs.map +1 -1
- package/es/tx/builder/field-types/enumeration.mjs.map +1 -1
- package/es/tx/builder/field-types/fee.d.ts +3 -1
- package/es/tx/builder/field-types/fee.mjs +5 -1
- package/es/tx/builder/field-types/fee.mjs.map +1 -1
- package/es/tx/builder/field-types/field.mjs.map +1 -1
- package/es/tx/builder/field-types/gas-limit.d.ts +3 -2
- package/es/tx/builder/field-types/gas-limit.mjs +4 -2
- package/es/tx/builder/field-types/gas-limit.mjs.map +1 -1
- package/es/tx/builder/field-types/gas-price.d.ts +3 -1
- package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
- package/es/tx/builder/field-types/index.d.ts +52 -13
- package/es/tx/builder/field-types/index.mjs +10 -2
- package/es/tx/builder/field-types/index.mjs.map +1 -1
- package/es/tx/builder/field-types/map.d.ts +13 -0
- package/es/tx/builder/field-types/map.mjs +49 -0
- package/es/tx/builder/field-types/map.mjs.map +1 -0
- package/es/tx/builder/field-types/mptree.d.ts +7 -2
- package/es/tx/builder/field-types/mptree.mjs +5 -7
- package/es/tx/builder/field-types/mptree.mjs.map +1 -1
- package/es/tx/builder/field-types/name-fee.d.ts +1 -1
- package/es/tx/builder/field-types/name-fee.mjs +2 -2
- package/es/tx/builder/field-types/name-fee.mjs.map +1 -1
- package/es/tx/builder/field-types/name-id.mjs.map +1 -1
- package/es/tx/builder/field-types/name.mjs.map +1 -1
- package/es/tx/builder/field-types/nonce.d.ts +14 -0
- package/es/tx/builder/field-types/nonce.mjs +29 -0
- package/es/tx/builder/field-types/nonce.mjs.map +1 -0
- package/es/tx/builder/field-types/pointers.mjs.map +1 -1
- package/es/tx/builder/field-types/raw.mjs.map +1 -1
- package/es/tx/builder/field-types/short-u-int-const.d.ts +4 -2
- package/es/tx/builder/field-types/short-u-int-const.mjs +12 -8
- package/es/tx/builder/field-types/short-u-int-const.mjs.map +1 -1
- package/es/tx/builder/field-types/short-u-int.mjs.map +1 -1
- package/es/tx/builder/field-types/string.mjs.map +1 -1
- package/es/tx/builder/field-types/ttl.d.ts +11 -0
- package/es/tx/builder/field-types/ttl.mjs +21 -0
- package/es/tx/builder/field-types/ttl.mjs.map +1 -0
- package/es/tx/builder/field-types/u-int.mjs.map +1 -1
- package/es/tx/builder/field-types/wrapped.d.ts +14 -0
- package/es/tx/builder/field-types/wrapped.mjs +22 -0
- package/es/tx/builder/field-types/wrapped.mjs.map +1 -0
- package/es/tx/builder/helpers.mjs.map +1 -1
- package/es/tx/builder/index.d.ts +20 -20
- package/es/tx/builder/index.mjs +54 -64
- package/es/tx/builder/index.mjs.map +1 -1
- package/es/tx/builder/schema.d.ts +2735 -2865
- package/es/tx/builder/schema.generated.d.ts +2011 -0
- package/es/tx/builder/schema.generated.mjs +2 -0
- package/es/tx/builder/schema.generated.mjs.map +1 -0
- package/es/tx/builder/schema.mjs +459 -155
- package/es/tx/builder/schema.mjs.map +1 -1
- package/es/tx/execution-cost.d.ts +35 -0
- package/es/tx/execution-cost.mjs +123 -0
- package/es/tx/execution-cost.mjs.map +1 -0
- package/es/tx/transaction-signer.d.ts +6 -0
- package/es/tx/transaction-signer.mjs +27 -0
- package/es/tx/transaction-signer.mjs.map +1 -0
- package/es/tx/validator.mjs +60 -109
- package/es/tx/validator.mjs.map +1 -1
- package/es/utils/amount-formatter.mjs +0 -16
- package/es/utils/amount-formatter.mjs.map +1 -1
- package/es/utils/autorest.d.ts +3 -2
- package/es/utils/autorest.mjs +43 -11
- package/es/utils/autorest.mjs.map +1 -1
- package/es/utils/bytes.mjs +0 -16
- package/es/utils/bytes.mjs.map +1 -1
- package/es/utils/crypto.mjs +0 -16
- package/es/utils/crypto.mjs.map +1 -1
- package/es/utils/encoder.mjs.map +1 -1
- package/es/utils/errors.d.ts +14 -31
- package/es/utils/errors.mjs +3 -33
- package/es/utils/errors.mjs.map +1 -1
- package/es/utils/hd-wallet.mjs.map +1 -1
- package/es/utils/json-big.mjs.map +1 -1
- package/es/utils/keystore.mjs.map +1 -1
- package/es/utils/other.d.ts +1 -1
- package/es/utils/other.mjs.map +1 -1
- package/es/utils/semver-satisfies.mjs.map +1 -1
- package/es/utils/string.mjs +0 -17
- package/es/utils/string.mjs.map +1 -1
- package/package.json +34 -30
- package/src/AeSdkAepp.ts +16 -14
- package/src/AeSdkMethods.ts +11 -16
- package/src/AeSdkWallet.ts +1 -1
- package/src/Node.ts +17 -6
- package/src/account/Base.ts +11 -22
- package/src/account/Generalized.ts +9 -24
- package/src/account/Memory.ts +14 -21
- package/src/aens.ts +31 -47
- package/src/aepp-wallet-communication/connection/Browser.ts +0 -17
- package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +0 -17
- package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +0 -17
- package/src/aepp-wallet-communication/connection-proxy.ts +0 -17
- package/src/aepp-wallet-communication/rpc/types.ts +7 -2
- package/src/aepp-wallet-communication/wallet-detector.ts +0 -17
- package/src/apis/compiler/compiler.ts +3 -27
- package/src/apis/compiler/models/index.ts +3 -2
- package/src/apis/compiler/models/mappers.ts +15 -2
- package/src/apis/node/models/index.ts +16 -15
- package/src/apis/node/models/mappers.ts +2 -1
- package/src/apis/node/models/parameters.ts +2 -2
- package/src/apis/node/node.ts +3 -27
- package/src/chain.ts +29 -28
- package/src/channel/Base.ts +33 -33
- package/src/channel/Contract.ts +8 -23
- package/src/channel/Spend.ts +2 -17
- package/src/channel/handlers.ts +5 -18
- package/src/channel/internal.ts +40 -22
- package/src/contract/Contract.ts +161 -170
- package/src/contract/compiler/Base.ts +10 -14
- package/src/contract/compiler/Cli.ts +5 -11
- package/src/contract/compiler/Http.ts +6 -25
- package/src/contract/delegation-signature.ts +56 -0
- package/src/contract/ga.ts +53 -32
- package/src/index-browser.ts +15 -21
- package/src/oracle.ts +46 -56
- package/src/spend.ts +33 -67
- package/src/tx/builder/SchemaTypes.ts +79 -0
- package/src/tx/builder/constants.ts +2 -0
- package/src/tx/builder/field-types/abi-version.ts +29 -6
- package/src/tx/builder/field-types/array.ts +1 -1
- package/src/tx/builder/field-types/coin-amount.ts +6 -4
- package/src/tx/builder/field-types/ct-version.ts +37 -4
- package/src/tx/builder/field-types/deposit.ts +3 -1
- package/src/tx/builder/field-types/encoded.ts +1 -1
- package/src/tx/builder/field-types/entry.ts +8 -3
- package/src/tx/builder/field-types/fee.ts +6 -4
- package/src/tx/builder/field-types/gas-limit.ts +2 -2
- package/src/tx/builder/field-types/index.ts +15 -1
- package/src/tx/builder/field-types/map.ts +45 -0
- package/src/tx/builder/field-types/mptree.ts +4 -3
- package/src/tx/builder/field-types/name-fee.ts +2 -1
- package/src/tx/builder/field-types/nonce.ts +40 -0
- package/src/tx/builder/field-types/short-u-int-const.ts +18 -8
- package/src/tx/builder/field-types/ttl.ts +24 -0
- package/src/tx/builder/field-types/wrapped.ts +32 -0
- package/src/tx/builder/index.ts +57 -71
- package/src/tx/builder/schema.generated.ts +2013 -0
- package/src/tx/builder/schema.ts +544 -624
- package/src/tx/execution-cost.ts +146 -0
- package/src/tx/transaction-signer.ts +27 -0
- package/src/tx/validator.ts +60 -91
- package/src/utils/amount-formatter.ts +0 -16
- package/src/utils/autorest.ts +52 -11
- package/src/utils/bytes.ts +0 -16
- package/src/utils/crypto.ts +0 -16
- package/src/utils/errors.ts +16 -45
- package/src/utils/string.ts +0 -17
- package/types-legacy/ts4.2/AeSdkAepp.d.ts +5 -4
- package/types-legacy/ts4.2/AeSdkMethods.d.ts +11 -12
- package/types-legacy/ts4.2/Node.d.ts +5 -1
- package/types-legacy/ts4.2/account/Base.d.ts +11 -6
- package/types-legacy/ts4.2/account/Memory.d.ts +2 -1
- package/types-legacy/ts4.2/aens.d.ts +12 -14
- package/types-legacy/ts4.2/aepp-wallet-communication/rpc/types.d.ts +6 -2
- package/types-legacy/ts4.2/apis/compiler/compiler.d.ts +1 -1
- package/types-legacy/ts4.2/apis/compiler/models/index.d.ts +3 -2
- package/types-legacy/ts4.2/apis/compiler/models/mappers.d.ts +1 -1
- package/types-legacy/ts4.2/apis/node/models/index.d.ts +15 -15
- package/types-legacy/ts4.2/apis/node/models/mappers.d.ts +1 -1
- package/types-legacy/ts4.2/apis/node/models/parameters.d.ts +2 -2
- package/types-legacy/ts4.2/chain.d.ts +8 -8
- package/types-legacy/ts4.2/channel/Base.d.ts +25 -12
- package/types-legacy/ts4.2/channel/Spend.d.ts +4 -2
- package/types-legacy/ts4.2/channel/internal.d.ts +22 -2
- package/types-legacy/ts4.2/contract/Contract.d.ts +29 -84
- package/types-legacy/ts4.2/contract/compiler/Base.d.ts +10 -14
- package/types-legacy/ts4.2/contract/delegation-signature.d.ts +43 -0
- package/types-legacy/ts4.2/contract/ga.d.ts +23 -7
- package/types-legacy/ts4.2/index-browser.d.ts +5 -4
- package/types-legacy/ts4.2/oracle.d.ts +12 -17
- package/types-legacy/ts4.2/spend.d.ts +19 -27
- package/types-legacy/ts4.2/tx/builder/SchemaTypes.d.ts +37 -0
- package/types-legacy/ts4.2/tx/builder/constants.d.ts +4 -2
- package/types-legacy/ts4.2/tx/builder/field-types/abi-version.d.ts +11 -2
- package/types-legacy/ts4.2/tx/builder/field-types/array.d.ts +1 -1
- package/types-legacy/ts4.2/tx/builder/field-types/coin-amount.d.ts +3 -4
- package/types-legacy/ts4.2/tx/builder/field-types/ct-version.d.ts +33 -3
- package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +2 -1
- package/types-legacy/ts4.2/tx/builder/field-types/encoded.d.ts +1 -1
- package/types-legacy/ts4.2/tx/builder/field-types/fee.d.ts +3 -1
- package/types-legacy/ts4.2/tx/builder/field-types/gas-limit.d.ts +3 -2
- package/types-legacy/ts4.2/tx/builder/field-types/gas-price.d.ts +3 -1
- package/types-legacy/ts4.2/tx/builder/field-types/index.d.ts +52 -13
- package/types-legacy/ts4.2/tx/builder/field-types/map.d.ts +13 -0
- package/types-legacy/ts4.2/tx/builder/field-types/mptree.d.ts +7 -2
- package/types-legacy/ts4.2/tx/builder/field-types/name-fee.d.ts +1 -1
- package/types-legacy/ts4.2/tx/builder/field-types/nonce.d.ts +14 -0
- package/types-legacy/ts4.2/tx/builder/field-types/short-u-int-const.d.ts +4 -2
- package/types-legacy/ts4.2/tx/builder/field-types/ttl.d.ts +11 -0
- package/types-legacy/ts4.2/tx/builder/field-types/wrapped.d.ts +14 -0
- package/types-legacy/ts4.2/tx/builder/index.d.ts +23 -20
- package/types-legacy/ts4.2/tx/builder/schema.d.ts +2962 -4629
- package/types-legacy/ts4.2/tx/builder/schema.generated.d.ts +2011 -0
- package/types-legacy/ts4.2/tx/execution-cost.d.ts +35 -0
- package/types-legacy/ts4.2/tx/transaction-signer.d.ts +6 -0
- package/types-legacy/ts4.2/utils/autorest.d.ts +3 -2
- package/types-legacy/ts4.2/utils/errors.d.ts +14 -31
- package/types-legacy/ts4.2/utils/other.d.ts +1 -1
- package/types-legacy/ts4.5/AeSdkAepp.d.ts +5 -4
- package/types-legacy/ts4.5/AeSdkMethods.d.ts +11 -12
- package/types-legacy/ts4.5/Node.d.ts +5 -1
- package/types-legacy/ts4.5/account/Base.d.ts +11 -6
- package/types-legacy/ts4.5/account/Memory.d.ts +2 -1
- package/types-legacy/ts4.5/aens.d.ts +12 -14
- package/types-legacy/ts4.5/aepp-wallet-communication/rpc/types.d.ts +6 -2
- package/types-legacy/ts4.5/apis/compiler/compiler.d.ts +1 -1
- package/types-legacy/ts4.5/apis/compiler/models/index.d.ts +3 -2
- package/types-legacy/ts4.5/apis/compiler/models/mappers.d.ts +1 -1
- package/types-legacy/ts4.5/apis/node/models/index.d.ts +15 -15
- package/types-legacy/ts4.5/apis/node/models/mappers.d.ts +1 -1
- package/types-legacy/ts4.5/apis/node/models/parameters.d.ts +2 -2
- package/types-legacy/ts4.5/chain.d.ts +8 -8
- package/types-legacy/ts4.5/channel/Base.d.ts +25 -12
- package/types-legacy/ts4.5/channel/Spend.d.ts +4 -2
- package/types-legacy/ts4.5/channel/internal.d.ts +22 -2
- package/types-legacy/ts4.5/contract/Contract.d.ts +29 -84
- package/types-legacy/ts4.5/contract/compiler/Base.d.ts +10 -14
- package/types-legacy/ts4.5/contract/delegation-signature.d.ts +43 -0
- package/types-legacy/ts4.5/contract/ga.d.ts +23 -7
- package/types-legacy/ts4.5/index-browser.d.ts +5 -4
- package/types-legacy/ts4.5/oracle.d.ts +12 -17
- package/types-legacy/ts4.5/spend.d.ts +19 -27
- package/types-legacy/ts4.5/tx/builder/SchemaTypes.d.ts +37 -0
- package/types-legacy/ts4.5/tx/builder/constants.d.ts +4 -2
- package/types-legacy/ts4.5/tx/builder/field-types/abi-version.d.ts +11 -2
- package/types-legacy/ts4.5/tx/builder/field-types/array.d.ts +1 -1
- package/types-legacy/ts4.5/tx/builder/field-types/coin-amount.d.ts +3 -4
- package/types-legacy/ts4.5/tx/builder/field-types/ct-version.d.ts +33 -3
- package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +2 -1
- package/types-legacy/ts4.5/tx/builder/field-types/encoded.d.ts +1 -1
- package/types-legacy/ts4.5/tx/builder/field-types/fee.d.ts +3 -1
- package/types-legacy/ts4.5/tx/builder/field-types/gas-limit.d.ts +3 -2
- package/types-legacy/ts4.5/tx/builder/field-types/gas-price.d.ts +3 -1
- package/types-legacy/ts4.5/tx/builder/field-types/index.d.ts +52 -13
- package/types-legacy/ts4.5/tx/builder/field-types/map.d.ts +13 -0
- package/types-legacy/ts4.5/tx/builder/field-types/mptree.d.ts +7 -2
- package/types-legacy/ts4.5/tx/builder/field-types/name-fee.d.ts +1 -1
- package/types-legacy/ts4.5/tx/builder/field-types/nonce.d.ts +14 -0
- package/types-legacy/ts4.5/tx/builder/field-types/short-u-int-const.d.ts +4 -2
- package/types-legacy/ts4.5/tx/builder/field-types/ttl.d.ts +11 -0
- package/types-legacy/ts4.5/tx/builder/field-types/wrapped.d.ts +14 -0
- package/types-legacy/ts4.5/tx/builder/index.d.ts +23 -20
- package/types-legacy/ts4.5/tx/builder/schema.d.ts +2962 -4629
- package/types-legacy/ts4.5/tx/builder/schema.generated.d.ts +2011 -0
- package/types-legacy/ts4.5/tx/execution-cost.d.ts +35 -0
- package/types-legacy/ts4.5/tx/transaction-signer.d.ts +6 -0
- package/types-legacy/ts4.5/utils/autorest.d.ts +3 -2
- package/types-legacy/ts4.5/utils/errors.d.ts +14 -31
- package/types-legacy/ts4.5/utils/other.d.ts +1 -1
- package/es/tx/index.d.ts +0 -19
- package/es/tx/index.mjs +0 -115
- package/es/tx/index.mjs.map +0 -1
- package/src/apis/compiler/code-model-v4.yaml +0 -2442
- package/src/apis/node/code-model-v4.yaml +0 -10080
- package/src/tx/index.ts +0 -129
- package/types-legacy/ts4.2/tx/index.d.ts +0 -19
- package/types-legacy/ts4.5/tx/index.d.ts +0 -19
package/src/chain.ts
CHANGED
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* ISC License (ISC)
|
|
3
|
-
* Copyright (c) 2022 aeternity developers
|
|
4
|
-
*
|
|
5
|
-
* Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
-
* purpose with or without fee is hereby granted, provided that the above
|
|
7
|
-
* copyright notice and this permission notice appear in all copies.
|
|
8
|
-
*
|
|
9
|
-
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
10
|
-
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
11
|
-
* AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
12
|
-
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
13
|
-
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
14
|
-
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
15
|
-
* PERFORMANCE OF THIS SOFTWARE.
|
|
16
|
-
*/
|
|
17
1
|
import { AE_AMOUNT_FORMATS, formatAmount } from './utils/amount-formatter';
|
|
18
2
|
import verifyTransaction, { ValidatorResult } from './tx/validator';
|
|
19
3
|
import { isAccountNotFoundError, pause } from './utils/other';
|
|
@@ -29,8 +13,11 @@ import {
|
|
|
29
13
|
Account as AccountNode, ByteCode, ContractObject, DryRunResult, DryRunResults,
|
|
30
14
|
Generation, KeyBlock, MicroBlockHeader, NameEntry, SignedTx,
|
|
31
15
|
} from './apis/node';
|
|
32
|
-
import {
|
|
16
|
+
import {
|
|
17
|
+
decode, encode, Encoded, Encoding,
|
|
18
|
+
} from './utils/encoder';
|
|
33
19
|
import AccountBase from './account/Base';
|
|
20
|
+
import { buildTxHash } from './tx/builder';
|
|
34
21
|
|
|
35
22
|
/**
|
|
36
23
|
* @category chain
|
|
@@ -89,7 +76,7 @@ export async function getHeight({ onNode }: { onNode: Node }): Promise<number> {
|
|
|
89
76
|
export async function poll(
|
|
90
77
|
th: Encoded.TxHash,
|
|
91
78
|
{
|
|
92
|
-
blocks =
|
|
79
|
+
blocks = 5, interval, onNode, ...options
|
|
93
80
|
}:
|
|
94
81
|
{ blocks?: number; interval?: number; onNode: Node } & Parameters<typeof _getPollInterval>[1],
|
|
95
82
|
): Promise<TransformNodeType<SignedTx>> {
|
|
@@ -154,24 +141,33 @@ export async function waitForTxConfirm(
|
|
|
154
141
|
}
|
|
155
142
|
|
|
156
143
|
/**
|
|
157
|
-
*
|
|
144
|
+
* Signs and submits transaction for mining
|
|
158
145
|
* @category chain
|
|
159
|
-
* @param
|
|
146
|
+
* @param txUnsigned - Transaction to sign and submit
|
|
160
147
|
* @param options - Options
|
|
161
148
|
* @param options.onNode - Node to use
|
|
162
149
|
* @param options.onAccount - Account to use
|
|
163
|
-
* @param options.verify - Verify transaction before
|
|
150
|
+
* @param options.verify - Verify transaction before broadcast, throw error if not
|
|
164
151
|
* @param options.waitMined - Ensure that transaction get into block
|
|
165
152
|
* @param options.confirm - Number of micro blocks that should be mined after tx get included
|
|
166
153
|
* @returns Transaction details
|
|
167
154
|
*/
|
|
168
155
|
export async function sendTransaction(
|
|
169
|
-
|
|
156
|
+
txUnsigned: Encoded.Transaction,
|
|
170
157
|
{
|
|
171
|
-
onNode, onAccount, verify = true, waitMined = true, confirm, ...options
|
|
158
|
+
onNode, onAccount, verify = true, waitMined = true, confirm, innerTx, ...options
|
|
172
159
|
}:
|
|
173
160
|
SendTransactionOptions,
|
|
174
161
|
): Promise<SendTransactionReturnType> {
|
|
162
|
+
const tx = await onAccount.signTransaction(txUnsigned, {
|
|
163
|
+
...options,
|
|
164
|
+
onNode,
|
|
165
|
+
innerTx,
|
|
166
|
+
networkId: await onNode.getNetworkId(),
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
if (innerTx === true) return { hash: buildTxHash(tx), rawTx: tx };
|
|
170
|
+
|
|
175
171
|
if (verify) {
|
|
176
172
|
const validation = await verifyTransaction(tx, onNode);
|
|
177
173
|
if (validation.length > 0) {
|
|
@@ -221,12 +217,13 @@ export async function sendTransaction(
|
|
|
221
217
|
|
|
222
218
|
type SendTransactionOptionsType = {
|
|
223
219
|
onNode: Node;
|
|
224
|
-
onAccount
|
|
220
|
+
onAccount: AccountBase;
|
|
225
221
|
verify?: boolean;
|
|
226
222
|
waitMined?: boolean;
|
|
227
223
|
confirm?: boolean | number;
|
|
228
|
-
} & Parameters<typeof poll>[1] & Omit<Parameters<typeof waitForTxConfirm>[1], 'confirm'
|
|
229
|
-
|
|
224
|
+
} & Parameters<typeof poll>[1] & Omit<Parameters<typeof waitForTxConfirm>[1], 'confirm'>
|
|
225
|
+
& Parameters<AccountBase['signTransaction']>[1];
|
|
226
|
+
export interface SendTransactionOptions extends SendTransactionOptionsType {}
|
|
230
227
|
interface SendTransactionReturnType extends Partial<TransformNodeType<SignedTx>> {
|
|
231
228
|
hash: Encoded.TxHash;
|
|
232
229
|
rawTx: Encoded.Transaction;
|
|
@@ -263,11 +260,15 @@ export async function getAccount(
|
|
|
263
260
|
* @param options.hash - The block hash on which to obtain the balance for (default: top of chain)
|
|
264
261
|
*/
|
|
265
262
|
export async function getBalance(
|
|
266
|
-
address: Encoded.AccountAddress | Encoded.ContractAddress,
|
|
263
|
+
address: Encoded.AccountAddress | Encoded.ContractAddress | Encoded.OracleAddress,
|
|
267
264
|
{ format = AE_AMOUNT_FORMATS.AETTOS, ...options }:
|
|
268
265
|
{ format?: AE_AMOUNT_FORMATS } & Parameters<typeof getAccount>[1],
|
|
269
266
|
): Promise<string> {
|
|
270
|
-
const
|
|
267
|
+
const addr = address.startsWith('ok_')
|
|
268
|
+
? encode(decode(address), Encoding.AccountAddress)
|
|
269
|
+
: address as Encoded.AccountAddress | Encoded.ContractAddress;
|
|
270
|
+
|
|
271
|
+
const { balance } = await getAccount(addr, options).catch((error) => {
|
|
271
272
|
if (!isAccountNotFoundError(error)) throw error;
|
|
272
273
|
return { balance: 0n };
|
|
273
274
|
});
|
package/src/channel/Base.ts
CHANGED
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* ISC License (ISC)
|
|
3
|
-
* Copyright (c) 2022 aeternity developers
|
|
4
|
-
*
|
|
5
|
-
* Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
-
* purpose with or without fee is hereby granted, provided that the above
|
|
7
|
-
* copyright notice and this permission notice appear in all copies.
|
|
8
|
-
*
|
|
9
|
-
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
10
|
-
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
11
|
-
* AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
12
|
-
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
13
|
-
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
14
|
-
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
15
|
-
* PERFORMANCE OF THIS SOFTWARE.
|
|
16
|
-
*/
|
|
17
1
|
import { EventEmitter } from 'events';
|
|
18
2
|
import { w3cwebsocket as W3CWebSocket } from 'websocket';
|
|
19
3
|
import { snakeToPascal } from '../utils/string';
|
|
@@ -33,9 +17,12 @@ import {
|
|
|
33
17
|
ChannelAction,
|
|
34
18
|
ChannelStatus,
|
|
35
19
|
ChannelFsm,
|
|
20
|
+
ChannelMessage,
|
|
21
|
+
ChannelEvents,
|
|
36
22
|
} from './internal';
|
|
37
23
|
import { ChannelError } from '../utils/errors';
|
|
38
24
|
import { Encoded } from '../utils/encoder';
|
|
25
|
+
import { TxUnpacked } from '../tx/builder/schema.generated';
|
|
39
26
|
|
|
40
27
|
function snakeToPascalObjKeys<Type>(obj: object): Type {
|
|
41
28
|
return Object.entries(obj).reduce((result, [key, val]) => ({
|
|
@@ -44,8 +31,6 @@ function snakeToPascalObjKeys<Type>(obj: object): Type {
|
|
|
44
31
|
}), {}) as Type;
|
|
45
32
|
}
|
|
46
33
|
|
|
47
|
-
type EventCallback = (...args: any[]) => void;
|
|
48
|
-
|
|
49
34
|
/**
|
|
50
35
|
* Channel
|
|
51
36
|
* @example
|
|
@@ -78,7 +63,7 @@ export default class Channel {
|
|
|
78
63
|
|
|
79
64
|
_fsmId?: Encoded.Bytearray;
|
|
80
65
|
|
|
81
|
-
_messageQueue:
|
|
66
|
+
_messageQueue: ChannelMessage[] = [];
|
|
82
67
|
|
|
83
68
|
_isMessageQueueLocked = false;
|
|
84
69
|
|
|
@@ -92,7 +77,7 @@ export default class Channel {
|
|
|
92
77
|
|
|
93
78
|
_websocket: W3CWebSocket;
|
|
94
79
|
|
|
95
|
-
_state
|
|
80
|
+
_state: Encoded.Transaction | '' = '';
|
|
96
81
|
|
|
97
82
|
_options: ChannelOptions;
|
|
98
83
|
|
|
@@ -168,19 +153,23 @@ export default class Channel {
|
|
|
168
153
|
* Possible events:
|
|
169
154
|
*
|
|
170
155
|
* - "error"
|
|
156
|
+
* - "stateChanged"
|
|
157
|
+
* - "statusChanged"
|
|
158
|
+
* - "message"
|
|
159
|
+
* - "peerDisconnected"
|
|
171
160
|
* - "onChainTx"
|
|
172
161
|
* - "ownWithdrawLocked"
|
|
173
162
|
* - "withdrawLocked"
|
|
174
163
|
* - "ownDepositLocked"
|
|
175
164
|
* - "depositLocked"
|
|
165
|
+
* - "channelReestablished"
|
|
166
|
+
* - "newContract"
|
|
176
167
|
*
|
|
177
|
-
* TODO: the event list looks outdated
|
|
178
168
|
*
|
|
179
169
|
* @param eventName - Event name
|
|
180
170
|
* @param callback - Callback function
|
|
181
171
|
*/
|
|
182
|
-
|
|
183
|
-
on(eventName: string, callback: EventCallback): void {
|
|
172
|
+
on<E extends keyof ChannelEvents>(eventName: E, callback: ChannelEvents[E]): void {
|
|
184
173
|
this._eventEmitter.on(eventName, callback);
|
|
185
174
|
}
|
|
186
175
|
|
|
@@ -189,7 +178,7 @@ export default class Channel {
|
|
|
189
178
|
* @param eventName - Event name
|
|
190
179
|
* @param callback - Callback function
|
|
191
180
|
*/
|
|
192
|
-
off(eventName:
|
|
181
|
+
off<E extends keyof ChannelEvents>(eventName: E, callback: ChannelEvents[E]): void {
|
|
193
182
|
this._eventEmitter.removeListener(eventName, callback);
|
|
194
183
|
}
|
|
195
184
|
|
|
@@ -211,12 +200,23 @@ export default class Channel {
|
|
|
211
200
|
* Get current state
|
|
212
201
|
*/
|
|
213
202
|
async state(): Promise<{
|
|
214
|
-
calls:
|
|
215
|
-
halfSignedTx:
|
|
216
|
-
signedTx:
|
|
217
|
-
trees:
|
|
203
|
+
calls: TxUnpacked & { tag: Tag.CallsMtree };
|
|
204
|
+
halfSignedTx?: TxUnpacked & { tag: Tag.SignedTx };
|
|
205
|
+
signedTx?: TxUnpacked & { tag: Tag.SignedTx };
|
|
206
|
+
trees: TxUnpacked & { tag: Tag.StateTrees };
|
|
218
207
|
}> {
|
|
219
|
-
|
|
208
|
+
const res = snakeToPascalObjKeys<{
|
|
209
|
+
calls: Encoded.CallStateTree;
|
|
210
|
+
halfSignedTx: Encoded.Transaction | '';
|
|
211
|
+
signedTx: Encoded.Transaction | '';
|
|
212
|
+
trees: Encoded.StateTrees;
|
|
213
|
+
}>(await call(this, 'channels.get.offchain_state', {}));
|
|
214
|
+
return {
|
|
215
|
+
calls: unpackTx(res.calls, Tag.CallsMtree),
|
|
216
|
+
...res.halfSignedTx !== '' && { halfSignedTx: unpackTx(res.halfSignedTx, Tag.SignedTx) },
|
|
217
|
+
...res.signedTx !== '' && { signedTx: unpackTx(res.signedTx, Tag.SignedTx) },
|
|
218
|
+
trees: unpackTx(res.trees, Tag.StateTrees),
|
|
219
|
+
};
|
|
220
220
|
}
|
|
221
221
|
|
|
222
222
|
/**
|
|
@@ -226,17 +226,17 @@ export default class Channel {
|
|
|
226
226
|
* it will return `null`.
|
|
227
227
|
*/
|
|
228
228
|
round(): number | null {
|
|
229
|
-
if (this._state
|
|
229
|
+
if (this._state === '') {
|
|
230
230
|
return null;
|
|
231
231
|
}
|
|
232
|
-
const
|
|
233
|
-
switch (tag) {
|
|
232
|
+
const params = unpackTx(this._state, Tag.SignedTx).encodedTx;
|
|
233
|
+
switch (params.tag) {
|
|
234
234
|
case Tag.ChannelCreateTx:
|
|
235
235
|
return 1;
|
|
236
236
|
case Tag.ChannelOffChainTx:
|
|
237
237
|
case Tag.ChannelWithdrawTx:
|
|
238
238
|
case Tag.ChannelDepositTx:
|
|
239
|
-
return round;
|
|
239
|
+
return params.round;
|
|
240
240
|
default:
|
|
241
241
|
return null;
|
|
242
242
|
}
|
package/src/channel/Contract.ts
CHANGED
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* ISC License (ISC)
|
|
3
|
-
* Copyright (c) 2022 aeternity developers
|
|
4
|
-
*
|
|
5
|
-
* Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
-
* purpose with or without fee is hereby granted, provided that the above
|
|
7
|
-
* copyright notice and this permission notice appear in all copies.
|
|
8
|
-
*
|
|
9
|
-
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
10
|
-
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
11
|
-
* AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
12
|
-
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
13
|
-
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
14
|
-
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
15
|
-
* PERFORMANCE OF THIS SOFTWARE.
|
|
16
|
-
*/
|
|
17
1
|
import BigNumber from 'bignumber.js';
|
|
18
2
|
import { snakeToPascal } from '../utils/string';
|
|
19
3
|
import {
|
|
@@ -34,7 +18,7 @@ import { ContractCallReturnType } from '../apis/node';
|
|
|
34
18
|
import { ContractCallObject } from '../contract/Contract';
|
|
35
19
|
import Channel from './Base';
|
|
36
20
|
import ChannelSpend from './Spend';
|
|
37
|
-
import { UnexpectedChannelMessageError } from '../utils/errors';
|
|
21
|
+
import { ChannelError, UnexpectedChannelMessageError } from '../utils/errors';
|
|
38
22
|
import { unpackTx } from '../tx/builder';
|
|
39
23
|
import { encodeContractAddress } from '../utils/crypto';
|
|
40
24
|
|
|
@@ -152,16 +136,17 @@ export default class ChannelContract extends ChannelSpend {
|
|
|
152
136
|
state2: ChannelState,
|
|
153
137
|
): ChannelFsm => (
|
|
154
138
|
awaitingCompletion(this, message2, state2, () => {
|
|
155
|
-
const
|
|
139
|
+
const params = unpackTx(message2.params.data.state, Tag.SignedTx).encodedTx;
|
|
140
|
+
if (params.tag !== Tag.ChannelOffChainTx) {
|
|
141
|
+
throw new ChannelError(`Tag should be ${Tag[Tag.ChannelOffChainTx]}, got ${Tag[params.tag]} instead`);
|
|
142
|
+
}
|
|
156
143
|
const addressKey = this._options.role === 'initiator'
|
|
157
144
|
? 'initiatorId' : 'responderId';
|
|
158
145
|
const owner = this._options[addressKey];
|
|
159
146
|
changeState(this, message2.params.data.state);
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
signedTx: message2.params.data.state,
|
|
164
|
-
});
|
|
147
|
+
const address = encodeContractAddress(owner, params.round);
|
|
148
|
+
emit(this, 'newContract', address);
|
|
149
|
+
state2.resolve({ accepted: true, address, signedTx: message2.params.data.state });
|
|
165
150
|
return { handler: channelOpen };
|
|
166
151
|
})
|
|
167
152
|
),
|
package/src/channel/Spend.ts
CHANGED
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* ISC License (ISC)
|
|
3
|
-
* Copyright (c) 2022 aeternity developers
|
|
4
|
-
*
|
|
5
|
-
* Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
-
* purpose with or without fee is hereby granted, provided that the above
|
|
7
|
-
* copyright notice and this permission notice appear in all copies.
|
|
8
|
-
*
|
|
9
|
-
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
10
|
-
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
11
|
-
* AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
12
|
-
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
13
|
-
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
14
|
-
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
15
|
-
* PERFORMANCE OF THIS SOFTWARE.
|
|
16
|
-
*/
|
|
17
1
|
import BigNumber from 'bignumber.js';
|
|
18
2
|
import {
|
|
19
3
|
notify, call, SignTx, ChannelState, ChannelMessage, ChannelFsm, changeState,
|
|
@@ -27,6 +11,7 @@ import {
|
|
|
27
11
|
} from './handlers';
|
|
28
12
|
import { unpackTx } from '../tx/builder';
|
|
29
13
|
import { Tag } from '../tx/builder/constants';
|
|
14
|
+
import { TxUnpacked } from '../tx/builder/schema.generated';
|
|
30
15
|
|
|
31
16
|
export default class ChannelSpend extends Channel {
|
|
32
17
|
/**
|
|
@@ -135,7 +120,7 @@ export default class ChannelSpend extends Channel {
|
|
|
135
120
|
accounts: Encoded.AccountAddress[];
|
|
136
121
|
contracts?: Encoded.ContractAddress[];
|
|
137
122
|
},
|
|
138
|
-
): Promise<
|
|
123
|
+
): Promise<TxUnpacked & { tag: Tag.TreesPoi }> {
|
|
139
124
|
return unpackTx(
|
|
140
125
|
(await call(this, 'channels.get.poi', { accounts, contracts })).poi,
|
|
141
126
|
Tag.TreesPoi,
|
package/src/channel/handlers.ts
CHANGED
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* ISC License (ISC)
|
|
3
|
-
* Copyright (c) 2018 aeternity developers
|
|
4
|
-
*
|
|
5
|
-
* Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
-
* purpose with or without fee is hereby granted, provided that the above
|
|
7
|
-
* copyright notice and this permission notice appear in all copies.
|
|
8
|
-
*
|
|
9
|
-
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
10
|
-
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
11
|
-
* AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
12
|
-
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
13
|
-
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
14
|
-
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
15
|
-
* PERFORMANCE OF THIS SOFTWARE.
|
|
16
|
-
*/
|
|
17
1
|
/* eslint-disable consistent-return */
|
|
18
2
|
/* eslint-disable default-case */
|
|
19
3
|
/* eslint-disable @typescript-eslint/no-use-before-define */
|
|
@@ -28,6 +12,7 @@ import {
|
|
|
28
12
|
ChannelFsm,
|
|
29
13
|
SignTx,
|
|
30
14
|
ChannelStatus,
|
|
15
|
+
ChannelEvents,
|
|
31
16
|
} from './internal';
|
|
32
17
|
import { unpackTx, buildTx } from '../tx/builder';
|
|
33
18
|
import { decode, Encoded } from '../utils/encoder';
|
|
@@ -40,6 +25,7 @@ import {
|
|
|
40
25
|
} from '../utils/errors';
|
|
41
26
|
import type Channel from './Base';
|
|
42
27
|
import { Tag } from '../tx/builder/constants';
|
|
28
|
+
import { snakeToPascal } from '../utils/string';
|
|
43
29
|
|
|
44
30
|
export async function appendSignature(
|
|
45
31
|
tx: Encoded.Transaction,
|
|
@@ -165,7 +151,8 @@ export async function awaitingReconnection(
|
|
|
165
151
|
if (message.method === 'channels.info') {
|
|
166
152
|
if (message.params.data.event === 'fsm_up') {
|
|
167
153
|
channel._fsmId = message.params.data.fsm_id;
|
|
168
|
-
|
|
154
|
+
const { signedTx } = await channel.state();
|
|
155
|
+
changeState(channel, signedTx == null ? '' : buildTx(signedTx));
|
|
169
156
|
return { handler: channelOpen };
|
|
170
157
|
}
|
|
171
158
|
}
|
|
@@ -270,7 +257,7 @@ export async function channelOpen(
|
|
|
270
257
|
//
|
|
271
258
|
// We should enter intermediate state where offchain transactions
|
|
272
259
|
// are blocked until channel is reestablished.
|
|
273
|
-
emit(channel, message.params.data.event);
|
|
260
|
+
emit(channel, snakeToPascal(message.params.data.event) as keyof ChannelEvents);
|
|
274
261
|
return { handler: channelOpen };
|
|
275
262
|
case 'fsm_up':
|
|
276
263
|
channel._fsmId = message.params.data.fsm_id;
|
package/src/channel/internal.ts
CHANGED
|
@@ -1,20 +1,3 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* ISC License (ISC)
|
|
3
|
-
* Copyright (c) 2018 aeternity developers
|
|
4
|
-
*
|
|
5
|
-
* Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
-
* purpose with or without fee is hereby granted, provided that the above
|
|
7
|
-
* copyright notice and this permission notice appear in all copies.
|
|
8
|
-
*
|
|
9
|
-
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
10
|
-
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
11
|
-
* AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
12
|
-
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
13
|
-
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
14
|
-
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
15
|
-
* PERFORMANCE OF THIS SOFTWARE.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
1
|
import { w3cwebsocket as W3CWebSocket } from 'websocket';
|
|
19
2
|
import BigNumber from 'bignumber.js';
|
|
20
3
|
import type Channel from './Base';
|
|
@@ -30,6 +13,23 @@ import {
|
|
|
30
13
|
ChannelIncomingMessageError,
|
|
31
14
|
ChannelError,
|
|
32
15
|
} from '../utils/errors';
|
|
16
|
+
import { encodeContractAddress } from '../utils/crypto';
|
|
17
|
+
import { buildTx } from '../tx/builder';
|
|
18
|
+
|
|
19
|
+
export interface ChannelEvents {
|
|
20
|
+
statusChanged: (status: ChannelStatus) => void;
|
|
21
|
+
stateChanged: (tx: Encoded.Transaction | '') => void;
|
|
22
|
+
depositLocked: () => void;
|
|
23
|
+
ownDepositLocked: () => void;
|
|
24
|
+
withdrawLocked: () => void;
|
|
25
|
+
ownWithdrawLocked: () => void;
|
|
26
|
+
peerDisconnected: () => void;
|
|
27
|
+
channelReestablished: () => void;
|
|
28
|
+
error: (error: Error) => void;
|
|
29
|
+
onChainTx: (tx: Encoded.Transaction, details: { info: string; type: string }) => void;
|
|
30
|
+
message: (message: string | Object) => void;
|
|
31
|
+
newContract: (contractAddress: Encoded.ContractAddress) => void;
|
|
32
|
+
}
|
|
33
33
|
|
|
34
34
|
export interface ChannelAction {
|
|
35
35
|
guard: (channel: Channel, state?: ChannelFsm) => boolean;
|
|
@@ -139,7 +139,10 @@ const PING_TIMEOUT_MS = 10000;
|
|
|
139
139
|
// Close connection if pong message is not received within 15 seconds
|
|
140
140
|
const PONG_TIMEOUT_MS = 15000;
|
|
141
141
|
|
|
142
|
-
export function emit
|
|
142
|
+
export function emit<E extends keyof ChannelEvents>(
|
|
143
|
+
channel: Channel,
|
|
144
|
+
...args: [E, ...Parameters<ChannelEvents[E]>]
|
|
145
|
+
): void {
|
|
143
146
|
const [eventName, ...rest] = args;
|
|
144
147
|
channel._eventEmitter.emit(eventName, ...rest);
|
|
145
148
|
}
|
|
@@ -166,7 +169,7 @@ export function changeStatus(channel: Channel, newStatus: ChannelStatus): void {
|
|
|
166
169
|
emit(channel, 'statusChanged', newStatus);
|
|
167
170
|
}
|
|
168
171
|
|
|
169
|
-
export function changeState(channel: Channel, newState: Encoded.Transaction): void {
|
|
172
|
+
export function changeState(channel: Channel, newState: Encoded.Transaction | ''): void {
|
|
170
173
|
channel._state = newState;
|
|
171
174
|
emit(channel, 'stateChanged', newState);
|
|
172
175
|
}
|
|
@@ -211,9 +214,21 @@ export async function enqueueAction(
|
|
|
211
214
|
return promise;
|
|
212
215
|
}
|
|
213
216
|
|
|
214
|
-
async function handleMessage(channel: Channel, message:
|
|
217
|
+
async function handleMessage(channel: Channel, message: ChannelMessage): Promise<void> {
|
|
215
218
|
const { handler, state: st } = channel._fsm;
|
|
216
|
-
|
|
219
|
+
const nextState = await Promise.resolve(handler(channel, message, st));
|
|
220
|
+
enterState(channel, nextState);
|
|
221
|
+
// TODO: emit message and handler name (?) to move this code to Contract constructor
|
|
222
|
+
if (
|
|
223
|
+
message?.params?.data?.updates?.[0]?.op === 'OffChainNewContract'
|
|
224
|
+
// if name is channelOpen, the contract was created by other participant
|
|
225
|
+
&& nextState?.handler.name === 'channelOpen'
|
|
226
|
+
) {
|
|
227
|
+
const round = channel.round();
|
|
228
|
+
if (round == null) throw new UnexpectedTsError('Round is null');
|
|
229
|
+
const owner = message?.params?.data?.updates?.[0]?.owner;
|
|
230
|
+
emit(channel, 'newContract', encodeContractAddress(owner, round + 1));
|
|
231
|
+
}
|
|
217
232
|
}
|
|
218
233
|
|
|
219
234
|
async function dequeueMessage(channel: Channel): Promise<void> {
|
|
@@ -318,7 +333,10 @@ export async function initialize(
|
|
|
318
333
|
if (channelOptions.reconnectTx != null) {
|
|
319
334
|
enterState(channel, { handler: openHandler });
|
|
320
335
|
const { signedTx } = await channel.state();
|
|
321
|
-
|
|
336
|
+
if (signedTx == null) {
|
|
337
|
+
throw new ChannelError('`signedTx` missed in state while reconnection');
|
|
338
|
+
}
|
|
339
|
+
changeState(channel, buildTx(signedTx));
|
|
322
340
|
}
|
|
323
341
|
ping(channel);
|
|
324
342
|
},
|