@aeternity/aepp-sdk 14.0.0 → 14.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +11 -19
- package/dist/aepp-sdk.browser-script.cjs +1 -1
- package/dist/aepp-sdk.browser-script.cjs.LICENSE.txt +2 -0
- package/dist/aepp-sdk.browser-script.cjs.map +1 -1
- package/dist/aepp-sdk.browser.cjs +1 -1
- package/dist/aepp-sdk.browser.cjs.map +1 -1
- package/dist/aepp-sdk.cjs +10846 -4277
- package/dist/aepp-sdk.cjs.map +1 -1
- package/es/AeSdkBase.d.ts +10 -1
- package/es/AeSdkBase.js +12 -2
- package/es/AeSdkBase.js.map +1 -1
- package/es/AeSdkMethods.d.ts +1 -1
- package/es/AeSdkMethods.js.map +1 -1
- package/es/AeSdkWallet.js +1 -1
- package/es/AeSdkWallet.js.map +1 -1
- package/es/Middleware.d.ts +5 -1
- package/es/Middleware.js +7 -2
- package/es/Middleware.js.map +1 -1
- package/es/MiddlewareSubscriber.d.ts +3 -0
- package/es/MiddlewareSubscriber.js +4 -0
- package/es/MiddlewareSubscriber.js.map +1 -1
- package/es/Node.d.ts +6 -1
- package/es/Node.js +28 -4
- package/es/Node.js.map +1 -1
- package/es/account/Base.d.ts +12 -0
- package/es/account/Base.js +1 -0
- package/es/account/Base.js.map +1 -1
- package/es/account/BaseFactory.d.ts +1 -0
- package/es/account/BaseFactory.js +1 -0
- package/es/account/BaseFactory.js.map +1 -1
- package/es/account/Generalized.d.ts +5 -0
- package/es/account/Generalized.js +9 -0
- package/es/account/Generalized.js.map +1 -1
- package/es/account/Ledger.d.ts +5 -0
- package/es/account/Ledger.js +9 -0
- package/es/account/Ledger.js.map +1 -1
- package/es/account/LedgerFactory.d.ts +2 -0
- package/es/account/LedgerFactory.js +10 -4
- package/es/account/LedgerFactory.js.map +1 -1
- package/es/account/Memory.d.ts +5 -0
- package/es/account/Memory.js +14 -5
- package/es/account/Memory.js.map +1 -1
- package/es/account/Metamask.d.ts +8 -0
- package/es/account/Metamask.js +13 -0
- package/es/account/Metamask.js.map +1 -1
- package/es/account/MetamaskFactory.d.ts +20 -2
- package/es/account/MetamaskFactory.js +93 -39
- package/es/account/MetamaskFactory.js.map +1 -1
- package/es/account/MnemonicFactory.d.ts +12 -2
- package/es/account/MnemonicFactory.js +48 -24
- package/es/account/MnemonicFactory.js.map +1 -1
- package/es/account/Rpc.d.ts +5 -0
- package/es/account/Rpc.js +8 -0
- package/es/account/Rpc.js.map +1 -1
- package/es/aens.d.ts +35 -7
- package/es/aens.js +62 -20
- package/es/aens.js.map +1 -1
- package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +1 -1
- package/es/aepp-wallet-communication/connection/BrowserRuntime.js.map +1 -1
- package/es/apis/middleware/middleware.d.ts +99 -9
- package/es/apis/middleware/middleware.js +560 -91
- package/es/apis/middleware/middleware.js.map +1 -1
- package/es/apis/middleware/models/index.d.ts +1267 -1582
- package/es/apis/middleware/models/index.js +1 -1363
- package/es/apis/middleware/models/index.js.map +1 -1
- package/es/apis/middleware/models/mappers.d.ts +126 -56
- package/es/apis/middleware/models/mappers.js +6250 -2989
- package/es/apis/middleware/models/mappers.js.map +1 -1
- package/es/apis/middleware/models/parameters.d.ts +54 -33
- package/es/apis/middleware/models/parameters.js +389 -134
- package/es/apis/middleware/models/parameters.js.map +1 -1
- package/es/apis/node/models/index.d.ts +60 -15
- package/es/apis/node/models/index.js.map +1 -1
- package/es/apis/node/models/mappers.d.ts +3 -0
- package/es/apis/node/models/mappers.js +130 -2
- package/es/apis/node/models/mappers.js.map +1 -1
- package/es/apis/node/node.d.ts +13 -1
- package/es/apis/node/node.js +54 -0
- package/es/apis/node/node.js.map +1 -1
- package/es/chain.d.ts +19 -6
- package/es/chain.js +30 -24
- package/es/chain.js.map +1 -1
- package/es/channel/Contract.d.ts +6 -3
- package/es/channel/Contract.js +5 -2
- package/es/channel/Contract.js.map +1 -1
- package/es/channel/Spend.d.ts +1 -1
- package/es/channel/Spend.js.map +1 -1
- package/es/channel/handlers.js +1 -2
- package/es/channel/handlers.js.map +1 -1
- package/es/channel/internal.d.ts +1 -1
- package/es/channel/internal.js +2 -2
- package/es/channel/internal.js.map +1 -1
- package/es/contract/Contract.d.ts +13 -2
- package/es/contract/Contract.js +22 -12
- package/es/contract/Contract.js.map +1 -1
- package/es/contract/compiler/Base.d.ts +1 -0
- package/es/contract/compiler/Base.js +1 -0
- package/es/contract/compiler/Base.js.map +1 -1
- package/es/contract/compiler/Cli.d.ts +2 -1
- package/es/contract/compiler/Cli.js +17 -11
- package/es/contract/compiler/Cli.js.map +1 -1
- package/es/contract/compiler/Http.d.ts +2 -1
- package/es/contract/compiler/Http.js +3 -2
- package/es/contract/compiler/Http.js.map +1 -1
- package/es/contract/compiler/getFileSystem.d.ts +1 -0
- package/es/contract/compiler/getFileSystem.js +1 -0
- package/es/contract/compiler/getFileSystem.js.map +1 -1
- package/es/contract/ga.d.ts +3 -3
- package/es/contract/ga.js +3 -3
- package/es/contract/ga.js.map +1 -1
- package/es/index-browser.d.ts +32 -2
- package/es/index-browser.js +32 -2
- package/es/index-browser.js.map +1 -1
- package/es/oracle/Oracle.d.ts +10 -1
- package/es/oracle/Oracle.js +16 -6
- package/es/oracle/Oracle.js.map +1 -1
- package/es/oracle/OracleBase.d.ts +15 -2
- package/es/oracle/OracleBase.js +23 -1
- package/es/oracle/OracleBase.js.map +1 -1
- package/es/oracle/OracleClient.d.ts +3 -0
- package/es/oracle/OracleClient.js +6 -1
- package/es/oracle/OracleClient.js.map +1 -1
- package/es/spend.js +1 -1
- package/es/spend.js.map +1 -1
- package/es/tx/builder/common.js +6 -3
- package/es/tx/builder/common.js.map +1 -1
- package/es/tx/builder/constants.d.ts +53 -3
- package/es/tx/builder/constants.js +62 -12
- package/es/tx/builder/constants.js.map +1 -1
- package/es/tx/builder/delegation/schema.js +15 -0
- package/es/tx/builder/delegation/schema.js.map +1 -1
- package/es/tx/builder/entry/constants.d.ts +4 -1
- package/es/tx/builder/entry/constants.js +10 -1
- package/es/tx/builder/entry/constants.js.map +1 -1
- package/es/tx/builder/entry/index.js +1 -2
- package/es/tx/builder/entry/index.js.map +1 -1
- package/es/tx/builder/field-types/ct-version.js +1 -2
- package/es/tx/builder/field-types/ct-version.js.map +1 -1
- package/es/tx/builder/field-types/fee.d.ts +1 -1
- package/es/tx/builder/field-types/fee.js +4 -4
- package/es/tx/builder/field-types/fee.js.map +1 -1
- package/es/tx/builder/field-types/gas-price.d.ts +3 -0
- package/es/tx/builder/field-types/gas-price.js +1 -1
- package/es/tx/builder/field-types/gas-price.js.map +1 -1
- package/es/tx/builder/field-types/name-fee.js +1 -1
- package/es/tx/builder/field-types/name-fee.js.map +1 -1
- package/es/tx/builder/field-types/name-id.js +2 -2
- package/es/tx/builder/field-types/name-id.js.map +1 -1
- package/es/tx/builder/field-types/nonce.d.ts +1 -1
- package/es/tx/builder/field-types/nonce.js.map +1 -1
- package/es/tx/builder/field-types/pointers.js +3 -3
- package/es/tx/builder/field-types/pointers.js.map +1 -1
- package/es/tx/builder/field-types/ttl.d.ts +1 -2
- package/es/tx/builder/field-types/ttl.js +7 -5
- package/es/tx/builder/field-types/ttl.js.map +1 -1
- package/es/tx/builder/helpers.d.ts +18 -12
- package/es/tx/builder/helpers.js +25 -17
- package/es/tx/builder/helpers.js.map +1 -1
- package/es/tx/builder/schema.d.ts +50 -70
- package/es/tx/builder/schema.generated.d.ts +12 -12
- package/es/tx/builder/schema.generated.js.map +1 -1
- package/es/tx/builder/schema.js +5 -3
- package/es/tx/builder/schema.js.map +1 -1
- package/es/tx/execution-cost.d.ts +3 -0
- package/es/tx/execution-cost.js +7 -4
- package/es/tx/execution-cost.js.map +1 -1
- package/es/tx/transaction-signer.d.ts +1 -0
- package/es/tx/transaction-signer.js +1 -0
- package/es/tx/transaction-signer.js.map +1 -1
- package/es/tx/validator.js +4 -3
- package/es/tx/validator.js.map +1 -1
- package/es/utils/MiddlewarePage.d.ts +4 -3
- package/es/utils/MiddlewarePage.js.map +1 -1
- package/es/utils/amount-formatter.d.ts +15 -1
- package/es/utils/amount-formatter.js +17 -1
- package/es/utils/amount-formatter.js.map +1 -1
- package/es/utils/autorest.d.ts +1 -1
- package/es/utils/autorest.js +10 -4
- package/es/utils/autorest.js.map +1 -1
- package/es/utils/bignumber.d.ts +1 -1
- package/es/utils/bignumber.js +1 -1
- package/es/utils/bignumber.js.map +1 -1
- package/es/utils/bytes.d.ts +3 -1
- package/es/utils/bytes.js +3 -1
- package/es/utils/bytes.js.map +1 -1
- package/es/utils/crypto.d.ts +48 -15
- package/es/utils/crypto.js +80 -29
- package/es/utils/crypto.js.map +1 -1
- package/es/utils/encoder-types.d.ts +1 -1
- package/es/utils/encoder-types.js +1 -1
- package/es/utils/encoder-types.js.map +1 -1
- package/es/utils/encoder.d.ts +2 -0
- package/es/utils/encoder.js +2 -0
- package/es/utils/encoder.js.map +1 -1
- package/es/utils/errors.d.ts +2 -2
- package/es/utils/errors.js +2 -2
- package/es/utils/errors.js.map +1 -1
- package/es/utils/json-big.js +1 -1
- package/es/utils/json-big.js.map +1 -1
- package/es/utils/jwt.js +3 -3
- package/es/utils/jwt.js.map +1 -1
- package/es/utils/typed-data.d.ts +5 -0
- package/es/utils/typed-data.js +6 -0
- package/es/utils/typed-data.js.map +1 -1
- package/package.json +51 -52
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas-price.js","names":["BigNumber","coinAmount","ArgumentError","IllegalArgumentError","MIN_GAS_PRICE","formatAmount","gasPriceCache","WeakMap","getCachedIncreasedGasPrice","node","cache","get","time","Date","now","gasPrice","minGasPrice","utilization","getRecentGasPrices","BigInt","toString","times","integerValue","toFixed","maxSafeGasPrice","console","warn","set","prepare","value","params","onNode","denomination","undefined","targetDenomination","serializeAettos"],"sources":["../../../../src/tx/builder/field-types/gas-price.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"gas-price.js","names":["BigNumber","coinAmount","ArgumentError","IllegalArgumentError","MIN_GAS_PRICE","formatAmount","gasPriceCache","WeakMap","getCachedIncreasedGasPrice","node","cache","get","time","Date","now","gasPrice","minGasPrice","utilization","getRecentGasPrices","BigInt","toString","times","integerValue","toFixed","maxSafeGasPrice","console","warn","set","prepare","value","params","onNode","denomination","undefined","targetDenomination","serializeAettos"],"sources":["../../../../src/tx/builder/field-types/gas-price.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport coinAmount from './coin-amount.js';\nimport { ArgumentError, IllegalArgumentError } from '../../../utils/errors.js';\nimport { Int, MIN_GAS_PRICE } from '../constants.js';\nimport Node from '../../../Node.js';\nimport { AE_AMOUNT_FORMATS, formatAmount } from '../../../utils/amount-formatter.js';\n\nconst gasPriceCache: WeakMap<Node, { time: number; gasPrice: bigint }> = new WeakMap();\n\nexport async function getCachedIncreasedGasPrice(node: Node): Promise<bigint> {\n const cache = gasPriceCache.get(node);\n if (cache != null && cache.time > Date.now() - 20 * 1000) {\n return cache.gasPrice;\n }\n\n const { minGasPrice, utilization } = (await node.getRecentGasPrices())[0];\n let gasPrice =\n utilization < 70\n ? 0n\n : BigInt(new BigNumber(minGasPrice.toString()).times(1.01).integerValue().toFixed());\n\n const maxSafeGasPrice = BigInt(MIN_GAS_PRICE) * 100000n; // max microblock fee is 600ae or 35usd\n if (gasPrice > maxSafeGasPrice) {\n console.warn(\n `Estimated gas price ${gasPrice} exceeds the maximum safe value for unknown reason.` +\n ` It will be limited to ${maxSafeGasPrice}.` +\n ' To overcome this restriction provide `gasPrice`/`fee` in options.',\n );\n gasPrice = maxSafeGasPrice;\n }\n\n gasPriceCache.set(node, { gasPrice, time: Date.now() });\n return gasPrice;\n}\n\n// TODO: use withFormatting after using a single type for coins representation\nexport default {\n ...coinAmount,\n\n async prepare(\n value: Int | undefined,\n params: {},\n {\n onNode,\n denomination,\n }: {\n onNode?: Node;\n /**\n * @deprecated no replacement implemented yet\n */\n denomination?: AE_AMOUNT_FORMATS;\n },\n ): Promise<Int | undefined> {\n if (value != null) return value;\n if (onNode == null) {\n throw new ArgumentError('onNode', 'provided (or provide `gasPrice` instead)', onNode);\n }\n const gasPrice = await getCachedIncreasedGasPrice(onNode);\n if (gasPrice === 0n) return undefined;\n return formatAmount(gasPrice, { targetDenomination: denomination });\n },\n\n serializeAettos(value: string | undefined = MIN_GAS_PRICE.toString()): string {\n if (+value < MIN_GAS_PRICE) {\n throw new IllegalArgumentError(\n `Gas price ${value.toString()} must be bigger than ${MIN_GAS_PRICE}`,\n );\n }\n return value;\n },\n};\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,cAAc;AACpC,OAAOC,UAAU,MAAM,kBAAkB;AACzC,SAASC,aAAa,EAAEC,oBAAoB,QAAQ,0BAA0B;AAC9E,SAAcC,aAAa,QAAQ,iBAAiB;AAEpD,SAA4BC,YAAY,QAAQ,oCAAoC;AAEpF,MAAMC,aAAgE,GAAG,IAAIC,OAAO,CAAC,CAAC;AAEtF,OAAO,eAAeC,0BAA0BA,CAACC,IAAU,EAAmB;EAC5E,MAAMC,KAAK,GAAGJ,aAAa,CAACK,GAAG,CAACF,IAAI,CAAC;EACrC,IAAIC,KAAK,IAAI,IAAI,IAAIA,KAAK,CAACE,IAAI,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE;IACxD,OAAOJ,KAAK,CAACK,QAAQ;EACvB;EAEA,MAAM;IAAEC,WAAW;IAAEC;EAAY,CAAC,GAAG,CAAC,MAAMR,IAAI,CAACS,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;EACzE,IAAIH,QAAQ,GACVE,WAAW,GAAG,EAAE,GACZ,EAAE,GACFE,MAAM,CAAC,IAAInB,SAAS,CAACgB,WAAW,CAACI,QAAQ,CAAC,CAAC,CAAC,CAACC,KAAK,CAAC,IAAI,CAAC,CAACC,YAAY,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC;EAExF,MAAMC,eAAe,GAAGL,MAAM,CAACf,aAAa,CAAC,GAAG,OAAO,CAAC,CAAC;EACzD,IAAIW,QAAQ,GAAGS,eAAe,EAAE;IAC9BC,OAAO,CAACC,IAAI,CACV,uBAAuBX,QAAQ,qDAAqD,GAClF,0BAA0BS,eAAe,GAAG,GAC5C,oEACJ,CAAC;IACDT,QAAQ,GAAGS,eAAe;EAC5B;EAEAlB,aAAa,CAACqB,GAAG,CAAClB,IAAI,EAAE;IAAEM,QAAQ;IAAEH,IAAI,EAAEC,IAAI,CAACC,GAAG,CAAC;EAAE,CAAC,CAAC;EACvD,OAAOC,QAAQ;AACjB;;AAEA;AACA,eAAe;EACb,GAAGd,UAAU;EAEb,MAAM2B,OAAOA,CACXC,KAAsB,EACtBC,MAAU,EACV;IACEC,MAAM;IACNC;EAOF,CAAC,EACyB;IAC1B,IAAIH,KAAK,IAAI,IAAI,EAAE,OAAOA,KAAK;IAC/B,IAAIE,MAAM,IAAI,IAAI,EAAE;MAClB,MAAM,IAAI7B,aAAa,CAAC,QAAQ,EAAE,0CAA0C,EAAE6B,MAAM,CAAC;IACvF;IACA,MAAMhB,QAAQ,GAAG,MAAMP,0BAA0B,CAACuB,MAAM,CAAC;IACzD,IAAIhB,QAAQ,KAAK,EAAE,EAAE,OAAOkB,SAAS;IACrC,OAAO5B,YAAY,CAACU,QAAQ,EAAE;MAAEmB,kBAAkB,EAAEF;IAAa,CAAC,CAAC;EACrE,CAAC;EAEDG,eAAeA,CAACN,KAAyB,GAAGzB,aAAa,CAACgB,QAAQ,CAAC,CAAC,EAAU;IAC5E,IAAI,CAACS,KAAK,GAAGzB,aAAa,EAAE;MAC1B,MAAM,IAAID,oBAAoB,CAC5B,aAAa0B,KAAK,CAACT,QAAQ,CAAC,CAAC,wBAAwBhB,aAAa,EACpE,CAAC;IACH;IACA,OAAOyB,KAAK;EACd;AACF,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"name-fee.js","names":["BigNumber","getMinimumNameFee","InsufficientNameFeeError","coinAmount","serializeAettos","_value","txFields","minNameFee","name","value","gt","toFixed","serialize","parameters","call"],"sources":["../../../../src/tx/builder/field-types/name-fee.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"name-fee.js","names":["BigNumber","getMinimumNameFee","InsufficientNameFeeError","coinAmount","serializeAettos","_value","txFields","minNameFee","name","value","gt","toFixed","serialize","parameters","call"],"sources":["../../../../src/tx/builder/field-types/name-fee.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { getMinimumNameFee } from '../helpers.js';\nimport { InsufficientNameFeeError } from '../../../utils/errors.js';\nimport coinAmount from './coin-amount.js';\nimport { AensName, Int } from '../constants.js';\n\nexport default {\n ...coinAmount,\n\n serializeAettos(_value: string | undefined, txFields: { name: AensName }): string {\n const minNameFee = getMinimumNameFee(txFields.name);\n const value = new BigNumber(_value ?? minNameFee);\n if (minNameFee.gt(value)) throw new InsufficientNameFeeError(value, minNameFee);\n return value.toFixed();\n },\n\n /**\n * @param value - AENS name fee\n * @param txFields - Transaction fields\n * @param txFields.name - AENS Name in transaction\n */\n serialize(\n value: Int | undefined,\n txFields: { name: AensName } & Parameters<(typeof coinAmount)['serialize']>[1],\n parameters: Parameters<(typeof coinAmount)['serialize']>[2],\n ): Buffer {\n return coinAmount.serialize.call(this, value, txFields, parameters);\n },\n};\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,cAAc;AACpC,SAASC,iBAAiB,QAAQ,eAAe;AACjD,SAASC,wBAAwB,QAAQ,0BAA0B;AACnE,OAAOC,UAAU,MAAM,kBAAkB;AAGzC,eAAe;EACb,GAAGA,UAAU;EAEbC,eAAeA,CAACC,MAA0B,EAAEC,QAA4B,EAAU;IAChF,MAAMC,UAAU,GAAGN,iBAAiB,CAACK,QAAQ,CAACE,IAAI,CAAC;IACnD,MAAMC,KAAK,GAAG,IAAIT,SAAS,CAACK,MAAM,aAANA,MAAM,cAANA,MAAM,GAAIE,UAAU,CAAC;IACjD,IAAIA,UAAU,CAACG,EAAE,CAACD,KAAK,CAAC,EAAE,MAAM,IAAIP,wBAAwB,CAACO,KAAK,EAAEF,UAAU,CAAC;IAC/E,OAAOE,KAAK,CAACE,OAAO,CAAC,CAAC;EACxB,CAAC;EAED;AACF;AACA;AACA;AACA;EACEC,SAASA,CACPH,KAAsB,EACtBH,QAA8E,EAC9EO,UAA2D,EACnD;IACR,OAAOV,UAAU,CAACS,SAAS,CAACE,IAAI,CAAC,IAAI,EAAEL,KAAK,EAAEH,QAAQ,EAAEO,UAAU,CAAC;EACrE;AACF,CAAC","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { produceNameId,
|
|
1
|
+
import { produceNameId, isName } from '../helpers.js';
|
|
2
2
|
import address from './address.js';
|
|
3
3
|
import { Encoding } from '../../../utils/encoder.js';
|
|
4
4
|
const addressName = address(Encoding.Name);
|
|
@@ -8,7 +8,7 @@ export default {
|
|
|
8
8
|
* @param value - AENS name ID
|
|
9
9
|
*/
|
|
10
10
|
serialize(value) {
|
|
11
|
-
return addressName.serialize(
|
|
11
|
+
return addressName.serialize(isName(value) ? produceNameId(value) : value);
|
|
12
12
|
}
|
|
13
13
|
};
|
|
14
14
|
//# sourceMappingURL=name-id.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"name-id.js","names":["produceNameId","
|
|
1
|
+
{"version":3,"file":"name-id.js","names":["produceNameId","isName","address","Encoding","addressName","Name","serialize","value"],"sources":["../../../../src/tx/builder/field-types/name-id.ts"],"sourcesContent":["import { AensName } from '../constants.js';\nimport { produceNameId, isName } from '../helpers.js';\nimport address from './address.js';\nimport { Encoded, Encoding } from '../../../utils/encoder.js';\n\nconst addressName = address(Encoding.Name);\n\nexport default {\n ...addressName,\n\n /**\n * @param value - AENS name ID\n */\n serialize(value: AensName | Encoded.Name): Buffer {\n return addressName.serialize(isName(value) ? produceNameId(value) : value);\n },\n};\n"],"mappings":"AACA,SAASA,aAAa,EAAEC,MAAM,QAAQ,eAAe;AACrD,OAAOC,OAAO,MAAM,cAAc;AAClC,SAAkBC,QAAQ,QAAQ,2BAA2B;AAE7D,MAAMC,WAAW,GAAGF,OAAO,CAACC,QAAQ,CAACE,IAAI,CAAC;AAE1C,eAAe;EACb,GAAGD,WAAW;EAEd;AACF;AACA;EACEE,SAASA,CAACC,KAA8B,EAAU;IAChD,OAAOH,WAAW,CAACE,SAAS,CAACL,MAAM,CAACM,KAAK,CAAC,GAAGP,aAAa,CAACO,KAAK,CAAC,GAAGA,KAAK,CAAC;EAC5E;AACF,CAAC","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Node from '../../../Node.js';
|
|
2
|
-
import { NextNonceStrategy } from '../../../apis/node/index.js';
|
|
2
|
+
import { Enum1 as NextNonceStrategy } from '../../../apis/node/index.js';
|
|
3
3
|
import { Tag } from '../constants.js';
|
|
4
4
|
export default function genNonceField<SenderKey extends string>(senderKey: SenderKey): {
|
|
5
5
|
serialize: (value: number, params: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nonce.js","names":["isAccountNotFoundError","shortUInt","ArgumentError","Tag","genNonceField","senderKey","serialize","value","tag","GaAttachTx","prepare","params","options","onNode","strategy","senderId","requirement","getAccountNextNonce","replace","catch","error","nextNonce"],"sources":["../../../../src/tx/builder/field-types/nonce.ts"],"sourcesContent":["import { isAccountNotFoundError } from '../../../utils/other.js';\nimport shortUInt from './short-u-int.js';\nimport Node from '../../../Node.js';\nimport { ArgumentError } from '../../../utils/errors.js';\nimport { NextNonceStrategy } from '../../../apis/node/index.js';\nimport { Tag } from '../constants.js';\n\nexport default function genNonceField<SenderKey extends string>(\n senderKey: SenderKey,\n): {\n serialize: (value: number, params: { tag: Tag }) => Buffer;\n // TODO: (value: number) => Promise<number> | (value: undefined, ...) => Promise<number>\n prepare: (\n value: number | undefined,\n params: {},\n // TODO: replace `string` with AddressEncodings\n options: { [key in SenderKey]: string } & {\n strategy?: NextNonceStrategy;\n onNode?: Node;\n _isInternalBuild?: boolean;\n },\n ) => Promise<number>;\n deserialize: (value: Buffer) => number;\n senderKey: string;\n} {\n return {\n ...shortUInt,\n\n serialize(value: number, { tag }): Buffer {\n if (Tag.GaAttachTx === tag && value !== 1) {\n throw new ArgumentError('nonce', 'equal 1 if GaAttachTx', value);\n }\n return shortUInt.serialize(value);\n },\n\n async prepare(value, params, options) {\n if (value != null) return value;\n // TODO: uncomment the below line\n // if (options._isInternalBuild === true) return 0;\n const { onNode, strategy } = options;\n const senderId = options[senderKey];\n const requirement = 'provided (or provide `nonce` instead)';\n if (onNode == null) throw new ArgumentError('onNode', requirement, onNode);\n if (senderId == null) throw new ArgumentError('senderId', requirement, senderId);\n return (\n await onNode\n .getAccountNextNonce(senderId.replace(/^ok_/, 'ak_'), { strategy })\n .catch((error) => {\n if (!isAccountNotFoundError(error)) throw error;\n return { nextNonce: 1 };\n })\n ).nextNonce;\n },\n\n senderKey,\n };\n}\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,yBAAyB;AAChE,OAAOC,SAAS,MAAM,kBAAkB;AAExC,SAASC,aAAa,QAAQ,0BAA0B;AAExD,SAASC,GAAG,QAAQ,iBAAiB;AAErC,eAAe,SAASC,aAAaA,CACnCC,SAAoB,EAgBpB;EACA,OAAO;IACL,GAAGJ,SAAS;IAEZK,SAASA,CAACC,KAAa,EAAE;MAAEC;IAAI,CAAC,EAAU;MACxC,IAAIL,GAAG,CAACM,UAAU,KAAKD,GAAG,IAAID,KAAK,KAAK,CAAC,EAAE;QACzC,MAAM,IAAIL,aAAa,CAAC,OAAO,EAAE,uBAAuB,EAAEK,KAAK,CAAC;MAClE;MACA,OAAON,SAAS,CAACK,SAAS,CAACC,KAAK,CAAC;IACnC,CAAC;IAED,MAAMG,OAAOA,CAACH,KAAK,EAAEI,MAAM,EAAEC,OAAO,EAAE;MACpC,IAAIL,KAAK,IAAI,IAAI,EAAE,OAAOA,KAAK;MAC/B;MACA;MACA,MAAM;QAAEM,MAAM;QAAEC;MAAS,CAAC,GAAGF,OAAO;MACpC,MAAMG,QAAQ,GAAGH,OAAO,CAACP,SAAS,CAAC;MACnC,MAAMW,WAAW,GAAG,uCAAuC;MAC3D,IAAIH,MAAM,IAAI,IAAI,EAAE,MAAM,IAAIX,aAAa,CAAC,QAAQ,EAAEc,WAAW,EAAEH,MAAM,CAAC;MAC1E,IAAIE,QAAQ,IAAI,IAAI,EAAE,MAAM,IAAIb,aAAa,CAAC,UAAU,EAAEc,WAAW,EAAED,QAAQ,CAAC;MAChF,OAAO,CACL,MAAMF,MAAM,CACTI,mBAAmB,CAACF,QAAQ,CAACG,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;QAAEJ;MAAS,CAAC,CAAC,CAClEK,KAAK,CAAEC,KAAK,IAAK;QAChB,IAAI,CAACpB,sBAAsB,CAACoB,KAAK,CAAC,EAAE,MAAMA,KAAK;QAC/C,OAAO;UAAEC,SAAS,EAAE;QAAE,CAAC;MACzB,CAAC,CAAC,EACJA,SAAS;IACb,CAAC;IAEDhB;EACF,CAAC;AACH","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"nonce.js","names":["isAccountNotFoundError","shortUInt","ArgumentError","Tag","genNonceField","senderKey","serialize","value","tag","GaAttachTx","prepare","params","options","onNode","strategy","senderId","requirement","getAccountNextNonce","replace","catch","error","nextNonce"],"sources":["../../../../src/tx/builder/field-types/nonce.ts"],"sourcesContent":["import { isAccountNotFoundError } from '../../../utils/other.js';\nimport shortUInt from './short-u-int.js';\nimport Node from '../../../Node.js';\nimport { ArgumentError } from '../../../utils/errors.js';\nimport { Enum1 as NextNonceStrategy } from '../../../apis/node/index.js';\nimport { Tag } from '../constants.js';\n\nexport default function genNonceField<SenderKey extends string>(\n senderKey: SenderKey,\n): {\n serialize: (value: number, params: { tag: Tag }) => Buffer;\n // TODO: (value: number) => Promise<number> | (value: undefined, ...) => Promise<number>\n prepare: (\n value: number | undefined,\n params: {},\n // TODO: replace `string` with AddressEncodings\n options: { [key in SenderKey]: string } & {\n strategy?: NextNonceStrategy;\n onNode?: Node;\n _isInternalBuild?: boolean;\n },\n ) => Promise<number>;\n deserialize: (value: Buffer) => number;\n senderKey: string;\n} {\n return {\n ...shortUInt,\n\n serialize(value: number, { tag }): Buffer {\n if (Tag.GaAttachTx === tag && value !== 1) {\n throw new ArgumentError('nonce', 'equal 1 if GaAttachTx', value);\n }\n return shortUInt.serialize(value);\n },\n\n async prepare(value, params, options) {\n if (value != null) return value;\n // TODO: uncomment the below line\n // if (options._isInternalBuild === true) return 0;\n const { onNode, strategy } = options;\n const senderId = options[senderKey];\n const requirement = 'provided (or provide `nonce` instead)';\n if (onNode == null) throw new ArgumentError('onNode', requirement, onNode);\n if (senderId == null) throw new ArgumentError('senderId', requirement, senderId);\n return (\n await onNode\n .getAccountNextNonce(senderId.replace(/^ok_/, 'ak_'), { strategy })\n .catch((error) => {\n if (!isAccountNotFoundError(error)) throw error;\n return { nextNonce: 1 };\n })\n ).nextNonce;\n },\n\n senderKey,\n };\n}\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,yBAAyB;AAChE,OAAOC,SAAS,MAAM,kBAAkB;AAExC,SAASC,aAAa,QAAQ,0BAA0B;AAExD,SAASC,GAAG,QAAQ,iBAAiB;AAErC,eAAe,SAASC,aAAaA,CACnCC,SAAoB,EAgBpB;EACA,OAAO;IACL,GAAGJ,SAAS;IAEZK,SAASA,CAACC,KAAa,EAAE;MAAEC;IAAI,CAAC,EAAU;MACxC,IAAIL,GAAG,CAACM,UAAU,KAAKD,GAAG,IAAID,KAAK,KAAK,CAAC,EAAE;QACzC,MAAM,IAAIL,aAAa,CAAC,OAAO,EAAE,uBAAuB,EAAEK,KAAK,CAAC;MAClE;MACA,OAAON,SAAS,CAACK,SAAS,CAACC,KAAK,CAAC;IACnC,CAAC;IAED,MAAMG,OAAOA,CAACH,KAAK,EAAEI,MAAM,EAAEC,OAAO,EAAE;MACpC,IAAIL,KAAK,IAAI,IAAI,EAAE,OAAOA,KAAK;MAC/B;MACA;MACA,MAAM;QAAEM,MAAM;QAAEC;MAAS,CAAC,GAAGF,OAAO;MACpC,MAAMG,QAAQ,GAAGH,OAAO,CAACP,SAAS,CAAC;MACnC,MAAMW,WAAW,GAAG,uCAAuC;MAC3D,IAAIH,MAAM,IAAI,IAAI,EAAE,MAAM,IAAIX,aAAa,CAAC,QAAQ,EAAEc,WAAW,EAAEH,MAAM,CAAC;MAC1E,IAAIE,QAAQ,IAAI,IAAI,EAAE,MAAM,IAAIb,aAAa,CAAC,UAAU,EAAEc,WAAW,EAAED,QAAQ,CAAC;MAChF,OAAO,CACL,MAAMF,MAAM,CACTI,mBAAmB,CAACF,QAAQ,CAACG,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;QAAEJ;MAAS,CAAC,CAAC,CAClEK,KAAK,CAAEC,KAAK,IAAK;QAChB,IAAI,CAACpB,sBAAsB,CAACoB,KAAK,CAAC,EAAE,MAAMA,KAAK;QAC/C,OAAO;UAAEC,SAAS,EAAE;QAAE,CAAC;MACzB,CAAC,CAAC,EACJA,SAAS;IACb,CAAC;IAEDhB;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Buffer as _Buffer } from "buffer";
|
|
2
2
|
import { toBytes } from '../../../utils/bytes.js';
|
|
3
3
|
import { Encoding, decode, encode } from '../../../utils/encoder.js';
|
|
4
|
-
import {
|
|
4
|
+
import { isEncoded } from '../../../utils/crypto.js';
|
|
5
5
|
import { IllegalArgumentError, DecodeError, ArgumentError } from '../../../utils/errors.js';
|
|
6
6
|
import address, { idTagToEncoding } from './address.js';
|
|
7
7
|
const ID_TAG = _Buffer.from([1]);
|
|
@@ -27,10 +27,10 @@ export default allowRaw => ({
|
|
|
27
27
|
id
|
|
28
28
|
}) => {
|
|
29
29
|
let payload;
|
|
30
|
-
if (
|
|
30
|
+
if (isEncoded(id, ...idTagToEncoding)) {
|
|
31
31
|
payload = [...(allowRaw ? [ID_TAG] : []), addressAny.serialize(id)];
|
|
32
32
|
}
|
|
33
|
-
if (
|
|
33
|
+
if (isEncoded(id, Encoding.Bytearray)) {
|
|
34
34
|
const data = decode(id);
|
|
35
35
|
if (data.length > DATA_LENGTH_MAX) {
|
|
36
36
|
throw new ArgumentError('Raw pointer', `shorter than ${DATA_LENGTH_MAX + 1} bytes`, `${data.length} bytes`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointers.js","names":["toBytes","Encoding","decode","encode","
|
|
1
|
+
{"version":3,"file":"pointers.js","names":["toBytes","Encoding","decode","encode","isEncoded","IllegalArgumentError","DecodeError","ArgumentError","address","idTagToEncoding","ID_TAG","_Buffer","from","DATA_TAG","DATA_LENGTH_MAX","addressAny","allowRaw","serialize","pointers","length","map","key","id","payload","Bytearray","data","concat","deserialize","bKey","bId","toString","tag","subarray","equals"],"sources":["../../../../src/tx/builder/field-types/pointers.ts"],"sourcesContent":["import { NamePointer as NamePointerString } from '../../../apis/node/index.js';\nimport { toBytes } from '../../../utils/bytes.js';\nimport { Encoded, Encoding, decode, encode } from '../../../utils/encoder.js';\nimport { isEncoded } from '../../../utils/crypto.js';\nimport { IllegalArgumentError, DecodeError, ArgumentError } from '../../../utils/errors.js';\nimport address, { AddressEncodings, idTagToEncoding } from './address.js';\n\nconst ID_TAG = Buffer.from([1]);\nconst DATA_TAG = Buffer.from([2]);\nconst DATA_LENGTH_MAX = 1024;\nconst addressAny = address(...idTagToEncoding);\n\n// TODO: remove after fixing node types\ntype NamePointer = NamePointerString & {\n id: Encoded.Generic<AddressEncodings>;\n};\ntype NamePointerRaw = NamePointerString & {\n id: Encoded.Generic<AddressEncodings | Encoding.Bytearray>;\n};\n\nexport default <AllowRaw extends boolean>(\n allowRaw: AllowRaw,\n): {\n serialize: (pointers: Array<AllowRaw extends true ? NamePointerRaw : NamePointer>) => Buffer[][];\n deserialize: (\n pointers: Array<[key: Buffer, id: Buffer]>,\n ) => Array<AllowRaw extends true ? NamePointerRaw : NamePointer>;\n} => ({\n /**\n * Helper function to build pointers for name update TX\n * @param pointers - Array of pointers\n * `([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])`\n * @returns Serialized pointers array\n */\n serialize(pointers) {\n if (pointers.length > 32) {\n throw new IllegalArgumentError(\n `Expected 32 pointers or less, got ${pointers.length} instead`,\n );\n }\n return pointers.map(({ key, id }) => {\n let payload;\n if (isEncoded(id, ...idTagToEncoding)) {\n payload = [...(allowRaw ? [ID_TAG] : []), addressAny.serialize(id)];\n }\n if (isEncoded(id, Encoding.Bytearray)) {\n const data = decode(id);\n if (data.length > DATA_LENGTH_MAX) {\n throw new ArgumentError(\n 'Raw pointer',\n `shorter than ${DATA_LENGTH_MAX + 1} bytes`,\n `${data.length} bytes`,\n );\n }\n payload = [DATA_TAG, data];\n }\n if (payload == null) throw new DecodeError(`Unknown AENS pointer value: ${id}`);\n return [toBytes(key), Buffer.concat(payload)];\n });\n },\n\n /**\n * Helper function to read pointers from name update TX\n * @param pointers - Array of pointers\n * @returns Deserialize pointer array\n */\n deserialize(pointers) {\n return pointers.map(([bKey, bId]) => {\n if (!allowRaw) return { key: bKey.toString(), id: addressAny.deserialize(bId) };\n const tag = bId.subarray(0, 1);\n const payload = bId.subarray(1);\n let id;\n if (tag.equals(ID_TAG)) id = addressAny.deserialize(payload);\n // TS can't figure out the real type depending on allowRaw\n if (tag.equals(DATA_TAG)) id = encode(payload, Encoding.Bytearray) as Encoded.AccountAddress;\n if (id == null) throw new DecodeError(`Unknown AENS pointer tag: ${tag}`);\n return { key: bKey.toString(), id };\n });\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,10 +5,9 @@ import { _getPollInterval } from '../../../chain.js';
|
|
|
5
5
|
*/
|
|
6
6
|
declare const _default: {
|
|
7
7
|
serialize(value: number | undefined): Buffer;
|
|
8
|
-
prepare(value: number | undefined, params: {}, { onNode, absoluteTtl,
|
|
8
|
+
prepare(value: number | undefined, params: {}, { onNode, absoluteTtl, ...options }: {
|
|
9
9
|
onNode?: Node;
|
|
10
10
|
absoluteTtl?: boolean;
|
|
11
|
-
_isInternalBuild?: boolean;
|
|
12
11
|
} & Omit<Parameters<typeof _getPollInterval>[1], "onNode">): Promise<number | undefined>;
|
|
13
12
|
deserialize(value: Buffer): number;
|
|
14
13
|
};
|
|
@@ -2,6 +2,10 @@ import shortUInt from './short-u-int.js';
|
|
|
2
2
|
import { ArgumentError } from '../../../utils/errors.js';
|
|
3
3
|
import { getHeight } from '../../../chain.js';
|
|
4
4
|
|
|
5
|
+
// TODO: restore after the mainnet mining issue is solved, was used via `_isInternalBuild` flag
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
7
|
+
const DEFAULT_INTERNAL_RELATIVE_TTL = 3;
|
|
8
|
+
|
|
5
9
|
/**
|
|
6
10
|
* Time to leave
|
|
7
11
|
*/
|
|
@@ -15,17 +19,15 @@ export default {
|
|
|
15
19
|
{
|
|
16
20
|
onNode,
|
|
17
21
|
absoluteTtl,
|
|
18
|
-
_isInternalBuild,
|
|
19
22
|
...options
|
|
20
23
|
}) {
|
|
21
|
-
if (absoluteTtl !== true && value !== 0 &&
|
|
22
|
-
var _value;
|
|
24
|
+
if (absoluteTtl !== true && value !== 0 && value != null) {
|
|
23
25
|
if (onNode == null) throw new ArgumentError('onNode', 'provided', onNode);
|
|
24
|
-
value
|
|
26
|
+
value += await getHeight({
|
|
25
27
|
...options,
|
|
26
28
|
onNode,
|
|
27
29
|
cached: true
|
|
28
|
-
})
|
|
30
|
+
});
|
|
29
31
|
}
|
|
30
32
|
return value;
|
|
31
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ttl.js","names":["shortUInt","ArgumentError","getHeight","serialize","value","prepare","params","onNode","absoluteTtl","
|
|
1
|
+
{"version":3,"file":"ttl.js","names":["shortUInt","ArgumentError","getHeight","DEFAULT_INTERNAL_RELATIVE_TTL","serialize","value","prepare","params","onNode","absoluteTtl","options","cached"],"sources":["../../../../src/tx/builder/field-types/ttl.ts"],"sourcesContent":["import shortUInt from './short-u-int.js';\nimport Node from '../../../Node.js';\nimport { ArgumentError } from '../../../utils/errors.js';\nimport { _getPollInterval, getHeight } from '../../../chain.js';\n\n// TODO: restore after the mainnet mining issue is solved, was used via `_isInternalBuild` flag\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst DEFAULT_INTERNAL_RELATIVE_TTL = 3;\n\n/**\n * Time to leave\n */\nexport default {\n ...shortUInt,\n\n serialize(value: number | undefined): Buffer {\n return shortUInt.serialize(value ?? 0);\n },\n\n async prepare(\n value: number | undefined,\n params: {},\n // TODO: { absoluteTtl: true } | { absoluteTtl: false, onNode: Node }\n {\n onNode,\n absoluteTtl,\n ...options\n }: {\n onNode?: Node;\n absoluteTtl?: boolean;\n } & Omit<Parameters<typeof _getPollInterval>[1], 'onNode'>,\n ) {\n if (absoluteTtl !== true && value !== 0 && value != null) {\n if (onNode == null) throw new ArgumentError('onNode', 'provided', onNode);\n value += await getHeight({ ...options, onNode, cached: true });\n }\n return value;\n },\n};\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,kBAAkB;AAExC,SAASC,aAAa,QAAQ,0BAA0B;AACxD,SAA2BC,SAAS,QAAQ,mBAAmB;;AAE/D;AACA;AACA,MAAMC,6BAA6B,GAAG,CAAC;;AAEvC;AACA;AACA;AACA,eAAe;EACb,GAAGH,SAAS;EAEZI,SAASA,CAACC,KAAyB,EAAU;IAC3C,OAAOL,SAAS,CAACI,SAAS,CAACC,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC;EACxC,CAAC;EAED,MAAMC,OAAOA,CACXD,KAAyB,EACzBE,MAAU;EACV;EACA;IACEC,MAAM;IACNC,WAAW;IACX,GAAGC;EAIoD,CAAC,EAC1D;IACA,IAAID,WAAW,KAAK,IAAI,IAAIJ,KAAK,KAAK,CAAC,IAAIA,KAAK,IAAI,IAAI,EAAE;MACxD,IAAIG,MAAM,IAAI,IAAI,EAAE,MAAM,IAAIP,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAEO,MAAM,CAAC;MACzEH,KAAK,IAAI,MAAMH,SAAS,CAAC;QAAE,GAAGQ,OAAO;QAAEF,MAAM;QAAEG,MAAM,EAAE;MAAK,CAAC,CAAC;IAChE;IACA,OAAON,KAAK;EACd;AACF,CAAC","ignoreList":[]}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import
|
|
1
|
+
import BigNumber from 'bignumber.js';
|
|
2
2
|
import { Encoded } from '../../utils/encoder.js';
|
|
3
3
|
import { AensName } from './constants.js';
|
|
4
4
|
/**
|
|
5
5
|
* JavaScript-based Transaction builder helper function's
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
|
-
* Build a contract
|
|
8
|
+
* Build a contract address
|
|
9
9
|
* @category contract
|
|
10
|
-
* @param
|
|
11
|
-
* @param nonce -
|
|
12
|
-
* @returns Contract
|
|
10
|
+
* @param owner - Address of contract owner
|
|
11
|
+
* @param nonce - Nonce of ContractCreateTx or state channel round when contract was created
|
|
12
|
+
* @returns Contract address
|
|
13
13
|
*/
|
|
14
|
-
export declare function buildContractId(
|
|
14
|
+
export declare function buildContractId(owner: Encoded.AccountAddress, nonce: number | BigNumber): Encoded.ContractAddress;
|
|
15
15
|
/**
|
|
16
16
|
* Build a oracle query id
|
|
17
17
|
* @category oracle
|
|
@@ -40,11 +40,12 @@ export declare function produceNameId(name: AensName): Encoded.Name;
|
|
|
40
40
|
export declare function commitmentHash(name: AensName, salt?: number): Encoded.Commitment;
|
|
41
41
|
/**
|
|
42
42
|
* Utility function to convert bytes to int
|
|
43
|
-
* @category
|
|
44
|
-
* @param
|
|
43
|
+
* @category utils
|
|
44
|
+
* @param buffer - Value
|
|
45
45
|
* @returns Buffer Buffer from number(BigEndian)
|
|
46
|
+
* @deprecated use `BigInt('0x' + <buffer>.toString('hex')).toString()` instead
|
|
46
47
|
*/
|
|
47
|
-
export declare function readInt(
|
|
48
|
+
export declare function readInt(buffer?: Uint8Array): string;
|
|
48
49
|
/**
|
|
49
50
|
* Ensure that name is valid AENS name, would throw an exception otherwise
|
|
50
51
|
* @category AENS
|
|
@@ -56,7 +57,7 @@ export declare function ensureName(maybeName: string): asserts maybeName is Aens
|
|
|
56
57
|
* @category AENS
|
|
57
58
|
* @param maybeName - AENS name
|
|
58
59
|
*/
|
|
59
|
-
export declare function
|
|
60
|
+
export declare function isName(maybeName: string): maybeName is AensName;
|
|
60
61
|
declare const encodingToPointerKey: readonly [readonly [Encoded.Encoding.AccountAddress, "account_pubkey"], readonly [Encoded.Encoding.OracleAddress, "oracle_pubkey"], readonly [Encoded.Encoding.ContractAddress, "contract_pubkey"], readonly [Encoded.Encoding.Channel, "channel"]];
|
|
61
62
|
/**
|
|
62
63
|
* @category AENS
|
|
@@ -85,11 +86,16 @@ export declare function computeBidFee(name: AensName, { startFee, increment, }?:
|
|
|
85
86
|
increment?: number;
|
|
86
87
|
}): BigNumber;
|
|
87
88
|
/**
|
|
88
|
-
* Compute auction end height
|
|
89
|
+
* Compute approximate auction end height.
|
|
90
|
+
*
|
|
91
|
+
* From Ceres, each time a new (successful!) bid is made for a name the auction is extended for up
|
|
92
|
+
* to 120 key-blocks/generations. I.e. after the bid there is always at least 120 generations to
|
|
93
|
+
* make a higher bid.
|
|
94
|
+
*
|
|
89
95
|
* @category AENS
|
|
90
96
|
* @param name - Name to compute auction end for
|
|
91
97
|
* @param claimHeight - Auction starting height
|
|
92
|
-
* @see {@link https://github.com/aeternity/
|
|
98
|
+
* @see {@link https://github.com/aeternity/protocol/blob/cfb19ce/AENS.md#from-ceres-protocol-upgrade}
|
|
93
99
|
* @returns Auction end height
|
|
94
100
|
*/
|
|
95
101
|
export declare function computeAuctionEndBlock(name: AensName, claimHeight: number): number;
|
package/es/tx/builder/helpers.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Buffer as _Buffer } from "buffer";
|
|
2
|
-
import
|
|
2
|
+
import BigNumber from 'bignumber.js';
|
|
3
3
|
import { genSalt, hash } from '../../utils/crypto.js';
|
|
4
4
|
import { decode, encode, Encoding } from '../../utils/encoder.js';
|
|
5
5
|
import { toBytes } from '../../utils/bytes.js';
|
|
6
6
|
import { concatBuffers } from '../../utils/other.js';
|
|
7
|
-
import { NAME_BID_RANGES,
|
|
7
|
+
import { NAME_BID_RANGES, NAME_FEE_BID_INCREMENT, NAME_MAX_LENGTH_FEE } from './constants.js';
|
|
8
8
|
import { ceil } from '../../utils/bignumber.js';
|
|
9
9
|
import { ArgumentError, IllegalBidFeeError } from '../../utils/errors.js';
|
|
10
10
|
|
|
@@ -13,18 +13,19 @@ import { ArgumentError, IllegalBidFeeError } from '../../utils/errors.js';
|
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
|
-
* Build a contract
|
|
16
|
+
* Build a contract address
|
|
17
17
|
* @category contract
|
|
18
|
-
* @param
|
|
19
|
-
* @param nonce -
|
|
20
|
-
* @returns Contract
|
|
18
|
+
* @param owner - Address of contract owner
|
|
19
|
+
* @param nonce - Nonce of ContractCreateTx or state channel round when contract was created
|
|
20
|
+
* @returns Contract address
|
|
21
21
|
*/
|
|
22
|
-
export function buildContractId(
|
|
23
|
-
const ownerIdAndNonce = _Buffer.from([...decode(
|
|
22
|
+
export function buildContractId(owner, nonce) {
|
|
23
|
+
const ownerIdAndNonce = _Buffer.from([...decode(owner), ...toBytes(nonce)]);
|
|
24
24
|
const b2bHash = hash(ownerIdAndNonce);
|
|
25
25
|
return encode(b2bHash, Encoding.ContractAddress);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
// TODO: add `build` prefix the same as others
|
|
28
29
|
/**
|
|
29
30
|
* Build a oracle query id
|
|
30
31
|
* @category oracle
|
|
@@ -82,6 +83,7 @@ export function nameToPunycode(maybeName) {
|
|
|
82
83
|
return punycode;
|
|
83
84
|
}
|
|
84
85
|
|
|
86
|
+
// TODO: replace `produce` with `build` the same as others
|
|
85
87
|
/**
|
|
86
88
|
* Encode an AENS name
|
|
87
89
|
* @category AENS
|
|
@@ -92,6 +94,7 @@ export function produceNameId(name) {
|
|
|
92
94
|
return encode(hash(nameToPunycode(name)), Encoding.Name);
|
|
93
95
|
}
|
|
94
96
|
|
|
97
|
+
// TODO: add `build` the same as others
|
|
95
98
|
/**
|
|
96
99
|
* Generate the commitment hash by hashing the salt and
|
|
97
100
|
* name, base 58 encoding the result and prepending 'cm_'
|
|
@@ -106,12 +109,13 @@ export function commitmentHash(name, salt = genSalt()) {
|
|
|
106
109
|
|
|
107
110
|
/**
|
|
108
111
|
* Utility function to convert bytes to int
|
|
109
|
-
* @category
|
|
110
|
-
* @param
|
|
112
|
+
* @category utils
|
|
113
|
+
* @param buffer - Value
|
|
111
114
|
* @returns Buffer Buffer from number(BigEndian)
|
|
115
|
+
* @deprecated use `BigInt('0x' + <buffer>.toString('hex')).toString()` instead
|
|
112
116
|
*/
|
|
113
|
-
export function readInt(
|
|
114
|
-
return
|
|
117
|
+
export function readInt(buffer = _Buffer.from([])) {
|
|
118
|
+
return BigInt('0x' + _Buffer.from(buffer).toString('hex')).toString();
|
|
115
119
|
}
|
|
116
120
|
|
|
117
121
|
/**
|
|
@@ -128,8 +132,7 @@ export function ensureName(maybeName) {
|
|
|
128
132
|
* @category AENS
|
|
129
133
|
* @param maybeName - AENS name
|
|
130
134
|
*/
|
|
131
|
-
|
|
132
|
-
export function isNameValid(maybeName) {
|
|
135
|
+
export function isName(maybeName) {
|
|
133
136
|
try {
|
|
134
137
|
ensureName(maybeName);
|
|
135
138
|
return true;
|
|
@@ -183,17 +186,22 @@ export function computeBidFee(name, {
|
|
|
183
186
|
}
|
|
184
187
|
|
|
185
188
|
/**
|
|
186
|
-
* Compute auction end height
|
|
189
|
+
* Compute approximate auction end height.
|
|
190
|
+
*
|
|
191
|
+
* From Ceres, each time a new (successful!) bid is made for a name the auction is extended for up
|
|
192
|
+
* to 120 key-blocks/generations. I.e. after the bid there is always at least 120 generations to
|
|
193
|
+
* make a higher bid.
|
|
194
|
+
*
|
|
187
195
|
* @category AENS
|
|
188
196
|
* @param name - Name to compute auction end for
|
|
189
197
|
* @param claimHeight - Auction starting height
|
|
190
|
-
* @see {@link https://github.com/aeternity/
|
|
198
|
+
* @see {@link https://github.com/aeternity/protocol/blob/cfb19ce/AENS.md#from-ceres-protocol-upgrade}
|
|
191
199
|
* @returns Auction end height
|
|
192
200
|
*/
|
|
193
201
|
export function computeAuctionEndBlock(name, claimHeight) {
|
|
194
202
|
var _ref, _ref2, _ref3;
|
|
195
203
|
const length = nameToPunycode(name).length - AENS_SUFFIX.length;
|
|
196
|
-
const h = (_ref = (_ref2 = (_ref3 = length <= 4 ?
|
|
204
|
+
const h = (_ref = (_ref2 = (_ref3 = length <= 4 ? 2400 : null) !== null && _ref3 !== void 0 ? _ref3 : length <= 8 ? 960 : null) !== null && _ref2 !== void 0 ? _ref2 : length <= 12 ? 480 : null) !== null && _ref !== void 0 ? _ref : 0;
|
|
197
205
|
return h + claimHeight;
|
|
198
206
|
}
|
|
199
207
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["BigNumber","genSalt","hash","decode","encode","Encoding","toBytes","concatBuffers","NAME_BID_RANGES","NAME_BID_TIMEOUT_BLOCKS","NAME_FEE_BID_INCREMENT","NAME_MAX_LENGTH_FEE","ceil","ArgumentError","IllegalBidFeeError","buildContractId","ownerId","nonce","ownerIdAndNonce","_Buffer","from","b2bHash","ContractAddress","oracleQueryId","senderId","oracleId","_int32","val","nonceBE","alloc","length","OracleQueryId","AENS_SUFFIX","nameToPunycode","maybeName","name","suffix","other","split","slice","test","at","punycode","u","URL","username","password","port","search","pathname","host","error","TypeError","message","includes","produceNameId","Name","commitmentHash","salt","toString","padStart","Commitment","readInt","buf","ensureName","isNameValid","encodingToPointerKey","AccountAddress","OracleAddress","Channel","getDefaultPointerKey","identifier","encoding","substring","result","find","e","map","join","getMinimumNameFee","nameLength","Math","min","computeBidFee","startFee","increment","Number","times","plus","computeAuctionEndBlock","claimHeight","_ref","_ref2","_ref3","h","isAuctionName"],"sources":["../../../src/tx/builder/helpers.ts"],"sourcesContent":["import { BigNumber } from 'bignumber.js';\nimport { genSalt, hash } from '../../utils/crypto.js';\nimport { decode, encode, Encoded, Encoding } from '../../utils/encoder.js';\nimport { toBytes } from '../../utils/bytes.js';\nimport { concatBuffers } from '../../utils/other.js';\nimport {\n AensName,\n NAME_BID_RANGES,\n NAME_BID_TIMEOUT_BLOCKS,\n NAME_FEE_BID_INCREMENT,\n NAME_MAX_LENGTH_FEE,\n} from './constants.js';\nimport { ceil } from '../../utils/bignumber.js';\nimport { ArgumentError, IllegalBidFeeError } from '../../utils/errors.js';\n\n/**\n * JavaScript-based Transaction builder helper function's\n */\n\n/**\n * Build a contract public key\n * @category contract\n * @param ownerId - The public key of the owner account\n * @param nonce - the nonce of the transaction\n * @returns Contract public key\n */\nexport function buildContractId(\n ownerId: Encoded.AccountAddress,\n nonce: number | BigNumber,\n): Encoded.ContractAddress {\n const ownerIdAndNonce = Buffer.from([...decode(ownerId), ...toBytes(nonce)]);\n const b2bHash = hash(ownerIdAndNonce);\n return encode(b2bHash, Encoding.ContractAddress);\n}\n\n/**\n * Build a oracle query id\n * @category oracle\n * @param senderId - The public key of the sender account\n * @param nonce - the nonce of the transaction\n * @param oracleId - The oracle public key\n * @returns Contract public key\n */\nexport function oracleQueryId(\n senderId: Encoded.AccountAddress,\n nonce: number | BigNumber | string,\n oracleId: Encoded.OracleAddress,\n): Encoded.OracleQueryId {\n function _int32(val: number | string | BigNumber): Buffer {\n const nonceBE = toBytes(val, true);\n return concatBuffers([Buffer.alloc(32 - nonceBE.length), nonceBE]);\n }\n\n const b2bHash = hash(Buffer.from([...decode(senderId), ..._int32(nonce), ...decode(oracleId)]));\n return encode(b2bHash, Encoding.OracleQueryId);\n}\n\nconst AENS_SUFFIX = '.chain';\n\nexport function nameToPunycode(maybeName: string): AensName {\n const [name, suffix, ...other] = maybeName.split('.');\n if (other.length !== 0) throw new ArgumentError('aens name', 'including only one dot', maybeName);\n if (suffix !== AENS_SUFFIX.slice(1)) {\n throw new ArgumentError('aens name', `suffixed with ${AENS_SUFFIX}`, maybeName);\n }\n if (/\\p{Emoji_Presentation}/u.test(name)) {\n throw new ArgumentError('aens name', 'not containing emoji', maybeName);\n }\n if (name[2] === '-' && name[3] === '-') {\n throw new ArgumentError(\n 'aens name',\n 'without \"-\" char in both the third and fourth positions',\n maybeName,\n );\n }\n if (name[0] === '-') {\n throw new ArgumentError('aens name', 'starting with no \"-\" char', maybeName);\n }\n if (name.at(-1) === '-') {\n throw new ArgumentError('aens name', 'ending with no \"-\" char', maybeName);\n }\n let punycode;\n try {\n const u = new URL(`http://${name}.${suffix}`);\n if (u.username + u.password + u.port + u.search + u.hash !== '' || u.pathname !== '/') {\n throw new ArgumentError('aens name', 'valid', maybeName);\n }\n punycode = u.host;\n } catch (error) {\n if (error instanceof TypeError && error.message.includes('Invalid URL')) {\n throw new ArgumentError('aens name', 'valid', maybeName);\n }\n throw error;\n }\n if (!/^[a-z0-9.-]+$/i.test(punycode)) {\n throw new ArgumentError('aens name', 'without illegal chars', maybeName);\n }\n if (punycode.length > 63 + AENS_SUFFIX.length) {\n throw new ArgumentError('aens name', 'not too long', maybeName);\n }\n return punycode as AensName;\n}\n\n/**\n * Encode an AENS name\n * @category AENS\n * @param name - Name to encode\n * @returns `nm_` prefixed encoded AENS name\n */\nexport function produceNameId(name: AensName): Encoded.Name {\n return encode(hash(nameToPunycode(name)), Encoding.Name);\n}\n\n/**\n * Generate the commitment hash by hashing the salt and\n * name, base 58 encoding the result and prepending 'cm_'\n * @category transaction builder\n * @param name - Name to be registered\n * @param salt - Random number\n * @returns Commitment hash\n */\nexport function commitmentHash(name: AensName, salt: number = genSalt()): Encoded.Commitment {\n return encode(\n hash(\n concatBuffers([\n Buffer.from(nameToPunycode(name)),\n Buffer.from(salt.toString(16).padStart(64, '0'), 'hex'),\n ]),\n ),\n Encoding.Commitment,\n );\n}\n\n/**\n * Utility function to convert bytes to int\n * @category transaction builder\n * @param buf - Value\n * @returns Buffer Buffer from number(BigEndian)\n */\nexport function readInt(buf: Buffer = Buffer.from([])): string {\n return new BigNumber(Buffer.from(buf).toString('hex'), 16).toString(10);\n}\n\n/**\n * Ensure that name is valid AENS name, would throw an exception otherwise\n * @category AENS\n * @param maybeName - AENS name\n */\nexport function ensureName(maybeName: string): asserts maybeName is AensName {\n nameToPunycode(maybeName);\n}\n\n/**\n * Is AENS name valid\n * @category AENS\n * @param maybeName - AENS name\n */\n// TODO: consider renaming to isName\nexport function isNameValid(maybeName: string): maybeName is AensName {\n try {\n ensureName(maybeName);\n return true;\n } catch (error) {\n return false;\n }\n}\n\nconst encodingToPointerKey = [\n [Encoding.AccountAddress, 'account_pubkey'],\n [Encoding.OracleAddress, 'oracle_pubkey'],\n [Encoding.ContractAddress, 'contract_pubkey'],\n [Encoding.Channel, 'channel'],\n] as const;\n\n/**\n * @category AENS\n * @param identifier - account/oracle/contract address, or channel\n * @returns default AENS pointer key\n */\nexport function getDefaultPointerKey(\n identifier: Encoded.Generic<(typeof encodingToPointerKey)[number][0]>,\n): (typeof encodingToPointerKey)[number][1] {\n decode(identifier);\n const encoding = identifier.substring(0, 2);\n const result = encodingToPointerKey.find(([e]) => e === encoding)?.[1];\n if (result != null) return result;\n throw new ArgumentError(\n 'identifier',\n `prefixed with one of ${encodingToPointerKey.map(([e]) => `${e}_`).join(', ')}`,\n identifier,\n );\n}\n\n/**\n * Get the minimum AENS name fee\n * @category AENS\n * @param name - the AENS name to get the fee for\n * @returns the minimum fee for the AENS name auction\n */\nexport function getMinimumNameFee(name: AensName): BigNumber {\n const nameLength = nameToPunycode(name).length - AENS_SUFFIX.length;\n return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)];\n}\n\n/**\n * Compute bid fee for AENS auction\n * @category AENS\n * @param name - the AENS name to get the fee for\n * @param options - Options\n * @param options.startFee - Auction start fee\n * @param options.increment - Bid multiplier(In percentage, must be between 0 and 1)\n * @returns Bid fee\n */\nexport function computeBidFee(\n name: AensName,\n {\n startFee,\n increment = NAME_FEE_BID_INCREMENT,\n }: { startFee?: number | string | BigNumber; increment?: number } = {},\n): BigNumber {\n if (!(Number(increment) === increment && increment % 1 !== 0))\n throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`);\n if (increment < NAME_FEE_BID_INCREMENT)\n throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`);\n // FIXME: increment should be used somehow here\n return ceil(\n new BigNumber(startFee ?? getMinimumNameFee(name)).times(\n new BigNumber(NAME_FEE_BID_INCREMENT).plus(1),\n ),\n );\n}\n\n/**\n * Compute auction end height\n * @category AENS\n * @param name - Name to compute auction end for\n * @param claimHeight - Auction starting height\n * @see {@link https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273}\n * @returns Auction end height\n */\nexport function computeAuctionEndBlock(name: AensName, claimHeight: number): number {\n const length = nameToPunycode(name).length - AENS_SUFFIX.length;\n const h =\n (length <= 4 ? 62 * NAME_BID_TIMEOUT_BLOCKS : null) ??\n (length <= 8 ? 31 * NAME_BID_TIMEOUT_BLOCKS : null) ??\n (length <= 12 ? NAME_BID_TIMEOUT_BLOCKS : null) ??\n 0;\n return h + claimHeight;\n}\n\n/**\n * Is name accept going to auction\n * @category AENS\n */\nexport function isAuctionName(name: AensName): boolean {\n return nameToPunycode(name).length < 13 + AENS_SUFFIX.length;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["BigNumber","genSalt","hash","decode","encode","Encoding","toBytes","concatBuffers","NAME_BID_RANGES","NAME_FEE_BID_INCREMENT","NAME_MAX_LENGTH_FEE","ceil","ArgumentError","IllegalBidFeeError","buildContractId","owner","nonce","ownerIdAndNonce","_Buffer","from","b2bHash","ContractAddress","oracleQueryId","senderId","oracleId","_int32","val","nonceBE","alloc","length","OracleQueryId","AENS_SUFFIX","nameToPunycode","maybeName","name","suffix","other","split","slice","test","at","punycode","u","URL","username","password","port","search","pathname","host","error","TypeError","message","includes","produceNameId","Name","commitmentHash","salt","toString","padStart","Commitment","readInt","buffer","BigInt","ensureName","isName","encodingToPointerKey","AccountAddress","OracleAddress","Channel","getDefaultPointerKey","identifier","encoding","substring","result","find","e","map","join","getMinimumNameFee","nameLength","Math","min","computeBidFee","startFee","increment","Number","times","plus","computeAuctionEndBlock","claimHeight","_ref","_ref2","_ref3","h","isAuctionName"],"sources":["../../../src/tx/builder/helpers.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { genSalt, hash } from '../../utils/crypto.js';\nimport { decode, encode, Encoded, Encoding } from '../../utils/encoder.js';\nimport { toBytes } from '../../utils/bytes.js';\nimport { concatBuffers } from '../../utils/other.js';\nimport {\n AensName,\n NAME_BID_RANGES,\n NAME_FEE_BID_INCREMENT,\n NAME_MAX_LENGTH_FEE,\n} from './constants.js';\nimport { ceil } from '../../utils/bignumber.js';\nimport { ArgumentError, IllegalBidFeeError } from '../../utils/errors.js';\n\n/**\n * JavaScript-based Transaction builder helper function's\n */\n\n/**\n * Build a contract address\n * @category contract\n * @param owner - Address of contract owner\n * @param nonce - Nonce of ContractCreateTx or state channel round when contract was created\n * @returns Contract address\n */\nexport function buildContractId(\n owner: Encoded.AccountAddress,\n nonce: number | BigNumber,\n): Encoded.ContractAddress {\n const ownerIdAndNonce = Buffer.from([...decode(owner), ...toBytes(nonce)]);\n const b2bHash = hash(ownerIdAndNonce);\n return encode(b2bHash, Encoding.ContractAddress);\n}\n\n// TODO: add `build` prefix the same as others\n/**\n * Build a oracle query id\n * @category oracle\n * @param senderId - The public key of the sender account\n * @param nonce - the nonce of the transaction\n * @param oracleId - The oracle public key\n * @returns Contract public key\n */\nexport function oracleQueryId(\n senderId: Encoded.AccountAddress,\n nonce: number | BigNumber | string,\n oracleId: Encoded.OracleAddress,\n): Encoded.OracleQueryId {\n function _int32(val: number | string | BigNumber): Buffer {\n const nonceBE = toBytes(val, true);\n return concatBuffers([Buffer.alloc(32 - nonceBE.length), nonceBE]);\n }\n\n const b2bHash = hash(Buffer.from([...decode(senderId), ..._int32(nonce), ...decode(oracleId)]));\n return encode(b2bHash, Encoding.OracleQueryId);\n}\n\nconst AENS_SUFFIX = '.chain';\n\nexport function nameToPunycode(maybeName: string): AensName {\n const [name, suffix, ...other] = maybeName.split('.');\n if (other.length !== 0) throw new ArgumentError('aens name', 'including only one dot', maybeName);\n if (suffix !== AENS_SUFFIX.slice(1)) {\n throw new ArgumentError('aens name', `suffixed with ${AENS_SUFFIX}`, maybeName);\n }\n if (/\\p{Emoji_Presentation}/u.test(name)) {\n throw new ArgumentError('aens name', 'not containing emoji', maybeName);\n }\n if (name[2] === '-' && name[3] === '-') {\n throw new ArgumentError(\n 'aens name',\n 'without \"-\" char in both the third and fourth positions',\n maybeName,\n );\n }\n if (name[0] === '-') {\n throw new ArgumentError('aens name', 'starting with no \"-\" char', maybeName);\n }\n if (name.at(-1) === '-') {\n throw new ArgumentError('aens name', 'ending with no \"-\" char', maybeName);\n }\n let punycode;\n try {\n const u = new URL(`http://${name}.${suffix}`);\n if (u.username + u.password + u.port + u.search + u.hash !== '' || u.pathname !== '/') {\n throw new ArgumentError('aens name', 'valid', maybeName);\n }\n punycode = u.host;\n } catch (error) {\n if (error instanceof TypeError && error.message.includes('Invalid URL')) {\n throw new ArgumentError('aens name', 'valid', maybeName);\n }\n throw error;\n }\n if (!/^[a-z0-9.-]+$/i.test(punycode)) {\n throw new ArgumentError('aens name', 'without illegal chars', maybeName);\n }\n if (punycode.length > 63 + AENS_SUFFIX.length) {\n throw new ArgumentError('aens name', 'not too long', maybeName);\n }\n return punycode as AensName;\n}\n\n// TODO: replace `produce` with `build` the same as others\n/**\n * Encode an AENS name\n * @category AENS\n * @param name - Name to encode\n * @returns `nm_` prefixed encoded AENS name\n */\nexport function produceNameId(name: AensName): Encoded.Name {\n return encode(hash(nameToPunycode(name)), Encoding.Name);\n}\n\n// TODO: add `build` the same as others\n/**\n * Generate the commitment hash by hashing the salt and\n * name, base 58 encoding the result and prepending 'cm_'\n * @category transaction builder\n * @param name - Name to be registered\n * @param salt - Random number\n * @returns Commitment hash\n */\nexport function commitmentHash(name: AensName, salt: number = genSalt()): Encoded.Commitment {\n return encode(\n hash(\n concatBuffers([\n Buffer.from(nameToPunycode(name)),\n Buffer.from(salt.toString(16).padStart(64, '0'), 'hex'),\n ]),\n ),\n Encoding.Commitment,\n );\n}\n\n/**\n * Utility function to convert bytes to int\n * @category utils\n * @param buffer - Value\n * @returns Buffer Buffer from number(BigEndian)\n * @deprecated use `BigInt('0x' + <buffer>.toString('hex')).toString()` instead\n */\nexport function readInt(buffer: Uint8Array = Buffer.from([])): string {\n return BigInt('0x' + Buffer.from(buffer).toString('hex')).toString();\n}\n\n/**\n * Ensure that name is valid AENS name, would throw an exception otherwise\n * @category AENS\n * @param maybeName - AENS name\n */\nexport function ensureName(maybeName: string): asserts maybeName is AensName {\n nameToPunycode(maybeName);\n}\n\n/**\n * Is AENS name valid\n * @category AENS\n * @param maybeName - AENS name\n */\nexport function isName(maybeName: string): maybeName is AensName {\n try {\n ensureName(maybeName);\n return true;\n } catch (error) {\n return false;\n }\n}\n\nconst encodingToPointerKey = [\n [Encoding.AccountAddress, 'account_pubkey'],\n [Encoding.OracleAddress, 'oracle_pubkey'],\n [Encoding.ContractAddress, 'contract_pubkey'],\n [Encoding.Channel, 'channel'],\n] as const;\n\n/**\n * @category AENS\n * @param identifier - account/oracle/contract address, or channel\n * @returns default AENS pointer key\n */\nexport function getDefaultPointerKey(\n identifier: Encoded.Generic<(typeof encodingToPointerKey)[number][0]>,\n): (typeof encodingToPointerKey)[number][1] {\n decode(identifier);\n const encoding = identifier.substring(0, 2);\n const result = encodingToPointerKey.find(([e]) => e === encoding)?.[1];\n if (result != null) return result;\n throw new ArgumentError(\n 'identifier',\n `prefixed with one of ${encodingToPointerKey.map(([e]) => `${e}_`).join(', ')}`,\n identifier,\n );\n}\n\n/**\n * Get the minimum AENS name fee\n * @category AENS\n * @param name - the AENS name to get the fee for\n * @returns the minimum fee for the AENS name auction\n */\nexport function getMinimumNameFee(name: AensName): BigNumber {\n const nameLength = nameToPunycode(name).length - AENS_SUFFIX.length;\n return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)];\n}\n\n/**\n * Compute bid fee for AENS auction\n * @category AENS\n * @param name - the AENS name to get the fee for\n * @param options - Options\n * @param options.startFee - Auction start fee\n * @param options.increment - Bid multiplier(In percentage, must be between 0 and 1)\n * @returns Bid fee\n */\nexport function computeBidFee(\n name: AensName,\n {\n startFee,\n increment = NAME_FEE_BID_INCREMENT,\n }: { startFee?: number | string | BigNumber; increment?: number } = {},\n): BigNumber {\n if (!(Number(increment) === increment && increment % 1 !== 0))\n throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`);\n if (increment < NAME_FEE_BID_INCREMENT)\n throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`);\n // FIXME: increment should be used somehow here\n return ceil(\n new BigNumber(startFee ?? getMinimumNameFee(name)).times(\n new BigNumber(NAME_FEE_BID_INCREMENT).plus(1),\n ),\n );\n}\n\n/**\n * Compute approximate auction end height.\n *\n * From Ceres, each time a new (successful!) bid is made for a name the auction is extended for up\n * to 120 key-blocks/generations. I.e. after the bid there is always at least 120 generations to\n * make a higher bid.\n *\n * @category AENS\n * @param name - Name to compute auction end for\n * @param claimHeight - Auction starting height\n * @see {@link https://github.com/aeternity/protocol/blob/cfb19ce/AENS.md#from-ceres-protocol-upgrade}\n * @returns Auction end height\n */\nexport function computeAuctionEndBlock(name: AensName, claimHeight: number): number {\n const length = nameToPunycode(name).length - AENS_SUFFIX.length;\n const h =\n (length <= 4 ? 2400 : null) ?? (length <= 8 ? 960 : null) ?? (length <= 12 ? 480 : null) ?? 0;\n return h + claimHeight;\n}\n\n/**\n * Is name accept going to auction\n * @category AENS\n */\nexport function isAuctionName(name: AensName): boolean {\n return nameToPunycode(name).length < 13 + AENS_SUFFIX.length;\n}\n"],"mappings":"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","ignoreList":[]}
|