@aeternity/aepp-sdk 13.0.0-alpha.1 → 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 +1792 -1525
- 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.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 +11 -24
- 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 +19 -22
- 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 +174 -211
- package/es/contract/Contract.mjs.map +1 -1
- package/es/contract/compiler/Base.d.ts +7 -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 +4 -3
- package/es/index-browser.mjs +6 -20
- 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 +2 -32
- 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/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 +8 -23
- 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 +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 +28 -27
- 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 +133 -163
- package/src/contract/compiler/Base.ts +7 -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 +12 -20
- 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 +15 -44
- package/src/utils/string.ts +0 -17
- 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 +7 -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 +4 -3
- 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/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 +7 -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 +4 -3
- 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/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,28 +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
36
|
import {
|
|
53
|
-
ContractCallObject as NodeContractCallObject,
|
|
37
|
+
ContractCallObject as NodeContractCallObject, Event as NodeEvent,
|
|
54
38
|
} from '../apis/node';
|
|
55
39
|
import CompilerBase, { Aci } from './compiler/Base';
|
|
56
40
|
import Node, { TransformNodeType } from '../Node';
|
|
57
41
|
import {
|
|
58
|
-
getAccount, getContract, getContractByteCode, resolveName, txDryRun,
|
|
42
|
+
getAccount, getContract, getContractByteCode, resolveName, txDryRun, sendTransaction,
|
|
43
|
+
SendTransactionOptions,
|
|
59
44
|
} from '../chain';
|
|
60
45
|
import AccountBase from '../account/Base';
|
|
61
|
-
import {
|
|
62
|
-
import { isNameValid, produceNameId } from '../tx/builder/helpers';
|
|
46
|
+
import { TxUnpacked } from '../tx/builder/schema.generated';
|
|
63
47
|
|
|
64
|
-
type
|
|
48
|
+
type ContractAci = NonNullable<Aci[0]['contract']>;
|
|
49
|
+
type FunctionAci = ContractAci['functions'][0];
|
|
65
50
|
|
|
66
51
|
interface Event extends NodeEvent {
|
|
67
52
|
address: Encoded.ContractAddress;
|
|
68
53
|
data: Encoded.ContractBytearray;
|
|
69
54
|
}
|
|
70
55
|
|
|
71
|
-
export interface ContractCallObject extends NodeContractCallObject {
|
|
56
|
+
export interface ContractCallObject extends TransformNodeType<NodeContractCallObject> {
|
|
72
57
|
returnValue: Encoded.ContractBytearray;
|
|
73
58
|
log: Event[];
|
|
74
59
|
}
|
|
@@ -82,12 +67,12 @@ interface DecodedEvent {
|
|
|
82
67
|
};
|
|
83
68
|
}
|
|
84
69
|
|
|
85
|
-
type TxData = Awaited<ReturnType<typeof
|
|
70
|
+
type TxData = Awaited<ReturnType<typeof sendTransaction>>;
|
|
86
71
|
|
|
87
72
|
interface SendAndProcessReturnType {
|
|
88
|
-
result?:
|
|
73
|
+
result?: ContractCallObject;
|
|
89
74
|
hash: TxData['hash'];
|
|
90
|
-
tx:
|
|
75
|
+
tx: TxUnpacked & { tag: Tag.ContractCallTx | Tag.ContractCreateTx };
|
|
91
76
|
txData: TxData;
|
|
92
77
|
rawTx: Encoded.Transaction;
|
|
93
78
|
}
|
|
@@ -96,15 +81,12 @@ export interface ContractMethodsBase { [key: string]: (...args: any[]) => any }
|
|
|
96
81
|
|
|
97
82
|
type MethodsToContractApi<M extends ContractMethodsBase> = {
|
|
98
83
|
[Name in keyof M]:
|
|
99
|
-
M[Name] extends (...args: infer Args) =>
|
|
84
|
+
M[Name] extends (...args: infer Args) => any
|
|
100
85
|
? (...args: [
|
|
101
86
|
...Args,
|
|
102
87
|
...[] | [Name extends 'init'
|
|
103
88
|
? Parameters<Contract<M>['$deploy']>[1] : Parameters<Contract<M>['$call']>[2]],
|
|
104
|
-
]) =>
|
|
105
|
-
Awaited<ReturnType<Contract<M>['$call']>> &
|
|
106
|
-
{ decodedResult?: Ret }
|
|
107
|
-
>
|
|
89
|
+
]) => ReturnType<Contract<M>['$call']>
|
|
108
90
|
: never
|
|
109
91
|
};
|
|
110
92
|
|
|
@@ -117,6 +99,15 @@ type MethodParameters<M extends ContractMethodsBase, Fn extends MethodNames<M>>
|
|
|
117
99
|
? M extends { init: any } ? Parameters<M['init']> : []
|
|
118
100
|
: Parameters<M[Fn]>;
|
|
119
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
|
+
|
|
120
111
|
/**
|
|
121
112
|
* Generate contract ACI object with predefined js methods for contract usage - can be used for
|
|
122
113
|
* creating a reference to already deployed contracts
|
|
@@ -135,60 +126,6 @@ type MethodParameters<M extends ContractMethodsBase, Fn extends MethodNames<M>>
|
|
|
135
126
|
* stateful or not
|
|
136
127
|
*/
|
|
137
128
|
class Contract<M extends ContractMethodsBase> {
|
|
138
|
-
/**
|
|
139
|
-
* Helper to generate a signature to delegate
|
|
140
|
-
* - pre-claim/claim/transfer/revoke of a name to a contract.
|
|
141
|
-
* - register/extend/respond of an Oracle to a contract.
|
|
142
|
-
* @category contract
|
|
143
|
-
* @param ids - The list of id's to prepend
|
|
144
|
-
* @param _options - Options
|
|
145
|
-
* @param _options.omitAddress - Prepend delegation signature with an account address
|
|
146
|
-
* @param _options.onAccount - Account to use
|
|
147
|
-
* @returns Signature
|
|
148
|
-
* @example
|
|
149
|
-
* ```js
|
|
150
|
-
* const aeSdk = new AeSdk({ ... })
|
|
151
|
-
* const contract = await aeSdk.initializeContract({ address: 'ct_asd2ks...' })
|
|
152
|
-
* const aensName = 'example.chain'
|
|
153
|
-
* const onAccount = new MemoryAccount(...) // Sign with a specific account
|
|
154
|
-
* // Preclaim signature
|
|
155
|
-
* const preclaimSig = await contract.$createDelegationSignature([], { onAccount })
|
|
156
|
-
* // Claim, transfer and revoke signature
|
|
157
|
-
* const aensDelegationSig = await contract
|
|
158
|
-
* .$createDelegationSignature([aensName], { onAccount })
|
|
159
|
-
* ```
|
|
160
|
-
* @example
|
|
161
|
-
* ```js
|
|
162
|
-
* const aeSdk = new AeSdk({ ... })
|
|
163
|
-
* const contract = await aeSdk.initializeContract({ address: 'ct_asd2ks...' })
|
|
164
|
-
* const oracleQueryId = 'oq_...'
|
|
165
|
-
* const onAccount = new MemoryAccount(...) // Sign with a specific account
|
|
166
|
-
* // Oracle register and extend signature
|
|
167
|
-
* const oracleDelegationSig = await contract.$createDelegationSignature([], { onAccount })
|
|
168
|
-
* // Oracle respond signature
|
|
169
|
-
* const respondSig = await contract
|
|
170
|
-
* .$createDelegationSignature([oracleQueryId], { onAccount, omitAddress: true })
|
|
171
|
-
* ```
|
|
172
|
-
*/
|
|
173
|
-
async $createDelegationSignature(
|
|
174
|
-
ids: Array<Encoded.Any | AensName> = [],
|
|
175
|
-
_options?: { omitAddress?: boolean; onAccount?: AccountBase },
|
|
176
|
-
): Promise<Uint8Array> {
|
|
177
|
-
const options = { ...this.$options, ..._options };
|
|
178
|
-
const contractId = this.$options.address;
|
|
179
|
-
if (options.onAccount == null) throw new IllegalArgumentError('Can\'t create delegation signature without account');
|
|
180
|
-
if (contractId == null) throw new MissingContractAddressError('Can\'t create delegation signature without address');
|
|
181
|
-
return options.onAccount.sign(
|
|
182
|
-
concatBuffers([
|
|
183
|
-
Buffer.from(await options.onNode.getNetworkId()),
|
|
184
|
-
...options.omitAddress === true ? [] : [decode(options.onAccount.address)],
|
|
185
|
-
...ids.map((e) => (isNameValid(e) ? produceNameId(e) : e)).map((e) => decode(e)),
|
|
186
|
-
decode(contractId),
|
|
187
|
-
]),
|
|
188
|
-
options,
|
|
189
|
-
);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
129
|
/**
|
|
193
130
|
* Compile contract
|
|
194
131
|
* @returns bytecode
|
|
@@ -203,16 +140,21 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
203
140
|
return this.$options.bytecode;
|
|
204
141
|
}
|
|
205
142
|
|
|
206
|
-
|
|
207
|
-
{ returnType, returnValue }:
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
): 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> {
|
|
213
149
|
let message: string;
|
|
214
150
|
switch (returnType) {
|
|
215
|
-
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
|
+
}
|
|
216
158
|
case 'revert':
|
|
217
159
|
message = this._calldata.decodeFateString(returnValue);
|
|
218
160
|
break;
|
|
@@ -225,29 +167,43 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
225
167
|
throw new NodeInvocationError(message, transaction);
|
|
226
168
|
}
|
|
227
169
|
|
|
228
|
-
|
|
170
|
+
async #sendAndProcess<Fn extends MethodNames<M>>(
|
|
229
171
|
tx: Encoded.Transaction,
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
const
|
|
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 {
|
|
234
177
|
hash: txData.hash,
|
|
235
178
|
tx: unpackTx<Tag.ContractCallTx | Tag.ContractCreateTx>(txData.rawTx),
|
|
236
179
|
txData,
|
|
237
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,
|
|
238
200
|
};
|
|
239
|
-
if (txData.blockHeight == null) return result;
|
|
240
|
-
const { callInfo } = await this.$options.onNode.getTransactionInfoByHash(txData.hash);
|
|
241
|
-
Object.assign(result.txData, callInfo); // TODO: don't duplicate data in result
|
|
242
|
-
// @ts-expect-error TODO api should be updated to match types
|
|
243
|
-
this._handleCallError(callInfo, tx);
|
|
244
|
-
return { ...result, result: callInfo as TransformNodeType<ContractCallObject> };
|
|
245
201
|
}
|
|
246
202
|
|
|
247
203
|
async _estimateGas<Fn extends MethodNames<M>>(
|
|
248
204
|
name: Fn,
|
|
249
205
|
params: MethodParameters<M, Fn>,
|
|
250
|
-
options:
|
|
206
|
+
options: Omit<Parameters<Contract<M>['$call']>[2], 'callStatic'> = {},
|
|
251
207
|
): Promise<number> {
|
|
252
208
|
const { result } = await this.$call(name, params, { ...options, callStatic: true });
|
|
253
209
|
if (result == null) throw new UnexpectedTsError();
|
|
@@ -280,15 +236,20 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
280
236
|
if (opt.onAccount == null) throw new IllegalArgumentError('Can\'t deploy without account');
|
|
281
237
|
const ownerId = opt.onAccount.address;
|
|
282
238
|
if (this.$options.bytecode == null) throw new IllegalArgumentError('Can\'t deploy without bytecode');
|
|
283
|
-
const tx = await
|
|
239
|
+
const tx = await buildTxAsync({
|
|
284
240
|
...opt,
|
|
241
|
+
tag: Tag.ContractCreateTx,
|
|
285
242
|
gasLimit: opt.gasLimit ?? await this._estimateGas('init', params, opt),
|
|
286
243
|
callData: this._calldata.encode(this._name, 'init', params),
|
|
287
244
|
code: this.$options.bytecode,
|
|
288
245
|
ownerId,
|
|
289
246
|
});
|
|
290
247
|
this.$options.address = buildContractIdByContractTx(tx);
|
|
291
|
-
const { hash, ...other } = await this
|
|
248
|
+
const { hash, ...other } = await this.#sendAndProcess(
|
|
249
|
+
tx,
|
|
250
|
+
'init',
|
|
251
|
+
{ ...opt, onAccount: opt.onAccount },
|
|
252
|
+
);
|
|
292
253
|
return {
|
|
293
254
|
...other,
|
|
294
255
|
...other.result?.log != null && {
|
|
@@ -305,14 +266,18 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
305
266
|
* @param name - Function name
|
|
306
267
|
* @returns function ACI
|
|
307
268
|
*/
|
|
308
|
-
|
|
309
|
-
const fn = this.
|
|
269
|
+
#getFunctionAci(name: string): FunctionAci {
|
|
270
|
+
const fn = this.#aciContract.functions.find(
|
|
310
271
|
(f: { name: string }) => f.name === name,
|
|
311
272
|
);
|
|
312
273
|
if (fn != null) {
|
|
313
274
|
return fn;
|
|
314
275
|
}
|
|
315
|
-
if (name === 'init')
|
|
276
|
+
if (name === 'init') {
|
|
277
|
+
return {
|
|
278
|
+
arguments: [], name: 'init', payable: false, returns: 'unit', stateful: true,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
316
281
|
throw new NoSuchContractFunctionError(`Function ${name} doesn't exist in contract`);
|
|
317
282
|
}
|
|
318
283
|
|
|
@@ -328,21 +293,18 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
328
293
|
params: MethodParameters<M, Fn>,
|
|
329
294
|
options: Partial<BuildTxOptions<Tag.ContractCallTx, 'callerId' | 'contractId' | 'callData'>>
|
|
330
295
|
& Parameters<Contract<M>['$decodeEvents']>[1]
|
|
331
|
-
& Omit<
|
|
296
|
+
& Omit<SendTransactionOptions, 'onAccount' | 'onNode'>
|
|
332
297
|
& Omit<Parameters<typeof txDryRun>[2], 'onNode'>
|
|
333
298
|
& { onAccount?: AccountBase; onNode?: Node; callStatic?: boolean } = {},
|
|
334
|
-
): Promise<{
|
|
335
|
-
decodedResult?: any;
|
|
336
|
-
decodedEvents?: ReturnType<Contract<M>['$decodeEvents']>;
|
|
337
|
-
} & SendAndProcessReturnType> {
|
|
299
|
+
): Promise<SendAndProcessReturnType & Partial<GetCallResultByHashReturnType<M, Fn>>> {
|
|
338
300
|
const { callStatic, top, ...opt } = { ...this.$options, ...options };
|
|
339
|
-
const
|
|
301
|
+
const fnAci = this.#getFunctionAci(fn);
|
|
340
302
|
const contractId = this.$options.address;
|
|
341
303
|
const { onNode } = opt;
|
|
342
304
|
|
|
343
305
|
if (fn == null) throw new MissingFunctionNameError();
|
|
344
306
|
if (fn === 'init' && callStatic !== true) throw new InvalidMethodInvocationError('"init" can be called only via dryRun');
|
|
345
|
-
if (fn !== 'init' && opt.amount != null && opt.amount > 0 &&
|
|
307
|
+
if (fn !== 'init' && opt.amount != null && opt.amount > 0 && !fnAci.payable) {
|
|
346
308
|
throw new NotPayableFunctionError(opt.amount, fn);
|
|
347
309
|
}
|
|
348
310
|
|
|
@@ -360,7 +322,6 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
360
322
|
}
|
|
361
323
|
const callData = this._calldata.encode(this._name, fn, params);
|
|
362
324
|
|
|
363
|
-
let res: any;
|
|
364
325
|
if (callStatic === true) {
|
|
365
326
|
if (opt.nonce == null && top != null) {
|
|
366
327
|
const topKey = typeof top === 'number' ? 'height' : 'hash';
|
|
@@ -370,41 +331,44 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
370
331
|
let tx;
|
|
371
332
|
if (fn === 'init') {
|
|
372
333
|
if (this.$options.bytecode == null) throw new IllegalArgumentError('Can\'t dry-run "init" without bytecode');
|
|
373
|
-
tx = await
|
|
374
|
-
Tag.ContractCreateTx,
|
|
375
|
-
|
|
376
|
-
);
|
|
334
|
+
tx = await buildTxAsync({
|
|
335
|
+
...txOpt, tag: Tag.ContractCreateTx, code: this.$options.bytecode, ownerId: callerId,
|
|
336
|
+
});
|
|
377
337
|
} else {
|
|
378
338
|
if (contractId == null) throw new MissingContractAddressError('Can\'t dry-run contract without address');
|
|
379
|
-
tx = await
|
|
339
|
+
tx = await buildTxAsync({
|
|
340
|
+
...txOpt, tag: Tag.ContractCallTx, callerId, contractId,
|
|
341
|
+
});
|
|
380
342
|
}
|
|
381
343
|
|
|
382
344
|
const { callObj, ...dryRunOther } = await txDryRun(tx, callerId, { ...opt, top });
|
|
383
|
-
if (callObj == null)
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
contractId,
|
|
397
|
-
callData,
|
|
398
|
-
});
|
|
399
|
-
if (opt.onAccount == null) throw new IllegalArgumentError('Can\'t call contract on chain without account');
|
|
400
|
-
res = await this._sendAndProcess(tx, { ...opt, onAccount: opt.onAccount });
|
|
401
|
-
}
|
|
402
|
-
if (callStatic === true || res.txData.blockHeight != null) {
|
|
403
|
-
res.decodedResult = fnACI.returns != null && fnACI.returns !== 'unit' && fn !== 'init'
|
|
404
|
-
&& this._calldata.decode(this._name, fn, res.result.returnValue);
|
|
405
|
-
res.decodedEvents = this.$decodeEvents(res.result.log, opt);
|
|
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
|
+
};
|
|
406
358
|
}
|
|
407
|
-
|
|
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 });
|
|
408
372
|
}
|
|
409
373
|
|
|
410
374
|
/**
|
|
@@ -415,12 +379,10 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
415
379
|
* @throws {@link MissingEventDefinitionError}
|
|
416
380
|
* @throws {@link AmbiguousEventDefinitionError}
|
|
417
381
|
*/
|
|
418
|
-
|
|
382
|
+
#getContractNameByEvent(
|
|
419
383
|
ctAddress: Encoded.ContractAddress,
|
|
420
384
|
nameHash: BigInt,
|
|
421
|
-
{ contractAddressToName }:
|
|
422
|
-
contractAddressToName?: { [key: Encoded.ContractAddress]: string };
|
|
423
|
-
},
|
|
385
|
+
{ contractAddressToName }: GetContractNameByEventOptions,
|
|
424
386
|
): string {
|
|
425
387
|
const addressToName = { ...this.$options.contractAddressToName, ...contractAddressToName };
|
|
426
388
|
if (addressToName[ctAddress] != null) return addressToName[ctAddress];
|
|
@@ -428,9 +390,11 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
428
390
|
// TODO: consider using a third-party library
|
|
429
391
|
const isEqual = (a: any, b: any): boolean => JSON.stringify(a) === JSON.stringify(b);
|
|
430
392
|
|
|
431
|
-
const
|
|
432
|
-
.
|
|
433
|
-
.
|
|
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])
|
|
434
398
|
.map(([name, events]) => events.map((event: {}) => (
|
|
435
399
|
[name, Object.keys(event)[0], Object.values(event)[0]]
|
|
436
400
|
)))
|
|
@@ -452,15 +416,14 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
452
416
|
*/
|
|
453
417
|
$decodeEvents(
|
|
454
418
|
events: Event[],
|
|
455
|
-
{ omitUnknown, ...opt }: { omitUnknown?: boolean } &
|
|
456
|
-
Parameters<Contract<M>['_getContractNameByEvent']>[2] = {},
|
|
419
|
+
{ omitUnknown, ...opt }: { omitUnknown?: boolean } & GetContractNameByEventOptions = {},
|
|
457
420
|
): DecodedEvent[] {
|
|
458
421
|
return events
|
|
459
422
|
.map((event) => {
|
|
460
423
|
const topics = event.topics.map((t: string | number) => BigInt(t));
|
|
461
424
|
let contractName;
|
|
462
425
|
try {
|
|
463
|
-
contractName = this
|
|
426
|
+
contractName = this.#getContractNameByEvent(event.address, topics[0], opt);
|
|
464
427
|
} catch (error) {
|
|
465
428
|
if ((omitUnknown ?? false) && error instanceof MissingEventDefinitionError) return null;
|
|
466
429
|
throw error;
|
|
@@ -543,6 +506,8 @@ 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;
|
|
@@ -560,8 +525,13 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
560
525
|
fileSystem?: Parameters<CompilerBase['compileBySourceCode']>[1];
|
|
561
526
|
} & Parameters<Contract<M>['$deploy']>[1]) {
|
|
562
527
|
this._aci = aci;
|
|
563
|
-
|
|
564
|
-
|
|
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);
|
|
565
535
|
this.$options = otherOptions;
|
|
566
536
|
|
|
567
537
|
/**
|
|
@@ -580,7 +550,7 @@ class Contract<M extends ContractMethodsBase> {
|
|
|
580
550
|
*/
|
|
581
551
|
Object.assign(
|
|
582
552
|
this,
|
|
583
|
-
Object.fromEntries(this.
|
|
553
|
+
Object.fromEntries(this.#aciContract.functions
|
|
584
554
|
.map(({ name, arguments: aciArgs, stateful }: FunctionAci) => {
|
|
585
555
|
const callStatic = name !== 'init' && !stateful;
|
|
586
556
|
return [
|
|
@@ -1,27 +1,20 @@
|
|
|
1
1
|
import { Encoded } from '../../utils/encoder';
|
|
2
|
-
import { Aci as BaseAci } from '../../apis/compiler';
|
|
3
2
|
|
|
4
3
|
interface FunctionAci {
|
|
5
4
|
arguments: any[];
|
|
6
5
|
name: string;
|
|
7
6
|
payable: boolean;
|
|
8
|
-
returns:
|
|
7
|
+
returns: any;
|
|
9
8
|
stateful: boolean;
|
|
10
9
|
}
|
|
11
10
|
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
kind: string;
|
|
18
|
-
state: any;
|
|
19
|
-
type_defs: any[];
|
|
20
|
-
functions: FunctionAci[];
|
|
21
|
-
};
|
|
11
|
+
export type Aci = Array<{
|
|
12
|
+
contract?: {
|
|
13
|
+
name: string;
|
|
14
|
+
event?: any;
|
|
15
|
+
functions: FunctionAci[];
|
|
22
16
|
};
|
|
23
|
-
|
|
24
|
-
}
|
|
17
|
+
}>;
|
|
25
18
|
|
|
26
19
|
/**
|
|
27
20
|
* A base class for all compiler implementations
|
|
@@ -71,24 +71,18 @@ export default class CompilerCli extends CompilerBase {
|
|
|
71
71
|
aci: Aci;
|
|
72
72
|
}> {
|
|
73
73
|
await this.#ensureCompatibleVersion;
|
|
74
|
-
let bytecode;
|
|
75
|
-
let aciCli;
|
|
76
74
|
try {
|
|
77
|
-
[bytecode,
|
|
75
|
+
const [bytecode, aci] = await Promise.all([
|
|
78
76
|
this.#run(path),
|
|
79
77
|
this.#run('--create_json_aci', path).then((res) => JSON.parse(res)),
|
|
80
78
|
]);
|
|
79
|
+
return {
|
|
80
|
+
bytecode: bytecode.trimEnd() as Encoded.ContractBytearray,
|
|
81
|
+
aci: aci as Aci,
|
|
82
|
+
};
|
|
81
83
|
} catch (error) {
|
|
82
84
|
throw new CompilerError(error.message);
|
|
83
85
|
}
|
|
84
|
-
const aci = {
|
|
85
|
-
encodedAci: aciCli[0],
|
|
86
|
-
externalEncodedAci: aciCli.slice(1),
|
|
87
|
-
};
|
|
88
|
-
return {
|
|
89
|
-
bytecode: bytecode.trimEnd() as Encoded.ContractBytearray,
|
|
90
|
-
aci: aci as Aci,
|
|
91
|
-
};
|
|
92
86
|
}
|
|
93
87
|
|
|
94
88
|
async compileBySourceCode(sourceCode: string, fileSystem?: Record<string, string>): Promise<{
|
|
@@ -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 { RestError } from '@azure/core-rest-pipeline';
|
|
18
2
|
import {
|
|
19
3
|
Compiler as CompilerApi,
|
|
@@ -60,7 +44,7 @@ export default class CompilerHttp extends CompilerBase {
|
|
|
60
44
|
}
|
|
61
45
|
if (Array.isArray(body)) {
|
|
62
46
|
message += `\n${body
|
|
63
|
-
.map((e) => `${e.type}:${e.pos.line}:${e.pos.col}: ${e.message}${e.context != null ? `(${e.context})` : ''}`)
|
|
47
|
+
.map((e) => `${e.type}:${e.pos.line}:${e.pos.col}: ${e.message}${e.context != null ? ` (${e.context})` : ''}`)
|
|
64
48
|
.join('\n')}`;
|
|
65
49
|
}
|
|
66
50
|
return message;
|
|
@@ -68,9 +52,10 @@ export default class CompilerHttp extends CompilerBase {
|
|
|
68
52
|
],
|
|
69
53
|
});
|
|
70
54
|
if (ignoreVersion !== true) {
|
|
71
|
-
const versionPromise = this.api.apiVersion()
|
|
55
|
+
const versionPromise = this.api.apiVersion()
|
|
56
|
+
.then(({ apiVersion }) => apiVersion, (error) => error);
|
|
72
57
|
this.api.pipeline.addPolicy(
|
|
73
|
-
genVersionCheckPolicy('compiler', '/api-version', versionPromise, '7.
|
|
58
|
+
genVersionCheckPolicy('compiler', '/api-version', versionPromise, '7.1.1', '8.0.0'),
|
|
74
59
|
);
|
|
75
60
|
}
|
|
76
61
|
}
|
|
@@ -80,13 +65,9 @@ export default class CompilerHttp extends CompilerBase {
|
|
|
80
65
|
fileSystem?: Record<string, string>,
|
|
81
66
|
): Promise<{ bytecode: Encoded.ContractBytearray; aci: Aci }> {
|
|
82
67
|
try {
|
|
83
|
-
const
|
|
84
|
-
this.api.compileContract({ code: sourceCode, options: { fileSystem } })
|
|
85
|
-
.then((res) => res.bytecode as Encoded.ContractBytearray),
|
|
86
|
-
this.api.generateACI({ code: sourceCode, options: { fileSystem } }),
|
|
87
|
-
]);
|
|
68
|
+
const res = await this.api.compileContract({ code: sourceCode, options: { fileSystem } });
|
|
88
69
|
// TODO: should be fixed when the compiledAci interface gets updated
|
|
89
|
-
return { bytecode
|
|
70
|
+
return res as { bytecode: Encoded.ContractBytearray; aci: Aci };
|
|
90
71
|
} catch (error) {
|
|
91
72
|
if (error instanceof RestError && error.statusCode === 400) {
|
|
92
73
|
throw new CompilerError(error.message.replace(/^aci error:/, 'compile error:'));
|