@hiero-ledger/sdk 2.73.2 → 2.74.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/umd.js +250 -115
- package/dist/umd.min.js +3 -3
- package/lib/MirrorNode.cjs +46 -0
- package/lib/MirrorNode.d.ts +16 -0
- package/lib/MirrorNode.js +1 -1
- package/lib/MirrorNode.js.map +1 -1
- package/lib/account/AccountAllowanceApproveTransaction.cjs +11 -5
- package/lib/account/AccountAllowanceApproveTransaction.d.ts +4 -5
- package/lib/account/AccountAllowanceApproveTransaction.js +1 -1
- package/lib/account/AccountAllowanceApproveTransaction.js.map +1 -1
- package/lib/account/TokenAllowance.cjs +4 -2
- package/lib/account/TokenAllowance.d.ts +4 -2
- package/lib/account/TokenAllowance.js +1 -1
- package/lib/account/TokenAllowance.js.map +1 -1
- package/lib/account/TokenTransferMap.cjs +7 -2
- package/lib/account/TokenTransferMap.d.ts +6 -2
- package/lib/account/TokenTransferMap.js +1 -1
- package/lib/account/TokenTransferMap.js.map +1 -1
- package/lib/client/Client.cjs +13 -44
- package/lib/client/Client.d.ts +12 -12
- package/lib/client/Client.js +1 -1
- package/lib/client/Client.js.map +1 -1
- package/lib/client/MirrorNetwork.cjs +16 -0
- package/lib/client/MirrorNetwork.d.ts +7 -0
- package/lib/client/MirrorNetwork.js +1 -1
- package/lib/client/MirrorNetwork.js.map +1 -1
- package/lib/client/addressbooks/mainnet.cjs +1 -1
- package/lib/client/addressbooks/mainnet.d.ts +1 -1
- package/lib/client/addressbooks/mainnet.js +1 -1
- package/lib/client/addressbooks/mainnet.js.map +1 -1
- package/lib/client/addressbooks/previewnet.cjs +1 -1
- package/lib/client/addressbooks/previewnet.d.ts +1 -1
- package/lib/client/addressbooks/previewnet.js +1 -1
- package/lib/client/addressbooks/previewnet.js.map +1 -1
- package/lib/client/addressbooks/testnet.cjs +1 -1
- package/lib/client/addressbooks/testnet.d.ts +1 -1
- package/lib/client/addressbooks/testnet.js +1 -1
- package/lib/client/addressbooks/testnet.js.map +1 -1
- package/lib/constants/ClientConstants.cjs +4 -1
- package/lib/constants/ClientConstants.d.ts +2 -0
- package/lib/constants/ClientConstants.js +1 -1
- package/lib/constants/ClientConstants.js.map +1 -1
- package/lib/contract/ContractId.cjs +2 -5
- package/lib/contract/ContractId.js +1 -1
- package/lib/contract/ContractId.js.map +1 -1
- package/lib/query/MirrorNodeContractQuery.cjs +2 -1
- package/lib/query/MirrorNodeContractQuery.js.map +1 -1
- package/lib/token/AbstractTokenTransferTransaction.cjs +12 -8
- package/lib/token/AbstractTokenTransferTransaction.d.ts +14 -11
- package/lib/token/AbstractTokenTransferTransaction.js +1 -1
- package/lib/token/AbstractTokenTransferTransaction.js.map +1 -1
- package/lib/token/AssessedCustomFee.cjs +8 -4
- package/lib/token/AssessedCustomFee.d.ts +8 -5
- package/lib/token/AssessedCustomFee.js +1 -1
- package/lib/token/AssessedCustomFee.js.map +1 -1
- package/lib/token/CustomFixedFee.cjs +8 -4
- package/lib/token/CustomFixedFee.d.ts +8 -5
- package/lib/token/CustomFixedFee.js +1 -1
- package/lib/token/CustomFixedFee.js.map +1 -1
- package/lib/token/PendingAirdropRecord.cjs +7 -2
- package/lib/token/PendingAirdropRecord.d.ts +6 -2
- package/lib/token/PendingAirdropRecord.js +1 -1
- package/lib/token/PendingAirdropRecord.js.map +1 -1
- package/lib/token/TokenAirdropTransaction.cjs +2 -1
- package/lib/token/TokenAirdropTransaction.d.ts +4 -2
- package/lib/token/TokenAirdropTransaction.js.map +1 -1
- package/lib/token/TokenBurnTransaction.cjs +5 -3
- package/lib/token/TokenBurnTransaction.d.ts +6 -4
- package/lib/token/TokenBurnTransaction.js +1 -1
- package/lib/token/TokenBurnTransaction.js.map +1 -1
- package/lib/token/TokenCreateTransaction.cjs +7 -6
- package/lib/token/TokenCreateTransaction.d.ts +8 -8
- package/lib/token/TokenCreateTransaction.js +1 -1
- package/lib/token/TokenCreateTransaction.js.map +1 -1
- package/lib/token/TokenMintTransaction.cjs +5 -4
- package/lib/token/TokenMintTransaction.d.ts +6 -5
- package/lib/token/TokenMintTransaction.js +1 -1
- package/lib/token/TokenMintTransaction.js.map +1 -1
- package/lib/token/TokenTransfer.cjs +3 -2
- package/lib/token/TokenTransfer.d.ts +2 -2
- package/lib/token/TokenTransfer.js +1 -1
- package/lib/token/TokenTransfer.js.map +1 -1
- package/lib/token/TokenWipeTransaction.cjs +5 -3
- package/lib/token/TokenWipeTransaction.d.ts +6 -4
- package/lib/token/TokenWipeTransaction.js +1 -1
- package/lib/token/TokenWipeTransaction.js.map +1 -1
- package/lib/transaction/Transaction.cjs +54 -0
- package/lib/transaction/Transaction.d.ts +10 -0
- package/lib/transaction/Transaction.js +1 -1
- package/lib/transaction/Transaction.js.map +1 -1
- package/lib/util.cjs +25 -0
- package/lib/util.d.ts +8 -0
- package/lib/util.js +1 -1
- package/lib/util.js.map +1 -1
- package/lib/version.js +1 -1
- package/package.json +12 -8
- package/src/MirrorNode.js +49 -0
- package/src/account/AccountAllowanceApproveTransaction.js +11 -11
- package/src/account/TokenAllowance.js +5 -2
- package/src/account/TokenTransferMap.js +7 -2
- package/src/client/Client.js +13 -51
- package/src/client/MirrorNetwork.js +18 -0
- package/src/client/addressbooks/mainnet.js +1 -1
- package/src/client/addressbooks/previewnet.js +1 -1
- package/src/client/addressbooks/testnet.js +1 -1
- package/src/constants/ClientConstants.js +3 -0
- package/src/contract/ContractId.js +2 -10
- package/src/query/MirrorNodeContractQuery.js +2 -1
- package/src/token/AbstractTokenTransferTransaction.js +12 -8
- package/src/token/AssessedCustomFee.js +8 -5
- package/src/token/CustomFixedFee.js +8 -5
- package/src/token/PendingAirdropRecord.js +7 -2
- package/src/token/TokenAirdropTransaction.js +2 -1
- package/src/token/TokenBurnTransaction.js +5 -3
- package/src/token/TokenCreateTransaction.js +7 -9
- package/src/token/TokenMintTransaction.js +5 -4
- package/src/token/TokenTransfer.js +3 -2
- package/src/token/TokenWipeTransaction.js +5 -3
- package/src/transaction/Transaction.js +63 -0
- package/src/util.js +26 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MirrorNodeContractQuery.js","sources":["../../src/query/MirrorNodeContractQuery.js"],"sourcesContent":["import ContractFunctionParameters from \"../contract/ContractFunctionParameters.js\";\n\n/**\n * @typedef {import(\"../contract/ContractId\").default} ContractId\n * @typedef {import(\"../account/AccountId\").default} AccountId\n * @typedef {import(\"../client/Client.js\").default<*, *>} Client\n *\n */\n\n/**\n * @typedef {object} MirrorNodeResponse\n * @property {string} result\n * @property {string} [error]\n * @property {string} [gasUsed]\n * @property {string} [contractAddress]\n * @property {string} [status]\n */\n\n/**\n * MirrorNodeContractQuery returns a result from EVM execution such as cost-free execution of read-only smart contract\n * queries, gas estimation, and transient simulation of read-write operations.\n * When working with sender that has ECDSA key with alias, you MUST:\n * 1. Retrieve the account's EVM address from the Mirror Node API first\n * 2. Use setSenderEvmAddress() instead of setSender()\n *\n * This is because EVM addresses for accounts with ECDSA keys and aliases cannot be automatically\n * derived and must be fetched from the Mirror Node. Example:\n *\n * ```javascript\n * // For accounts with ECDSA keys and aliases:\n * const evmAddress = // ... fetch from Mirror Node API ...\n * query.setSenderEvmAddress(evmAddress);\n * ```\n */\nexport default class MirrorNodeContractQuery {\n constructor() {\n this._contractId = null;\n this._contractEvmAddress = null;\n this._sender = null;\n this._senderEvmAddress = null;\n this._functionName = null;\n this._functionParameters = null;\n this._value = null;\n this._gasLimit = null;\n this._gasPrice = null;\n this._blockNumber = null;\n }\n\n /**\n *\n * @param {ContractId} contractId\n * @description Sets the contract instance to call.\n * @returns {this}\n */\n setContractId(contractId) {\n this._contractId = contractId;\n return this;\n }\n\n /**\n * @param {AccountId} sender\n * @description Sets the sender of the transaction simulation.\n * @returns {this}\n */\n setSender(sender) {\n this._sender = sender;\n return this;\n }\n\n /**\n * @param {string} sender\n * @description Set the 20-byte EVM address of the sender.\n * This method must be used explicitly when working with accounts that have ECDSA keys with aliases,\n * as their EVM addresses cannot be automatically derived and must be retrieved from the Mirror Node API.\n * The EVM address can be filled using `accountId.populateAccountEvmAddress(client)`\n * @returns {this}\n */\n setSenderEvmAddress(sender) {\n this._senderEvmAddress = sender;\n return this;\n }\n\n /**\n *\n * @param {string} name\n * @param {ContractFunctionParameters} functionParameters\n * @description Sets the function to call, and the parameters to pass to the function\n * @returns {this}\n */\n setFunction(name, functionParameters) {\n this._functionParameters =\n functionParameters != null\n ? functionParameters._build(name)\n : new ContractFunctionParameters()._build(name);\n\n return this;\n }\n\n /**\n * @param {Long} value\n * @description Sets the amount of value (in tinybars or wei) to be sent to the contract in the transaction.\n * Use this to specify an amount for a payable function call.\n * @returns {this}\n */\n setValue(value) {\n this._value = value;\n return this;\n }\n\n /**\n * @param {Long} gasLimit\n * @description Sets the gas limit for the contract call.\n * This specifies the maximum amount of gas that the transaction can consume.\n * @returns {this}\n */\n setGasLimit(gasLimit) {\n this._gasLimit = gasLimit;\n return this;\n }\n\n /**\n * @param {Long} gasPrice\n * @description Sets the gas price to be used for the contract call. This specifies the price of each unit of gas used in the transaction.\n * @returns {this}\n */\n setGasPrice(gasPrice) {\n this._gasPrice = gasPrice;\n return this;\n }\n\n /**\n * @param {Long} blockNumber\n * @description Sets the block number for the simulation of the contract call.\n * The block number determines the context of the contract call simulation within the blockchain.\n * @returns {this}\n */\n setBlockNumber(blockNumber) {\n this._blockNumber = blockNumber;\n return this;\n }\n\n /**\n * @returns {ContractId?}\n */\n get contractId() {\n return this._contractId;\n }\n\n /**\n * @returns {string}\n */\n get contractEvmAddress() {\n const solidityAddress = this._contractId?.toEvmAddress();\n if (solidityAddress == null) {\n throw new Error(\"Contract ID is not set\");\n }\n return solidityAddress;\n }\n\n /**\n * @returns {AccountId?}\n */\n get sender() {\n return this._sender;\n }\n\n /**\n * @returns {string | null }\n */\n get senderEvmAddress() {\n return this._senderEvmAddress;\n }\n\n /**\n * @returns {Uint8Array | null | undefined}\n */\n get callData() {\n return this._functionParameters;\n }\n\n /**\n * @returns {Long?}\n */\n get value() {\n return this._value;\n }\n\n /**\n * @returns {Long?}\n */\n get gasLimit() {\n return this._gasLimit;\n }\n\n /**\n * @returns {Long?}\n */\n get gasPrice() {\n return this._gasPrice;\n }\n\n /**\n * @returns {Long?}\n */\n get blockNumber() {\n return this._blockNumber;\n }\n\n /**\n *\n * @param {Client} client\n * @param {object} jsonPayload\n * @returns {Promise<MirrorNodeResponse>}\n */\n async performMirrorNodeRequest(client, jsonPayload) {\n if (this.contractId == null) {\n throw new Error(\"Contract ID is not set\");\n }\n this._fillEvmAddress();\n let mirrorRestApiBaseUrl = client.mirrorRestApiBaseUrl;\n const contractCallEndpointPath = \"/contracts/call\";\n\n // Check if this is a local environment (localhost or 127.0.0.1)\n const mirrorNode = client._mirrorNetwork.getNextMirrorNode();\n const host = mirrorNode.address.address;\n const isLocalEnvironment = host === \"localhost\" || host === \"127.0.0.1\";\n\n if (isLocalEnvironment) {\n // For local environments, use HTTP scheme and port 8545\n const url = new URL(mirrorRestApiBaseUrl);\n url.protocol = \"http:\";\n url.port = \"8545\";\n mirrorRestApiBaseUrl = url.toString();\n }\n\n const contractCallEndpointUrl = `${mirrorRestApiBaseUrl}${contractCallEndpointPath}`;\n\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n const response = await fetch(contractCallEndpointUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(jsonPayload),\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const data = /** @type {MirrorNodeResponse} */ (await response.json());\n return data;\n }\n\n _fillEvmAddress() {\n if (this.senderEvmAddress == null && this.sender != null) {\n this._senderEvmAddress = this.sender.toEvmAddress();\n }\n }\n // eslint-disable-next-line jsdoc/require-returns-check\n /**\n * @returns {object}\n */\n get JSONPayload() {\n throw new Error(\n \"JSONPayload getter is not implemented. Please implement this method in the subclass.\",\n );\n }\n}\n"],"names":["MirrorNodeContractQuery","constructor","this","_contractId","_contractEvmAddress","_sender","_senderEvmAddress","_functionName","_functionParameters","_value","_gasLimit","_gasPrice","_blockNumber","setContractId","contractId","setSender","sender","setSenderEvmAddress","setFunction","name","functionParameters","_build","ContractFunctionParameters","setValue","value","setGasLimit","gasLimit","setGasPrice","gasPrice","setBlockNumber","blockNumber","contractEvmAddress","solidityAddress","toEvmAddress","Error","senderEvmAddress","callData","performMirrorNodeRequest","client","jsonPayload","_fillEvmAddress","mirrorRestApiBaseUrl","host","_mirrorNetwork","getNextMirrorNode","address","url","URL","protocol","port","toString","contractCallEndpointUrl","response","fetch","method","headers","body","JSON","stringify","ok","status","json","JSONPayload"],"mappings":"yDAkCe,MAAMA,EACjB,WAAAC,GACIC,KAAKC,YAAc,KACnBD,KAAKE,oBAAsB,KAC3BF,KAAKG,QAAU,KACfH,KAAKI,kBAAoB,KACzBJ,KAAKK,cAAgB,KACrBL,KAAKM,oBAAsB,KAC3BN,KAAKO,OAAS,KACdP,KAAKQ,UAAY,KACjBR,KAAKS,UAAY,KACjBT,KAAKU,aAAe,IAC5B,CAQI,aAAAC,CAAcC,GAEV,OADAZ,KAAKC,YAAcW,EACZZ,IACf,CAOI,SAAAa,CAAUC,GAEN,OADAd,KAAKG,QAAUW,EACRd,IACf,CAUI,mBAAAe,CAAoBD,GAEhB,OADAd,KAAKI,kBAAoBU,EAClBd,IACf,CASI,WAAAgB,CAAYC,EAAMC,GAMd,OALAlB,KAAKM,oBACqB,MAAtBY,EACMA,EAAmBC,OAAOF,IAC1B,IAAIG,GAA6BD,OAAOF,GAE3CjB,IACf,CAQI,QAAAqB,CAASC,GAEL,OADAtB,KAAKO,OAASe,EACPtB,IACf,CAQI,WAAAuB,CAAYC,GAER,OADAxB,KAAKQ,UAAYgB,EACVxB,IACf,CAOI,WAAAyB,CAAYC,GAER,OADA1B,KAAKS,UAAYiB,EACV1B,IACf,CAQI,cAAA2B,CAAeC,GAEX,OADA5B,KAAKU,aAAekB,EACb5B,IACf,CAKI,cAAIY,GACA,OAAOZ,KAAKC,WACpB,CAKI,sBAAI4B,GACA,MAAMC,EAAkB9B,KAAKC,aAAa8B,eAC1C,GAAuB,MAAnBD,EACA,MAAM,IAAIE,MAAM,0BAEpB,OAAOF,CACf,CAKI,UAAIhB,GACA,OAAOd,KAAKG,OACpB,CAKI,oBAAI8B,GACA,OAAOjC,KAAKI,iBACpB,CAKI,YAAI8B,GACA,OAAOlC,KAAKM,mBACpB,CAKI,SAAIgB,GACA,OAAOtB,KAAKO,MACpB,CAKI,YAAIiB,GACA,OAAOxB,KAAKQ,SACpB,CAKI,YAAIkB,GACA,OAAO1B,KAAKS,SACpB,CAKI,eAAImB,GACA,OAAO5B,KAAKU,YACpB,CAQI,8BAAMyB,CAAyBC,EAAQC,GACnC,GAAuB,MAAnBrC,KAAKY,WACL,MAAM,IAAIoB,MAAM,0BAEpBhC,KAAKsC,kBACL,IAAIC,EAAuBH,EAAOG,qBAClC,MAIMC,EADaJ,EAAOK,eAAeC,oBACjBC,QAAQA,QAGhC,GAFoC,cAATH,GAAiC,cAATA,EAE3B,CAEpB,MAAMI,EAAM,IAAIC,IAAIN,GACpBK,EAAIE,SAAW,QACfF,EAAIG,KAAO,OACXR,EAAuBK,EAAII,UACvC,CAEQ,MAAMC,EAA0B,GAAGV,mBAG7BW,QAAiBC,MAAMF,EAAyB,CAClDG,OAAQ,OACRC,QAAS,CACL,eAAgB,oBAEpBC,KAAMC,KAAKC,UAAUnB,KAGzB,IAAKa,EAASO,GACV,MAAM,IAAIzB,MAAM,uBAAuBkB,EAASQ,UAKpD,aADsDR,EAASS,MAEvE,CAEI,eAAArB,GACiC,MAAzBtC,KAAKiC,kBAA2C,MAAfjC,KAAKc,SACtCd,KAAKI,kBAAoBJ,KAAKc,OAAOiB,eAEjD,CAKI,eAAI6B,GACA,MAAM,IAAI5B,MACN,uFAEZ"}
|
|
1
|
+
{"version":3,"file":"MirrorNodeContractQuery.js","sources":["../../src/query/MirrorNodeContractQuery.js"],"sourcesContent":["import ContractFunctionParameters from \"../contract/ContractFunctionParameters.js\";\n\n/**\n * @typedef {import(\"../contract/ContractId\").default} ContractId\n * @typedef {import(\"../account/AccountId\").default} AccountId\n * @typedef {import(\"../client/Client.js\").default<*, *>} Client\n *\n */\n\n/**\n * @typedef {object} MirrorNodeResponse\n * @property {string} result\n * @property {string} [error]\n * @property {string} [gasUsed]\n * @property {string} [contractAddress]\n * @property {string} [status]\n */\n\n/**\n * MirrorNodeContractQuery returns a result from EVM execution such as cost-free execution of read-only smart contract\n * queries, gas estimation, and transient simulation of read-write operations.\n * When working with sender that has ECDSA key with alias, you MUST:\n * 1. Retrieve the account's EVM address from the Mirror Node API first\n * 2. Use setSenderEvmAddress() instead of setSender()\n *\n * This is because EVM addresses for accounts with ECDSA keys and aliases cannot be automatically\n * derived and must be fetched from the Mirror Node. Example:\n *\n * ```javascript\n * // For accounts with ECDSA keys and aliases:\n * const evmAddress = // ... fetch from Mirror Node API ...\n * query.setSenderEvmAddress(evmAddress);\n * ```\n */\nexport default class MirrorNodeContractQuery {\n constructor() {\n this._contractId = null;\n this._contractEvmAddress = null;\n this._sender = null;\n this._senderEvmAddress = null;\n this._functionName = null;\n this._functionParameters = null;\n this._value = null;\n this._gasLimit = null;\n this._gasPrice = null;\n this._blockNumber = null;\n }\n\n /**\n *\n * @param {ContractId} contractId\n * @description Sets the contract instance to call.\n * @returns {this}\n */\n setContractId(contractId) {\n this._contractId = contractId;\n return this;\n }\n\n /**\n * @param {AccountId} sender\n * @description Sets the sender of the transaction simulation.\n * @returns {this}\n */\n setSender(sender) {\n this._sender = sender;\n return this;\n }\n\n /**\n * @param {string} sender\n * @description Set the 20-byte EVM address of the sender.\n * This method must be used explicitly when working with accounts that have ECDSA keys with aliases,\n * as their EVM addresses cannot be automatically derived and must be retrieved from the Mirror Node API.\n * The EVM address can be filled using `accountId.populateAccountEvmAddress(client)`\n * @returns {this}\n */\n setSenderEvmAddress(sender) {\n this._senderEvmAddress = sender;\n return this;\n }\n\n /**\n *\n * @param {string} name\n * @param {ContractFunctionParameters} functionParameters\n * @description Sets the function to call, and the parameters to pass to the function\n * @returns {this}\n */\n setFunction(name, functionParameters) {\n this._functionParameters =\n functionParameters != null\n ? functionParameters._build(name)\n : new ContractFunctionParameters()._build(name);\n\n return this;\n }\n\n /**\n * @param {Long} value\n * @description Sets the amount of value (in tinybars or wei) to be sent to the contract in the transaction.\n * Use this to specify an amount for a payable function call.\n * @returns {this}\n */\n setValue(value) {\n this._value = value;\n return this;\n }\n\n /**\n * @param {Long} gasLimit\n * @description Sets the gas limit for the contract call.\n * This specifies the maximum amount of gas that the transaction can consume.\n * @returns {this}\n */\n setGasLimit(gasLimit) {\n this._gasLimit = gasLimit;\n return this;\n }\n\n /**\n * @param {Long} gasPrice\n * @description Sets the gas price to be used for the contract call. This specifies the price of each unit of gas used in the transaction.\n * @returns {this}\n */\n setGasPrice(gasPrice) {\n this._gasPrice = gasPrice;\n return this;\n }\n\n /**\n * @param {Long} blockNumber\n * @description Sets the block number for the simulation of the contract call.\n * The block number determines the context of the contract call simulation within the blockchain.\n * @returns {this}\n */\n setBlockNumber(blockNumber) {\n this._blockNumber = blockNumber;\n return this;\n }\n\n /**\n * @returns {ContractId?}\n */\n get contractId() {\n return this._contractId;\n }\n\n /**\n * @returns {string}\n */\n get contractEvmAddress() {\n const solidityAddress = this._contractId?.toEvmAddress();\n if (solidityAddress == null) {\n throw new Error(\"Contract ID is not set\");\n }\n return solidityAddress;\n }\n\n /**\n * @returns {AccountId?}\n */\n get sender() {\n return this._sender;\n }\n\n /**\n * @returns {string | null }\n */\n get senderEvmAddress() {\n return this._senderEvmAddress;\n }\n\n /**\n * @returns {Uint8Array | null | undefined}\n */\n get callData() {\n return this._functionParameters;\n }\n\n /**\n * @returns {Long?}\n */\n get value() {\n return this._value;\n }\n\n /**\n * @returns {Long?}\n */\n get gasLimit() {\n return this._gasLimit;\n }\n\n /**\n * @returns {Long?}\n */\n get gasPrice() {\n return this._gasPrice;\n }\n\n /**\n * @returns {Long?}\n */\n get blockNumber() {\n return this._blockNumber;\n }\n\n /**\n *\n * @param {Client} client\n * @param {object} jsonPayload\n * @returns {Promise<MirrorNodeResponse>}\n */\n async performMirrorNodeRequest(client, jsonPayload) {\n if (this.contractId == null) {\n throw new Error(\"Contract ID is not set\");\n }\n this._fillEvmAddress();\n let mirrorRestApiBaseUrl = client.mirrorRestApiBaseUrl;\n const contractCallEndpointPath = \"/contracts/call\";\n\n // Check if this is a local environment (localhost or 127.0.0.1)\n const mirrorNode = client._mirrorNetwork.getNextMirrorNode();\n const host = mirrorNode.address.address;\n const isLocalEnvironment = host === \"localhost\" || host === \"127.0.0.1\";\n\n if (isLocalEnvironment) {\n // For local environments, use HTTP scheme and port 8545 for contract calls\n // (different from general mirror node REST API port 5551)\n const url = new URL(mirrorRestApiBaseUrl);\n url.protocol = \"http:\";\n url.port = \"8545\";\n mirrorRestApiBaseUrl = url.toString();\n }\n\n const contractCallEndpointUrl = `${mirrorRestApiBaseUrl}${contractCallEndpointPath}`;\n\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n const response = await fetch(contractCallEndpointUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(jsonPayload),\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const data = /** @type {MirrorNodeResponse} */ (await response.json());\n return data;\n }\n\n _fillEvmAddress() {\n if (this.senderEvmAddress == null && this.sender != null) {\n this._senderEvmAddress = this.sender.toEvmAddress();\n }\n }\n // eslint-disable-next-line jsdoc/require-returns-check\n /**\n * @returns {object}\n */\n get JSONPayload() {\n throw new Error(\n \"JSONPayload getter is not implemented. Please implement this method in the subclass.\",\n );\n }\n}\n"],"names":["MirrorNodeContractQuery","constructor","this","_contractId","_contractEvmAddress","_sender","_senderEvmAddress","_functionName","_functionParameters","_value","_gasLimit","_gasPrice","_blockNumber","setContractId","contractId","setSender","sender","setSenderEvmAddress","setFunction","name","functionParameters","_build","ContractFunctionParameters","setValue","value","setGasLimit","gasLimit","setGasPrice","gasPrice","setBlockNumber","blockNumber","contractEvmAddress","solidityAddress","toEvmAddress","Error","senderEvmAddress","callData","performMirrorNodeRequest","client","jsonPayload","_fillEvmAddress","mirrorRestApiBaseUrl","host","_mirrorNetwork","getNextMirrorNode","address","url","URL","protocol","port","toString","contractCallEndpointUrl","response","fetch","method","headers","body","JSON","stringify","ok","status","json","JSONPayload"],"mappings":"yDAkCe,MAAMA,EACjB,WAAAC,GACIC,KAAKC,YAAc,KACnBD,KAAKE,oBAAsB,KAC3BF,KAAKG,QAAU,KACfH,KAAKI,kBAAoB,KACzBJ,KAAKK,cAAgB,KACrBL,KAAKM,oBAAsB,KAC3BN,KAAKO,OAAS,KACdP,KAAKQ,UAAY,KACjBR,KAAKS,UAAY,KACjBT,KAAKU,aAAe,IAC5B,CAQI,aAAAC,CAAcC,GAEV,OADAZ,KAAKC,YAAcW,EACZZ,IACf,CAOI,SAAAa,CAAUC,GAEN,OADAd,KAAKG,QAAUW,EACRd,IACf,CAUI,mBAAAe,CAAoBD,GAEhB,OADAd,KAAKI,kBAAoBU,EAClBd,IACf,CASI,WAAAgB,CAAYC,EAAMC,GAMd,OALAlB,KAAKM,oBACqB,MAAtBY,EACMA,EAAmBC,OAAOF,IAC1B,IAAIG,GAA6BD,OAAOF,GAE3CjB,IACf,CAQI,QAAAqB,CAASC,GAEL,OADAtB,KAAKO,OAASe,EACPtB,IACf,CAQI,WAAAuB,CAAYC,GAER,OADAxB,KAAKQ,UAAYgB,EACVxB,IACf,CAOI,WAAAyB,CAAYC,GAER,OADA1B,KAAKS,UAAYiB,EACV1B,IACf,CAQI,cAAA2B,CAAeC,GAEX,OADA5B,KAAKU,aAAekB,EACb5B,IACf,CAKI,cAAIY,GACA,OAAOZ,KAAKC,WACpB,CAKI,sBAAI4B,GACA,MAAMC,EAAkB9B,KAAKC,aAAa8B,eAC1C,GAAuB,MAAnBD,EACA,MAAM,IAAIE,MAAM,0BAEpB,OAAOF,CACf,CAKI,UAAIhB,GACA,OAAOd,KAAKG,OACpB,CAKI,oBAAI8B,GACA,OAAOjC,KAAKI,iBACpB,CAKI,YAAI8B,GACA,OAAOlC,KAAKM,mBACpB,CAKI,SAAIgB,GACA,OAAOtB,KAAKO,MACpB,CAKI,YAAIiB,GACA,OAAOxB,KAAKQ,SACpB,CAKI,YAAIkB,GACA,OAAO1B,KAAKS,SACpB,CAKI,eAAImB,GACA,OAAO5B,KAAKU,YACpB,CAQI,8BAAMyB,CAAyBC,EAAQC,GACnC,GAAuB,MAAnBrC,KAAKY,WACL,MAAM,IAAIoB,MAAM,0BAEpBhC,KAAKsC,kBACL,IAAIC,EAAuBH,EAAOG,qBAClC,MAIMC,EADaJ,EAAOK,eAAeC,oBACjBC,QAAQA,QAGhC,GAFoC,cAATH,GAAiC,cAATA,EAE3B,CAGpB,MAAMI,EAAM,IAAIC,IAAIN,GACpBK,EAAIE,SAAW,QACfF,EAAIG,KAAO,OACXR,EAAuBK,EAAII,UACvC,CAEQ,MAAMC,EAA0B,GAAGV,mBAG7BW,QAAiBC,MAAMF,EAAyB,CAClDG,OAAQ,OACRC,QAAS,CACL,eAAgB,oBAEpBC,KAAMC,KAAKC,UAAUnB,KAGzB,IAAKa,EAASO,GACV,MAAM,IAAIzB,MAAM,uBAAuBkB,EAASQ,UAKpD,aADsDR,EAASS,MAEvE,CAEI,eAAArB,GACiC,MAAzBtC,KAAKiC,kBAA2C,MAAfjC,KAAKc,SACtCd,KAAKI,kBAAoBJ,KAAKc,OAAOiB,eAEjD,CAKI,eAAI6B,GACA,MAAM,IAAI5B,MACN,uFAEZ"}
|
|
@@ -10,14 +10,18 @@ var _TokenId = _interopRequireDefault(require("./TokenId.cjs"));
|
|
|
10
10
|
var _NftId = _interopRequireDefault(require("./NftId.cjs"));
|
|
11
11
|
var _AccountId = _interopRequireDefault(require("../account/AccountId.cjs"));
|
|
12
12
|
var _Transaction = _interopRequireDefault(require("../transaction/Transaction.cjs"));
|
|
13
|
-
var _long = _interopRequireDefault(require("long"));
|
|
14
13
|
var _NullableTokenDecimalMap = _interopRequireDefault(require("../account/NullableTokenDecimalMap.cjs"));
|
|
15
14
|
var _TokenNftTransferMap = _interopRequireDefault(require("../account/TokenNftTransferMap.cjs"));
|
|
16
15
|
var _TokenTransferMap = _interopRequireDefault(require("../account/TokenTransferMap.cjs"));
|
|
17
16
|
var _TokenTransferAccountMap = _interopRequireDefault(require("../account/TokenTransferAccountMap.cjs"));
|
|
17
|
+
var _util = require("../util.cjs");
|
|
18
18
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
19
|
// SPDX-License-Identifier: Apache-2.0
|
|
20
20
|
|
|
21
|
+
/**
|
|
22
|
+
* @typedef {import("bignumber.js").default} BigNumber
|
|
23
|
+
*/
|
|
24
|
+
|
|
21
25
|
/**
|
|
22
26
|
* @namespace proto
|
|
23
27
|
* @typedef {import("@hashgraph/proto").proto.ITokenAirdropTransactionBody} HieroProto.proto.ITokenAirdropTransactionBody
|
|
@@ -27,7 +31,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
27
31
|
* @typedef {object} TransferTokensInput
|
|
28
32
|
* @property {TokenId | string} tokenId
|
|
29
33
|
* @property {AccountId | string} accountId
|
|
30
|
-
* @property {Long | number} amount
|
|
34
|
+
* @property {Long | number | BigNumber | bigint} amount
|
|
31
35
|
*/
|
|
32
36
|
|
|
33
37
|
/**
|
|
@@ -80,7 +84,7 @@ class AbstractTokenTransferTransaction extends _Transaction.default {
|
|
|
80
84
|
/**
|
|
81
85
|
* @param {TokenId | string} tokenId
|
|
82
86
|
* @param {AccountId | string} accountId
|
|
83
|
-
* @param {number | Long} amount
|
|
87
|
+
* @param {number | Long | BigNumber | bigint} amount
|
|
84
88
|
* @param {boolean} isApproved
|
|
85
89
|
* @param {number | null} expectedDecimals
|
|
86
90
|
* @returns {this}
|
|
@@ -89,7 +93,7 @@ class AbstractTokenTransferTransaction extends _Transaction.default {
|
|
|
89
93
|
this._requireNotFrozen();
|
|
90
94
|
const token = tokenId instanceof _TokenId.default ? tokenId : _TokenId.default.fromString(tokenId);
|
|
91
95
|
const account = accountId instanceof _AccountId.default ? accountId : _AccountId.default.fromString(accountId);
|
|
92
|
-
const value =
|
|
96
|
+
const value = (0, _util.convertAmountToLong)(amount);
|
|
93
97
|
for (const tokenTransfer of this._tokenTransfers) {
|
|
94
98
|
if (tokenTransfer.tokenId.compare(token) === 0 && tokenTransfer.accountId.compare(account) === 0) {
|
|
95
99
|
tokenTransfer.amount = tokenTransfer.amount.add(value);
|
|
@@ -110,7 +114,7 @@ class AbstractTokenTransferTransaction extends _Transaction.default {
|
|
|
110
114
|
/**
|
|
111
115
|
* @param {TokenId | string} tokenId
|
|
112
116
|
* @param {AccountId | string} accountId
|
|
113
|
-
* @param {number | Long} amount
|
|
117
|
+
* @param {number | Long | BigNumber | bigint} amount
|
|
114
118
|
* @returns {this}
|
|
115
119
|
*/
|
|
116
120
|
addTokenTransfer(tokenId, accountId, amount) {
|
|
@@ -186,7 +190,7 @@ class AbstractTokenTransferTransaction extends _Transaction.default {
|
|
|
186
190
|
/**
|
|
187
191
|
* @param {TokenId | string} tokenId
|
|
188
192
|
* @param {AccountId | string} accountId
|
|
189
|
-
* @param {number | Long} amount
|
|
193
|
+
* @param {number | Long | BigNumber | bigint} amount
|
|
190
194
|
* @returns {this}
|
|
191
195
|
*/
|
|
192
196
|
addApprovedTokenTransfer(tokenId, accountId, amount) {
|
|
@@ -196,7 +200,7 @@ class AbstractTokenTransferTransaction extends _Transaction.default {
|
|
|
196
200
|
/**
|
|
197
201
|
* @param {TokenId | string} tokenId
|
|
198
202
|
* @param {AccountId | string} accountId
|
|
199
|
-
* @param {number | Long} amount
|
|
203
|
+
* @param {number | Long | BigNumber | bigint} amount
|
|
200
204
|
* @param {number} decimals
|
|
201
205
|
* @returns {this}
|
|
202
206
|
*/
|
|
@@ -204,7 +208,7 @@ class AbstractTokenTransferTransaction extends _Transaction.default {
|
|
|
204
208
|
this._requireNotFrozen();
|
|
205
209
|
const token = tokenId instanceof _TokenId.default ? tokenId : _TokenId.default.fromString(tokenId);
|
|
206
210
|
const account = accountId instanceof _AccountId.default ? accountId : _AccountId.default.fromString(accountId);
|
|
207
|
-
const value =
|
|
211
|
+
const value = (0, _util.convertAmountToLong)(amount);
|
|
208
212
|
let found = false;
|
|
209
213
|
for (const tokenTransfer of this._tokenTransfers) {
|
|
210
214
|
if (tokenTransfer.tokenId.compare(token) === 0) {
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {import("bignumber.js").default} BigNumber
|
|
3
|
+
*/
|
|
1
4
|
/**
|
|
2
5
|
* @namespace proto
|
|
3
6
|
* @typedef {import("@hashgraph/proto").proto.ITokenAirdropTransactionBody} HieroProto.proto.ITokenAirdropTransactionBody
|
|
@@ -6,7 +9,7 @@
|
|
|
6
9
|
* @typedef {object} TransferTokensInput
|
|
7
10
|
* @property {TokenId | string} tokenId
|
|
8
11
|
* @property {AccountId | string} accountId
|
|
9
|
-
* @property {Long | number} amount
|
|
12
|
+
* @property {Long | number | BigNumber | bigint} amount
|
|
10
13
|
*/
|
|
11
14
|
/**
|
|
12
15
|
* @typedef {object} TransferNftInput
|
|
@@ -46,19 +49,19 @@ export default class AbstractTokenTransferTransaction extends Transaction {
|
|
|
46
49
|
/**
|
|
47
50
|
* @param {TokenId | string} tokenId
|
|
48
51
|
* @param {AccountId | string} accountId
|
|
49
|
-
* @param {number | Long} amount
|
|
52
|
+
* @param {number | Long | BigNumber | bigint} amount
|
|
50
53
|
* @param {boolean} isApproved
|
|
51
54
|
* @param {number | null} expectedDecimals
|
|
52
55
|
* @returns {this}
|
|
53
56
|
*/
|
|
54
|
-
_addTokenTransfer(tokenId: TokenId | string, accountId: AccountId | string, amount: number | Long, isApproved: boolean, expectedDecimals: number | null): this;
|
|
57
|
+
_addTokenTransfer(tokenId: TokenId | string, accountId: AccountId | string, amount: number | Long | BigNumber | bigint, isApproved: boolean, expectedDecimals: number | null): this;
|
|
55
58
|
/**
|
|
56
59
|
* @param {TokenId | string} tokenId
|
|
57
60
|
* @param {AccountId | string} accountId
|
|
58
|
-
* @param {number | Long} amount
|
|
61
|
+
* @param {number | Long | BigNumber | bigint} amount
|
|
59
62
|
* @returns {this}
|
|
60
63
|
*/
|
|
61
|
-
addTokenTransfer(tokenId: TokenId | string, accountId: AccountId | string, amount: number | Long): this;
|
|
64
|
+
addTokenTransfer(tokenId: TokenId | string, accountId: AccountId | string, amount: number | Long | BigNumber | bigint): this;
|
|
62
65
|
/**
|
|
63
66
|
* @param {boolean} isApproved
|
|
64
67
|
* @param {NftId | TokenId | string} tokenIdOrNftId
|
|
@@ -79,18 +82,18 @@ export default class AbstractTokenTransferTransaction extends Transaction {
|
|
|
79
82
|
/**
|
|
80
83
|
* @param {TokenId | string} tokenId
|
|
81
84
|
* @param {AccountId | string} accountId
|
|
82
|
-
* @param {number | Long} amount
|
|
85
|
+
* @param {number | Long | BigNumber | bigint} amount
|
|
83
86
|
* @returns {this}
|
|
84
87
|
*/
|
|
85
|
-
addApprovedTokenTransfer(tokenId: TokenId | string, accountId: AccountId | string, amount: number | Long): this;
|
|
88
|
+
addApprovedTokenTransfer(tokenId: TokenId | string, accountId: AccountId | string, amount: number | Long | BigNumber | bigint): this;
|
|
86
89
|
/**
|
|
87
90
|
* @param {TokenId | string} tokenId
|
|
88
91
|
* @param {AccountId | string} accountId
|
|
89
|
-
* @param {number | Long} amount
|
|
92
|
+
* @param {number | Long | BigNumber | bigint} amount
|
|
90
93
|
* @param {number} decimals
|
|
91
94
|
* @returns {this}
|
|
92
95
|
*/
|
|
93
|
-
addTokenTransferWithDecimals(tokenId: TokenId | string, accountId: AccountId | string, amount: number | Long, decimals: number): this;
|
|
96
|
+
addTokenTransferWithDecimals(tokenId: TokenId | string, accountId: AccountId | string, amount: number | Long | BigNumber | bigint, decimals: number): this;
|
|
94
97
|
/**
|
|
95
98
|
* @returns {NullableTokenDecimalMap}
|
|
96
99
|
*/
|
|
@@ -110,6 +113,7 @@ export default class AbstractTokenTransferTransaction extends Transaction {
|
|
|
110
113
|
*/
|
|
111
114
|
protected override _makeTransactionData(): HieroProto.proto.ITokenAirdropTransactionBody;
|
|
112
115
|
}
|
|
116
|
+
export type BigNumber = import("bignumber.js").default;
|
|
113
117
|
export namespace HieroProto {
|
|
114
118
|
namespace proto {
|
|
115
119
|
type ITokenAirdropTransactionBody = import("@hashgraph/proto").proto.ITokenAirdropTransactionBody;
|
|
@@ -118,7 +122,7 @@ export namespace HieroProto {
|
|
|
118
122
|
export type TransferTokensInput = {
|
|
119
123
|
tokenId: TokenId | string;
|
|
120
124
|
accountId: AccountId | string;
|
|
121
|
-
amount: Long | number;
|
|
125
|
+
amount: Long | number | BigNumber | bigint;
|
|
122
126
|
};
|
|
123
127
|
export type TransferNftInput = {
|
|
124
128
|
tokenId: TokenId | string;
|
|
@@ -132,7 +136,6 @@ import TokenNftTransfer from "../token/TokenNftTransfer.js";
|
|
|
132
136
|
import NftId from "./NftId.js";
|
|
133
137
|
import TokenId from "./TokenId.js";
|
|
134
138
|
import AccountId from "../account/AccountId.js";
|
|
135
|
-
import Long from "long";
|
|
136
139
|
import NullableTokenDecimalMap from "../account/NullableTokenDecimalMap.js";
|
|
137
140
|
import TokenNftTransferMap from "../account/TokenNftTransferMap.js";
|
|
138
141
|
import TokenTransferMap from "../account/TokenTransferMap.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"./TokenTransfer.js";import n from"./TokenNftTransfer.js";import t from"./TokenId.js";import r from"./NftId.js";import s from"../account/AccountId.js";import o from"../transaction/Transaction.js";import a from"
|
|
1
|
+
import e from"./TokenTransfer.js";import n from"./TokenNftTransfer.js";import t from"./TokenId.js";import r from"./NftId.js";import s from"../account/AccountId.js";import o from"../transaction/Transaction.js";import a from"../account/NullableTokenDecimalMap.js";import f from"../account/TokenNftTransferMap.js";import c from"../account/TokenTransferMap.js";import i from"../account/TokenTransferAccountMap.js";import{convertAmountToLong as d}from"../util.js";class u extends o{constructor(e={}){super(),this._tokenTransfers=[],this._nftTransfers=[];for(const n of null!=e.tokenTransfers?e.tokenTransfers:[])this.addTokenTransfer(n.tokenId,n.accountId,n.amount);for(const n of null!=e.nftTransfers?e.nftTransfers:[])this.addNftTransfer(n.tokenId,n.serial,n.sender,n.recipient)}addNftTransfer(e,n,t,r){return this._addNftTransfer(!1,e,n,t,r)}_addTokenTransfer(n,r,o,a,f){this._requireNotFrozen();const c=n instanceof t?n:t.fromString(n),i=r instanceof s?r:s.fromString(r),u=d(o);for(const e of this._tokenTransfers)if(0===e.tokenId.compare(c)&&0===e.accountId.compare(i))return e.amount=e.amount.add(u),e.expectedDecimals=f,this;return this._tokenTransfers.push(new e({tokenId:n,accountId:r,expectedDecimals:f,amount:o,isApproved:a})),this}addTokenTransfer(e,n,t){return this._addTokenTransfer(e,n,t,!1,null)}_addNftTransfer(e,o,a,f,c){let i,d,u;if(this._requireNotFrozen(),o instanceof r)i=o,d="string"==typeof a?s.fromString(a):a,u="string"==typeof f?s.fromString(f):f;else if(o instanceof t)i=new r(o,a),d="string"==typeof f?s.fromString(f):f,u="string"==typeof c?s.fromString(c):c;else try{i=r.fromString(o),d="string"==typeof a?s.fromString(a):a,u="string"==typeof f?s.fromString(f):f}catch(e){const n=t.fromString(o);i=new r(n,a),d="string"==typeof f?s.fromString(f):f,u="string"==typeof c?s.fromString(c):c}for(const e of this._nftTransfers)if(0===e.tokenId.compare(i.tokenId)&&0===e.serialNumber.compare(i.serial))return e.senderAccountId=d,e.receiverAccountId=u,this;return this._nftTransfers.push(new n({tokenId:i.tokenId,serialNumber:i.serial,senderAccountId:d,receiverAccountId:u,isApproved:e})),this}addApprovedNftTransfer(e,n,t,r){return this._addNftTransfer(!0,e,n,t,r)}addApprovedTokenTransfer(e,n,t){return this._addTokenTransfer(e,n,t,!0,null)}addTokenTransferWithDecimals(n,r,o,a){this._requireNotFrozen();const f=n instanceof t?n:t.fromString(n),c=r instanceof s?r:s.fromString(r),i=d(o);let u=!1;for(const e of this._tokenTransfers)if(0===e.tokenId.compare(f)){if(null!=e.expectedDecimals&&e.expectedDecimals!==a)throw new Error("expected decimals mis-match");e.expectedDecimals=a,0===e.accountId.compare(c)&&(e.amount=e.amount.add(i),e.expectedDecimals=a,u=!0)}return u||this._tokenTransfers.push(new e({tokenId:n,accountId:r,expectedDecimals:a,amount:o,isApproved:!1})),this}get tokenIdDecimals(){const e=new a;for(const n of this._tokenTransfers)e._set(n.tokenId,n.expectedDecimals);return e}get nftTransfers(){const e=new f;for(const n of this._nftTransfers){const t=e.get(n.tokenId),r={sender:n.senderAccountId,recipient:n.receiverAccountId,serial:n.serialNumber,isApproved:n.isApproved};null!=t?t.push(r):e._set(n.tokenId,[r])}return e}get tokenTransfers(){const e=new c;for(const n of this._tokenTransfers){let t=e.get(n.tokenId);null!=t?t._set(n.accountId,n.amount):(t=new i,t._set(n.accountId,n.amount),e._set(n.tokenId,t))}return e}_makeTransactionData(){const e=[];this._tokenTransfers.sort((e,n)=>{const t=e.tokenId.compare(n.tokenId);return 0!==t?t:e.accountId.compare(n.accountId)}),this._nftTransfers.sort((e,n)=>{const t=e.senderAccountId.compare(n.senderAccountId);if(0!=t)return t;const r=e.receiverAccountId.compare(n.receiverAccountId);return 0!=r?r:e.serialNumber.compare(n.serialNumber)});let n=0,t=0;for(;n<this._tokenTransfers.length||t<this._nftTransfers.length;)if(n<this._tokenTransfers.length&&t<this._nftTransfers.length){const r=this._tokenTransfers[n].tokenId,s=this._nftTransfers[t].tokenId,o=e.length>0?e[e.length-1]:null,a=null!=o?o.tokenId:null;if(null!=o&&null!=a&&0===a.compare(r)){o.transfers.push(this._tokenTransfers[n++]);continue}if(null!=o&&null!=a&&0===a.compare(s)){o.nftTransfers.push(this._nftTransfers[t++]);continue}const f=r.compare(s);0===f?e.push({tokenId:r,expectedDecimals:this._tokenTransfers[n].expectedDecimals,transfers:[this._tokenTransfers[n++]],nftTransfers:[this._nftTransfers[t++]]}):f<0?e.push({tokenId:r,expectedDecimals:this._tokenTransfers[n].expectedDecimals,transfers:[this._tokenTransfers[n++]],nftTransfers:[]}):e.push({tokenId:s,expectedDecimals:null,transfers:[],nftTransfers:[this._nftTransfers[t++]]})}else if(n<this._tokenTransfers.length){const t=this._tokenTransfers[n].tokenId;let r;for(const n of e)0===n.tokenId.compare(t)&&(r=n);const s=null!=r?r.tokenId:null;if(null!=r&&null!=s&&0===s.compare(t)){r.transfers.push(this._tokenTransfers[n++]);continue}e.push({tokenId:t,expectedDecimals:this._tokenTransfers[n].expectedDecimals,transfers:[this._tokenTransfers[n++]],nftTransfers:[]})}else if(t<this._nftTransfers.length){const n=this._nftTransfers[t].tokenId;let r;for(const t of e)0===t.tokenId.compare(n)&&(r=t);const s=null!=r?r.tokenId:null;if(null!=r&&null!=s&&0===s.compare(n)){r.nftTransfers.push(this._nftTransfers[t++]);continue}e.push({tokenId:n,expectedDecimals:null,transfers:[],nftTransfers:[this._nftTransfers[t++]]})}return{tokenTransfers:e.map(e=>({token:e.tokenId._toProtobuf(),expectedDecimals:null!=e.expectedDecimals?{value:e.expectedDecimals}:null,transfers:e.transfers.map(e=>e._toProtobuf()),nftTransfers:e.nftTransfers.map(e=>e._toProtobuf())}))}}}export{u as default};
|
|
2
2
|
//# sourceMappingURL=AbstractTokenTransferTransaction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractTokenTransferTransaction.js","sources":["../../src/token/AbstractTokenTransferTransaction.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\nimport TokenTransfer from \"./TokenTransfer.js\";\nimport TokenNftTransfer from \"../token/TokenNftTransfer.js\";\nimport TokenId from \"./TokenId.js\";\nimport NftId from \"./NftId.js\";\nimport AccountId from \"../account/AccountId.js\";\nimport Transaction from \"../transaction/Transaction.js\";\nimport Long from \"long\";\nimport NullableTokenDecimalMap from \"../account/NullableTokenDecimalMap.js\";\nimport TokenNftTransferMap from \"../account/TokenNftTransferMap.js\";\nimport TokenTransferMap from \"../account/TokenTransferMap.js\";\nimport TokenTransferAccountMap from \"../account/TokenTransferAccountMap.js\";\n\n/**\n * @namespace proto\n * @typedef {import(\"@hashgraph/proto\").proto.ITokenAirdropTransactionBody} HieroProto.proto.ITokenAirdropTransactionBody\n */\n\n/**\n * @typedef {object} TransferTokensInput\n * @property {TokenId | string} tokenId\n * @property {AccountId | string} accountId\n * @property {Long | number} amount\n */\n\n/**\n * @typedef {object} TransferNftInput\n * @property {TokenId | string} tokenId\n * @property {AccountId | string} sender\n * @property {AccountId | string} recipient\n * @property {Long | number} serial\n */\n\nexport default class AbstractTokenTransferTransaction extends Transaction {\n /**\n * @param {object} [props]\n * @param {(TransferTokensInput)[]} [props.tokenTransfers]\n * @param {(TransferNftInput)[]} [props.nftTransfers]\n */\n constructor(props = {}) {\n super();\n\n /**\n * @protected\n * @type {TokenTransfer[]}\n */\n this._tokenTransfers = [];\n\n /**\n * @protected\n * @type {TokenNftTransfer[]}\n */\n this._nftTransfers = [];\n\n for (const transfer of props.tokenTransfers != null\n ? props.tokenTransfers\n : []) {\n this.addTokenTransfer(\n transfer.tokenId,\n transfer.accountId,\n transfer.amount,\n );\n }\n\n for (const transfer of props.nftTransfers != null\n ? props.nftTransfers\n : []) {\n this.addNftTransfer(\n transfer.tokenId,\n transfer.serial,\n transfer.sender,\n transfer.recipient,\n );\n }\n }\n\n /**\n * @param {NftId | TokenId | string} tokenIdOrNftId\n * @param {AccountId | string | Long | number} senderAccountIdOrSerialNumber\n * @param {AccountId | string} receiverAccountIdOrSenderAccountId\n * @param {(AccountId | string)=} receiver\n * @returns {this}\n */\n addNftTransfer(\n tokenIdOrNftId,\n senderAccountIdOrSerialNumber,\n receiverAccountIdOrSenderAccountId,\n receiver,\n ) {\n return this._addNftTransfer(\n false,\n tokenIdOrNftId,\n senderAccountIdOrSerialNumber,\n receiverAccountIdOrSenderAccountId,\n receiver,\n );\n }\n\n /**\n * @param {TokenId | string} tokenId\n * @param {AccountId | string} accountId\n * @param {number | Long} amount\n * @param {boolean} isApproved\n * @param {number | null} expectedDecimals\n * @returns {this}\n */\n _addTokenTransfer(\n tokenId,\n accountId,\n amount,\n isApproved,\n expectedDecimals,\n ) {\n this._requireNotFrozen();\n\n const token =\n tokenId instanceof TokenId ? tokenId : TokenId.fromString(tokenId);\n const account =\n accountId instanceof AccountId\n ? accountId\n : AccountId.fromString(accountId);\n const value = amount instanceof Long ? amount : Long.fromNumber(amount);\n\n for (const tokenTransfer of this._tokenTransfers) {\n if (\n tokenTransfer.tokenId.compare(token) === 0 &&\n tokenTransfer.accountId.compare(account) === 0\n ) {\n tokenTransfer.amount = tokenTransfer.amount.add(value);\n tokenTransfer.expectedDecimals = expectedDecimals;\n return this;\n }\n }\n\n this._tokenTransfers.push(\n new TokenTransfer({\n tokenId,\n accountId,\n expectedDecimals: expectedDecimals,\n amount,\n isApproved,\n }),\n );\n\n return this;\n }\n\n /**\n * @param {TokenId | string} tokenId\n * @param {AccountId | string} accountId\n * @param {number | Long} amount\n * @returns {this}\n */\n addTokenTransfer(tokenId, accountId, amount) {\n return this._addTokenTransfer(tokenId, accountId, amount, false, null);\n }\n\n /**\n * @param {boolean} isApproved\n * @param {NftId | TokenId | string} tokenIdOrNftId\n * @param {AccountId | string | Long | number} senderAccountIdOrSerialNumber\n * @param {AccountId | string} receiverAccountIdOrSenderAccountId\n * @param {(AccountId | string)=} receiver\n * @returns {this}\n */\n _addNftTransfer(\n isApproved,\n tokenIdOrNftId,\n senderAccountIdOrSerialNumber,\n receiverAccountIdOrSenderAccountId,\n receiver,\n ) {\n this._requireNotFrozen();\n\n let nftId;\n let senderAccountId;\n let receiverAccountId;\n\n if (tokenIdOrNftId instanceof NftId) {\n nftId = tokenIdOrNftId;\n senderAccountId =\n typeof senderAccountIdOrSerialNumber === \"string\"\n ? AccountId.fromString(senderAccountIdOrSerialNumber)\n : /** @type {AccountId} */ (senderAccountIdOrSerialNumber);\n receiverAccountId =\n typeof receiverAccountIdOrSenderAccountId === \"string\"\n ? AccountId.fromString(receiverAccountIdOrSenderAccountId)\n : /** @type {AccountId} */ (\n receiverAccountIdOrSenderAccountId\n );\n } else if (tokenIdOrNftId instanceof TokenId) {\n nftId = new NftId(\n tokenIdOrNftId,\n /** @type {Long} */ (senderAccountIdOrSerialNumber),\n );\n senderAccountId =\n typeof receiverAccountIdOrSenderAccountId === \"string\"\n ? AccountId.fromString(receiverAccountIdOrSenderAccountId)\n : /** @type {AccountId} */ (\n receiverAccountIdOrSenderAccountId\n );\n receiverAccountId =\n typeof receiver === \"string\"\n ? AccountId.fromString(receiver)\n : /** @type {AccountId} */ (receiver);\n } else {\n try {\n nftId = NftId.fromString(tokenIdOrNftId);\n senderAccountId =\n typeof senderAccountIdOrSerialNumber === \"string\"\n ? AccountId.fromString(senderAccountIdOrSerialNumber)\n : /** @type {AccountId} */ (\n senderAccountIdOrSerialNumber\n );\n receiverAccountId =\n typeof receiverAccountIdOrSenderAccountId === \"string\"\n ? AccountId.fromString(\n receiverAccountIdOrSenderAccountId,\n )\n : /** @type {AccountId} */ (\n receiverAccountIdOrSenderAccountId\n );\n } catch (_) {\n const tokenId = TokenId.fromString(tokenIdOrNftId);\n nftId = new NftId(\n tokenId,\n /** @type {Long} */ (senderAccountIdOrSerialNumber),\n );\n senderAccountId =\n typeof receiverAccountIdOrSenderAccountId === \"string\"\n ? AccountId.fromString(\n receiverAccountIdOrSenderAccountId,\n )\n : /** @type {AccountId} */ (\n receiverAccountIdOrSenderAccountId\n );\n receiverAccountId =\n typeof receiver === \"string\"\n ? AccountId.fromString(receiver)\n : /** @type {AccountId} */ (receiver);\n }\n }\n\n for (const nftTransfer of this._nftTransfers) {\n if (\n nftTransfer.tokenId.compare(nftId.tokenId) === 0 &&\n nftTransfer.serialNumber.compare(nftId.serial) === 0\n ) {\n nftTransfer.senderAccountId = senderAccountId;\n nftTransfer.receiverAccountId = receiverAccountId;\n return this;\n }\n }\n\n this._nftTransfers.push(\n new TokenNftTransfer({\n tokenId: nftId.tokenId,\n serialNumber: nftId.serial,\n senderAccountId,\n receiverAccountId,\n isApproved,\n }),\n );\n\n return this;\n }\n\n /**\n * @param {NftId | TokenId | string} tokenIdOrNftId\n * @param {AccountId | string | Long | number} senderAccountIdOrSerialNumber\n * @param {AccountId | string} receiverAccountIdOrSenderAccountId\n * @param {(AccountId | string)=} receiver\n * @returns {this}\n */\n addApprovedNftTransfer(\n tokenIdOrNftId,\n senderAccountIdOrSerialNumber,\n receiverAccountIdOrSenderAccountId,\n receiver,\n ) {\n return this._addNftTransfer(\n true,\n tokenIdOrNftId,\n senderAccountIdOrSerialNumber,\n receiverAccountIdOrSenderAccountId,\n receiver,\n );\n }\n\n /**\n * @param {TokenId | string} tokenId\n * @param {AccountId | string} accountId\n * @param {number | Long} amount\n * @returns {this}\n */\n addApprovedTokenTransfer(tokenId, accountId, amount) {\n return this._addTokenTransfer(tokenId, accountId, amount, true, null);\n }\n\n /**\n * @param {TokenId | string} tokenId\n * @param {AccountId | string} accountId\n * @param {number | Long} amount\n * @param {number} decimals\n * @returns {this}\n */\n addTokenTransferWithDecimals(tokenId, accountId, amount, decimals) {\n this._requireNotFrozen();\n\n const token =\n tokenId instanceof TokenId ? tokenId : TokenId.fromString(tokenId);\n const account =\n accountId instanceof AccountId\n ? accountId\n : AccountId.fromString(accountId);\n const value = amount instanceof Long ? amount : Long.fromNumber(amount);\n\n let found = false;\n\n for (const tokenTransfer of this._tokenTransfers) {\n if (tokenTransfer.tokenId.compare(token) === 0) {\n if (\n tokenTransfer.expectedDecimals != null &&\n tokenTransfer.expectedDecimals !== decimals\n ) {\n throw new Error(\"expected decimals mis-match\");\n } else {\n tokenTransfer.expectedDecimals = decimals;\n }\n\n if (tokenTransfer.accountId.compare(account) === 0) {\n tokenTransfer.amount = tokenTransfer.amount.add(value);\n tokenTransfer.expectedDecimals = decimals;\n found = true;\n }\n }\n }\n\n if (found) {\n return this;\n }\n\n this._tokenTransfers.push(\n new TokenTransfer({\n tokenId,\n accountId,\n expectedDecimals: decimals,\n amount,\n isApproved: false,\n }),\n );\n\n return this;\n }\n\n /**\n * @returns {NullableTokenDecimalMap}\n */\n get tokenIdDecimals() {\n const map = new NullableTokenDecimalMap();\n\n for (const transfer of this._tokenTransfers) {\n map._set(transfer.tokenId, transfer.expectedDecimals);\n }\n\n return map;\n }\n\n /**\n * @returns {TokenNftTransferMap}\n */\n get nftTransfers() {\n const map = new TokenNftTransferMap();\n\n for (const transfer of this._nftTransfers) {\n const transferList = map.get(transfer.tokenId);\n\n const nftTransfer = {\n sender: transfer.senderAccountId,\n recipient: transfer.receiverAccountId,\n serial: transfer.serialNumber,\n isApproved: transfer.isApproved,\n };\n\n if (transferList != null) {\n transferList.push(nftTransfer);\n } else {\n map._set(transfer.tokenId, [nftTransfer]);\n }\n }\n\n return map;\n }\n\n /**\n * @returns {TokenTransferMap}\n */\n get tokenTransfers() {\n const map = new TokenTransferMap();\n\n for (const transfer of this._tokenTransfers) {\n let transferMap = map.get(transfer.tokenId);\n\n if (transferMap != null) {\n transferMap._set(transfer.accountId, transfer.amount);\n } else {\n transferMap = new TokenTransferAccountMap();\n transferMap._set(transfer.accountId, transfer.amount);\n map._set(transfer.tokenId, transferMap);\n }\n }\n\n return map;\n }\n\n /**\n * @override\n * @protected\n * @returns {HieroProto.proto.ITokenAirdropTransactionBody}\n */\n _makeTransactionData() {\n /** @type {{tokenId: TokenId; expectedDecimals: number | null; transfers: TokenTransfer[]; nftTransfers: TokenNftTransfer[];}[]} */\n const tokenTransferList = [];\n\n this._tokenTransfers.sort((a, b) => {\n const compare = a.tokenId.compare(b.tokenId);\n\n if (compare !== 0) {\n return compare;\n }\n\n return a.accountId.compare(b.accountId);\n });\n\n this._nftTransfers.sort((a, b) => {\n const senderComparision = a.senderAccountId.compare(\n b.senderAccountId,\n );\n if (senderComparision != 0) {\n return senderComparision;\n }\n\n const recipientComparision = a.receiverAccountId.compare(\n b.receiverAccountId,\n );\n if (recipientComparision != 0) {\n return recipientComparision;\n }\n\n return a.serialNumber.compare(b.serialNumber);\n });\n\n let i = 0;\n let j = 0;\n while (\n i < this._tokenTransfers.length ||\n j < this._nftTransfers.length\n ) {\n if (\n i < this._tokenTransfers.length &&\n j < this._nftTransfers.length\n ) {\n const iTokenId = this._tokenTransfers[i].tokenId;\n const jTokenId = this._nftTransfers[j].tokenId;\n\n const last =\n tokenTransferList.length > 0\n ? tokenTransferList[tokenTransferList.length - 1]\n : null;\n const lastTokenId = last != null ? last.tokenId : null;\n\n if (\n last != null &&\n lastTokenId != null &&\n lastTokenId.compare(iTokenId) === 0\n ) {\n last.transfers.push(this._tokenTransfers[i++]);\n continue;\n }\n\n if (\n last != null &&\n lastTokenId != null &&\n lastTokenId.compare(jTokenId) === 0\n ) {\n last.nftTransfers.push(this._nftTransfers[j++]);\n continue;\n }\n\n const result = iTokenId.compare(jTokenId);\n\n if (result === 0) {\n tokenTransferList.push({\n tokenId: iTokenId,\n expectedDecimals:\n this._tokenTransfers[i].expectedDecimals,\n transfers: [this._tokenTransfers[i++]],\n nftTransfers: [this._nftTransfers[j++]],\n });\n } else if (result < 0) {\n tokenTransferList.push({\n tokenId: iTokenId,\n expectedDecimals:\n this._tokenTransfers[i].expectedDecimals,\n transfers: [this._tokenTransfers[i++]],\n nftTransfers: [],\n });\n } else {\n tokenTransferList.push({\n tokenId: jTokenId,\n expectedDecimals: null,\n transfers: [],\n nftTransfers: [this._nftTransfers[j++]],\n });\n }\n } else if (i < this._tokenTransfers.length) {\n const iTokenId = this._tokenTransfers[i].tokenId;\n\n let last;\n for (const transfer of tokenTransferList) {\n if (transfer.tokenId.compare(iTokenId) === 0) {\n last = transfer;\n }\n }\n const lastTokenId = last != null ? last.tokenId : null;\n\n if (\n last != null &&\n lastTokenId != null &&\n lastTokenId.compare(iTokenId) === 0\n ) {\n last.transfers.push(this._tokenTransfers[i++]);\n continue;\n }\n\n tokenTransferList.push({\n tokenId: iTokenId,\n expectedDecimals: this._tokenTransfers[i].expectedDecimals,\n transfers: [this._tokenTransfers[i++]],\n nftTransfers: [],\n });\n } else if (j < this._nftTransfers.length) {\n const jTokenId = this._nftTransfers[j].tokenId;\n\n let last;\n for (const transfer of tokenTransferList) {\n if (transfer.tokenId.compare(jTokenId) === 0) {\n last = transfer;\n }\n }\n const lastTokenId = last != null ? last.tokenId : null;\n\n if (\n last != null &&\n lastTokenId != null &&\n lastTokenId.compare(jTokenId) === 0\n ) {\n last.nftTransfers.push(this._nftTransfers[j++]);\n continue;\n }\n\n tokenTransferList.push({\n tokenId: jTokenId,\n expectedDecimals: null,\n transfers: [],\n nftTransfers: [this._nftTransfers[j++]],\n });\n }\n }\n\n return {\n tokenTransfers: tokenTransferList.map((tokenTransfer) => {\n return {\n token: tokenTransfer.tokenId._toProtobuf(),\n expectedDecimals:\n tokenTransfer.expectedDecimals != null\n ? { value: tokenTransfer.expectedDecimals }\n : null,\n transfers: tokenTransfer.transfers.map((transfer) =>\n transfer._toProtobuf(),\n ),\n nftTransfers: tokenTransfer.nftTransfers.map((transfer) =>\n transfer._toProtobuf(),\n ),\n };\n }),\n };\n }\n}\n"],"names":["AbstractTokenTransferTransaction","Transaction","constructor","props","super","this","_tokenTransfers","_nftTransfers","transfer","tokenTransfers","addTokenTransfer","tokenId","accountId","amount","nftTransfers","addNftTransfer","serial","sender","recipient","tokenIdOrNftId","senderAccountIdOrSerialNumber","receiverAccountIdOrSenderAccountId","receiver","_addNftTransfer","_addTokenTransfer","isApproved","expectedDecimals","_requireNotFrozen","token","TokenId","fromString","account","AccountId","value","Long","fromNumber","tokenTransfer","compare","add","push","TokenTransfer","nftId","senderAccountId","receiverAccountId","NftId","_","nftTransfer","serialNumber","TokenNftTransfer","addApprovedNftTransfer","addApprovedTokenTransfer","addTokenTransferWithDecimals","decimals","found","Error","tokenIdDecimals","map","NullableTokenDecimalMap","_set","TokenNftTransferMap","transferList","get","TokenTransferMap","transferMap","TokenTransferAccountMap","_makeTransactionData","tokenTransferList","sort","a","b","senderComparision","recipientComparision","i","j","length","iTokenId","jTokenId","last","lastTokenId","transfers","result","_toProtobuf"],"mappings":"8aAiCe,MAAMA,UAAyCC,EAM1D,WAAAC,CAAYC,EAAQ,IAChBC,QAMAC,KAAKC,gBAAkB,GAMvBD,KAAKE,cAAgB,GAErB,IAAK,MAAMC,KAAoC,MAAxBL,EAAMM,eACvBN,EAAMM,eACN,GACFJ,KAAKK,iBACDF,EAASG,QACTH,EAASI,UACTJ,EAASK,QAIjB,IAAK,MAAML,KAAkC,MAAtBL,EAAMW,aACvBX,EAAMW,aACN,GACFT,KAAKU,eACDP,EAASG,QACTH,EAASQ,OACTR,EAASS,OACTT,EAASU,UAGzB,CASI,cAAAH,CACII,EACAC,EACAC,EACAC,GAEA,OAAOjB,KAAKkB,iBACR,EACAJ,EACAC,EACAC,EACAC,EAEZ,CAUI,iBAAAE,CACIb,EACAC,EACAC,EACAY,EACAC,GAEArB,KAAKsB,oBAEL,MAAMC,EACFjB,aAAmBkB,EAAUlB,EAAUkB,EAAQC,WAAWnB,GACxDoB,EACFnB,aAAqBoB,EACfpB,EACAoB,EAAUF,WAAWlB,GACzBqB,EAAQpB,aAAkBqB,EAAOrB,EAASqB,EAAKC,WAAWtB,GAEhE,IAAK,MAAMuB,KAAiB/B,KAAKC,gBAC7B,GAC6C,IAAzC8B,EAAczB,QAAQ0B,QAAQT,IACe,IAA7CQ,EAAcxB,UAAUyB,QAAQN,GAIhC,OAFAK,EAAcvB,OAASuB,EAAcvB,OAAOyB,IAAIL,GAChDG,EAAcV,iBAAmBA,EAC1BrB,KAcf,OAVAA,KAAKC,gBAAgBiC,KACjB,IAAIC,EAAc,CACd7B,UACAC,YACAc,iBAAkBA,EAClBb,SACAY,gBAIDpB,IACf,CAQI,gBAAAK,CAAiBC,EAASC,EAAWC,GACjC,OAAOR,KAAKmB,kBAAkBb,EAASC,EAAWC,GAAQ,EAAO,KACzE,CAUI,eAAAU,CACIE,EACAN,EACAC,EACAC,EACAC,GAIA,IAAImB,EACAC,EACAC,EAEJ,GANAtC,KAAKsB,oBAMDR,aAA0ByB,EAC1BH,EAAQtB,EACRuB,EAC6C,iBAAlCtB,EACDY,EAAUF,WAAWV,GAC3C,EACYuB,EACkD,iBAAvCtB,EACDW,EAAUF,WAAWT,GAC3C,OAGe,GAAIF,aAA0BU,EACjCY,EAAQ,IAAIG,EACRzB,EAChB,GAEYuB,EACkD,iBAAvCrB,EACDW,EAAUF,WAAWT,GAC3C,EAGYsB,EACwB,iBAAbrB,EACDU,EAAUF,WAAWR,GAC3C,OAEY,IACImB,EAAQG,EAAMd,WAAWX,GACzBuB,EAC6C,iBAAlCtB,EACDY,EAAUF,WAAWV,GAC/C,EAGgBuB,EACkD,iBAAvCtB,EACDW,EAAUF,WACNT,GAE9B,CAGa,CAAC,MAAOwB,GACL,MAAMlC,EAAUkB,EAAQC,WAAWX,GACnCsB,EAAQ,IAAIG,EACRjC,EACpB,GAEgB+B,EACkD,iBAAvCrB,EACDW,EAAUF,WACNT,GAE9B,EAGgBsB,EACwB,iBAAbrB,EACDU,EAAUF,WAAWR,GAC/C,CACA,CAGQ,IAAK,MAAMwB,KAAezC,KAAKE,cAC3B,GACmD,IAA/CuC,EAAYnC,QAAQ0B,QAAQI,EAAM9B,UACiB,IAAnDmC,EAAYC,aAAaV,QAAQI,EAAMzB,QAIvC,OAFA8B,EAAYJ,gBAAkBA,EAC9BI,EAAYH,kBAAoBA,EACzBtC,KAcf,OAVAA,KAAKE,cAAcgC,KACf,IAAIS,EAAiB,CACjBrC,QAAS8B,EAAM9B,QACfoC,aAAcN,EAAMzB,OACpB0B,kBACAC,oBACAlB,gBAIDpB,IACf,CASI,sBAAA4C,CACI9B,EACAC,EACAC,EACAC,GAEA,OAAOjB,KAAKkB,iBACR,EACAJ,EACAC,EACAC,EACAC,EAEZ,CAQI,wBAAA4B,CAAyBvC,EAASC,EAAWC,GACzC,OAAOR,KAAKmB,kBAAkBb,EAASC,EAAWC,GAAQ,EAAM,KACxE,CASI,4BAAAsC,CAA6BxC,EAASC,EAAWC,EAAQuC,GACrD/C,KAAKsB,oBAEL,MAAMC,EACFjB,aAAmBkB,EAAUlB,EAAUkB,EAAQC,WAAWnB,GACxDoB,EACFnB,aAAqBoB,EACfpB,EACAoB,EAAUF,WAAWlB,GACzBqB,EAAQpB,aAAkBqB,EAAOrB,EAASqB,EAAKC,WAAWtB,GAEhE,IAAIwC,GAAQ,EAEZ,IAAK,MAAMjB,KAAiB/B,KAAKC,gBAC7B,GAA6C,IAAzC8B,EAAczB,QAAQ0B,QAAQT,GAAc,CAC5C,GACsC,MAAlCQ,EAAcV,kBACdU,EAAcV,mBAAqB0B,EAEnC,MAAM,IAAIE,MAAM,+BAEhBlB,EAAcV,iBAAmB0B,EAGY,IAA7ChB,EAAcxB,UAAUyB,QAAQN,KAChCK,EAAcvB,OAASuB,EAAcvB,OAAOyB,IAAIL,GAChDG,EAAcV,iBAAmB0B,EACjCC,GAAQ,EAE5B,CAGQ,OAAIA,GAIJhD,KAAKC,gBAAgBiC,KACjB,IAAIC,EAAc,CACd7B,UACAC,YACAc,iBAAkB0B,EAClBvC,SACAY,YAAY,KATTpB,IAcnB,CAKI,mBAAIkD,GACA,MAAMC,EAAM,IAAIC,EAEhB,IAAK,MAAMjD,KAAYH,KAAKC,gBACxBkD,EAAIE,KAAKlD,EAASG,QAASH,EAASkB,kBAGxC,OAAO8B,CACf,CAKI,gBAAI1C,GACA,MAAM0C,EAAM,IAAIG,EAEhB,IAAK,MAAMnD,KAAYH,KAAKE,cAAe,CACvC,MAAMqD,EAAeJ,EAAIK,IAAIrD,EAASG,SAEhCmC,EAAc,CAChB7B,OAAQT,EAASkC,gBACjBxB,UAAWV,EAASmC,kBACpB3B,OAAQR,EAASuC,aACjBtB,WAAYjB,EAASiB,YAGL,MAAhBmC,EACAA,EAAarB,KAAKO,GAElBU,EAAIE,KAAKlD,EAASG,QAAS,CAACmC,GAE5C,CAEQ,OAAOU,CACf,CAKI,kBAAI/C,GACA,MAAM+C,EAAM,IAAIM,EAEhB,IAAK,MAAMtD,KAAYH,KAAKC,gBAAiB,CACzC,IAAIyD,EAAcP,EAAIK,IAAIrD,EAASG,SAEhB,MAAfoD,EACAA,EAAYL,KAAKlD,EAASI,UAAWJ,EAASK,SAE9CkD,EAAc,IAAIC,EAClBD,EAAYL,KAAKlD,EAASI,UAAWJ,EAASK,QAC9C2C,EAAIE,KAAKlD,EAASG,QAASoD,GAE3C,CAEQ,OAAOP,CACf,CAOI,oBAAAS,GAEI,MAAMC,EAAoB,GAE1B7D,KAAKC,gBAAgB6D,KAAK,CAACC,EAAGC,KAC1B,MAAMhC,EAAU+B,EAAEzD,QAAQ0B,QAAQgC,EAAE1D,SAEpC,OAAgB,IAAZ0B,EACOA,EAGJ+B,EAAExD,UAAUyB,QAAQgC,EAAEzD,aAGjCP,KAAKE,cAAc4D,KAAK,CAACC,EAAGC,KACxB,MAAMC,EAAoBF,EAAE1B,gBAAgBL,QACxCgC,EAAE3B,iBAEN,GAAyB,GAArB4B,EACA,OAAOA,EAGX,MAAMC,EAAuBH,EAAEzB,kBAAkBN,QAC7CgC,EAAE1B,mBAEN,OAA4B,GAAxB4B,EACOA,EAGJH,EAAErB,aAAaV,QAAQgC,EAAEtB,gBAGpC,IAAIyB,EAAI,EACJC,EAAI,EACR,KACID,EAAInE,KAAKC,gBAAgBoE,QACzBD,EAAIpE,KAAKE,cAAcmE,QAEvB,GACIF,EAAInE,KAAKC,gBAAgBoE,QACzBD,EAAIpE,KAAKE,cAAcmE,OACzB,CACE,MAAMC,EAAWtE,KAAKC,gBAAgBkE,GAAG7D,QACnCiE,EAAWvE,KAAKE,cAAckE,GAAG9D,QAEjCkE,EACFX,EAAkBQ,OAAS,EACrBR,EAAkBA,EAAkBQ,OAAS,GAC7C,KACJI,EAAsB,MAARD,EAAeA,EAAKlE,QAAU,KAElD,GACY,MAARkE,GACe,MAAfC,GACkC,IAAlCA,EAAYzC,QAAQsC,GACtB,CACEE,EAAKE,UAAUxC,KAAKlC,KAAKC,gBAAgBkE,MACzC,QACpB,CAEgB,GACY,MAARK,GACe,MAAfC,GACkC,IAAlCA,EAAYzC,QAAQuC,GACtB,CACEC,EAAK/D,aAAayB,KAAKlC,KAAKE,cAAckE,MAC1C,QACpB,CAEgB,MAAMO,EAASL,EAAStC,QAAQuC,GAEjB,IAAXI,EACAd,EAAkB3B,KAAK,CACnB5B,QAASgE,EACTjD,iBACIrB,KAAKC,gBAAgBkE,GAAG9C,iBAC5BqD,UAAW,CAAC1E,KAAKC,gBAAgBkE,MACjC1D,aAAc,CAACT,KAAKE,cAAckE,QAE/BO,EAAS,EAChBd,EAAkB3B,KAAK,CACnB5B,QAASgE,EACTjD,iBACIrB,KAAKC,gBAAgBkE,GAAG9C,iBAC5BqD,UAAW,CAAC1E,KAAKC,gBAAgBkE,MACjC1D,aAAc,KAGlBoD,EAAkB3B,KAAK,CACnB5B,QAASiE,EACTlD,iBAAkB,KAClBqD,UAAW,GACXjE,aAAc,CAACT,KAAKE,cAAckE,OAG7C,MAAM,GAAID,EAAInE,KAAKC,gBAAgBoE,OAAQ,CACxC,MAAMC,EAAWtE,KAAKC,gBAAgBkE,GAAG7D,QAEzC,IAAIkE,EACJ,IAAK,MAAMrE,KAAY0D,EACwB,IAAvC1D,EAASG,QAAQ0B,QAAQsC,KACzBE,EAAOrE,GAGf,MAAMsE,EAAsB,MAARD,EAAeA,EAAKlE,QAAU,KAElD,GACY,MAARkE,GACe,MAAfC,GACkC,IAAlCA,EAAYzC,QAAQsC,GACtB,CACEE,EAAKE,UAAUxC,KAAKlC,KAAKC,gBAAgBkE,MACzC,QACpB,CAEgBN,EAAkB3B,KAAK,CACnB5B,QAASgE,EACTjD,iBAAkBrB,KAAKC,gBAAgBkE,GAAG9C,iBAC1CqD,UAAW,CAAC1E,KAAKC,gBAAgBkE,MACjC1D,aAAc,IAErB,MAAM,GAAI2D,EAAIpE,KAAKE,cAAcmE,OAAQ,CACtC,MAAME,EAAWvE,KAAKE,cAAckE,GAAG9D,QAEvC,IAAIkE,EACJ,IAAK,MAAMrE,KAAY0D,EACwB,IAAvC1D,EAASG,QAAQ0B,QAAQuC,KACzBC,EAAOrE,GAGf,MAAMsE,EAAsB,MAARD,EAAeA,EAAKlE,QAAU,KAElD,GACY,MAARkE,GACe,MAAfC,GACkC,IAAlCA,EAAYzC,QAAQuC,GACtB,CACEC,EAAK/D,aAAayB,KAAKlC,KAAKE,cAAckE,MAC1C,QACpB,CAEgBP,EAAkB3B,KAAK,CACnB5B,QAASiE,EACTlD,iBAAkB,KAClBqD,UAAW,GACXjE,aAAc,CAACT,KAAKE,cAAckE,OAEtD,CAGQ,MAAO,CACHhE,eAAgByD,EAAkBV,IAAKpB,IAC5B,CACHR,MAAOQ,EAAczB,QAAQsE,cAC7BvD,iBACsC,MAAlCU,EAAcV,iBACR,CAAEO,MAAOG,EAAcV,kBACvB,KACVqD,UAAW3C,EAAc2C,UAAUvB,IAAKhD,GACpCA,EAASyE,eAEbnE,aAAcsB,EAActB,aAAa0C,IAAKhD,GAC1CA,EAASyE,kBAKjC"}
|
|
1
|
+
{"version":3,"file":"AbstractTokenTransferTransaction.js","sources":["../../src/token/AbstractTokenTransferTransaction.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\nimport TokenTransfer from \"./TokenTransfer.js\";\nimport TokenNftTransfer from \"../token/TokenNftTransfer.js\";\nimport TokenId from \"./TokenId.js\";\nimport NftId from \"./NftId.js\";\nimport AccountId from \"../account/AccountId.js\";\nimport Transaction from \"../transaction/Transaction.js\";\nimport NullableTokenDecimalMap from \"../account/NullableTokenDecimalMap.js\";\nimport TokenNftTransferMap from \"../account/TokenNftTransferMap.js\";\nimport TokenTransferMap from \"../account/TokenTransferMap.js\";\nimport TokenTransferAccountMap from \"../account/TokenTransferAccountMap.js\";\nimport { convertAmountToLong } from \"../util.js\";\n\n/**\n * @typedef {import(\"bignumber.js\").default} BigNumber\n */\n\n/**\n * @namespace proto\n * @typedef {import(\"@hashgraph/proto\").proto.ITokenAirdropTransactionBody} HieroProto.proto.ITokenAirdropTransactionBody\n */\n\n/**\n * @typedef {object} TransferTokensInput\n * @property {TokenId | string} tokenId\n * @property {AccountId | string} accountId\n * @property {Long | number | BigNumber | bigint} amount\n */\n\n/**\n * @typedef {object} TransferNftInput\n * @property {TokenId | string} tokenId\n * @property {AccountId | string} sender\n * @property {AccountId | string} recipient\n * @property {Long | number} serial\n */\n\nexport default class AbstractTokenTransferTransaction extends Transaction {\n /**\n * @param {object} [props]\n * @param {(TransferTokensInput)[]} [props.tokenTransfers]\n * @param {(TransferNftInput)[]} [props.nftTransfers]\n */\n constructor(props = {}) {\n super();\n\n /**\n * @protected\n * @type {TokenTransfer[]}\n */\n this._tokenTransfers = [];\n\n /**\n * @protected\n * @type {TokenNftTransfer[]}\n */\n this._nftTransfers = [];\n\n for (const transfer of props.tokenTransfers != null\n ? props.tokenTransfers\n : []) {\n this.addTokenTransfer(\n transfer.tokenId,\n transfer.accountId,\n transfer.amount,\n );\n }\n\n for (const transfer of props.nftTransfers != null\n ? props.nftTransfers\n : []) {\n this.addNftTransfer(\n transfer.tokenId,\n transfer.serial,\n transfer.sender,\n transfer.recipient,\n );\n }\n }\n\n /**\n * @param {NftId | TokenId | string} tokenIdOrNftId\n * @param {AccountId | string | Long | number} senderAccountIdOrSerialNumber\n * @param {AccountId | string} receiverAccountIdOrSenderAccountId\n * @param {(AccountId | string)=} receiver\n * @returns {this}\n */\n addNftTransfer(\n tokenIdOrNftId,\n senderAccountIdOrSerialNumber,\n receiverAccountIdOrSenderAccountId,\n receiver,\n ) {\n return this._addNftTransfer(\n false,\n tokenIdOrNftId,\n senderAccountIdOrSerialNumber,\n receiverAccountIdOrSenderAccountId,\n receiver,\n );\n }\n\n /**\n * @param {TokenId | string} tokenId\n * @param {AccountId | string} accountId\n * @param {number | Long | BigNumber | bigint} amount\n * @param {boolean} isApproved\n * @param {number | null} expectedDecimals\n * @returns {this}\n */\n _addTokenTransfer(\n tokenId,\n accountId,\n amount,\n isApproved,\n expectedDecimals,\n ) {\n this._requireNotFrozen();\n\n const token =\n tokenId instanceof TokenId ? tokenId : TokenId.fromString(tokenId);\n const account =\n accountId instanceof AccountId\n ? accountId\n : AccountId.fromString(accountId);\n const value = convertAmountToLong(amount);\n\n for (const tokenTransfer of this._tokenTransfers) {\n if (\n tokenTransfer.tokenId.compare(token) === 0 &&\n tokenTransfer.accountId.compare(account) === 0\n ) {\n tokenTransfer.amount = tokenTransfer.amount.add(value);\n tokenTransfer.expectedDecimals = expectedDecimals;\n return this;\n }\n }\n\n this._tokenTransfers.push(\n new TokenTransfer({\n tokenId,\n accountId,\n expectedDecimals: expectedDecimals,\n amount,\n isApproved,\n }),\n );\n\n return this;\n }\n\n /**\n * @param {TokenId | string} tokenId\n * @param {AccountId | string} accountId\n * @param {number | Long | BigNumber | bigint} amount\n * @returns {this}\n */\n addTokenTransfer(tokenId, accountId, amount) {\n return this._addTokenTransfer(tokenId, accountId, amount, false, null);\n }\n\n /**\n * @param {boolean} isApproved\n * @param {NftId | TokenId | string} tokenIdOrNftId\n * @param {AccountId | string | Long | number} senderAccountIdOrSerialNumber\n * @param {AccountId | string} receiverAccountIdOrSenderAccountId\n * @param {(AccountId | string)=} receiver\n * @returns {this}\n */\n _addNftTransfer(\n isApproved,\n tokenIdOrNftId,\n senderAccountIdOrSerialNumber,\n receiverAccountIdOrSenderAccountId,\n receiver,\n ) {\n this._requireNotFrozen();\n\n let nftId;\n let senderAccountId;\n let receiverAccountId;\n\n if (tokenIdOrNftId instanceof NftId) {\n nftId = tokenIdOrNftId;\n senderAccountId =\n typeof senderAccountIdOrSerialNumber === \"string\"\n ? AccountId.fromString(senderAccountIdOrSerialNumber)\n : /** @type {AccountId} */ (senderAccountIdOrSerialNumber);\n receiverAccountId =\n typeof receiverAccountIdOrSenderAccountId === \"string\"\n ? AccountId.fromString(receiverAccountIdOrSenderAccountId)\n : /** @type {AccountId} */ (\n receiverAccountIdOrSenderAccountId\n );\n } else if (tokenIdOrNftId instanceof TokenId) {\n nftId = new NftId(\n tokenIdOrNftId,\n /** @type {Long} */ (senderAccountIdOrSerialNumber),\n );\n senderAccountId =\n typeof receiverAccountIdOrSenderAccountId === \"string\"\n ? AccountId.fromString(receiverAccountIdOrSenderAccountId)\n : /** @type {AccountId} */ (\n receiverAccountIdOrSenderAccountId\n );\n receiverAccountId =\n typeof receiver === \"string\"\n ? AccountId.fromString(receiver)\n : /** @type {AccountId} */ (receiver);\n } else {\n try {\n nftId = NftId.fromString(tokenIdOrNftId);\n senderAccountId =\n typeof senderAccountIdOrSerialNumber === \"string\"\n ? AccountId.fromString(senderAccountIdOrSerialNumber)\n : /** @type {AccountId} */ (\n senderAccountIdOrSerialNumber\n );\n receiverAccountId =\n typeof receiverAccountIdOrSenderAccountId === \"string\"\n ? AccountId.fromString(\n receiverAccountIdOrSenderAccountId,\n )\n : /** @type {AccountId} */ (\n receiverAccountIdOrSenderAccountId\n );\n } catch (_) {\n const tokenId = TokenId.fromString(tokenIdOrNftId);\n nftId = new NftId(\n tokenId,\n /** @type {Long} */ (senderAccountIdOrSerialNumber),\n );\n senderAccountId =\n typeof receiverAccountIdOrSenderAccountId === \"string\"\n ? AccountId.fromString(\n receiverAccountIdOrSenderAccountId,\n )\n : /** @type {AccountId} */ (\n receiverAccountIdOrSenderAccountId\n );\n receiverAccountId =\n typeof receiver === \"string\"\n ? AccountId.fromString(receiver)\n : /** @type {AccountId} */ (receiver);\n }\n }\n\n for (const nftTransfer of this._nftTransfers) {\n if (\n nftTransfer.tokenId.compare(nftId.tokenId) === 0 &&\n nftTransfer.serialNumber.compare(nftId.serial) === 0\n ) {\n nftTransfer.senderAccountId = senderAccountId;\n nftTransfer.receiverAccountId = receiverAccountId;\n return this;\n }\n }\n\n this._nftTransfers.push(\n new TokenNftTransfer({\n tokenId: nftId.tokenId,\n serialNumber: nftId.serial,\n senderAccountId,\n receiverAccountId,\n isApproved,\n }),\n );\n\n return this;\n }\n\n /**\n * @param {NftId | TokenId | string} tokenIdOrNftId\n * @param {AccountId | string | Long | number} senderAccountIdOrSerialNumber\n * @param {AccountId | string} receiverAccountIdOrSenderAccountId\n * @param {(AccountId | string)=} receiver\n * @returns {this}\n */\n addApprovedNftTransfer(\n tokenIdOrNftId,\n senderAccountIdOrSerialNumber,\n receiverAccountIdOrSenderAccountId,\n receiver,\n ) {\n return this._addNftTransfer(\n true,\n tokenIdOrNftId,\n senderAccountIdOrSerialNumber,\n receiverAccountIdOrSenderAccountId,\n receiver,\n );\n }\n\n /**\n * @param {TokenId | string} tokenId\n * @param {AccountId | string} accountId\n * @param {number | Long | BigNumber | bigint} amount\n * @returns {this}\n */\n addApprovedTokenTransfer(tokenId, accountId, amount) {\n return this._addTokenTransfer(tokenId, accountId, amount, true, null);\n }\n\n /**\n * @param {TokenId | string} tokenId\n * @param {AccountId | string} accountId\n * @param {number | Long | BigNumber | bigint} amount\n * @param {number} decimals\n * @returns {this}\n */\n addTokenTransferWithDecimals(tokenId, accountId, amount, decimals) {\n this._requireNotFrozen();\n\n const token =\n tokenId instanceof TokenId ? tokenId : TokenId.fromString(tokenId);\n const account =\n accountId instanceof AccountId\n ? accountId\n : AccountId.fromString(accountId);\n const value = convertAmountToLong(amount);\n\n let found = false;\n\n for (const tokenTransfer of this._tokenTransfers) {\n if (tokenTransfer.tokenId.compare(token) === 0) {\n if (\n tokenTransfer.expectedDecimals != null &&\n tokenTransfer.expectedDecimals !== decimals\n ) {\n throw new Error(\"expected decimals mis-match\");\n } else {\n tokenTransfer.expectedDecimals = decimals;\n }\n\n if (tokenTransfer.accountId.compare(account) === 0) {\n tokenTransfer.amount = tokenTransfer.amount.add(value);\n tokenTransfer.expectedDecimals = decimals;\n found = true;\n }\n }\n }\n\n if (found) {\n return this;\n }\n\n this._tokenTransfers.push(\n new TokenTransfer({\n tokenId,\n accountId,\n expectedDecimals: decimals,\n amount,\n isApproved: false,\n }),\n );\n\n return this;\n }\n\n /**\n * @returns {NullableTokenDecimalMap}\n */\n get tokenIdDecimals() {\n const map = new NullableTokenDecimalMap();\n\n for (const transfer of this._tokenTransfers) {\n map._set(transfer.tokenId, transfer.expectedDecimals);\n }\n\n return map;\n }\n\n /**\n * @returns {TokenNftTransferMap}\n */\n get nftTransfers() {\n const map = new TokenNftTransferMap();\n\n for (const transfer of this._nftTransfers) {\n const transferList = map.get(transfer.tokenId);\n\n const nftTransfer = {\n sender: transfer.senderAccountId,\n recipient: transfer.receiverAccountId,\n serial: transfer.serialNumber,\n isApproved: transfer.isApproved,\n };\n\n if (transferList != null) {\n transferList.push(nftTransfer);\n } else {\n map._set(transfer.tokenId, [nftTransfer]);\n }\n }\n\n return map;\n }\n\n /**\n * @returns {TokenTransferMap}\n */\n get tokenTransfers() {\n const map = new TokenTransferMap();\n\n for (const transfer of this._tokenTransfers) {\n let transferMap = map.get(transfer.tokenId);\n\n if (transferMap != null) {\n transferMap._set(transfer.accountId, transfer.amount);\n } else {\n transferMap = new TokenTransferAccountMap();\n transferMap._set(transfer.accountId, transfer.amount);\n map._set(transfer.tokenId, transferMap);\n }\n }\n\n return map;\n }\n\n /**\n * @override\n * @protected\n * @returns {HieroProto.proto.ITokenAirdropTransactionBody}\n */\n _makeTransactionData() {\n /** @type {{tokenId: TokenId; expectedDecimals: number | null; transfers: TokenTransfer[]; nftTransfers: TokenNftTransfer[];}[]} */\n const tokenTransferList = [];\n\n this._tokenTransfers.sort((a, b) => {\n const compare = a.tokenId.compare(b.tokenId);\n\n if (compare !== 0) {\n return compare;\n }\n\n return a.accountId.compare(b.accountId);\n });\n\n this._nftTransfers.sort((a, b) => {\n const senderComparision = a.senderAccountId.compare(\n b.senderAccountId,\n );\n if (senderComparision != 0) {\n return senderComparision;\n }\n\n const recipientComparision = a.receiverAccountId.compare(\n b.receiverAccountId,\n );\n if (recipientComparision != 0) {\n return recipientComparision;\n }\n\n return a.serialNumber.compare(b.serialNumber);\n });\n\n let i = 0;\n let j = 0;\n while (\n i < this._tokenTransfers.length ||\n j < this._nftTransfers.length\n ) {\n if (\n i < this._tokenTransfers.length &&\n j < this._nftTransfers.length\n ) {\n const iTokenId = this._tokenTransfers[i].tokenId;\n const jTokenId = this._nftTransfers[j].tokenId;\n\n const last =\n tokenTransferList.length > 0\n ? tokenTransferList[tokenTransferList.length - 1]\n : null;\n const lastTokenId = last != null ? last.tokenId : null;\n\n if (\n last != null &&\n lastTokenId != null &&\n lastTokenId.compare(iTokenId) === 0\n ) {\n last.transfers.push(this._tokenTransfers[i++]);\n continue;\n }\n\n if (\n last != null &&\n lastTokenId != null &&\n lastTokenId.compare(jTokenId) === 0\n ) {\n last.nftTransfers.push(this._nftTransfers[j++]);\n continue;\n }\n\n const result = iTokenId.compare(jTokenId);\n\n if (result === 0) {\n tokenTransferList.push({\n tokenId: iTokenId,\n expectedDecimals:\n this._tokenTransfers[i].expectedDecimals,\n transfers: [this._tokenTransfers[i++]],\n nftTransfers: [this._nftTransfers[j++]],\n });\n } else if (result < 0) {\n tokenTransferList.push({\n tokenId: iTokenId,\n expectedDecimals:\n this._tokenTransfers[i].expectedDecimals,\n transfers: [this._tokenTransfers[i++]],\n nftTransfers: [],\n });\n } else {\n tokenTransferList.push({\n tokenId: jTokenId,\n expectedDecimals: null,\n transfers: [],\n nftTransfers: [this._nftTransfers[j++]],\n });\n }\n } else if (i < this._tokenTransfers.length) {\n const iTokenId = this._tokenTransfers[i].tokenId;\n\n let last;\n for (const transfer of tokenTransferList) {\n if (transfer.tokenId.compare(iTokenId) === 0) {\n last = transfer;\n }\n }\n const lastTokenId = last != null ? last.tokenId : null;\n\n if (\n last != null &&\n lastTokenId != null &&\n lastTokenId.compare(iTokenId) === 0\n ) {\n last.transfers.push(this._tokenTransfers[i++]);\n continue;\n }\n\n tokenTransferList.push({\n tokenId: iTokenId,\n expectedDecimals: this._tokenTransfers[i].expectedDecimals,\n transfers: [this._tokenTransfers[i++]],\n nftTransfers: [],\n });\n } else if (j < this._nftTransfers.length) {\n const jTokenId = this._nftTransfers[j].tokenId;\n\n let last;\n for (const transfer of tokenTransferList) {\n if (transfer.tokenId.compare(jTokenId) === 0) {\n last = transfer;\n }\n }\n const lastTokenId = last != null ? last.tokenId : null;\n\n if (\n last != null &&\n lastTokenId != null &&\n lastTokenId.compare(jTokenId) === 0\n ) {\n last.nftTransfers.push(this._nftTransfers[j++]);\n continue;\n }\n\n tokenTransferList.push({\n tokenId: jTokenId,\n expectedDecimals: null,\n transfers: [],\n nftTransfers: [this._nftTransfers[j++]],\n });\n }\n }\n\n return {\n tokenTransfers: tokenTransferList.map((tokenTransfer) => {\n return {\n token: tokenTransfer.tokenId._toProtobuf(),\n expectedDecimals:\n tokenTransfer.expectedDecimals != null\n ? { value: tokenTransfer.expectedDecimals }\n : null,\n transfers: tokenTransfer.transfers.map((transfer) =>\n transfer._toProtobuf(),\n ),\n nftTransfers: tokenTransfer.nftTransfers.map((transfer) =>\n transfer._toProtobuf(),\n ),\n };\n }),\n };\n }\n}\n"],"names":["AbstractTokenTransferTransaction","Transaction","constructor","props","super","this","_tokenTransfers","_nftTransfers","transfer","tokenTransfers","addTokenTransfer","tokenId","accountId","amount","nftTransfers","addNftTransfer","serial","sender","recipient","tokenIdOrNftId","senderAccountIdOrSerialNumber","receiverAccountIdOrSenderAccountId","receiver","_addNftTransfer","_addTokenTransfer","isApproved","expectedDecimals","_requireNotFrozen","token","TokenId","fromString","account","AccountId","value","convertAmountToLong","tokenTransfer","compare","add","push","TokenTransfer","nftId","senderAccountId","receiverAccountId","NftId","_","nftTransfer","serialNumber","TokenNftTransfer","addApprovedNftTransfer","addApprovedTokenTransfer","addTokenTransferWithDecimals","decimals","found","Error","tokenIdDecimals","map","NullableTokenDecimalMap","_set","TokenNftTransferMap","transferList","get","TokenTransferMap","transferMap","TokenTransferAccountMap","_makeTransactionData","tokenTransferList","sort","a","b","senderComparision","recipientComparision","i","j","length","iTokenId","jTokenId","last","lastTokenId","transfers","result","_toProtobuf"],"mappings":"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"}
|
|
@@ -6,10 +6,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _TokenId = _interopRequireDefault(require("./TokenId.cjs"));
|
|
8
8
|
var _AccountId = _interopRequireDefault(require("../account/AccountId.cjs"));
|
|
9
|
-
var
|
|
9
|
+
var _util = require("../util.cjs");
|
|
10
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
// SPDX-License-Identifier: Apache-2.0
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* @typedef {import("bignumber.js").default} BigNumber
|
|
15
|
+
*/
|
|
16
|
+
|
|
13
17
|
/**
|
|
14
18
|
* @namespace proto
|
|
15
19
|
* @typedef {import("@hashgraph/proto").proto.IAssessedCustomFee} HieroProto.proto.IAssessedCustomFee
|
|
@@ -33,7 +37,7 @@ class AssessedCustomFee {
|
|
|
33
37
|
* @param {object} props
|
|
34
38
|
* @param {AccountId | string} [props.feeCollectorAccountId]
|
|
35
39
|
* @param {TokenId | string} [props.tokenId]
|
|
36
|
-
* @param {Long | number} [props.amount]
|
|
40
|
+
* @param {Long | number | BigNumber | bigint} [props.amount]
|
|
37
41
|
* @param {AccountId[]} [props.payerAccountIds]
|
|
38
42
|
*/
|
|
39
43
|
constructor(props = {}) {
|
|
@@ -110,11 +114,11 @@ class AssessedCustomFee {
|
|
|
110
114
|
}
|
|
111
115
|
|
|
112
116
|
/**
|
|
113
|
-
* @param {Long | number} amount
|
|
117
|
+
* @param {Long | number | BigNumber | bigint} amount
|
|
114
118
|
* @returns {AssessedCustomFee}
|
|
115
119
|
*/
|
|
116
120
|
setAmount(amount) {
|
|
117
|
-
this._amount =
|
|
121
|
+
this._amount = (0, _util.convertAmountToLong)(amount);
|
|
118
122
|
return this;
|
|
119
123
|
}
|
|
120
124
|
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {import("bignumber.js").default} BigNumber
|
|
3
|
+
*/
|
|
1
4
|
/**
|
|
2
5
|
* @namespace proto
|
|
3
6
|
* @typedef {import("@hashgraph/proto").proto.IAssessedCustomFee} HieroProto.proto.IAssessedCustomFee
|
|
@@ -25,13 +28,13 @@ export default class AssessedCustomFee {
|
|
|
25
28
|
* @param {object} props
|
|
26
29
|
* @param {AccountId | string} [props.feeCollectorAccountId]
|
|
27
30
|
* @param {TokenId | string} [props.tokenId]
|
|
28
|
-
* @param {Long | number} [props.amount]
|
|
31
|
+
* @param {Long | number | BigNumber | bigint} [props.amount]
|
|
29
32
|
* @param {AccountId[]} [props.payerAccountIds]
|
|
30
33
|
*/
|
|
31
34
|
constructor(props?: {
|
|
32
35
|
feeCollectorAccountId?: string | AccountId | undefined;
|
|
33
36
|
tokenId?: string | TokenId | undefined;
|
|
34
|
-
amount?: number |
|
|
37
|
+
amount?: number | bigint | import("long") | import("bignumber.js").BigNumber | undefined;
|
|
35
38
|
payerAccountIds?: AccountId[] | undefined;
|
|
36
39
|
});
|
|
37
40
|
/**
|
|
@@ -73,10 +76,10 @@ export default class AssessedCustomFee {
|
|
|
73
76
|
*/
|
|
74
77
|
get amount(): Long | null;
|
|
75
78
|
/**
|
|
76
|
-
* @param {Long | number} amount
|
|
79
|
+
* @param {Long | number | BigNumber | bigint} amount
|
|
77
80
|
* @returns {AssessedCustomFee}
|
|
78
81
|
*/
|
|
79
|
-
setAmount(amount: Long | number): AssessedCustomFee;
|
|
82
|
+
setAmount(amount: Long | number | BigNumber | bigint): AssessedCustomFee;
|
|
80
83
|
/**
|
|
81
84
|
* @returns {?AccountId[]}
|
|
82
85
|
*/
|
|
@@ -97,6 +100,7 @@ export default class AssessedCustomFee {
|
|
|
97
100
|
*/
|
|
98
101
|
toJSON(): AssessedCustomFeeJSON;
|
|
99
102
|
}
|
|
103
|
+
export type BigNumber = import("bignumber.js").default;
|
|
100
104
|
export namespace HieroProto {
|
|
101
105
|
namespace proto {
|
|
102
106
|
type IAssessedCustomFee = import("@hashgraph/proto").proto.IAssessedCustomFee;
|
|
@@ -110,4 +114,3 @@ export type AssessedCustomFeeJSON = {
|
|
|
110
114
|
};
|
|
111
115
|
import AccountId from "../account/AccountId.js";
|
|
112
116
|
import TokenId from "./TokenId.js";
|
|
113
|
-
import Long from "long";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import t from"./TokenId.js";import o from"../account/AccountId.js";import e
|
|
1
|
+
import t from"./TokenId.js";import o from"../account/AccountId.js";import{convertAmountToLong as e}from"../util.js";class n{constructor(t={}){this._feeCollectorAccountId=null,null!=t.feeCollectorAccountId&&this.setFeeCollectorAccountId(t.feeCollectorAccountId),this._tokenId=null,null!=t.tokenId&&this.setTokenId(t.tokenId),this._amount=null,null!=t.amount&&this.setAmount(t.amount),this._payerAccountIds=null,null!=t.payerAccountIds&&this.setPayerAccountIds(t.payerAccountIds)}get feeCollectorAccountId(){return this._feeCollectorAccountId}setFeeCollectorAccountId(t){return this._feeCollectorAccountId="string"==typeof t?o.fromString(t):t,this}get tokenId(){return this._tokenId}setTokenId(o){return this._tokenId="string"==typeof o?t.fromString(o):o,this}get amount(){return this._amount}setAmount(t){return this._amount=e(t),this}get payerAccountIds(){return this._payerAccountIds}setPayerAccountIds(t){return this._payerAccountIds=t,this}static _fromProtobuf(e){return new n({feeCollectorAccountId:null!=e.feeCollectorAccountId?o._fromProtobuf(e.feeCollectorAccountId):void 0,tokenId:null!=e.tokenId?t._fromProtobuf(e.tokenId):void 0,amount:null!=e.amount?e.amount:void 0,payerAccountIds:null!=e.effectivePayerAccountId?e.effectivePayerAccountId.map(t=>o._fromProtobuf(t)):void 0})}_toProtobuf(){return{feeCollectorAccountId:null!=this.feeCollectorAccountId?this.feeCollectorAccountId._toProtobuf():null,tokenId:null!=this._tokenId?this._tokenId._toProtobuf():null,amount:this._amount,effectivePayerAccountId:null!=this._payerAccountIds?this._payerAccountIds.map(t=>t._toProtobuf()):null}}toJSON(){return{feeCollectorAccountId:this.feeCollectorAccountId?.toString()||null,tokenId:this._tokenId?.toString()||null,amount:this._amount?.toString()||null,payerAccountIds:this._payerAccountIds?.map(t=>t.toString())||[]}}}export{n as default};
|
|
2
2
|
//# sourceMappingURL=AssessedCustomFee.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssessedCustomFee.js","sources":["../../src/token/AssessedCustomFee.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport TokenId from \"./TokenId.js\";\nimport AccountId from \"../account/AccountId.js\";\nimport
|
|
1
|
+
{"version":3,"file":"AssessedCustomFee.js","sources":["../../src/token/AssessedCustomFee.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport TokenId from \"./TokenId.js\";\nimport AccountId from \"../account/AccountId.js\";\nimport { convertAmountToLong } from \"../util.js\";\n\n/**\n * @typedef {import(\"bignumber.js\").default} BigNumber\n */\n\n/**\n * @namespace proto\n * @typedef {import(\"@hashgraph/proto\").proto.IAssessedCustomFee} HieroProto.proto.IAssessedCustomFee\n */\n\n/**\n * @typedef {object} AssessedCustomFeeJSON\n * @property {?string} feeCollectorAccountId\n * @property {?string} tokenId\n * @property {?string} amount\n * @property {string[]} payerAccountIds\n */\n\n/**\n * Represents an assessed custom fee that has been evaluated and attached to a transaction.\n * This includes details about who collects the fee, which token the fee is paid in,\n * the amount of the fee, and which accounts are responsible for paying it.\n */\nexport default class AssessedCustomFee {\n /**\n * @param {object} props\n * @param {AccountId | string} [props.feeCollectorAccountId]\n * @param {TokenId | string} [props.tokenId]\n * @param {Long | number | BigNumber | bigint} [props.amount]\n * @param {AccountId[]} [props.payerAccountIds]\n */\n constructor(props = {}) {\n /**\n * @type {?AccountId}\n */\n this._feeCollectorAccountId = null;\n\n if (props.feeCollectorAccountId != null) {\n this.setFeeCollectorAccountId(props.feeCollectorAccountId);\n }\n\n /**\n * @type {?TokenId}\n */\n this._tokenId = null;\n\n if (props.tokenId != null) {\n this.setTokenId(props.tokenId);\n }\n\n /**\n * @type {?Long}\n */\n this._amount = null;\n\n if (props.amount != null) {\n this.setAmount(props.amount);\n }\n\n /**\n * @type {?AccountId[]}\n */\n this._payerAccountIds = null;\n\n if (props.payerAccountIds != null) {\n this.setPayerAccountIds(props.payerAccountIds);\n }\n }\n\n /**\n * @returns {?AccountId}\n */\n get feeCollectorAccountId() {\n return this._feeCollectorAccountId;\n }\n\n /**\n * @param {AccountId | string} feeCollectorAccountId\n * @returns {this}\n */\n setFeeCollectorAccountId(feeCollectorAccountId) {\n this._feeCollectorAccountId =\n typeof feeCollectorAccountId === \"string\"\n ? AccountId.fromString(feeCollectorAccountId)\n : feeCollectorAccountId;\n return this;\n }\n\n /**\n * @returns {?TokenId}\n */\n get tokenId() {\n return this._tokenId;\n }\n\n /**\n * @param {TokenId | string} tokenId\n * @returns {this}\n */\n setTokenId(tokenId) {\n this._tokenId =\n typeof tokenId === \"string\" ? TokenId.fromString(tokenId) : tokenId;\n return this;\n }\n\n /**\n * @returns {?Long}\n */\n get amount() {\n return this._amount;\n }\n\n /**\n * @param {Long | number | BigNumber | bigint} amount\n * @returns {AssessedCustomFee}\n */\n setAmount(amount) {\n this._amount = convertAmountToLong(amount);\n return this;\n }\n\n /**\n * @returns {?AccountId[]}\n */\n get payerAccountIds() {\n return this._payerAccountIds;\n }\n\n /**\n * @param {AccountId[]} payerAccountIds\n * @returns {AssessedCustomFee}\n */\n setPayerAccountIds(payerAccountIds) {\n this._payerAccountIds = payerAccountIds;\n return this;\n }\n\n /**\n * @internal\n * @param {HieroProto.proto.IAssessedCustomFee} fee\n * @returns {AssessedCustomFee}\n */\n static _fromProtobuf(fee) {\n return new AssessedCustomFee({\n feeCollectorAccountId:\n fee.feeCollectorAccountId != null\n ? AccountId._fromProtobuf(fee.feeCollectorAccountId)\n : undefined,\n tokenId:\n fee.tokenId != null\n ? TokenId._fromProtobuf(fee.tokenId)\n : undefined,\n amount: fee.amount != null ? fee.amount : undefined,\n payerAccountIds:\n fee.effectivePayerAccountId != null\n ? fee.effectivePayerAccountId.map((id) =>\n AccountId._fromProtobuf(id),\n )\n : undefined,\n });\n }\n\n /**\n * @internal\n * @abstract\n * @returns {HieroProto.proto.IAssessedCustomFee}\n */\n _toProtobuf() {\n return {\n feeCollectorAccountId:\n this.feeCollectorAccountId != null\n ? this.feeCollectorAccountId._toProtobuf()\n : null,\n tokenId: this._tokenId != null ? this._tokenId._toProtobuf() : null,\n amount: this._amount,\n effectivePayerAccountId:\n this._payerAccountIds != null\n ? this._payerAccountIds.map((id) => id._toProtobuf())\n : null,\n };\n }\n\n /**\n * @returns {AssessedCustomFeeJSON}\n */\n toJSON() {\n return {\n feeCollectorAccountId:\n this.feeCollectorAccountId?.toString() || null,\n tokenId: this._tokenId?.toString() || null,\n amount: this._amount?.toString() || null,\n payerAccountIds:\n this._payerAccountIds?.map((id) => id.toString()) || [],\n };\n }\n}\n"],"names":["AssessedCustomFee","constructor","props","this","_feeCollectorAccountId","feeCollectorAccountId","setFeeCollectorAccountId","_tokenId","tokenId","setTokenId","_amount","amount","setAmount","_payerAccountIds","payerAccountIds","setPayerAccountIds","AccountId","fromString","TokenId","convertAmountToLong","_fromProtobuf","fee","undefined","effectivePayerAccountId","map","id","_toProtobuf","toJSON","toString"],"mappings":"oHA4Be,MAAMA,EAQjB,WAAAC,CAAYC,EAAQ,IAIhBC,KAAKC,uBAAyB,KAEK,MAA/BF,EAAMG,uBACNF,KAAKG,yBAAyBJ,EAAMG,uBAMxCF,KAAKI,SAAW,KAEK,MAAjBL,EAAMM,SACNL,KAAKM,WAAWP,EAAMM,SAM1BL,KAAKO,QAAU,KAEK,MAAhBR,EAAMS,QACNR,KAAKS,UAAUV,EAAMS,QAMzBR,KAAKU,iBAAmB,KAEK,MAAzBX,EAAMY,iBACNX,KAAKY,mBAAmBb,EAAMY,gBAE1C,CAKI,yBAAIT,GACA,OAAOF,KAAKC,sBACpB,CAMI,wBAAAE,CAAyBD,GAKrB,OAJAF,KAAKC,uBACgC,iBAA1BC,EACDW,EAAUC,WAAWZ,GACrBA,EACHF,IACf,CAKI,WAAIK,GACA,OAAOL,KAAKI,QACpB,CAMI,UAAAE,CAAWD,GAGP,OAFAL,KAAKI,SACkB,iBAAZC,EAAuBU,EAAQD,WAAWT,GAAWA,EACzDL,IACf,CAKI,UAAIQ,GACA,OAAOR,KAAKO,OACpB,CAMI,SAAAE,CAAUD,GAEN,OADAR,KAAKO,QAAUS,EAAoBR,GAC5BR,IACf,CAKI,mBAAIW,GACA,OAAOX,KAAKU,gBACpB,CAMI,kBAAAE,CAAmBD,GAEf,OADAX,KAAKU,iBAAmBC,EACjBX,IACf,CAOI,oBAAOiB,CAAcC,GACjB,OAAO,IAAIrB,EAAkB,CACzBK,sBACiC,MAA7BgB,EAAIhB,sBACEW,EAAUI,cAAcC,EAAIhB,4BAC5BiB,EACVd,QACmB,MAAfa,EAAIb,QACEU,EAAQE,cAAcC,EAAIb,cAC1Bc,EACVX,OAAsB,MAAdU,EAAIV,OAAiBU,EAAIV,YAASW,EAC1CR,gBACmC,MAA/BO,EAAIE,wBACEF,EAAIE,wBAAwBC,IAAKC,GAC7BT,EAAUI,cAAcK,SAE5BH,GAEtB,CAOI,WAAAI,GACI,MAAO,CACHrB,sBACkC,MAA9BF,KAAKE,sBACCF,KAAKE,sBAAsBqB,cAC3B,KACVlB,QAA0B,MAAjBL,KAAKI,SAAmBJ,KAAKI,SAASmB,cAAgB,KAC/Df,OAAQR,KAAKO,QACba,wBAC6B,MAAzBpB,KAAKU,iBACCV,KAAKU,iBAAiBW,IAAKC,GAAOA,EAAGC,eACrC,KAEtB,CAKI,MAAAC,GACI,MAAO,CACHtB,sBACIF,KAAKE,uBAAuBuB,YAAc,KAC9CpB,QAASL,KAAKI,UAAUqB,YAAc,KACtCjB,OAAQR,KAAKO,SAASkB,YAAc,KACpCd,gBACIX,KAAKU,kBAAkBW,IAAKC,GAAOA,EAAGG,aAAe,GAErE"}
|
|
@@ -7,11 +7,15 @@ exports.default = void 0;
|
|
|
7
7
|
var _TokenId = _interopRequireDefault(require("./TokenId.cjs"));
|
|
8
8
|
var _CustomFee = _interopRequireDefault(require("./CustomFee.cjs"));
|
|
9
9
|
var _AccountId = _interopRequireDefault(require("../account/AccountId.cjs"));
|
|
10
|
-
var _long = _interopRequireDefault(require("long"));
|
|
11
10
|
var _Hbar = _interopRequireDefault(require("../Hbar.cjs"));
|
|
11
|
+
var _util = require("../util.cjs");
|
|
12
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
13
|
// SPDX-License-Identifier: Apache-2.0
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* @typedef {import("bignumber.js").default} BigNumber
|
|
17
|
+
*/
|
|
18
|
+
|
|
15
19
|
/**
|
|
16
20
|
* @namespace proto
|
|
17
21
|
* @typedef {import("@hashgraph/proto").proto.ICustomFee} HieroProto.proto.ICustomFee
|
|
@@ -25,7 +29,7 @@ class CustomFixedFee extends _CustomFee.default {
|
|
|
25
29
|
* @param {AccountId | string} [props.feeCollectorAccountId]
|
|
26
30
|
* @param {boolean} [props.allCollectorsAreExempt]
|
|
27
31
|
* @param {TokenId | string} [props.denominatingTokenId]
|
|
28
|
-
* @param {Long | number} [props.amount]
|
|
32
|
+
* @param {Long | number | BigNumber | bigint} [props.amount]
|
|
29
33
|
*/
|
|
30
34
|
constructor(props = {}) {
|
|
31
35
|
super(props);
|
|
@@ -96,11 +100,11 @@ class CustomFixedFee extends _CustomFee.default {
|
|
|
96
100
|
}
|
|
97
101
|
|
|
98
102
|
/**
|
|
99
|
-
* @param {Long | number} amount
|
|
103
|
+
* @param {Long | number | BigNumber | bigint} amount
|
|
100
104
|
* @returns {CustomFixedFee}
|
|
101
105
|
*/
|
|
102
106
|
setAmount(amount) {
|
|
103
|
-
this._amount =
|
|
107
|
+
this._amount = (0, _util.convertAmountToLong)(amount);
|
|
104
108
|
return this;
|
|
105
109
|
}
|
|
106
110
|
|