@aeternity/aepp-sdk 10.0.0 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +15 -14
- package/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.LICENSE.txt +13 -40
- package/dist/aepp-sdk.browser-script.js.map +1 -1
- package/dist/aepp-sdk.browser.js +1 -1
- package/dist/aepp-sdk.browser.js.map +1 -1
- package/dist/aepp-sdk.js +1 -1
- package/dist/aepp-sdk.js.map +1 -1
- package/es/AeSdk.d.ts +37 -0
- package/es/AeSdk.mjs +81 -0
- package/es/AeSdk.mjs.map +1 -0
- package/es/AeSdkAepp.d.ts +69 -0
- package/es/AeSdkAepp.mjs +175 -0
- package/es/AeSdkAepp.mjs.map +1 -0
- package/es/AeSdkBase.d.ts +212 -0
- package/es/AeSdkBase.mjs +310 -0
- package/es/AeSdkBase.mjs.map +1 -0
- package/es/AeSdkWallet.d.ts +103 -0
- package/es/AeSdkWallet.mjs +322 -0
- package/es/AeSdkWallet.mjs.map +1 -0
- package/es/Node.d.ts +44 -0
- package/es/Node.mjs +141 -0
- package/es/Node.mjs.map +1 -0
- package/es/account/Base.d.ts +65 -0
- package/es/account/Base.mjs +123 -0
- package/es/account/Base.mjs.map +1 -0
- package/es/account/Memory.d.ts +25 -0
- package/es/account/Memory.mjs +81 -0
- package/es/account/Memory.mjs.map +1 -0
- package/es/account/Rpc.d.ts +27 -0
- package/es/account/Rpc.mjs +79 -0
- package/es/account/Rpc.mjs.map +1 -0
- package/es/aens.d.ts +209 -0
- package/es/aens.mjs +332 -0
- package/es/aens.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/Browser.d.ts +32 -0
- package/es/aepp-wallet-communication/connection/Browser.mjs +70 -0
- package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +17 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +57 -0
- package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +35 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +142 -0
- package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
- package/es/aepp-wallet-communication/connection-proxy.d.ts +10 -0
- package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +15 -11
- package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +33 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
- package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
- package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
- package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
- package/es/aepp-wallet-communication/schema.d.ts +118 -0
- package/es/aepp-wallet-communication/schema.mjs +214 -0
- package/es/aepp-wallet-communication/schema.mjs.map +1 -0
- package/es/aepp-wallet-communication/wallet-detector.d.ts +24 -0
- package/es/aepp-wallet-communication/wallet-detector.mjs +63 -0
- package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
- package/es/apis/compiler/compiler.d.ts +92 -0
- package/es/apis/compiler/compiler.mjs +576 -0
- package/es/apis/compiler/compiler.mjs.map +1 -0
- package/es/apis/compiler/index.d.ts +2 -0
- package/es/apis/compiler/index.mjs +3 -0
- package/es/apis/compiler/index.mjs.map +1 -0
- package/es/apis/compiler/models/index.d.ts +248 -0
- package/es/apis/compiler/models/index.mjs +48 -0
- package/es/apis/compiler/models/index.mjs.map +1 -0
- package/es/apis/compiler/models/mappers.d.ts +23 -0
- package/es/apis/compiler/models/mappers.mjs +585 -0
- package/es/apis/compiler/models/mappers.mjs.map +1 -0
- package/es/apis/compiler/models/parameters.d.ts +13 -0
- package/es/apis/compiler/models/parameters.mjs +71 -0
- package/es/apis/compiler/models/parameters.mjs.map +1 -0
- package/es/apis/node/index.d.ts +2 -0
- package/es/apis/node/index.mjs +3 -0
- package/es/apis/node/index.mjs.map +1 -0
- package/es/apis/node/models/index.d.ts +1061 -0
- package/es/apis/node/models/index.mjs +2 -0
- package/es/apis/node/models/index.mjs.map +1 -0
- package/es/apis/node/models/mappers.d.ts +95 -0
- package/es/apis/node/models/mappers.mjs +4164 -0
- package/es/apis/node/models/mappers.mjs.map +1 -0
- package/es/apis/node/models/parameters.d.ts +17 -0
- package/es/apis/node/models/parameters.mjs +165 -0
- package/es/apis/node/models/parameters.mjs.map +1 -0
- package/es/apis/node/node.d.ts +215 -0
- package/es/apis/node/node.mjs +1165 -0
- package/es/apis/node/node.mjs.map +1 -0
- package/es/chain.d.ts +220 -0
- package/es/chain.mjs +524 -0
- package/es/chain.mjs.map +1 -0
- package/es/channel/handlers.d.ts +34 -0
- package/es/channel/{handlers.js → handlers.mjs} +163 -130
- package/es/channel/handlers.mjs.map +1 -0
- package/es/channel/index.d.ts +634 -0
- package/es/channel/index.mjs +978 -0
- package/es/channel/index.mjs.map +1 -0
- package/es/channel/internal.d.ts +100 -0
- package/es/channel/internal.mjs +328 -0
- package/es/channel/internal.mjs.map +1 -0
- package/es/contract/Compiler.d.ts +17 -0
- package/es/contract/Compiler.mjs +67 -0
- package/es/contract/Compiler.mjs.map +1 -0
- package/es/contract/aci.d.ts +125 -0
- package/es/contract/aci.mjs +496 -0
- package/es/contract/aci.mjs.map +1 -0
- package/es/contract/ga.d.ts +68 -0
- package/es/contract/ga.mjs +190 -0
- package/es/contract/ga.mjs.map +1 -0
- package/es/contract/methods.d.ts +68 -0
- package/es/contract/methods.mjs +101 -0
- package/es/contract/methods.mjs.map +1 -0
- package/es/index.d.ts +32 -0
- package/es/index.mjs +49 -0
- package/es/index.mjs.map +1 -0
- package/es/oracle.d.ts +154 -0
- package/es/oracle.mjs +288 -0
- package/es/oracle.mjs.map +1 -0
- package/es/spend.d.ts +61 -0
- package/es/spend.mjs +122 -0
- package/es/spend.mjs.map +1 -0
- package/es/tx/builder/constants.d.ts +41 -0
- package/es/tx/builder/constants.mjs +100 -0
- package/es/tx/builder/constants.mjs.map +1 -0
- package/es/tx/builder/field-types.d.ts +62 -0
- package/es/tx/builder/field-types.mjs +126 -0
- package/es/tx/builder/field-types.mjs.map +1 -0
- package/es/tx/builder/helpers.d.ts +131 -0
- package/es/tx/builder/helpers.mjs +223 -0
- package/es/tx/builder/helpers.mjs.map +1 -0
- package/es/tx/builder/index.d.ts +75 -0
- package/es/tx/builder/index.mjs +424 -0
- package/es/tx/builder/index.mjs.map +1 -0
- package/es/tx/builder/schema.d.ts +350 -0
- package/es/tx/builder/schema.mjs +320 -0
- package/es/tx/builder/schema.mjs.map +1 -0
- package/es/tx/index.d.ts +63 -0
- package/es/tx/index.mjs +209 -0
- package/es/tx/index.mjs.map +1 -0
- package/es/tx/min-fee.d.ts +20 -0
- package/es/tx/min-fee.mjs +148 -0
- package/es/tx/min-fee.mjs.map +1 -0
- package/es/tx/validator.d.ts +19 -0
- package/es/tx/validator.mjs +240 -0
- package/es/tx/validator.mjs.map +1 -0
- package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
- package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
- package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
- package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
- package/es/typings/bip32-path/index.d.mjs +2 -0
- package/es/typings/bip32-path/index.d.mjs.map +1 -0
- package/es/typings/blakejs/index.d.mjs +2 -0
- package/es/typings/blakejs/index.d.mjs.map +1 -0
- package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
- package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
- package/es/utils/amount-formatter.d.ts +42 -0
- package/es/utils/{amount-formatter.js → amount-formatter.mjs} +38 -44
- package/es/utils/amount-formatter.mjs.map +1 -0
- package/es/utils/autorest.d.ts +6 -0
- package/es/utils/autorest.mjs +97 -0
- package/es/utils/autorest.mjs.map +1 -0
- package/es/utils/bignumber.d.ts +13 -0
- package/es/utils/bignumber.mjs +23 -0
- package/es/utils/bignumber.mjs.map +1 -0
- package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
- package/es/utils/{bytes.js → bytes.mjs} +26 -22
- package/es/utils/bytes.mjs.map +1 -0
- package/es/utils/crypto.d.ts +103 -0
- package/es/utils/crypto.mjs +221 -0
- package/es/utils/crypto.mjs.map +1 -0
- package/es/utils/encoder.d.ts +26 -0
- package/es/utils/encoder.mjs +102 -0
- package/es/utils/encoder.mjs.map +1 -0
- package/es/utils/errors.d.ts +481 -0
- package/es/utils/errors.mjs +882 -0
- package/es/utils/errors.mjs.map +1 -0
- package/es/utils/hd-wallet.d.ts +34 -0
- package/es/utils/hd-wallet.mjs +122 -0
- package/es/utils/hd-wallet.mjs.map +1 -0
- package/es/utils/json-big.d.ts +5 -0
- package/es/utils/json-big.mjs +41 -0
- package/es/utils/json-big.mjs.map +1 -0
- package/es/utils/keystore.d.ts +51 -0
- package/es/utils/keystore.mjs +145 -0
- package/es/utils/keystore.mjs.map +1 -0
- package/es/{mptree.d.ts → utils/mptree.d.ts} +5 -8
- package/es/utils/{mptree.js → mptree.mjs} +33 -25
- package/es/utils/mptree.mjs.map +1 -0
- package/es/utils/other.d.ts +14 -0
- package/es/utils/other.mjs +28 -0
- package/es/utils/other.mjs.map +1 -0
- package/es/{semver-satisfies.d.ts → utils/semver-satisfies.d.ts} +0 -0
- package/es/utils/{semver-satisfies.js → semver-satisfies.mjs} +1 -1
- package/es/utils/semver-satisfies.mjs.map +1 -0
- package/es/utils/string.d.ts +24 -0
- package/es/utils/{string.js → string.mjs} +9 -11
- package/es/utils/string.mjs.map +1 -0
- package/package.json +67 -64
- package/src/AeSdk.ts +65 -0
- package/src/AeSdkAepp.ts +167 -0
- package/src/AeSdkBase.ts +320 -0
- package/src/AeSdkWallet.ts +332 -0
- package/src/Node.ts +167 -0
- package/src/account/Base.ts +114 -0
- package/src/account/Memory.ts +83 -0
- package/src/account/Rpc.ts +67 -0
- package/src/aens.ts +391 -0
- package/src/aepp-wallet-communication/connection/Browser.ts +68 -0
- package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +58 -0
- package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +111 -0
- package/{es/utils/crypto-ts.js → src/aepp-wallet-communication/connection-proxy.ts} +16 -9
- package/src/aepp-wallet-communication/rpc/RpcClient.ts +137 -0
- package/src/aepp-wallet-communication/rpc/types.ts +66 -0
- package/src/aepp-wallet-communication/schema.ts +181 -0
- package/src/aepp-wallet-communication/wallet-detector.ts +71 -0
- package/src/apis/compiler/code-model-v4.yaml +2649 -0
- package/src/apis/compiler/compiler.ts +585 -0
- package/src/apis/compiler/index.ts +2 -0
- package/src/apis/compiler/models/index.ts +301 -0
- package/src/apis/compiler/models/mappers.ts +583 -0
- package/src/apis/compiler/models/parameters.ts +93 -0
- package/src/apis/node/code-model-v4.yaml +10046 -0
- package/src/apis/node/index.ts +2 -0
- package/src/apis/node/models/index.ts +1253 -0
- package/src/apis/node/models/mappers.ts +4278 -0
- package/src/apis/node/models/parameters.ts +188 -0
- package/src/apis/node/node.ts +1299 -0
- package/src/chain.ts +444 -0
- package/src/channel/{handlers.js → handlers.ts} +238 -143
- package/src/channel/index.ts +991 -0
- package/src/channel/internal.ts +345 -0
- package/src/contract/Compiler.ts +66 -0
- package/src/contract/aci.ts +529 -0
- package/src/contract/ga.ts +178 -0
- package/src/contract/methods.ts +118 -0
- package/src/index.ts +51 -0
- package/src/oracle.ts +342 -0
- package/src/spend.ts +152 -0
- package/src/tx/builder/constants.ts +96 -0
- package/src/tx/builder/field-types.ts +111 -0
- package/src/tx/builder/helpers.ts +253 -0
- package/src/tx/builder/index.ts +394 -0
- package/src/tx/builder/schema.ts +771 -0
- package/src/tx/index.ts +199 -0
- package/src/tx/min-fee.ts +136 -0
- package/src/tx/validator.ts +226 -0
- package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
- package/src/typings/@aeternity__uuid/index.d.ts +3 -0
- package/src/typings/bip32-path/index.d.ts +33 -0
- package/src/typings/tweetnacl-auth/index.d.ts +14 -0
- package/src/utils/amount-formatter.ts +29 -41
- package/src/utils/autorest.ts +90 -0
- package/src/utils/bignumber.ts +9 -19
- package/src/utils/bytes.ts +15 -16
- package/src/utils/crypto.ts +217 -0
- package/src/utils/encoder.ts +98 -0
- package/src/utils/errors.ts +817 -0
- package/src/utils/hd-wallet.ts +134 -0
- package/src/utils/json-big.ts +26 -0
- package/src/utils/keystore.ts +179 -0
- package/src/utils/mptree.ts +26 -20
- package/src/utils/other.ts +28 -43
- package/src/utils/string.ts +8 -10
- package/CHANGELOG.md +0 -1603
- package/es/account/base.js +0 -169
- package/es/account/base.js.map +0 -1
- package/es/account/memory.js +0 -84
- package/es/account/memory.js.map +0 -1
- package/es/account/multiple.js +0 -178
- package/es/account/multiple.js.map +0 -1
- package/es/ae/aens.js +0 -408
- package/es/ae/aens.js.map +0 -1
- package/es/ae/aepp.js +0 -45
- package/es/ae/aepp.js.map +0 -1
- package/es/ae/contract.js +0 -312
- package/es/ae/contract.js.map +0 -1
- package/es/ae/index.js +0 -206
- package/es/ae/index.js.map +0 -1
- package/es/ae/oracle.js +0 -322
- package/es/ae/oracle.js.map +0 -1
- package/es/ae/universal.js +0 -45
- package/es/ae/universal.js.map +0 -1
- package/es/ae/wallet.js +0 -50
- package/es/ae/wallet.js.map +0 -1
- package/es/amount-formatter.d.ts +0 -58
- package/es/bignumber.d.ts +0 -24
- package/es/chain/index.js +0 -256
- package/es/chain/index.js.map +0 -1
- package/es/chain/node.js +0 -394
- package/es/chain/node.js.map +0 -1
- package/es/channel/handlers.js.map +0 -1
- package/es/channel/index.js +0 -980
- package/es/channel/index.js.map +0 -1
- package/es/channel/internal.js +0 -266
- package/es/channel/internal.js.map +0 -1
- package/es/contract/aci/helpers.js +0 -298
- package/es/contract/aci/helpers.js.map +0 -1
- package/es/contract/aci/index.js +0 -361
- package/es/contract/aci/index.js.map +0 -1
- package/es/contract/aci/transformation.js +0 -66
- package/es/contract/aci/transformation.js.map +0 -1
- package/es/contract/compiler.js +0 -244
- package/es/contract/compiler.js.map +0 -1
- package/es/contract/ga/helpers.js +0 -22
- package/es/contract/ga/helpers.js.map +0 -1
- package/es/contract/ga/index.js +0 -170
- package/es/contract/ga/index.js.map +0 -1
- package/es/contract/index.js +0 -162
- package/es/contract/index.js.map +0 -1
- package/es/crypto-ts.d.ts +0 -9
- package/es/index.js +0 -57
- package/es/index.js.map +0 -1
- package/es/node-pool/index.js +0 -187
- package/es/node-pool/index.js.map +0 -1
- package/es/node.js +0 -132
- package/es/node.js.map +0 -1
- package/es/other.d.ts +0 -31
- package/es/string.d.ts +0 -26
- package/es/tx/builder/helpers.js +0 -305
- package/es/tx/builder/helpers.js.map +0 -1
- package/es/tx/builder/index.js +0 -595
- package/es/tx/builder/index.js.map +0 -1
- package/es/tx/builder/schema.js +0 -814
- package/es/tx/builder/schema.js.map +0 -1
- package/es/tx/index.js +0 -300
- package/es/tx/index.js.map +0 -1
- package/es/tx/tx-object.js +0 -276
- package/es/tx/tx-object.js.map +0 -1
- package/es/tx/tx.js +0 -937
- package/es/tx/tx.js.map +0 -1
- package/es/tx/validator.js +0 -208
- package/es/tx/validator.js.map +0 -1
- package/es/typings/blakejs/index.d.js +0 -2
- package/es/typings/blakejs/index.d.js.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -131
- package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -184
- package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +0 -1
- package/es/utils/aepp-wallet-communication/connection/index.js +0 -84
- package/es/utils/aepp-wallet-communication/connection/index.js.map +0 -1
- package/es/utils/aepp-wallet-communication/content-script-bridge.js +0 -97
- package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +0 -1
- package/es/utils/aepp-wallet-communication/helpers.js +0 -103
- package/es/utils/aepp-wallet-communication/helpers.js.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -329
- package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -270
- package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +0 -1
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -533
- package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +0 -1
- package/es/utils/aepp-wallet-communication/schema.js +0 -107
- package/es/utils/aepp-wallet-communication/schema.js.map +0 -1
- package/es/utils/aepp-wallet-communication/wallet-detector.js +0 -109
- package/es/utils/aepp-wallet-communication/wallet-detector.js.map +0 -1
- package/es/utils/amount-formatter.js.map +0 -1
- package/es/utils/async-init.js +0 -67
- package/es/utils/async-init.js.map +0 -1
- package/es/utils/bignumber.js +0 -28
- package/es/utils/bignumber.js.map +0 -1
- package/es/utils/bytes.js.map +0 -1
- package/es/utils/crypto-ts.js.map +0 -1
- package/es/utils/crypto.js +0 -304
- package/es/utils/crypto.js.map +0 -1
- package/es/utils/hd-wallet.js +0 -112
- package/es/utils/hd-wallet.js.map +0 -1
- package/es/utils/json-big.js +0 -45
- package/es/utils/json-big.js.map +0 -1
- package/es/utils/keystore.js +0 -228
- package/es/utils/keystore.js.map +0 -1
- package/es/utils/mptree.js.map +0 -1
- package/es/utils/other.js +0 -43
- package/es/utils/other.js.map +0 -1
- package/es/utils/semver-satisfies.js.map +0 -1
- package/es/utils/string.js.map +0 -1
- package/es/utils/swagger.js +0 -132
- package/es/utils/swagger.js.map +0 -1
- package/src/account/base.js +0 -153
- package/src/account/memory.js +0 -78
- package/src/account/multiple.js +0 -154
- package/src/ae/aens.js +0 -366
- package/src/ae/aepp.js +0 -45
- package/src/ae/contract.js +0 -285
- package/src/ae/index.js +0 -167
- package/src/ae/oracle.js +0 -296
- package/src/ae/universal.js +0 -47
- package/src/ae/wallet.js +0 -50
- package/src/chain/index.js +0 -250
- package/src/chain/node.js +0 -293
- package/src/channel/index.js +0 -898
- package/src/channel/internal.js +0 -231
- package/src/contract/aci/index.js +0 -317
- package/src/contract/aci/transformation.js +0 -72
- package/src/contract/compiler.js +0 -195
- package/src/contract/ga/helpers.js +0 -17
- package/src/contract/ga/index.js +0 -147
- package/src/contract/index.js +0 -163
- package/src/index.js +0 -90
- package/src/node-pool/index.js +0 -171
- package/src/node.js +0 -118
- package/src/tx/builder/helpers.js +0 -325
- package/src/tx/builder/index.js +0 -460
- package/src/tx/builder/schema.js +0 -1211
- package/src/tx/index.js +0 -301
- package/src/tx/tx-object.js +0 -186
- package/src/tx/tx.js +0 -622
- package/src/tx/validator.js +0 -161
- package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -114
- package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -161
- package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
- package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -85
- package/src/utils/aepp-wallet-communication/helpers.js +0 -70
- package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -268
- package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -223
- package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -390
- package/src/utils/aepp-wallet-communication/schema.js +0 -108
- package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -91
- package/src/utils/async-init.js +0 -41
- package/src/utils/crypto.js +0 -312
- package/src/utils/hd-wallet.js +0 -115
- package/src/utils/json-big.js +0 -26
- package/src/utils/keystore.js +0 -223
- package/src/utils/swagger.js +0 -133
package/src/AeSdkAepp.ts
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import AeSdkBase, { Account } from './AeSdkBase'
|
|
2
|
+
import AccountBase from './account/Base'
|
|
3
|
+
import AccountRpc from './account/Rpc'
|
|
4
|
+
import { decode, EncodedData } from './utils/encoder'
|
|
5
|
+
import { Accounts, RPC_VERSION, WalletInfo, Network, WalletApi, AeppApi } from './aepp-wallet-communication/rpc/types'
|
|
6
|
+
import RpcClient from './aepp-wallet-communication/rpc/RpcClient'
|
|
7
|
+
import { METHODS, SUBSCRIPTION_TYPES } from './aepp-wallet-communication/schema'
|
|
8
|
+
import {
|
|
9
|
+
AlreadyConnectedError,
|
|
10
|
+
NoWalletConnectedError,
|
|
11
|
+
UnsubscribedAccountError,
|
|
12
|
+
UnAuthorizedAccountError,
|
|
13
|
+
RpcConnectionError
|
|
14
|
+
} from './utils/errors'
|
|
15
|
+
import Node from './Node'
|
|
16
|
+
import BrowserConnection from './aepp-wallet-communication/connection/Browser'
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* RPC handler for AEPP side
|
|
20
|
+
* Contain functionality for wallet interaction and connect it to sdk
|
|
21
|
+
*/
|
|
22
|
+
export default class AeSdkAepp extends AeSdkBase {
|
|
23
|
+
name: string
|
|
24
|
+
onAddressChange: (a: Accounts) => void
|
|
25
|
+
onDisconnect: (p: any) => void
|
|
26
|
+
onNetworkChange: (a: Network) => void
|
|
27
|
+
rpcClient?: RpcClient<WalletApi, AeppApi>
|
|
28
|
+
_accounts?: Accounts
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @param options - Options
|
|
32
|
+
* @param options.name - Aepp name
|
|
33
|
+
* @param options.onAddressChange - Call-back function for update address event
|
|
34
|
+
* @param options.onDisconnect - Call-back function for disconnect event
|
|
35
|
+
* @param options.onNetworkChange - Call-back function for update network event
|
|
36
|
+
*/
|
|
37
|
+
constructor ({
|
|
38
|
+
name,
|
|
39
|
+
onAddressChange = () => {},
|
|
40
|
+
onDisconnect = () => {},
|
|
41
|
+
onNetworkChange = () => {},
|
|
42
|
+
...other
|
|
43
|
+
}: {
|
|
44
|
+
name: string
|
|
45
|
+
onAddressChange: (a: Accounts) => void
|
|
46
|
+
onDisconnect: (p: any) => void
|
|
47
|
+
onNetworkChange: (a: Network) => void
|
|
48
|
+
} & ConstructorParameters<typeof AeSdkBase>[0]) {
|
|
49
|
+
super(other)
|
|
50
|
+
this.onAddressChange = onAddressChange
|
|
51
|
+
this.onDisconnect = onDisconnect
|
|
52
|
+
this.onNetworkChange = onNetworkChange
|
|
53
|
+
this.name = name
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
_resolveAccount (account: Account = this.addresses()[0]): AccountBase {
|
|
57
|
+
if (typeof account === 'string') {
|
|
58
|
+
const address = account as EncodedData<'ak'>
|
|
59
|
+
decode(address)
|
|
60
|
+
if (!this.addresses().includes(address)) throw new UnAuthorizedAccountError(address)
|
|
61
|
+
account = new AccountRpc({ rpcClient: this.rpcClient, address })
|
|
62
|
+
}
|
|
63
|
+
if (account == null) this._ensureAccountAccess()
|
|
64
|
+
return super._resolveAccount(account)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
addresses (): Array<EncodedData<'ak'>> {
|
|
68
|
+
if (this._accounts == null) return []
|
|
69
|
+
const current = Object.keys(this._accounts.current)[0]
|
|
70
|
+
return [
|
|
71
|
+
...current != null ? [current] : [], ...Object.keys(this._accounts.connected)
|
|
72
|
+
] as Array<EncodedData<'ak'>>
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Connect to wallet
|
|
77
|
+
* @param connection - Wallet connection object
|
|
78
|
+
* @param options - Options
|
|
79
|
+
* @param options.connectNode - Request wallet to bind node
|
|
80
|
+
* @param options.name - Node name
|
|
81
|
+
* @param options.select - Select this node as current
|
|
82
|
+
*/
|
|
83
|
+
async connectToWallet (
|
|
84
|
+
connection: BrowserConnection,
|
|
85
|
+
{ connectNode = false, name = 'wallet-node', select = false }:
|
|
86
|
+
{ connectNode?: boolean, name?: string, select?: boolean } = {}
|
|
87
|
+
): Promise<WalletInfo> {
|
|
88
|
+
if (this.rpcClient != null) throw new AlreadyConnectedError('You are already connected to wallet')
|
|
89
|
+
let disconnectParams: any
|
|
90
|
+
const client = new RpcClient<WalletApi, AeppApi>(
|
|
91
|
+
connection,
|
|
92
|
+
() => {
|
|
93
|
+
delete this.rpcClient
|
|
94
|
+
delete this._accounts
|
|
95
|
+
this.onDisconnect(disconnectParams)
|
|
96
|
+
}, {
|
|
97
|
+
[METHODS.updateAddress]: (params) => {
|
|
98
|
+
this._accounts = params
|
|
99
|
+
this.onAddressChange(params)
|
|
100
|
+
},
|
|
101
|
+
[METHODS.updateNetwork]: (params) => {
|
|
102
|
+
const { node } = params
|
|
103
|
+
if (node != null) this.addNode(node.name, new Node(node.url), true)
|
|
104
|
+
this.onNetworkChange(params)
|
|
105
|
+
},
|
|
106
|
+
[METHODS.closeConnection]: (params) => {
|
|
107
|
+
disconnectParams = params
|
|
108
|
+
client.connection.disconnect()
|
|
109
|
+
},
|
|
110
|
+
[METHODS.readyToConnect]: () => {}
|
|
111
|
+
}
|
|
112
|
+
)
|
|
113
|
+
const { node, ...walletInfo } = await client.request(
|
|
114
|
+
METHODS.connect, { name: this.name, version: RPC_VERSION, connectNode }
|
|
115
|
+
)
|
|
116
|
+
if (connectNode) {
|
|
117
|
+
if (node == null) throw new RpcConnectionError('Missing URLs of the Node')
|
|
118
|
+
this.addNode(name, new Node(node.url), select)
|
|
119
|
+
}
|
|
120
|
+
this.rpcClient = client
|
|
121
|
+
return walletInfo
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Disconnect from wallet
|
|
126
|
+
*/
|
|
127
|
+
disconnectWallet (): void {
|
|
128
|
+
this._ensureConnected()
|
|
129
|
+
this.rpcClient.notify(METHODS.closeConnection, { reason: 'bye' })
|
|
130
|
+
this.rpcClient.connection.disconnect()
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Ask addresses from wallet
|
|
135
|
+
* @returns Addresses from wallet
|
|
136
|
+
*/
|
|
137
|
+
async askAddresses (): Promise<Array<EncodedData<'ak'>>> {
|
|
138
|
+
this._ensureAccountAccess()
|
|
139
|
+
return await this.rpcClient.request(METHODS.address, undefined)
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Subscribe for addresses from wallet
|
|
144
|
+
* @param type - Subscription type
|
|
145
|
+
* @param value - Should be one of 'current' (the selected account), 'connected' (all)
|
|
146
|
+
* @returns Accounts from wallet
|
|
147
|
+
*/
|
|
148
|
+
async subscribeAddress (
|
|
149
|
+
type: SUBSCRIPTION_TYPES, value: 'current' | 'connected'
|
|
150
|
+
): Promise<ReturnType<WalletApi[METHODS.subscribeAddress]>> {
|
|
151
|
+
this._ensureConnected()
|
|
152
|
+
const result = await this.rpcClient.request(METHODS.subscribeAddress, { type, value })
|
|
153
|
+
this._accounts = result.address
|
|
154
|
+
return result
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
_ensureConnected (): asserts this is AeSdkAepp & { rpcClient: NonNullable<AeSdkAepp['rpcClient']> } {
|
|
158
|
+
if (this.rpcClient != null) return
|
|
159
|
+
throw new NoWalletConnectedError('You are not connected to Wallet')
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
_ensureAccountAccess (): asserts this is AeSdkAepp & { rpcClient: NonNullable<AeSdkAepp['rpcClient']> } {
|
|
163
|
+
this._ensureConnected()
|
|
164
|
+
if (this.addresses().length !== 0) return
|
|
165
|
+
throw new UnsubscribedAccountError()
|
|
166
|
+
}
|
|
167
|
+
}
|
package/src/AeSdkBase.ts
ADDED
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import * as chainMethods from './chain'
|
|
2
|
+
import * as txMethods from './tx'
|
|
3
|
+
import * as aensMethods from './aens'
|
|
4
|
+
import * as spendMethods from './spend'
|
|
5
|
+
import * as oracleMethods from './oracle'
|
|
6
|
+
import * as contractMethods from './contract/methods'
|
|
7
|
+
import * as contractGaMethods from './contract/ga'
|
|
8
|
+
import { _buildTx } from './tx'
|
|
9
|
+
import { mapObject } from './utils/other'
|
|
10
|
+
import Node, { getNetworkId } from './Node'
|
|
11
|
+
import { AE_AMOUNT_FORMATS } from './utils/amount-formatter'
|
|
12
|
+
import { AMOUNT, TX_TYPE } from './tx/builder/schema'
|
|
13
|
+
import MemoryAccount, { Keypair } from './account/Memory'
|
|
14
|
+
import AccountBase, { isAccountBase } from './account/Base'
|
|
15
|
+
import {
|
|
16
|
+
CompilerError,
|
|
17
|
+
DuplicateNodeError,
|
|
18
|
+
NodeNotFoundError,
|
|
19
|
+
NotImplementedError,
|
|
20
|
+
TypeError
|
|
21
|
+
} from './utils/errors'
|
|
22
|
+
import { EncodedData } from './utils/encoder'
|
|
23
|
+
import Compiler from './contract/Compiler'
|
|
24
|
+
|
|
25
|
+
export type Account = Keypair | AccountBase | any
|
|
26
|
+
|
|
27
|
+
type NodeInfo = Awaited<ReturnType<Node['getNodeInfo']>> & { name: string }
|
|
28
|
+
|
|
29
|
+
function getValueOrErrorProxy<Value extends object> (valueCb: () => Value): Value {
|
|
30
|
+
try {
|
|
31
|
+
return valueCb()
|
|
32
|
+
} catch (error) {
|
|
33
|
+
return new Proxy(
|
|
34
|
+
{},
|
|
35
|
+
Object.fromEntries(['get', 'set', 'has'].map(name => [name, () => { throw error }]))
|
|
36
|
+
) as Value
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Basic AeSdk class
|
|
42
|
+
*
|
|
43
|
+
* AeSdkBase objects are the composition of:
|
|
44
|
+
* - chain methods
|
|
45
|
+
* - tx methods
|
|
46
|
+
* - aens methods
|
|
47
|
+
* - spend methods
|
|
48
|
+
* - oracle methods
|
|
49
|
+
* - contract methods
|
|
50
|
+
* - contract ga methods
|
|
51
|
+
* Only by providing the joint functionality of them, most more advanced
|
|
52
|
+
* operations, i.e. the ones with actual use value on the chain, become
|
|
53
|
+
* available.
|
|
54
|
+
*/
|
|
55
|
+
class AeSdkBase {
|
|
56
|
+
_options: {
|
|
57
|
+
denomination: AE_AMOUNT_FORMATS
|
|
58
|
+
amount: number
|
|
59
|
+
[key: string]: any
|
|
60
|
+
} = { denomination: AE_AMOUNT_FORMATS.AETTOS, amount: AMOUNT }
|
|
61
|
+
|
|
62
|
+
pool: Map<string, Node> = new Map()
|
|
63
|
+
selectedNodeName?: string
|
|
64
|
+
compilerApi: Compiler
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @param options - Options
|
|
68
|
+
* @param options.nodes - Array of nodes
|
|
69
|
+
* @param options.compilerUrl - Url for compiler API
|
|
70
|
+
* @param options.ignoreVersion - Don't check node or compiler version
|
|
71
|
+
*/
|
|
72
|
+
constructor (
|
|
73
|
+
{ nodes = [], compilerUrl, ignoreVersion = false, ...options }:
|
|
74
|
+
{
|
|
75
|
+
nodes?: Array<{ name: string, instance: Node }>
|
|
76
|
+
compilerUrl?: string
|
|
77
|
+
ignoreVersion?: boolean
|
|
78
|
+
[key: string]: any // TODO: consider combining all possible options instead
|
|
79
|
+
} = {}
|
|
80
|
+
) {
|
|
81
|
+
Object.assign(this._options, options)
|
|
82
|
+
|
|
83
|
+
nodes.forEach(({ name, instance }, i) => this.addNode(name, instance, i === 0))
|
|
84
|
+
|
|
85
|
+
if (compilerUrl == null) {
|
|
86
|
+
this.compilerApi = getValueOrErrorProxy(() => {
|
|
87
|
+
throw new CompilerError('You can\'t use Compiler API. Compiler is not ready!')
|
|
88
|
+
})
|
|
89
|
+
} else this.setCompilerUrl(compilerUrl, { ignoreVersion })
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
setCompilerUrl (
|
|
93
|
+
compilerUrl: string, { ignoreVersion = false }: { ignoreVersion?: boolean } = {}
|
|
94
|
+
): void {
|
|
95
|
+
this.compilerApi = new Compiler(compilerUrl, { ignoreVersion })
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
get api (): Node {
|
|
99
|
+
this.ensureNodeConnected()
|
|
100
|
+
return this.pool.get(this.selectedNodeName) as Node
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Add Node
|
|
105
|
+
* @param name - Node name
|
|
106
|
+
* @param node - Node instance
|
|
107
|
+
* @param select - Select this node as current
|
|
108
|
+
* @example
|
|
109
|
+
* ```js
|
|
110
|
+
* // add and select new node with name 'testNode'
|
|
111
|
+
* aeSdkBase.addNode('testNode', new Node({ url }), true)
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
addNode (name: string, node: Node, select = false): void {
|
|
115
|
+
if (this.pool.has(name)) throw new DuplicateNodeError(name)
|
|
116
|
+
|
|
117
|
+
this.pool.set(name, node)
|
|
118
|
+
if (select || this.selectedNodeName == null) {
|
|
119
|
+
this.selectNode(name)
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Select Node
|
|
125
|
+
* @param name - Node name
|
|
126
|
+
* @example
|
|
127
|
+
* nodePool.selectNode('testNode')
|
|
128
|
+
*/
|
|
129
|
+
selectNode (name: string): void {
|
|
130
|
+
if (!this.pool.has(name)) throw new NodeNotFoundError(`Node with name ${name} not in pool`)
|
|
131
|
+
this.selectedNodeName = name
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Get NetworkId of current Node
|
|
136
|
+
* @example
|
|
137
|
+
* nodePool.getNetworkId()
|
|
138
|
+
*/
|
|
139
|
+
readonly getNetworkId = getNetworkId
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Check if you have selected node
|
|
143
|
+
* @example
|
|
144
|
+
* nodePool.isNodeConnected()
|
|
145
|
+
*/
|
|
146
|
+
isNodeConnected (): this is AeSdkBase & { selectedNodeName: string } {
|
|
147
|
+
return this.selectedNodeName != null
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
protected ensureNodeConnected (): asserts this is AeSdkBase & { selectedNodeName: string } {
|
|
151
|
+
if (!this.isNodeConnected()) {
|
|
152
|
+
throw new NodeNotFoundError('You can\'t use Node API. Node is not connected or not defined!')
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Get information about node
|
|
158
|
+
* @example
|
|
159
|
+
* ```js
|
|
160
|
+
* nodePool.getNodeInfo() // { name, version, networkId, protocol, ... }
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
async getNodeInfo (): Promise<NodeInfo> {
|
|
164
|
+
this.ensureNodeConnected()
|
|
165
|
+
return {
|
|
166
|
+
name: this.selectedNodeName,
|
|
167
|
+
...await this.api.getNodeInfo()
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Get array of available nodes
|
|
173
|
+
* @example
|
|
174
|
+
* nodePool.getNodesInPool()
|
|
175
|
+
*/
|
|
176
|
+
async getNodesInPool (): Promise<NodeInfo[]> {
|
|
177
|
+
return await Promise.all(
|
|
178
|
+
Array.from(this.pool.entries()).map(async ([name, node]) => ({
|
|
179
|
+
name,
|
|
180
|
+
...await node.getNodeInfo()
|
|
181
|
+
}))
|
|
182
|
+
)
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
addresses (): Array<EncodedData<'ak'>> {
|
|
186
|
+
return []
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
async address ({ onAccount }: { onAccount?: Account } = {}): Promise<EncodedData<'ak'>> {
|
|
190
|
+
return await this._resolveAccount(onAccount).address()
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
async sign (
|
|
194
|
+
data: string | Uint8Array, { onAccount, ...options }: { onAccount?: Account } = {}
|
|
195
|
+
): Promise<Uint8Array> {
|
|
196
|
+
return await this._resolveAccount(onAccount).sign(data, options)
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
async signTransaction (
|
|
200
|
+
tx: EncodedData<'tx'>,
|
|
201
|
+
{ onAccount, ...options }: { onAccount?: Account } & Parameters<AccountBase['signTransaction']>[1] = {}
|
|
202
|
+
): Promise<EncodedData<'tx'>> {
|
|
203
|
+
return await this._resolveAccount(onAccount)
|
|
204
|
+
.signTransaction(tx, { ...options, networkId: await this.getNetworkId(options) })
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
async signMessage (
|
|
208
|
+
message: string,
|
|
209
|
+
{ onAccount, ...options }: { onAccount?: Account } & Parameters<AccountBase['signMessage']>[1] = {}
|
|
210
|
+
): Promise<string | Uint8Array> {
|
|
211
|
+
return await this._resolveAccount(onAccount).signMessage(message, options)
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
async verifyMessage (
|
|
215
|
+
message: string,
|
|
216
|
+
signature: string | Uint8Array,
|
|
217
|
+
{ onAccount, ...options }: { onAccount?: Account } & Parameters<AccountBase['verifyMessage']>[2] = {}
|
|
218
|
+
): Promise<boolean> {
|
|
219
|
+
return await this._resolveAccount(onAccount).verifyMessage(message, signature, options)
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Resolves an account
|
|
224
|
+
* @param account - ak-address, instance of AccountBase, or keypair
|
|
225
|
+
*/
|
|
226
|
+
_resolveAccount (account?: Account): AccountBase {
|
|
227
|
+
switch (account !== null && typeof account) {
|
|
228
|
+
case 'string':
|
|
229
|
+
throw new NotImplementedError('Address in AccountResolver')
|
|
230
|
+
case 'object':
|
|
231
|
+
return isAccountBase(account) ? account : new MemoryAccount({ keypair: account })
|
|
232
|
+
default:
|
|
233
|
+
throw new TypeError(
|
|
234
|
+
'Account should be an address (ak-prefixed string), ' +
|
|
235
|
+
`keypair, or instance of AccountBase, got ${String(account)} instead`)
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
async _getOptions (
|
|
240
|
+
): Promise<{ onNode: Node, onAccount: AccountBase, onCompiler: Compiler, networkId: string }> {
|
|
241
|
+
return {
|
|
242
|
+
...this._options,
|
|
243
|
+
onNode: getValueOrErrorProxy(() => this.api),
|
|
244
|
+
onAccount: getValueOrErrorProxy(() => this._resolveAccount()),
|
|
245
|
+
onCompiler: getValueOrErrorProxy(() => this.compilerApi),
|
|
246
|
+
// TODO: remove networkId
|
|
247
|
+
networkId: (await this.api?.getStatus()).networkId
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
async buildTx<TxType extends TX_TYPE> (
|
|
252
|
+
txType: TxType,
|
|
253
|
+
options: Omit<Parameters<typeof _buildTx<TxType>>[1], 'onNode'> & { onNode?: Node }
|
|
254
|
+
): Promise<EncodedData<'tx'>> {
|
|
255
|
+
// @ts-expect-error
|
|
256
|
+
return await _buildTx<TxType>(txType, {
|
|
257
|
+
...await this._getOptions(),
|
|
258
|
+
...options
|
|
259
|
+
})
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
const { _buildTx: _, ...txMethodsOther } = txMethods
|
|
264
|
+
|
|
265
|
+
const methods = {
|
|
266
|
+
...chainMethods,
|
|
267
|
+
...txMethodsOther,
|
|
268
|
+
...aensMethods,
|
|
269
|
+
...spendMethods,
|
|
270
|
+
...oracleMethods,
|
|
271
|
+
...contractMethods,
|
|
272
|
+
...contractGaMethods
|
|
273
|
+
} as const
|
|
274
|
+
|
|
275
|
+
type RequiredKeys<T> = {
|
|
276
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? never : K
|
|
277
|
+
}[keyof T]
|
|
278
|
+
|
|
279
|
+
type OptionalIfNotRequired<T extends [any]> = RequiredKeys<T[0]> extends never ? T | [] : T
|
|
280
|
+
|
|
281
|
+
type MakeOptional<Args extends any[]> = Args extends [infer Head, ...infer Tail]
|
|
282
|
+
? Tail extends []
|
|
283
|
+
? Head extends object
|
|
284
|
+
? OptionalIfNotRequired<[Omit<Head, 'onNode' | 'onCompiler' | 'onAccount'>
|
|
285
|
+
& { onNode?: Node, onCompiler?: Compiler, onAccount?: AccountBase | EncodedData<'ak'> | Keypair }]>
|
|
286
|
+
: [Head]
|
|
287
|
+
: [Head, ...MakeOptional<Tail>]
|
|
288
|
+
: never
|
|
289
|
+
|
|
290
|
+
type TransformMethods <Methods extends { [key: string]: Function }> =
|
|
291
|
+
{
|
|
292
|
+
[Name in keyof Methods]:
|
|
293
|
+
Methods[Name] extends (...args: infer Args) => infer Ret
|
|
294
|
+
? (...args: MakeOptional<Args>) => Ret
|
|
295
|
+
: never
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
interface AeSdkBaseMethods extends TransformMethods<typeof methods> {}
|
|
299
|
+
|
|
300
|
+
Object.assign(AeSdkBase.prototype, mapObject<Function, Function>(
|
|
301
|
+
methods,
|
|
302
|
+
([name, handler]) => [
|
|
303
|
+
name,
|
|
304
|
+
async function (...args: any[]) {
|
|
305
|
+
const instanceOptions = await this._getOptions()
|
|
306
|
+
const lastArg = args[args.length - 1]
|
|
307
|
+
if (lastArg != null && typeof lastArg === 'object' && lastArg.constructor === Object) {
|
|
308
|
+
Object.assign(lastArg, {
|
|
309
|
+
...instanceOptions,
|
|
310
|
+
...lastArg,
|
|
311
|
+
...lastArg.onAccount != null && { onAccount: this._resolveAccount(lastArg.onAccount) }
|
|
312
|
+
})
|
|
313
|
+
} else args.push(instanceOptions)
|
|
314
|
+
return handler(...args)
|
|
315
|
+
}
|
|
316
|
+
]
|
|
317
|
+
))
|
|
318
|
+
|
|
319
|
+
export default AeSdkBase as new (options: ConstructorParameters<typeof AeSdkBase>[0]) =>
|
|
320
|
+
AeSdkBase & AeSdkBaseMethods
|