@aeternity/aepp-sdk 13.3.1 → 13.3.3
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/bin/aesophia_cli_8 +0 -0
- package/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.map +1 -1
- package/dist/aepp-sdk.browser.js +1 -1
- package/dist/aepp-sdk.browser.js.map +1 -1
- package/dist/aepp-sdk.js +50 -45
- package/dist/aepp-sdk.js.map +1 -1
- package/es/AeSdkAepp.mjs +1 -1
- package/es/AeSdkAepp.mjs.map +1 -1
- package/es/AeSdkWallet.mjs +4 -1
- package/es/AeSdkWallet.mjs.map +1 -1
- package/es/chain.d.ts +5 -5
- package/es/chain.mjs +18 -20
- package/es/chain.mjs.map +1 -1
- package/es/channel/Base.d.ts +1 -1
- package/es/channel/Base.mjs.map +1 -1
- package/es/channel/internal.d.ts +23 -17
- package/es/channel/internal.mjs.map +1 -1
- package/es/contract/Contract.mjs +3 -0
- package/es/contract/Contract.mjs.map +1 -1
- package/es/oracle.d.ts +2 -2
- package/es/oracle.mjs +6 -10
- package/es/oracle.mjs.map +1 -1
- package/es/tx/builder/field-types/gas-price.mjs +1 -4
- package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
- package/es/tx/builder/field-types/ttl.d.ts +3 -2
- package/es/tx/builder/field-types/ttl.mjs.map +1 -1
- package/es/tx/builder/helpers.mjs +9 -0
- package/es/tx/builder/helpers.mjs.map +1 -1
- package/es/tx/builder/schema.d.ts +69 -46
- package/es/utils/hd-wallet.d.ts +2 -1
- package/es/utils/hd-wallet.mjs.map +1 -1
- package/es/utils/semver-satisfies.d.ts +1 -1
- package/es/utils/semver-satisfies.mjs +8 -9
- package/es/utils/semver-satisfies.mjs.map +1 -1
- package/package.json +5 -4
- package/src/AeSdkAepp.ts +1 -1
- package/src/AeSdkWallet.ts +2 -1
- package/src/chain.ts +28 -18
- package/src/channel/Base.ts +1 -1
- package/src/channel/internal.ts +24 -17
- package/src/contract/Contract.ts +3 -0
- package/src/oracle.ts +7 -7
- package/src/tx/builder/field-types/gas-price.ts +67 -70
- package/src/tx/builder/field-types/ttl.ts +1 -1
- package/src/tx/builder/helpers.ts +9 -0
- package/src/utils/hd-wallet.ts +5 -3
- package/src/utils/semver-satisfies.ts +14 -13
- package/types-legacy/ts4.2/chain.d.ts +5 -5
- package/types-legacy/ts4.2/channel/Base.d.ts +1 -1
- package/types-legacy/ts4.2/channel/internal.d.ts +23 -17
- package/types-legacy/ts4.2/oracle.d.ts +2 -2
- package/types-legacy/ts4.2/tx/builder/field-types/ttl.d.ts +3 -2
- package/types-legacy/ts4.2/tx/builder/schema.d.ts +69 -46
- package/types-legacy/ts4.2/utils/hd-wallet.d.ts +2 -1
- package/types-legacy/ts4.2/utils/semver-satisfies.d.ts +1 -1
- package/types-legacy/ts4.5/chain.d.ts +5 -5
- package/types-legacy/ts4.5/channel/Base.d.ts +1 -1
- package/types-legacy/ts4.5/channel/internal.d.ts +23 -17
- package/types-legacy/ts4.5/oracle.d.ts +2 -2
- package/types-legacy/ts4.5/tx/builder/field-types/ttl.d.ts +3 -2
- package/types-legacy/ts4.5/tx/builder/schema.d.ts +69 -46
- package/types-legacy/ts4.5/utils/hd-wallet.d.ts +2 -1
- package/types-legacy/ts4.5/utils/semver-satisfies.d.ts +1 -1
package/es/oracle.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oracle.mjs","names":["mapObject","pause","oracleQueryId","unpackTx","buildTxAsync","Tag","RequestTimedOutError","decode","encode","Encoding","_getPollInterval","getHeight","sendTransaction","pollForQueries","oracleId","onQuery","interval","onNode","options","_interval","knownQueryIds","Set","checkNewQueries","_await$onNode$getOrac","queries","getOracleQueriesByPubkey","oracleQueries","filter","id","has","forEach","query","add","stopped","catch","console","error","pollForQueryResponse","queryId","_interval2","height","ttl","response","getOracleQueryByPubkeyAndQueryId","responseBuffer","length","toString","cached","getQueryObject","record","decodedQuery","decodedResponse","respond","opt","respondToQuery","pollForResponse","postQueryToOracle","senderId","onAccount","address","oracleQueryTx","_isInternalBuild","tag","OracleQueryTx","nonce","extendOracleTtl","OracleAddress","oracleExtendTx","OracleExtendTx","getOracleObject","oracleRespondTx","OracleResponseTx","getOracleByPubkey","pollQueries","postQuery","extendOracle","getQuery","name","handler","args","lastArg","constructor","Object","assign","push","includes","registerOracle","queryFormat","responseFormat","accountId","oracleRegisterTx","OracleRegisterTx"],"sources":["../src/oracle.ts"],"sourcesContent":["/**\n * Oracle methods - routines to interact with the æternity oracle system\n *\n * The high-level description of the oracle system is\n * https://github.com/aeternity/protocol/blob/master/ORACLE.md in the protocol\n * repository.\n */\n\nimport { mapObject, pause } from './utils/other';\nimport { oracleQueryId } from './tx/builder/helpers';\nimport { unpackTx, buildTxAsync, BuildTxOptions } from './tx/builder';\nimport { Tag } from './tx/builder/constants';\nimport { RequestTimedOutError } from './utils/errors';\nimport {\n decode, encode, Encoded, Encoding,\n} from './utils/encoder';\nimport { _getPollInterval, getHeight } from './chain';\nimport { sendTransaction, SendTransactionOptions } from './send-transaction';\nimport Node from './Node';\nimport AccountBase from './account/Base';\n\ntype OracleQueries = Awaited<ReturnType<Node['getOracleQueriesByPubkey']>>['oracleQueries'];\n\n/**\n * Poll for oracle queries\n * @category oracle\n * @param oracleId - Oracle public key\n * @param onQuery - OnQuery callback\n * @param options - Options object\n * @param options.interval - Poll interval(default: 5000)\n * @param options.onNode - Node to use\n * @returns Callback to stop polling function\n */\nexport function pollForQueries(\n oracleId: Encoded.OracleAddress,\n onQuery: (query: OracleQueries[number]) => void,\n { interval, onNode, ...options }: { interval?: number; onNode: Node }\n & Parameters<typeof _getPollInterval>[1],\n): () => void {\n interval ??= _getPollInterval('microblock', options);\n const knownQueryIds = new Set();\n const checkNewQueries = async (): Promise<void> => {\n const queries = ((await onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries ?? [])\n .filter(({ id }) => !knownQueryIds.has(id));\n queries.forEach((query) => {\n knownQueryIds.add(query.id);\n onQuery(query);\n });\n };\n\n let stopped = false;\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n (async () => {\n while (!stopped) { // eslint-disable-line no-unmodified-loop-condition\n // TODO: allow to handle this error somehow\n await checkNewQueries().catch(console.error);\n await pause(interval);\n }\n })();\n return () => { stopped = true; };\n}\n\n/**\n * Poll for oracle query response\n * @category oracle\n * @param oracleId - Oracle public key\n * @param queryId - Oracle Query id\n * @param options - Options object\n * @param options.interval - Poll interval\n * @param options.onNode - Node to use\n * @returns OracleQuery object\n */\nexport async function pollForQueryResponse(\n oracleId: Encoded.OracleAddress,\n queryId: Encoded.OracleQueryId,\n { interval, onNode, ...options }:\n { interval?: number; onNode: Node } & Parameters<typeof _getPollInterval>[1],\n): Promise<string> {\n interval ??= _getPollInterval('microblock', options);\n let height;\n let ttl;\n let response;\n do {\n ({ response, ttl } = await onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId));\n const responseBuffer = decode(response as Encoded.OracleResponse);\n if (responseBuffer.length > 0) return responseBuffer.toString();\n await pause(interval);\n height = await getHeight({ ...options, onNode, cached: true });\n } while (ttl >= height);\n throw new RequestTimedOutError(height);\n}\n\n/**\n * Constructor for OracleQuery Object (helper object for using OracleQuery)\n * @category oracle\n * @param oracleId - Oracle public key\n * @param queryId - Oracle Query id\n * @param options - Options\n * @returns OracleQuery object\n */\nexport async function getQueryObject(\n oracleId: Encoded.OracleAddress,\n queryId: Encoded.OracleQueryId,\n options: RespondToQueryOptions & Parameters<typeof pollForQueryResponse>[2],\n): Promise<GetQueryObjectReturnType> {\n const record = await options.onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId);\n return {\n ...record,\n decodedQuery: decode(record.query as Encoded.OracleQueryId).toString(),\n decodedResponse: decode(record.response as Encoded.OracleResponse).toString(),\n respond: async (response, opt) => (\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n respondToQuery(queryId, response, { ...options, ...opt })\n ),\n pollForResponse: async (opt) => pollForQueryResponse(oracleId, queryId, { ...options, ...opt }),\n };\n}\n\ninterface GetQueryObjectReturnType extends Awaited<ReturnType<Node['getOracleQueryByPubkeyAndQueryId']>> {\n decodedQuery: string;\n decodedResponse: string;\n respond: (response: string, options?: Parameters<typeof respondToQuery>[2]) =>\n ReturnType<typeof respondToQuery>;\n pollForResponse: (options?: Parameters<typeof pollForQueryResponse>[2]) =>\n ReturnType<typeof pollForQueryResponse>;\n}\n\n/**\n * Post query to oracle\n * @category oracle\n * @param oracleId - Oracle public key\n * @param query - Oracle query object\n * @param options - Options object\n * @returns Query object\n */\nexport async function postQueryToOracle(\n oracleId: Encoded.OracleAddress,\n query: string,\n options: PostQueryToOracleOptions,\n): Promise<\n Awaited<ReturnType<typeof sendTransaction>> & Awaited<ReturnType<typeof getQueryObject>>\n > {\n const senderId = options.onAccount.address;\n\n const oracleQueryTx = await buildTxAsync({\n _isInternalBuild: true,\n ...options,\n tag: Tag.OracleQueryTx,\n oracleId,\n senderId,\n query,\n });\n const { nonce } = unpackTx(oracleQueryTx, Tag.OracleQueryTx);\n const queryId = oracleQueryId(senderId, nonce, oracleId);\n return {\n ...await sendTransaction(oracleQueryTx, options),\n ...await getQueryObject(oracleId, queryId, options),\n };\n}\n\ntype PostQueryToOracleOptionsType = Parameters<typeof sendTransaction>[1]\n& Parameters<typeof getQueryObject>[2]\n& BuildTxOptions<Tag.OracleQueryTx, 'oracleId' | 'senderId' | 'query'>;\ninterface PostQueryToOracleOptions extends PostQueryToOracleOptionsType {}\n\n/**\n * Extend oracle ttl\n * @category oracle\n * @param options - Options object\n * @returns Oracle object\n */\nexport async function extendOracleTtl(options: ExtendOracleTtlOptions): Promise<\nAwaited<ReturnType<typeof sendTransaction>> & Awaited<ReturnType<typeof getOracleObject>>\n> {\n const oracleId = encode(decode(options.onAccount.address), Encoding.OracleAddress);\n const oracleExtendTx = await buildTxAsync({\n _isInternalBuild: true,\n ...options,\n tag: Tag.OracleExtendTx,\n oracleId,\n });\n return {\n ...await sendTransaction(oracleExtendTx, options),\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n ...await getOracleObject(oracleId, options),\n };\n}\n\ntype ExtendOracleTtlOptionsType = SendTransactionOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleExtendTx, 'callerId' | 'oracleId'>;\ninterface ExtendOracleTtlOptions extends ExtendOracleTtlOptionsType {}\n\n/**\n * Extend oracle ttl\n * @category oracle\n * @param queryId - Oracle query id\n * @param response - Oracle query response\n * @param options - Options object\n * @returns Oracle object\n */\nexport async function respondToQuery(\n queryId: Encoded.OracleQueryId,\n response: string,\n options: RespondToQueryOptions,\n): Promise<\n Awaited<ReturnType<typeof sendTransaction>> & Awaited<ReturnType<typeof getOracleObject>>\n > {\n const oracleId = encode(decode(options.onAccount.address), Encoding.OracleAddress);\n const oracleRespondTx = await buildTxAsync({\n _isInternalBuild: true,\n ...options,\n tag: Tag.OracleResponseTx,\n oracleId,\n queryId,\n response,\n });\n return {\n ...await sendTransaction(oracleRespondTx, options),\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n ...await getOracleObject(oracleId, options),\n };\n}\n\ntype RespondToQueryOptionsType = SendTransactionOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleResponseTx, 'callerId' | 'oracleId' | 'queryId' | 'response'>;\ninterface RespondToQueryOptions extends RespondToQueryOptionsType {}\n\n/**\n * Constructor for Oracle Object (helper object for using Oracle)\n * @category oracle\n * @param oracleId - Oracle public key\n * @param options - Options\n * @returns Oracle object\n */\nexport async function getOracleObject(\n oracleId: Encoded.OracleAddress,\n options: { onNode: Node; onAccount: AccountBase },\n): Promise<GetOracleObjectReturnType> {\n return {\n ...await options.onNode.getOracleByPubkey(oracleId),\n queries: (await options.onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries,\n ...mapObject<Function, Function>(\n {\n pollQueries: pollForQueries,\n postQuery: postQueryToOracle,\n respondToQuery,\n extendOracle: extendOracleTtl,\n getQuery: getQueryObject,\n },\n ([name, handler]) => [\n name,\n (...args: any) => {\n const lastArg = args[args.length - 1];\n if (lastArg != null && typeof lastArg === 'object' && lastArg.constructor === Object) {\n Object.assign(lastArg, { ...options, ...lastArg });\n } else args.push(options);\n return handler(\n ...['extendOracle', 'respondToQuery'].includes(name) ? [] : [oracleId],\n ...args,\n );\n },\n ],\n ),\n } as any;\n}\n\ninterface GetOracleObjectReturnType extends Awaited<ReturnType<Node['getOracleByPubkey']>> {\n id: Encoded.OracleAddress;\n queries: OracleQueries;\n // TODO: replace getOracleObject with a class\n pollQueries: (cb: Parameters<typeof pollForQueries>[1]) => ReturnType<typeof pollForQueries>;\n postQuery: Function;\n respondToQuery: Function;\n extendOracle: Function;\n getQuery: Function;\n}\n\n/**\n * Register oracle\n * @category oracle\n * @param queryFormat - Format of query\n * @param responseFormat - Format of query response\n * @param options - Options\n * @returns Oracle object\n */\nexport async function registerOracle(\n queryFormat: string,\n responseFormat: string,\n options: RegisterOracleOptions,\n): Promise<\n Awaited<ReturnType<typeof sendTransaction>> & Awaited<ReturnType<typeof getOracleObject>>\n > {\n const accountId = options.onAccount.address;\n const oracleRegisterTx = await buildTxAsync({\n _isInternalBuild: true,\n ...options,\n tag: Tag.OracleRegisterTx,\n accountId,\n queryFormat,\n responseFormat,\n });\n return {\n ...await sendTransaction(oracleRegisterTx, options),\n ...await getOracleObject(encode(decode(accountId), Encoding.OracleAddress), options),\n };\n}\n\ntype RegisterOracleOptionsType = SendTransactionOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleRegisterTx, 'accountId' | 'queryFormat' | 'responseFormat'>;\ninterface RegisterOracleOptions extends RegisterOracleOptionsType {}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"oracle.mjs","names":["mapObject","pause","oracleQueryId","unpackTx","buildTxAsync","Tag","RequestTimedOutError","decode","encode","Encoding","_getPollInterval","getHeight","sendTransaction","pollForQueries","oracleId","onQuery","interval","options","knownQueryIds","Set","checkNewQueries","_await$options$onNode","queries","onNode","getOracleQueriesByPubkey","oracleQueries","filter","id","has","forEach","query","add","stopped","_interval","catch","console","error","pollForQueryResponse","queryId","_interval2","height","ttl","response","getOracleQueryByPubkeyAndQueryId","responseBuffer","length","toString","cached","getQueryObject","record","decodedQuery","decodedResponse","respond","opt","respondToQuery","pollForResponse","postQueryToOracle","senderId","onAccount","address","oracleQueryTx","_isInternalBuild","tag","OracleQueryTx","nonce","extendOracleTtl","OracleAddress","oracleExtendTx","OracleExtendTx","getOracleObject","oracleRespondTx","OracleResponseTx","getOracleByPubkey","pollQueries","postQuery","extendOracle","getQuery","name","handler","args","lastArg","constructor","Object","assign","push","includes","registerOracle","queryFormat","responseFormat","accountId","oracleRegisterTx","OracleRegisterTx"],"sources":["../src/oracle.ts"],"sourcesContent":["/**\n * Oracle methods - routines to interact with the æternity oracle system\n *\n * The high-level description of the oracle system is\n * https://github.com/aeternity/protocol/blob/master/ORACLE.md in the protocol\n * repository.\n */\n\nimport { mapObject, pause } from './utils/other';\nimport { oracleQueryId } from './tx/builder/helpers';\nimport { unpackTx, buildTxAsync, BuildTxOptions } from './tx/builder';\nimport { Tag } from './tx/builder/constants';\nimport { RequestTimedOutError } from './utils/errors';\nimport {\n decode, encode, Encoded, Encoding,\n} from './utils/encoder';\nimport { _getPollInterval, getHeight } from './chain';\nimport { sendTransaction, SendTransactionOptions } from './send-transaction';\nimport Node from './Node';\nimport AccountBase from './account/Base';\n\ntype OracleQueries = Awaited<ReturnType<Node['getOracleQueriesByPubkey']>>['oracleQueries'];\n\n/**\n * Poll for oracle queries\n * @category oracle\n * @param oracleId - Oracle public key\n * @param onQuery - OnQuery callback\n * @param options - Options object\n * @param options.interval - Poll interval(default: 5000)\n * @param options.onNode - Node to use\n * @returns Callback to stop polling function\n */\nexport function pollForQueries(\n oracleId: Encoded.OracleAddress,\n onQuery: (query: OracleQueries[number]) => void,\n { interval, ...options }: { interval?: number; onNode: Node }\n & Parameters<typeof _getPollInterval>[1],\n): () => void {\n const knownQueryIds = new Set();\n const checkNewQueries = async (): Promise<void> => {\n const queries = ((await options.onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries ?? [])\n .filter(({ id }) => !knownQueryIds.has(id));\n queries.forEach((query) => {\n knownQueryIds.add(query.id);\n onQuery(query);\n });\n };\n\n let stopped = false;\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n (async () => {\n interval ??= await _getPollInterval('micro-block', options);\n while (!stopped) { // eslint-disable-line no-unmodified-loop-condition\n // TODO: allow to handle this error somehow\n await checkNewQueries().catch(console.error);\n await pause(interval);\n }\n })();\n return () => { stopped = true; };\n}\n\n/**\n * Poll for oracle query response\n * @category oracle\n * @param oracleId - Oracle public key\n * @param queryId - Oracle Query id\n * @param options - Options object\n * @param options.interval - Poll interval\n * @param options.onNode - Node to use\n * @returns OracleQuery object\n */\nexport async function pollForQueryResponse(\n oracleId: Encoded.OracleAddress,\n queryId: Encoded.OracleQueryId,\n { interval, ...options }:\n { interval?: number; onNode: Node } & Parameters<typeof _getPollInterval>[1],\n): Promise<string> {\n interval ??= await _getPollInterval('micro-block', options);\n let height;\n let ttl;\n let response;\n do {\n ({ response, ttl } = await options.onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId));\n const responseBuffer = decode(response as Encoded.OracleResponse);\n if (responseBuffer.length > 0) return responseBuffer.toString();\n await pause(interval);\n height = await getHeight({ ...options, cached: true });\n } while (ttl >= height);\n throw new RequestTimedOutError(height);\n}\n\n/**\n * Constructor for OracleQuery Object (helper object for using OracleQuery)\n * @category oracle\n * @param oracleId - Oracle public key\n * @param queryId - Oracle Query id\n * @param options - Options\n * @returns OracleQuery object\n */\nexport async function getQueryObject(\n oracleId: Encoded.OracleAddress,\n queryId: Encoded.OracleQueryId,\n options: RespondToQueryOptions & Parameters<typeof pollForQueryResponse>[2],\n): Promise<GetQueryObjectReturnType> {\n const record = await options.onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId);\n return {\n ...record,\n decodedQuery: decode(record.query as Encoded.OracleQueryId).toString(),\n decodedResponse: decode(record.response as Encoded.OracleResponse).toString(),\n respond: async (response, opt) => (\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n respondToQuery(queryId, response, { ...options, ...opt })\n ),\n pollForResponse: async (opt) => pollForQueryResponse(oracleId, queryId, { ...options, ...opt }),\n };\n}\n\ninterface GetQueryObjectReturnType extends Awaited<ReturnType<Node['getOracleQueryByPubkeyAndQueryId']>> {\n decodedQuery: string;\n decodedResponse: string;\n respond: (response: string, options?: Parameters<typeof respondToQuery>[2]) =>\n ReturnType<typeof respondToQuery>;\n pollForResponse: (options?: Parameters<typeof pollForQueryResponse>[2]) =>\n ReturnType<typeof pollForQueryResponse>;\n}\n\n/**\n * Post query to oracle\n * @category oracle\n * @param oracleId - Oracle public key\n * @param query - Oracle query object\n * @param options - Options object\n * @returns Query object\n */\nexport async function postQueryToOracle(\n oracleId: Encoded.OracleAddress,\n query: string,\n options: PostQueryToOracleOptions,\n): Promise<\n Awaited<ReturnType<typeof sendTransaction>> & Awaited<ReturnType<typeof getQueryObject>>\n > {\n const senderId = options.onAccount.address;\n\n const oracleQueryTx = await buildTxAsync({\n _isInternalBuild: true,\n ...options,\n tag: Tag.OracleQueryTx,\n oracleId,\n senderId,\n query,\n });\n const { nonce } = unpackTx(oracleQueryTx, Tag.OracleQueryTx);\n const queryId = oracleQueryId(senderId, nonce, oracleId);\n return {\n ...await sendTransaction(oracleQueryTx, options),\n ...await getQueryObject(oracleId, queryId, options),\n };\n}\n\ntype PostQueryToOracleOptionsType = Parameters<typeof sendTransaction>[1]\n& Parameters<typeof getQueryObject>[2]\n& BuildTxOptions<Tag.OracleQueryTx, 'oracleId' | 'senderId' | 'query'>;\ninterface PostQueryToOracleOptions extends PostQueryToOracleOptionsType {}\n\n/**\n * Extend oracle ttl\n * @category oracle\n * @param options - Options object\n * @returns Oracle object\n */\nexport async function extendOracleTtl(options: ExtendOracleTtlOptions): Promise<\nAwaited<ReturnType<typeof sendTransaction>> & Awaited<ReturnType<typeof getOracleObject>>\n> {\n const oracleId = encode(decode(options.onAccount.address), Encoding.OracleAddress);\n const oracleExtendTx = await buildTxAsync({\n _isInternalBuild: true,\n ...options,\n tag: Tag.OracleExtendTx,\n oracleId,\n });\n return {\n ...await sendTransaction(oracleExtendTx, options),\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n ...await getOracleObject(oracleId, options),\n };\n}\n\ntype ExtendOracleTtlOptionsType = SendTransactionOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleExtendTx, 'callerId' | 'oracleId'>;\ninterface ExtendOracleTtlOptions extends ExtendOracleTtlOptionsType {}\n\n/**\n * Extend oracle ttl\n * @category oracle\n * @param queryId - Oracle query id\n * @param response - Oracle query response\n * @param options - Options object\n * @returns Oracle object\n */\nexport async function respondToQuery(\n queryId: Encoded.OracleQueryId,\n response: string,\n options: RespondToQueryOptions,\n): Promise<\n Awaited<ReturnType<typeof sendTransaction>> & Awaited<ReturnType<typeof getOracleObject>>\n > {\n const oracleId = encode(decode(options.onAccount.address), Encoding.OracleAddress);\n const oracleRespondTx = await buildTxAsync({\n _isInternalBuild: true,\n ...options,\n tag: Tag.OracleResponseTx,\n oracleId,\n queryId,\n response,\n });\n return {\n ...await sendTransaction(oracleRespondTx, options),\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n ...await getOracleObject(oracleId, options),\n };\n}\n\ntype RespondToQueryOptionsType = SendTransactionOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleResponseTx, 'callerId' | 'oracleId' | 'queryId' | 'response'>;\ninterface RespondToQueryOptions extends RespondToQueryOptionsType {}\n\n/**\n * Constructor for Oracle Object (helper object for using Oracle)\n * @category oracle\n * @param oracleId - Oracle public key\n * @param options - Options\n * @returns Oracle object\n */\nexport async function getOracleObject(\n oracleId: Encoded.OracleAddress,\n options: { onNode: Node; onAccount: AccountBase },\n): Promise<GetOracleObjectReturnType> {\n return {\n ...await options.onNode.getOracleByPubkey(oracleId),\n queries: (await options.onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries,\n ...mapObject<Function, Function>(\n {\n pollQueries: pollForQueries,\n postQuery: postQueryToOracle,\n respondToQuery,\n extendOracle: extendOracleTtl,\n getQuery: getQueryObject,\n },\n ([name, handler]) => [\n name,\n (...args: any) => {\n const lastArg = args[args.length - 1];\n if (lastArg != null && typeof lastArg === 'object' && lastArg.constructor === Object) {\n Object.assign(lastArg, { ...options, ...lastArg });\n } else args.push(options);\n return handler(\n ...['extendOracle', 'respondToQuery'].includes(name) ? [] : [oracleId],\n ...args,\n );\n },\n ],\n ),\n } as any;\n}\n\ninterface GetOracleObjectReturnType extends Awaited<ReturnType<Node['getOracleByPubkey']>> {\n id: Encoded.OracleAddress;\n queries: OracleQueries;\n // TODO: replace getOracleObject with a class\n pollQueries: (cb: Parameters<typeof pollForQueries>[1]) => ReturnType<typeof pollForQueries>;\n postQuery: Function;\n respondToQuery: Function;\n extendOracle: Function;\n getQuery: Function;\n}\n\n/**\n * Register oracle\n * @category oracle\n * @param queryFormat - Format of query\n * @param responseFormat - Format of query response\n * @param options - Options\n * @returns Oracle object\n */\nexport async function registerOracle(\n queryFormat: string,\n responseFormat: string,\n options: RegisterOracleOptions,\n): Promise<\n Awaited<ReturnType<typeof sendTransaction>> & Awaited<ReturnType<typeof getOracleObject>>\n > {\n const accountId = options.onAccount.address;\n const oracleRegisterTx = await buildTxAsync({\n _isInternalBuild: true,\n ...options,\n tag: Tag.OracleRegisterTx,\n accountId,\n queryFormat,\n responseFormat,\n });\n return {\n ...await sendTransaction(oracleRegisterTx, options),\n ...await getOracleObject(encode(decode(accountId), Encoding.OracleAddress), options),\n };\n}\n\ntype RegisterOracleOptionsType = SendTransactionOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleRegisterTx, 'accountId' | 'queryFormat' | 'responseFormat'>;\ninterface RegisterOracleOptions extends RegisterOracleOptionsType {}\n"],"mappings":"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"}
|
|
@@ -15,10 +15,7 @@ export async function getCachedIncreasedGasPrice(node) {
|
|
|
15
15
|
const {
|
|
16
16
|
nodeVersion
|
|
17
17
|
} = await node._getCachedStatus();
|
|
18
|
-
|
|
19
|
-
if (!nodeVersion.startsWith('6.12.0+') && !semverSatisfies(nodeVersion, '6.13.0', '8.0.0')) {
|
|
20
|
-
return 0n;
|
|
21
|
-
}
|
|
18
|
+
if (!semverSatisfies(nodeVersion, '6.13.0')) return 0n;
|
|
22
19
|
const {
|
|
23
20
|
minGasPrice,
|
|
24
21
|
utilization
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas-price.mjs","names":["BigNumber","coinAmount","ArgumentError","IllegalArgumentError","MIN_GAS_PRICE","formatAmount","semverSatisfies","gasPriceCache","WeakMap","getCachedIncreasedGasPrice","node","cache","get","time","Date","now","gasPrice","nodeVersion","_getCachedStatus","
|
|
1
|
+
{"version":3,"file":"gas-price.mjs","names":["BigNumber","coinAmount","ArgumentError","IllegalArgumentError","MIN_GAS_PRICE","formatAmount","semverSatisfies","gasPriceCache","WeakMap","getCachedIncreasedGasPrice","node","cache","get","time","Date","now","gasPrice","nodeVersion","_getCachedStatus","minGasPrice","utilization","getRecentGasPrices","BigInt","toString","times","integerValue","toFixed","maxSafeGasPrice","console","warn","join","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';\nimport { ArgumentError, IllegalArgumentError } from '../../../utils/errors';\nimport { Int, MIN_GAS_PRICE } from '../constants';\nimport Node from '../../../Node';\nimport { AE_AMOUNT_FORMATS, formatAmount } from '../../../utils/amount-formatter';\nimport semverSatisfies from '../../../utils/semver-satisfies';\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 // TODO: remove after requiring node@6.13.0\n const { nodeVersion } = await node._getCachedStatus();\n if (!semverSatisfies(nodeVersion, '6.13.0')) return 0n;\n\n const { minGasPrice, utilization } = (await node.getRecentGasPrices())[0];\n let gasPrice = utilization < 70 ? 0n : BigInt(\n new BigNumber(minGasPrice.toString()).times(1.01).integerValue().toFixed(),\n );\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 ].join(' '));\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 { onNode, denomination }: {\n onNode?: Node;\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(`Gas price ${value.toString()} must be bigger than ${MIN_GAS_PRICE}`);\n }\n return value;\n },\n};\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,cAAc;AAAC,OAC9BC,UAAU;AAAA,SACRC,aAAa,EAAEC,oBAAoB;AAAA,SAC9BC,aAAa;AAAA,SAECC,YAAY;AAAA,OACjCC,eAAe;AAEtB,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;EACA,MAAM;IAAEC;EAAY,CAAC,GAAG,MAAMP,IAAI,CAACQ,gBAAgB,CAAC,CAAC;EACrD,IAAI,CAACZ,eAAe,CAACW,WAAW,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;EAEtD,MAAM;IAAEE,WAAW;IAAEC;EAAY,CAAC,GAAG,CAAC,MAAMV,IAAI,CAACW,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;EACzE,IAAIL,QAAQ,GAAGI,WAAW,GAAG,EAAE,GAAG,EAAE,GAAGE,MAAM,CAC3C,IAAItB,SAAS,CAACmB,WAAW,CAACI,QAAQ,CAAC,CAAC,CAAC,CAACC,KAAK,CAAC,IAAI,CAAC,CAACC,YAAY,CAAC,CAAC,CAACC,OAAO,CAAC,CAC3E,CAAC;EAED,MAAMC,eAAe,GAAGL,MAAM,CAAClB,aAAa,CAAC,GAAG,OAAO,CAAC,CAAC;EACzD,IAAIY,QAAQ,GAAGW,eAAe,EAAE;IAC9BC,OAAO,CAACC,IAAI,CAAC,CACV,uBAAsBb,QAAS,qDAAoD,EACnF,yBAAwBW,eAAgB,GAAE,EAC3C,mEAAmE,CACpE,CAACG,IAAI,CAAC,GAAG,CAAC,CAAC;IACZd,QAAQ,GAAGW,eAAe;EAC5B;EAEApB,aAAa,CAACwB,GAAG,CAACrB,IAAI,EAAE;IAAEM,QAAQ;IAAEH,IAAI,EAAEC,IAAI,CAACC,GAAG,CAAC;EAAE,CAAC,CAAC;EACvD,OAAOC,QAAQ;AACjB;;AAEA;AACA,eAAe;EACb,GAAGf,UAAU;EAEb,MAAM+B,OAAOA,CACXC,KAAsB,EACtBC,MAAU,EACV;IAAEC,MAAM;IAAEC;EAGV,CAAC,EACyB;IAC1B,IAAIH,KAAK,IAAI,IAAI,EAAE,OAAOA,KAAK;IAC/B,IAAIE,MAAM,IAAI,IAAI,EAAE;MAClB,MAAM,IAAIjC,aAAa,CAAC,QAAQ,EAAE,0CAA0C,EAAEiC,MAAM,CAAC;IACvF;IACA,MAAMnB,QAAQ,GAAG,MAAMP,0BAA0B,CAAC0B,MAAM,CAAC;IACzD,IAAInB,QAAQ,KAAK,EAAE,EAAE,OAAOqB,SAAS;IACrC,OAAOhC,YAAY,CAACW,QAAQ,EAAE;MAAEsB,kBAAkB,EAAEF;IAAa,CAAC,CAAC;EACrE,CAAC;EAEDG,eAAeA,CAACN,KAAyB,GAAG7B,aAAa,CAACmB,QAAQ,CAAC,CAAC,EAAU;IAC5E,IAAI,CAACU,KAAK,GAAG7B,aAAa,EAAE;MAC1B,MAAM,IAAID,oBAAoB,CAAE,aAAY8B,KAAK,CAACV,QAAQ,CAAC,CAAE,wBAAuBnB,aAAc,EAAC,CAAC;IACtG;IACA,OAAO6B,KAAK;EACd;AACF,CAAC"}
|
|
@@ -10,10 +10,11 @@ declare const _default: {
|
|
|
10
10
|
onNode?: Node | undefined;
|
|
11
11
|
absoluteTtl?: boolean | undefined;
|
|
12
12
|
_isInternalBuild?: boolean | undefined;
|
|
13
|
-
} & {
|
|
13
|
+
} & Omit<{
|
|
14
14
|
_expectedMineRate?: number | undefined;
|
|
15
15
|
_microBlockCycle?: number | undefined;
|
|
16
|
-
|
|
16
|
+
onNode: Node;
|
|
17
|
+
}, "onNode">): Promise<number | undefined>;
|
|
17
18
|
deserialize(value: Buffer): number;
|
|
18
19
|
};
|
|
19
20
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ttl.mjs","names":["shortUInt","ArgumentError","getHeight","serialize","value","prepare","params","onNode","absoluteTtl","_isInternalBuild","options","_value","cached"],"sources":["../../../../src/tx/builder/field-types/ttl.ts"],"sourcesContent":["import shortUInt from './short-u-int';\nimport Node from '../../../Node';\nimport { ArgumentError } from '../../../utils/errors';\nimport { _getPollInterval, getHeight } from '../../../chain';\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, absoluteTtl, _isInternalBuild, ...options\n }: {\n onNode?: Node;\n absoluteTtl?: boolean;\n _isInternalBuild?: boolean;\n } & Parameters<typeof _getPollInterval>[1]
|
|
1
|
+
{"version":3,"file":"ttl.mjs","names":["shortUInt","ArgumentError","getHeight","serialize","value","prepare","params","onNode","absoluteTtl","_isInternalBuild","options","_value","cached"],"sources":["../../../../src/tx/builder/field-types/ttl.ts"],"sourcesContent":["import shortUInt from './short-u-int';\nimport Node from '../../../Node';\nimport { ArgumentError } from '../../../utils/errors';\nimport { _getPollInterval, getHeight } from '../../../chain';\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, absoluteTtl, _isInternalBuild, ...options\n }: {\n onNode?: Node;\n absoluteTtl?: boolean;\n _isInternalBuild?: boolean;\n } & Omit<Parameters<typeof _getPollInterval>[1], 'onNode'>,\n ) {\n if (absoluteTtl !== true && value !== 0 && (value != null || _isInternalBuild === true)) {\n if (onNode == null) throw new ArgumentError('onNode', 'provided', onNode);\n value = (value ?? 3) + await getHeight({ ...options, onNode, cached: true });\n }\n return value;\n },\n};\n"],"mappings":"OAAOA,SAAS;AAAA,SAEPC,aAAa;AAAA,SACKC,SAAS;AAEpC;AACA;AACA;AACA,eAAe;EACb,GAAGF,SAAS;EAEZG,SAASA,CAACC,KAAyB,EAAU;IAC3C,OAAOJ,SAAS,CAACG,SAAS,CAACC,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAC;EACxC,CAAC;EAED,MAAMC,OAAOA,CACXD,KAAyB,EACzBE,MAAU;EACV;EACA;IACEC,MAAM;IAAEC,WAAW;IAAEC,gBAAgB;IAAE,GAAGC;EAKa,CAAC,EAC1D;IACA,IAAIF,WAAW,KAAK,IAAI,IAAIJ,KAAK,KAAK,CAAC,KAAKA,KAAK,IAAI,IAAI,IAAIK,gBAAgB,KAAK,IAAI,CAAC,EAAE;MAAA,IAAAE,MAAA;MACvF,IAAIJ,MAAM,IAAI,IAAI,EAAE,MAAM,IAAIN,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAEM,MAAM,CAAC;MACzEH,KAAK,GAAG,EAAAO,MAAA,GAACP,KAAK,cAAAO,MAAA,cAAAA,MAAA,GAAI,CAAC,KAAI,MAAMT,SAAS,CAAC;QAAE,GAAGQ,OAAO;QAAEH,MAAM;QAAEK,MAAM,EAAE;MAAK,CAAC,CAAC;IAC9E;IACA,OAAOR,KAAK;EACd;AACF,CAAC"}
|
|
@@ -52,6 +52,15 @@ export function nameToPunycode(maybeName) {
|
|
|
52
52
|
if (/\p{Emoji_Presentation}/u.test(name)) {
|
|
53
53
|
throw new ArgumentError('aens name', 'not containing emoji', maybeName);
|
|
54
54
|
}
|
|
55
|
+
if (name[2] === '-' && name[3] === '-') {
|
|
56
|
+
throw new ArgumentError('aens name', 'without "-" char in both the third and fourth positions', maybeName);
|
|
57
|
+
}
|
|
58
|
+
if (name[0] === '-') {
|
|
59
|
+
throw new ArgumentError('aens name', 'starting with no "-" char', maybeName);
|
|
60
|
+
}
|
|
61
|
+
if (name.at(-1) === '-') {
|
|
62
|
+
throw new ArgumentError('aens name', 'ending with no "-" char', maybeName);
|
|
63
|
+
}
|
|
55
64
|
let punycode;
|
|
56
65
|
try {
|
|
57
66
|
const u = new URL(`http://${name}.${suffix}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.mjs","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","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","_encodingToPointerKey","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';\nimport {\n decode, encode, Encoded, Encoding,\n} from '../../utils/encoder';\nimport { toBytes } from '../../utils/bytes';\nimport { concatBuffers } from '../../utils/other';\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';\nimport { ceil } from '../../utils/bignumber';\nimport { ArgumentError, IllegalBidFeeError } from '../../utils/errors';\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(\n Buffer.from([...decode(senderId), ..._int32(nonce), ...decode(oracleId)]),\n );\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 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(\n name: AensName,\n salt: number = genSalt(),\n): Encoded.Commitment {\n return encode(\n hash(concatBuffers([\n Buffer.from(nameToPunycode(name)),\n Buffer.from(salt.toString(16).padStart(64, '0'), 'hex'),\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 { startFee, increment = NAME_FEE_BID_INCREMENT }:\n { startFee?: number | string | BigNumber; increment?: number } = {},\n): BigNumber {\n if (!(Number(increment) === increment && increment % 1 !== 0)) throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`);\n if (increment < NAME_FEE_BID_INCREMENT) 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))\n .times(new BigNumber(NAME_FEE_BID_INCREMENT).plus(1)),\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 = (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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"}
|
|
1
|
+
{"version":3,"file":"helpers.mjs","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","_encodingToPointerKey","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';\nimport {\n decode, encode, Encoded, Encoding,\n} from '../../utils/encoder';\nimport { toBytes } from '../../utils/bytes';\nimport { concatBuffers } from '../../utils/other';\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';\nimport { ceil } from '../../utils/bignumber';\nimport { ArgumentError, IllegalBidFeeError } from '../../utils/errors';\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(\n Buffer.from([...decode(senderId), ..._int32(nonce), ...decode(oracleId)]),\n );\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('aens name', 'without \"-\" char in both the third and fourth positions', maybeName);\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(\n name: AensName,\n salt: number = genSalt(),\n): Encoded.Commitment {\n return encode(\n hash(concatBuffers([\n Buffer.from(nameToPunycode(name)),\n Buffer.from(salt.toString(16).padStart(64, '0'), 'hex'),\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 { startFee, increment = NAME_FEE_BID_INCREMENT }:\n { startFee?: number | string | BigNumber; increment?: number } = {},\n): BigNumber {\n if (!(Number(increment) === increment && increment % 1 !== 0)) throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`);\n if (increment < NAME_FEE_BID_INCREMENT) 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))\n .times(new BigNumber(NAME_FEE_BID_INCREMENT).plus(1)),\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 = (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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"}
|
|
@@ -223,10 +223,11 @@ export declare const txSchema: readonly [{
|
|
|
223
223
|
onNode?: import("../..").Node | undefined;
|
|
224
224
|
absoluteTtl?: boolean | undefined;
|
|
225
225
|
_isInternalBuild?: boolean | undefined;
|
|
226
|
-
} & {
|
|
226
|
+
} & Omit<{
|
|
227
227
|
_expectedMineRate?: number | undefined;
|
|
228
228
|
_microBlockCycle?: number | undefined;
|
|
229
|
-
|
|
229
|
+
onNode: import("../..").Node;
|
|
230
|
+
}, "onNode">): Promise<number | undefined>;
|
|
230
231
|
deserialize(value: Buffer): number;
|
|
231
232
|
};
|
|
232
233
|
readonly nonce: {
|
|
@@ -335,10 +336,11 @@ export declare const txSchema: readonly [{
|
|
|
335
336
|
onNode?: import("../..").Node | undefined;
|
|
336
337
|
absoluteTtl?: boolean | undefined;
|
|
337
338
|
_isInternalBuild?: boolean | undefined;
|
|
338
|
-
} & {
|
|
339
|
+
} & Omit<{
|
|
339
340
|
_expectedMineRate?: number | undefined;
|
|
340
341
|
_microBlockCycle?: number | undefined;
|
|
341
|
-
|
|
342
|
+
onNode: import("../..").Node;
|
|
343
|
+
}, "onNode">): Promise<number | undefined>;
|
|
342
344
|
deserialize(value: Buffer): number;
|
|
343
345
|
};
|
|
344
346
|
}, {
|
|
@@ -409,10 +411,11 @@ export declare const txSchema: readonly [{
|
|
|
409
411
|
onNode?: import("../..").Node | undefined;
|
|
410
412
|
absoluteTtl?: boolean | undefined;
|
|
411
413
|
_isInternalBuild?: boolean | undefined;
|
|
412
|
-
} & {
|
|
414
|
+
} & Omit<{
|
|
413
415
|
_expectedMineRate?: number | undefined;
|
|
414
416
|
_microBlockCycle?: number | undefined;
|
|
415
|
-
|
|
417
|
+
onNode: import("../..").Node;
|
|
418
|
+
}, "onNode">): Promise<number | undefined>;
|
|
416
419
|
deserialize(value: Buffer): number;
|
|
417
420
|
};
|
|
418
421
|
}, {
|
|
@@ -484,10 +487,11 @@ export declare const txSchema: readonly [{
|
|
|
484
487
|
onNode?: import("../..").Node | undefined;
|
|
485
488
|
absoluteTtl?: boolean | undefined;
|
|
486
489
|
_isInternalBuild?: boolean | undefined;
|
|
487
|
-
} & {
|
|
490
|
+
} & Omit<{
|
|
488
491
|
_expectedMineRate?: number | undefined;
|
|
489
492
|
_microBlockCycle?: number | undefined;
|
|
490
|
-
|
|
493
|
+
onNode: import("../..").Node;
|
|
494
|
+
}, "onNode">): Promise<number | undefined>;
|
|
491
495
|
deserialize(value: Buffer): number;
|
|
492
496
|
};
|
|
493
497
|
}, {
|
|
@@ -559,10 +563,11 @@ export declare const txSchema: readonly [{
|
|
|
559
563
|
onNode?: import("../..").Node | undefined;
|
|
560
564
|
absoluteTtl?: boolean | undefined;
|
|
561
565
|
_isInternalBuild?: boolean | undefined;
|
|
562
|
-
} & {
|
|
566
|
+
} & Omit<{
|
|
563
567
|
_expectedMineRate?: number | undefined;
|
|
564
568
|
_microBlockCycle?: number | undefined;
|
|
565
|
-
|
|
569
|
+
onNode: import("../..").Node;
|
|
570
|
+
}, "onNode">): Promise<number | undefined>;
|
|
566
571
|
deserialize(value: Buffer): number;
|
|
567
572
|
};
|
|
568
573
|
}, {
|
|
@@ -622,10 +627,11 @@ export declare const txSchema: readonly [{
|
|
|
622
627
|
onNode?: import("../..").Node | undefined;
|
|
623
628
|
absoluteTtl?: boolean | undefined;
|
|
624
629
|
_isInternalBuild?: boolean | undefined;
|
|
625
|
-
} & {
|
|
630
|
+
} & Omit<{
|
|
626
631
|
_expectedMineRate?: number | undefined;
|
|
627
632
|
_microBlockCycle?: number | undefined;
|
|
628
|
-
|
|
633
|
+
onNode: import("../..").Node;
|
|
634
|
+
}, "onNode">): Promise<number | undefined>;
|
|
629
635
|
deserialize(value: Buffer): number;
|
|
630
636
|
};
|
|
631
637
|
}, {
|
|
@@ -681,10 +687,11 @@ export declare const txSchema: readonly [{
|
|
|
681
687
|
onNode?: import("../..").Node | undefined;
|
|
682
688
|
absoluteTtl?: boolean | undefined;
|
|
683
689
|
_isInternalBuild?: boolean | undefined;
|
|
684
|
-
} & {
|
|
690
|
+
} & Omit<{
|
|
685
691
|
_expectedMineRate?: number | undefined;
|
|
686
692
|
_microBlockCycle?: number | undefined;
|
|
687
|
-
|
|
693
|
+
onNode: import("../..").Node;
|
|
694
|
+
}, "onNode">): Promise<number | undefined>;
|
|
688
695
|
deserialize(value: Buffer): number;
|
|
689
696
|
};
|
|
690
697
|
}, {
|
|
@@ -800,10 +807,11 @@ export declare const txSchema: readonly [{
|
|
|
800
807
|
onNode?: import("../..").Node | undefined;
|
|
801
808
|
absoluteTtl?: boolean | undefined;
|
|
802
809
|
_isInternalBuild?: boolean | undefined;
|
|
803
|
-
} & {
|
|
810
|
+
} & Omit<{
|
|
804
811
|
_expectedMineRate?: number | undefined;
|
|
805
812
|
_microBlockCycle?: number | undefined;
|
|
806
|
-
|
|
813
|
+
onNode: import("../..").Node;
|
|
814
|
+
}, "onNode">): Promise<number | undefined>;
|
|
807
815
|
deserialize(value: Buffer): number;
|
|
808
816
|
};
|
|
809
817
|
readonly deposit: {
|
|
@@ -914,10 +922,11 @@ export declare const txSchema: readonly [{
|
|
|
914
922
|
onNode?: import("../..").Node | undefined;
|
|
915
923
|
absoluteTtl?: boolean | undefined;
|
|
916
924
|
_isInternalBuild?: boolean | undefined;
|
|
917
|
-
} & {
|
|
925
|
+
} & Omit<{
|
|
918
926
|
_expectedMineRate?: number | undefined;
|
|
919
927
|
_microBlockCycle?: number | undefined;
|
|
920
|
-
|
|
928
|
+
onNode: import("../..").Node;
|
|
929
|
+
}, "onNode">): Promise<number | undefined>;
|
|
921
930
|
deserialize(value: Buffer): number;
|
|
922
931
|
};
|
|
923
932
|
readonly amount: {
|
|
@@ -1126,10 +1135,11 @@ export declare const txSchema: readonly [{
|
|
|
1126
1135
|
onNode?: import("../..").Node | undefined;
|
|
1127
1136
|
absoluteTtl?: boolean | undefined;
|
|
1128
1137
|
_isInternalBuild?: boolean | undefined;
|
|
1129
|
-
} & {
|
|
1138
|
+
} & Omit<{
|
|
1130
1139
|
_expectedMineRate?: number | undefined;
|
|
1131
1140
|
_microBlockCycle?: number | undefined;
|
|
1132
|
-
|
|
1141
|
+
onNode: import("../..").Node;
|
|
1142
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1133
1143
|
deserialize(value: Buffer): number;
|
|
1134
1144
|
};
|
|
1135
1145
|
readonly abiVersion: {
|
|
@@ -1204,10 +1214,11 @@ export declare const txSchema: readonly [{
|
|
|
1204
1214
|
onNode?: import("../..").Node | undefined;
|
|
1205
1215
|
absoluteTtl?: boolean | undefined;
|
|
1206
1216
|
_isInternalBuild?: boolean | undefined;
|
|
1207
|
-
} & {
|
|
1217
|
+
} & Omit<{
|
|
1208
1218
|
_expectedMineRate?: number | undefined;
|
|
1209
1219
|
_microBlockCycle?: number | undefined;
|
|
1210
|
-
|
|
1220
|
+
onNode: import("../..").Node;
|
|
1221
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1211
1222
|
deserialize(value: Buffer): number;
|
|
1212
1223
|
};
|
|
1213
1224
|
}, {
|
|
@@ -1294,10 +1305,11 @@ export declare const txSchema: readonly [{
|
|
|
1294
1305
|
onNode?: import("../..").Node | undefined;
|
|
1295
1306
|
absoluteTtl?: boolean | undefined;
|
|
1296
1307
|
_isInternalBuild?: boolean | undefined;
|
|
1297
|
-
} & {
|
|
1308
|
+
} & Omit<{
|
|
1298
1309
|
_expectedMineRate?: number | undefined;
|
|
1299
1310
|
_microBlockCycle?: number | undefined;
|
|
1300
|
-
|
|
1311
|
+
onNode: import("../..").Node;
|
|
1312
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1301
1313
|
deserialize(value: Buffer): number;
|
|
1302
1314
|
};
|
|
1303
1315
|
}, {
|
|
@@ -1365,10 +1377,11 @@ export declare const txSchema: readonly [{
|
|
|
1365
1377
|
onNode?: import("../..").Node | undefined;
|
|
1366
1378
|
absoluteTtl?: boolean | undefined;
|
|
1367
1379
|
_isInternalBuild?: boolean | undefined;
|
|
1368
|
-
} & {
|
|
1380
|
+
} & Omit<{
|
|
1369
1381
|
_expectedMineRate?: number | undefined;
|
|
1370
1382
|
_microBlockCycle?: number | undefined;
|
|
1371
|
-
|
|
1383
|
+
onNode: import("../..").Node;
|
|
1384
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1372
1385
|
deserialize(value: Buffer): number;
|
|
1373
1386
|
};
|
|
1374
1387
|
}, {
|
|
@@ -1414,10 +1427,11 @@ export declare const txSchema: readonly [{
|
|
|
1414
1427
|
onNode?: import("../..").Node | undefined;
|
|
1415
1428
|
absoluteTtl?: boolean | undefined;
|
|
1416
1429
|
_isInternalBuild?: boolean | undefined;
|
|
1417
|
-
} & {
|
|
1430
|
+
} & Omit<{
|
|
1418
1431
|
_expectedMineRate?: number | undefined;
|
|
1419
1432
|
_microBlockCycle?: number | undefined;
|
|
1420
|
-
|
|
1433
|
+
onNode: import("../..").Node;
|
|
1434
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1421
1435
|
deserialize(value: Buffer): number;
|
|
1422
1436
|
};
|
|
1423
1437
|
readonly fee: {
|
|
@@ -1493,10 +1507,11 @@ export declare const txSchema: readonly [{
|
|
|
1493
1507
|
onNode?: import("../..").Node | undefined;
|
|
1494
1508
|
absoluteTtl?: boolean | undefined;
|
|
1495
1509
|
_isInternalBuild?: boolean | undefined;
|
|
1496
|
-
} & {
|
|
1510
|
+
} & Omit<{
|
|
1497
1511
|
_expectedMineRate?: number | undefined;
|
|
1498
1512
|
_microBlockCycle?: number | undefined;
|
|
1499
|
-
|
|
1513
|
+
onNode: import("../..").Node;
|
|
1514
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1500
1515
|
deserialize(value: Buffer): number;
|
|
1501
1516
|
};
|
|
1502
1517
|
readonly fee: {
|
|
@@ -1557,10 +1572,11 @@ export declare const txSchema: readonly [{
|
|
|
1557
1572
|
onNode?: import("../..").Node | undefined;
|
|
1558
1573
|
absoluteTtl?: boolean | undefined;
|
|
1559
1574
|
_isInternalBuild?: boolean | undefined;
|
|
1560
|
-
} & {
|
|
1575
|
+
} & Omit<{
|
|
1561
1576
|
_expectedMineRate?: number | undefined;
|
|
1562
1577
|
_microBlockCycle?: number | undefined;
|
|
1563
|
-
|
|
1578
|
+
onNode: import("../..").Node;
|
|
1579
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1564
1580
|
deserialize(value: Buffer): number;
|
|
1565
1581
|
};
|
|
1566
1582
|
readonly fee: {
|
|
@@ -1621,10 +1637,11 @@ export declare const txSchema: readonly [{
|
|
|
1621
1637
|
onNode?: import("../..").Node | undefined;
|
|
1622
1638
|
absoluteTtl?: boolean | undefined;
|
|
1623
1639
|
_isInternalBuild?: boolean | undefined;
|
|
1624
|
-
} & {
|
|
1640
|
+
} & Omit<{
|
|
1625
1641
|
_expectedMineRate?: number | undefined;
|
|
1626
1642
|
_microBlockCycle?: number | undefined;
|
|
1627
|
-
|
|
1643
|
+
onNode: import("../..").Node;
|
|
1644
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1628
1645
|
deserialize(value: Buffer): number;
|
|
1629
1646
|
};
|
|
1630
1647
|
readonly fee: {
|
|
@@ -1684,10 +1701,11 @@ export declare const txSchema: readonly [{
|
|
|
1684
1701
|
onNode?: import("../..").Node | undefined;
|
|
1685
1702
|
absoluteTtl?: boolean | undefined;
|
|
1686
1703
|
_isInternalBuild?: boolean | undefined;
|
|
1687
|
-
} & {
|
|
1704
|
+
} & Omit<{
|
|
1688
1705
|
_expectedMineRate?: number | undefined;
|
|
1689
1706
|
_microBlockCycle?: number | undefined;
|
|
1690
|
-
|
|
1707
|
+
onNode: import("../..").Node;
|
|
1708
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1691
1709
|
deserialize(value: Buffer): number;
|
|
1692
1710
|
};
|
|
1693
1711
|
readonly fee: {
|
|
@@ -1755,10 +1773,11 @@ export declare const txSchema: readonly [{
|
|
|
1755
1773
|
onNode?: import("../..").Node | undefined;
|
|
1756
1774
|
absoluteTtl?: boolean | undefined;
|
|
1757
1775
|
_isInternalBuild?: boolean | undefined;
|
|
1758
|
-
} & {
|
|
1776
|
+
} & Omit<{
|
|
1759
1777
|
_expectedMineRate?: number | undefined;
|
|
1760
1778
|
_microBlockCycle?: number | undefined;
|
|
1761
|
-
|
|
1779
|
+
onNode: import("../..").Node;
|
|
1780
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1762
1781
|
deserialize(value: Buffer): number;
|
|
1763
1782
|
};
|
|
1764
1783
|
readonly fee: {
|
|
@@ -1830,10 +1849,11 @@ export declare const txSchema: readonly [{
|
|
|
1830
1849
|
onNode?: import("../..").Node | undefined;
|
|
1831
1850
|
absoluteTtl?: boolean | undefined;
|
|
1832
1851
|
_isInternalBuild?: boolean | undefined;
|
|
1833
|
-
} & {
|
|
1852
|
+
} & Omit<{
|
|
1834
1853
|
_expectedMineRate?: number | undefined;
|
|
1835
1854
|
_microBlockCycle?: number | undefined;
|
|
1836
|
-
|
|
1855
|
+
onNode: import("../..").Node;
|
|
1856
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1837
1857
|
deserialize(value: Buffer): number;
|
|
1838
1858
|
};
|
|
1839
1859
|
readonly fee: {
|
|
@@ -1909,10 +1929,11 @@ export declare const txSchema: readonly [{
|
|
|
1909
1929
|
onNode?: import("../..").Node | undefined;
|
|
1910
1930
|
absoluteTtl?: boolean | undefined;
|
|
1911
1931
|
_isInternalBuild?: boolean | undefined;
|
|
1912
|
-
} & {
|
|
1932
|
+
} & Omit<{
|
|
1913
1933
|
_expectedMineRate?: number | undefined;
|
|
1914
1934
|
_microBlockCycle?: number | undefined;
|
|
1915
|
-
|
|
1935
|
+
onNode: import("../..").Node;
|
|
1936
|
+
}, "onNode">): Promise<number | undefined>;
|
|
1916
1937
|
deserialize(value: Buffer): number;
|
|
1917
1938
|
};
|
|
1918
1939
|
readonly fee: {
|
|
@@ -2070,10 +2091,11 @@ export declare const txSchema: readonly [{
|
|
|
2070
2091
|
onNode?: import("../..").Node | undefined;
|
|
2071
2092
|
absoluteTtl?: boolean | undefined;
|
|
2072
2093
|
_isInternalBuild?: boolean | undefined;
|
|
2073
|
-
} & {
|
|
2094
|
+
} & Omit<{
|
|
2074
2095
|
_expectedMineRate?: number | undefined;
|
|
2075
2096
|
_microBlockCycle?: number | undefined;
|
|
2076
|
-
|
|
2097
|
+
onNode: import("../..").Node;
|
|
2098
|
+
}, "onNode">): Promise<number | undefined>;
|
|
2077
2099
|
deserialize(value: Buffer): number;
|
|
2078
2100
|
};
|
|
2079
2101
|
readonly fee: {
|
|
@@ -2798,10 +2820,11 @@ export declare const txSchema: readonly [{
|
|
|
2798
2820
|
onNode?: import("../..").Node | undefined;
|
|
2799
2821
|
absoluteTtl?: boolean | undefined;
|
|
2800
2822
|
_isInternalBuild?: boolean | undefined;
|
|
2801
|
-
} & {
|
|
2823
|
+
} & Omit<{
|
|
2802
2824
|
_expectedMineRate?: number | undefined;
|
|
2803
2825
|
_microBlockCycle?: number | undefined;
|
|
2804
|
-
|
|
2826
|
+
onNode: import("../..").Node;
|
|
2827
|
+
}, "onNode">): Promise<number | undefined>;
|
|
2805
2828
|
deserialize(value: Buffer): number;
|
|
2806
2829
|
};
|
|
2807
2830
|
readonly gasLimit: {
|
package/es/utils/hd-wallet.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import nacl from 'tweetnacl';
|
|
2
|
+
import { Encoded } from './encoder';
|
|
2
3
|
import { CryptographyError } from './errors';
|
|
3
4
|
/**
|
|
4
5
|
* @category exception
|
|
@@ -16,7 +17,7 @@ interface HDWallet {
|
|
|
16
17
|
}
|
|
17
18
|
interface Account {
|
|
18
19
|
secretKey: string;
|
|
19
|
-
publicKey:
|
|
20
|
+
publicKey: Encoded.AccountAddress;
|
|
20
21
|
}
|
|
21
22
|
type Dec<N extends number> = [-1, 0, 1, 2, 3, 4][N];
|
|
22
23
|
type Bip32PathT<MaxLen extends number, H extends 'H' | 'h' | '\''> = MaxLen extends -1 ? `${number}${H}` : Bip32PathT<Dec<MaxLen>, H> | `${Bip32PathT<Dec<MaxLen>, H>}/${number}${H}`;
|