@aeternity/aepp-sdk 10.0.0-beta.1 → 10.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 (113) hide show
  1. package/CHANGELOG.md +1603 -0
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.map +1 -1
  4. package/dist/aepp-sdk.browser.js +1 -1
  5. package/dist/aepp-sdk.browser.js.map +1 -1
  6. package/dist/aepp-sdk.js +1 -1
  7. package/dist/aepp-sdk.js.map +1 -1
  8. package/es/account/base.js +3 -1
  9. package/es/account/base.js.map +1 -1
  10. package/es/account/multiple.js +4 -2
  11. package/es/account/multiple.js.map +1 -1
  12. package/es/ae/aens.js +52 -38
  13. package/es/ae/aens.js.map +1 -1
  14. package/es/ae/contract.js +9 -5
  15. package/es/ae/contract.js.map +1 -1
  16. package/es/ae/index.js +4 -3
  17. package/es/ae/index.js.map +1 -1
  18. package/es/ae/oracle.js +4 -4
  19. package/es/ae/oracle.js.map +1 -1
  20. package/es/ae/universal.js.map +1 -1
  21. package/es/chain/index.js +8 -4
  22. package/es/chain/index.js.map +1 -1
  23. package/es/chain/node.js +15 -20
  24. package/es/chain/node.js.map +1 -1
  25. package/es/channel/handlers.js.map +1 -1
  26. package/es/channel/index.js +35 -14
  27. package/es/channel/index.js.map +1 -1
  28. package/es/contract/aci/index.js +12 -7
  29. package/es/contract/aci/index.js.map +1 -1
  30. package/es/contract/compiler.js +3 -1
  31. package/es/contract/compiler.js.map +1 -1
  32. package/es/contract/ga/helpers.js +6 -6
  33. package/es/contract/ga/helpers.js.map +1 -1
  34. package/es/contract/ga/index.js +6 -2
  35. package/es/contract/ga/index.js.map +1 -1
  36. package/es/contract/index.js +6 -2
  37. package/es/contract/index.js.map +1 -1
  38. package/es/index.js +1 -0
  39. package/es/index.js.map +1 -1
  40. package/es/node-pool/index.js +4 -2
  41. package/es/node-pool/index.js.map +1 -1
  42. package/es/node.js +9 -4
  43. package/es/node.js.map +1 -1
  44. package/es/tx/builder/helpers.js +20 -33
  45. package/es/tx/builder/helpers.js.map +1 -1
  46. package/es/tx/builder/index.js +13 -6
  47. package/es/tx/builder/index.js.map +1 -1
  48. package/es/tx/builder/schema.js +5 -4
  49. package/es/tx/builder/schema.js.map +1 -1
  50. package/es/tx/index.js +101 -12
  51. package/es/tx/index.js.map +1 -1
  52. package/es/tx/tx-object.js +9 -3
  53. package/es/tx/tx-object.js.map +1 -1
  54. package/es/tx/tx.js.map +1 -1
  55. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js +3 -2
  56. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +1 -1
  57. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +15 -6
  58. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +1 -1
  59. package/es/utils/aepp-wallet-communication/connection/index.js +2 -1
  60. package/es/utils/aepp-wallet-communication/connection/index.js.map +1 -1
  61. package/es/utils/aepp-wallet-communication/content-script-bridge.js +10 -4
  62. package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +1 -1
  63. package/es/utils/aepp-wallet-communication/helpers.js.map +1 -1
  64. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +13 -5
  65. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +1 -1
  66. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +9 -5
  67. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +1 -1
  68. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +57 -40
  69. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +1 -1
  70. package/es/utils/aepp-wallet-communication/wallet-detector.js.map +1 -1
  71. package/es/utils/crypto.js +1 -40
  72. package/es/utils/crypto.js.map +1 -1
  73. package/es/utils/keystore.js.map +1 -1
  74. package/es/utils/swagger.js +3 -1
  75. package/es/utils/swagger.js.map +1 -1
  76. package/package.json +11 -13
  77. package/src/account/base.js +3 -1
  78. package/src/account/multiple.js +4 -2
  79. package/src/ae/aens.js +41 -42
  80. package/src/ae/contract.js +9 -5
  81. package/src/ae/index.js +4 -3
  82. package/src/ae/oracle.js +9 -5
  83. package/src/ae/universal.js +3 -1
  84. package/src/chain/index.js +8 -4
  85. package/src/chain/node.js +17 -14
  86. package/src/channel/handlers.js +10 -3
  87. package/src/channel/index.js +40 -15
  88. package/src/contract/aci/index.js +15 -8
  89. package/src/contract/compiler.js +6 -2
  90. package/src/contract/ga/helpers.js +5 -3
  91. package/src/contract/ga/index.js +6 -2
  92. package/src/contract/index.js +6 -2
  93. package/src/index.js +2 -0
  94. package/src/node-pool/index.js +4 -2
  95. package/src/node.js +7 -4
  96. package/src/tx/builder/helpers.js +20 -33
  97. package/src/tx/builder/index.js +49 -13
  98. package/src/tx/builder/schema.js +37 -14
  99. package/src/tx/index.js +101 -12
  100. package/src/tx/tx-object.js +25 -6
  101. package/src/tx/tx.js +94 -28
  102. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +3 -2
  103. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +25 -7
  104. package/src/utils/aepp-wallet-communication/connection/index.js +2 -1
  105. package/src/utils/aepp-wallet-communication/content-script-bridge.js +10 -4
  106. package/src/utils/aepp-wallet-communication/helpers.js +4 -2
  107. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +32 -9
  108. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +9 -5
  109. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +53 -22
  110. package/src/utils/aepp-wallet-communication/wallet-detector.js +4 -1
  111. package/src/utils/crypto.js +1 -52
  112. package/src/utils/keystore.js +10 -2
  113. package/src/utils/swagger.js +1 -1
