@aeternity/aepp-sdk 13.0.0-alpha.0 → 13.0.0-beta.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/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 +5595 -2249
- package/dist/aepp-sdk.js.map +1 -1
- package/es/AeSdk.mjs.map +1 -1
- package/es/AeSdkAepp.mjs.map +1 -1
- package/es/AeSdkBase.d.ts +3 -3
- package/es/AeSdkBase.mjs +4 -0
- package/es/AeSdkBase.mjs.map +1 -1
- package/es/AeSdkMethods.d.ts +12 -14
- 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 +9 -4
- package/es/Node.mjs +12 -6
- package/es/Node.mjs.map +1 -1
- package/es/account/Base.d.ts +13 -8
- package/es/account/Base.mjs +0 -17
- package/es/account/Base.mjs.map +1 -1
- package/es/account/Generalized.mjs +14 -25
- package/es/account/Generalized.mjs.map +1 -1
- package/es/account/Ledger.mjs +2 -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 +11 -22
- 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 +22 -32
- 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.d.ts +1 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +19 -20
- 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 +5 -6
- 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 +17 -9
- package/es/chain.mjs +23 -23
- package/es/chain.mjs.map +1 -1
- package/es/channel/Base.d.ts +27 -9
- package/es/channel/Base.mjs +27 -27
- package/es/channel/Base.mjs.map +1 -1
- package/es/channel/Contract.d.ts +8 -7
- package/es/channel/Contract.mjs +8 -21
- package/es/channel/Contract.mjs.map +1 -1
- package/es/channel/Spend.d.ts +5 -1
- package/es/channel/Spend.mjs +4 -18
- package/es/channel/Spend.mjs.map +1 -1
- package/es/channel/handlers.mjs +16 -26
- package/es/channel/handlers.mjs.map +1 -1
- package/es/channel/internal.d.ts +19 -2
- package/es/channel/internal.mjs +22 -20
- package/es/channel/internal.mjs.map +1 -1
- package/es/contract/Contract.d.ts +43 -123
- package/es/contract/Contract.mjs +230 -250
- package/es/contract/Contract.mjs.map +1 -1
- package/es/contract/compiler/Base.d.ts +74 -0
- package/es/contract/compiler/Base.mjs +5 -0
- package/es/contract/compiler/Base.mjs.map +1 -0
- package/es/contract/compiler/Cli.d.ts +23 -0
- package/es/contract/compiler/Cli.mjs +149 -0
- package/es/contract/compiler/Cli.mjs.map +1 -0
- package/es/contract/compiler/Http.d.ts +32 -0
- package/es/contract/compiler/Http.mjs +94 -0
- package/es/contract/compiler/Http.mjs.map +1 -0
- package/es/contract/compiler/HttpNode.d.ts +17 -0
- package/es/contract/compiler/HttpNode.mjs +26 -0
- package/es/contract/compiler/HttpNode.mjs.map +1 -0
- package/es/contract/compiler/getFileSystem.d.ts +6 -0
- package/es/contract/compiler/getFileSystem.mjs +40 -0
- package/es/contract/compiler/getFileSystem.mjs.map +1 -0
- 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 +27 -10
- package/es/contract/ga.mjs +63 -29
- package/es/contract/ga.mjs.map +1 -1
- package/es/index-browser.d.ts +40 -0
- package/es/index-browser.mjs +41 -0
- package/es/index-browser.mjs.map +1 -0
- package/es/index.d.ts +4 -38
- package/es/index.mjs +4 -53
- package/es/index.mjs.map +1 -1
- package/es/oracle.d.ts +12 -17
- package/es/oracle.mjs +29 -49
- package/es/oracle.mjs.map +1 -1
- package/es/spend.d.ts +19 -27
- package/es/spend.mjs +21 -46
- 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 +31 -2
- package/es/tx/builder/constants.mjs +34 -3
- package/es/tx/builder/constants.mjs.map +1 -1
- package/es/tx/builder/field-types/abi-version.d.ts +19 -0
- package/es/tx/builder/field-types/abi-version.mjs +40 -0
- package/es/tx/builder/field-types/abi-version.mjs.map +1 -0
- package/es/tx/builder/field-types/address.d.ts +5 -6
- package/es/tx/builder/field-types/address.mjs +17 -8
- package/es/tx/builder/field-types/address.mjs.map +1 -1
- package/es/tx/builder/field-types/array.d.ts +7 -0
- package/es/tx/builder/field-types/array.mjs +11 -0
- package/es/tx/builder/field-types/array.mjs.map +1 -0
- package/es/tx/builder/field-types/boolean.d.ts +6 -0
- package/es/tx/builder/field-types/boolean.mjs +13 -0
- package/es/tx/builder/field-types/boolean.mjs.map +1 -0
- package/es/tx/builder/field-types/coin-amount.d.ts +4 -5
- 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 +49 -0
- package/es/tx/builder/field-types/ct-version.mjs +76 -0
- package/es/tx/builder/field-types/ct-version.mjs.map +1 -0
- package/es/tx/builder/field-types/deposit.d.ts +3 -2
- 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 +6 -0
- package/es/tx/builder/field-types/encoded.mjs +21 -0
- package/es/tx/builder/field-types/encoded.mjs.map +1 -0
- package/es/tx/builder/field-types/entry.d.ts +11 -0
- package/es/tx/builder/field-types/entry.mjs +34 -0
- package/es/tx/builder/field-types/entry.mjs.map +1 -0
- package/es/tx/builder/field-types/enumeration.d.ts +5 -3
- package/es/tx/builder/field-types/enumeration.mjs +11 -2
- package/es/tx/builder/field-types/enumeration.mjs.map +1 -1
- package/es/tx/builder/field-types/fee.d.ts +12 -7
- package/es/tx/builder/field-types/fee.mjs +28 -20
- 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 +7 -3
- package/es/tx/builder/field-types/gas-limit.mjs +13 -8
- 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 +107 -30
- package/es/tx/builder/field-types/index.mjs +38 -12
- 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 +42 -0
- package/es/tx/builder/field-types/mptree.mjs +266 -0
- package/es/tx/builder/field-types/mptree.mjs.map +1 -0
- package/es/tx/builder/field-types/name-fee.d.ts +2 -3
- 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 +2 -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 +2 -2
- package/es/tx/builder/field-types/pointers.mjs.map +1 -1
- package/es/tx/builder/field-types/raw.d.ts +6 -0
- package/es/tx/builder/field-types/raw.mjs +13 -0
- package/es/tx/builder/field-types/raw.mjs.map +1 -0
- package/es/tx/builder/field-types/short-u-int-const.d.ts +7 -0
- package/es/tx/builder/field-types/short-u-int-const.mjs +20 -0
- package/es/tx/builder/field-types/short-u-int-const.mjs.map +1 -0
- package/es/tx/builder/field-types/short-u-int.mjs.map +1 -1
- package/es/tx/builder/field-types/string.d.ts +6 -0
- package/es/tx/builder/field-types/string.mjs +10 -0
- package/es/tx/builder/field-types/string.mjs.map +1 -0
- 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.d.ts +1 -2
- 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 +18 -36
- package/es/tx/builder/index.mjs +65 -236
- package/es/tx/builder/index.mjs.map +1 -1
- package/es/tx/builder/schema.d.ts +2734 -1324
- 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 -223
- 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.d.ts +3 -5
- package/es/tx/validator.mjs +91 -153
- 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 +1 -17
- 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 +16 -38
- package/es/utils/errors.mjs +3 -43
- 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.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 +52 -40
- package/src/AeSdkBase.ts +6 -3
- package/src/AeSdkMethods.ts +12 -18
- package/src/AeSdkWallet.ts +1 -1
- package/src/Node.ts +23 -9
- package/src/account/Base.ts +13 -24
- package/src/account/Generalized.ts +9 -24
- package/src/account/Ledger.ts +1 -1
- package/src/account/Memory.ts +15 -22
- package/src/aens.ts +34 -49
- package/src/aepp-wallet-communication/connection/Browser.ts +0 -17
- package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +18 -24
- 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/RpcClient.ts +2 -2
- package/src/aepp-wallet-communication/rpc/types.ts +6 -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 +33 -30
- package/src/channel/Base.ts +39 -31
- package/src/channel/Contract.ts +18 -32
- package/src/channel/Spend.ts +8 -18
- package/src/channel/handlers.ts +14 -26
- package/src/channel/internal.ts +41 -23
- package/src/contract/Contract.ts +188 -228
- package/src/contract/compiler/Base.ts +87 -0
- package/src/contract/compiler/Cli.ts +128 -0
- package/src/contract/compiler/Http.ts +105 -0
- package/src/contract/compiler/HttpNode.ts +26 -0
- package/src/contract/compiler/getFileSystem.ts +42 -0
- package/src/contract/delegation-signature.ts +56 -0
- package/src/contract/ga.ts +61 -37
- package/src/index-browser.ts +50 -0
- package/src/index.ts +4 -56
- package/src/oracle.ts +47 -57
- package/src/spend.ts +34 -68
- package/src/tx/builder/SchemaTypes.ts +79 -0
- package/src/tx/builder/constants.ts +34 -3
- package/src/tx/builder/field-types/abi-version.ts +44 -0
- package/src/tx/builder/field-types/address.ts +23 -13
- package/src/tx/builder/field-types/array.ts +19 -0
- package/src/tx/builder/field-types/boolean.ts +9 -0
- package/src/tx/builder/field-types/coin-amount.ts +8 -5
- package/src/tx/builder/field-types/ct-version.ts +83 -0
- package/src/tx/builder/field-types/deposit.ts +4 -2
- package/src/tx/builder/field-types/encoded.ts +27 -0
- package/src/tx/builder/field-types/entry.ts +36 -0
- package/src/tx/builder/field-types/enumeration.ts +15 -4
- package/src/tx/builder/field-types/fee.ts +41 -19
- package/src/tx/builder/field-types/gas-limit.ts +13 -8
- package/src/tx/builder/field-types/index.ts +60 -17
- package/src/tx/builder/field-types/map.ts +45 -0
- package/src/tx/builder/field-types/mptree.ts +243 -0
- package/src/tx/builder/field-types/name-fee.ts +3 -3
- package/src/tx/builder/field-types/name-id.ts +1 -1
- package/src/tx/builder/field-types/nonce.ts +40 -0
- package/src/tx/builder/field-types/pointers.ts +2 -2
- package/src/tx/builder/field-types/raw.ts +9 -0
- package/src/tx/builder/field-types/short-u-int-const.ts +30 -0
- package/src/tx/builder/field-types/string.ts +11 -0
- package/src/tx/builder/field-types/ttl.ts +24 -0
- package/src/tx/builder/field-types/u-int.ts +1 -3
- package/src/tx/builder/field-types/wrapped.ts +32 -0
- package/src/tx/builder/index.ts +82 -280
- package/src/tx/builder/schema.generated.ts +2013 -0
- package/src/tx/builder/schema.ts +536 -666
- package/src/tx/execution-cost.ts +146 -0
- package/src/tx/transaction-signer.ts +27 -0
- package/src/tx/validator.ts +100 -154
- package/src/utils/amount-formatter.ts +0 -16
- package/src/utils/autorest.ts +52 -11
- package/src/utils/bytes.ts +1 -17
- package/src/utils/crypto.ts +0 -16
- package/src/utils/errors.ts +18 -56
- package/src/utils/string.ts +0 -17
- package/types-legacy/ts4.2/AeSdkBase.d.ts +3 -3
- package/types-legacy/ts4.2/AeSdkMethods.d.ts +12 -14
- package/types-legacy/ts4.2/Node.d.ts +8 -4
- package/types-legacy/ts4.2/account/Base.d.ts +13 -8
- 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/connection/BrowserRuntime.d.ts +1 -0
- 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 +17 -9
- package/types-legacy/ts4.2/channel/Base.d.ts +27 -9
- package/types-legacy/ts4.2/channel/Contract.d.ts +8 -7
- package/types-legacy/ts4.2/channel/Spend.d.ts +5 -1
- package/types-legacy/ts4.2/channel/internal.d.ts +22 -2
- package/types-legacy/ts4.2/contract/Contract.d.ts +42 -122
- package/types-legacy/ts4.2/contract/compiler/Base.d.ts +74 -0
- package/types-legacy/ts4.2/contract/compiler/Cli.d.ts +23 -0
- package/types-legacy/ts4.2/contract/compiler/Http.d.ts +32 -0
- package/types-legacy/ts4.2/contract/compiler/HttpNode.d.ts +17 -0
- package/types-legacy/ts4.2/contract/compiler/getFileSystem.d.ts +6 -0
- package/types-legacy/ts4.2/contract/delegation-signature.d.ts +43 -0
- package/types-legacy/ts4.2/contract/ga.d.ts +27 -10
- package/types-legacy/ts4.2/index-browser.d.ts +40 -0
- package/types-legacy/ts4.2/index.d.ts +4 -38
- 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 +31 -2
- package/types-legacy/ts4.2/tx/builder/field-types/abi-version.d.ts +19 -0
- package/types-legacy/ts4.2/tx/builder/field-types/address.d.ts +11 -12
- package/types-legacy/ts4.2/tx/builder/field-types/array.d.ts +7 -0
- package/types-legacy/ts4.2/tx/builder/field-types/boolean.d.ts +6 -0
- package/types-legacy/ts4.2/tx/builder/field-types/coin-amount.d.ts +4 -5
- package/types-legacy/ts4.2/tx/builder/field-types/ct-version.d.ts +72 -0
- package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +3 -2
- package/types-legacy/ts4.2/tx/builder/field-types/encoded.d.ts +6 -0
- package/types-legacy/ts4.2/tx/builder/field-types/entry.d.ts +11 -0
- package/types-legacy/ts4.2/tx/builder/field-types/enumeration.d.ts +5 -3
- package/types-legacy/ts4.2/tx/builder/field-types/fee.d.ts +12 -7
- package/types-legacy/ts4.2/tx/builder/field-types/gas-limit.d.ts +7 -3
- 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 +113 -30
- 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 +48 -0
- package/types-legacy/ts4.2/tx/builder/field-types/name-fee.d.ts +2 -3
- package/types-legacy/ts4.2/tx/builder/field-types/nonce.d.ts +14 -0
- package/types-legacy/ts4.2/tx/builder/field-types/raw.d.ts +6 -0
- package/types-legacy/ts4.2/tx/builder/field-types/short-u-int-const.d.ts +7 -0
- package/types-legacy/ts4.2/tx/builder/field-types/string.d.ts +6 -0
- package/types-legacy/ts4.2/tx/builder/field-types/ttl.d.ts +11 -0
- package/types-legacy/ts4.2/tx/builder/field-types/u-int.d.ts +1 -2
- package/types-legacy/ts4.2/tx/builder/field-types/wrapped.d.ts +14 -0
- package/types-legacy/ts4.2/tx/builder/index.d.ts +21 -36
- package/types-legacy/ts4.2/tx/builder/schema.d.ts +2971 -2926
- 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/tx/validator.d.ts +3 -5
- package/types-legacy/ts4.2/utils/autorest.d.ts +3 -2
- package/types-legacy/ts4.2/utils/errors.d.ts +16 -38
- package/types-legacy/ts4.5/AeSdkBase.d.ts +3 -3
- package/types-legacy/ts4.5/AeSdkMethods.d.ts +12 -14
- package/types-legacy/ts4.5/Node.d.ts +8 -4
- package/types-legacy/ts4.5/account/Base.d.ts +13 -8
- 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/connection/BrowserRuntime.d.ts +1 -0
- 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 +17 -9
- package/types-legacy/ts4.5/channel/Base.d.ts +27 -9
- package/types-legacy/ts4.5/channel/Contract.d.ts +8 -7
- package/types-legacy/ts4.5/channel/Spend.d.ts +5 -1
- package/types-legacy/ts4.5/channel/internal.d.ts +22 -2
- package/types-legacy/ts4.5/contract/Contract.d.ts +42 -122
- package/types-legacy/ts4.5/contract/compiler/Base.d.ts +74 -0
- package/types-legacy/ts4.5/contract/compiler/Cli.d.ts +23 -0
- package/types-legacy/ts4.5/contract/compiler/Http.d.ts +32 -0
- package/types-legacy/ts4.5/contract/compiler/HttpNode.d.ts +17 -0
- package/types-legacy/ts4.5/contract/compiler/getFileSystem.d.ts +6 -0
- package/types-legacy/ts4.5/contract/delegation-signature.d.ts +43 -0
- package/types-legacy/ts4.5/contract/ga.d.ts +27 -10
- package/types-legacy/ts4.5/index-browser.d.ts +40 -0
- package/types-legacy/ts4.5/index.d.ts +4 -38
- 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 +31 -2
- package/types-legacy/ts4.5/tx/builder/field-types/abi-version.d.ts +19 -0
- package/types-legacy/ts4.5/tx/builder/field-types/address.d.ts +11 -12
- package/types-legacy/ts4.5/tx/builder/field-types/array.d.ts +7 -0
- package/types-legacy/ts4.5/tx/builder/field-types/boolean.d.ts +6 -0
- package/types-legacy/ts4.5/tx/builder/field-types/coin-amount.d.ts +4 -5
- package/types-legacy/ts4.5/tx/builder/field-types/ct-version.d.ts +72 -0
- package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +3 -2
- package/types-legacy/ts4.5/tx/builder/field-types/encoded.d.ts +6 -0
- package/types-legacy/ts4.5/tx/builder/field-types/entry.d.ts +11 -0
- package/types-legacy/ts4.5/tx/builder/field-types/enumeration.d.ts +5 -3
- package/types-legacy/ts4.5/tx/builder/field-types/fee.d.ts +12 -7
- package/types-legacy/ts4.5/tx/builder/field-types/gas-limit.d.ts +7 -3
- 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 +113 -30
- 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 +48 -0
- package/types-legacy/ts4.5/tx/builder/field-types/name-fee.d.ts +2 -3
- package/types-legacy/ts4.5/tx/builder/field-types/nonce.d.ts +14 -0
- package/types-legacy/ts4.5/tx/builder/field-types/raw.d.ts +6 -0
- package/types-legacy/ts4.5/tx/builder/field-types/short-u-int-const.d.ts +7 -0
- package/types-legacy/ts4.5/tx/builder/field-types/string.d.ts +6 -0
- package/types-legacy/ts4.5/tx/builder/field-types/ttl.d.ts +11 -0
- package/types-legacy/ts4.5/tx/builder/field-types/u-int.d.ts +1 -2
- package/types-legacy/ts4.5/tx/builder/field-types/wrapped.d.ts +14 -0
- package/types-legacy/ts4.5/tx/builder/index.d.ts +21 -36
- package/types-legacy/ts4.5/tx/builder/schema.d.ts +2971 -2926
- 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/tx/validator.d.ts +3 -5
- package/types-legacy/ts4.5/utils/autorest.d.ts +3 -2
- package/types-legacy/ts4.5/utils/errors.d.ts +16 -38
- package/es/contract/CompilerHttp.d.ts +0 -18
- package/es/contract/CompilerHttp.mjs +0 -63
- package/es/contract/CompilerHttp.mjs.map +0 -1
- package/es/tx/builder/field-types/addresses.d.ts +0 -6
- package/es/tx/builder/field-types/addresses.mjs +0 -13
- package/es/tx/builder/field-types/addresses.mjs.map +0 -1
- package/es/tx/index.d.ts +0 -34
- package/es/tx/index.mjs +0 -172
- package/es/tx/index.mjs.map +0 -1
- package/es/utils/mptree.d.ts +0 -26
- package/es/utils/mptree.mjs +0 -143
- package/es/utils/mptree.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/contract/CompilerHttp.ts +0 -67
- package/src/tx/builder/field-types/addresses.ts +0 -18
- package/src/tx/index.ts +0 -196
- package/src/utils/mptree.ts +0 -145
- package/types-legacy/ts4.2/contract/CompilerHttp.d.ts +0 -18
- package/types-legacy/ts4.2/tx/builder/field-types/addresses.d.ts +0 -6
- package/types-legacy/ts4.2/tx/index.d.ts +0 -34
- package/types-legacy/ts4.2/utils/mptree.d.ts +0 -32
- package/types-legacy/ts4.5/contract/CompilerHttp.d.ts +0 -18
- package/types-legacy/ts4.5/tx/builder/field-types/addresses.d.ts +0 -6
- package/types-legacy/ts4.5/tx/index.d.ts +0 -34
- package/types-legacy/ts4.5/utils/mptree.d.ts +0 -32
package/src/contract/Contract.ts
CHANGED
|
@@ -1,20 +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
|
-
|
|
18
1
|
/**
|
|
19
2
|
* Contract module - routines to interact with the æternity contract
|
|
20
3
|
*
|
|
@@ -25,9 +8,9 @@
|
|
|
25
8
|
import { Encoder as Calldata } from '@aeternity/aepp-calldata';
|
|
26
9
|
import { DRY_RUN_ACCOUNT } from '../tx/builder/schema';
|
|
27
10
|
import { Tag, AensName } from '../tx/builder/constants';
|
|
28
|
-
import {
|
|
29
|
-
|
|
30
|
-
|
|
11
|
+
import {
|
|
12
|
+
buildContractIdByContractTx, unpackTx, buildTxAsync, BuildTxOptions, buildTxHash,
|
|
13
|
+
} from '../tx/builder';
|
|
31
14
|
import { decode, Encoded } from '../utils/encoder';
|
|
32
15
|
import {
|
|
33
16
|
MissingContractDefError,
|
|
@@ -47,49 +30,30 @@ import {
|
|
|
47
30
|
UnexpectedTsError,
|
|
48
31
|
InternalError,
|
|
49
32
|
NoWalletConnectedError,
|
|
33
|
+
ContractError,
|
|
50
34
|
} from '../utils/errors';
|
|
51
35
|
import { hash as calcHash } from '../utils/crypto';
|
|
52
|
-
import { Aci as BaseAci } from '../apis/compiler';
|
|
53
36
|
import {
|
|
54
|
-
ContractCallObject as NodeContractCallObject,
|
|
37
|
+
ContractCallObject as NodeContractCallObject, Event as NodeEvent,
|
|
55
38
|
} from '../apis/node';
|
|
56
|
-
import
|
|
39
|
+
import CompilerBase, { Aci } from './compiler/Base';
|
|
57
40
|
import Node, { TransformNodeType } from '../Node';
|
|
58
41
|
import {
|
|
59
|
-
getAccount, getContract, getContractByteCode,
|
|
42
|
+
getAccount, getContract, getContractByteCode, resolveName, txDryRun, sendTransaction,
|
|
43
|
+
SendTransactionOptions,
|
|
60
44
|
} from '../chain';
|
|
61
45
|
import AccountBase from '../account/Base';
|
|
62
|
-
import {
|
|
63
|
-
import { isNameValid, produceNameId } from '../tx/builder/helpers';
|
|
46
|
+
import { TxUnpacked } from '../tx/builder/schema.generated';
|
|
64
47
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
name: string;
|
|
68
|
-
payable: boolean;
|
|
69
|
-
returns: string;
|
|
70
|
-
stateful: boolean;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
interface Aci extends BaseAci {
|
|
74
|
-
encodedAci: {
|
|
75
|
-
contract: {
|
|
76
|
-
name: string;
|
|
77
|
-
event: any;
|
|
78
|
-
kind: string;
|
|
79
|
-
state: any;
|
|
80
|
-
type_defs: any[];
|
|
81
|
-
functions: FunctionACI[];
|
|
82
|
-
};
|
|
83
|
-
};
|
|
84
|
-
externalEncodedAci: any[];
|
|
85
|
-
}
|
|
48
|
+
type ContractAci = NonNullable<Aci[0]['contract']>;
|
|
49
|
+
type FunctionAci = ContractAci['functions'][0];
|
|
86
50
|
|
|
87
51
|
interface Event extends NodeEvent {
|
|
88
52
|
address: Encoded.ContractAddress;
|
|
89
53
|
data: Encoded.ContractBytearray;
|
|
90
54
|
}
|
|
91
55
|
|
|
92
|
-
export interface ContractCallObject extends NodeContractCallObject {
|
|
56
|
+
export interface ContractCallObject extends TransformNodeType<NodeContractCallObject> {
|
|
93
57
|
returnValue: Encoded.ContractBytearray;
|
|
94
58
|
log: Event[];
|
|
95
59
|
}
|
|
@@ -103,12 +67,12 @@ interface DecodedEvent {
|
|
|
103
67
|
};
|
|
104
68
|
}
|
|
105
69
|
|
|
106
|
-
type TxData = Awaited<ReturnType<typeof
|
|
70
|
+
type TxData = Awaited<ReturnType<typeof sendTransaction>>;
|
|
107
71
|
|
|
108
72
|
interface SendAndProcessReturnType {
|
|
109
|
-
result?:
|
|
73
|
+
result?: ContractCallObject;
|
|
110
74
|
hash: TxData['hash'];
|
|
111
|
-
tx:
|
|
75
|
+
tx: TxUnpacked & { tag: Tag.ContractCallTx | Tag.ContractCreateTx };
|
|
112
76
|
txData: TxData;
|
|
113
77
|
rawTx: Encoded.Transaction;
|
|
114
78
|
}
|
|
@@ -117,15 +81,12 @@ export interface ContractMethodsBase { [key: string]: (...args: any[]) => any }
|
|
|
117
81
|
|
|
118
82
|
type MethodsToContractApi<M extends ContractMethodsBase> = {
|
|
119
83
|
[Name in keyof M]:
|
|
120
|
-
M[Name] extends (...args: infer Args) =>
|
|
84
|
+
M[Name] extends (...args: infer Args) => any
|
|
121
85
|
? (...args: [
|
|
122
86
|
...Args,
|
|
123
87
|
...[] | [Name extends 'init'
|
|
124
88
|
? Parameters<Contract<M>['$deploy']>[1] : Parameters<Contract<M>['$call']>[2]],
|
|
125
|
-
]) =>
|
|
126
|
-
Awaited<ReturnType<Contract<M>['$call']>> &
|
|
127
|
-
{ decodedResult?: Ret }
|
|
128
|
-
>
|
|
89
|
+
]) => ReturnType<Contract<M>['$call']>
|
|
129
90
|
: never
|
|
130
91
|
};
|
|
131
92
|
|
|
@@ -138,6 +99,15 @@ type MethodParameters<M extends ContractMethodsBase, Fn extends MethodNames<M>>
|
|
|
138
99
|
? M extends { init: any } ? Parameters<M['init']> : []
|
|
139
100
|
: Parameters<M[Fn]>;
|
|
140
101
|
|
|
102
|
+
interface GetContractNameByEventOptions {
|
|
103
|
+
contractAddressToName?: { [key: Encoded.ContractAddress]: string };
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
interface GetCallResultByHashReturnType<M extends ContractMethodsBase, Fn extends MethodNames<M>> {
|
|
107
|
+
decodedResult: ReturnType<M[Fn]>;
|
|
108
|
+
decodedEvents?: ReturnType<Contract<M>['$decodeEvents']>;
|
|
109
|
+
}
|
|
110
|
+
|
|
141
111
|
/**
|
|
142
112
|
* Generate contract ACI object with predefined js methods for contract usage - can be used for
|
|
143
113
|
* creating a reference to already deployed contracts
|
|
@@ -156,60 +126,6 @@ type MethodParameters<M extends ContractMethodsBase, Fn extends MethodNames<M>>
|
|
|
156
126
|
* stateful or not
|
|
157
127
|
*/
|
|
158
128
|
class Contract<M extends ContractMethodsBase> {
|
|
159
|
-
/**
|
|
160
|
-
* Helper to generate a signature to delegate
|
|
161
|
-
* - pre-claim/claim/transfer/revoke of a name to a contract.
|
|
162
|
-
* - register/extend/respond of an Oracle to a contract.
|
|
163
|
-
* @category contract
|
|
164
|
-
* @param ids - The list of id's to prepend
|
|
165
|
-
* @param _options - Options
|
|
166
|
-
* @param _options.omitAddress - Prepend delegation signature with an account address
|
|
167
|
-
* @param _options.onAccount - Account to use
|
|
168
|
-
* @returns Signature
|
|
169
|
-
* @example
|
|
170
|
-
* ```js
|
|
171
|
-
* const aeSdk = new AeSdk({ ... })
|
|
172
|
-
* const contract = await aeSdk.initializeContract({ address: 'ct_asd2ks...' })
|
|
173
|
-
* const aensName = 'example.chain'
|
|
174
|
-
* const onAccount = new MemoryAccount(...) // Sign with a specific account
|
|
175
|
-
* // Preclaim signature
|
|
176
|
-
* const preclaimSig = await contract.$createDelegationSignature([], { onAccount })
|
|
177
|
-
* // Claim, transfer and revoke signature
|
|
178
|
-
* const aensDelegationSig = await contract
|
|
179
|
-
* .$createDelegationSignature([aensName], { onAccount })
|
|
180
|
-
* ```
|
|
181
|
-
* @example
|
|
182
|
-
* ```js
|
|
183
|
-
* const aeSdk = new AeSdk({ ... })
|
|
184
|
-
* const contract = await aeSdk.initializeContract({ address: 'ct_asd2ks...' })
|
|
185
|
-
* const oracleQueryId = 'oq_...'
|
|
186
|
-
* const onAccount = new MemoryAccount(...) // Sign with a specific account
|
|
187
|
-
* // Oracle register and extend signature
|
|
188
|
-
* const oracleDelegationSig = await contract.$createDelegationSignature([], { onAccount })
|
|
189
|
-
* // Oracle respond signature
|
|
190
|
-
* const respondSig = await contract
|
|
191
|
-
* .$createDelegationSignature([oracleQueryId], { onAccount, omitAddress: true })
|
|
192
|
-
* ```
|
|
193
|
-
*/
|
|
194
|
-
async $createDelegationSignature(
|
|
195
|
-
ids: Array<Encoded.Any | AensName> = [],
|
|
196
|
-
_options?: { omitAddress?: boolean; onAccount?: AccountBase },
|
|
197
|
-
): Promise<Uint8Array> {
|
|
198
|
-
const options = { ...this.$options, ..._options };
|
|
199
|
-
const contractId = this.$options.address;
|
|
200
|
-
if (options.onAccount == null) throw new IllegalArgumentError('Can\'t create delegation signature without account');
|
|
201
|
-
if (contractId == null) throw new MissingContractAddressError('Can\'t create delegation signature without address');
|
|
202
|
-
return options.onAccount.sign(
|
|
203
|
-
concatBuffers([
|
|
204
|
-
Buffer.from(await options.onNode.getNetworkId()),
|
|
205
|
-
...options.omitAddress === true ? [] : [decode(options.onAccount.address)],
|
|
206
|
-
...ids.map((e) => (isNameValid(e) ? produceNameId(e) : e)).map((e) => decode(e)),
|
|
207
|
-
decode(contractId),
|
|
208
|
-
]),
|
|
209
|
-
options,
|
|
210
|
-
);
|
|
211
|
-
}
|
|
212
|
-
|
|
213
129
|
/**
|
|
214
130
|
* Compile contract
|
|
215
131
|
* @returns bytecode
|
|
@@ -217,22 +133,28 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
217
133
|
async $compile(): Promise<Encoded.ContractBytearray> {
|
|
218
134
|
if (this.$options.bytecode != null) return this.$options.bytecode;
|
|
219
135
|
if (this.$options.sourceCode == null) throw new IllegalArgumentError('Can\'t compile without source code');
|
|
220
|
-
this.$options.
|
|
221
|
-
|
|
222
|
-
|
|
136
|
+
if (this.$options.onCompiler == null) throw new IllegalArgumentError('Can\'t compile without compiler');
|
|
137
|
+
this.$options.bytecode = (await this.$options.onCompiler
|
|
138
|
+
.compileBySourceCode(this.$options.sourceCode, this.$options.fileSystem)
|
|
139
|
+
).bytecode;
|
|
223
140
|
return this.$options.bytecode;
|
|
224
141
|
}
|
|
225
142
|
|
|
226
|
-
|
|
227
|
-
{ returnType, returnValue }:
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
): void {
|
|
143
|
+
#getCallResult<Fn extends MethodNames<M>>(
|
|
144
|
+
{ returnType, returnValue, log }: ContractCallObject,
|
|
145
|
+
fnName: Fn,
|
|
146
|
+
transaction: Encoded.Transaction | undefined,
|
|
147
|
+
options: Parameters<Contract<M>['$decodeEvents']>[1],
|
|
148
|
+
): GetCallResultByHashReturnType<M, Fn> {
|
|
233
149
|
let message: string;
|
|
234
150
|
switch (returnType) {
|
|
235
|
-
case 'ok':
|
|
151
|
+
case 'ok': {
|
|
152
|
+
const fnAci = this.#getFunctionAci(fnName);
|
|
153
|
+
return {
|
|
154
|
+
decodedResult: this._calldata.decode(this._name, fnAci.name, returnValue),
|
|
155
|
+
decodedEvents: this.$decodeEvents(log, options),
|
|
156
|
+
};
|
|
157
|
+
}
|
|
236
158
|
case 'revert':
|
|
237
159
|
message = this._calldata.decodeFateString(returnValue);
|
|
238
160
|
break;
|
|
@@ -245,30 +167,43 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
245
167
|
throw new NodeInvocationError(message, transaction);
|
|
246
168
|
}
|
|
247
169
|
|
|
248
|
-
|
|
170
|
+
async #sendAndProcess<Fn extends MethodNames<M>>(
|
|
249
171
|
tx: Encoded.Transaction,
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
const txData = await
|
|
254
|
-
|
|
172
|
+
fnName: Fn,
|
|
173
|
+
options: SendTransactionOptions & Parameters<Contract<M>['$getCallResultByTxHash']>[2],
|
|
174
|
+
): Promise<SendAndProcessReturnType & Partial<GetCallResultByHashReturnType<M, Fn>>> {
|
|
175
|
+
const txData = await sendTransaction(tx, { ...this.$options, ...options });
|
|
176
|
+
return {
|
|
255
177
|
hash: txData.hash,
|
|
256
178
|
tx: unpackTx<Tag.ContractCallTx | Tag.ContractCreateTx>(txData.rawTx),
|
|
257
179
|
txData,
|
|
258
180
|
rawTx: txData.rawTx,
|
|
181
|
+
...txData.blockHeight != null && (
|
|
182
|
+
await this.$getCallResultByTxHash(txData.hash, fnName, options)
|
|
183
|
+
),
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
async $getCallResultByTxHash<Fn extends MethodNames<M>>(
|
|
188
|
+
hash: Encoded.TxHash,
|
|
189
|
+
fnName: Fn,
|
|
190
|
+
options?: Parameters<Contract<M>['$decodeEvents']>[1],
|
|
191
|
+
): Promise<GetCallResultByHashReturnType<M, Fn> & { result: ContractCallObject }> {
|
|
192
|
+
const { callInfo } = await this.$options.onNode.getTransactionInfoByHash(hash);
|
|
193
|
+
if (callInfo == null) {
|
|
194
|
+
throw new ContractError(`callInfo is not available for transaction ${hash}`);
|
|
195
|
+
}
|
|
196
|
+
const callInfoTyped = callInfo as ContractCallObject;
|
|
197
|
+
return {
|
|
198
|
+
...this.#getCallResult(callInfoTyped, fnName, undefined, options),
|
|
199
|
+
result: callInfoTyped,
|
|
259
200
|
};
|
|
260
|
-
if (txData.blockHeight == null) return result;
|
|
261
|
-
const { callInfo } = await this.$options.onNode.getTransactionInfoByHash(txData.hash);
|
|
262
|
-
Object.assign(result.txData, callInfo); // TODO: don't duplicate data in result
|
|
263
|
-
// @ts-expect-error TODO api should be updated to match types
|
|
264
|
-
this._handleCallError(callInfo, tx);
|
|
265
|
-
return { ...result, result: callInfo as TransformNodeType<ContractCallObject> };
|
|
266
201
|
}
|
|
267
202
|
|
|
268
203
|
async _estimateGas<Fn extends MethodNames<M>>(
|
|
269
204
|
name: Fn,
|
|
270
205
|
params: MethodParameters<M, Fn>,
|
|
271
|
-
options:
|
|
206
|
+
options: Omit<Parameters<Contract<M>['$call']>[2], 'callStatic'> = {},
|
|
272
207
|
): Promise<number> {
|
|
273
208
|
const { result } = await this.$call(name, params, { ...options, callStatic: true });
|
|
274
209
|
if (result == null) throw new UnexpectedTsError();
|
|
@@ -285,29 +220,41 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
285
220
|
*/
|
|
286
221
|
async $deploy(
|
|
287
222
|
params: MethodParameters<M, 'init'>,
|
|
288
|
-
options?: Parameters<Contract<M>['$call']>[2]
|
|
223
|
+
options?: Parameters<Contract<M>['$call']>[2]
|
|
224
|
+
& Partial<BuildTxOptions<Tag.ContractCreateTx, 'ownerId' | 'code' | 'callData'>>,
|
|
289
225
|
): Promise<Omit<SendAndProcessReturnType, 'hash'> & {
|
|
290
226
|
transaction?: Encoded.TxHash;
|
|
291
227
|
owner?: Encoded.AccountAddress;
|
|
292
228
|
address?: Encoded.ContractAddress;
|
|
229
|
+
decodedEvents?: ReturnType<Contract<M>['$decodeEvents']>;
|
|
293
230
|
}> {
|
|
294
|
-
const opt = { ...this.$options, ...options };
|
|
231
|
+
const { callStatic, ...opt } = { ...this.$options, ...options };
|
|
295
232
|
if (this.$options.bytecode == null) await this.$compile();
|
|
296
|
-
if (
|
|
233
|
+
if (callStatic === true) return this.$call('init', params, { ...opt, callStatic });
|
|
297
234
|
if (this.$options.address != null) throw new DuplicateContractError();
|
|
298
235
|
|
|
236
|
+
if (opt.onAccount == null) throw new IllegalArgumentError('Can\'t deploy without account');
|
|
299
237
|
const ownerId = opt.onAccount.address;
|
|
300
|
-
|
|
238
|
+
if (this.$options.bytecode == null) throw new IllegalArgumentError('Can\'t deploy without bytecode');
|
|
239
|
+
const tx = await buildTxAsync({
|
|
301
240
|
...opt,
|
|
241
|
+
tag: Tag.ContractCreateTx,
|
|
302
242
|
gasLimit: opt.gasLimit ?? await this._estimateGas('init', params, opt),
|
|
303
243
|
callData: this._calldata.encode(this._name, 'init', params),
|
|
304
244
|
code: this.$options.bytecode,
|
|
305
245
|
ownerId,
|
|
306
246
|
});
|
|
307
247
|
this.$options.address = buildContractIdByContractTx(tx);
|
|
308
|
-
const { hash, ...other } = await this
|
|
248
|
+
const { hash, ...other } = await this.#sendAndProcess(
|
|
249
|
+
tx,
|
|
250
|
+
'init',
|
|
251
|
+
{ ...opt, onAccount: opt.onAccount },
|
|
252
|
+
);
|
|
309
253
|
return {
|
|
310
254
|
...other,
|
|
255
|
+
...other.result?.log != null && {
|
|
256
|
+
decodedEvents: this.$decodeEvents(other.result.log, opt),
|
|
257
|
+
},
|
|
311
258
|
owner: ownerId,
|
|
312
259
|
transaction: hash,
|
|
313
260
|
address: this.$options.address,
|
|
@@ -319,14 +266,18 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
319
266
|
* @param name - Function name
|
|
320
267
|
* @returns function ACI
|
|
321
268
|
*/
|
|
322
|
-
|
|
323
|
-
const fn = this.
|
|
269
|
+
#getFunctionAci(name: string): FunctionAci {
|
|
270
|
+
const fn = this.#aciContract.functions.find(
|
|
324
271
|
(f: { name: string }) => f.name === name,
|
|
325
272
|
);
|
|
326
273
|
if (fn != null) {
|
|
327
274
|
return fn;
|
|
328
275
|
}
|
|
329
|
-
if (name === 'init')
|
|
276
|
+
if (name === 'init') {
|
|
277
|
+
return {
|
|
278
|
+
arguments: [], name: 'init', payable: false, returns: 'unit', stateful: true,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
330
281
|
throw new NoSuchContractFunctionError(`Function ${name} doesn't exist in contract`);
|
|
331
282
|
}
|
|
332
283
|
|
|
@@ -340,25 +291,29 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
340
291
|
async $call<Fn extends MethodNames<M>>(
|
|
341
292
|
fn: Fn,
|
|
342
293
|
params: MethodParameters<M, Fn>,
|
|
343
|
-
options:
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
const
|
|
294
|
+
options: Partial<BuildTxOptions<Tag.ContractCallTx, 'callerId' | 'contractId' | 'callData'>>
|
|
295
|
+
& Parameters<Contract<M>['$decodeEvents']>[1]
|
|
296
|
+
& Omit<SendTransactionOptions, 'onAccount' | 'onNode'>
|
|
297
|
+
& Omit<Parameters<typeof txDryRun>[2], 'onNode'>
|
|
298
|
+
& { onAccount?: AccountBase; onNode?: Node; callStatic?: boolean } = {},
|
|
299
|
+
): Promise<SendAndProcessReturnType & Partial<GetCallResultByHashReturnType<M, Fn>>> {
|
|
300
|
+
const { callStatic, top, ...opt } = { ...this.$options, ...options };
|
|
301
|
+
const fnAci = this.#getFunctionAci(fn);
|
|
350
302
|
const contractId = this.$options.address;
|
|
351
303
|
const { onNode } = opt;
|
|
352
304
|
|
|
353
305
|
if (fn == null) throw new MissingFunctionNameError();
|
|
354
|
-
if (fn === 'init' &&
|
|
355
|
-
if (fn !== 'init' && opt.amount
|
|
306
|
+
if (fn === 'init' && callStatic !== true) throw new InvalidMethodInvocationError('"init" can be called only via dryRun');
|
|
307
|
+
if (fn !== 'init' && opt.amount != null && opt.amount > 0 && !fnAci.payable) {
|
|
308
|
+
throw new NotPayableFunctionError(opt.amount, fn);
|
|
309
|
+
}
|
|
356
310
|
|
|
357
311
|
let callerId;
|
|
358
312
|
try {
|
|
313
|
+
if (opt.onAccount == null) throw new InternalError('Use fallback account');
|
|
359
314
|
callerId = opt.onAccount.address;
|
|
360
315
|
} catch (error) {
|
|
361
|
-
const useFallbackAccount =
|
|
316
|
+
const useFallbackAccount = callStatic === true && (
|
|
362
317
|
(error instanceof TypeError && error.message === 'Account should be an address (ak-prefixed string), or instance of AccountBase, got undefined instead')
|
|
363
318
|
|| (error instanceof NoWalletConnectedError)
|
|
364
319
|
);
|
|
@@ -367,51 +322,53 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
367
322
|
}
|
|
368
323
|
const callData = this._calldata.encode(this._name, fn, params);
|
|
369
324
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
opt.
|
|
325
|
+
if (callStatic === true) {
|
|
326
|
+
if (opt.nonce == null && top != null) {
|
|
327
|
+
const topKey = typeof top === 'number' ? 'height' : 'hash';
|
|
328
|
+
opt.nonce = (await getAccount(callerId, { [topKey]: top, onNode })).nonce + 1;
|
|
374
329
|
}
|
|
375
330
|
const txOpt = { ...opt, onNode, callData };
|
|
376
|
-
if (opt.nonce == null && opt.top != null) {
|
|
377
|
-
opt.nonce = (await getAccount(callerId, { hash: opt.top, onNode })).nonce + 1;
|
|
378
|
-
}
|
|
379
331
|
let tx;
|
|
380
332
|
if (fn === 'init') {
|
|
381
333
|
if (this.$options.bytecode == null) throw new IllegalArgumentError('Can\'t dry-run "init" without bytecode');
|
|
382
|
-
tx = await
|
|
383
|
-
Tag.ContractCreateTx,
|
|
384
|
-
|
|
385
|
-
);
|
|
334
|
+
tx = await buildTxAsync({
|
|
335
|
+
...txOpt, tag: Tag.ContractCreateTx, code: this.$options.bytecode, ownerId: callerId,
|
|
336
|
+
});
|
|
386
337
|
} else {
|
|
387
338
|
if (contractId == null) throw new MissingContractAddressError('Can\'t dry-run contract without address');
|
|
388
|
-
tx = await
|
|
339
|
+
tx = await buildTxAsync({
|
|
340
|
+
...txOpt, tag: Tag.ContractCallTx, callerId, contractId,
|
|
341
|
+
});
|
|
389
342
|
}
|
|
390
343
|
|
|
391
|
-
const { callObj, ...dryRunOther } = await txDryRun(tx, callerId, opt);
|
|
392
|
-
if (callObj == null)
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
callData,
|
|
406
|
-
});
|
|
407
|
-
res = await this._sendAndProcess(tx, opt);
|
|
408
|
-
}
|
|
409
|
-
if (opt.callStatic === true || res.txData.blockHeight != null) {
|
|
410
|
-
res.decodedResult = fnACI.returns != null && fnACI.returns !== 'unit' && fn !== 'init'
|
|
411
|
-
&& this._calldata.decode(this._name, fn, res.result.returnValue);
|
|
412
|
-
res.decodedEvents = this.$decodeEvents(res.result.log, opt);
|
|
344
|
+
const { callObj, ...dryRunOther } = await txDryRun(tx, callerId, { ...opt, top });
|
|
345
|
+
if (callObj == null) {
|
|
346
|
+
throw new InternalError(`callObj is not available for transaction ${tx}`);
|
|
347
|
+
}
|
|
348
|
+
const callInfoTyped = callObj as ContractCallObject;
|
|
349
|
+
return {
|
|
350
|
+
...dryRunOther,
|
|
351
|
+
...this.#getCallResult(callInfoTyped, fn, tx, opt),
|
|
352
|
+
tx: unpackTx(tx),
|
|
353
|
+
result: callInfoTyped,
|
|
354
|
+
rawTx: tx,
|
|
355
|
+
hash: buildTxHash(tx),
|
|
356
|
+
txData: undefined as any,
|
|
357
|
+
};
|
|
413
358
|
}
|
|
414
|
-
|
|
359
|
+
|
|
360
|
+
if (top != null) throw new IllegalArgumentError('Can\'t handle `top` option in on-chain contract call');
|
|
361
|
+
if (contractId == null) throw new MissingContractAddressError('Can\'t call contract without address');
|
|
362
|
+
const tx = await buildTxAsync({
|
|
363
|
+
...opt,
|
|
364
|
+
tag: Tag.ContractCallTx,
|
|
365
|
+
gasLimit: opt.gasLimit ?? await this._estimateGas(fn, params, opt),
|
|
366
|
+
callerId,
|
|
367
|
+
contractId,
|
|
368
|
+
callData,
|
|
369
|
+
});
|
|
370
|
+
if (opt.onAccount == null) throw new IllegalArgumentError('Can\'t call contract on chain without account');
|
|
371
|
+
return this.#sendAndProcess(tx, fn, { ...opt, onAccount: opt.onAccount });
|
|
415
372
|
}
|
|
416
373
|
|
|
417
374
|
/**
|
|
@@ -422,12 +379,10 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
422
379
|
* @throws {@link MissingEventDefinitionError}
|
|
423
380
|
* @throws {@link AmbiguousEventDefinitionError}
|
|
424
381
|
*/
|
|
425
|
-
|
|
382
|
+
#getContractNameByEvent(
|
|
426
383
|
ctAddress: Encoded.ContractAddress,
|
|
427
384
|
nameHash: BigInt,
|
|
428
|
-
{ contractAddressToName }:
|
|
429
|
-
contractAddressToName?: { [key: Encoded.ContractAddress]: string };
|
|
430
|
-
},
|
|
385
|
+
{ contractAddressToName }: GetContractNameByEventOptions,
|
|
431
386
|
): string {
|
|
432
387
|
const addressToName = { ...this.$options.contractAddressToName, ...contractAddressToName };
|
|
433
388
|
if (addressToName[ctAddress] != null) return addressToName[ctAddress];
|
|
@@ -435,9 +390,11 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
435
390
|
// TODO: consider using a third-party library
|
|
436
391
|
const isEqual = (a: any, b: any): boolean => JSON.stringify(a) === JSON.stringify(b);
|
|
437
392
|
|
|
438
|
-
const
|
|
439
|
-
.
|
|
440
|
-
.
|
|
393
|
+
const contracts = this._aci
|
|
394
|
+
.map(({ contract }) => contract)
|
|
395
|
+
.filter((contract) => contract?.event) as ContractAci[];
|
|
396
|
+
const matchedEvents = contracts
|
|
397
|
+
.map((contract) => [contract.name, contract.event.variant])
|
|
441
398
|
.map(([name, events]) => events.map((event: {}) => (
|
|
442
399
|
[name, Object.keys(event)[0], Object.values(event)[0]]
|
|
443
400
|
)))
|
|
@@ -459,15 +416,14 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
459
416
|
*/
|
|
460
417
|
$decodeEvents(
|
|
461
418
|
events: Event[],
|
|
462
|
-
{ omitUnknown, ...opt }: { omitUnknown?: boolean } &
|
|
463
|
-
Parameters<Contract<M>['_getContractNameByEvent']>[2] = {},
|
|
419
|
+
{ omitUnknown, ...opt }: { omitUnknown?: boolean } & GetContractNameByEventOptions = {},
|
|
464
420
|
): DecodedEvent[] {
|
|
465
421
|
return events
|
|
466
422
|
.map((event) => {
|
|
467
423
|
const topics = event.topics.map((t: string | number) => BigInt(t));
|
|
468
424
|
let contractName;
|
|
469
425
|
try {
|
|
470
|
-
contractName = this
|
|
426
|
+
contractName = this.#getContractNameByEvent(event.address, topics[0], opt);
|
|
471
427
|
} catch (error) {
|
|
472
428
|
if ((omitUnknown ?? false) && error instanceof MissingEventDefinitionError) return null;
|
|
473
429
|
throw error;
|
|
@@ -489,10 +445,11 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
489
445
|
{
|
|
490
446
|
onCompiler,
|
|
491
447
|
onNode,
|
|
492
|
-
sourceCode,
|
|
493
448
|
bytecode,
|
|
494
449
|
aci,
|
|
495
450
|
address,
|
|
451
|
+
sourceCodePath,
|
|
452
|
+
sourceCode,
|
|
496
453
|
fileSystem,
|
|
497
454
|
validateBytecode,
|
|
498
455
|
...otherOptions
|
|
@@ -502,9 +459,14 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
502
459
|
address?: Encoded.ContractAddress | AensName;
|
|
503
460
|
},
|
|
504
461
|
): Promise<ContractWithMethods<M>> {
|
|
505
|
-
if (aci == null &&
|
|
506
|
-
|
|
507
|
-
|
|
462
|
+
if (aci == null && onCompiler != null) {
|
|
463
|
+
let res;
|
|
464
|
+
if (sourceCodePath != null) res = await onCompiler.compile(sourceCodePath);
|
|
465
|
+
if (sourceCode != null) res = await onCompiler.compileBySourceCode(sourceCode, fileSystem);
|
|
466
|
+
if (res != null) {
|
|
467
|
+
aci = res.aci;
|
|
468
|
+
bytecode ??= res.bytecode;
|
|
469
|
+
}
|
|
508
470
|
}
|
|
509
471
|
if (aci == null) throw new MissingContractDefError();
|
|
510
472
|
|
|
@@ -525,14 +487,15 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
525
487
|
if (contract.active == null) throw new InactiveContractError(address);
|
|
526
488
|
}
|
|
527
489
|
|
|
528
|
-
if (validateBytecode
|
|
490
|
+
if (validateBytecode === true) {
|
|
529
491
|
if (address == null) throw new MissingContractAddressError('Can\'t validate bytecode without contract address');
|
|
530
492
|
const onChanBytecode = (await getContractByteCode(address, { onNode })).bytecode;
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
493
|
+
let isValid = false;
|
|
494
|
+
if (bytecode != null) isValid = bytecode === onChanBytecode;
|
|
495
|
+
else if (sourceCode != null) {
|
|
496
|
+
if (onCompiler == null) throw new IllegalArgumentError('Can\'t validate bytecode without compiler');
|
|
497
|
+
isValid = await onCompiler.validateBySourceCode(onChanBytecode, sourceCode, fileSystem);
|
|
498
|
+
}
|
|
536
499
|
if (!isValid) throw new BytecodeMismatchError(sourceCode != null ? 'source code' : 'bytecode');
|
|
537
500
|
}
|
|
538
501
|
|
|
@@ -543,36 +506,33 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
543
506
|
|
|
544
507
|
_aci: Aci;
|
|
545
508
|
|
|
509
|
+
#aciContract: ContractAci;
|
|
510
|
+
|
|
546
511
|
_name: string;
|
|
547
512
|
|
|
548
513
|
_calldata: Calldata;
|
|
549
514
|
|
|
550
|
-
$options:
|
|
551
|
-
sourceCode?: string;
|
|
552
|
-
bytecode?: Encoded.ContractBytearray;
|
|
553
|
-
address?: Encoded.ContractAddress;
|
|
554
|
-
onCompiler: CompilerHttp;
|
|
555
|
-
onNode: Node;
|
|
556
|
-
omitUnknown?: boolean;
|
|
557
|
-
contractAddressToName?: { [key: Encoded.ContractAddress]: string };
|
|
558
|
-
[key: string]: any;
|
|
559
|
-
};
|
|
515
|
+
$options: Omit<ConstructorParameters<typeof Contract>[0], 'aci'>;
|
|
560
516
|
|
|
561
517
|
constructor({ aci, ...otherOptions }: {
|
|
562
|
-
|
|
563
|
-
onCompiler: CompilerHttp;
|
|
518
|
+
onCompiler?: CompilerBase;
|
|
564
519
|
onNode: Node;
|
|
565
|
-
sourceCode?: string;
|
|
566
520
|
bytecode?: Encoded.ContractBytearray;
|
|
567
521
|
aci: Aci;
|
|
568
522
|
address?: Encoded.ContractAddress;
|
|
569
|
-
|
|
570
|
-
[
|
|
571
|
-
|
|
523
|
+
sourceCodePath?: Parameters<CompilerBase['compile']>[0];
|
|
524
|
+
sourceCode?: Parameters<CompilerBase['compileBySourceCode']>[0];
|
|
525
|
+
fileSystem?: Parameters<CompilerBase['compileBySourceCode']>[1];
|
|
526
|
+
} & Parameters<Contract<M>['$deploy']>[1]) {
|
|
572
527
|
this._aci = aci;
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
528
|
+
const aciLast = aci[aci.length - 1];
|
|
529
|
+
if (aciLast.contract == null) {
|
|
530
|
+
throw new IllegalArgumentError(`The last 'aci' item should have 'contract' key, got ${Object.keys(aciLast)} keys instead`);
|
|
531
|
+
}
|
|
532
|
+
this.#aciContract = aciLast.contract;
|
|
533
|
+
this._name = this.#aciContract.name;
|
|
534
|
+
this._calldata = new Calldata(aci);
|
|
535
|
+
this.$options = otherOptions;
|
|
576
536
|
|
|
577
537
|
/**
|
|
578
538
|
* Generate proto function based on contract function using Contract ACI schema
|
|
@@ -590,8 +550,8 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
590
550
|
*/
|
|
591
551
|
Object.assign(
|
|
592
552
|
this,
|
|
593
|
-
Object.fromEntries(this.
|
|
594
|
-
.map(({ name, arguments: aciArgs, stateful }:
|
|
553
|
+
Object.fromEntries(this.#aciContract.functions
|
|
554
|
+
.map(({ name, arguments: aciArgs, stateful }: FunctionAci) => {
|
|
595
555
|
const callStatic = name !== 'init' && !stateful;
|
|
596
556
|
return [
|
|
597
557
|
name,
|