@aeternity/aepp-sdk 11.0.1 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.LICENSE.txt +12 -19
- package/dist/aepp-sdk.browser-script.js.map +1 -1
- package/dist/aepp-sdk.browser.js +1 -1
- package/dist/aepp-sdk.browser.js.map +1 -1
- package/dist/aepp-sdk.js +1 -1
- package/dist/aepp-sdk.js.map +1 -1
- package/es/AeSdk.d.ts +37 -0
- package/es/AeSdk.mjs +81 -0
- package/es/AeSdk.mjs.map +1 -0
- package/es/AeSdkAepp.d.ts +69 -0
- package/es/AeSdkAepp.mjs +175 -0
- package/es/AeSdkAepp.mjs.map +1 -0
- package/es/AeSdkBase.d.ts +212 -0
- package/es/AeSdkBase.mjs +310 -0
- package/es/AeSdkBase.mjs.map +1 -0
- package/es/AeSdkWallet.d.ts +103 -0
- package/es/AeSdkWallet.mjs +322 -0
- package/es/AeSdkWallet.mjs.map +1 -0
- package/es/Node.d.ts +44 -0
- package/es/Node.mjs +141 -0
- package/es/Node.mjs.map +1 -0
- package/es/account/Base.d.ts +65 -0
- package/es/account/Base.mjs +123 -0
- package/es/account/Base.mjs.map +1 -0
- package/es/account/Memory.d.ts +25 -0
- package/es/account/Memory.mjs +81 -0
- package/es/account/Memory.mjs.map +1 -0
- package/es/account/Rpc.d.ts +27 -0
- package/es/account/Rpc.mjs +79 -0
- package/es/account/Rpc.mjs.map +1 -0
- package/es/aens.d.ts +209 -0
- package/es/aens.mjs +332 -0
- package/es/aens.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/Browser.d.ts +32 -0
- package/es/aepp-wallet-communication/connection/Browser.mjs +70 -0
- package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +17 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +57 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +35 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +142 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection-proxy.d.ts +10 -0
- package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +15 -11
- package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +33 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
- package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
- package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
- package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
- package/es/aepp-wallet-communication/schema.d.ts +90 -46
- package/es/aepp-wallet-communication/schema.mjs +214 -0
- package/es/aepp-wallet-communication/schema.mjs.map +1 -0
- package/es/aepp-wallet-communication/wallet-detector.d.ts +24 -0
- package/es/aepp-wallet-communication/wallet-detector.mjs +63 -0
- package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
- package/es/apis/compiler/compiler.d.ts +92 -0
- package/es/apis/compiler/compiler.mjs +576 -0
- package/es/apis/compiler/compiler.mjs.map +1 -0
- package/es/apis/compiler/index.d.ts +2 -0
- package/es/apis/compiler/index.mjs +3 -0
- package/es/apis/compiler/index.mjs.map +1 -0
- package/es/apis/compiler/models/index.d.ts +248 -0
- package/es/apis/compiler/models/index.mjs +48 -0
- package/es/apis/compiler/models/index.mjs.map +1 -0
- package/es/apis/compiler/models/mappers.d.ts +23 -0
- package/es/apis/compiler/models/mappers.mjs +585 -0
- package/es/apis/compiler/models/mappers.mjs.map +1 -0
- package/es/apis/compiler/models/parameters.d.ts +13 -0
- package/es/apis/compiler/models/parameters.mjs +71 -0
- package/es/apis/compiler/models/parameters.mjs.map +1 -0
- package/es/apis/node/index.d.ts +2 -0
- package/es/apis/node/index.mjs +3 -0
- package/es/apis/node/index.mjs.map +1 -0
- package/es/apis/node/models/index.d.ts +1061 -0
- package/es/apis/node/models/index.mjs +2 -0
- package/es/apis/node/models/index.mjs.map +1 -0
- package/es/apis/node/models/mappers.d.ts +95 -0
- package/es/apis/node/models/mappers.mjs +4164 -0
- package/es/apis/node/models/mappers.mjs.map +1 -0
- package/es/apis/node/models/parameters.d.ts +17 -0
- package/es/apis/node/models/parameters.mjs +165 -0
- package/es/apis/node/models/parameters.mjs.map +1 -0
- package/es/apis/node/node.d.ts +215 -0
- package/es/apis/node/node.mjs +1165 -0
- package/es/apis/node/node.mjs.map +1 -0
- package/es/chain.d.ts +220 -0
- package/es/chain.mjs +524 -0
- package/es/chain.mjs.map +1 -0
- package/es/channel/handlers.d.ts +34 -0
- package/es/channel/handlers.mjs +147 -112
- package/es/channel/handlers.mjs.map +1 -1
- package/es/channel/index.d.ts +634 -0
- package/es/channel/index.mjs +898 -900
- package/es/channel/index.mjs.map +1 -1
- package/es/channel/internal.d.ts +100 -0
- package/es/channel/internal.mjs +97 -51
- package/es/channel/internal.mjs.map +1 -1
- package/es/contract/Compiler.d.ts +17 -0
- package/es/contract/Compiler.mjs +67 -0
- package/es/contract/Compiler.mjs.map +1 -0
- package/es/contract/aci.d.ts +125 -0
- package/es/contract/aci.mjs +199 -180
- package/es/contract/aci.mjs.map +1 -1
- package/es/contract/ga.d.ts +68 -0
- package/es/contract/ga.mjs +190 -0
- package/es/contract/ga.mjs.map +1 -0
- package/es/contract/methods.d.ts +68 -0
- package/es/contract/methods.mjs +101 -0
- package/es/contract/methods.mjs.map +1 -0
- package/es/index.d.ts +32 -0
- package/es/index.mjs +32 -40
- package/es/index.mjs.map +1 -1
- package/es/oracle.d.ts +154 -0
- package/es/oracle.mjs +288 -0
- package/es/oracle.mjs.map +1 -0
- package/es/spend.d.ts +61 -0
- package/es/spend.mjs +122 -0
- package/es/spend.mjs.map +1 -0
- package/es/tx/builder/constants.d.ts +41 -0
- package/es/tx/builder/constants.mjs +11 -19
- package/es/tx/builder/constants.mjs.map +1 -1
- package/es/tx/builder/field-types.d.ts +62 -0
- package/es/tx/builder/field-types.mjs +62 -10
- package/es/tx/builder/field-types.mjs.map +1 -1
- package/es/tx/builder/helpers.d.ts +131 -0
- package/es/tx/builder/helpers.mjs +71 -169
- package/es/tx/builder/helpers.mjs.map +1 -1
- package/es/tx/builder/index.d.ts +75 -0
- package/es/tx/builder/index.mjs +141 -323
- package/es/tx/builder/index.mjs.map +1 -1
- package/es/tx/builder/schema.d.ts +350 -0
- package/es/tx/builder/schema.mjs +173 -510
- package/es/tx/builder/schema.mjs.map +1 -1
- package/es/tx/index.d.ts +63 -0
- package/es/tx/index.mjs +171 -265
- package/es/tx/index.mjs.map +1 -1
- package/es/tx/min-fee.d.ts +20 -0
- package/es/tx/min-fee.mjs +148 -0
- package/es/tx/min-fee.mjs.map +1 -0
- package/es/tx/validator.d.ts +19 -0
- package/es/tx/validator.mjs +64 -71
- package/es/tx/validator.mjs.map +1 -1
- package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
- package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
- package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
- package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
- package/es/typings/bip32-path/index.d.mjs +2 -0
- package/es/typings/bip32-path/index.d.mjs.map +1 -0
- package/es/typings/blakejs/index.d.mjs.map +1 -1
- package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
- package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
- package/es/utils/amount-formatter.d.ts +42 -0
- package/es/utils/amount-formatter.mjs +28 -41
- package/es/utils/amount-formatter.mjs.map +1 -1
- package/es/utils/autorest.d.ts +6 -0
- package/es/utils/autorest.mjs +97 -0
- package/es/utils/autorest.mjs.map +1 -0
- package/es/utils/bignumber.d.ts +13 -0
- package/es/utils/bignumber.mjs +10 -8
- package/es/utils/bignumber.mjs.map +1 -1
- package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
- package/es/utils/bytes.mjs +10 -14
- package/es/utils/bytes.mjs.map +1 -1
- package/es/utils/crypto.d.ts +103 -0
- package/es/utils/crypto.mjs +60 -68
- package/es/utils/crypto.mjs.map +1 -1
- package/es/utils/encoder.d.ts +26 -0
- package/es/utils/encoder.mjs +47 -51
- package/es/utils/encoder.mjs.map +1 -1
- package/es/{errors.d.ts → utils/errors.d.ts} +254 -57
- package/es/utils/errors.mjs +318 -125
- package/es/utils/errors.mjs.map +1 -1
- package/es/utils/hd-wallet.d.ts +34 -0
- package/es/utils/hd-wallet.mjs +27 -16
- package/es/utils/hd-wallet.mjs.map +1 -1
- package/es/utils/json-big.d.ts +5 -0
- package/es/utils/json-big.mjs +10 -14
- package/es/utils/json-big.mjs.map +1 -1
- package/es/utils/keystore.d.ts +51 -0
- package/es/utils/keystore.mjs +98 -193
- package/es/utils/keystore.mjs.map +1 -1
- package/es/{mptree.d.ts → utils/mptree.d.ts} +5 -8
- package/es/utils/mptree.mjs +13 -14
- package/es/utils/mptree.mjs.map +1 -1
- package/es/utils/other.d.ts +14 -0
- package/es/utils/other.mjs +21 -36
- package/es/utils/other.mjs.map +1 -1
- package/es/{semver-satisfies.d.ts → utils/semver-satisfies.d.ts} +0 -0
- package/es/utils/semver-satisfies.mjs.map +1 -1
- package/es/utils/string.d.ts +24 -0
- package/es/utils/string.mjs +8 -10
- package/es/utils/string.mjs.map +1 -1
- package/package.json +49 -39
- package/src/AeSdk.ts +65 -0
- package/src/AeSdkAepp.ts +167 -0
- package/src/AeSdkBase.ts +320 -0
- package/src/AeSdkWallet.ts +332 -0
- package/src/Node.ts +167 -0
- package/src/account/Base.ts +114 -0
- package/src/account/Memory.ts +83 -0
- package/src/account/Rpc.ts +67 -0
- package/src/aens.ts +391 -0
- package/src/aepp-wallet-communication/connection/Browser.ts +68 -0
- package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +58 -0
- package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +111 -0
- package/{es/utils/crypto-ts.mjs → src/aepp-wallet-communication/connection-proxy.ts} +16 -17
- package/src/aepp-wallet-communication/rpc/RpcClient.ts +137 -0
- package/src/aepp-wallet-communication/rpc/types.ts +66 -0
- package/src/aepp-wallet-communication/schema.ts +181 -0
- package/src/aepp-wallet-communication/wallet-detector.ts +71 -0
- package/src/apis/compiler/code-model-v4.yaml +2649 -0
- package/src/apis/compiler/compiler.ts +585 -0
- package/src/apis/compiler/index.ts +2 -0
- package/src/apis/compiler/models/index.ts +301 -0
- package/src/apis/compiler/models/mappers.ts +583 -0
- package/src/apis/compiler/models/parameters.ts +93 -0
- package/src/apis/node/code-model-v4.yaml +10046 -0
- package/src/apis/node/index.ts +2 -0
- package/src/apis/node/models/index.ts +1253 -0
- package/src/apis/node/models/mappers.ts +4278 -0
- package/src/apis/node/models/parameters.ts +188 -0
- package/src/apis/node/node.ts +1299 -0
- package/src/chain.ts +444 -0
- package/src/channel/{handlers.js → handlers.ts} +220 -128
- package/src/channel/index.ts +991 -0
- package/src/channel/internal.ts +345 -0
- package/src/contract/Compiler.ts +66 -0
- package/src/contract/aci.ts +529 -0
- package/src/contract/ga.ts +178 -0
- package/src/contract/methods.ts +118 -0
- package/src/index.ts +51 -0
- package/src/oracle.ts +342 -0
- package/src/spend.ts +152 -0
- package/src/tx/builder/{constants.js → constants.ts} +12 -16
- package/src/tx/builder/field-types.ts +111 -0
- package/src/tx/builder/helpers.ts +253 -0
- package/src/tx/builder/index.ts +394 -0
- package/src/tx/builder/schema.ts +771 -0
- package/src/tx/index.ts +199 -0
- package/src/tx/min-fee.ts +136 -0
- package/src/tx/validator.ts +226 -0
- package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
- package/src/typings/@aeternity__uuid/index.d.ts +3 -0
- package/src/typings/bip32-path/index.d.ts +33 -0
- package/src/typings/tweetnacl-auth/index.d.ts +14 -0
- package/src/utils/amount-formatter.ts +29 -42
- package/src/utils/autorest.ts +90 -0
- package/src/utils/bignumber.ts +9 -11
- package/src/utils/bytes.ts +12 -14
- package/src/utils/crypto.ts +217 -0
- package/src/utils/encoder.ts +52 -55
- package/src/utils/errors.ts +268 -134
- package/src/utils/hd-wallet.ts +134 -0
- package/src/utils/json-big.ts +26 -0
- package/src/utils/keystore.ts +179 -0
- package/src/utils/mptree.ts +14 -14
- package/src/utils/other.ts +28 -43
- package/src/utils/string.ts +8 -10
- package/es/account/base.mjs +0 -179
- package/es/account/base.mjs.map +0 -1
- package/es/account/memory.mjs +0 -99
- package/es/account/memory.mjs.map +0 -1
- package/es/account/multiple.mjs +0 -179
- package/es/account/multiple.mjs.map +0 -1
- package/es/ae/aens.mjs +0 -404
- package/es/ae/aens.mjs.map +0 -1
- package/es/ae/aepp.mjs +0 -45
- package/es/ae/aepp.mjs.map +0 -1
- package/es/ae/contract.mjs +0 -159
- package/es/ae/contract.mjs.map +0 -1
- package/es/ae/index.mjs +0 -207
- package/es/ae/index.mjs.map +0 -1
- package/es/ae/oracle.mjs +0 -339
- package/es/ae/oracle.mjs.map +0 -1
- package/es/ae/universal.mjs +0 -45
- package/es/ae/universal.mjs.map +0 -1
- package/es/ae/wallet.mjs +0 -50
- package/es/ae/wallet.mjs.map +0 -1
- package/es/amount-formatter.d.ts +0 -58
- package/es/bignumber.d.ts +0 -18
- package/es/chain/index.mjs +0 -272
- package/es/chain/index.mjs.map +0 -1
- package/es/chain/node.mjs +0 -442
- package/es/chain/node.mjs.map +0 -1
- package/es/contract/compiler.mjs +0 -115
- package/es/contract/compiler.mjs.map +0 -1
- package/es/contract/ga/helpers.mjs +0 -30
- package/es/contract/ga/helpers.mjs.map +0 -1
- package/es/contract/ga/index.mjs +0 -178
- package/es/contract/ga/index.mjs.map +0 -1
- package/es/crypto-ts.d.ts +0 -9
- package/es/encoder.d.ts +0 -26
- package/es/node-pool/index.mjs +0 -188
- package/es/node-pool/index.mjs.map +0 -1
- package/es/node.mjs +0 -133
- package/es/node.mjs.map +0 -1
- package/es/other.d.ts +0 -31
- package/es/string.d.ts +0 -26
- package/es/tx/tx-object.mjs +0 -283
- package/es/tx/tx-object.mjs.map +0 -1
- package/es/tx/tx.mjs +0 -938
- package/es/tx/tx.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs +0 -132
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +0 -183
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/index.mjs +0 -87
- package/es/utils/aepp-wallet-communication/connection/index.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/content-script-bridge.mjs +0 -98
- package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/helpers.mjs +0 -92
- package/es/utils/aepp-wallet-communication/helpers.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +0 -375
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +0 -275
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +0 -541
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/schema.mjs +0 -102
- package/es/utils/aepp-wallet-communication/schema.mjs.map +0 -1
- package/es/utils/aepp-wallet-communication/wallet-detector.mjs +0 -110
- package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +0 -1
- package/es/utils/async-init.mjs +0 -64
- package/es/utils/async-init.mjs.map +0 -1
- package/es/utils/crypto-ts.mjs.map +0 -1
- package/es/utils/swagger.mjs +0 -164
- package/es/utils/swagger.mjs.map +0 -1
- package/src/account/base.js +0 -153
- package/src/account/memory.js +0 -83
- package/src/account/multiple.js +0 -162
- package/src/ae/aens.js +0 -361
- package/src/ae/aepp.js +0 -45
- package/src/ae/contract.js +0 -148
- package/src/ae/index.js +0 -168
- package/src/ae/oracle.js +0 -311
- package/src/ae/universal.js +0 -47
- package/src/ae/wallet.js +0 -50
- package/src/chain/index.js +0 -269
- package/src/chain/node.js +0 -320
- package/src/channel/index.js +0 -903
- package/src/channel/internal.js +0 -236
- package/src/contract/aci.js +0 -376
- package/src/contract/compiler.js +0 -100
- package/src/contract/ga/helpers.js +0 -19
- package/src/contract/ga/index.js +0 -150
- package/src/index.js +0 -89
- package/src/node-pool/index.js +0 -172
- package/src/node.js +0 -116
- package/src/tx/builder/field-types.js +0 -61
- package/src/tx/builder/helpers.js +0 -334
- package/src/tx/builder/index.js +0 -465
- package/src/tx/builder/schema.js +0 -1100
- package/src/tx/index.js +0 -301
- package/src/tx/tx-object.js +0 -187
- package/src/tx/tx.js +0 -631
- package/src/tx/validator.js +0 -181
- package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -119
- package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -165
- package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
- package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -86
- package/src/utils/aepp-wallet-communication/helpers.js +0 -60
- package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -294
- package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -232
- package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -401
- package/src/utils/aepp-wallet-communication/schema.ts +0 -80
- package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -92
- package/src/utils/async-init.js +0 -45
- package/src/utils/crypto.js +0 -219
- package/src/utils/hd-wallet.js +0 -100
- package/src/utils/json-big.js +0 -26
- package/src/utils/keystore.js +0 -219
- package/src/utils/swagger.js +0 -156
package/es/contract/aci.mjs
CHANGED
|
@@ -1,174 +1,184 @@
|
|
|
1
1
|
/*
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* ContractACI module
|
|
20
|
-
*
|
|
21
|
-
* @module @aeternity/aepp-sdk/es/contract/aci
|
|
22
|
-
* @export getContractInstance
|
|
23
|
-
*/
|
|
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
|
+
// @ts-expect-error TODO remove
|
|
24
18
|
import _aeternityAeppCalldata from '@aeternity/aepp-calldata';
|
|
25
19
|
const {
|
|
26
20
|
Encoder: Calldata
|
|
27
21
|
} = _aeternityAeppCalldata;
|
|
28
|
-
import { DRY_RUN_ACCOUNT, GAS_MAX } from "../tx/builder/schema.mjs";
|
|
29
|
-
import
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
22
|
+
import { DRY_RUN_ACCOUNT, GAS_MAX, TX_TYPE, AMOUNT } from "../tx/builder/schema.mjs";
|
|
23
|
+
import { buildContractIdByContractTx, unpackTx } from "../tx/builder/index.mjs";
|
|
24
|
+
import { _buildTx } from "../tx/index.mjs";
|
|
25
|
+
import { send } from "../spend.mjs";
|
|
26
|
+
import { decode } from "../utils/encoder.mjs";
|
|
27
|
+
import { MissingContractDefError, MissingContractAddressError, InactiveContractError, BytecodeMismatchError, DuplicateContractError, MissingFunctionNameError, InvalidMethodInvocationError, NotPayableFunctionError, TypeError, NodeInvocationError, IllegalArgumentError, NoSuchContractFunctionError, MissingEventDefinitionError, AmbiguousEventDefinitionError, UnexpectedTsError } from "../utils/errors.mjs";
|
|
28
|
+
import { hash } from "../utils/crypto.mjs";
|
|
29
|
+
import { getAccount, getContract, getContractByteCode, getKeyBlock, resolveName, txDryRun } from "../chain.mjs";
|
|
30
|
+
|
|
33
31
|
/**
|
|
34
32
|
* Generate contract ACI object with predefined js methods for contract usage - can be used for
|
|
35
33
|
* creating a reference to already deployed contracts
|
|
36
|
-
* @
|
|
37
|
-
* @
|
|
38
|
-
* @param {String} [options.source] Contract source code
|
|
39
|
-
* @param {String} [options.bytecode] Contract bytecode
|
|
40
|
-
* @param {Object} [options.aci] Contract ACI
|
|
41
|
-
* @param {String} [options.contractAddress] Contract address
|
|
42
|
-
* @param {Object} [options.filesystem] Contact source external namespaces map
|
|
43
|
-
* @param {Boolean} [options.validateBytecode] Compare source code with on-chain version
|
|
44
|
-
* @return {ContractInstance} JS Contract API
|
|
34
|
+
* @param options - Options object
|
|
35
|
+
* @returns JS Contract API
|
|
45
36
|
* @example
|
|
37
|
+
* ```js
|
|
46
38
|
* const contractIns = await aeSdk.getContractInstance({ source })
|
|
47
39
|
* await contractIns.deploy([321]) or await contractIns.methods.init(321)
|
|
48
40
|
* const callResult = await contractIns.call('setState', [123]) or
|
|
49
41
|
* await contractIns.methods.setState.send(123, options)
|
|
50
42
|
* const staticCallResult = await contractIns.call('setState', [123], { callStatic: true }) or
|
|
51
43
|
* await contractIns.methods.setState.get(123, options)
|
|
52
|
-
*
|
|
44
|
+
* ```
|
|
45
|
+
* Also you can call contract like: `await contractIns.methods.setState(123, options)`
|
|
53
46
|
* Then sdk decide to make on-chain or static call(dry-run API) transaction based on function is
|
|
54
47
|
* stateful or not
|
|
55
48
|
*/
|
|
56
|
-
|
|
57
|
-
export default async function getContractInstance() {
|
|
58
|
-
var _this = this;
|
|
59
|
-
|
|
49
|
+
export default async function getContractInstance(_ref) {
|
|
60
50
|
let {
|
|
51
|
+
onAccount,
|
|
52
|
+
onCompiler,
|
|
53
|
+
onNode,
|
|
61
54
|
source,
|
|
62
55
|
bytecode,
|
|
63
56
|
aci: _aci,
|
|
64
57
|
contractAddress,
|
|
65
|
-
|
|
58
|
+
fileSystem = {},
|
|
66
59
|
validateBytecode,
|
|
67
60
|
...otherOptions
|
|
68
|
-
} =
|
|
61
|
+
} = _ref;
|
|
69
62
|
|
|
70
|
-
if (
|
|
71
|
-
|
|
63
|
+
if (_aci == null && source != null) {
|
|
64
|
+
// TODO: should be fixed when the compiledAci interface gets updated
|
|
65
|
+
_aci = await onCompiler.generateACI({
|
|
72
66
|
code: source,
|
|
73
67
|
options: {
|
|
74
|
-
|
|
68
|
+
fileSystem
|
|
75
69
|
}
|
|
76
70
|
});
|
|
77
71
|
}
|
|
78
72
|
|
|
79
|
-
if (
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
73
|
+
if (_aci == null) throw new MissingContractDefError();
|
|
74
|
+
|
|
75
|
+
if (contractAddress != null) {
|
|
76
|
+
contractAddress = await resolveName(contractAddress, 'contract_pubkey', {
|
|
77
|
+
resolveByNode: true,
|
|
78
|
+
onNode
|
|
79
|
+
});
|
|
80
|
+
}
|
|
83
81
|
|
|
84
|
-
if (
|
|
82
|
+
if (contractAddress == null && source == null && bytecode == null) {
|
|
85
83
|
throw new MissingContractAddressError('Can\'t create instance by ACI without address');
|
|
86
84
|
}
|
|
87
85
|
|
|
88
|
-
if (contractAddress) {
|
|
89
|
-
const contract = await
|
|
90
|
-
|
|
86
|
+
if (contractAddress != null) {
|
|
87
|
+
const contract = await getContract(contractAddress, {
|
|
88
|
+
onNode
|
|
89
|
+
});
|
|
90
|
+
if (contract.active == null) throw new InactiveContractError(contractAddress);
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
const instance = {
|
|
94
94
|
_aci,
|
|
95
|
-
_name: _aci.
|
|
96
|
-
calldata: new Calldata([_aci.
|
|
95
|
+
_name: _aci.encodedAci.contract.name,
|
|
96
|
+
calldata: new Calldata([_aci.encodedAci, ..._aci.externalEncodedAci]),
|
|
97
97
|
source,
|
|
98
98
|
bytecode,
|
|
99
99
|
deployInfo: {
|
|
100
100
|
address: contractAddress
|
|
101
101
|
},
|
|
102
|
-
options: {
|
|
102
|
+
options: {
|
|
103
|
+
onAccount,
|
|
104
|
+
onCompiler,
|
|
105
|
+
onNode,
|
|
106
|
+
amount: AMOUNT,
|
|
103
107
|
callStatic: false,
|
|
104
|
-
|
|
108
|
+
fileSystem,
|
|
105
109
|
...otherOptions
|
|
106
110
|
},
|
|
107
|
-
|
|
111
|
+
compile: async function (_options) {},
|
|
112
|
+
_estimateGas: async function (_name, _params, _options) {},
|
|
113
|
+
deploy: async function (_params, _options) {},
|
|
114
|
+
call: async function (_fn, _params, _options) {},
|
|
115
|
+
|
|
116
|
+
decodeEvents(_events, options) {},
|
|
117
|
+
|
|
118
|
+
methods: undefined
|
|
108
119
|
};
|
|
109
120
|
|
|
110
|
-
if (validateBytecode) {
|
|
111
|
-
if (
|
|
112
|
-
const onChanBytecode = (await
|
|
113
|
-
|
|
121
|
+
if (validateBytecode != null) {
|
|
122
|
+
if (contractAddress == null) throw new MissingContractAddressError('Can\'t validate bytecode without contract address');
|
|
123
|
+
const onChanBytecode = (await getContractByteCode(contractAddress, {
|
|
124
|
+
onNode
|
|
125
|
+
})).bytecode;
|
|
126
|
+
const isValid = source != null ? await onCompiler.validateByteCode({
|
|
114
127
|
bytecode: onChanBytecode,
|
|
115
128
|
source,
|
|
116
129
|
options: instance.options
|
|
117
|
-
}).then(
|
|
118
|
-
if (!isValid) throw new BytecodeMismatchError(source ? 'source' : 'bytecode');
|
|
130
|
+
}).then(() => true, () => false) : bytecode === onChanBytecode;
|
|
131
|
+
if (!isValid) throw new BytecodeMismatchError(source != null ? 'source' : 'bytecode');
|
|
119
132
|
}
|
|
120
133
|
/**
|
|
121
134
|
* Compile contract
|
|
122
|
-
* @
|
|
123
|
-
* @rtype () => ContractInstance: Object
|
|
124
|
-
* @return {String} bytecode bytecode
|
|
135
|
+
* @returns bytecode
|
|
125
136
|
*/
|
|
126
137
|
|
|
127
138
|
|
|
128
139
|
instance.compile = async function () {
|
|
129
140
|
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
130
|
-
if (instance.bytecode) throw new IllegalArgumentError('Contract already compiled');
|
|
131
|
-
if (
|
|
132
|
-
|
|
133
|
-
bytecode
|
|
134
|
-
} = await _this.compilerApi.compileContract({
|
|
141
|
+
if (instance.bytecode != null) throw new IllegalArgumentError('Contract already compiled');
|
|
142
|
+
if (instance.source == null) throw new IllegalArgumentError('Can\'t compile without source code');
|
|
143
|
+
instance.bytecode = (await onCompiler.compileContract({
|
|
135
144
|
code: instance.source,
|
|
136
145
|
options: { ...instance.options,
|
|
137
146
|
...options
|
|
138
147
|
}
|
|
139
|
-
});
|
|
140
|
-
instance.bytecode = bytecode;
|
|
148
|
+
})).bytecode;
|
|
141
149
|
return instance.bytecode;
|
|
142
150
|
};
|
|
143
151
|
|
|
144
152
|
const sendAndProcess = async (tx, options) => {
|
|
145
|
-
|
|
153
|
+
options = { ...instance.options,
|
|
154
|
+
...options
|
|
155
|
+
};
|
|
156
|
+
const txData = await send(tx, options);
|
|
146
157
|
const result = {
|
|
147
158
|
hash: txData.hash,
|
|
148
|
-
tx:
|
|
149
|
-
tx: txData.rawTx
|
|
150
|
-
}),
|
|
159
|
+
tx: unpackTx(txData.rawTx),
|
|
151
160
|
txData,
|
|
152
161
|
rawTx: txData.rawTx
|
|
153
162
|
};
|
|
154
|
-
if (
|
|
163
|
+
if (txData.blockHeight == null) return result;
|
|
155
164
|
const {
|
|
156
165
|
callInfo
|
|
157
|
-
} = await
|
|
166
|
+
} = await onNode.getTransactionInfoByHash(txData.hash);
|
|
158
167
|
Object.assign(result.txData, callInfo); // TODO: don't duplicate data in result
|
|
168
|
+
// @ts-expect-error TODO api should be updated to match types
|
|
159
169
|
|
|
160
|
-
|
|
170
|
+
handleCallError(callInfo, tx);
|
|
161
171
|
return { ...result,
|
|
162
172
|
result: callInfo
|
|
163
173
|
};
|
|
164
174
|
};
|
|
165
175
|
|
|
166
|
-
const handleCallError =
|
|
176
|
+
const handleCallError = (_ref2, transaction) => {
|
|
167
177
|
let {
|
|
168
178
|
returnType,
|
|
169
179
|
returnValue
|
|
170
|
-
} =
|
|
171
|
-
let message;
|
|
180
|
+
} = _ref2;
|
|
181
|
+
let message;
|
|
172
182
|
|
|
173
183
|
switch (returnType) {
|
|
174
184
|
case 'ok':
|
|
@@ -181,12 +191,9 @@ export default async function getContractInstance() {
|
|
|
181
191
|
case 'error':
|
|
182
192
|
message = decode(returnValue).toString();
|
|
183
193
|
break;
|
|
184
|
-
|
|
185
|
-
default:
|
|
186
|
-
throw new InternalError(`Unknown returnType: ${returnType}`);
|
|
187
194
|
}
|
|
188
195
|
|
|
189
|
-
throw new NodeInvocationError(message);
|
|
196
|
+
throw new NodeInvocationError(message, transaction);
|
|
190
197
|
};
|
|
191
198
|
|
|
192
199
|
instance._estimateGas = async (name, params, options) => {
|
|
@@ -202,35 +209,33 @@ export default async function getContractInstance() {
|
|
|
202
209
|
};
|
|
203
210
|
/**
|
|
204
211
|
* Deploy contract
|
|
205
|
-
* @
|
|
206
|
-
* @
|
|
207
|
-
* @
|
|
208
|
-
* @param {Object} [options] options
|
|
209
|
-
* @return {Object} deploy info
|
|
212
|
+
* @param params - Contract init function arguments array
|
|
213
|
+
* @param options - Options
|
|
214
|
+
* @returns deploy info
|
|
210
215
|
*/
|
|
211
216
|
|
|
212
217
|
|
|
213
218
|
instance.deploy = async function () {
|
|
214
|
-
var _opt$
|
|
219
|
+
var _opt$gasLimit;
|
|
215
220
|
|
|
216
221
|
let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
217
222
|
let options = arguments.length > 1 ? arguments[1] : undefined;
|
|
218
223
|
const opt = { ...instance.options,
|
|
219
224
|
...options
|
|
220
225
|
};
|
|
221
|
-
if (
|
|
222
|
-
|
|
223
|
-
if (
|
|
224
|
-
|
|
225
|
-
const
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
} = await _this.contractCreateTx({ ...opt,
|
|
229
|
-
gas: (_opt$gas = opt.gas) !== null && _opt$gas !== void 0 ? _opt$gas : await instance._estimateGas('init', params, opt),
|
|
226
|
+
if (instance.bytecode == null) await instance.compile(opt); // @ts-expect-error
|
|
227
|
+
|
|
228
|
+
if (opt.callStatic === true) return await instance.call('init', params, opt);
|
|
229
|
+
if (instance.deployInfo.address != null) throw new DuplicateContractError();
|
|
230
|
+
const ownerId = await opt.onAccount.address(options);
|
|
231
|
+
const tx = await _buildTx(TX_TYPE.contractCreate, { ...opt,
|
|
232
|
+
gasLimit: (_opt$gasLimit = opt.gasLimit) !== null && _opt$gasLimit !== void 0 ? _opt$gasLimit : await instance._estimateGas('init', params, opt),
|
|
230
233
|
callData: instance.calldata.encode(instance._name, 'init', params),
|
|
231
234
|
code: instance.bytecode,
|
|
232
|
-
ownerId
|
|
235
|
+
ownerId,
|
|
236
|
+
onNode
|
|
233
237
|
});
|
|
238
|
+
const contractId = buildContractIdByContractTx(tx);
|
|
234
239
|
const {
|
|
235
240
|
hash,
|
|
236
241
|
rawTx,
|
|
@@ -249,15 +254,18 @@ export default async function getContractInstance() {
|
|
|
249
254
|
};
|
|
250
255
|
/**
|
|
251
256
|
* Get function schema from contract ACI object
|
|
252
|
-
* @param
|
|
253
|
-
* @
|
|
257
|
+
* @param name - Function name
|
|
258
|
+
* @returns function ACI
|
|
254
259
|
*/
|
|
255
260
|
|
|
256
261
|
|
|
257
262
|
function getFunctionACI(name) {
|
|
258
|
-
const fn = instance._aci.
|
|
263
|
+
const fn = instance._aci.encodedAci.contract.functions.find(f => f.name === name);
|
|
264
|
+
|
|
265
|
+
if (fn != null) {
|
|
266
|
+
return fn;
|
|
267
|
+
}
|
|
259
268
|
|
|
260
|
-
if (fn) return fn;
|
|
261
269
|
if (name === 'init') return {
|
|
262
270
|
payable: false
|
|
263
271
|
};
|
|
@@ -265,13 +273,10 @@ export default async function getContractInstance() {
|
|
|
265
273
|
}
|
|
266
274
|
/**
|
|
267
275
|
* Call contract function
|
|
268
|
-
* @
|
|
269
|
-
* @
|
|
270
|
-
* @param
|
|
271
|
-
* @
|
|
272
|
-
* @param {Object} [options={}] Array of function arguments
|
|
273
|
-
* @param {Boolean} [options.callStatic=false] Static function call
|
|
274
|
-
* @return {Object} CallResult
|
|
276
|
+
* @param fn - Function name
|
|
277
|
+
* @param params - Array of function arguments
|
|
278
|
+
* @param options - Array of function arguments
|
|
279
|
+
* @returns CallResult
|
|
275
280
|
*/
|
|
276
281
|
|
|
277
282
|
|
|
@@ -283,53 +288,67 @@ export default async function getContractInstance() {
|
|
|
283
288
|
};
|
|
284
289
|
const fnACI = getFunctionACI(fn);
|
|
285
290
|
const contractId = instance.deployInfo.address;
|
|
286
|
-
if (
|
|
287
|
-
if (fn === 'init' &&
|
|
288
|
-
if (
|
|
289
|
-
if (fn !== 'init' && opt.amount > 0 && fnACI.payable === false) throw new NotPayableFunctionError(
|
|
290
|
-
const callerId = await
|
|
291
|
-
if (opt.callStatic) return DRY_RUN_ACCOUNT.pub;else throw error;
|
|
291
|
+
if (fn == null) throw new MissingFunctionNameError();
|
|
292
|
+
if (fn === 'init' && opt.callStatic === false) throw new InvalidMethodInvocationError('"init" can be called only via dryRun');
|
|
293
|
+
if (contractId == null && fn !== 'init') throw new InvalidMethodInvocationError('You need to deploy contract before calling!');
|
|
294
|
+
if (fn !== 'init' && opt.amount > 0 && fnACI.payable === false) throw new NotPayableFunctionError(opt.amount, fn);
|
|
295
|
+
const callerId = await Promise.resolve().then(() => opt.onAccount.address(opt)).catch(error => {
|
|
296
|
+
if (opt.callStatic === true) return DRY_RUN_ACCOUNT.pub;else throw error;
|
|
292
297
|
});
|
|
293
298
|
const callData = instance.calldata.encode(instance._name, fn, params);
|
|
294
299
|
let res;
|
|
295
300
|
|
|
296
|
-
if (opt.callStatic) {
|
|
297
|
-
var _opt$
|
|
301
|
+
if (opt.callStatic === true) {
|
|
302
|
+
var _opt$gasLimit2;
|
|
298
303
|
|
|
299
304
|
if (typeof opt.top === 'number') {
|
|
300
|
-
opt.top = (await
|
|
305
|
+
opt.top = (await getKeyBlock(opt.top, {
|
|
306
|
+
onNode
|
|
307
|
+
})).hash;
|
|
301
308
|
}
|
|
302
309
|
|
|
303
310
|
const txOpt = { ...opt,
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
hash: opt.top
|
|
308
|
-
})).nonce + 1
|
|
311
|
+
onNode,
|
|
312
|
+
gasLimit: (_opt$gasLimit2 = opt.gasLimit) !== null && _opt$gasLimit2 !== void 0 ? _opt$gasLimit2 : GAS_MAX,
|
|
313
|
+
callData
|
|
309
314
|
};
|
|
310
|
-
|
|
315
|
+
|
|
316
|
+
if (opt.nonce == null && opt.top != null) {
|
|
317
|
+
opt.nonce = (await getAccount(callerId, {
|
|
318
|
+
hash: opt.top,
|
|
319
|
+
onNode
|
|
320
|
+
})).nonce + 1;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
const tx = await (fn === 'init' ? _buildTx(TX_TYPE.contractCreate, { ...txOpt,
|
|
311
324
|
code: instance.bytecode,
|
|
312
325
|
ownerId: callerId
|
|
313
|
-
})
|
|
326
|
+
}) : _buildTx(TX_TYPE.contractCall, { ...txOpt,
|
|
314
327
|
callerId,
|
|
315
328
|
contractId
|
|
316
|
-
});
|
|
329
|
+
}));
|
|
317
330
|
const {
|
|
318
331
|
callObj,
|
|
319
332
|
...dryRunOther
|
|
320
|
-
} = await
|
|
321
|
-
|
|
333
|
+
} = await txDryRun(tx, callerId, {
|
|
334
|
+
onNode,
|
|
335
|
+
...opt
|
|
336
|
+
});
|
|
337
|
+
if (callObj == null) throw new UnexpectedTsError();
|
|
338
|
+
handleCallError({
|
|
339
|
+
returnType: callObj.returnType,
|
|
340
|
+
returnValue: callObj.returnValue
|
|
341
|
+
}, tx);
|
|
322
342
|
res = { ...dryRunOther,
|
|
323
|
-
tx:
|
|
324
|
-
tx
|
|
325
|
-
}),
|
|
343
|
+
tx: unpackTx(tx),
|
|
326
344
|
result: callObj
|
|
327
345
|
};
|
|
328
346
|
} else {
|
|
329
|
-
var _opt$
|
|
347
|
+
var _opt$gasLimit3;
|
|
330
348
|
|
|
331
|
-
const tx = await
|
|
332
|
-
|
|
349
|
+
const tx = await _buildTx(TX_TYPE.contractCall, { ...opt,
|
|
350
|
+
onNode,
|
|
351
|
+
gasLimit: (_opt$gasLimit3 = opt.gasLimit) !== null && _opt$gasLimit3 !== void 0 ? _opt$gasLimit3 : await instance._estimateGas(fn, params, opt),
|
|
333
352
|
callerId,
|
|
334
353
|
contractId,
|
|
335
354
|
callData
|
|
@@ -337,53 +356,52 @@ export default async function getContractInstance() {
|
|
|
337
356
|
res = await sendAndProcess(tx, opt);
|
|
338
357
|
}
|
|
339
358
|
|
|
340
|
-
if (opt.
|
|
341
|
-
res.decodedResult = fnACI.returns && fnACI.returns !== 'unit' && fn !== 'init' && instance.calldata.decode(instance._name, fn, res.result.returnValue);
|
|
359
|
+
if (opt.callStatic === true || res.txData.blockHeight != null) {
|
|
360
|
+
res.decodedResult = fnACI.returns != null && fnACI.returns !== 'unit' && fn !== 'init' && instance.calldata.decode(instance._name, fn, res.result.returnValue);
|
|
342
361
|
res.decodedEvents = instance.decodeEvents(res.result.log, opt);
|
|
343
362
|
}
|
|
344
363
|
|
|
345
364
|
return res;
|
|
346
365
|
};
|
|
347
366
|
/**
|
|
348
|
-
* @param
|
|
349
|
-
* @param
|
|
350
|
-
* @param
|
|
351
|
-
* @
|
|
352
|
-
* @
|
|
353
|
-
* @throws {
|
|
354
|
-
* @throws {AmbiguousEventDefinitionError}
|
|
367
|
+
* @param address - Contract address that emitted event
|
|
368
|
+
* @param nameHash - Hash of emitted event name
|
|
369
|
+
* @param options - Options
|
|
370
|
+
* @returns Contract name
|
|
371
|
+
* @throws {@link MissingEventDefinitionError}
|
|
372
|
+
* @throws {@link AmbiguousEventDefinitionError}
|
|
355
373
|
*/
|
|
356
374
|
|
|
357
375
|
|
|
358
|
-
function getContractNameByEvent(address, nameHash,
|
|
376
|
+
function getContractNameByEvent(address, nameHash, _ref3) {
|
|
359
377
|
let {
|
|
360
378
|
contractAddressToName
|
|
361
|
-
} =
|
|
379
|
+
} = _ref3;
|
|
362
380
|
const addressToName = { ...instance.options.contractAddressToName,
|
|
363
381
|
...contractAddressToName
|
|
364
382
|
};
|
|
365
|
-
if (addressToName[address]) return addressToName[address];
|
|
366
|
-
const matchedEvents = [instance._aci.
|
|
383
|
+
if (addressToName[address] != null) return addressToName[address];
|
|
384
|
+
const matchedEvents = [instance._aci.encodedAci, ...instance._aci.externalEncodedAci].filter(_ref4 => {
|
|
367
385
|
let {
|
|
368
386
|
contract
|
|
369
|
-
} =
|
|
387
|
+
} = _ref4;
|
|
370
388
|
return contract === null || contract === void 0 ? void 0 : contract.event;
|
|
371
|
-
}).map(
|
|
389
|
+
}).map(_ref5 => {
|
|
372
390
|
let {
|
|
373
391
|
contract
|
|
374
|
-
} =
|
|
392
|
+
} = _ref5;
|
|
375
393
|
return [contract.name, contract.event.variant];
|
|
376
|
-
}).map(
|
|
377
|
-
let [name, events] =
|
|
394
|
+
}).map(_ref6 => {
|
|
395
|
+
let [name, events] = _ref6;
|
|
378
396
|
return events.map(event => [name, Object.keys(event)[0]]);
|
|
379
|
-
}).flat().filter(
|
|
380
|
-
let [, eventName] =
|
|
397
|
+
}).flat().filter(_ref7 => {
|
|
398
|
+
let [, eventName] = _ref7;
|
|
381
399
|
return BigInt('0x' + hash(eventName).toString('hex')) === nameHash;
|
|
382
400
|
});
|
|
383
401
|
|
|
384
402
|
switch (matchedEvents.length) {
|
|
385
403
|
case 0:
|
|
386
|
-
throw new MissingEventDefinitionError(nameHash, address);
|
|
404
|
+
throw new MissingEventDefinitionError(nameHash.toString(), address);
|
|
387
405
|
|
|
388
406
|
case 1:
|
|
389
407
|
return matchedEvents[0][0];
|
|
@@ -394,13 +412,9 @@ export default async function getContractInstance() {
|
|
|
394
412
|
}
|
|
395
413
|
/**
|
|
396
414
|
* Decode Events
|
|
397
|
-
* @
|
|
398
|
-
* @
|
|
399
|
-
* @
|
|
400
|
-
* @param {Object} [options]
|
|
401
|
-
* @param {Boolean} [options.omitUnknown] Omit events that can't be decoded in case ACI is not
|
|
402
|
-
* complete
|
|
403
|
-
* @return {Object} DecodedEvents
|
|
415
|
+
* @param events - Array of encoded events (callRes.result.log)
|
|
416
|
+
* @param options - Options
|
|
417
|
+
* @returns DecodedEvents
|
|
404
418
|
*/
|
|
405
419
|
|
|
406
420
|
|
|
@@ -416,7 +430,7 @@ export default async function getContractInstance() {
|
|
|
416
430
|
try {
|
|
417
431
|
contractName = getContractNameByEvent(event.address, topics[0], opt);
|
|
418
432
|
} catch (error) {
|
|
419
|
-
if (omitUnknown && error instanceof MissingEventDefinitionError) return null;
|
|
433
|
+
if ((omitUnknown !== null && omitUnknown !== void 0 ? omitUnknown : false) && error instanceof MissingEventDefinitionError) return null;
|
|
420
434
|
throw error;
|
|
421
435
|
}
|
|
422
436
|
|
|
@@ -430,38 +444,43 @@ export default async function getContractInstance() {
|
|
|
430
444
|
address: event.address
|
|
431
445
|
}
|
|
432
446
|
};
|
|
433
|
-
}).filter(e => e);
|
|
447
|
+
}).filter(e => e != null);
|
|
434
448
|
};
|
|
435
449
|
/**
|
|
436
450
|
* Generate proto function based on contract function using Contract ACI schema
|
|
437
451
|
* All function can be called like:
|
|
438
|
-
*
|
|
452
|
+
* ```js
|
|
453
|
+
* await contract.methods.testFunction()
|
|
454
|
+
* ```
|
|
455
|
+
* then sdk will decide to use dry-run or send tx
|
|
439
456
|
* on-chain base on if function stateful or not.
|
|
440
|
-
* Also you can manually do that:
|
|
441
|
-
*
|
|
442
|
-
*
|
|
457
|
+
* Also, you can manually do that:
|
|
458
|
+
* ```js
|
|
459
|
+
* await contract.methods.testFunction.get() // use call-static (dry-run)
|
|
460
|
+
* await contract.methods.testFunction.send() // send tx on-chain
|
|
461
|
+
* ```
|
|
443
462
|
*/
|
|
444
463
|
|
|
445
464
|
|
|
446
|
-
instance.methods = Object.fromEntries(instance._aci.
|
|
465
|
+
instance.methods = Object.fromEntries(instance._aci.encodedAci.contract.functions.map(_ref8 => {
|
|
447
466
|
let {
|
|
448
467
|
name,
|
|
449
468
|
arguments: aciArgs,
|
|
450
469
|
stateful
|
|
451
|
-
} =
|
|
470
|
+
} = _ref8;
|
|
452
471
|
|
|
453
|
-
const genHandler = callStatic => function () {
|
|
472
|
+
const genHandler = callStatic => async function () {
|
|
454
473
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
455
474
|
args[_key] = arguments[_key];
|
|
456
475
|
}
|
|
457
476
|
|
|
458
477
|
const options = args.length === aciArgs.length + 1 ? args.pop() : {};
|
|
459
478
|
if (typeof options !== 'object') throw new TypeError(`Options should be an object: ${options}`);
|
|
460
|
-
if (name === 'init') return instance.deploy(args, {
|
|
479
|
+
if (name === 'init') return await instance.deploy(args, {
|
|
461
480
|
callStatic,
|
|
462
481
|
...options
|
|
463
482
|
});
|
|
464
|
-
return instance.call(name, args, {
|
|
483
|
+
return await instance.call(name, args, {
|
|
465
484
|
callStatic,
|
|
466
485
|
...options
|
|
467
486
|
});
|