@aeternity/aepp-sdk 12.0.0 → 12.1.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.
Files changed (283) hide show
  1. package/dist/aepp-sdk.browser-script.js +1 -1
  2. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -15
  3. package/dist/aepp-sdk.browser-script.js.map +1 -1
  4. package/dist/aepp-sdk.browser.js +2 -1
  5. package/dist/aepp-sdk.browser.js.LICENSE.txt +1 -0
  6. package/dist/aepp-sdk.browser.js.map +1 -1
  7. package/dist/aepp-sdk.js +20764 -1
  8. package/dist/aepp-sdk.js.map +1 -1
  9. package/es/AeSdk.d.ts +7 -7
  10. package/es/AeSdk.mjs.map +1 -1
  11. package/es/AeSdkAepp.d.ts +4 -3
  12. package/es/AeSdkAepp.mjs +2 -1
  13. package/es/AeSdkAepp.mjs.map +1 -1
  14. package/es/AeSdkBase.d.ts +22 -21
  15. package/es/AeSdkBase.mjs +25 -21
  16. package/es/AeSdkBase.mjs.map +1 -1
  17. package/es/AeSdkWallet.d.ts +4 -3
  18. package/es/AeSdkWallet.mjs +5 -1
  19. package/es/AeSdkWallet.mjs.map +1 -1
  20. package/es/Node.d.ts +7 -10
  21. package/es/Node.mjs +63 -57
  22. package/es/Node.mjs.map +1 -1
  23. package/es/account/Base.d.ts +7 -4
  24. package/es/account/Base.mjs +3 -3
  25. package/es/account/Base.mjs.map +1 -1
  26. package/es/account/Memory.d.ts +5 -4
  27. package/es/account/Memory.mjs +24 -2
  28. package/es/account/Memory.mjs.map +1 -1
  29. package/es/account/Rpc.d.ts +6 -6
  30. package/es/account/Rpc.mjs +3 -2
  31. package/es/account/Rpc.mjs.map +1 -1
  32. package/es/aens.d.ts +27 -14
  33. package/es/aens.mjs +27 -21
  34. package/es/aens.mjs.map +1 -1
  35. package/es/aepp-wallet-communication/connection/Browser.d.ts +2 -1
  36. package/es/aepp-wallet-communication/connection/Browser.mjs +5 -2
  37. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -1
  38. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +1 -0
  39. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +1 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
  41. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +1 -0
  42. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +5 -1
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
  44. package/es/aepp-wallet-communication/connection-proxy.d.ts +1 -0
  45. package/es/aepp-wallet-communication/connection-proxy.mjs +1 -0
  46. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -1
  47. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +1 -0
  48. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +5 -5
  49. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
  50. package/es/aepp-wallet-communication/rpc/types.d.ts +8 -8
  51. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
  52. package/es/aepp-wallet-communication/schema.d.ts +17 -2
  53. package/es/aepp-wallet-communication/schema.mjs +54 -17
  54. package/es/aepp-wallet-communication/schema.mjs.map +1 -1
  55. package/es/aepp-wallet-communication/wallet-detector.d.ts +2 -1
  56. package/es/aepp-wallet-communication/wallet-detector.mjs +2 -3
  57. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
  58. package/es/apis/node/models/index.d.ts +6 -2
  59. package/es/apis/node/models/index.mjs.map +1 -1
  60. package/es/apis/node/models/mappers.mjs +4 -2
  61. package/es/apis/node/models/mappers.mjs.map +1 -1
  62. package/es/chain.d.ts +92 -64
  63. package/es/chain.mjs +190 -154
  64. package/es/chain.mjs.map +1 -1
  65. package/es/channel/handlers.d.ts +3 -3
  66. package/es/channel/handlers.mjs +42 -44
  67. package/es/channel/handlers.mjs.map +1 -1
  68. package/es/channel/index.d.ts +43 -52
  69. package/es/channel/index.mjs +46 -49
  70. package/es/channel/index.mjs.map +1 -1
  71. package/es/channel/internal.d.ts +16 -15
  72. package/es/channel/internal.mjs +67 -62
  73. package/es/channel/internal.mjs.map +1 -1
  74. package/es/contract/Compiler.d.ts +1 -0
  75. package/es/contract/Compiler.mjs +5 -4
  76. package/es/contract/Compiler.mjs.map +1 -1
  77. package/es/contract/aci.d.ts +17 -15
  78. package/es/contract/aci.mjs +58 -45
  79. package/es/contract/aci.mjs.map +1 -1
  80. package/es/contract/ga.d.ts +16 -15
  81. package/es/contract/ga.mjs +12 -7
  82. package/es/contract/ga.mjs.map +1 -1
  83. package/es/contract/methods.d.ts +9 -6
  84. package/es/contract/methods.mjs +9 -6
  85. package/es/contract/methods.mjs.map +1 -1
  86. package/es/deprecated/index.d.ts +143 -0
  87. package/es/deprecated/index.mjs +162 -0
  88. package/es/deprecated/index.mjs.map +1 -0
  89. package/es/deprecated/methods.d.ts +18 -0
  90. package/es/deprecated/methods.mjs +26 -0
  91. package/es/deprecated/methods.mjs.map +1 -0
  92. package/es/index.d.ts +4 -1
  93. package/es/index.mjs +4 -1
  94. package/es/index.mjs.map +1 -1
  95. package/es/oracle.d.ts +69 -62
  96. package/es/oracle.mjs +121 -103
  97. package/es/oracle.mjs.map +1 -1
  98. package/es/spend.d.ts +16 -15
  99. package/es/spend.mjs +19 -30
  100. package/es/spend.mjs.map +1 -1
  101. package/es/tx/builder/address.d.ts +25 -0
  102. package/es/tx/builder/address.mjs +45 -0
  103. package/es/tx/builder/address.mjs.map +1 -0
  104. package/es/tx/builder/constants.d.ts +55 -26
  105. package/es/tx/builder/constants.mjs +60 -38
  106. package/es/tx/builder/constants.mjs.map +1 -1
  107. package/es/tx/builder/field-types/coin-amount.d.ts +13 -0
  108. package/es/tx/builder/field-types/coin-amount.mjs +26 -0
  109. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -0
  110. package/es/tx/builder/field-types/deposit.d.ts +15 -0
  111. package/es/tx/builder/field-types/deposit.mjs +19 -0
  112. package/es/tx/builder/field-types/deposit.mjs.map +1 -0
  113. package/es/tx/builder/field-types/fee.d.ts +25 -0
  114. package/es/tx/{min-fee.mjs → builder/field-types/fee.mjs} +62 -60
  115. package/es/tx/builder/field-types/fee.mjs.map +1 -0
  116. package/es/tx/builder/field-types/field.d.ts +6 -0
  117. package/es/tx/builder/field-types/field.mjs +15 -0
  118. package/es/tx/builder/field-types/field.mjs.map +1 -0
  119. package/es/tx/builder/field-types/gas-limit.d.ts +12 -0
  120. package/es/tx/builder/field-types/gas-limit.mjs +33 -0
  121. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -0
  122. package/es/tx/builder/field-types/gas-price.d.ts +8 -0
  123. package/es/tx/builder/field-types/gas-price.mjs +18 -0
  124. package/es/tx/builder/field-types/gas-price.mjs.map +1 -0
  125. package/es/tx/builder/field-types/index.d.ts +70 -0
  126. package/es/tx/builder/field-types/index.mjs +25 -0
  127. package/es/tx/builder/field-types/index.mjs.map +1 -0
  128. package/es/tx/builder/field-types/name-fee.d.ts +20 -0
  129. package/es/tx/builder/field-types/name-fee.mjs +24 -0
  130. package/es/tx/builder/field-types/name-fee.mjs.map +1 -0
  131. package/es/tx/builder/field-types/name-id.d.ts +14 -0
  132. package/es/tx/builder/field-types/name-id.mjs +19 -0
  133. package/es/tx/builder/field-types/name-id.mjs.map +1 -0
  134. package/es/tx/builder/field-types/name.d.ts +13 -0
  135. package/es/tx/builder/field-types/name.mjs +18 -0
  136. package/es/tx/builder/field-types/name.mjs.map +1 -0
  137. package/es/tx/builder/field-types/short-u-int.d.ts +6 -0
  138. package/es/tx/builder/field-types/short-u-int.mjs +12 -0
  139. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -0
  140. package/es/tx/builder/field-types/u-int.d.ts +8 -0
  141. package/es/tx/builder/field-types/u-int.mjs +14 -0
  142. package/es/tx/builder/field-types/u-int.mjs.map +1 -0
  143. package/es/tx/builder/helpers.d.ts +27 -33
  144. package/es/tx/builder/helpers.mjs +41 -47
  145. package/es/tx/builder/helpers.mjs.map +1 -1
  146. package/es/tx/builder/index.d.ts +25 -12
  147. package/es/tx/builder/index.mjs +74 -83
  148. package/es/tx/builder/index.mjs.map +1 -1
  149. package/es/tx/builder/schema.d.ts +995 -144
  150. package/es/tx/builder/schema.mjs +121 -170
  151. package/es/tx/builder/schema.mjs.map +1 -1
  152. package/es/tx/index.d.ts +28 -27
  153. package/es/tx/index.mjs +97 -117
  154. package/es/tx/index.mjs.map +1 -1
  155. package/es/tx/validator.d.ts +4 -3
  156. package/es/tx/validator.mjs +79 -92
  157. package/es/tx/validator.mjs.map +1 -1
  158. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -1
  159. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -1
  160. package/es/typings/bip32-path/index.d.mjs.map +1 -1
  161. package/es/typings/blakejs/index.d.mjs.map +1 -1
  162. package/es/typings/sha-js/index.d.mjs +2 -0
  163. package/es/typings/sha-js/index.d.mjs.map +1 -0
  164. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -1
  165. package/es/utils/amount-formatter.d.ts +9 -9
  166. package/es/utils/amount-formatter.mjs +17 -17
  167. package/es/utils/amount-formatter.mjs.map +1 -1
  168. package/es/utils/autorest.mjs +7 -7
  169. package/es/utils/autorest.mjs.map +1 -1
  170. package/es/utils/bignumber.mjs +2 -1
  171. package/es/utils/bignumber.mjs.map +1 -1
  172. package/es/utils/bytes.mjs +1 -1
  173. package/es/utils/bytes.mjs.map +1 -1
  174. package/es/utils/crypto.d.ts +8 -23
  175. package/es/utils/crypto.mjs +15 -41
  176. package/es/utils/crypto.mjs.map +1 -1
  177. package/es/utils/encoder-types.d.ts +61 -0
  178. package/es/utils/encoder-types.mjs +36 -0
  179. package/es/utils/encoder-types.mjs.map +1 -0
  180. package/es/utils/encoder.d.ts +6 -7
  181. package/es/utils/encoder.mjs +42 -26
  182. package/es/utils/encoder.mjs.map +1 -1
  183. package/es/utils/errors.d.ts +1 -11
  184. package/es/utils/errors.mjs +4 -20
  185. package/es/utils/errors.mjs.map +1 -1
  186. package/es/utils/hd-wallet.d.ts +18 -2
  187. package/es/utils/hd-wallet.mjs +64 -34
  188. package/es/utils/hd-wallet.mjs.map +1 -1
  189. package/es/utils/json-big.mjs +2 -2
  190. package/es/utils/json-big.mjs.map +1 -1
  191. package/es/utils/keystore.mjs +4 -2
  192. package/es/utils/keystore.mjs.map +1 -1
  193. package/es/utils/mptree.d.ts +2 -2
  194. package/es/utils/mptree.mjs +11 -6
  195. package/es/utils/mptree.mjs.map +1 -1
  196. package/es/utils/other.d.ts +8 -2
  197. package/es/utils/other.mjs +15 -3
  198. package/es/utils/other.mjs.map +1 -1
  199. package/es/utils/semver-satisfies.d.ts +1 -1
  200. package/es/utils/semver-satisfies.mjs +2 -2
  201. package/es/utils/semver-satisfies.mjs.map +1 -1
  202. package/es/utils/string.mjs.map +1 -1
  203. package/package.json +35 -33
  204. package/src/AeSdk.ts +30 -27
  205. package/src/AeSdkAepp.ts +93 -84
  206. package/src/AeSdkBase.ts +148 -130
  207. package/src/AeSdkWallet.ts +172 -156
  208. package/src/Node.ts +108 -102
  209. package/src/account/Base.ts +42 -32
  210. package/src/account/Memory.ts +45 -30
  211. package/src/account/Rpc.ts +32 -30
  212. package/src/aens.ts +124 -108
  213. package/src/aepp-wallet-communication/connection/Browser.ts +18 -15
  214. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +22 -21
  215. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +63 -52
  216. package/src/aepp-wallet-communication/connection-proxy.ts +8 -7
  217. package/src/aepp-wallet-communication/rpc/RpcClient.ts +67 -61
  218. package/src/aepp-wallet-communication/rpc/types.ts +32 -32
  219. package/src/aepp-wallet-communication/schema.ts +117 -74
  220. package/src/aepp-wallet-communication/wallet-detector.ts +29 -28
  221. package/src/apis/node/code-model-v4.yaml +54 -20
  222. package/src/apis/node/models/index.ts +6 -2
  223. package/src/apis/node/models/mappers.ts +4 -2
  224. package/src/chain.ts +286 -228
  225. package/src/channel/handlers.ts +424 -372
  226. package/src/channel/index.ts +285 -251
  227. package/src/channel/internal.ts +248 -232
  228. package/src/contract/Compiler.ts +22 -21
  229. package/src/contract/aci.ts +267 -258
  230. package/src/contract/ga.ts +93 -72
  231. package/src/contract/methods.ts +32 -27
  232. package/src/deprecated/index.ts +170 -0
  233. package/src/deprecated/methods.ts +25 -0
  234. package/src/index.ts +37 -32
  235. package/src/oracle.ts +211 -189
  236. package/src/spend.ts +82 -70
  237. package/src/tx/builder/address.ts +50 -0
  238. package/src/tx/builder/constants.ts +82 -52
  239. package/src/tx/builder/field-types/coin-amount.ts +27 -0
  240. package/src/tx/builder/field-types/deposit.ts +21 -0
  241. package/src/tx/builder/field-types/fee.ts +143 -0
  242. package/src/tx/builder/field-types/field.ts +9 -0
  243. package/src/tx/builder/field-types/gas-limit.ts +41 -0
  244. package/src/tx/builder/field-types/gas-price.ts +16 -0
  245. package/src/tx/builder/field-types/index.ts +45 -0
  246. package/src/tx/builder/field-types/name-fee.ts +32 -0
  247. package/src/tx/builder/field-types/name-id.ts +20 -0
  248. package/src/tx/builder/field-types/name.ts +18 -0
  249. package/src/tx/builder/field-types/short-u-int.ts +11 -0
  250. package/src/tx/builder/field-types/u-int.ts +16 -0
  251. package/src/tx/builder/helpers.ts +112 -117
  252. package/src/tx/builder/index.ts +203 -197
  253. package/src/tx/builder/schema.ts +421 -465
  254. package/src/tx/index.ts +128 -135
  255. package/src/tx/validator.ts +165 -161
  256. package/src/typings/@aeternity__argon2-browser/index.d.ts +1 -1
  257. package/src/typings/@aeternity__uuid/index.d.ts +3 -1
  258. package/src/typings/bip32-path/index.d.ts +6 -6
  259. package/src/typings/blakejs/index.d.ts +4 -32
  260. package/src/typings/sha-js/index.d.ts +5 -0
  261. package/src/typings/tweetnacl-auth/index.d.ts +2 -2
  262. package/src/utils/amount-formatter.ts +41 -41
  263. package/src/utils/autorest.ts +57 -54
  264. package/src/utils/bignumber.ts +7 -6
  265. package/src/utils/bytes.ts +19 -19
  266. package/src/utils/crypto.ts +82 -94
  267. package/src/utils/encoder-types.ts +63 -0
  268. package/src/utils/encoder.ts +104 -56
  269. package/src/utils/errors.ts +246 -264
  270. package/src/utils/hd-wallet.ts +114 -82
  271. package/src/utils/json-big.ts +16 -15
  272. package/src/utils/keystore.ts +65 -62
  273. package/src/utils/mptree.ts +59 -56
  274. package/src/utils/other.ts +26 -18
  275. package/src/utils/semver-satisfies.ts +15 -11
  276. package/src/utils/string.ts +10 -10
  277. package/es/tx/builder/field-types.d.ts +0 -62
  278. package/es/tx/builder/field-types.mjs +0 -126
  279. package/es/tx/builder/field-types.mjs.map +0 -1
  280. package/es/tx/min-fee.d.ts +0 -20
  281. package/es/tx/min-fee.mjs.map +0 -1
  282. package/src/tx/builder/field-types.ts +0 -111
  283. package/src/tx/min-fee.ts +0 -136
