@aeternity/aepp-sdk 9.0.1 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/README.md +15 -14
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +7 -36
  4. package/dist/aepp-sdk.browser-script.js.map +1 -1
  5. package/dist/aepp-sdk.browser.js +1 -1
  6. package/dist/aepp-sdk.browser.js.map +1 -1
  7. package/dist/aepp-sdk.js +1 -1
  8. package/dist/aepp-sdk.js.map +1 -1
  9. package/es/account/base.mjs +179 -0
  10. package/es/account/base.mjs.map +1 -0
  11. package/es/account/memory.mjs +99 -0
  12. package/es/account/memory.mjs.map +1 -0
  13. package/es/account/multiple.mjs +179 -0
  14. package/es/account/multiple.mjs.map +1 -0
  15. package/es/ae/aens.mjs +404 -0
  16. package/es/ae/aens.mjs.map +1 -0
  17. package/es/ae/{aepp.js → aepp.mjs} +9 -9
  18. package/es/ae/aepp.mjs.map +1 -0
  19. package/es/ae/contract.mjs +159 -0
  20. package/es/ae/contract.mjs.map +1 -0
  21. package/es/ae/index.mjs +207 -0
  22. package/es/ae/index.mjs.map +1 -0
  23. package/es/ae/oracle.mjs +339 -0
  24. package/es/ae/oracle.mjs.map +1 -0
  25. package/es/ae/{universal.js → universal.mjs} +10 -10
  26. package/es/ae/universal.mjs.map +1 -0
  27. package/es/ae/{wallet.js → wallet.mjs} +10 -10
  28. package/es/ae/wallet.mjs.map +1 -0
  29. package/es/aepp-wallet-communication/schema.d.ts +74 -0
  30. package/es/bignumber.d.ts +1 -7
  31. package/es/chain/{index.js → index.mjs} +29 -9
  32. package/es/chain/index.mjs.map +1 -0
  33. package/es/chain/node.mjs +442 -0
  34. package/es/chain/node.mjs.map +1 -0
  35. package/es/channel/handlers.mjs +1110 -0
  36. package/es/channel/handlers.mjs.map +1 -0
  37. package/es/channel/{index.js → index.mjs} +245 -472
  38. package/es/channel/index.mjs.map +1 -0
  39. package/es/channel/internal.mjs +283 -0
  40. package/es/channel/internal.mjs.map +1 -0
  41. package/es/contract/aci.mjs +477 -0
  42. package/es/contract/aci.mjs.map +1 -0
  43. package/es/contract/compiler.mjs +115 -0
  44. package/es/contract/compiler.mjs.map +1 -0
  45. package/es/contract/ga/helpers.mjs +30 -0
  46. package/es/contract/ga/helpers.mjs.map +1 -0
  47. package/es/contract/ga/index.mjs +178 -0
  48. package/es/contract/ga/index.mjs.map +1 -0
  49. package/es/errors.d.ts +284 -0
  50. package/es/index.mjs +57 -0
  51. package/es/index.mjs.map +1 -0
  52. package/es/node-pool/index.mjs +188 -0
  53. package/es/node-pool/index.mjs.map +1 -0
  54. package/es/node.mjs +133 -0
  55. package/es/node.mjs.map +1 -0
  56. package/es/other.d.ts +1 -1
  57. package/es/tx/builder/field-types.mjs +74 -0
  58. package/es/tx/builder/field-types.mjs.map +1 -0
  59. package/es/tx/builder/helpers.mjs +363 -0
  60. package/es/tx/builder/helpers.mjs.map +1 -0
  61. package/es/tx/builder/index.mjs +606 -0
  62. package/es/tx/builder/index.mjs.map +1 -0
  63. package/es/tx/builder/schema.mjs +760 -0
  64. package/es/tx/builder/schema.mjs.map +1 -0
  65. package/es/tx/{index.js → index.mjs} +107 -15
  66. package/es/tx/index.mjs.map +1 -0
  67. package/es/tx/tx-object.mjs +283 -0
  68. package/es/tx/tx-object.mjs.map +1 -0
  69. package/es/tx/tx.mjs +938 -0
  70. package/es/tx/tx.mjs.map +1 -0
  71. package/es/tx/validator.mjs +247 -0
  72. package/es/tx/validator.mjs.map +1 -0
  73. package/es/typings/blakejs/index.d.mjs +2 -0
  74. package/es/typings/blakejs/{index.d.js.map → index.d.mjs.map} +1 -1
  75. package/es/utils/aepp-wallet-communication/connection/{browser-runtime.js → browser-runtime.mjs} +27 -29
  76. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +1 -0
  77. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +183 -0
  78. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +1 -0
  79. package/es/utils/aepp-wallet-communication/connection/{index.js → index.mjs} +7 -3
  80. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +1 -0
  81. package/es/utils/aepp-wallet-communication/{content-script-bridge.js → content-script-bridge.mjs} +29 -23
  82. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +1 -0
  83. package/es/utils/aepp-wallet-communication/helpers.mjs +92 -0
  84. package/es/utils/aepp-wallet-communication/helpers.mjs.map +1 -0
  85. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +375 -0
  86. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +1 -0
  87. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +275 -0
  88. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +1 -0
  89. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +541 -0
  90. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +1 -0
  91. package/es/utils/aepp-wallet-communication/schema.mjs +102 -0
  92. package/es/utils/aepp-wallet-communication/schema.mjs.map +1 -0
  93. package/es/utils/aepp-wallet-communication/wallet-detector.mjs +110 -0
  94. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
  95. package/es/utils/amount-formatter.mjs +139 -0
  96. package/es/utils/amount-formatter.mjs.map +1 -0
  97. package/es/utils/async-init.mjs +64 -0
  98. package/es/utils/async-init.mjs.map +1 -0
  99. package/es/utils/bignumber.mjs +21 -0
  100. package/es/utils/bignumber.mjs.map +1 -0
  101. package/es/utils/{bytes.js → bytes.mjs} +16 -12
  102. package/es/utils/bytes.mjs.map +1 -0
  103. package/es/utils/{crypto-ts.js → crypto-ts.mjs} +11 -3
  104. package/es/utils/crypto-ts.mjs.map +1 -0
  105. package/es/utils/crypto.mjs +239 -0
  106. package/es/utils/crypto.mjs.map +1 -0
  107. package/es/utils/errors.mjs +689 -0
  108. package/es/utils/errors.mjs.map +1 -0
  109. package/es/utils/hd-wallet.mjs +111 -0
  110. package/es/utils/hd-wallet.mjs.map +1 -0
  111. package/es/utils/json-big.mjs +45 -0
  112. package/es/utils/json-big.mjs.map +1 -0
  113. package/es/utils/keystore.mjs +240 -0
  114. package/es/utils/keystore.mjs.map +1 -0
  115. package/es/utils/mptree.mjs +161 -0
  116. package/es/utils/mptree.mjs.map +1 -0
  117. package/es/utils/other.mjs +43 -0
  118. package/es/utils/other.mjs.map +1 -0
  119. package/es/utils/semver-satisfies.mjs +16 -0
  120. package/es/utils/semver-satisfies.mjs.map +1 -0
  121. package/es/utils/{string.js → string.mjs} +5 -14
  122. package/es/utils/string.mjs.map +1 -0
  123. package/es/utils/swagger.mjs +164 -0
  124. package/es/utils/swagger.mjs.map +1 -0
  125. package/package.json +55 -62
  126. package/src/account/base.js +3 -1
  127. package/src/account/memory.js +13 -8
  128. package/src/account/multiple.js +31 -22
  129. package/src/ae/aens.js +75 -77
  130. package/src/ae/aepp.js +2 -2
  131. package/src/ae/contract.js +27 -291
  132. package/src/ae/index.js +9 -7
  133. package/src/ae/oracle.js +51 -28
  134. package/src/ae/universal.js +4 -2
  135. package/src/ae/wallet.js +2 -2
  136. package/src/chain/index.js +29 -6
  137. package/src/chain/node.js +95 -67
  138. package/src/channel/handlers.js +30 -21
  139. package/src/channel/index.js +44 -20
  140. package/src/channel/internal.js +30 -24
  141. package/src/contract/aci.js +376 -0
  142. package/src/contract/compiler.js +41 -91
  143. package/src/contract/ga/helpers.js +10 -13
  144. package/src/contract/ga/index.js +42 -33
  145. package/src/index.js +9 -10
  146. package/src/node-pool/index.js +29 -17
  147. package/src/node.js +33 -36
  148. package/src/tx/builder/field-types.js +61 -0
  149. package/src/tx/builder/helpers.js +126 -84
  150. package/src/tx/builder/index.js +83 -41
  151. package/src/tx/builder/schema.js +50 -40
  152. package/src/tx/index.js +101 -12
  153. package/src/tx/tx-object.js +35 -15
  154. package/src/tx/tx.js +232 -153
  155. package/src/tx/validator.js +34 -12
  156. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +11 -5
  157. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +35 -13
  158. package/src/utils/aepp-wallet-communication/connection/index.js +2 -1
  159. package/src/utils/aepp-wallet-communication/content-script-bridge.js +14 -7
  160. package/src/utils/aepp-wallet-communication/helpers.js +6 -14
  161. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +107 -60
  162. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +24 -11
  163. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +98 -56
  164. package/src/utils/aepp-wallet-communication/schema.ts +80 -0
  165. package/src/utils/aepp-wallet-communication/wallet-detector.js +6 -2
  166. package/src/utils/amount-formatter.ts +4 -3
  167. package/src/utils/async-init.js +10 -6
  168. package/src/utils/bignumber.ts +3 -10
  169. package/src/utils/bytes.ts +3 -2
  170. package/src/utils/crypto-ts.ts +2 -2
  171. package/src/utils/crypto.js +10 -144
  172. package/src/utils/errors.ts +683 -0
  173. package/src/utils/hd-wallet.js +11 -26
  174. package/src/utils/keystore.js +57 -53
  175. package/src/utils/mptree.ts +12 -6
  176. package/src/utils/other.ts +1 -1
  177. package/src/utils/semver-satisfies.ts +1 -1
  178. package/src/utils/swagger.js +75 -45
  179. package/es/account/base.js +0 -259
  180. package/es/account/base.js.map +0 -1
  181. package/es/account/memory.js +0 -86
  182. package/es/account/memory.js.map +0 -1
  183. package/es/account/multiple.js +0 -267
  184. package/es/account/multiple.js.map +0 -1
  185. package/es/ae/aens.js +0 -829
  186. package/es/ae/aens.js.map +0 -1
  187. package/es/ae/aepp.js.map +0 -1
  188. package/es/ae/contract.js +0 -985
  189. package/es/ae/contract.js.map +0 -1
  190. package/es/ae/index.js +0 -442
  191. package/es/ae/index.js.map +0 -1
  192. package/es/ae/oracle.js +0 -690
  193. package/es/ae/oracle.js.map +0 -1
  194. package/es/ae/universal.js.map +0 -1
  195. package/es/ae/wallet.js.map +0 -1
  196. package/es/chain/index.js.map +0 -1
  197. package/es/chain/node.js +0 -1119
  198. package/es/chain/node.js.map +0 -1
  199. package/es/channel/handlers.js +0 -1601
  200. package/es/channel/handlers.js.map +0 -1
  201. package/es/channel/index.js.map +0 -1
  202. package/es/channel/internal.js +0 -438
  203. package/es/channel/internal.js.map +0 -1
  204. package/es/contract/aci/helpers.js +0 -298
  205. package/es/contract/aci/helpers.js.map +0 -1
  206. package/es/contract/aci/index.js +0 -517
  207. package/es/contract/aci/index.js.map +0 -1
  208. package/es/contract/aci/transformation.js +0 -742
  209. package/es/contract/aci/transformation.js.map +0 -1
  210. package/es/contract/compiler.js +0 -316
  211. package/es/contract/compiler.js.map +0 -1
  212. package/es/contract/ga/helpers.js +0 -120
  213. package/es/contract/ga/helpers.js.map +0 -1
  214. package/es/contract/ga/index.js +0 -307
  215. package/es/contract/ga/index.js.map +0 -1
  216. package/es/contract/index.js +0 -158
  217. package/es/contract/index.js.map +0 -1
  218. package/es/index.js +0 -57
  219. package/es/index.js.map +0 -1
  220. package/es/node-pool/index.js +0 -204
  221. package/es/node-pool/index.js.map +0 -1
  222. package/es/node.js +0 -228
  223. package/es/node.js.map +0 -1
  224. package/es/tx/builder/helpers.js +0 -355
  225. package/es/tx/builder/helpers.js.map +0 -1
  226. package/es/tx/builder/index.js +0 -686
  227. package/es/tx/builder/index.js.map +0 -1
  228. package/es/tx/builder/schema.js +0 -695
  229. package/es/tx/builder/schema.js.map +0 -1
  230. package/es/tx/index.js.map +0 -1
  231. package/es/tx/tx-object.js +0 -297
  232. package/es/tx/tx-object.js.map +0 -1
  233. package/es/tx/tx.js +0 -1757
  234. package/es/tx/tx.js.map +0 -1
  235. package/es/tx/validator.js +0 -344
  236. package/es/tx/validator.js.map +0 -1
  237. package/es/typings/blakejs/index.d.js +0 -2
  238. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +0 -1
  239. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -211
  240. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +0 -1
  241. package/es/utils/aepp-wallet-communication/connection/index.js.map +0 -1
  242. package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +0 -1
  243. package/es/utils/aepp-wallet-communication/helpers.js +0 -148
  244. package/es/utils/aepp-wallet-communication/helpers.js.map +0 -1
  245. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -652
  246. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +0 -1
  247. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -285
  248. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +0 -1
  249. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -763
  250. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +0 -1
  251. package/es/utils/aepp-wallet-communication/schema.js +0 -103
  252. package/es/utils/aepp-wallet-communication/schema.js.map +0 -1
  253. package/es/utils/aepp-wallet-communication/wallet-detector.js +0 -135
  254. package/es/utils/aepp-wallet-communication/wallet-detector.js.map +0 -1
  255. package/es/utils/amount-formatter.js +0 -152
  256. package/es/utils/amount-formatter.js.map +0 -1
  257. package/es/utils/async-init.js +0 -103
  258. package/es/utils/async-init.js.map +0 -1
  259. package/es/utils/bignumber.js +0 -36
  260. package/es/utils/bignumber.js.map +0 -1
  261. package/es/utils/bytes.js.map +0 -1
  262. package/es/utils/crypto-ts.js.map +0 -1
  263. package/es/utils/crypto.js +0 -358
  264. package/es/utils/crypto.js.map +0 -1
  265. package/es/utils/hd-wallet.js +0 -148
  266. package/es/utils/hd-wallet.js.map +0 -1
  267. package/es/utils/json-big.js +0 -78
  268. package/es/utils/json-big.js.map +0 -1
  269. package/es/utils/keystore.js +0 -393
  270. package/es/utils/keystore.js.map +0 -1
  271. package/es/utils/mptree.js +0 -198
  272. package/es/utils/mptree.js.map +0 -1
  273. package/es/utils/other.js +0 -93
  274. package/es/utils/other.js.map +0 -1
  275. package/es/utils/semver-satisfies.js +0 -35
  276. package/es/utils/semver-satisfies.js.map +0 -1
  277. package/es/utils/string.js.map +0 -1
  278. package/es/utils/swagger.js +0 -269
  279. package/es/utils/swagger.js.map +0 -1
  280. package/src/contract/aci/helpers.js +0 -140
  281. package/src/contract/aci/index.js +0 -191
  282. package/src/contract/aci/transformation.js +0 -464
  283. package/src/contract/index.js +0 -159
  284. package/src/utils/aepp-wallet-communication/schema.js +0 -110
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/tx/builder/index.js"],"names":["BigNumber","decode","rlpDecode","encode","rlpEncode","AE_AMOUNT_FORMATS","formatAmount","hash","DEFAULT_FEE","FIELD_TYPES","OBJECT_ID_TX_TYPE","PREFIX_ID_TAG","TX_DESERIALIZATION_SCHEMA","TX_FEE_BASE_GAS","TX_FEE_OTHER_GAS","TX_SERIALIZATION_SCHEMA","TX_TYPE","VALIDATION_MESSAGE","VSN","readInt","readId","readPointers","writeId","writeInt","buildPointers","toBytes","MPTree","ORACLE_TTL_TYPES","delta","block","deserializeField","value","type","prefix","ctVersion","vm","abi","vmVersion","Buffer","from","abiVersion","amount","id","ids","bool","binary","stateTree","string","toString","payload","pointers","rlpBinary","unpackTx","rlpBinaries","v","rawBinary","hex","offChainUpdates","callStack","mptrees","t","callReturnType","sophiaCodeTypeInfo","acc","funHash","fnName","argType","outType","serializeField","signatures","split","rlpEncoded","serialize","validateField","key","assert","valid","params","undefined","isMinusValue","isNaN","isBigNumber","lt","gte","prefixes","p","Object","prototype","hasOwnProperty","call","e","transformParams","schema","denomination","_","schemaKeys","k","getOracleRelativeTtl","txType","ttlKey","oracleRegister","oracleExtend","oracleQuery","oracleResponse","calculateMinFee","gas","vsn","multiplier","times","actualFee","buildFee","fee","expected","eq","buildTx","txWithOutFee","txSize","length","plus","relativeTtl","innerTxSize","gaMeta","payingFor","tx","encodedTx","calculateFee","showWarning","console","warn","validateParams","excludeKeys","buildRawTx","AETTOS","filteredSchema","Error","fieldType","unpackRawTx","index","getSchema","objId","isDeserialize","firstKey","tag","txObject","fromRlpBinary","buildTxHash","rawTx","data"],"mappings":"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","sourcesContent":["import BigNumber from 'bignumber.js'\nimport { decode as rlpDecode, encode as rlpEncode } from 'rlp'\nimport { AE_AMOUNT_FORMATS, formatAmount } from '../../utils/amount-formatter'\nimport { hash } from '../../utils/crypto'\n\nimport {\n DEFAULT_FEE,\n FIELD_TYPES,\n OBJECT_ID_TX_TYPE,\n PREFIX_ID_TAG,\n TX_DESERIALIZATION_SCHEMA,\n TX_FEE_BASE_GAS,\n TX_FEE_OTHER_GAS,\n TX_SERIALIZATION_SCHEMA,\n TX_TYPE,\n VALIDATION_MESSAGE,\n VSN\n} from './schema'\nimport {\n readInt,\n readId,\n readPointers,\n writeId,\n writeInt,\n buildPointers,\n encode,\n decode\n} from './helpers'\nimport { toBytes } from '../../utils/bytes'\nimport MPTree from '../../utils/mptree'\n\n/**\n * JavaScript-based Transaction builder\n * @module @aeternity/aepp-sdk/es/tx/builder\n * @export TxBuilder\n * @example import { TxBuilder } from '@aeternity/aepp-sdk'\n */\n\nconst ORACLE_TTL_TYPES = {\n delta: 'delta',\n block: 'block'\n}\n\n// SERIALIZE AND DESERIALIZE PART\nfunction deserializeField (value, type, prefix) {\n if (!value) return ''\n switch (type) {\n case FIELD_TYPES.ctVersion: {\n const [vm, , abi] = value\n return { vmVersion: readInt(Buffer.from([vm])), abiVersion: readInt(Buffer.from([abi])) }\n }\n case FIELD_TYPES.amount:\n return readInt(value)\n case FIELD_TYPES.int:\n return readInt(value)\n case FIELD_TYPES.id:\n return readId(value)\n case FIELD_TYPES.ids:\n return value.map(readId)\n case FIELD_TYPES.bool:\n return value[0] === 1\n case FIELD_TYPES.binary:\n return encode(value, prefix)\n case FIELD_TYPES.stateTree:\n return encode(value, 'ss')\n case FIELD_TYPES.string:\n return value.toString()\n case FIELD_TYPES.payload:\n return encode(value, 'ba')\n case FIELD_TYPES.pointers:\n return readPointers(value)\n case FIELD_TYPES.rlpBinary:\n return unpackTx(value, true)\n case FIELD_TYPES.rlpBinaries:\n return value.map(v => unpackTx(v, true))\n case FIELD_TYPES.rawBinary:\n return value\n case FIELD_TYPES.hex:\n return value.toString('hex')\n case FIELD_TYPES.offChainUpdates:\n return value.map(v => unpackTx(v, true))\n case FIELD_TYPES.callStack:\n // TODO: fix this\n return [readInt(value)]\n case FIELD_TYPES.mptrees:\n return value.map(t => new MPTree(t))\n case FIELD_TYPES.callReturnType:\n switch (readInt(value)) {\n case '0': return 'ok'\n case '1': return 'error'\n case '2': return 'revert'\n default: return value\n }\n case FIELD_TYPES.sophiaCodeTypeInfo:\n return value\n .reduce(\n (acc, [funHash, fnName, argType, outType]) =>\n ({ ...acc, [fnName.toString()]: { funHash, argType, outType } }),\n {}\n )\n default:\n return value\n }\n}\n\nfunction serializeField (value, type, prefix) {\n switch (type) {\n case FIELD_TYPES.amount:\n case FIELD_TYPES.int:\n return writeInt(value)\n case FIELD_TYPES.id:\n return writeId(value)\n case FIELD_TYPES.ids:\n return value.map(writeId)\n case FIELD_TYPES.bool:\n return Buffer.from([value ? 1 : 0])\n case FIELD_TYPES.binary:\n return decode(value, prefix)\n case FIELD_TYPES.stateTree:\n return decode(value, 'ss')\n case FIELD_TYPES.hex:\n return Buffer.from(value, 'hex')\n case FIELD_TYPES.signatures:\n return value.map(Buffer.from)\n case FIELD_TYPES.payload:\n return typeof value === 'string' && value.split('_')[0] === 'ba'\n ? decode(value, 'ba')\n : toBytes(value)\n case FIELD_TYPES.string:\n return toBytes(value)\n case FIELD_TYPES.pointers:\n return buildPointers(value)\n case FIELD_TYPES.rlpBinary:\n return value.rlpEncoded ?? value\n case FIELD_TYPES.mptrees:\n return value.map(t => t.serialize())\n case FIELD_TYPES.ctVersion:\n return Buffer.from([...toBytes(value.vmVersion), 0, ...toBytes(value.abiVersion)])\n case FIELD_TYPES.callReturnType:\n switch (value) {\n case 'ok': return writeInt(0)\n case 'error': return writeInt(1)\n case 'revert': return writeInt(2)\n default: return value\n }\n default:\n return value\n }\n}\n\nfunction validateField (value, key, type, prefix) {\n const assert = (valid, params) => valid ? {} : { [key]: VALIDATION_MESSAGE[type](params) }\n // All fields are required\n if (value === undefined || value === null) return { [key]: 'Field is required' }\n\n // Validate type of value\n switch (type) {\n case FIELD_TYPES.amount:\n case FIELD_TYPES.int: {\n const isMinusValue = (!isNaN(value) || BigNumber.isBigNumber(value)) && BigNumber(value).lt(0)\n return assert((!isNaN(value) || BigNumber.isBigNumber(value)) && BigNumber(value).gte(0), { value, isMinusValue })\n }\n case FIELD_TYPES.id: {\n const prefixes = Array.isArray(prefix) ? prefix : [prefix]\n const p = prefixes.find(p => p === value.split('_')[0])\n return assert(p && PREFIX_ID_TAG[value.split('_')[0]], { value, prefix })\n }\n case FIELD_TYPES.binary:\n return assert(value.split('_')[0] === prefix, { prefix, value })\n case FIELD_TYPES.string:\n return assert(true)\n case FIELD_TYPES.ctVersion:\n return assert(typeof value === 'object' && Object.prototype.hasOwnProperty.call(value, 'abiVersion') && Object.prototype.hasOwnProperty.call(value, 'vmVersion'))\n case FIELD_TYPES.pointers:\n return assert(Array.isArray(value) && !value.find(e => e !== Object(e)), { value })\n default:\n return {}\n }\n}\n\nfunction transformParams (params, schema, { denomination } = {}) {\n params = schema\n .filter(([_, t]) => t === FIELD_TYPES.amount)\n .reduce((acc, [key]) => ({ ...params, [key]: formatAmount(params[key], { denomination }) }), params)\n const schemaKeys = schema.map(([k]) => k)\n return Object\n .entries(params)\n .reduce(\n (acc, [key, value]) => {\n if (schemaKeys.includes(key)) acc[key] = value\n if (['oracleTtl', 'queryTtl', 'responseTtl'].includes(key)) {\n acc[`${key}Type`] = value.type === ORACLE_TTL_TYPES.delta ? 0 : 1\n acc[`${key}Value`] = value.value\n }\n return acc\n },\n {}\n )\n}\n\n// INTERFACE\n\nfunction getOracleRelativeTtl (params, txType) {\n const ttlKey = {\n [TX_TYPE.oracleRegister]: 'oracleTtl',\n [TX_TYPE.oracleExtend]: 'oracleTtl',\n [TX_TYPE.oracleQuery]: 'queryTtl',\n [TX_TYPE.oracleResponse]: 'responseTtl'\n }[txType]\n\n if (params[ttlKey] || params[`${ttlKey}Value`]) {\n return params[`${ttlKey}Value`] || params[ttlKey].value\n }\n return 1\n}\n\n/**\n * Calculate min fee\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/index\n * @rtype (txType, { gas = 0, params }) => String\n * @param {String} txType - Transaction type\n * @param {Options} options - Options object\n * @param {String|Number} options.gas - Gas amount\n * @param {Object} options.params - Tx params\n * @return {String|Number}\n * @example calculateMinFee('spendTx', { gas, params })\n */\nexport function calculateMinFee (txType, { gas = 0, params, vsn }) {\n const multiplier = BigNumber(1e9) // 10^9 GAS_PRICE\n if (!params) return BigNumber(DEFAULT_FEE).times(multiplier).toString(10)\n\n let actualFee = buildFee(txType, { params: { ...params, fee: 0 }, multiplier, gas, vsn })\n let expected = BigNumber(0)\n\n while (!actualFee.eq(expected)) {\n actualFee = buildFee(txType, { params: { ...params, fee: actualFee }, multiplier, gas, vsn })\n expected = actualFee\n }\n return expected.toString(10)\n}\n\n/**\n * Calculate fee based on tx type and params\n * @param txType\n * @param params\n * @param gas\n * @param multiplier\n * @param vsn\n * @return {BigNumber}\n */\nfunction buildFee (txType, { params, gas = 0, multiplier, vsn }) {\n const { rlpEncoded: txWithOutFee } = buildTx({ ...params }, txType, { vsn })\n const txSize = txWithOutFee.length\n return TX_FEE_BASE_GAS(txType)\n .plus(TX_FEE_OTHER_GAS(txType, txSize, {\n relativeTtl: getOracleRelativeTtl(params, txType),\n innerTxSize: [TX_TYPE.gaMeta, TX_TYPE.payingFor].includes(txType)\n ? params.tx.tx.encodedTx.rlpEncoded.length : 0\n }))\n .times(multiplier)\n}\n\n/**\n * Calculate fee\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @rtype (fee, txType, gas = 0) => String\n * @param {String|Number} fee - fee\n * @param {String} txType - Transaction type\n * @param {Options} options - Options object\n * @param {String|Number} options.gas - Gas amount\n * @param {Object} options.params - Tx params\n * @return {String|Number}\n * @example calculateFee(null, 'spendTx', { gas, params })\n */\nexport function calculateFee (fee = 0, txType, { gas = 0, params, showWarning = true, vsn } = {}) {\n if (!params && showWarning) console.warn(`Can't build transaction fee, we will use DEFAULT_FEE(${DEFAULT_FEE})`)\n\n return fee || calculateMinFee(txType, { params, gas, vsn })\n}\n\n/**\n * Validate transaction params\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Object} params Object with tx params\n * @param {Array} schema Transaction schema\n * @param {Array} excludeKeys Array of keys to exclude for validation\n * @return {Object} Object with validation errors\n */\nexport function validateParams (params, schema, { excludeKeys = [] }) {\n return schema\n .filter(([key]) => !excludeKeys.includes(key) && key !== 'payload')\n .reduce(\n (acc, [key, type, prefix]) => Object.assign(acc, validateField(params[key], key, type, prefix)),\n {}\n )\n}\n\n/**\n * Build binary transaction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Object} params Object with tx params\n * @param {Array} schema Transaction schema\n * @param {Object} [options={}] options\n * @param {Array} [options.excludeKeys=[]] excludeKeys Array of keys to exclude for validation and build\n * @param {String} [options.denomination='aettos'] denomination Denomination of amounts (default: aettos)\n * @throws {Error} Validation error\n * @return {Array} Array with binary fields of transaction\n */\nexport function buildRawTx (params, schema, { excludeKeys = [], denomination = AE_AMOUNT_FORMATS.AETTOS } = {}) {\n const filteredSchema = schema.filter(([key]) => !excludeKeys.includes(key))\n\n // Transform `amount` type fields to `aettos`\n params = transformParams(params, filteredSchema, { denomination })\n // Validation\n const valid = validateParams(params, schema, { excludeKeys })\n if (Object.keys(valid).length) {\n throw new Error('Transaction build error. ' + JSON.stringify(valid))\n }\n\n return filteredSchema\n .map(([key, fieldType, prefix]) => serializeField(params[key], fieldType, prefix))\n}\n\n/**\n * Unpack binary transaction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Array} binary Array with binary transaction field's\n * @param {Array} schema Transaction schema\n * @return {Object} Object with transaction field's\n */\nexport function unpackRawTx (binary, schema) {\n return schema\n .reduce(\n (\n acc,\n [key, fieldType, prefix],\n index\n ) => Object.assign(acc, { [key]: deserializeField(binary[index], fieldType, prefix) }),\n {}\n )\n}\n\n/**\n * Get transaction serialization/deserialization schema\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {{ vsn: String, objId: Number, type: String }}\n * @throws {Error} Schema not found error\n * @return {Object} Schema\n */\nconst getSchema = ({ vsn, objId, type }) => {\n const isDeserialize = !!objId\n const firstKey = isDeserialize ? objId : type\n const schema = isDeserialize ? TX_DESERIALIZATION_SCHEMA : TX_SERIALIZATION_SCHEMA\n\n if (!schema[firstKey]) {\n throw new Error(`Transaction ${isDeserialize ? 'deserialization' : 'serialization'} not implemented for ${isDeserialize ? 'tag ' + objId : type}`)\n }\n if (!schema[firstKey][vsn]) {\n throw new Error(`Transaction ${isDeserialize ? 'deserialization' : 'serialization'} not implemented for ${isDeserialize ? 'tag ' + objId : type} version ${vsn}`)\n }\n return schema[firstKey][vsn]\n}\n\n/**\n * Build transaction hash\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Object} params Object with tx params\n * @param {String} type Transaction type\n * @param {Object} [options={}] options\n * @param {Object} [options.excludeKeys] excludeKeys Array of keys to exclude for validation and build\n * @param {String} [options.prefix] Prefix of transaction\n * @throws {Error} Validation error\n * @return {Object} { tx, rlpEncoded, binary } Object with tx -> Base64Check transaction hash with 'tx_' prefix, rlp encoded transaction and binary transaction\n */\nexport function buildTx (params, type, { excludeKeys = [], prefix = 'tx', vsn = VSN, denomination = AE_AMOUNT_FORMATS.AETTOS } = {}) {\n const [schema, tag] = getSchema({ type, vsn })\n const binary = buildRawTx({ ...params, VSN: vsn, tag }, schema, { excludeKeys, denomination: params.denomination || denomination }).filter(e => e !== undefined)\n\n const rlpEncoded = rlpEncode(binary)\n const tx = encode(rlpEncoded, prefix)\n\n return { tx, rlpEncoded, binary, txObject: unpackRawTx(binary, schema) }\n}\n\n/**\n * Unpack transaction hash\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {String|Buffer} encodedTx String or RLP encoded transaction array (if fromRlpBinary flag is true)\n * @param {Boolean} fromRlpBinary Unpack from RLP encoded transaction (default: false)\n * @param {String} prefix - Prefix of data\n * @return {Object} { tx, rlpEncoded, binary } Object with tx -> Object with transaction param's, rlp encoded transaction and binary transaction\n */\nexport function unpackTx (encodedTx, fromRlpBinary = false, prefix = 'tx') {\n const rlpEncoded = fromRlpBinary ? encodedTx : decode(encodedTx, prefix)\n const binary = rlpDecode(rlpEncoded)\n\n const objId = readInt(binary[0])\n const vsn = readInt(binary[1])\n const [schema] = getSchema({ objId, vsn })\n\n return { txType: OBJECT_ID_TX_TYPE[objId], tx: unpackRawTx(binary, schema), rlpEncoded, binary }\n}\n\n/**\n * Build a transaction hash\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {String | Buffer} rawTx base64 or rlp encoded transaction\n * @return {String} Transaction hash\n */\nexport function buildTxHash (rawTx) {\n const data = typeof rawTx === 'string' && rawTx.startsWith('tx_') ? decode(rawTx, 'tx') : rawTx\n return encode(hash(data), 'th')\n}\n\nexport default { calculateMinFee, calculateFee, unpackTx, unpackRawTx, buildTx, buildRawTx, validateParams, buildTxHash }\n"],"file":"index.js"}