package/es/node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/node.js"],"names":["AsyncInit","genSwaggerClient","semverSatisfies","getNetworkId","networkId","force","selectedNode","Error","Node","compose","init","url","internalUrl","ignoreVersion","replace","client","responseInterceptor","response","ok","Object","assign","statusText","URL","pathname","slice","body","reason","version","spec","info","NODE_GE_VERSION","NODE_LT_VERSION","api","nodeRevision","revision","genesisKeyBlockHash","genesisHash","protocols","topBlockHeight","getStatus","consensusProtocolVersion","filter","effectiveAtHeight","reduce","acc","p","nodeNetworkId","methods","getNodeInfo","props"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA,OAAOA,SAAP,MAAsB,oBAAtB;AACA,OAAOC,gBAAP,MAA6B,iBAA7B;AACA,OAAOC,eAAP,MAA4B,0BAA5B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,YAAT,GAA0D;AAAA,MAAnC;AAAEC,IAAAA,SAAF;AAAaC,IAAAA,KAAK,GAAG;AAArB,GAAmC,uEAAJ,EAAI;AAC/D,MAAI,CAACA,KAAD,IAAU,CAACD,SAAX,IAAwB,CAAC,KAAKA,SAA9B,KAA4C,CAAC,KAAKE,YAAN,IAAsB,CAAC,KAAKA,YAAL,CAAkBF,SAArF,CAAJ,EAAqG,MAAM,IAAIG,KAAJ,CAAU,2BAAV,CAAN;AACrG,MAAIF,KAAK,IAAI,CAACD,SAAV,IAAuB,CAAC,KAAKA,SAA7B,KAA2C,CAAC,KAAKE,YAAN,IAAsB,CAAC,KAAKA,YAAL,CAAkBF,SAApF,CAAJ,EAAoG,OAAO,IAAP;AACpG,SAAOA,SAAS,IAAI,KAAKA,SAAlB,IAA+B,KAAKE,YAAL,CAAkBF,SAAxD;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMI,IAAI,GAAGR,SAAS,CAACS,OAAV,CAAkB;AAC7B,QAAMC,IAAN,OAAiD;AAAA,QAArC;AAAEC,MAAAA,GAAF;AAAOC,MAAAA,WAAP;AAAoBC,MAAAA;AAApB,KAAqC;AAC/C,QAAI,CAACF,GAAL,EAAU,MAAM,IAAIJ,KAAJ,CAAU,gBAAV,CAAN;AACV,SAAKI,GAAL,GAAWA,GAAG,CAACG,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,CAAX;AACA,SAAKF,WAAL,GAAmBA,WAAW,GAAGA,WAAW,CAACE,OAAZ,CAAoB,KAApB,EAA2B,EAA3B,CAAH,GAAoC,KAAKH,GAAvE;AACA,UAAMI,MAAM,GAAG,MAAMd,gBAAgB,CAAE,GAAE,KAAKU,GAAI,WAAb,EAAyB;AAC5DC,MAAAA,WAAW,EAAE,KAAKA,WAD0C;AAE5DI,MAAAA,mBAAmB,EAAEC,QAAQ,IAAI;AAC/B,YAAIA,QAAQ,CAACC,EAAb,EAAiB;AACjB,eAAOC,MAAM,CAACC,MAAP,CAAcH,QAAd,EAAwB;AAC7BI,UAAAA,UAAU,EAAG,GAAE,IAAIC,GAAJ,CAAQL,QAAQ,CAACN,GAAjB,EAAsBY,QAAtB,CAA+BC,KAA/B,CAAqC,CAArC,CAAwC,UAA3C,GAAuDP,QAAQ,CAACQ,IAAT,CAAcC;AADpD,SAAxB,CAAP;AAGD;AAP2D,KAAzB,CAArC;AASA,SAAKC,OAAL,GAAeZ,MAAM,CAACa,IAAP,CAAYC,IAAZ,CAAiBF,OAAhC;;AACA,QACE,CAACzB,eAAe,CAAC,KAAKyB,OAAN,EAAeG,eAAf,EAAgCC,eAAhC,CAAhB,IACA,CAAClB,aAFH,EAGE;AACA,YAAM,IAAIN,KAAJ,CACH,4BAA2B,KAAKoB,OAAQ,IAAzC,GACC,iBAAgBG,eAAgB,MAAKC,eAAgB,EAFlD,CAAN;AAID;;AACD,SAAKC,GAAL,GAAWjB,MAAM,CAACiB,GAAlB;AAEA,UAAM;AACJC,MAAAA,YAAY,EAAEC,QADV;AACoBC,MAAAA,mBAAmB,EAAEC,WADzC;AACsDhC,MAAAA,SADtD;AAEJiC,MAAAA,SAFI;AAEOC,MAAAA;AAFP,QAGF,MAAM,KAAKN,GAAL,CAASO,SAAT,EAHV;AAIA,SAAKC,wBAAL,GAAgCH,SAAS,CACtCI,MAD6B,CACtB;AAAA,UAAC;AAAEC,QAAAA;AAAF,OAAD;AAAA,aAA2BJ,cAAc,IAAII,iBAA7C;AAAA,KADsB,EAE7BC,MAF6B,CAG5B,CAACC,GAAD,EAAMC,CAAN,KAAYA,CAAC,CAACH,iBAAF,GAAsBE,GAAG,CAACF,iBAA1B,GAA8CG,CAA9C,GAAkDD,GAHlC,EAI5B;AAAEF,MAAAA,iBAAiB,EAAE,CAAC,CAAtB;AAAyBf,MAAAA,OAAO,EAAE;AAAlC,KAJ4B,EAM7BA,OANH;AAOA,SAAKmB,aAAL,GAAqB1C,SAArB;AACA,WAAOe,MAAM,CAACC,MAAP,CAAc,IAAd,EAAoB;AAAEc,MAAAA,QAAF;AAAYE,MAAAA;AAAZ,KAApB,CAAP;AACD,GAvC4B;;AAwC7BW,EAAAA,OAAO,EAAE;AACPC,IAAAA,WAAW,GAAI;AACb,aAAO;AACLrC,QAAAA,GAAG,EAAE,KAAKA,GADL;AAELC,QAAAA,WAAW,EAAE,KAAKA,WAFb;AAGLkC,QAAAA,aAAa,EAAE,KAAKA,aAHf;AAILnB,QAAAA,OAAO,EAAE,KAAKA,OAJT;AAKLa,QAAAA,wBAAwB,EAAE,KAAKA;AAL1B,OAAP;AAOD;;AATM,GAxCoB;AAmD7BS,EAAAA,KAAK,EAAE;AACLtB,IAAAA,OAAO,EAAE,IADJ;AAELa,IAAAA,wBAAwB,EAAE,IAFrB;AAGLM,IAAAA,aAAa,EAAE;AAHV;AAnDsB,CAAlB,CAAb;AA0DA,MAAMhB,eAAe,GAAG,OAAxB;AACA,MAAMC,eAAe,GAAG,OAAxB;AAEA,eAAevB,IAAf","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2021 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 */\n\n/**\n * Node module\n * @module @aeternity/aepp-sdk/es/node\n * @export Node\n * @example import { Node } from '@aeternity/aepp-sdk'\n */\n\nimport AsyncInit from './utils/async-init'\nimport genSwaggerClient from './utils/swagger'\nimport semverSatisfies from './utils/semver-satisfies'\n\n/**\n * Obtain networkId from account or node\n * @instance\n * @category async\n * @rtype () => networkId: String\n * @return {String} NetworkId\n */\nexport function getNetworkId ({ networkId, force = false } = {}) {\n if (!force && !networkId && !this.networkId && (!this.selectedNode || !this.selectedNode.networkId)) throw new Error('networkId is not provided')\n if (force && !networkId && !this.networkId && (!this.selectedNode || !this.selectedNode.networkId)) return null\n return networkId || this.networkId || this.selectedNode.networkId\n}\n\n/**\n * {@link genSwaggerClient} based Node remote API Stamp\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node\n * @rtype Stamp\n * @param {Object} [options={}] - Options\n * @param {String} options.url - Base URL for Node\n * @param {String} options.internalUrl - Base URL for internal requests\n * @param {String} options.axiosConfig - Object with axios configuration. Example { config: {}, errorHandler: (err) => throw err }\n * @return {Object} Node client\n * @example Node({url: 'https://testnet.aeternity.io'})\n */\nconst Node = AsyncInit.compose({\n async init ({ url, internalUrl, ignoreVersion }) {\n if (!url) throw new Error('\"url\" required')\n this.url = url.replace(/\\/$/, '')\n this.internalUrl = internalUrl ? internalUrl.replace(/\\/$/, '') : this.url\n const client = await genSwaggerClient(`${this.url}/api?oas3`, {\n internalUrl: this.internalUrl,\n responseInterceptor: response => {\n if (response.ok) return\n return Object.assign(response, {\n statusText: `${new URL(response.url).pathname.slice(1)} error: ` + response.body.reason\n })\n }\n })\n this.version = client.spec.info.version\n if (\n !semverSatisfies(this.version, NODE_GE_VERSION, NODE_LT_VERSION) &&\n !ignoreVersion\n ) {\n throw new Error(\n `Unsupported node version ${this.version}. ` +\n `Supported: >= ${NODE_GE_VERSION} < ${NODE_LT_VERSION}`\n )\n }\n this.api = client.api\n\n const {\n nodeRevision: revision, genesisKeyBlockHash: genesisHash, networkId,\n protocols, topBlockHeight\n } = await this.api.getStatus()\n this.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 this.nodeNetworkId = networkId\n return Object.assign(this, { revision, genesisHash })\n },\n methods: {\n getNodeInfo () {\n return {\n url: this.url,\n internalUrl: this.internalUrl,\n nodeNetworkId: this.nodeNetworkId,\n version: this.version,\n consensusProtocolVersion: this.consensusProtocolVersion\n }\n }\n },\n props: {\n version: null,\n consensusProtocolVersion: null,\n nodeNetworkId: null\n }\n})\n\nconst NODE_GE_VERSION = '6.2.0'\nconst NODE_LT_VERSION = '7.0.0'\n\nexport default Node\n"],"file":"node.js"}
1
+ {"version":3,"sources":["../src/node.js"],"names":["AsyncInit","genSwaggerClient","semverSatisfies","getNetworkId","networkId","force","res","selectedNode","Error","Node","compose","init","url","internalUrl","ignoreVersion","replace","client","responseInterceptor","response","ok","Object","assign","statusText","URL","pathname","slice","body","reason","version","spec","info","NODE_GE_VERSION","NODE_LT_VERSION","api","nodeRevision","revision","genesisKeyBlockHash","genesisHash","protocols","topBlockHeight","getStatus","consensusProtocolVersion","filter","effectiveAtHeight","reduce","acc","p","nodeNetworkId","methods","getNodeInfo","props"],"mappings":"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","sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2021 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 */\n\n/**\n * Node module\n * @module @aeternity/aepp-sdk/es/node\n * @export Node\n * @example import { Node } from '@aeternity/aepp-sdk'\n */\n\nimport AsyncInit from './utils/async-init'\nimport genSwaggerClient from './utils/swagger'\nimport semverSatisfies from './utils/semver-satisfies'\n\n/**\n * Obtain networkId from account or node\n * @instance\n * @category async\n * @rtype () => networkId: String\n * @return {String} NetworkId\n */\nexport function getNetworkId ({ networkId, force = false } = {}) {\n const res = networkId || this.networkId || this.selectedNode?.networkId\n if (!force && !res) throw new Error('networkId is not provided')\n if (force && !res) return null\n return res\n}\n\n/**\n * {@link genSwaggerClient} based Node remote API Stamp\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node\n * @rtype Stamp\n * @param {Object} [options={}] - Options\n * @param {String} options.url - Base URL for Node\n * @param {String} options.internalUrl - Base URL for internal requests\n * @param {Object} options.axiosConfig - Object with axios configuration\n * @param {Object} options.axiosConfig.config\n * @param {Function} options.axiosConfig.errorHandler - (err) => throw err\n * @return {Object} Node client\n * @example Node({url: 'https://testnet.aeternity.io'})\n */\nconst Node = AsyncInit.compose({\n async init ({ url, internalUrl, ignoreVersion }) {\n if (!url) throw new Error('\"url\" required')\n this.url = url.replace(/\\/$/, '')\n this.internalUrl = internalUrl ? internalUrl.replace(/\\/$/, '') : this.url\n const client = await genSwaggerClient(`${this.url}/api?oas3`, {\n internalUrl: this.internalUrl,\n responseInterceptor: response => {\n if (response.ok) return\n return Object.assign(response, {\n statusText: `${new URL(response.url).pathname.slice(1)} error: ` + response.body.reason\n })\n }\n })\n this.version = client.spec.info.version\n if (\n !semverSatisfies(this.version, NODE_GE_VERSION, NODE_LT_VERSION) &&\n !ignoreVersion\n ) {\n throw new Error(\n `Unsupported node version ${this.version}. ` +\n `Supported: >= ${NODE_GE_VERSION} < ${NODE_LT_VERSION}`\n )\n }\n this.api = client.api\n\n const {\n nodeRevision: revision, genesisKeyBlockHash: genesisHash, networkId,\n protocols, topBlockHeight\n } = await this.api.getStatus()\n this.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 this.nodeNetworkId = networkId\n return Object.assign(this, { revision, genesisHash })\n },\n methods: {\n getNodeInfo () {\n return {\n url: this.url,\n internalUrl: this.internalUrl,\n nodeNetworkId: this.nodeNetworkId,\n version: this.version,\n consensusProtocolVersion: this.consensusProtocolVersion\n }\n }\n },\n props: {\n version: null,\n consensusProtocolVersion: null,\n nodeNetworkId: null\n }\n})\n\nconst NODE_GE_VERSION = '6.2.0'\nconst NODE_LT_VERSION = '7.0.0'\n\nexport default Node\n"],"file":"node.js"}
@@ -6,7 +6,7 @@ import _cond from "ramda/src/cond";
6
6
  import BigNumber from 'bignumber.js';
7
7
  import { decodeBase58Check, decodeBase64Check, encodeBase58Check, encodeBase64Check, hash, salt } from '../../utils/crypto';
8
8
  import { toBytes } from '../../utils/bytes';
9
- import { ID_TAG_PREFIX, PREFIX_ID_TAG, NAME_BID_RANGES, NAME_BID_MAX_LENGTH, NAME_FEE, NAME_FEE_BID_INCREMENT, NAME_BID_TIMEOUTS, NAME_MAX_LENGTH_FEE, NAME_ID_KEY } from './schema';
9
+ import { ID_TAG_PREFIX, PREFIX_ID_TAG, NAME_BID_RANGES, NAME_BID_MAX_LENGTH, NAME_FEE, NAME_FEE_BID_INCREMENT, NAME_BID_TIMEOUTS, NAME_MAX_LENGTH_FEE, POINTER_KEY_BY_PREFIX } from './schema';
10
10
  import { ceil } from '../../utils/bignumber';
11
11
  /**
12
12
  * JavaScript-based Transaction builder helper function's
@@ -95,13 +95,14 @@ export function commitmentHash(name) {
95
95
  * Decode data using the default encoding/decoding algorithm
96
96
  * @function
97
97
  * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
98
- * @param {string} data An Base58check or Base64check encoded and prefixed string (ex tx_..., sg_..., ak_....)
98
+ * @param {string} data An Base58/64check encoded and prefixed string (ex tx_..., sg_..., ak_....)
99
99
  * @param {string} [requiredPrefix] Ensure that data have this prefix
100
100
  * @return {Buffer} Decoded data
101
101
  */
102
102
 
103
103
  export function decode(data, requiredPrefix) {
104
104
  const [prefix, payload, extra] = data.split('_');
105
+ if (!payload) throw new Error(`Encoded string missing payload: ${data}`);
105
106
  if (extra) throw new Error(`Encoded string have extra parts: ${data}`);
106
107
 
107
108
  if (requiredPrefix && requiredPrefix !== prefix) {
@@ -131,6 +132,10 @@ export function encode(data, type) {
131
132
  */
132
133
 
133
134
  export function writeId(hashId) {
135
+ if (typeof hashId !== 'string') {
136
+ throw new Error(`Address should be a string, got ${hashId} instead`);
137
+ }
138
+
134
139
  const prefix = hashId.slice(0, 2);
135
140
  const idTag = PREFIX_ID_TAG[prefix];
136
141
  if (!idTag) throw new Error(`Id tag for prefix ${prefix} not found.`);
@@ -177,7 +182,8 @@ export function readInt() {
177
182
  * Helper function to build pointers for name update TX
178
183
  * @function
179
184
  * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
180
- * @param {Array} pointers - Array of pointers ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])
185
+ * @param {Array} pointers - Array of pointers
186
+ * ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])
181
187
  * @return {Array} Serialized pointers array
182
188
  */
183
189
 
@@ -188,7 +194,8 @@ export function buildPointers(pointers) {
188
194
  * Helper function to read pointers from name update TX
189
195
  * @function
190
196
  * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
191
- * @param {Array} pointers - Array of pointers ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])
197
+ * @param {Array} pointers - Array of pointers
198
+ * ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])
192
199
  * @return {Array} Deserialize pointer array
193
200
  */
194
201
 
@@ -231,37 +238,17 @@ export function isNameValid(name) {
231
238
  }
232
239
  }