@@ -1 +1 @@
1
- {"version":3,"file":"AeSdkWallet.mjs","names":["v4","uuid","AeSdk","verifyTransaction","RpcClient","METHODS","RPC_STATUS","SUBSCRIPTION_TYPES","RpcBroadcastError","RpcInvalidTransactionError","RpcNotAuthorizeError","RpcPermissionDenyError","RpcUnsupportedProtocolError","UnknownRpcClientError","RPC_VERSION","jsonBig","AeSdkWallet","constructor","name","id","type","onConnection","onSubscription","onSign","onDisconnect","onAskAccounts","onMessageSign","options","_clients","Map","_type","_pushAccountsToApps","Array","from","keys","filter","clientId","_isRpcClientSubscribed","map","_getClient","rpc","forEach","client","notify","updateAddress","getAccounts","selectAccount","address","addAccount","account","_getNode","ensureNodeConnected","node","url","api","selectedNodeName","selectNode","networkId","getNetworkId","_isRpcClientConnected","updateNetwork","connectNode","get","addressSubscription","size","CONNECTED","status","connection","isConnected","_disconnectRpcClient","disconnect","DISCONNECTED","Set","removeRpcClient","delete","addRpcClient","clientConnection","disconnectParams","WAITING_FOR_CONNECTION_REQUEST","closeConnection","params","connect","origin","version","icons","getWalletInfo","subscribeAddress","value","subscribe","add","unsubscribe","subscription","addresses","sign","tx","onAccount","returnSigned","overrides","signedTransaction","signTransaction","parse","stringify","transactionHash","send","verify","error","validation","length","message","signMessage","signature","returnHex","set","shareWalletInfo","readyToConnect","window","location","current","selectedAddress","connected","a","reduce","acc"],"sources":["../src/AeSdkWallet.ts"],"sourcesContent":["import { v4 as uuid } from '@aeternity/uuid'\nimport AeSdk from './AeSdk'\nimport { Account } from './AeSdkBase'\nimport verifyTransaction from './tx/validator'\nimport RpcClient from './aepp-wallet-communication/rpc/RpcClient'\nimport {\n METHODS, RPC_STATUS, SUBSCRIPTION_TYPES, WALLET_TYPE,\n RpcBroadcastError, RpcInvalidTransactionError,\n RpcNotAuthorizeError, RpcPermissionDenyError, RpcUnsupportedProtocolError\n} from './aepp-wallet-communication/schema'\nimport { UnknownRpcClientError } from './utils/errors'\nimport AccountBase from './account/Base'\nimport BrowserConnection from './aepp-wallet-communication/connection/Browser'\nimport {\n Accounts,\n AeppApi,\n Network,\n RPC_VERSION,\n WalletApi,\n WalletInfo\n} from './aepp-wallet-communication/rpc/types'\nimport { EncodedData } from './utils/encoder'\nimport jsonBig from './utils/json-big'\n\ntype RpcClientWallet = RpcClient<AeppApi, WalletApi>\n\ntype OnConnection = (\n clientId: string, params: Omit<Parameters<WalletApi[METHODS.connect]>[0], 'version'>, origin: string\n) => void\n\ntype OnSubscription = (\n clientId: string, params: Parameters<WalletApi[METHODS.subscribeAddress]>[0], origin: string\n) => void\n\ntype OnSign = (\n clientId: string, params: Parameters<WalletApi[METHODS.sign]>[0], origin: string\n) => Promise<{ tx?: EncodedData<'tx'>, onAccount?: Account } | undefined> | Promise<void>\n\ntype OnDisconnect = (\n clientId: string, params: Parameters<WalletApi[METHODS.closeConnection]>[0]\n) => void\n\ntype OnAskAccounts = (\n clientId: string, params: undefined, origin: string\n) => void\n\ntype OnMessageSign = (\n clientId: string, params: Parameters<WalletApi[METHODS.signMessage]>[0], origin: string\n) => Promise<{ onAccount?: Account } | undefined> | Promise<void>\n\ninterface RpcClientsInfo {\n id: string\n status: RPC_STATUS\n connectNode: boolean\n addressSubscription: Set<'connected' | 'current'>\n rpc: RpcClientWallet\n}\n\n/**\n * Contain functionality for aepp interaction and managing multiple aepps\n */\nexport default class AeSdkWallet extends AeSdk {\n id: string\n _type: WALLET_TYPE\n name: string\n _clients: Map<string, RpcClientsInfo>\n onConnection: OnConnection\n onSubscription: OnSubscription\n onSign: OnSign\n onDisconnect: OnDisconnect\n onAskAccounts: OnAskAccounts\n onMessageSign: OnMessageSign\n\n /**\n * @param options - Options\n * @param options.name - Wallet name\n * @param options.id - Wallet id\n * @param options.type - Wallet type\n * @param options.onConnection - Call-back function for incoming AEPP connection\n * @param options.onSubscription - Call-back function for incoming AEPP account subscription\n * @param options.onSign - Call-back function for incoming AEPP sign request\n * @param options.onAskAccounts - Call-back function for incoming AEPP get address request\n * @param options.onMessageSign - Call-back function for incoming AEPP sign message request\n * @param options.onDisconnect - Call-back function for disconnect event\n */\n constructor ({\n name,\n id,\n type,\n onConnection,\n onSubscription,\n onSign,\n onDisconnect,\n onAskAccounts,\n onMessageSign,\n ...options\n }: {\n id: string\n type: WALLET_TYPE\n name: string\n onConnection: OnConnection\n onSubscription: OnSubscription\n onSign: OnSign\n onDisconnect: OnDisconnect\n onAskAccounts: OnAskAccounts\n onMessageSign: OnMessageSign\n } & ConstructorParameters<typeof AeSdk>[0]) {\n super(options)\n this.onConnection = onConnection\n this.onSubscription = onSubscription\n this.onSign = onSign\n this.onDisconnect = onDisconnect\n this.onAskAccounts = onAskAccounts\n this.onMessageSign = onMessageSign\n this._clients = new Map()\n this.name = name\n this.id = id\n this._type = type\n }\n\n _pushAccountsToApps (): void {\n Array.from(this._clients.keys())\n .filter(clientId => this._isRpcClientSubscribed(clientId))\n .map(clientId => this._getClient(clientId).rpc)\n .forEach(client => client.notify(METHODS.updateAddress, this.getAccounts()))\n }\n\n selectAccount (address: EncodedData<'ak'>): void {\n super.selectAccount(address)\n this._pushAccountsToApps()\n }\n\n async addAccount (\n account: AccountBase,\n options?: Parameters<AeSdk['addAccount']>[1]\n ): Promise<void> {\n await super.addAccount(account, options)\n this._pushAccountsToApps()\n }\n\n _getNode (): { node: Network['node'] } {\n this.ensureNodeConnected()\n return { node: { url: this.api.url, name: this.selectedNodeName } }\n }\n\n async selectNode (name: string): Promise<void> {\n super.selectNode(name)\n const networkId = await this.getNetworkId()\n Array.from(this._clients.keys())\n .filter(clientId => this._isRpcClientConnected(clientId))\n .map(clientId => this._getClient(clientId))\n .forEach(client => {\n client.rpc.notify(METHODS.updateNetwork, {\n networkId,\n ...client.connectNode && this._getNode()\n })\n })\n }\n\n _getClient (clientId: string): RpcClientsInfo {\n const client = this._clients.get(clientId)\n if (client == null) throw new UnknownRpcClientError(clientId)\n return client\n }\n\n _isRpcClientSubscribed (clientId: string): boolean {\n return this._isRpcClientConnected(clientId) &&\n this._getClient(clientId).addressSubscription.size !== 0\n }\n\n _isRpcClientConnected (clientId: string): boolean {\n return RPC_STATUS.CONNECTED === this._getClient(clientId).status &&\n this._getClient(clientId).rpc.connection.isConnected()\n }\n\n _disconnectRpcClient (clientId: string): void {\n const client = this._getClient(clientId)\n client.rpc.connection.disconnect()\n client.status = RPC_STATUS.DISCONNECTED\n client.addressSubscription = new Set()\n }\n\n /**\n * Remove specific RpcClient by ID\n * @param id - Client ID\n */\n removeRpcClient (id: string): void {\n this._disconnectRpcClient(id)\n this._clients.delete(id)\n }\n\n /**\n * Add new client by AEPP connection\n * @param clientConnection - AEPP connection object\n * @returns Client ID\n */\n addRpcClient (clientConnection: BrowserConnection): string {\n // @TODO detect if aepp has some history based on origin????\n // if yes use this instance for connection\n const id = uuid()\n let disconnectParams: any\n const client: RpcClientsInfo = {\n id,\n status: RPC_STATUS.WAITING_FOR_CONNECTION_REQUEST,\n addressSubscription: new Set(),\n connectNode: false,\n rpc: new RpcClient<AeppApi, WalletApi>(\n clientConnection,\n () => {\n this._clients.delete(id)\n this.onDisconnect(id, disconnectParams) // also related info\n }, {\n [METHODS.closeConnection]: (params) => {\n disconnectParams = params\n this._disconnectRpcClient(id)\n },\n // Store client info and prepare two fn for each client `connect` and `denyConnection`\n // which automatically prepare and send response for that client\n [METHODS.connect]: async ({ name, version, icons, connectNode }, origin) => {\n if (version !== RPC_VERSION) throw new RpcUnsupportedProtocolError()\n\n await this.onConnection(id, { name, icons, connectNode }, origin)\n client.status = RPC_STATUS.CONNECTED\n client.connectNode = connectNode\n return {\n ...await this.getWalletInfo(),\n ...connectNode && this._getNode()\n }\n },\n [METHODS.subscribeAddress]: async ({ type, value }, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError()\n\n await this.onSubscription(id, { type, value }, origin)\n\n switch (type) {\n case SUBSCRIPTION_TYPES.subscribe:\n client.addressSubscription.add(value)\n break\n case SUBSCRIPTION_TYPES.unsubscribe:\n client.addressSubscription.delete(value)\n break\n }\n\n return {\n subscription: Array.from(client.addressSubscription),\n address: this.getAccounts()\n }\n },\n [METHODS.address]: async (params, origin) => {\n if (!this._isRpcClientSubscribed(id)) throw new RpcNotAuthorizeError()\n await this.onAskAccounts(id, params, origin)\n return this.addresses()\n },\n [METHODS.sign]: async ({ tx, onAccount, returnSigned }, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError()\n onAccount ??= await this.address()\n if (!this.addresses().includes(onAccount)) {\n throw new RpcPermissionDenyError(onAccount)\n }\n\n const overrides = await this.onSign(id, { tx, returnSigned, onAccount }, origin)\n onAccount = overrides?.onAccount ?? onAccount\n tx = overrides?.tx ?? tx\n if (returnSigned) {\n return { signedTransaction: await this.signTransaction(tx, { onAccount }) }\n }\n try {\n return jsonBig.parse(jsonBig.stringify({\n transactionHash: await this.send(tx, { onAccount, verify: false })\n }))\n } catch (error) {\n const validation = await verifyTransaction(tx, this.api)\n if (validation.length > 0) throw new RpcInvalidTransactionError(validation)\n throw new RpcBroadcastError(error.message)\n }\n },\n [METHODS.signMessage]: async ({ message, onAccount }, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError()\n onAccount ??= await this.address()\n if (!this.addresses().includes(onAccount)) {\n throw new RpcPermissionDenyError(onAccount)\n }\n\n const overrides = await this.onMessageSign(id, { message, onAccount }, origin)\n onAccount = overrides?.onAccount ?? onAccount\n return {\n // TODO: fix signMessage return type\n signature: await this.signMessage(message, { onAccount, returnHex: true }) as\n unknown as string\n }\n }\n })\n }\n this._clients.set(id, client)\n return id\n }\n\n /**\n * Send shareWalletInfo message to notify AEPP about wallet\n * @param clientId - ID of RPC client send message to\n */\n async shareWalletInfo (clientId: string): Promise<void> {\n this._getClient(clientId).rpc.notify(METHODS.readyToConnect, await this.getWalletInfo())\n }\n\n /**\n * Get Wallet info object\n * @returns Object with wallet information\n */\n async getWalletInfo (): Promise<WalletInfo> {\n return {\n id: this.id,\n name: this.name,\n networkId: await this.getNetworkId(),\n origin: window.location.origin,\n type: this._type\n }\n }\n\n /**\n * Get Wallet accounts\n * @returns Object with accounts information (\\{ connected: Object, current: Object \\})\n */\n getAccounts (): Accounts {\n return {\n current: this.selectedAddress != null ? { [this.selectedAddress]: {} } : {},\n connected: this.addresses()\n .filter((a) => a !== this.selectedAddress)\n .reduce((acc, a) => ({ ...acc, [a]: {} }), {})\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AeSdkWallet.mjs","names":["v4","uuid","AeSdk","verifyTransaction","RpcClient","METHODS","RPC_STATUS","SUBSCRIPTION_TYPES","RpcBroadcastError","RpcInvalidTransactionError","RpcNotAuthorizeError","RpcPermissionDenyError","RpcUnsupportedProtocolError","InternalError","UnknownRpcClientError","RPC_VERSION","jsonBig","AeSdkWallet","constructor","name","id","type","onConnection","onSubscription","onSign","onDisconnect","onAskAccounts","onMessageSign","options","_clients","Map","_type","_pushAccountsToApps","Array","from","keys","filter","clientId","_isRpcClientSubscribed","map","_getClient","rpc","forEach","client","notify","updateAddress","getAccounts","selectAccount","address","addAccount","account","_getNode","ensureNodeConnected","node","url","api","selectedNodeName","selectNode","networkId","getNetworkId","_isRpcClientConnected","updateNetwork","connectNode","get","addressSubscription","size","CONNECTED","status","connection","isConnected","_disconnectRpcClient","disconnect","DISCONNECTED","Set","removeRpcClient","delete","addRpcClient","clientConnection","disconnectParams","WAITING_FOR_CONNECTION_REQUEST","closeConnection","params","connect","origin","version","icons","getWalletInfo","subscribeAddress","value","subscribe","add","unsubscribe","subscription","addresses","sign","tx","onAccount","returnSigned","overrides","signedTransaction","signTransaction","parse","stringify","transactionHash","send","verify","error","validation","length","message","signMessage","signature","returnHex","set","shareWalletInfo","readyToConnect","window","location","current","selectedAddress","connected","a","reduce","acc"],"sources":["../src/AeSdkWallet.ts"],"sourcesContent":["import { v4 as uuid } from '@aeternity/uuid';\nimport AeSdk from './AeSdk';\nimport { Account } from './AeSdkBase';\nimport verifyTransaction from './tx/validator';\nimport RpcClient from './aepp-wallet-communication/rpc/RpcClient';\nimport {\n METHODS, RPC_STATUS, SUBSCRIPTION_TYPES, WALLET_TYPE,\n RpcBroadcastError, RpcInvalidTransactionError,\n RpcNotAuthorizeError, RpcPermissionDenyError, RpcUnsupportedProtocolError,\n} from './aepp-wallet-communication/schema';\nimport { InternalError, UnknownRpcClientError } from './utils/errors';\nimport AccountBase from './account/Base';\nimport BrowserConnection from './aepp-wallet-communication/connection/Browser';\nimport {\n Accounts,\n AeppApi,\n Network,\n RPC_VERSION,\n WalletApi,\n WalletInfo,\n} from './aepp-wallet-communication/rpc/types';\nimport { Encoded } from './utils/encoder';\nimport jsonBig from './utils/json-big';\n\ntype RpcClientWallet = RpcClient<AeppApi, WalletApi>;\n\ntype OnConnection = (\n clientId: string, params: Omit<Parameters<WalletApi[METHODS.connect]>[0], 'version'>, origin: string\n) => void;\n\ntype OnSubscription = (\n clientId: string, params: Parameters<WalletApi[METHODS.subscribeAddress]>[0], origin: string\n) => void;\n\ntype OnSign = (\n clientId: string, params: Parameters<WalletApi[METHODS.sign]>[0], origin: string\n) => Promise<{ tx?: Encoded.Transaction; onAccount?: Account } | undefined> | Promise<void>;\n\ntype OnDisconnect = (\n clientId: string, params: Parameters<WalletApi[METHODS.closeConnection]>[0]\n) => void;\n\ntype OnAskAccounts = (\n clientId: string, params: undefined, origin: string\n) => void;\n\ntype OnMessageSign = (\n clientId: string, params: Parameters<WalletApi[METHODS.signMessage]>[0], origin: string\n) => Promise<{ onAccount?: Account } | undefined> | Promise<void>;\n\ninterface RpcClientsInfo {\n id: string;\n status: RPC_STATUS;\n connectNode: boolean;\n addressSubscription: Set<'connected' | 'current'>;\n rpc: RpcClientWallet;\n}\n\n/**\n * Contain functionality for aepp interaction and managing multiple aepps\n * @category aepp wallet communication\n */\nexport default class AeSdkWallet extends AeSdk {\n id: string;\n\n _type: WALLET_TYPE;\n\n name: string;\n\n _clients: Map<string, RpcClientsInfo>;\n\n onConnection: OnConnection;\n\n onSubscription: OnSubscription;\n\n onSign: OnSign;\n\n onDisconnect: OnDisconnect;\n\n onAskAccounts: OnAskAccounts;\n\n onMessageSign: OnMessageSign;\n\n /**\n * @param options - Options\n * @param options.name - Wallet name\n * @param options.id - Wallet id\n * @param options.type - Wallet type\n * @param options.onConnection - Call-back function for incoming AEPP connection\n * @param options.onSubscription - Call-back function for incoming AEPP account subscription\n * @param options.onSign - Call-back function for incoming AEPP sign request\n * @param options.onAskAccounts - Call-back function for incoming AEPP get address request\n * @param options.onMessageSign - Call-back function for incoming AEPP sign message request\n * @param options.onDisconnect - Call-back function for disconnect event\n */\n constructor({\n name,\n id,\n type,\n onConnection,\n onSubscription,\n onSign,\n onDisconnect,\n onAskAccounts,\n onMessageSign,\n ...options\n }: {\n id: string;\n type: WALLET_TYPE;\n name: string;\n onConnection: OnConnection;\n onSubscription: OnSubscription;\n onSign: OnSign;\n onDisconnect: OnDisconnect;\n onAskAccounts: OnAskAccounts;\n onMessageSign: OnMessageSign;\n } & ConstructorParameters<typeof AeSdk>[0]) {\n super(options);\n this.onConnection = onConnection;\n this.onSubscription = onSubscription;\n this.onSign = onSign;\n this.onDisconnect = onDisconnect;\n this.onAskAccounts = onAskAccounts;\n this.onMessageSign = onMessageSign;\n this._clients = new Map();\n this.name = name;\n this.id = id;\n this._type = type;\n }\n\n _pushAccountsToApps(): void {\n Array.from(this._clients.keys())\n .filter((clientId) => this._isRpcClientSubscribed(clientId))\n .map((clientId) => this._getClient(clientId).rpc)\n .forEach((client) => client.notify(METHODS.updateAddress, this.getAccounts()));\n }\n\n selectAccount(address: Encoded.AccountAddress): void {\n super.selectAccount(address);\n this._pushAccountsToApps();\n }\n\n async addAccount(\n account: AccountBase,\n options?: Parameters<AeSdk['addAccount']>[1],\n ): Promise<void> {\n await super.addAccount(account, options);\n this._pushAccountsToApps();\n }\n\n _getNode(): { node: Network['node'] } {\n this.ensureNodeConnected();\n return { node: { url: this.api.url, name: this.selectedNodeName } };\n }\n\n async selectNode(name: string): Promise<void> {\n super.selectNode(name);\n const networkId = await this.getNetworkId();\n Array.from(this._clients.keys())\n .filter((clientId) => this._isRpcClientConnected(clientId))\n .map((clientId) => this._getClient(clientId))\n .forEach((client) => {\n client.rpc.notify(METHODS.updateNetwork, {\n networkId,\n ...client.connectNode && this._getNode(),\n });\n });\n }\n\n _getClient(clientId: string): RpcClientsInfo {\n const client = this._clients.get(clientId);\n if (client == null) throw new UnknownRpcClientError(clientId);\n return client;\n }\n\n _isRpcClientSubscribed(clientId: string): boolean {\n return this._isRpcClientConnected(clientId)\n && this._getClient(clientId).addressSubscription.size !== 0;\n }\n\n _isRpcClientConnected(clientId: string): boolean {\n return RPC_STATUS.CONNECTED === this._getClient(clientId).status\n && this._getClient(clientId).rpc.connection.isConnected();\n }\n\n _disconnectRpcClient(clientId: string): void {\n const client = this._getClient(clientId);\n client.rpc.connection.disconnect();\n client.status = RPC_STATUS.DISCONNECTED;\n client.addressSubscription = new Set();\n }\n\n /**\n * Remove specific RpcClient by ID\n * @param id - Client ID\n */\n removeRpcClient(id: string): void {\n this._disconnectRpcClient(id);\n this._clients.delete(id);\n }\n\n /**\n * Add new client by AEPP connection\n * @param clientConnection - AEPP connection object\n * @returns Client ID\n */\n addRpcClient(clientConnection: BrowserConnection): string {\n // @TODO detect if aepp has some history based on origin????\n // if yes use this instance for connection\n const id = uuid();\n let disconnectParams: any;\n const client: RpcClientsInfo = {\n id,\n status: RPC_STATUS.WAITING_FOR_CONNECTION_REQUEST,\n addressSubscription: new Set(),\n connectNode: false,\n rpc: new RpcClient<AeppApi, WalletApi>(\n clientConnection,\n () => {\n this._clients.delete(id);\n this.onDisconnect(id, disconnectParams); // also related info\n },\n {\n [METHODS.closeConnection]: (params) => {\n disconnectParams = params;\n this._disconnectRpcClient(id);\n },\n // Store client info and prepare two fn for each client `connect` and `denyConnection`\n // which automatically prepare and send response for that client\n [METHODS.connect]: async ({\n name, version, icons, connectNode,\n }, origin) => {\n if (version !== RPC_VERSION) throw new RpcUnsupportedProtocolError();\n\n await this.onConnection(id, { name, icons, connectNode }, origin);\n client.status = RPC_STATUS.CONNECTED;\n client.connectNode = connectNode;\n return {\n ...await this.getWalletInfo(),\n ...connectNode && this._getNode(),\n };\n },\n [METHODS.subscribeAddress]: async ({ type, value }, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();\n\n await this.onSubscription(id, { type, value }, origin);\n\n switch (type) {\n case SUBSCRIPTION_TYPES.subscribe:\n client.addressSubscription.add(value);\n break;\n case SUBSCRIPTION_TYPES.unsubscribe:\n client.addressSubscription.delete(value);\n break;\n default:\n throw new InternalError(`Unknown subscription type: ${type}`);\n }\n\n return {\n subscription: Array.from(client.addressSubscription),\n address: this.getAccounts(),\n };\n },\n [METHODS.address]: async (params, origin) => {\n if (!this._isRpcClientSubscribed(id)) throw new RpcNotAuthorizeError();\n await this.onAskAccounts(id, params, origin);\n return this.addresses();\n },\n [METHODS.sign]: async ({ tx, onAccount, returnSigned }, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();\n onAccount ??= await this.address();\n if (!this.addresses().includes(onAccount)) {\n throw new RpcPermissionDenyError(onAccount);\n }\n\n const overrides = await this.onSign(id, { tx, returnSigned, onAccount }, origin);\n onAccount = overrides?.onAccount ?? onAccount;\n tx = overrides?.tx ?? tx;\n if (returnSigned) {\n return { signedTransaction: await this.signTransaction(tx, { onAccount }) };\n }\n try {\n return jsonBig.parse(jsonBig.stringify({\n transactionHash: await this.send(tx, { onAccount, verify: false }),\n }));\n } catch (error) {\n const validation = await verifyTransaction(tx, this.api);\n if (validation.length > 0) throw new RpcInvalidTransactionError(validation);\n throw new RpcBroadcastError(error.message);\n }\n },\n [METHODS.signMessage]: async ({ message, onAccount }, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();\n onAccount ??= await this.address();\n if (!this.addresses().includes(onAccount)) {\n throw new RpcPermissionDenyError(onAccount);\n }\n\n const overrides = await this.onMessageSign(id, { message, onAccount }, origin);\n onAccount = overrides?.onAccount ?? onAccount;\n return {\n // TODO: fix signMessage return type\n signature: await this.signMessage(message, { onAccount, returnHex: true }) as\n unknown as string,\n };\n },\n },\n ),\n };\n this._clients.set(id, client);\n return id;\n }\n\n /**\n * Send shareWalletInfo message to notify AEPP about wallet\n * @param clientId - ID of RPC client send message to\n */\n async shareWalletInfo(clientId: string): Promise<void> {\n this._getClient(clientId).rpc.notify(METHODS.readyToConnect, await this.getWalletInfo());\n }\n\n /**\n * Get Wallet info object\n * @returns Object with wallet information\n */\n async getWalletInfo(): Promise<WalletInfo> {\n return {\n id: this.id,\n name: this.name,\n networkId: await this.getNetworkId(),\n origin: window.location.origin,\n type: this._type,\n };\n }\n\n /**\n * Get Wallet accounts\n * @returns Object with accounts information (\\{ connected: Object, current: Object \\})\n */\n getAccounts(): Accounts {\n return {\n current: this.selectedAddress != null ? { [this.selectedAddress]: {} } : {},\n connected: this.addresses()\n .filter((a) => a !== this.selectedAddress)\n .reduce((acc, a) => ({ ...acc, [a]: {} }), {}),\n };\n }\n}\n"],"mappings":"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"}
package/es/Node.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- import { OperationArguments, OperationSpec } from '@azure/core-client';
2
- import { Node as NodeApi, NodeOptionalParams } from './apis/node/';
3
- import { EncodedData } from './utils/encoder';
1
+ import { Node as NodeApi, NodeOptionalParams } from './apis/node';
2
+ import { Encoded } from './utils/encoder';
4
3
  /**
5
4
  * Obtain networkId from account or node
6
5
  */
@@ -8,17 +7,17 @@ export declare function getNetworkId({ networkId }?: {
8
7
  networkId?: string;
9
8
  }): Promise<string>;
10
9
  declare const bigIntPropertyNames: readonly ["balance", "queryFee", "fee", "amount", "nameFee", "channelAmount", "initiatorAmount", "responderAmount", "channelReserve", "initiatorAmountFinal", "responderAmountFinal", "gasPrice", "deposit"];
11
- declare const numberPropertyNames: readonly ["time", "gas", "gasUsed", "nameSalt", "nonce", "nextNonce", "height", "blockHeight", "top", "topBlockHeight", "ttl", "inbound", "outbound", "peerCount", "pendingTransactionsCount", "effectiveAtHeight", "version", "solutions"];
10
+ declare const numberPropertyNames: readonly ["time", "gas", "gasUsed", "nameSalt", "nonce", "nextNonce", "height", "blockHeight", "top", "topBlockHeight", "ttl", "nameTtl", "clientTtl", "inbound", "outbound", "peerCount", "pendingTransactionsCount", "effectiveAtHeight", "version", "solutions", "round"];
12
11
  declare type BigIntPropertyNames = typeof bigIntPropertyNames[number];
13
12
  declare type NumberPropertyNames = typeof numberPropertyNames[number];
14
13
  declare type PreserveOptional<NewType, OrigType> = OrigType extends undefined ? NewType | undefined : NewType;
15
14
  export declare type TransformNodeType<Type> = Type extends (...args: infer Args) => infer Ret ? (...args: TransformNodeType<Args>) => TransformNodeType<Ret> : Type extends [infer Item, ...infer Rest] ? [TransformNodeType<Item>, ...TransformNodeType<Rest>] : Type extends Array<infer Item> ? Array<TransformNodeType<Item>> : Type extends Promise<infer T> ? Promise<TransformNodeType<T>> : Type extends {
16
15
  [P in any]: any;
17
16
  } ? {
18
- [Property in keyof Type]: Property extends BigIntPropertyNames ? PreserveOptional<bigint, Type[Property]> : Property extends NumberPropertyNames ? PreserveOptional<number, Type[Property]> : Property extends 'txHash' ? PreserveOptional<EncodedData<'th'>, Type[Property]> : TransformNodeType<Type[Property]>;
17
+ [Property in keyof Type]: Property extends BigIntPropertyNames ? PreserveOptional<bigint, Type[Property]> : Property extends NumberPropertyNames ? PreserveOptional<number, Type[Property]> : Property extends 'txHash' ? PreserveOptional<Encoded.TxHash, Type[Property]> : TransformNodeType<Type[Property]>;
19
18
  } : Type;
20
- declare type TransformedNode = new (...args: ConstructorParameters<typeof NodeApi>) => {
21
- [Name in keyof InstanceType<typeof NodeApi>]: TransformNodeType<NodeApi[Name]>;
19
+ declare type NodeTransformedApi = new (...args: ConstructorParameters<typeof NodeApi>) => {
20
+ [Name in keyof InstanceType<typeof NodeApi>]: Name extends 'pipeline' | 'sendRequest' | 'sendOperationRequest' ? NodeApi[Name] : TransformNodeType<NodeApi[Name]>;
22
21
  };
23
22
  export interface NodeInfo {
24
23
  url: string;
@@ -26,9 +25,8 @@ export interface NodeInfo {
26
25
  version: string;
27
26
  consensusProtocolVersion: number;
28
27
  }
29
- declare const Node_base: TransformedNode;
28
+ declare const Node_base: NodeTransformedApi;
30
29
  export default class Node extends Node_base {
31
- #private;
32
30
  url: string;
33
31
  /**
34
32
  * @param url - Url for node API
@@ -39,6 +37,5 @@ export default class Node extends Node_base {
39
37
  ignoreVersion?: boolean;
40
38
  });
41
39
  getNodeInfo(): Promise<NodeInfo>;
42
- sendOperationRequest(operationArguments: OperationArguments, operationSpec: OperationSpec): Promise<any>;
43
40
  }
44
41
  export {};
package/es/Node.mjs CHANGED
@@ -4,6 +4,7 @@ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollect
4
4
 
5
5
  function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
6
6
 
7
+ // eslint-disable-next-line max-classes-per-file
7
8
  import BigNumber from 'bignumber.js';
8
9
  import { genRequestQueuesPolicy, genCombineGetRequestsPolicy, genErrorFormatterPolicy, genVersionCheckPolicy } from "./utils/autorest.mjs";
9
10
  import { Node as NodeApi } from "./apis/node/index.mjs";
@@ -14,17 +15,17 @@ import { MissingParamError } from "./utils/errors.mjs";
14
15
  */
15
16
 
16
17
  export async function getNetworkId() {
17
- var _ref, _this$api;
18
+ var _ref, _await$this$api$getSt, _this$api;
18
19
 
19
20
  let {
20
21
  networkId
21
22
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
22
- const res = (_ref = networkId !== null && networkId !== void 0 ? networkId : this.networkId) !== null && _ref !== void 0 ? _ref : (await ((_this$api = this.api) === null || _this$api === void 0 ? void 0 : _this$api.getStatus())).networkId;
23
+ const res = (_ref = networkId !== null && networkId !== void 0 ? networkId : this.networkId) !== null && _ref !== void 0 ? _ref : (_await$this$api$getSt = await ((_this$api = this.api) === null || _this$api === void 0 ? void 0 : _this$api.getStatus())) === null || _await$this$api$getSt === void 0 ? void 0 : _await$this$api$getSt.networkId;
23
24
  if (res != null) return res;
24
25
  throw new MissingParamError('networkId is not provided');
25
26
  }
26
27
  const bigIntPropertyNames = ['balance', 'queryFee', 'fee', 'amount', 'nameFee', 'channelAmount', 'initiatorAmount', 'responderAmount', 'channelReserve', 'initiatorAmountFinal', 'responderAmountFinal', 'gasPrice', 'deposit'];
27
- const numberPropertyNames = ['time', 'gas', 'gasUsed', 'nameSalt', 'nonce', 'nextNonce', 'height', 'blockHeight', 'top', 'topBlockHeight', 'ttl', 'inbound', 'outbound', 'peerCount', 'pendingTransactionsCount', 'effectiveAtHeight', 'version', 'solutions'];
28
+ const numberPropertyNames = ['time', 'gas', 'gasUsed', 'nameSalt', 'nonce', 'nextNonce', 'height', 'blockHeight', 'top', 'topBlockHeight', 'ttl', 'nameTtl', 'clientTtl', 'inbound', 'outbound', 'peerCount', 'pendingTransactionsCount', 'effectiveAtHeight', 'version', 'solutions', 'round'];
28
29
 
29
30
  var _mapData = /*#__PURE__*/new WeakSet();
30
31
 
@@ -32,7 +33,61 @@ var _encodeArg = /*#__PURE__*/new WeakSet();
32
33
 
33
34
  var _decodeRes = /*#__PURE__*/new WeakSet();
34
35
 
35
- export default class Node extends NodeApi {
36
+ class NodeTransformed extends NodeApi {
37
+ constructor() {
38
+ super(...arguments);
39
+
40
+ _classPrivateMethodInitSpec(this, _decodeRes);
41
+
42
+ _classPrivateMethodInitSpec(this, _encodeArg);
43
+
44
+ _classPrivateMethodInitSpec(this, _mapData);
45
+ }
46
+
47
+ async sendOperationRequest(operationArguments, operationSpec) {
48
+ const args = mapObject(operationArguments, _ref2 => {
49
+ let [key, value] = _ref2;
50
+ return [key, _classPrivateMethodGet(this, _encodeArg, _encodeArg2).call(this, value)];
51
+ });
52
+ return _classPrivateMethodGet(this, _decodeRes, _decodeRes2).call(this, await super.sendOperationRequest(args, operationSpec));
53
+ }
54
+
55
+ }
56
+
57
+ function _mapData2(data, transform) {
58
+ if (Array.isArray(data)) return data.map(d => _classPrivateMethodGet(this, _mapData, _mapData2).call(this, d, transform));
59
+
60
+ if (data != null && typeof data === 'object') {
61
+ return mapObject(data, _ref5 => {
62
+ let [key, value] = _ref5;
63
+ if (value == null) return [key, value];
64
+ if (bigIntPropertyNames.some(k => k === key)) return [key, transform.bigInt(value)];
65
+ if (numberPropertyNames.some(k => k === key)) return [key, transform.number(value)];
66
+ return [key, _classPrivateMethodGet(this, _mapData, _mapData2).call(this, value, transform)];
67
+ });
68
+ }
69
+
70
+ return data;
71
+ }
72
+
73
+ function _encodeArg2(data) {
74
+ return _classPrivateMethodGet(this, _mapData, _mapData2).call(this, data, {
75
+ bigInt: value => {
76
+ if (value instanceof BigNumber) return value.toFixed();
77
+ return value.toString();
78
+ },
79
+ number: value => value.toString()
80
+ });
81
+ }
82
+
83
+ function _decodeRes2(data) {
84
+ return _classPrivateMethodGet(this, _mapData, _mapData2).call(this, data, {
85
+ bigInt: value => BigInt(value),
86
+ number: value => +value
87
+ });
88
+ }
89
+
90
+ export default class Node extends NodeTransformed {
36
91
  /**
37
92
  * @param url - Url for node API
38
93
  * @param options - Options
@@ -49,20 +104,13 @@ export default class Node extends NodeApi {
49
104
  additionalPolicies: [genRequestQueuesPolicy(), genCombineGetRequestsPolicy(), genErrorFormatterPolicy(body => ` ${body.reason}`)],
50
105
  ...options
51
106
  });
52
-
53
- _classPrivateMethodInitSpec(this, _decodeRes);
54
-
55
- _classPrivateMethodInitSpec(this, _encodeArg);
56
-
57
- _classPrivateMethodInitSpec(this, _mapData);
58
-
59
107
  this.url = url;
60
108
 
61
109
  if (!ignoreVersion) {
62
- const versionPromise = this.getStatus().then(_ref2 => {
110
+ const versionPromise = this.getStatus().then(_ref3 => {
63
111
  let {
64
112
  nodeVersion
65
- } = _ref2;
113
+ } = _ref3;
66
114
  return nodeVersion;
67
115
  });
68
116
  this.pipeline.addPolicy(genVersionCheckPolicy('node', '/v3/status', versionPromise, '6.2.0', '7.0.0'));
@@ -78,10 +126,10 @@ export default class Node extends NodeApi {
78
126
  protocols,
79
127
  topBlockHeight
80
128
  } = await this.getStatus();
81
- const consensusProtocolVersion = protocols.filter(_ref3 => {
129
+ const consensusProtocolVersion = protocols.filter(_ref4 => {
82
130
  let {
83
131
  effectiveAtHeight
84
- } = _ref3;
132
+ } = _ref4;
85
133
  return topBlockHeight >= effectiveAtHeight;
86
134
  }).reduce((acc, p) => p.effectiveAtHeight > acc.effectiveAtHeight ? p : acc, {
87
135
  effectiveAtHeight: -1,
@@ -93,49 +141,7 @@ export default class Node extends NodeApi {
93
141
  version,
94
142
  consensusProtocolVersion
95
143
  };
96
- } // @ts-expect-error https://github.com/microsoft/TypeScript/issues/27689
97
-
98
-
99
- async sendOperationRequest(operationArguments, operationSpec) {
100
- const args = mapObject(operationArguments, _ref4 => {
101
- let [key, value] = _ref4;
102
- return [key, _classPrivateMethodGet(this, _encodeArg, _encodeArg2).call(this, value)];
103
- });
104
- return _classPrivateMethodGet(this, _decodeRes, _decodeRes2).call(this, await super.sendOperationRequest(args, operationSpec));
105
144
  }
106
145
 
107
146
  }
108
-
109
- function _mapData2(data, transform) {
110
- if (Array.isArray(data)) return data.map(d => _classPrivateMethodGet(this, _mapData, _mapData2).call(this, d, transform));
111
-
112
- if (data != null && typeof data === 'object') {
113
- return mapObject(data, _ref5 => {
114
- let [key, value] = _ref5;
115
- if (value == null) return [key, value];
116
- if (bigIntPropertyNames.some(k => k === key)) return [key, transform.bigInt(value)];
117
- if (numberPropertyNames.some(k => k === key)) return [key, transform.number(value)];
118
- return [key, _classPrivateMethodGet(this, _mapData, _mapData2).call(this, value, transform)];
119
- });
120
- }
121
-
122
- return data;
123
- }
124
-
125
- function _encodeArg2(data) {
126
- return _classPrivateMethodGet(this, _mapData, _mapData2).call(this, data, {
127
- bigInt: value => {
128
- if (value instanceof BigNumber) return value.toFixed();
129
- return value.toString();
130
- },
131
- number: value => value.toString()
132
- });
133
- }
134
-
135
- function _decodeRes2(data) {
136
- return _classPrivateMethodGet(this, _mapData, _mapData2).call(this, data, {
137
- bigInt: value => BigInt(value),
138
- number: value => +value
139
- });
140
- }
141
147
  //# sourceMappingURL=Node.mjs.map
package/es/Node.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Node.mjs","names":["BigNumber","genRequestQueuesPolicy","genCombineGetRequestsPolicy","genErrorFormatterPolicy","genVersionCheckPolicy","Node","NodeApi","mapObject","MissingParamError","getNetworkId","networkId","res","api","getStatus","bigIntPropertyNames","numberPropertyNames","constructor","url","ignoreVersion","options","allowInsecureConnection","additionalPolicies","body","reason","versionPromise","then","nodeVersion","pipeline","addPolicy","intAsString","getNodeInfo","version","nodeNetworkId","protocols","topBlockHeight","consensusProtocolVersion","filter","effectiveAtHeight","reduce","acc","p","sendOperationRequest","operationArguments","operationSpec","args","key","value","data","transform","Array","isArray","map","d","some","k","bigInt","number","toFixed","toString","BigInt"],"sources":["../src/Node.ts"],"sourcesContent":["import BigNumber from 'bignumber.js'\nimport { OperationArguments, OperationSpec } from '@azure/core-client'\nimport {\n genRequestQueuesPolicy, genCombineGetRequestsPolicy, genErrorFormatterPolicy,\n genVersionCheckPolicy\n} from './utils/autorest'\nimport { Node as NodeApi, NodeOptionalParams, ErrorModel } from './apis/node/'\nimport { mapObject } from './utils/other'\nimport { EncodedData } from './utils/encoder'\nimport { MissingParamError } from './utils/errors'\n\n/**\n * Obtain networkId from account or node\n */\nexport async function getNetworkId ({ networkId }: { networkId?: string } = {}): Promise<string> {\n const res = networkId ?? this.networkId ?? (await this.api?.getStatus()).networkId\n if (res != null) return res\n throw new MissingParamError('networkId is not provided')\n}\n\nconst bigIntPropertyNames = [\n 'balance', 'queryFee', 'fee', 'amount', 'nameFee', 'channelAmount',\n 'initiatorAmount', 'responderAmount', 'channelReserve', 'initiatorAmountFinal',\n 'responderAmountFinal', 'gasPrice', 'deposit'\n] as const\n\nconst numberPropertyNames = [\n 'time', 'gas', 'gasUsed', 'nameSalt',\n 'nonce', 'nextNonce', 'height', 'blockHeight', 'top', 'topBlockHeight', 'ttl',\n 'inbound', 'outbound', 'peerCount', 'pendingTransactionsCount', 'effectiveAtHeight',\n 'version', 'solutions'\n] as const\n\ntype BigIntPropertyNames = typeof bigIntPropertyNames[number]\ntype NumberPropertyNames = typeof numberPropertyNames[number]\ntype PreserveOptional<NewType, OrigType> =\n OrigType extends undefined ? NewType | undefined : NewType\nexport type TransformNodeType<Type> =\n Type extends (...args: infer Args) => infer Ret\n ? (...args: TransformNodeType<Args>) => TransformNodeType<Ret>\n : Type extends [infer Item, ...infer Rest]\n ? [TransformNodeType<Item>, ...TransformNodeType<Rest>]\n : Type extends Array<infer Item>\n ? Array<TransformNodeType<Item>>\n : Type extends Promise<infer T>\n ? Promise<TransformNodeType<T>>\n : Type extends { [P in any]: any }\n ? {\n [Property in keyof Type]:\n Property extends BigIntPropertyNames\n ? PreserveOptional<bigint, Type[Property]>\n : Property extends NumberPropertyNames\n ? PreserveOptional<number, Type[Property]>\n : Property extends 'txHash'\n ? PreserveOptional<EncodedData<'th'>, Type[Property]>\n : TransformNodeType<Type[Property]>\n }\n : Type\ntype TransformedNode = new (...args: ConstructorParameters<typeof NodeApi>) => {\n [Name in keyof InstanceType<typeof NodeApi>]: TransformNodeType<NodeApi[Name]>\n}\n\nexport interface NodeInfo {\n url: string\n nodeNetworkId: string\n version: string\n consensusProtocolVersion: number\n}\n\nexport default class Node extends (NodeApi as unknown as TransformedNode) {\n url: string\n\n /**\n * @param url - Url for node API\n * @param options - Options\n * @param options.ignoreVersion - Don't check node version\n */\n constructor (\n url: string,\n { ignoreVersion = false, ...options }: NodeOptionalParams & { ignoreVersion?: boolean } = {}\n ) {\n // eslint-disable-next-line constructor-super\n super(url, {\n allowInsecureConnection: true,\n additionalPolicies: [\n genRequestQueuesPolicy(),\n genCombineGetRequestsPolicy(),\n genErrorFormatterPolicy((body: ErrorModel) => ` ${body.reason}`)\n ],\n ...options\n })\n this.url = url\n if (!ignoreVersion) {\n const versionPromise = this.getStatus().then(({ nodeVersion }) => nodeVersion)\n this.pipeline.addPolicy(genVersionCheckPolicy('node', '/v3/status', versionPromise, '6.2.0', '7.0.0'))\n }\n this.intAsString = true\n }\n\n async getNodeInfo (): Promise<NodeInfo> {\n const {\n nodeVersion: version,\n networkId: nodeNetworkId,\n protocols,\n topBlockHeight\n } = await this.getStatus()\n const consensusProtocolVersion = protocols\n .filter(({ effectiveAtHeight }) => topBlockHeight >= effectiveAtHeight)\n .reduce(\n (acc, p) => p.effectiveAtHeight > acc.effectiveAtHeight ? p : acc,\n { effectiveAtHeight: -1, version: 0 }\n )\n .version\n return {\n url: this.url,\n nodeNetworkId,\n version,\n consensusProtocolVersion\n }\n }\n\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/27689\n async sendOperationRequest (\n operationArguments: OperationArguments, operationSpec: OperationSpec\n ): Promise<any> {\n const args = mapObject(\n operationArguments,\n ([key, value]) => [key, this.#encodeArg(value)]\n ) as OperationArguments\n return this.#decodeRes(await super.sendOperationRequest(args, operationSpec))\n }\n\n #mapData (\n data: any, transform: {\n bigInt: (v: any) => any\n number: (v: any) => any\n }\n ): unknown {\n if (Array.isArray(data)) return data.map(d => this.#mapData(d, transform))\n if (data != null && typeof data === 'object') {\n return mapObject(data, ([key, value]) => {\n if (value == null) return [key, value]\n if (bigIntPropertyNames.some(k => k === key)) return [key, transform.bigInt(value)]\n if (numberPropertyNames.some(k => k === key)) return [key, transform.number(value)]\n return [key, this.#mapData(value, transform)]\n })\n }\n return data\n }\n\n #encodeArg (data: any): any {\n return this.#mapData(data, {\n bigInt: value => {\n if (value instanceof BigNumber) return value.toFixed()\n return value.toString()\n },\n number: value => value.toString()\n })\n }\n\n #decodeRes (data: any): any {\n return this.#mapData(data, {\n bigInt: value => BigInt(value),\n number: value => +value\n })\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Node.mjs","names":["BigNumber","genRequestQueuesPolicy","genCombineGetRequestsPolicy","genErrorFormatterPolicy","genVersionCheckPolicy","Node","NodeApi","mapObject","MissingParamError","getNetworkId","networkId","res","api","getStatus","bigIntPropertyNames","numberPropertyNames","NodeTransformed","sendOperationRequest","operationArguments","operationSpec","args","key","value","data","transform","Array","isArray","map","d","some","k","bigInt","number","toFixed","toString","BigInt","constructor","url","ignoreVersion","options","allowInsecureConnection","additionalPolicies","body","reason","versionPromise","then","nodeVersion","pipeline","addPolicy","intAsString","getNodeInfo","version","nodeNetworkId","protocols","topBlockHeight","consensusProtocolVersion","filter","effectiveAtHeight","reduce","acc","p"],"sources":["../src/Node.ts"],"sourcesContent":["// eslint-disable-next-line max-classes-per-file\nimport BigNumber from 'bignumber.js';\nimport { OperationArguments, OperationSpec } from '@azure/core-client';\nimport {\n genRequestQueuesPolicy, genCombineGetRequestsPolicy, genErrorFormatterPolicy,\n genVersionCheckPolicy,\n} from './utils/autorest';\nimport { Node as NodeApi, NodeOptionalParams, ErrorModel } from './apis/node';\nimport { mapObject } from './utils/other';\nimport { Encoded } from './utils/encoder';\nimport { MissingParamError } from './utils/errors';\n\n/**\n * Obtain networkId from account or node\n */\nexport async function getNetworkId({ networkId }: { networkId?: string } = {}): Promise<string> {\n const res = networkId ?? this.networkId ?? (await this.api?.getStatus())?.networkId;\n if (res != null) return res;\n throw new MissingParamError('networkId is not provided');\n}\n\nconst bigIntPropertyNames = [\n 'balance', 'queryFee', 'fee', 'amount', 'nameFee', 'channelAmount',\n 'initiatorAmount', 'responderAmount', 'channelReserve', 'initiatorAmountFinal',\n 'responderAmountFinal', 'gasPrice', 'deposit',\n] as const;\n\nconst numberPropertyNames = [\n 'time', 'gas', 'gasUsed', 'nameSalt',\n 'nonce', 'nextNonce', 'height', 'blockHeight', 'top', 'topBlockHeight',\n 'ttl', 'nameTtl', 'clientTtl',\n 'inbound', 'outbound', 'peerCount', 'pendingTransactionsCount', 'effectiveAtHeight',\n 'version', 'solutions', 'round',\n] as const;\n\nclass NodeTransformed extends NodeApi {\n async sendOperationRequest(\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n ): Promise<any> {\n const args = mapObject(\n operationArguments,\n ([key, value]) => [key, this.#encodeArg(value)],\n ) as OperationArguments;\n return this.#decodeRes(await super.sendOperationRequest(args, operationSpec));\n }\n\n #mapData(data: any, transform: {\n bigInt: (v: any) => any;\n number: (v: any) => any;\n }): unknown {\n if (Array.isArray(data)) return data.map((d) => this.#mapData(d, transform));\n if (data != null && typeof data === 'object') {\n return mapObject(data, ([key, value]) => {\n if (value == null) return [key, value];\n if (bigIntPropertyNames.some((k) => k === key)) return [key, transform.bigInt(value)];\n if (numberPropertyNames.some((k) => k === key)) return [key, transform.number(value)];\n return [key, this.#mapData(value, transform)];\n });\n }\n return data;\n }\n\n #encodeArg(data: any): any {\n return this.#mapData(data, {\n bigInt: (value) => {\n if (value instanceof BigNumber) return value.toFixed();\n return value.toString();\n },\n number: (value) => value.toString(),\n });\n }\n\n #decodeRes(data: any): any {\n return this.#mapData(data, {\n bigInt: (value) => BigInt(value),\n number: (value) => +value,\n });\n }\n}\n\ntype BigIntPropertyNames = typeof bigIntPropertyNames[number];\ntype NumberPropertyNames = typeof numberPropertyNames[number];\ntype PreserveOptional<NewType, OrigType> =\n OrigType extends undefined ? NewType | undefined : NewType;\nexport type TransformNodeType<Type> =\n Type extends (...args: infer Args) => infer Ret\n ? (...args: TransformNodeType<Args>) => TransformNodeType<Ret>\n : Type extends [infer Item, ...infer Rest]\n ? [TransformNodeType<Item>, ...TransformNodeType<Rest>]\n : Type extends Array<infer Item>\n ? Array<TransformNodeType<Item>>\n : Type extends Promise<infer T>\n ? Promise<TransformNodeType<T>>\n : Type extends { [P in any]: any }\n ? {\n [Property in keyof Type]:\n Property extends BigIntPropertyNames\n ? PreserveOptional<bigint, Type[Property]>\n : Property extends NumberPropertyNames\n ? PreserveOptional<number, Type[Property]>\n : Property extends 'txHash'\n ? PreserveOptional<Encoded.TxHash, Type[Property]>\n : TransformNodeType<Type[Property]>\n }\n : Type;\ntype NodeTransformedApi = new (...args: ConstructorParameters<typeof NodeApi>) => {\n [Name in keyof InstanceType<typeof NodeApi>]:\n Name extends 'pipeline' | 'sendRequest' | 'sendOperationRequest'\n ? NodeApi[Name] : TransformNodeType<NodeApi[Name]>\n};\n\nexport interface NodeInfo {\n url: string;\n nodeNetworkId: string;\n version: string;\n consensusProtocolVersion: number;\n}\n\nexport default class Node extends (NodeTransformed as unknown as NodeTransformedApi) {\n url: string;\n\n /**\n * @param url - Url for node API\n * @param options - Options\n * @param options.ignoreVersion - Don't check node version\n */\n constructor(\n url: string,\n { ignoreVersion = false, ...options }: NodeOptionalParams & { ignoreVersion?: boolean } = {},\n ) {\n // eslint-disable-next-line constructor-super\n super(url, {\n allowInsecureConnection: true,\n additionalPolicies: [\n genRequestQueuesPolicy(),\n genCombineGetRequestsPolicy(),\n genErrorFormatterPolicy((body: ErrorModel) => ` ${body.reason}`),\n ],\n ...options,\n });\n this.url = url;\n if (!ignoreVersion) {\n const versionPromise = this.getStatus().then(({ nodeVersion }) => nodeVersion);\n this.pipeline.addPolicy(\n genVersionCheckPolicy('node', '/v3/status', versionPromise, '6.2.0', '7.0.0'),\n );\n }\n this.intAsString = true;\n }\n\n async getNodeInfo(): Promise<NodeInfo> {\n const {\n nodeVersion: version,\n networkId: nodeNetworkId,\n protocols,\n topBlockHeight,\n } = await this.getStatus();\n const consensusProtocolVersion = protocols\n .filter(({ effectiveAtHeight }) => topBlockHeight >= effectiveAtHeight)\n .reduce(\n (acc, p) => (p.effectiveAtHeight > acc.effectiveAtHeight ? p : acc),\n { effectiveAtHeight: -1, version: 0 },\n )\n .version;\n return {\n url: this.url,\n nodeNetworkId,\n version,\n consensusProtocolVersion,\n };\n }\n}\n"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { EncodedData } from '../utils/encoder';
1
+ import { Encoded } from '../utils/encoder';
2
2
  import { getNetworkId } from '../Node';
3
+ import type { createMetaTx } from '../contract/ga';
3
4
  /**
4
5
  * Check is provided object looks like an instance of AccountBase
5
6
  * @param acc - Object to check
@@ -25,10 +26,12 @@ export default abstract class AccountBase {
25
26
  * @param opt.innerTx - Sign as inner transaction for PayingFor
26
27
  * @returns Signed transaction
27
28
  */
28
- signTransaction(tx: EncodedData<'tx'>, { innerTx, networkId, ...options }?: {
29
+ signTransaction(tx: Encoded.Transaction, { innerTx, networkId, ...options }?: {
29
30
  innerTx?: boolean;
30
31
  networkId?: string;
31
- }): Promise<EncodedData<'tx'>>;
32
+ authData?: Parameters<typeof createMetaTx>[1];
33
+ authFun?: Parameters<typeof createMetaTx>[2];
34
+ } & Omit<Partial<Parameters<typeof createMetaTx>[3]>, 'onAccount'>): Promise<Encoded.Transaction>;
32
35
  /**
33
36
  * Get network Id
34
37
  * @returns Network Id
@@ -61,5 +64,5 @@ export default abstract class AccountBase {
61
64
  * Obtain account address
62
65
  * @returns Public account address
63
66
  */
64
- abstract address(opt?: object): Promise<EncodedData<'ak'>>;
67
+ abstract address(opt?: object): Promise<Encoded.AccountAddress>;
65
68
  }
@@ -23,14 +23,14 @@ import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
23
23
  import { messageToHash, verifyMessage as verifyMessageCrypto, hash } from "../utils/crypto.mjs";
24
24
  import { buildTx } from "../tx/builder/index.mjs";
25
25
  import { decode } from "../utils/encoder.mjs";
26
- import { TX_TYPE } from "../tx/builder/schema.mjs";
26
+ import { Tag } from "../tx/builder/constants.mjs";
27
27
  import { getNetworkId } from "../Node.mjs";
28
28
  import { concatBuffers } from "../utils/other.mjs";
29
+
29
30
  /**
30
31
  * Check is provided object looks like an instance of AccountBase
31
32
  * @param acc - Object to check
32
33
  */
33
-
34
34
  export const isAccountBase = acc => !['sign', 'address', 'signTransaction', 'signMessage'].some(f => typeof acc[f] !== 'function');
35
35
  /**
36
36
  * Account is one of the three basic building blocks of an
@@ -78,7 +78,7 @@ export default class AccountBase {
78
78
  return buildTx({
79
79
  encodedTx: rlpBinaryTx,
80
80
  signatures
81
- }, TX_TYPE.signed).tx;
81
+ }, Tag.SignedTx).tx;
82
82
  }
83
83
  /**
84
84
  * Get network Id
@@ -1 +1 @@
1
- {"version":3,"file":"Base.mjs","names":["messageToHash","verifyMessage","verifyMessageCrypto","hash","buildTx","decode","TX_TYPE","getNetworkId","concatBuffers","isAccountBase","acc","some","f","AccountBase","constructor","networkId","signTransaction","tx","innerTx","options","prefixes","push","rlpBinaryTx","txWithNetworkId","from","join","signatures","sign","encodedTx","signed","signMessage","message","returnHex","sig","toString","signature","address"],"sources":["../../src/account/Base.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport { messageToHash, verifyMessage as verifyMessageCrypto, hash } from '../utils/crypto'\nimport { buildTx } from '../tx/builder'\nimport { decode, EncodedData } from '../utils/encoder'\nimport { TX_TYPE } from '../tx/builder/schema'\nimport { getNetworkId } from '../Node'\nimport { concatBuffers } from '../utils/other'\n\n/**\n * Check is provided object looks like an instance of AccountBase\n * @param acc - Object to check\n */\nexport const isAccountBase = (acc: AccountBase | any): boolean =>\n !['sign', 'address', 'signTransaction', 'signMessage'].some(f => typeof acc[f] !== 'function')\n\n/**\n * Account is one of the three basic building blocks of an\n * {@link AeSdk} and provides access to a signing key pair.\n */\nexport default abstract class AccountBase {\n networkId?: string\n\n /**\n * @param options - Options\n * @param options.networkId - Using for signing transactions\n */\n constructor ({ networkId }: { networkId?: string } = {}) {\n this.networkId ??= networkId\n }\n\n /**\n * Sign encoded transaction\n * @param tx - Transaction to sign\n * @param opt - Options\n * @param opt.innerTx - Sign as inner transaction for PayingFor\n * @returns Signed transaction\n */\n async signTransaction (\n tx: EncodedData<'tx'>,\n { innerTx, networkId, ...options }: { innerTx?: boolean, networkId?: string } = {}\n ): Promise<EncodedData<'tx'>> {\n const prefixes = [await this.getNetworkId({ networkId })]\n if (innerTx === true) prefixes.push('inner_tx')\n const rlpBinaryTx = decode(tx)\n const txWithNetworkId = concatBuffers([Buffer.from(prefixes.join('-')), hash(rlpBinaryTx)])\n\n const signatures = [await this.sign(txWithNetworkId, options)]\n return buildTx({ encodedTx: rlpBinaryTx, signatures }, TX_TYPE.signed).tx\n }\n\n /**\n * Get network Id\n * @returns Network Id\n */\n readonly getNetworkId = getNetworkId\n\n /**\n * Sign message\n * @param message - Message to sign\n * @param opt - Options\n * @returns Signature as hex string of Uint8Array\n */\n async signMessage (\n message: string, { returnHex = false, ...options }: { returnHex?: boolean } = {}\n ): Promise<string | Uint8Array> {\n const sig = await this.sign(messageToHash(message), options)\n return returnHex ? Buffer.from(sig).toString('hex') : sig\n }\n\n /**\n * Verify message\n * @param message - Message to verify\n * @param signature - Signature\n * @param options - Options\n */\n async verifyMessage (\n message: string, signature: string | Uint8Array, options?: object\n ): Promise<boolean> {\n return verifyMessageCrypto(\n message,\n typeof signature === 'string' ? Buffer.from(signature, 'hex') : signature,\n decode(await this.address(options))\n )\n }\n\n /**\n * Sign data blob\n * @param data - Data blob to sign\n * @param options - Options\n * @returns Signed data blob\n */\n abstract sign (data: string | Uint8Array, options?: any): Promise<Uint8Array>\n\n /**\n * Obtain account address\n * @returns Public account address\n */\n abstract address (opt?: object): Promise<EncodedData<'ak'>>\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;SACSA,a,EAAeC,aAAa,IAAIC,mB,EAAqBC,I;SACrDC,O;SACAC,M;SACAC,O;SACAC,Y;SACAC,a;AAET;AACA;AACA;AACA;;AACA,OAAO,MAAMC,aAAa,GAAIC,GAAD,IAC3B,CAAC,CAAC,MAAD,EAAS,SAAT,EAAoB,iBAApB,EAAuC,aAAvC,EAAsDC,IAAtD,CAA2DC,CAAC,IAAI,OAAOF,GAAG,CAACE,CAAD,CAAV,KAAkB,UAAlF,CADI;AAGP;AACA;AACA;AACA;;AACA,eAAe,MAAeC,WAAf,CAA2B;EAGxC;AACF;AACA;AACA;EACEC,WAAW,GAA8C;IAAA;;IAAA,IAA5C;MAAEC;IAAF,CAA4C,uEAAJ,EAAI;;IAAA,sCA4BjCR,YA5BiC;;IACvD,wBAAKQ,SAAL,kEAAKA,SAAL,GAAmBA,SAAnB;EACD;EAED;AACF;AACA;AACA;AACA;AACA;AACA;;;EACuB,MAAfC,eAAe,CACnBC,EADmB,EAGS;IAAA,IAD5B;MAAEC,OAAF;MAAWH,SAAX;MAAsB,GAAGI;IAAzB,CAC4B,uEADoD,EACpD;IAC5B,MAAMC,QAAQ,GAAG,CAAC,MAAM,KAAKb,YAAL,CAAkB;MAAEQ;IAAF,CAAlB,CAAP,CAAjB;IACA,IAAIG,OAAO,KAAK,IAAhB,EAAsBE,QAAQ,CAACC,IAAT,CAAc,UAAd;IACtB,MAAMC,WAAW,GAAGjB,MAAM,CAACY,EAAD,CAA1B;IACA,MAAMM,eAAe,GAAGf,aAAa,CAAC,CAAC,QAAOgB,IAAP,CAAYJ,QAAQ,CAACK,IAAT,CAAc,GAAd,CAAZ,CAAD,EAAkCtB,IAAI,CAACmB,WAAD,CAAtC,CAAD,CAArC;IAEA,MAAMI,UAAU,GAAG,CAAC,MAAM,KAAKC,IAAL,CAAUJ,eAAV,EAA2BJ,OAA3B,CAAP,CAAnB;IACA,OAAOf,OAAO,CAAC;MAAEwB,SAAS,EAAEN,WAAb;MAA0BI;IAA1B,CAAD,EAAyCpB,OAAO,CAACuB,MAAjD,CAAP,CAAgEZ,EAAvE;EACD;EAED;AACF;AACA;AACA;;;EAGE;AACF;AACA;AACA;AACA;AACA;EACmB,MAAXa,WAAW,CACfC,OADe,EAEe;IAAA,IADb;MAAEC,SAAS,GAAG,KAAd;MAAqB,GAAGb;IAAxB,CACa,uEADgD,EAChD;IAC9B,MAAMc,GAAG,GAAG,MAAM,KAAKN,IAAL,CAAU3B,aAAa,CAAC+B,OAAD,CAAvB,EAAkCZ,OAAlC,CAAlB;IACA,OAAOa,SAAS,GAAG,QAAOR,IAAP,CAAYS,GAAZ,EAAiBC,QAAjB,CAA0B,KAA1B,CAAH,GAAsCD,GAAtD;EACD;EAED;AACF;AACA;AACA;AACA;AACA;;;EACqB,MAAbhC,aAAa,CACjB8B,OADiB,EACAI,SADA,EACgChB,OADhC,EAEC;IAClB,OAAOjB,mBAAmB,CACxB6B,OADwB,EAExB,OAAOI,SAAP,KAAqB,QAArB,GAAgC,QAAOX,IAAP,CAAYW,SAAZ,EAAuB,KAAvB,CAAhC,GAAgEA,SAFxC,EAGxB9B,MAAM,CAAC,MAAM,KAAK+B,OAAL,CAAajB,OAAb,CAAP,CAHkB,CAA1B;EAKD;EAED;AACF;AACA;AACA;AACA;AACA;;;AAvE0C"}
1
+ {"version":3,"file":"Base.mjs","names":["messageToHash","verifyMessage","verifyMessageCrypto","hash","buildTx","decode","Tag","getNetworkId","concatBuffers","isAccountBase","acc","some","f","AccountBase","constructor","networkId","signTransaction","tx","innerTx","options","prefixes","push","rlpBinaryTx","txWithNetworkId","from","join","signatures","sign","encodedTx","SignedTx","signMessage","message","returnHex","sig","toString","signature","address"],"sources":["../../src/account/Base.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport { messageToHash, verifyMessage as verifyMessageCrypto, hash } from '../utils/crypto';\nimport { buildTx } from '../tx/builder';\nimport { decode, Encoded } from '../utils/encoder';\nimport { Tag } from '../tx/builder/constants';\nimport { getNetworkId } from '../Node';\nimport { concatBuffers } from '../utils/other';\nimport type { createMetaTx } from '../contract/ga';\n\n/**\n * Check is provided object looks like an instance of AccountBase\n * @param acc - Object to check\n */\nexport const isAccountBase = (acc: AccountBase | any): boolean => (\n !['sign', 'address', 'signTransaction', 'signMessage'].some((f) => typeof acc[f] !== 'function')\n);\n\n/**\n * Account is one of the three basic building blocks of an\n * {@link AeSdk} and provides access to a signing key pair.\n */\nexport default abstract class AccountBase {\n networkId?: string;\n\n /**\n * @param options - Options\n * @param options.networkId - Using for signing transactions\n */\n constructor({ networkId }: { networkId?: string } = {}) {\n this.networkId ??= networkId;\n }\n\n /**\n * Sign encoded transaction\n * @param tx - Transaction to sign\n * @param opt - Options\n * @param opt.innerTx - Sign as inner transaction for PayingFor\n * @returns Signed transaction\n */\n async signTransaction(\n tx: Encoded.Transaction,\n { innerTx, networkId, ...options }: {\n innerTx?: boolean;\n networkId?: string;\n authData?: Parameters<typeof createMetaTx>[1];\n authFun?: Parameters<typeof createMetaTx>[2];\n } & Omit<Partial<Parameters<typeof createMetaTx>[3]>, 'onAccount'> = {},\n ): Promise<Encoded.Transaction> {\n const prefixes = [await this.getNetworkId({ networkId })];\n if (innerTx === true) prefixes.push('inner_tx');\n const rlpBinaryTx = decode(tx);\n const txWithNetworkId = concatBuffers([Buffer.from(prefixes.join('-')), hash(rlpBinaryTx)]);\n\n const signatures = [await this.sign(txWithNetworkId, options)];\n return buildTx({ encodedTx: rlpBinaryTx, signatures }, Tag.SignedTx).tx;\n }\n\n /**\n * Get network Id\n * @returns Network Id\n */\n readonly getNetworkId = getNetworkId;\n\n /**\n * Sign message\n * @param message - Message to sign\n * @param opt - Options\n * @returns Signature as hex string of Uint8Array\n */\n async signMessage(\n message: string,\n { returnHex = false, ...options }: { returnHex?: boolean } = {},\n ): Promise<string | Uint8Array> {\n const sig = await this.sign(messageToHash(message), options);\n return returnHex ? Buffer.from(sig).toString('hex') : sig;\n }\n\n /**\n * Verify message\n * @param message - Message to verify\n * @param signature - Signature\n * @param options - Options\n */\n async verifyMessage(\n message: string,\n signature: string | Uint8Array,\n options?: object,\n ): Promise<boolean> {\n return verifyMessageCrypto(\n message,\n typeof signature === 'string' ? Buffer.from(signature, 'hex') : signature,\n decode(await this.address(options)),\n );\n }\n\n /**\n * Sign data blob\n * @param data - Data blob to sign\n * @param options - Options\n * @returns Signed data blob\n */\n abstract sign(data: string | Uint8Array, options?: any): Promise<Uint8Array>;\n\n /**\n * Obtain account address\n * @returns Public account address\n */\n abstract address(opt?: object): Promise<Encoded.AccountAddress>;\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;SACSA,a,EAAeC,aAAa,IAAIC,mB,EAAqBC,I;SACrDC,O;SACAC,M;SACAC,G;SACAC,Y;SACAC,a;;AAGT;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAIC,GAAD,IAC3B,CAAC,CAAC,MAAD,EAAS,SAAT,EAAoB,iBAApB,EAAuC,aAAvC,EAAsDC,IAAtD,CAA4DC,CAAD,IAAO,OAAOF,GAAG,CAACE,CAAD,CAAV,KAAkB,UAApF,CADI;AAIP;AACA;AACA;AACA;;AACA,eAAe,MAAeC,WAAf,CAA2B;EAGxC;AACF;AACA;AACA;EACEC,WAAW,GAA6C;IAAA;;IAAA,IAA5C;MAAEC;IAAF,CAA4C,uEAAJ,EAAI;;IAAA,sCAiChCR,YAjCgC;;IACtD,wBAAKQ,SAAL,kEAAKA,SAAL,GAAmBA,SAAnB;EACD;EAED;AACF;AACA;AACA;AACA;AACA;AACA;;;EACuB,MAAfC,eAAe,CACnBC,EADmB,EAQW;IAAA,IAN9B;MAAEC,OAAF;MAAWH,SAAX;MAAsB,GAAGI;IAAzB,CAM8B,uEADuC,EACvC;IAC9B,MAAMC,QAAQ,GAAG,CAAC,MAAM,KAAKb,YAAL,CAAkB;MAAEQ;IAAF,CAAlB,CAAP,CAAjB;IACA,IAAIG,OAAO,KAAK,IAAhB,EAAsBE,QAAQ,CAACC,IAAT,CAAc,UAAd;IACtB,MAAMC,WAAW,GAAGjB,MAAM,CAACY,EAAD,CAA1B;IACA,MAAMM,eAAe,GAAGf,aAAa,CAAC,CAAC,QAAOgB,IAAP,CAAYJ,QAAQ,CAACK,IAAT,CAAc,GAAd,CAAZ,CAAD,EAAkCtB,IAAI,CAACmB,WAAD,CAAtC,CAAD,CAArC;IAEA,MAAMI,UAAU,GAAG,CAAC,MAAM,KAAKC,IAAL,CAAUJ,eAAV,EAA2BJ,OAA3B,CAAP,CAAnB;IACA,OAAOf,OAAO,CAAC;MAAEwB,SAAS,EAAEN,WAAb;MAA0BI;IAA1B,CAAD,EAAyCpB,GAAG,CAACuB,QAA7C,CAAP,CAA8DZ,EAArE;EACD;EAED;AACF;AACA;AACA;;;EAGE;AACF;AACA;AACA;AACA;AACA;EACmB,MAAXa,WAAW,CACfC,OADe,EAGe;IAAA,IAD9B;MAAEC,SAAS,GAAG,KAAd;MAAqB,GAAGb;IAAxB,CAC8B,uEAD+B,EAC/B;IAC9B,MAAMc,GAAG,GAAG,MAAM,KAAKN,IAAL,CAAU3B,aAAa,CAAC+B,OAAD,CAAvB,EAAkCZ,OAAlC,CAAlB;IACA,OAAOa,SAAS,GAAG,QAAOR,IAAP,CAAYS,GAAZ,EAAiBC,QAAjB,CAA0B,KAA1B,CAAH,GAAsCD,GAAtD;EACD;EAED;AACF;AACA;AACA;AACA;AACA;;;EACqB,MAAbhC,aAAa,CACjB8B,OADiB,EAEjBI,SAFiB,EAGjBhB,OAHiB,EAIC;IAClB,OAAOjB,mBAAmB,CACxB6B,OADwB,EAExB,OAAOI,SAAP,KAAqB,QAArB,GAAgC,QAAOX,IAAP,CAAYW,SAAZ,EAAuB,KAAvB,CAAhC,GAAgEA,SAFxC,EAGxB9B,MAAM,CAAC,MAAM,KAAK+B,OAAL,CAAajB,OAAb,CAAP,CAHkB,CAA1B;EAKD;EAED;AACF;AACA;AACA;AACA;AACA;;;AA/E0C"}
@@ -1,7 +1,7 @@
1
1
  import AccountBase from './Base';
2
- import { EncodedData } from '../utils/encoder';
2
+ import { Encoded } from '../utils/encoder';
3
3
  export interface Keypair {
4
- publicKey: EncodedData<'ak'>;
4
+ publicKey: Encoded.AccountAddress;
5
5
  secretKey: string | Uint8Array;
6
6
  }
7
7
  /**
@@ -18,8 +18,9 @@ export default class AccountMemory extends AccountBase {
18
18
  */
19
19
  constructor({ keypair, gaId, ...options }: {
20
20
  keypair?: Keypair;
21
- gaId?: EncodedData<'ak'>;
21
+ gaId?: Encoded.AccountAddress;
22
22
  } & ConstructorParameters<typeof AccountBase>[0]);
23
23
  sign(data: string | Uint8Array): Promise<Uint8Array>;
24
- address(): Promise<EncodedData<'ak'>>;
24
+ signTransaction(tx: Encoded.Transaction, options?: Parameters<AccountBase['signTransaction']>[1]): Promise<Encoded.Transaction>;
25
+ address(): Promise<Encoded.AccountAddress>;
25
26
  }
@@ -22,8 +22,9 @@ const {
22
22
  import AccountBase from "./Base.mjs";
23
23
  import { sign, isValidKeypair } from "../utils/crypto.mjs";
24
24
  import { isHex } from "../utils/string.mjs";
25
- import { decode } from "../tx/builder/helpers.mjs";
26
- import { InvalidKeypairError, MissingParamError } from "../utils/errors.mjs";
25
+ import { ArgumentError, InvalidKeypairError, MissingParamError } from "../utils/errors.mjs";
26
+ import { decode } from "../utils/encoder.mjs";
27
+ import { createMetaTx } from "../contract/ga.mjs";
27
28
  const secrets = new WeakMap();
28
29
 
29
30
  /**
@@ -73,6 +74,27 @@ export default class AccountMemory extends AccountBase {
73
74
  return sign(data, secrets.get(this).secretKey);
74
75
  }
75
76
 
77
+ async signTransaction(tx) {
78
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
79
+ if (!this.isGa || options.innerTx === true) return super.signTransaction(tx, options);
80
+ const {
81
+ authData,
82
+ authFun,
83
+ onCompiler,
84
+ onNode
85
+ } = options;
86
+
87
+ if (authFun == null || authData == null || onCompiler == null || onNode == null) {
88
+ throw new ArgumentError('authData, authFun, onCompiler, onNode', 'provided', null);
89
+ }
90
+
91
+ return createMetaTx(tx, authData, authFun, {
92
+ onCompiler,
93
+ onNode,
94
+ onAccount: this
95
+ });
96
+ }
97
+
76
98
  async address() {
77
99
  return secrets.get(this).publicKey;
78
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Memory.mjs","names":["AccountBase","sign","isValidKeypair","isHex","decode","InvalidKeypairError","MissingParamError","secrets","WeakMap","AccountMemory","constructor","keypair","gaId","options","isGa","set","publicKey","isBuffer","secretKey","from","data","get","address"],"sources":["../../src/account/Memory.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport AccountBase from './Base'\nimport { sign, isValidKeypair } from '../utils/crypto'\nimport { isHex } from '../utils/string'\nimport { decode } from '../tx/builder/helpers'\nimport { InvalidKeypairError, MissingParamError } from '../utils/errors'\nimport { EncodedData } from '../utils/encoder'\n\nconst secrets = new WeakMap()\n\nexport interface Keypair {\n publicKey: EncodedData<'ak'>\n secretKey: string | Uint8Array\n}\n\n/**\n * In-memory account class\n */\nexport default class AccountMemory extends AccountBase {\n isGa: boolean\n\n /**\n * @param options - Options\n * @param options.keypair - Key pair to use\n * @param options.keypair.publicKey - Public key\n * @param options.keypair.secretKey - Private key\n * @param options.gaId - Address of generalized account\n */\n constructor (\n { keypair, gaId, ...options }: { keypair?: Keypair, gaId?: EncodedData<'ak'> } & ConstructorParameters<typeof AccountBase>[0]\n ) {\n super(options)\n\n this.isGa = gaId != null\n if (this.isGa && gaId != null) {\n decode(gaId)\n secrets.set(this, { publicKey: gaId })\n return\n }\n\n if (keypair == null) throw new MissingParamError('Either gaId or keypair is required')\n\n if (\n !Buffer.isBuffer(keypair.secretKey) &&\n typeof keypair.secretKey === 'string' && !isHex(keypair.secretKey)\n ) throw new InvalidKeypairError('Secret key must be hex string or Buffer')\n const secretKey = typeof keypair.secretKey === 'string'\n ? Buffer.from(keypair.secretKey, 'hex')\n : keypair.secretKey\n if (!isValidKeypair(secretKey, decode(keypair.publicKey))) {\n throw new InvalidKeypairError('Invalid Key Pair')\n }\n\n secrets.set(this, {\n secretKey,\n publicKey: keypair.publicKey\n })\n }\n\n async sign (data: string | Uint8Array): Promise<Uint8Array> {\n if (this.isGa) throw new InvalidKeypairError('You are trying to sign data using generalized account without keypair')\n return sign(data, secrets.get(this).secretKey)\n }\n\n async address (): Promise<EncodedData<'ak'>> {\n return secrets.get(this).publicKey\n }\n}\n"],"mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;OACOA,W;SACEC,I,EAAMC,c;SACNC,K;SACAC,M;SACAC,mB,EAAqBC,iB;AAG9B,MAAMC,OAAO,GAAG,IAAIC,OAAJ,EAAhB;;AAOA;AACA;AACA;AACA,eAAe,MAAMC,aAAN,SAA4BT,WAA5B,CAAwC;EAGrD;AACF;AACA;AACA;AACA;AACA;AACA;EACEU,WAAW,OAET;IAAA,IADA;MAAEC,OAAF;MAAWC,IAAX;MAAiB,GAAGC;IAApB,CACA;IACA,MAAMA,OAAN;IAEA,KAAKC,IAAL,GAAYF,IAAI,IAAI,IAApB;;IACA,IAAI,KAAKE,IAAL,IAAaF,IAAI,IAAI,IAAzB,EAA+B;MAC7BR,MAAM,CAACQ,IAAD,CAAN;MACAL,OAAO,CAACQ,GAAR,CAAY,IAAZ,EAAkB;QAAEC,SAAS,EAAEJ;MAAb,CAAlB;MACA;IACD;;IAED,IAAID,OAAO,IAAI,IAAf,EAAqB,MAAM,IAAIL,iBAAJ,CAAsB,oCAAtB,CAAN;IAErB,IACE,CAAC,QAAOW,QAAP,CAAgBN,OAAO,CAACO,SAAxB,CAAD,IACA,OAAOP,OAAO,CAACO,SAAf,KAA6B,QAD7B,IACyC,CAACf,KAAK,CAACQ,OAAO,CAACO,SAAT,CAFjD,EAGE,MAAM,IAAIb,mBAAJ,CAAwB,yCAAxB,CAAN;IACF,MAAMa,SAAS,GAAG,OAAOP,OAAO,CAACO,SAAf,KAA6B,QAA7B,GACd,QAAOC,IAAP,CAAYR,OAAO,CAACO,SAApB,EAA+B,KAA/B,CADc,GAEdP,OAAO,CAACO,SAFZ;;IAGA,IAAI,CAAChB,cAAc,CAACgB,SAAD,EAAYd,MAAM,CAACO,OAAO,CAACK,SAAT,CAAlB,CAAnB,EAA2D;MACzD,MAAM,IAAIX,mBAAJ,CAAwB,kBAAxB,CAAN;IACD;;IAEDE,OAAO,CAACQ,GAAR,CAAY,IAAZ,EAAkB;MAChBG,SADgB;MAEhBF,SAAS,EAAEL,OAAO,CAACK;IAFH,CAAlB;EAID;;EAES,MAAJf,IAAI,CAAEmB,IAAF,EAAkD;IAC1D,IAAI,KAAKN,IAAT,EAAe,MAAM,IAAIT,mBAAJ,CAAwB,uEAAxB,CAAN;IACf,OAAOJ,IAAI,CAACmB,IAAD,EAAOb,OAAO,CAACc,GAAR,CAAY,IAAZ,EAAkBH,SAAzB,CAAX;EACD;;EAEY,MAAPI,OAAO,GAAgC;IAC3C,OAAOf,OAAO,CAACc,GAAR,CAAY,IAAZ,EAAkBL,SAAzB;EACD;;AAhDoD"}
1
+ {"version":3,"file":"Memory.mjs","names":["AccountBase","sign","isValidKeypair","isHex","ArgumentError","InvalidKeypairError","MissingParamError","decode","createMetaTx","secrets","WeakMap","AccountMemory","constructor","keypair","gaId","options","isGa","set","publicKey","isBuffer","secretKey","from","data","get","signTransaction","tx","innerTx","authData","authFun","onCompiler","onNode","onAccount","address"],"sources":["../../src/account/Memory.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport AccountBase from './Base';\nimport { sign, isValidKeypair } from '../utils/crypto';\nimport { isHex } from '../utils/string';\nimport { ArgumentError, InvalidKeypairError, MissingParamError } from '../utils/errors';\nimport { decode, Encoded } from '../utils/encoder';\nimport { createMetaTx } from '../contract/ga';\n\nconst secrets = new WeakMap();\n\nexport interface Keypair {\n publicKey: Encoded.AccountAddress;\n secretKey: string | Uint8Array;\n}\n\n/**\n * In-memory account class\n */\nexport default class AccountMemory extends AccountBase {\n isGa: boolean;\n\n /**\n * @param options - Options\n * @param options.keypair - Key pair to use\n * @param options.keypair.publicKey - Public key\n * @param options.keypair.secretKey - Private key\n * @param options.gaId - Address of generalized account\n */\n constructor(\n { keypair, gaId, ...options }: { keypair?: Keypair; gaId?: Encoded.AccountAddress }\n & ConstructorParameters<typeof AccountBase>[0],\n ) {\n super(options);\n\n this.isGa = gaId != null;\n if (this.isGa && gaId != null) {\n decode(gaId);\n secrets.set(this, { publicKey: gaId });\n return;\n }\n\n if (keypair == null) throw new MissingParamError('Either gaId or keypair is required');\n\n if (\n !Buffer.isBuffer(keypair.secretKey)\n && typeof keypair.secretKey === 'string' && !isHex(keypair.secretKey)\n ) throw new InvalidKeypairError('Secret key must be hex string or Buffer');\n const secretKey = typeof keypair.secretKey === 'string'\n ? Buffer.from(keypair.secretKey, 'hex')\n : keypair.secretKey;\n if (!isValidKeypair(secretKey, decode(keypair.publicKey))) {\n throw new InvalidKeypairError('Invalid Key Pair');\n }\n\n secrets.set(this, {\n secretKey,\n publicKey: keypair.publicKey,\n });\n }\n\n async sign(data: string | Uint8Array): Promise<Uint8Array> {\n if (this.isGa) throw new InvalidKeypairError('You are trying to sign data using generalized account without keypair');\n return sign(data, secrets.get(this).secretKey);\n }\n\n async signTransaction(\n tx: Encoded.Transaction,\n options: Parameters<AccountBase['signTransaction']>[1] = {},\n ): Promise<Encoded.Transaction> {\n if (!this.isGa || options.innerTx === true) return super.signTransaction(tx, options);\n const {\n authData, authFun, onCompiler, onNode,\n } = options;\n if (authFun == null || authData == null || onCompiler == null || onNode == null) {\n throw new ArgumentError('authData, authFun, onCompiler, onNode', 'provided', null);\n }\n return createMetaTx(tx, authData, authFun, { onCompiler, onNode, onAccount: this });\n }\n\n async address(): Promise<Encoded.AccountAddress> {\n return secrets.get(this).publicKey;\n }\n}\n"],"mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;OACOA,W;SACEC,I,EAAMC,c;SACNC,K;SACAC,a,EAAeC,mB,EAAqBC,iB;SACpCC,M;SACAC,Y;AAET,MAAMC,OAAO,GAAG,IAAIC,OAAJ,EAAhB;;AAOA;AACA;AACA;AACA,eAAe,MAAMC,aAAN,SAA4BX,WAA5B,CAAwC;EAGrD;AACF;AACA;AACA;AACA;AACA;AACA;EACEY,WAAW,OAGT;IAAA,IAFA;MAAEC,OAAF;MAAWC,IAAX;MAAiB,GAAGC;IAApB,CAEA;IACA,MAAMA,OAAN;IAEA,KAAKC,IAAL,GAAYF,IAAI,IAAI,IAApB;;IACA,IAAI,KAAKE,IAAL,IAAaF,IAAI,IAAI,IAAzB,EAA+B;MAC7BP,MAAM,CAACO,IAAD,CAAN;MACAL,OAAO,CAACQ,GAAR,CAAY,IAAZ,EAAkB;QAAEC,SAAS,EAAEJ;MAAb,CAAlB;MACA;IACD;;IAED,IAAID,OAAO,IAAI,IAAf,EAAqB,MAAM,IAAIP,iBAAJ,CAAsB,oCAAtB,CAAN;IAErB,IACE,CAAC,QAAOa,QAAP,CAAgBN,OAAO,CAACO,SAAxB,CAAD,IACG,OAAOP,OAAO,CAACO,SAAf,KAA6B,QADhC,IAC4C,CAACjB,KAAK,CAACU,OAAO,CAACO,SAAT,CAFpD,EAGE,MAAM,IAAIf,mBAAJ,CAAwB,yCAAxB,CAAN;IACF,MAAMe,SAAS,GAAG,OAAOP,OAAO,CAACO,SAAf,KAA6B,QAA7B,GACd,QAAOC,IAAP,CAAYR,OAAO,CAACO,SAApB,EAA+B,KAA/B,CADc,GAEdP,OAAO,CAACO,SAFZ;;IAGA,IAAI,CAAClB,cAAc,CAACkB,SAAD,EAAYb,MAAM,CAACM,OAAO,CAACK,SAAT,CAAlB,CAAnB,EAA2D;MACzD,MAAM,IAAIb,mBAAJ,CAAwB,kBAAxB,CAAN;IACD;;IAEDI,OAAO,CAACQ,GAAR,CAAY,IAAZ,EAAkB;MAChBG,SADgB;MAEhBF,SAAS,EAAEL,OAAO,CAACK;IAFH,CAAlB;EAID;;EAES,MAAJjB,IAAI,CAACqB,IAAD,EAAiD;IACzD,IAAI,KAAKN,IAAT,EAAe,MAAM,IAAIX,mBAAJ,CAAwB,uEAAxB,CAAN;IACf,OAAOJ,IAAI,CAACqB,IAAD,EAAOb,OAAO,CAACc,GAAR,CAAY,IAAZ,EAAkBH,SAAzB,CAAX;EACD;;EAEoB,MAAfI,eAAe,CACnBC,EADmB,EAGW;IAAA,IAD9BV,OAC8B,uEAD2B,EAC3B;IAC9B,IAAI,CAAC,KAAKC,IAAN,IAAcD,OAAO,CAACW,OAAR,KAAoB,IAAtC,EAA4C,OAAO,MAAMF,eAAN,CAAsBC,EAAtB,EAA0BV,OAA1B,CAAP;IAC5C,MAAM;MACJY,QADI;MACMC,OADN;MACeC,UADf;MAC2BC;IAD3B,IAEFf,OAFJ;;IAGA,IAAIa,OAAO,IAAI,IAAX,IAAmBD,QAAQ,IAAI,IAA/B,IAAuCE,UAAU,IAAI,IAArD,IAA6DC,MAAM,IAAI,IAA3E,EAAiF;MAC/E,MAAM,IAAI1B,aAAJ,CAAkB,uCAAlB,EAA2D,UAA3D,EAAuE,IAAvE,CAAN;IACD;;IACD,OAAOI,YAAY,CAACiB,EAAD,EAAKE,QAAL,EAAeC,OAAf,EAAwB;MAAEC,UAAF;MAAcC,MAAd;MAAsBC,SAAS,EAAE;IAAjC,CAAxB,CAAnB;EACD;;EAEY,MAAPC,OAAO,GAAoC;IAC/C,OAAOvB,OAAO,CAACc,GAAR,CAAY,IAAZ,EAAkBL,SAAzB;EACD;;AA/DoD"}
@@ -1,5 +1,5 @@
1
1
  import AccountBase from './Base';
2
- import { EncodedData } from '../utils/encoder';
2
+ import { Encoded } from '../utils/encoder';
3
3
  /**
4
4
  * Account provided by wallet
5
5
  * @param params - Params
@@ -9,17 +9,17 @@ import { EncodedData } from '../utils/encoder';
9
9
  */
10
10
  export default class AccountRpc extends AccountBase {
11
11
  _rpcClient: any;
12
- _address: EncodedData<'ak'>;
12
+ _address: Encoded.AccountAddress;
13
13
  constructor({ rpcClient, address, ...options }: {
14
14
  rpcClient: any;
15
- address: EncodedData<'ak'>;
15
+ address: Encoded.AccountAddress;
16
16
  } & ConstructorParameters<typeof AccountBase>[0]);
17
- sign(data: string | Uint8Array, options?: any): Promise<Uint8Array>;
18
- address(): Promise<EncodedData<'ak'>>;
17
+ sign(): Promise<Uint8Array>;
18
+ address(): Promise<Encoded.AccountAddress>;
19
19
  /**
20
20
  * @returns Signed transaction
21
21
  */
22
- signTransaction(tx: EncodedData<'tx'>, { innerTx, networkId }?: Parameters<AccountBase['signTransaction']>[1]): Promise<EncodedData<'tx'>>;
22
+ signTransaction(tx: Encoded.Transaction, { innerTx, networkId }?: Parameters<AccountBase['signTransaction']>[1]): Promise<Encoded.Transaction>;
23
23
  /**
24
24
  * @returns Signed message
25
25
  */