233
240
  /**
234
- * What kind of a hash is this? If it begins with 'ak_' it is an
235
- * account key, if with 'ok_' it's an oracle key.
236
- *
237
- * @param s - the hash.
238
- * returns the type, or throws an exception if type not found.
239
- */
240
-
241
- export function classify(s) {
242
- if (!s.match(/^[a-z]{2}_.+/)) {
243
- throw new Error('Not a valid hash');
244
- }
245
-
246
- const klass = s.substr(0, 2);
247
-
248
- if (klass in NAME_ID_KEY) {
249
- return NAME_ID_KEY[klass];
250
- } else {
251
- throw new Error(`Unknown class ${klass}`);
252
- }
253
- }
254
- /**
255
- * Validate name pointers array
256
- * @function
257
- * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers
258
- * @param {String[]} pointers Pointers array. Allowed values is: account(ak_), oracle(ok_), contract(ct_), channel(ch_)
259
- * @return {Boolean}
241
+ * @param identifier - account/oracle/contract address, or channel
242
+ * @returns {String} default AENS pointer key
243
+ * @throws exception when default key not defined
260
244
  */
261
245
 
262
- export function validatePointers() {
263
- let pointers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
264
- return !pointers.find(p => !p || typeof p !== 'string' || !['ak', 'ok', 'ct', 'ch'].includes(p.split('_')[0]));
246
+ export function getDefaultPointerKey(identifier) {
247
+ decode(identifier);
248
+ const prefix = identifier.substr(0, 2);
249
+ return POINTER_KEY_BY_PREFIX[prefix] || (() => {
250
+ throw new Error(`Default AENS pointer key is not defined for ${prefix} prefix`);
251
+ })();
265
252
  }
266
253
  /**
267
254
  * Get the minimum name fee for a domain
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tx/builder/helpers.js"],"names":["BigNumber","decodeBase58Check","decodeBase64Check","encodeBase58Check","encodeBase64Check","hash","salt","toBytes","ID_TAG_PREFIX","PREFIX_ID_TAG","NAME_BID_RANGES","NAME_BID_MAX_LENGTH","NAME_FEE","NAME_FEE_BID_INCREMENT","NAME_BID_TIMEOUTS","NAME_MAX_LENGTH_FEE","NAME_ID_KEY","ceil","createSalt","base64Types","buildContractId","ownerId","nonce","ownerIdAndNonce","Buffer","from","decode","b2bHash","encode","oracleQueryId","senderId","oracleId","_int32","val","nonceBE","concat","alloc","length","formatSalt","toString","padStart","produceNameId","name","ensureNameValid","toLowerCase","commitmentHash","data","requiredPrefix","prefix","payload","extra","split","Error","includes","type","writeId","hashId","slice","idTag","readId","buf","tag","readUIntBE","writeInt","readInt","buildPointers","pointers","map","p","key","id","readPointers","Object","assign","endsWith","isNameValid","error","classify","s","match","klass","substr","validatePointers","find","getMinimumNameFee","domain","nameLength","replace","computeBidFee","startFee","increment","Number","eq","times","plus","computeAuctionEndBlock","claimHeight","isAuctionName"],"mappings":"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","sourcesContent":["import * as R from 'ramda'\nimport BigNumber from 'bignumber.js'\n\nimport {\n decodeBase58Check,\n decodeBase64Check,\n encodeBase58Check, encodeBase64Check,\n hash,\n salt\n} from '../../utils/crypto'\nimport { toBytes } from '../../utils/bytes'\nimport {\n ID_TAG_PREFIX,\n PREFIX_ID_TAG,\n NAME_BID_RANGES,\n NAME_BID_MAX_LENGTH,\n NAME_FEE,\n NAME_FEE_BID_INCREMENT,\n NAME_BID_TIMEOUTS,\n NAME_MAX_LENGTH_FEE,\n NAME_ID_KEY\n} from './schema'\nimport { ceil } from '../../utils/bignumber'\n\n/**\n * JavaScript-based Transaction builder helper function's\n * @module @aeternity/aepp-sdk/es/tx/builder/helpers\n * @export TxBuilderHelper\n * @example import { TxBuilderHelper } from '@aeternity/aepp-sdk'\n */\n\nexport const createSalt = salt\n\nconst base64Types = ['tx', 'st', 'ss', 'pi', 'ov', 'or', 'cb', 'cs', 'ba']\n\n/**\n * Build a contract public key\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} ownerId The public key of the owner account\n * @param {number} nonce the nonce of the transaction\n * @return {string} Contract public key\n */\nexport function buildContractId (ownerId, nonce) {\n const ownerIdAndNonce = Buffer.from([...decode(ownerId, 'ak'), ...toBytes(nonce)])\n const b2bHash = hash(ownerIdAndNonce)\n return encode(b2bHash, 'ct')\n}\n\n/**\n * Build a oracle query id\n * @function\n * @function* @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} senderId The public key of the sender account\n * @param {Number} nonce the nonce of the transaction\n * @param {Number} oracleId The oracle public key\n * @return {string} Contract public key\n */\nexport function oracleQueryId (senderId, nonce, oracleId) {\n function _int32 (val) {\n const nonceBE = toBytes(val, true)\n return Buffer.concat([Buffer.alloc(32 - nonceBE.length), nonceBE])\n }\n\n const b2bHash = hash(Buffer.from([...decode(senderId, 'ak'), ..._int32(nonce), ...decode(oracleId, 'ok')]))\n return encode(b2bHash, 'oq')\n}\n\n/**\n * Format the salt into a 64-byte hex string\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {number} salt\n * @return {string} Zero-padded hex string of salt\n */\nexport function formatSalt (salt) {\n return Buffer.from(salt.toString(16).padStart(64, '0'), 'hex')\n}\n\n/**\n * Encode a domain name\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name Name to encode\n * @return {String} `nm_` prefixed encoded domain name\n */\nexport function produceNameId (name) {\n ensureNameValid(name)\n return encode(hash(name.toLowerCase()), 'nm')\n}\n\n/**\n * Generate the commitment hash by hashing the formatted salt and\n * name, base 58 encoding the result and prepending 'cm_'\n *\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @function commitmentHash\n * @category async\n * @rtype (name: String, salt?: String) => hash: Promise[String]\n * @param {String} name - Name to be registered\n * @param {Number} salt Random salt\n * @return {String} Commitment hash\n */\nexport function commitmentHash (name, salt = createSalt()) {\n ensureNameValid(name)\n return `cm_${encodeBase58Check(hash(Buffer.concat([Buffer.from(name.toLowerCase()), formatSalt(salt)])))}`\n}\n\n/**\n * Decode data using the default encoding/decoding algorithm\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} data An Base58check or Base64check encoded and prefixed string (ex tx_..., sg_..., ak_....)\n * @param {string} [requiredPrefix] Ensure that data have this prefix\n * @return {Buffer} Decoded data\n */\nexport function decode (data, requiredPrefix) {\n const [prefix, payload, extra] = data.split('_')\n if (extra) throw new Error(`Encoded string have extra parts: ${data}`)\n if (requiredPrefix && requiredPrefix !== prefix) {\n throw new Error(`Encoded string have a wrong type: ${prefix} (expected: ${requiredPrefix})`)\n }\n return (base64Types.includes(prefix) ? decodeBase64Check : decodeBase58Check)(payload)\n}\n\n/**\n * Encode data using the default encoding/decoding algorithm\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer|String} data An decoded data\n * @param {string} type Prefix of Transaction\n * @return {String} Encoded string Base58check or Base64check data\n */\nexport function encode (data, type) {\n return `${type}_${base64Types.includes(type)\n ? encodeBase64Check(data)\n : encodeBase58Check(data)}`\n}\n\n/**\n * Utility function to create and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} hashId Encoded hash\n * @return {Buffer} Buffer Buffer with ID tag and decoded HASh\n */\nexport function writeId (hashId) {\n const prefix = hashId.slice(0, 2)\n const idTag = PREFIX_ID_TAG[prefix]\n if (!idTag) throw new Error(`Id tag for prefix ${prefix} not found.`)\n return Buffer.from([...toBytes(idTag), ...decode(hashId, prefix)])\n}\n\n/**\n * Utility function to read and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Data\n * @return {String} Encoided hash string with prefix\n */\nexport function readId (buf) {\n const tag = buf.readUIntBE(0, 1)\n const prefix = ID_TAG_PREFIX[tag]\n if (!prefix) throw new Error(`Prefix for id-tag ${tag} not found.`)\n return encode(buf.slice(1, buf.length), prefix)\n}\n\n/**\n * Utility function to convert int to bytes\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Number|String|BigNumber} val Value\n * @return {Buffer} Buffer Buffer from number(BigEndian)\n */\nexport function writeInt (val) {\n return toBytes(val, true)\n}\n\n/**\n * Utility function to convert bytes to int\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Value\n * @return {String} Buffer Buffer from number(BigEndian)\n */\nexport function readInt (buf = Buffer.from([])) {\n return BigNumber(buf.toString('hex'), 16).toString(10)\n}\n\n/**\n * Helper function to build pointers for name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Serialized pointers array\n */\nexport function buildPointers (pointers) {\n return pointers.map(\n p => [\n toBytes(p.key),\n writeId(p.id)\n ]\n )\n}\n\n/**\n * Helper function to read pointers from name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Deserialize pointer array\n */\nexport function readPointers (pointers) {\n return pointers.map(\n ([key, id]) => Object.assign({\n key: key.toString(),\n id: readId(id)\n })\n )\n}\n\n/**\n * Ensure that name is valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return void\n * @throws Error\n */\nexport function ensureNameValid (name) {\n if (!name || typeof name !== 'string') throw new Error('Name must be a string')\n if (!name.endsWith('.chain')) throw new Error(`Name should end with .chain: ${name}`)\n}\n\n/**\n * Is name valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return Boolean\n */\nexport function isNameValid (name) {\n try {\n ensureNameValid(name)\n return true\n } catch (error) {\n return false\n }\n}\n\n/**\n * What kind of a hash is this? If it begins with 'ak_' it is an\n * account key, if with 'ok_' it's an oracle key.\n *\n * @param s - the hash.\n * returns the type, or throws an exception if type not found.\n */\nexport function classify (s) {\n if (!s.match(/^[a-z]{2}_.+/)) {\n throw new Error('Not a valid hash')\n }\n\n const klass = s.substr(0, 2)\n if (klass in NAME_ID_KEY) {\n return NAME_ID_KEY[klass]\n } else {\n throw new Error(`Unknown class ${klass}`)\n }\n}\n\n/**\n * Validate name pointers array\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String[]} pointers Pointers array. Allowed values is: account(ak_), oracle(ok_), contract(ct_), channel(ch_)\n * @return {Boolean}\n */\nexport function validatePointers (pointers = []) {\n return !pointers\n .find(p => !p || typeof p !== 'string' || !['ak', 'ok', 'ct', 'ch'].includes(p.split('_')[0]))\n}\n\n/**\n * Get the minimum name fee for a domain\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} domain the domain name to get the fee for\n * @return {String} the minimum fee for the domain auction\n */\nexport function getMinimumNameFee (domain) {\n const nameLength = domain.replace('.chain', '').length\n return NAME_BID_RANGES[nameLength >= NAME_MAX_LENGTH_FEE ? NAME_MAX_LENGTH_FEE : nameLength]\n}\n\n/**\n * Compute bid fee for AENS auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} domain the domain name to get the fee for\n * @param {Number|String} startFee Auction start fee\n * @param {Number} [increment=0.5] Bid multiplier(In percentage, must be between 0 and 1)\n * @return {String} Bid fee\n */\nexport function computeBidFee (domain, startFee = NAME_FEE, increment = NAME_FEE_BID_INCREMENT) {\n if (!(Number(increment) === increment && increment % 1 !== 0)) throw new Error(`Increment must be float. Current increment ${increment}`)\n if (increment < NAME_FEE_BID_INCREMENT) throw new Error(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`)\n return ceil(\n BigNumber(BigNumber(startFee).eq(NAME_FEE) ? getMinimumNameFee(domain) : startFee).times(BigNumber(NAME_FEE_BID_INCREMENT).plus(1))\n )\n}\n\n/**\n * Compute auction end height\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} domain the domain name to get the fee for\n * @param {Number|String} claimHeight Auction starting height\n * @return {String} Auction end height\n */\nexport function computeAuctionEndBlock (domain, claimHeight) {\n return R.cond([\n [R.lt(5), R.always(NAME_BID_TIMEOUTS[4].plus(claimHeight))],\n [R.lt(9), R.always(NAME_BID_TIMEOUTS[8].plus(claimHeight))],\n [R.lte(NAME_BID_MAX_LENGTH), R.always(NAME_BID_TIMEOUTS[12].plus(claimHeight))],\n [R.T, R.always(BigNumber(claimHeight))]\n ])(domain.replace('.chain', '').length).toString(10)\n}\n\n/**\n * Is name accept going to auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name Transaction abiVersion\n * @return {Boolean}\n */\nexport function isAuctionName (name) {\n return name.replace('.chain', '').length < 13\n}\n"],"file":"helpers.js"}
1
+ {"version":3,"sources":["../../../src/tx/builder/helpers.js"],"names":["BigNumber","decodeBase58Check","decodeBase64Check","encodeBase58Check","encodeBase64Check","hash","salt","toBytes","ID_TAG_PREFIX","PREFIX_ID_TAG","NAME_BID_RANGES","NAME_BID_MAX_LENGTH","NAME_FEE","NAME_FEE_BID_INCREMENT","NAME_BID_TIMEOUTS","NAME_MAX_LENGTH_FEE","POINTER_KEY_BY_PREFIX","ceil","createSalt","base64Types","buildContractId","ownerId","nonce","ownerIdAndNonce","Buffer","from","decode","b2bHash","encode","oracleQueryId","senderId","oracleId","_int32","val","nonceBE","concat","alloc","length","formatSalt","toString","padStart","produceNameId","name","ensureNameValid","toLowerCase","commitmentHash","data","requiredPrefix","prefix","payload","extra","split","Error","includes","type","writeId","hashId","slice","idTag","readId","buf","tag","readUIntBE","writeInt","readInt","buildPointers","pointers","map","p","key","id","readPointers","Object","assign","endsWith","isNameValid","error","getDefaultPointerKey","identifier","substr","getMinimumNameFee","domain","nameLength","replace","computeBidFee","startFee","increment","Number","eq","times","plus","computeAuctionEndBlock","claimHeight","isAuctionName"],"mappings":"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","sourcesContent":["import * as R from 'ramda'\nimport BigNumber from 'bignumber.js'\n\nimport {\n decodeBase58Check,\n decodeBase64Check,\n encodeBase58Check, encodeBase64Check,\n hash,\n salt\n} from '../../utils/crypto'\nimport { toBytes } from '../../utils/bytes'\nimport {\n ID_TAG_PREFIX,\n PREFIX_ID_TAG,\n NAME_BID_RANGES,\n NAME_BID_MAX_LENGTH,\n NAME_FEE,\n NAME_FEE_BID_INCREMENT,\n NAME_BID_TIMEOUTS,\n NAME_MAX_LENGTH_FEE,\n POINTER_KEY_BY_PREFIX\n} from './schema'\nimport { ceil } from '../../utils/bignumber'\n\n/**\n * JavaScript-based Transaction builder helper function's\n * @module @aeternity/aepp-sdk/es/tx/builder/helpers\n * @export TxBuilderHelper\n * @example import { TxBuilderHelper } from '@aeternity/aepp-sdk'\n */\n\nexport const createSalt = salt\n\nconst base64Types = ['tx', 'st', 'ss', 'pi', 'ov', 'or', 'cb', 'cs', 'ba']\n\n/**\n * Build a contract public key\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} ownerId The public key of the owner account\n * @param {number} nonce the nonce of the transaction\n * @return {string} Contract public key\n */\nexport function buildContractId (ownerId, nonce) {\n const ownerIdAndNonce = Buffer.from([...decode(ownerId, 'ak'), ...toBytes(nonce)])\n const b2bHash = hash(ownerIdAndNonce)\n return encode(b2bHash, 'ct')\n}\n\n/**\n * Build a oracle query id\n * @function\n * @function* @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} senderId The public key of the sender account\n * @param {Number} nonce the nonce of the transaction\n * @param {Number} oracleId The oracle public key\n * @return {string} Contract public key\n */\nexport function oracleQueryId (senderId, nonce, oracleId) {\n function _int32 (val) {\n const nonceBE = toBytes(val, true)\n return Buffer.concat([Buffer.alloc(32 - nonceBE.length), nonceBE])\n }\n\n const b2bHash = hash(Buffer.from([...decode(senderId, 'ak'), ..._int32(nonce), ...decode(oracleId, 'ok')]))\n return encode(b2bHash, 'oq')\n}\n\n/**\n * Format the salt into a 64-byte hex string\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {number} salt\n * @return {string} Zero-padded hex string of salt\n */\nexport function formatSalt (salt) {\n return Buffer.from(salt.toString(16).padStart(64, '0'), 'hex')\n}\n\n/**\n * Encode a domain name\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name Name to encode\n * @return {String} `nm_` prefixed encoded domain name\n */\nexport function produceNameId (name) {\n ensureNameValid(name)\n return encode(hash(name.toLowerCase()), 'nm')\n}\n\n/**\n * Generate the commitment hash by hashing the formatted salt and\n * name, base 58 encoding the result and prepending 'cm_'\n *\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @function commitmentHash\n * @category async\n * @rtype (name: String, salt?: String) => hash: Promise[String]\n * @param {String} name - Name to be registered\n * @param {Number} salt Random salt\n * @return {String} Commitment hash\n */\nexport function commitmentHash (name, salt = createSalt()) {\n ensureNameValid(name)\n return `cm_${encodeBase58Check(hash(Buffer.concat([Buffer.from(name.toLowerCase()), formatSalt(salt)])))}`\n}\n\n/**\n * Decode data using the default encoding/decoding algorithm\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} data An Base58/64check encoded and prefixed string (ex tx_..., sg_..., ak_....)\n * @param {string} [requiredPrefix] Ensure that data have this prefix\n * @return {Buffer} Decoded data\n */\nexport function decode (data, requiredPrefix) {\n const [prefix, payload, extra] = data.split('_')\n if (!payload) throw new Error(`Encoded string missing payload: ${data}`)\n if (extra) throw new Error(`Encoded string have extra parts: ${data}`)\n if (requiredPrefix && requiredPrefix !== prefix) {\n throw new Error(`Encoded string have a wrong type: ${prefix} (expected: ${requiredPrefix})`)\n }\n return (base64Types.includes(prefix) ? decodeBase64Check : decodeBase58Check)(payload)\n}\n\n/**\n * Encode data using the default encoding/decoding algorithm\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer|String} data An decoded data\n * @param {string} type Prefix of Transaction\n * @return {String} Encoded string Base58check or Base64check data\n */\nexport function encode (data, type) {\n return `${type}_${base64Types.includes(type)\n ? encodeBase64Check(data)\n : encodeBase58Check(data)}`\n}\n\n/**\n * Utility function to create and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} hashId Encoded hash\n * @return {Buffer} Buffer Buffer with ID tag and decoded HASh\n */\nexport function writeId (hashId) {\n if (typeof hashId !== 'string') {\n throw new Error(`Address should be a string, got ${hashId} instead`)\n }\n const prefix = hashId.slice(0, 2)\n const idTag = PREFIX_ID_TAG[prefix]\n if (!idTag) throw new Error(`Id tag for prefix ${prefix} not found.`)\n return Buffer.from([...toBytes(idTag), ...decode(hashId, prefix)])\n}\n\n/**\n * Utility function to read and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Data\n * @return {String} Encoided hash string with prefix\n */\nexport function readId (buf) {\n const tag = buf.readUIntBE(0, 1)\n const prefix = ID_TAG_PREFIX[tag]\n if (!prefix) throw new Error(`Prefix for id-tag ${tag} not found.`)\n return encode(buf.slice(1, buf.length), prefix)\n}\n\n/**\n * Utility function to convert int to bytes\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Number|String|BigNumber} val Value\n * @return {Buffer} Buffer Buffer from number(BigEndian)\n */\nexport function writeInt (val) {\n return toBytes(val, true)\n}\n\n/**\n * Utility function to convert bytes to int\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Value\n * @return {String} Buffer Buffer from number(BigEndian)\n */\nexport function readInt (buf = Buffer.from([])) {\n return BigNumber(buf.toString('hex'), 16).toString(10)\n}\n\n/**\n * Helper function to build pointers for name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers\n * ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Serialized pointers array\n */\nexport function buildPointers (pointers) {\n return pointers.map(\n p => [\n toBytes(p.key),\n writeId(p.id)\n ]\n )\n}\n\n/**\n * Helper function to read pointers from name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers\n * ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Deserialize pointer array\n */\nexport function readPointers (pointers) {\n return pointers.map(\n ([key, id]) => Object.assign({\n key: key.toString(),\n id: readId(id)\n })\n )\n}\n\n/**\n * Ensure that name is valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return void\n * @throws Error\n */\nexport function ensureNameValid (name) {\n if (!name || typeof name !== 'string') throw new Error('Name must be a string')\n if (!name.endsWith('.chain')) throw new Error(`Name should end with .chain: ${name}`)\n}\n\n/**\n * Is name valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return Boolean\n */\nexport function isNameValid (name) {\n try {\n ensureNameValid(name)\n return true\n } catch (error) {\n return false\n }\n}\n\n/**\n * @param identifier - account/oracle/contract address, or channel\n * @returns {String} default AENS pointer key\n * @throws exception when default key not defined\n */\nexport function getDefaultPointerKey (identifier) {\n decode(identifier)\n const prefix = identifier.substr(0, 2)\n return POINTER_KEY_BY_PREFIX[prefix] ||\n (() => { throw new Error(`Default AENS pointer key is not defined for ${prefix} prefix`) })()\n}\n\n/**\n * Get the minimum name fee for a domain\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} domain the domain name to get the fee for\n * @return {String} the minimum fee for the domain auction\n */\nexport function getMinimumNameFee (domain) {\n const nameLength = domain.replace('.chain', '').length\n return NAME_BID_RANGES[nameLength >= NAME_MAX_LENGTH_FEE ? NAME_MAX_LENGTH_FEE : nameLength]\n}\n\n/**\n * Compute bid fee for AENS auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} domain the domain name to get the fee for\n * @param {Number|String} startFee Auction start fee\n * @param {Number} [increment=0.5] Bid multiplier(In percentage, must be between 0 and 1)\n * @return {String} Bid fee\n */\nexport function computeBidFee (domain, startFee = NAME_FEE, increment = NAME_FEE_BID_INCREMENT) {\n if (!(Number(increment) === increment && increment % 1 !== 0)) throw new Error(`Increment must be float. Current increment ${increment}`)\n if (increment < NAME_FEE_BID_INCREMENT) throw new Error(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`)\n return ceil(\n BigNumber(BigNumber(startFee).eq(NAME_FEE) ? getMinimumNameFee(domain) : startFee)\n .times(BigNumber(NAME_FEE_BID_INCREMENT).plus(1))\n )\n}\n\n/**\n * Compute auction end height\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} domain the domain name to get the fee for\n * @param {Number|String} claimHeight Auction starting height\n * @return {String} Auction end height\n */\nexport function computeAuctionEndBlock (domain, claimHeight) {\n return R.cond([\n [R.lt(5), R.always(NAME_BID_TIMEOUTS[4].plus(claimHeight))],\n [R.lt(9), R.always(NAME_BID_TIMEOUTS[8].plus(claimHeight))],\n [R.lte(NAME_BID_MAX_LENGTH), R.always(NAME_BID_TIMEOUTS[12].plus(claimHeight))],\n [R.T, R.always(BigNumber(claimHeight))]\n ])(domain.replace('.chain', '').length).toString(10)\n}\n\n/**\n * Is name accept going to auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name Transaction abiVersion\n * @return {Boolean}\n */\nexport function isAuctionName (name) {\n return name.replace('.chain', '').length < 13\n}\n"],"file":"helpers.js"}
@@ -416,8 +416,8 @@ export function validateParams(params, schema, _ref8) {
416
416
  * @param {Object} params Object with tx params
417
417
  * @param {Array} schema Transaction schema
418
418
  * @param {Object} [options={}] options
419
- * @param {Array} [options.excludeKeys=[]] excludeKeys Array of keys to exclude for validation and build
420
- * @param {String} [options.denomination='aettos'] denomination Denomination of amounts (default: aettos)
419
+ * @param {String[]} [options.excludeKeys=[]] Array of keys to exclude for validation and build
420
+ * @param {String} [options.denomination='aettos'] Denomination of amounts
421
421
  * @throws {Error} Validation error
422
422
  * @return {Array} Array with binary fields of transaction
423
423
  */
@@ -501,10 +501,13 @@ const getSchema = _ref14 => {
501
501
  * @param {Object} params Object with tx params
502
502
  * @param {String} type Transaction type
503
503
  * @param {Object} [options={}] options
504
- * @param {Object} [options.excludeKeys] excludeKeys Array of keys to exclude for validation and build
504
+ * @param {String[]} [options.excludeKeys] Array of keys to exclude for validation and build
505
505
  * @param {String} [options.prefix] Prefix of transaction
506
506
  * @throws {Error} Validation error
507
- * @return {Object} { tx, rlpEncoded, binary } Object with tx -> Base64Check transaction hash with 'tx_' prefix, rlp encoded transaction and binary transaction
507
+ * @returns {Object} object
508
+ * @returns {String} object.tx Base64Check transaction hash with 'tx_' prefix
509
+ * @returns {Buffer} object.rlpEncoded rlp encoded transaction
510
+ * @returns {Array<Buffer>} object.binary binary transaction
508
511
  */
509
512
 
510
513
 
@@ -539,10 +542,14 @@ export function buildTx(params, type) {
539
542
  * Unpack transaction hash
540
543
  * @function
541
544
  * @alias module:@aeternity/aepp-sdk/es/tx/builder
542
- * @param {String|Buffer} encodedTx String or RLP encoded transaction array (if fromRlpBinary flag is true)
545
+ * @param {String|Buffer} encodedTx String or RLP encoded transaction array
546
+ * (if fromRlpBinary flag is true)
543
547
  * @param {Boolean} fromRlpBinary Unpack from RLP encoded transaction (default: false)
544
548
  * @param {String} prefix - Prefix of data
545
- * @return {Object} { tx, rlpEncoded, binary } Object with tx -> Object with transaction param's, rlp encoded transaction and binary transaction
549
+ * @returns {Object} object
550
+ * @returns {Object} object.tx Object with transaction param's
551
+ * @returns {Buffer} object.rlpEncoded rlp encoded transaction
552
+ * @returns {Array<Buffer>} object.binary binary transaction
546
553
  */
547
554
 
548
555
  export function unpackTx(encodedTx) {
@@ -1 +1 @@
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","int","id","ids","map","bool","binary","stateTree","string","toString","payload","pointers","rlpBinary","unpackTx","rlpBinaries","v","rawBinary","hex","offChainUpdates","callStack","mptrees","t","callReturnType","sophiaCodeTypeInfo","reduce","acc","funHash","fnName","argType","outType","serializeField","signatures","split","rlpEncoded","serialize","validateField","key","assert","valid","params","undefined","isMinusValue","isNaN","isBigNumber","lt","gte","prefixes","Array","isArray","p","find","Object","prototype","hasOwnProperty","call","e","transformParams","schema","denomination","filter","_","schemaKeys","k","entries","includes","getOracleRelativeTtl","txType","ttlKey","oracleRegister","oracleExtend","oracleQuery","oracleResponse","calculateMinFee","gas","vsn","multiplier","times","actualFee","buildFee","fee","expected","eq","txWithOutFee","buildTx","txSize","length","plus","relativeTtl","innerTxSize","gaMeta","payingFor","tx","encodedTx","calculateFee","showWarning","console","warn","validateParams","excludeKeys","assign","buildRawTx","AETTOS","filteredSchema","keys","Error","JSON","stringify","fieldType","unpackRawTx","index","getSchema","objId","isDeserialize","firstKey","tag","txObject","fromRlpBinary","buildTxHash","rawTx","data","startsWith"],"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\n : 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"}
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","int","id","ids","map","bool","binary","stateTree","string","toString","payload","pointers","rlpBinary","unpackTx","rlpBinaries","v","rawBinary","hex","offChainUpdates","callStack","mptrees","t","callReturnType","sophiaCodeTypeInfo","reduce","acc","funHash","fnName","argType","outType","serializeField","signatures","split","rlpEncoded","serialize","validateField","key","assert","valid","params","undefined","isMinusValue","isNaN","isBigNumber","lt","gte","prefixes","Array","isArray","p","find","Object","prototype","hasOwnProperty","call","e","transformParams","schema","denomination","filter","_","schemaKeys","k","entries","includes","getOracleRelativeTtl","txType","ttlKey","oracleRegister","oracleExtend","oracleQuery","oracleResponse","calculateMinFee","gas","vsn","multiplier","times","actualFee","buildFee","fee","expected","eq","txWithOutFee","buildTx","txSize","length","plus","relativeTtl","innerTxSize","gaMeta","payingFor","tx","encodedTx","calculateFee","showWarning","console","warn","validateParams","excludeKeys","assign","buildRawTx","AETTOS","filteredSchema","keys","Error","JSON","stringify","fieldType","unpackRawTx","index","getSchema","objId","isDeserialize","firstKey","tag","txObject","fromRlpBinary","buildTxHash","rawTx","data","startsWith"],"mappings":"AAAA,OAAOA,SAAP,MAAsB,cAAtB;AACA,SAASC,MAAM,IAAIC,SAAnB,EAA8BC,MAAM,IAAIC,SAAxC,QAAyD,KAAzD;AACA,SAASC,iBAAT,EAA4BC,YAA5B,QAAgD,8BAAhD;AACA,SAASC,IAAT,QAAqB,oBAArB;AAEA,SACEC,WADF,EAEEC,WAFF,EAGEC,iBAHF,EAIEC,aAJF,EAKEC,yBALF,EAMEC,eANF,EAOEC,gBAPF,EAQEC,uBARF,EASEC,OATF,EAUEC,kBAVF,EAWEC,GAXF,QAYO,UAZP;AAaA,SACEC,OADF,EAEEC,MAFF,EAGEC,YAHF,EAIEC,OAJF,EAKEC,QALF,EAMEC,aANF,EAOErB,MAPF,EAQEF,MARF,QASO,WATP;AAUA,SAASwB,OAAT,QAAwB,mBAAxB;AACA,OAAOC,MAAP,MAAmB,oBAAnB;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,gBAAgB,GAAG;AACvBC,EAAAA,KAAK,EAAE,OADgB;AAEvBC,EAAAA,KAAK,EAAE;AAFgB,CAAzB,C,CAKA;;AACA,SAASC,gBAAT,CAA2BC,KAA3B,EAAkCC,IAAlC,EAAwCC,MAAxC,EAAgD;AAC9C,MAAI,CAACF,KAAL,EAAY,OAAO,EAAP;;AACZ,UAAQC,IAAR;AACE,SAAKvB,WAAW,CAACyB,SAAjB;AAA4B;AAC1B,cAAM,CAACC,EAAD,GAAOC,GAAP,IAAcL,KAApB;AACA,eAAO;AAAEM,UAAAA,SAAS,EAAElB,OAAO,CAACmB,MAAM,CAACC,IAAP,CAAY,CAACJ,EAAD,CAAZ,CAAD,CAApB;AAAyCK,UAAAA,UAAU,EAAErB,OAAO,CAACmB,MAAM,CAACC,IAAP,CAAY,CAACH,GAAD,CAAZ,CAAD;AAA5D,SAAP;AACD;;AACD,SAAK3B,WAAW,CAACgC,MAAjB;AACE,aAAOtB,OAAO,CAACY,KAAD,CAAd;;AACF,SAAKtB,WAAW,CAACiC,GAAjB;AACE,aAAOvB,OAAO,CAACY,KAAD,CAAd;;AACF,SAAKtB,WAAW,CAACkC,EAAjB;AACE,aAAOvB,MAAM,CAACW,KAAD,CAAb;;AACF,SAAKtB,WAAW,CAACmC,GAAjB;AACE,aAAOb,KAAK,CAACc,GAAN,CAAUzB,MAAV,CAAP;;AACF,SAAKX,WAAW,CAACqC,IAAjB;AACE,aAAOf,KAAK,CAAC,CAAD,CAAL,KAAa,CAApB;;AACF,SAAKtB,WAAW,CAACsC,MAAjB;AACE,aAAO5C,MAAM,CAAC4B,KAAD,EAAQE,MAAR,CAAb;;AACF,SAAKxB,WAAW,CAACuC,SAAjB;AACE,aAAO7C,MAAM,CAAC4B,KAAD,EAAQ,IAAR,CAAb;;AACF,SAAKtB,WAAW,CAACwC,MAAjB;AACE,aAAOlB,KAAK,CAACmB,QAAN,EAAP;;AACF,SAAKzC,WAAW,CAAC0C,OAAjB;AACE,aAAOhD,MAAM,CAAC4B,KAAD,EAAQ,IAAR,CAAb;;AACF,SAAKtB,WAAW,CAAC2C,QAAjB;AACE,aAAO/B,YAAY,CAACU,KAAD,CAAnB;;AACF,SAAKtB,WAAW,CAAC4C,SAAjB;AACE,aAAOC,QAAQ,CAACvB,KAAD,EAAQ,IAAR,CAAf;;AACF,SAAKtB,WAAW,CAAC8C,WAAjB;AACE,aAAOxB,KAAK,CAACc,GAAN,CAAUW,CAAC,IAAIF,QAAQ,CAACE,CAAD,EAAI,IAAJ,CAAvB,CAAP;;AACF,SAAK/C,WAAW,CAACgD,SAAjB;AACE,aAAO1B,KAAP;;AACF,SAAKtB,WAAW,CAACiD,GAAjB;AACE,aAAO3B,KAAK,CAACmB,QAAN,CAAe,KAAf,CAAP;;AACF,SAAKzC,WAAW,CAACkD,eAAjB;AACE,aAAO5B,KAAK,CAACc,GAAN,CAAUW,CAAC,IAAIF,QAAQ,CAACE,CAAD,EAAI,IAAJ,CAAvB,CAAP;;AACF,SAAK/C,WAAW,CAACmD,SAAjB;AACE;AACA,aAAO,CAACzC,OAAO,CAACY,KAAD,CAAR,CAAP;;AACF,SAAKtB,WAAW,CAACoD,OAAjB;AACE,aAAO9B,KAAK,CAACc,GAAN,CAAUiB,CAAC,IAAI,IAAIpC,MAAJ,CAAWoC,CAAX,CAAf,CAAP;;AACF,SAAKrD,WAAW,CAACsD,cAAjB;AACE,cAAQ5C,OAAO,CAACY,KAAD,CAAf;AACE,aAAK,GAAL;AAAU,iBAAO,IAAP;;AACV,aAAK,GAAL;AAAU,iBAAO,OAAP;;AACV,aAAK,GAAL;AAAU,iBAAO,QAAP;;AACV;AAAS,iBAAOA,KAAP;AAJX;;AAMF,SAAKtB,WAAW,CAACuD,kBAAjB;AACE,aAAOjC,KAAK,CACTkC,MADI,CAEH,CAACC,GAAD;AAAA,YAAM,CAACC,OAAD,EAAUC,MAAV,EAAkBC,OAAlB,EAA2BC,OAA3B,CAAN;AAAA,eACG,EAAE,GAAGJ,GAAL;AAAU,WAACE,MAAM,CAAClB,QAAP,EAAD,GAAqB;AAAEiB,YAAAA,OAAF;AAAWE,YAAAA,OAAX;AAAoBC,YAAAA;AAApB;AAA/B,SADH;AAAA,OAFG,EAIH,EAJG,CAAP;;AAMF;AACE,aAAOvC,KAAP;AAvDJ;AAyDD;;AAED,SAASwC,cAAT,CAAyBxC,KAAzB,EAAgCC,IAAhC,EAAsCC,MAAtC,EAA8C;AAC5C,UAAQD,IAAR;AACE,SAAKvB,WAAW,CAACgC,MAAjB;AACA,SAAKhC,WAAW,CAACiC,GAAjB;AACE,aAAOnB,QAAQ,CAACQ,KAAD,CAAf;;AACF,SAAKtB,WAAW,CAACkC,EAAjB;AACE,aAAOrB,OAAO,CAACS,KAAD,CAAd;;AACF,SAAKtB,WAAW,CAACmC,GAAjB;AACE,aAAOb,KAAK,CAACc,GAAN,CAAUvB,OAAV,CAAP;;AACF,SAAKb,WAAW,CAACqC,IAAjB;AACE,aAAOR,MAAM,CAACC,IAAP,CAAY,CAACR,KAAK,GAAG,CAAH,GAAO,CAAb,CAAZ,CAAP;;AACF,SAAKtB,WAAW,CAACsC,MAAjB;AACE,aAAO9C,MAAM,CAAC8B,KAAD,EAAQE,MAAR,CAAb;;AACF,SAAKxB,WAAW,CAACuC,SAAjB;AACE,aAAO/C,MAAM,CAAC8B,KAAD,EAAQ,IAAR,CAAb;;AACF,SAAKtB,WAAW,CAACiD,GAAjB;AACE,aAAOpB,MAAM,CAACC,IAAP,CAAYR,KAAZ,EAAmB,KAAnB,CAAP;;AACF,SAAKtB,WAAW,CAAC+D,UAAjB;AACE,aAAOzC,KAAK,CAACc,GAAN,CAAUP,MAAM,CAACC,IAAjB,CAAP;;AACF,SAAK9B,WAAW,CAAC0C,OAAjB;AACE,aAAO,OAAOpB,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,CAAC0C,KAAN,CAAY,GAAZ,EAAiB,CAAjB,MAAwB,IAArD,GACHxE,MAAM,CAAC8B,KAAD,EAAQ,IAAR,CADH,GAEHN,OAAO,CAACM,KAAD,CAFX;;AAGF,SAAKtB,WAAW,CAACwC,MAAjB;AACE,aAAOxB,OAAO,CAACM,KAAD,CAAd;;AACF,SAAKtB,WAAW,CAAC2C,QAAjB;AACE,aAAO5B,aAAa,CAACO,KAAD,CAApB;;AACF,SAAKtB,WAAW,CAAC4C,SAAjB;AACE,aAAOtB,KAAK,CAAC2C,UAAN,IAAoB3C,KAA3B;;AACF,SAAKtB,WAAW,CAACoD,OAAjB;AACE,aAAO9B,KAAK,CAACc,GAAN,CAAUiB,CAAC,IAAIA,CAAC,CAACa,SAAF,EAAf,CAAP;;AACF,SAAKlE,WAAW,CAACyB,SAAjB;AACE,aAAOI,MAAM,CAACC,IAAP,CAAY,CAAC,GAAGd,OAAO,CAACM,KAAK,CAACM,SAAP,CAAX,EAA8B,CAA9B,EAAiC,GAAGZ,OAAO,CAACM,KAAK,CAACS,UAAP,CAA3C,CAAZ,CAAP;;AACF,SAAK/B,WAAW,CAACsD,cAAjB;AACE,cAAQhC,KAAR;AACE,aAAK,IAAL;AAAW,iBAAOR,QAAQ,CAAC,CAAD,CAAf;;AACX,aAAK,OAAL;AAAc,iBAAOA,QAAQ,CAAC,CAAD,CAAf;;AACd,aAAK,QAAL;AAAe,iBAAOA,QAAQ,CAAC,CAAD,CAAf;;AACf;AAAS,iBAAOQ,KAAP;AAJX;;AAMF;AACE,aAAOA,KAAP;AAxCJ;AA0CD;;AAED,SAAS6C,aAAT,CAAwB7C,KAAxB,EAA+B8C,GAA/B,EAAoC7C,IAApC,EAA0CC,MAA1C,EAAkD;AAChD,QAAM6C,MAAM,GAAG,CAACC,KAAD,EAAQC,MAAR,KAAmBD,KAAK,GAAG,EAAH,GAAQ;AAAE,KAACF,GAAD,GAAO5D,kBAAkB,CAACe,IAAD,CAAlB,CAAyBgD,MAAzB;AAAT,GAA/C,CADgD,CAEhD;;;AACA,MAAIjD,KAAK,KAAKkD,SAAV,IAAuBlD,KAAK,KAAK,IAArC,EAA2C,OAAO;AAAE,KAAC8C,GAAD,GAAO;AAAT,GAAP,CAHK,CAKhD;;AACA,UAAQ7C,IAAR;AACE,SAAKvB,WAAW,CAACgC,MAAjB;AACA,SAAKhC,WAAW,CAACiC,GAAjB;AAAsB;AACpB,cAAMwC,YAAY,GAAG,CAAC,CAACC,KAAK,CAACpD,KAAD,CAAN,IAAiB/B,SAAS,CAACoF,WAAV,CAAsBrD,KAAtB,CAAlB,KAAmD/B,SAAS,CAAC+B,KAAD,CAAT,CAAiBsD,EAAjB,CAAoB,CAApB,CAAxE;AACA,eAAOP,MAAM,CACX,CAAC,CAACK,KAAK,CAACpD,KAAD,CAAN,IAAiB/B,SAAS,CAACoF,WAAV,CAAsBrD,KAAtB,CAAlB,KAAmD/B,SAAS,CAAC+B,KAAD,CAAT,CAAiBuD,GAAjB,CAAqB,CAArB,CADxC,EAEX;AAAEvD,UAAAA,KAAF;AAASmD,UAAAA;AAAT,SAFW,CAAb;AAID;;AACD,SAAKzE,WAAW,CAACkC,EAAjB;AAAqB;AACnB,cAAM4C,QAAQ,GAAGC,KAAK,CAACC,OAAN,CAAcxD,MAAd,IAAwBA,MAAxB,GAAiC,CAACA,MAAD,CAAlD;AACA,cAAMyD,CAAC,GAAGH,QAAQ,CAACI,IAAT,CAAcD,CAAC,IAAIA,CAAC,KAAK3D,KAAK,CAAC0C,KAAN,CAAY,GAAZ,EAAiB,CAAjB,CAAzB,CAAV;AACA,eAAOK,MAAM,CAACY,CAAC,IAAI/E,aAAa,CAACoB,KAAK,CAAC0C,KAAN,CAAY,GAAZ,EAAiB,CAAjB,CAAD,CAAnB,EAA0C;AAAE1C,UAAAA,KAAF;AAASE,UAAAA;AAAT,SAA1C,CAAb;AACD;;AACD,SAAKxB,WAAW,CAACsC,MAAjB;AACE,aAAO+B,MAAM,CAAC/C,KAAK,CAAC0C,KAAN,CAAY,GAAZ,EAAiB,CAAjB,MAAwBxC,MAAzB,EAAiC;AAAEA,QAAAA,MAAF;AAAUF,QAAAA;AAAV,OAAjC,CAAb;;AACF,SAAKtB,WAAW,CAACwC,MAAjB;AACE,aAAO6B,MAAM,CAAC,IAAD,CAAb;;AACF,SAAKrE,WAAW,CAACyB,SAAjB;AACE,aAAO4C,MAAM,CAAC,OAAO/C,KAAP,KAAiB,QAAjB,IAA6B6D,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqChE,KAArC,EAA4C,YAA5C,CAA7B,IAA0F6D,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqChE,KAArC,EAA4C,WAA5C,CAA3F,CAAb;;AACF,SAAKtB,WAAW,CAAC2C,QAAjB;AACE,aAAO0B,MAAM,CAACU,KAAK,CAACC,OAAN,CAAc1D,KAAd,KAAwB,CAACA,KAAK,CAAC4D,IAAN,CAAWK,CAAC,IAAIA,CAAC,KAAKJ,MAAM,CAACI,CAAD,CAA5B,CAA1B,EAA4D;AAAEjE,QAAAA;AAAF,OAA5D,CAAb;;AACF;AACE,aAAO,EAAP;AAvBJ;AAyBD;;AAED,SAASkE,eAAT,CAA0BjB,MAA1B,EAAkCkB,MAAlC,EAAiE;AAAA,MAAvB;AAAEC,IAAAA;AAAF,GAAuB,uEAAJ,EAAI;AAC/DnB,EAAAA,MAAM,GAAGkB,MAAM,CACZE,MADM,CACC;AAAA,QAAC,CAACC,CAAD,EAAIvC,CAAJ,CAAD;AAAA,WAAYA,CAAC,KAAKrD,WAAW,CAACgC,MAA9B;AAAA,GADD,EAENwB,MAFM,CAGL,CAACC,GAAD;AAAA,QAAM,CAACW,GAAD,CAAN;AAAA,WAAiB,EAAE,GAAGG,MAAL;AAAa,OAACH,GAAD,GAAOvE,YAAY,CAAC0E,MAAM,CAACH,GAAD,CAAP,EAAc;AAAEsB,QAAAA;AAAF,OAAd;AAAhC,KAAjB;AAAA,GAHK,EAILnB,MAJK,CAAT;AAMA,QAAMsB,UAAU,GAAGJ,MAAM,CAACrD,GAAP,CAAW;AAAA,QAAC,CAAC0D,CAAD,CAAD;AAAA,WAASA,CAAT;AAAA,GAAX,CAAnB;AACA,SAAOX,MAAM,CACVY,OADI,CACIxB,MADJ,EAEJf,MAFI,CAGH,CAACC,GAAD,YAAuB;AAAA,QAAjB,CAACW,GAAD,EAAM9C,KAAN,CAAiB;AACrB,QAAIuE,UAAU,CAACG,QAAX,CAAoB5B,GAApB,CAAJ,EAA8BX,GAAG,CAACW,GAAD,CAAH,GAAW9C,KAAX;;AAC9B,QAAI,CAAC,WAAD,EAAc,UAAd,EAA0B,aAA1B,EAAyC0E,QAAzC,CAAkD5B,GAAlD,CAAJ,EAA4D;AAC1DX,MAAAA,GAAG,CAAE,GAAEW,GAAI,MAAR,CAAH,GAAoB9C,KAAK,CAACC,IAAN,KAAeL,gBAAgB,CAACC,KAAhC,GAAwC,CAAxC,GAA4C,CAAhE;AACAsC,MAAAA,GAAG,CAAE,GAAEW,GAAI,OAAR,CAAH,GAAqB9C,KAAK,CAACA,KAA3B;AACD;;AACD,WAAOmC,GAAP;AACD,GAVE,EAWH,EAXG,CAAP;AAaD,C,CAED;;;AAEA,SAASwC,oBAAT,CAA+B1B,MAA/B,EAAuC2B,MAAvC,EAA+C;AAC7C,QAAMC,MAAM,GAAG;AACb,KAAC5F,OAAO,CAAC6F,cAAT,GAA0B,WADb;AAEb,KAAC7F,OAAO,CAAC8F,YAAT,GAAwB,WAFX;AAGb,KAAC9F,OAAO,CAAC+F,WAAT,GAAuB,UAHV;AAIb,KAAC/F,OAAO,CAACgG,cAAT,GAA0B;AAJb,IAKbL,MALa,CAAf;;AAOA,MAAI3B,MAAM,CAAC4B,MAAD,CAAN,IAAkB5B,MAAM,CAAE,GAAE4B,MAAO,OAAX,CAA5B,EAAgD;AAC9C,WAAO5B,MAAM,CAAE,GAAE4B,MAAO,OAAX,CAAN,IAA4B5B,MAAM,CAAC4B,MAAD,CAAN,CAAe7E,KAAlD;AACD;;AACD,SAAO,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,OAAO,SAASkF,eAAT,CAA0BN,MAA1B,SAA4D;AAAA,MAA1B;AAAEO,IAAAA,GAAG,GAAG,CAAR;AAAWlC,IAAAA,MAAX;AAAmBmC,IAAAA;AAAnB,GAA0B;AACjE,QAAMC,UAAU,GAAGpH,SAAS,CAAC,GAAD,CAA5B,CADiE,CAC/B;;AAClC,MAAI,CAACgF,MAAL,EAAa,OAAOhF,SAAS,CAACQ,WAAD,CAAT,CAAuB6G,KAAvB,CAA6BD,UAA7B,EAAyClE,QAAzC,CAAkD,EAAlD,CAAP;AAEb,MAAIoE,SAAS,GAAGC,QAAQ,CAACZ,MAAD,EAAS;AAAE3B,IAAAA,MAAM,EAAE,EAAE,GAAGA,MAAL;AAAawC,MAAAA,GAAG,EAAE;AAAlB,KAAV;AAAiCJ,IAAAA,UAAjC;AAA6CF,IAAAA,GAA7C;AAAkDC,IAAAA;AAAlD,GAAT,CAAxB;AACA,MAAIM,QAAQ,GAAGzH,SAAS,CAAC,CAAD,CAAxB;;AAEA,SAAO,CAACsH,SAAS,CAACI,EAAV,CAAaD,QAAb,CAAR,EAAgC;AAC9BH,IAAAA,SAAS,GAAGC,QAAQ,CAACZ,MAAD,EAAS;AAAE3B,MAAAA,MAAM,EAAE,EAAE,GAAGA,MAAL;AAAawC,QAAAA,GAAG,EAAEF;AAAlB,OAAV;AAAyCF,MAAAA,UAAzC;AAAqDF,MAAAA,GAArD;AAA0DC,MAAAA;AAA1D,KAAT,CAApB;AACAM,IAAAA,QAAQ,GAAGH,SAAX;AACD;;AACD,SAAOG,QAAQ,CAACvE,QAAT,CAAkB,EAAlB,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASqE,QAAT,CAAmBZ,MAAnB,SAAiE;AAAA,MAAtC;AAAE3B,IAAAA,MAAF;AAAUkC,IAAAA,GAAG,GAAG,CAAhB;AAAmBE,IAAAA,UAAnB;AAA+BD,IAAAA;AAA/B,GAAsC;AAC/D,QAAM;AAAEzC,IAAAA,UAAU,EAAEiD;AAAd,MAA+BC,OAAO,CAAC,EAAE,GAAG5C;AAAL,GAAD,EAAgB2B,MAAhB,EAAwB;AAAEQ,IAAAA;AAAF,GAAxB,CAA5C;AACA,QAAMU,MAAM,GAAGF,YAAY,CAACG,MAA5B;AACA,SAAOjH,eAAe,CAAC8F,MAAD,CAAf,CACJoB,IADI,CACCjH,gBAAgB,CAAC6F,MAAD,EAASkB,MAAT,EAAiB;AACrCG,IAAAA,WAAW,EAAEtB,oBAAoB,CAAC1B,MAAD,EAAS2B,MAAT,CADI;AAErCsB,IAAAA,WAAW,EAAE,CAACjH,OAAO,CAACkH,MAAT,EAAiBlH,OAAO,CAACmH,SAAzB,EAAoC1B,QAApC,CAA6CE,MAA7C,IACT3B,MAAM,CAACoD,EAAP,CAAUA,EAAV,CAAaC,SAAb,CAAuB3D,UAAvB,CAAkCoD,MADzB,GAET;AAJiC,GAAjB,CADjB,EAOJT,KAPI,CAOED,UAPF,CAAP;AAQD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,OAAO,SAASkB,YAAT,GAA2F;AAAA,MAApEd,GAAoE,uEAA9D,CAA8D;AAAA,MAA3Db,MAA2D;AAAA,MAAnD;AAAEO,IAAAA,GAAG,GAAG,CAAR;AAAWlC,IAAAA,MAAX;AAAmBuD,IAAAA,WAAW,GAAG,IAAjC;AAAuCpB,IAAAA;AAAvC,GAAmD,uEAAJ,EAAI;AAChG,MAAI,CAACnC,MAAD,IAAWuD,WAAf,EAA4BC,OAAO,CAACC,IAAR,CAAc,wDAAuDjI,WAAY,GAAjF;AAE5B,SAAOgH,GAAG,IAAIP,eAAe,CAACN,MAAD,EAAS;AAAE3B,IAAAA,MAAF;AAAUkC,IAAAA,GAAV;AAAeC,IAAAA;AAAf,GAAT,CAA7B;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASuB,cAAT,CAAyB1D,MAAzB,EAAiCkB,MAAjC,SAA+D;AAAA,MAAtB;AAAEyC,IAAAA,WAAW,GAAG;AAAhB,GAAsB;AACpE,SAAOzC,MAAM,CACVE,MADI,CACG;AAAA,QAAC,CAACvB,GAAD,CAAD;AAAA,WAAW,CAAC8D,WAAW,CAAClC,QAAZ,CAAqB5B,GAArB,CAAD,IAA8BA,GAAG,KAAK,SAAjD;AAAA,GADH,EAEJZ,MAFI,CAGH,CAACC,GAAD;AAAA,QAAM,CAACW,GAAD,EAAM7C,IAAN,EAAYC,MAAZ,CAAN;AAAA,WAA8B2D,MAAM,CAACgD,MAAP,CAC5B1E,GAD4B,EACvBU,aAAa,CAACI,MAAM,CAACH,GAAD,CAAP,EAAcA,GAAd,EAAmB7C,IAAnB,EAAyBC,MAAzB,CADU,CAA9B;AAAA,GAHG,EAMH,EANG,CAAP;AAQD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAAS4G,UAAT,CACL7D,MADK,EAELkB,MAFK,EAIL;AAAA,MADA;AAAEyC,IAAAA,WAAW,GAAG,EAAhB;AAAoBxC,IAAAA,YAAY,GAAG9F,iBAAiB,CAACyI;AAArD,GACA,uEADgE,EAChE;AACA,QAAMC,cAAc,GAAG7C,MAAM,CAACE,MAAP,CAAc;AAAA,QAAC,CAACvB,GAAD,CAAD;AAAA,WAAW,CAAC8D,WAAW,CAAClC,QAAZ,CAAqB5B,GAArB,CAAZ;AAAA,GAAd,CAAvB,CADA,CAGA;;AACAG,EAAAA,MAAM,GAAGiB,eAAe,CAACjB,MAAD,EAAS+D,cAAT,EAAyB;AAAE5C,IAAAA;AAAF,GAAzB,CAAxB,CAJA,CAKA;;AACA,QAAMpB,KAAK,GAAG2D,cAAc,CAAC1D,MAAD,EAASkB,MAAT,EAAiB;AAAEyC,IAAAA;AAAF,GAAjB,CAA5B;;AACA,MAAI/C,MAAM,CAACoD,IAAP,CAAYjE,KAAZ,EAAmB+C,MAAvB,EAA+B;AAC7B,UAAM,IAAImB,KAAJ,CAAU,8BAA8BC,IAAI,CAACC,SAAL,CAAepE,KAAf,CAAxC,CAAN;AACD;;AAED,SAAOgE,cAAc,CAClBlG,GADI,CACA;AAAA,QAAC,CAACgC,GAAD,EAAMuE,SAAN,EAAiBnH,MAAjB,CAAD;AAAA,WAA8BsC,cAAc,CAACS,MAAM,CAACH,GAAD,CAAP,EAAcuE,SAAd,EAAyBnH,MAAzB,CAA5C;AAAA,GADA,CAAP;AAED;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASoH,WAAT,CAAsBtG,MAAtB,EAA8BmD,MAA9B,EAAsC;AAC3C,SAAOA,MAAM,CACVjC,MADI,CAEH,CACEC,GADF,UAGEoF,KAHF;AAAA,QAEE,CAACzE,GAAD,EAAMuE,SAAN,EAAiBnH,MAAjB,CAFF;AAAA,WAIK2D,MAAM,CAACgD,MAAP,CAAc1E,GAAd,EAAmB;AAAE,OAACW,GAAD,GAAO/C,gBAAgB,CAACiB,MAAM,CAACuG,KAAD,CAAP,EAAgBF,SAAhB,EAA2BnH,MAA3B;AAAzB,KAAnB,CAJL;AAAA,GAFG,EAOH,EAPG,CAAP;AASD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMsH,SAAS,GAAG,UAA0B;AAAA,MAAzB;AAAEpC,IAAAA,GAAF;AAAOqC,IAAAA,KAAP;AAAcxH,IAAAA;AAAd,GAAyB;AAC1C,QAAMyH,aAAa,GAAG,CAAC,CAACD,KAAxB;AACA,QAAME,QAAQ,GAAGD,aAAa,GAAGD,KAAH,GAAWxH,IAAzC;AACA,QAAMkE,MAAM,GAAGuD,aAAa,GAAG7I,yBAAH,GAA+BG,uBAA3D;;AAEA,MAAI,CAACmF,MAAM,CAACwD,QAAD,CAAX,EAAuB;AACrB,UAAM,IAAIT,KAAJ,CAAW,eAAcQ,aAAa,GAAG,iBAAH,GAAuB,eAAgB,wBAAuBA,aAAa,GAAG,SAASD,KAAZ,GAAoBxH,IAAK,EAA1I,CAAN;AACD;;AACD,MAAI,CAACkE,MAAM,CAACwD,QAAD,CAAN,CAAiBvC,GAAjB,CAAL,EAA4B;AAC1B,UAAM,IAAI8B,KAAJ,CAAW,eAAcQ,aAAa,GAAG,iBAAH,GAAuB,eAAgB,wBAAuBA,aAAa,GAAG,SAASD,KAAZ,GAAoBxH,IAAK,YAAWmF,GAAI,EAAzJ,CAAN;AACD;;AACD,SAAOjB,MAAM,CAACwD,QAAD,CAAN,CAAiBvC,GAAjB,CAAP;AACD,CAZD;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,OAAO,SAASS,OAAT,CACL5C,MADK,EAELhD,IAFK,EAIL;AAAA,MADA;AAAE2G,IAAAA,WAAW,GAAG,EAAhB;AAAoB1G,IAAAA,MAAM,GAAG,IAA7B;AAAmCkF,IAAAA,GAAG,GAAGjG,GAAzC;AAA8CiF,IAAAA,YAAY,GAAG9F,iBAAiB,CAACyI;AAA/E,GACA,uEAD0F,EAC1F;AACA,QAAM,CAAC5C,MAAD,EAASyD,GAAT,IAAgBJ,SAAS,CAAC;AAAEvH,IAAAA,IAAF;AAAQmF,IAAAA;AAAR,GAAD,CAA/B;AACA,QAAMpE,MAAM,GAAG8F,UAAU,CACvB,EAAE,GAAG7D,MAAL;AAAa9D,IAAAA,GAAG,EAAEiG,GAAlB;AAAuBwC,IAAAA;AAAvB,GADuB,EAEvBzD,MAFuB,EAGvB;AAAEyC,IAAAA,WAAF;AAAexC,IAAAA,YAAY,EAAEnB,MAAM,CAACmB,YAAP,IAAuBA;AAApD,GAHuB,CAAV,CAIbC,MAJa,CAINJ,CAAC,IAAIA,CAAC,KAAKf,SAJL,CAAf;AAMA,QAAMP,UAAU,GAAGtE,SAAS,CAAC2C,MAAD,CAA5B;AACA,QAAMqF,EAAE,GAAGjI,MAAM,CAACuE,UAAD,EAAazC,MAAb,CAAjB;AAEA,SAAO;AAAEmG,IAAAA,EAAF;AAAM1D,IAAAA,UAAN;AAAkB3B,IAAAA,MAAlB;AAA0B6G,IAAAA,QAAQ,EAAEP,WAAW,CAACtG,MAAD,EAASmD,MAAT;AAA/C,GAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAAS5C,QAAT,CAAmB+E,SAAnB,EAAoE;AAAA,MAAtCwB,aAAsC,uEAAtB,KAAsB;AAAA,MAAf5H,MAAe,uEAAN,IAAM;AACzE,QAAMyC,UAAU,GAAGmF,aAAa,GAAGxB,SAAH,GAAepI,MAAM,CAACoI,SAAD,EAAYpG,MAAZ,CAArD;AACA,QAAMc,MAAM,GAAG7C,SAAS,CAACwE,UAAD,CAAxB;AAEA,QAAM8E,KAAK,GAAGrI,OAAO,CAAC4B,MAAM,CAAC,CAAD,CAAP,CAArB;AACA,QAAMoE,GAAG,GAAGhG,OAAO,CAAC4B,MAAM,CAAC,CAAD,CAAP,CAAnB;AACA,QAAM,CAACmD,MAAD,IAAWqD,SAAS,CAAC;AAAEC,IAAAA,KAAF;AAASrC,IAAAA;AAAT,GAAD,CAA1B;AAEA,SAAO;AAAER,IAAAA,MAAM,EAAEjG,iBAAiB,CAAC8I,KAAD,CAA3B;AAAoCpB,IAAAA,EAAE,EAAEiB,WAAW,CAACtG,MAAD,EAASmD,MAAT,CAAnD;AAAqExB,IAAAA,UAArE;AAAiF3B,IAAAA;AAAjF,GAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAAS+G,WAAT,CAAsBC,KAAtB,EAA6B;AAClC,QAAMC,IAAI,GAAG,OAAOD,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,CAACE,UAAN,CAAiB,KAAjB,CAA7B,GAAuDhK,MAAM,CAAC8J,KAAD,EAAQ,IAAR,CAA7D,GAA6EA,KAA1F;AACA,SAAO5J,MAAM,CAACI,IAAI,CAACyJ,IAAD,CAAL,EAAa,IAAb,CAAb;AACD;AAED,eAAe;AACb/C,EAAAA,eADa;AAEbqB,EAAAA,YAFa;AAGbhF,EAAAA,QAHa;AAIb+F,EAAAA,WAJa;AAKbzB,EAAAA,OALa;AAMbiB,EAAAA,UANa;AAObH,EAAAA,cAPa;AAQboB,EAAAA;AARa,CAAf","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(\n (!isNaN(value) || BigNumber.isBigNumber(value)) && BigNumber(value).gte(0),\n { value, isMinusValue }\n )\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(\n (acc, [key]) => ({ ...params, [key]: formatAmount(params[key], { denomination }) }),\n params\n )\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\n : 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(\n acc, validateField(params[key], key, type, prefix)\n ),\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 {String[]} [options.excludeKeys=[]] Array of keys to exclude for validation and build\n * @param {String} [options.denomination='aettos'] Denomination of amounts\n * @throws {Error} Validation error\n * @return {Array} Array with binary fields of transaction\n */\nexport function buildRawTx (\n params,\n schema,\n { excludeKeys = [], denomination = AE_AMOUNT_FORMATS.AETTOS } = {}\n) {\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 {String[]} [options.excludeKeys] Array of keys to exclude for validation and build\n * @param {String} [options.prefix] Prefix of transaction\n * @throws {Error} Validation error\n * @returns {Object} object\n * @returns {String} object.tx Base64Check transaction hash with 'tx_' prefix\n * @returns {Buffer} object.rlpEncoded rlp encoded transaction\n * @returns {Array<Buffer>} object.binary binary transaction\n */\nexport function buildTx (\n params,\n type,\n { excludeKeys = [], prefix = 'tx', vsn = VSN, denomination = AE_AMOUNT_FORMATS.AETTOS } = {}\n) {\n const [schema, tag] = getSchema({ type, vsn })\n const binary = buildRawTx(\n { ...params, VSN: vsn, tag },\n schema,\n { excludeKeys, denomination: params.denomination || denomination }\n ).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\n * (if fromRlpBinary flag is true)\n * @param {Boolean} fromRlpBinary Unpack from RLP encoded transaction (default: false)\n * @param {String} prefix - Prefix of data\n * @returns {Object} object\n * @returns {Object} object.tx Object with transaction param's\n * @returns {Buffer} object.rlpEncoded rlp encoded transaction\n * @returns {Array<Buffer>} object.binary 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 {\n calculateMinFee,\n calculateFee,\n unpackTx,\n unpackRawTx,\n buildTx,\n buildRawTx,\n validateParams,\n buildTxHash\n}\n"],"file":"index.js"}
@@ -51,12 +51,12 @@ export const NAME_FEE_BID_INCREMENT = 0.05; // # the increment is in percentage
51
51
  // # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L272
52
52
 
53
53
  export const NAME_BID_TIMEOUT_BLOCKS = 480; // # ~1 day
54
+ // # this is the max length for a domain that requires a base fee to be paid
54
55
 
55
- export const NAME_MAX_LENGTH_FEE = 31; // # this is the max length for a domain that requires a base fee to be paid
56
-
56
+ export const NAME_MAX_LENGTH_FEE = 31;
57
57
  export const NAME_BID_MAX_LENGTH = 12; // # this is the max length for a domain to be part of a bid
58
58
 
59
- export const NAME_ID_KEY = {
59
+ export const POINTER_KEY_BY_PREFIX = {
60
60
  ak: 'account_pubkey',
61
61
  ok: 'oracle_pubkey',
62
62
  ct: 'contract_pubkey',
@@ -494,7 +494,8 @@ const GA_META_TX_2 = [...BASE_TX, TX_FIELD('gaId', FIELD_TYPES.id, 'ak'), TX_FIE
494
494
  const PAYING_FOR_TX = [...BASE_TX, TX_FIELD('payerId', FIELD_TYPES.id, 'ak'), TX_FIELD('nonce', FIELD_TYPES.int), TX_FIELD('fee', FIELD_TYPES.int), TX_FIELD('tx', FIELD_TYPES.rlpBinary)];
495
495
  const CONTRACT_CREATE_TX = [...BASE_TX, TX_FIELD('ownerId', FIELD_TYPES.id, 'ak'), TX_FIELD('nonce', FIELD_TYPES.int), TX_FIELD('code', FIELD_TYPES.binary, 'cb'), TX_FIELD('ctVersion', FIELD_TYPES.ctVersion), TX_FIELD('fee', FIELD_TYPES.int), TX_FIELD('ttl', FIELD_TYPES.int), TX_FIELD('deposit', FIELD_TYPES.amount), TX_FIELD('amount', FIELD_TYPES.amount), TX_FIELD('gas', FIELD_TYPES.int), TX_FIELD('gasPrice', FIELD_TYPES.int), TX_FIELD('callData', FIELD_TYPES.binary, 'cb')];
496
496
  const CONTRACT_CALL_TX = [...BASE_TX, TX_FIELD('callerId', FIELD_TYPES.id, 'ak'), TX_FIELD('nonce', FIELD_TYPES.int), TX_FIELD('contractId', FIELD_TYPES.id, ['ct', 'nm']), TX_FIELD('abiVersion', FIELD_TYPES.int), TX_FIELD('fee', FIELD_TYPES.int), TX_FIELD('ttl', FIELD_TYPES.int), TX_FIELD('amount', FIELD_TYPES.amount), TX_FIELD('gas', FIELD_TYPES.int), TX_FIELD('gasPrice', FIELD_TYPES.int), TX_FIELD('callData', FIELD_TYPES.binary, 'cb')];
497
- const CONTRACT_CALL_RESULT_TX = [...BASE_TX, TX_FIELD('callerId', FIELD_TYPES.id, 'ak'), TX_FIELD('callerNonce', FIELD_TYPES.int), TX_FIELD('height', FIELD_TYPES.int), TX_FIELD('contractId', FIELD_TYPES.id, 'ct'), TX_FIELD('gasPrice', FIELD_TYPES.int), TX_FIELD('gasUsed', FIELD_TYPES.int), TX_FIELD('returnValue', FIELD_TYPES.binary, 'cb'), TX_FIELD('returnType', FIELD_TYPES.callReturnType), // TODO: add serialization for <log> :: [ { <address> :: id, [ <topics> :: binary() ], <data> :: binary() } ]
497
+ const CONTRACT_CALL_RESULT_TX = [...BASE_TX, TX_FIELD('callerId', FIELD_TYPES.id, 'ak'), TX_FIELD('callerNonce', FIELD_TYPES.int), TX_FIELD('height', FIELD_TYPES.int), TX_FIELD('contractId', FIELD_TYPES.id, 'ct'), TX_FIELD('gasPrice', FIELD_TYPES.int), TX_FIELD('gasUsed', FIELD_TYPES.int), TX_FIELD('returnValue', FIELD_TYPES.binary, 'cb'), TX_FIELD('returnType', FIELD_TYPES.callReturnType), // TODO: add serialization for
498
+ // <log> :: [ { <address> :: id, [ <topics> :: binary() ], <data> :: binary() } ]
498
499
  TX_FIELD('log', FIELD_TYPES.rawBinary)];
499
500
  const ORACLE_REGISTER_TX = [...BASE_TX, TX_FIELD('accountId', FIELD_TYPES.id, 'ak'), TX_FIELD('nonce', FIELD_TYPES.int), TX_FIELD('queryFormat', FIELD_TYPES.string), TX_FIELD('responseFormat', FIELD_TYPES.string), TX_FIELD('queryFee', FIELD_TYPES.amount), TX_FIELD('oracleTtlType', FIELD_TYPES.int), TX_FIELD('oracleTtlValue', FIELD_TYPES.int), TX_FIELD('fee', FIELD_TYPES.int), TX_FIELD('ttl', FIELD_TYPES.int), TX_FIELD('abiVersion', FIELD_TYPES.int)];
500
501
  const ORACLE_EXTEND_TX = [...BASE_TX, TX_FIELD('oracleId', FIELD_TYPES.id, ['ok', 'nm']), TX_FIELD('nonce', FIELD_TYPES.int), TX_FIELD('oracleTtlType', FIELD_TYPES.int), TX_FIELD('oracleTtlValue', FIELD_TYPES.int), TX_FIELD('fee', FIELD_TYPES.int), TX_FIELD('ttl', FIELD_TYPES.int)];