@hiero-ledger/sdk 2.73.2 → 2.75.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 +368 -202
- 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/network/AddressBookQueryWeb.cjs +88 -60
- package/lib/network/AddressBookQueryWeb.d.ts +7 -37
- package/lib/network/AddressBookQueryWeb.js +1 -1
- package/lib/network/AddressBookQueryWeb.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 +16 -12
- 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/network/AddressBookQueryWeb.js +122 -91
- 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":"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":"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"}
|
|
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
|
|
|
@@ -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.ICustomFee} HieroProto.proto.ICustomFee
|
|
@@ -17,13 +20,13 @@ export default class CustomFixedFee extends CustomFee {
|
|
|
17
20
|
* @param {AccountId | string} [props.feeCollectorAccountId]
|
|
18
21
|
* @param {boolean} [props.allCollectorsAreExempt]
|
|
19
22
|
* @param {TokenId | string} [props.denominatingTokenId]
|
|
20
|
-
* @param {Long | number} [props.amount]
|
|
23
|
+
* @param {Long | number | BigNumber | bigint} [props.amount]
|
|
21
24
|
*/
|
|
22
25
|
constructor(props?: {
|
|
23
26
|
feeCollectorAccountId?: string | AccountId | undefined;
|
|
24
27
|
allCollectorsAreExempt?: boolean | undefined;
|
|
25
28
|
denominatingTokenId?: string | TokenId | undefined;
|
|
26
|
-
amount?: number |
|
|
29
|
+
amount?: number | bigint | import("long") | import("bignumber.js").BigNumber | undefined;
|
|
27
30
|
});
|
|
28
31
|
/**
|
|
29
32
|
* @type {?TokenId}
|
|
@@ -60,10 +63,10 @@ export default class CustomFixedFee extends CustomFee {
|
|
|
60
63
|
*/
|
|
61
64
|
get amount(): Long | null;
|
|
62
65
|
/**
|
|
63
|
-
* @param {Long | number} amount
|
|
66
|
+
* @param {Long | number | BigNumber | bigint} amount
|
|
64
67
|
* @returns {CustomFixedFee}
|
|
65
68
|
*/
|
|
66
|
-
setAmount(amount: Long | number): CustomFixedFee;
|
|
69
|
+
setAmount(amount: Long | number | BigNumber | bigint): CustomFixedFee;
|
|
67
70
|
/**
|
|
68
71
|
* @internal
|
|
69
72
|
* @abstract
|
|
@@ -71,6 +74,7 @@ export default class CustomFixedFee extends CustomFee {
|
|
|
71
74
|
*/
|
|
72
75
|
_toTopicFeeProtobuf(): HieroProto.proto.IFixedCustomFee;
|
|
73
76
|
}
|
|
77
|
+
export type BigNumber = import("bignumber.js").default;
|
|
74
78
|
export namespace HieroProto {
|
|
75
79
|
namespace proto {
|
|
76
80
|
type ICustomFee = import("@hashgraph/proto").proto.ICustomFee;
|
|
@@ -80,6 +84,5 @@ export namespace HieroProto {
|
|
|
80
84
|
}
|
|
81
85
|
import CustomFee from "./CustomFee.js";
|
|
82
86
|
import TokenId from "./TokenId.js";
|
|
83
|
-
import Long from "long";
|
|
84
87
|
import Hbar from "../Hbar.js";
|
|
85
88
|
import AccountId from "../account/AccountId.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import n from"./TokenId.js";import o from"./CustomFee.js";import t from"../account/AccountId.js";import e from"
|
|
1
|
+
import n from"./TokenId.js";import o from"./CustomFee.js";import t from"../account/AccountId.js";import e from"../Hbar.js";import{convertAmountToLong as i}from"../util.js";class l extends o{constructor(n={}){super(n),this._denominatingTokenId=null,null!=n.denominatingTokenId&&this.setDenominatingTokenId(n.denominatingTokenId),this._amount=null,null!=n.amount&&this.setAmount(n.amount)}setHbarAmount(n){return this._amount=n.toTinybars(),this._denominatingTokenId=null,this}get hbarAmount(){return null!=this._denominatingTokenId?null:e.fromTinybars(null!=this._amount?this._amount:0)}setDenominatingTokenToSameToken(){return this._denominatingTokenId=new n(0,0,0),this}get denominatingTokenId(){return this._denominatingTokenId}setDenominatingTokenId(o){return this._denominatingTokenId="string"==typeof o?n.fromString(o):o,this}get amount(){return this._amount}setAmount(n){return this._amount=i(n),this}static _fromProtobuf(o){const e=o.fixedFee;return new l({feeCollectorAccountId:null!=o.feeCollectorAccountId?t._fromProtobuf(o.feeCollectorAccountId):void 0,allCollectorsAreExempt:null!=o.allCollectorsAreExempt?o.allCollectorsAreExempt:void 0,denominatingTokenId:null!=e.denominatingTokenId?n._fromProtobuf(e.denominatingTokenId):void 0,amount:null!=e.amount?e.amount:void 0})}_toProtobuf(){return{feeCollectorAccountId:null!=this.feeCollectorAccountId?this.feeCollectorAccountId._toProtobuf():null,allCollectorsAreExempt:this.allCollectorsAreExempt,fixedFee:{denominatingTokenId:null!=this._denominatingTokenId?this._denominatingTokenId._toProtobuf():null,amount:this._amount}}}_toTopicFeeProtobuf(){return{feeCollectorAccountId:null!=this.feeCollectorAccountId?this.feeCollectorAccountId._toProtobuf():null,fixedFee:{denominatingTokenId:null!=this._denominatingTokenId?this._denominatingTokenId._toProtobuf():null,amount:this._amount}}}}export{l as default};
|
|
2
2
|
//# sourceMappingURL=CustomFixedFee.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomFixedFee.js","sources":["../../src/token/CustomFixedFee.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport TokenId from \"./TokenId.js\";\nimport CustomFee from \"./CustomFee.js\";\nimport AccountId from \"../account/AccountId.js\";\nimport
|
|
1
|
+
{"version":3,"file":"CustomFixedFee.js","sources":["../../src/token/CustomFixedFee.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport TokenId from \"./TokenId.js\";\nimport CustomFee from \"./CustomFee.js\";\nimport AccountId from \"../account/AccountId.js\";\nimport Hbar from \"../Hbar.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.ICustomFee} HieroProto.proto.ICustomFee\n * @typedef {import(\"@hashgraph/proto\").proto.IFixedFee} HieroProto.proto.IFixedFee\n * @typedef {import(\"@hashgraph/proto\").proto.IFixedCustomFee} HieroProto.proto.IFixedCustomFee\n */\n\nexport default class CustomFixedFee extends CustomFee {\n /**\n * @param {object} props\n * @param {AccountId | string} [props.feeCollectorAccountId]\n * @param {boolean} [props.allCollectorsAreExempt]\n * @param {TokenId | string} [props.denominatingTokenId]\n * @param {Long | number | BigNumber | bigint} [props.amount]\n */\n constructor(props = {}) {\n super(props);\n\n /**\n * @type {?TokenId}\n */\n this._denominatingTokenId = null;\n\n if (props.denominatingTokenId != null) {\n this.setDenominatingTokenId(props.denominatingTokenId);\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 /**\n * @param {Hbar} amount\n * @returns {CustomFixedFee}\n */\n setHbarAmount(amount) {\n this._amount = amount.toTinybars();\n this._denominatingTokenId = null;\n return this;\n }\n\n /**\n * @returns {TokenId | Hbar | null}\n */\n get hbarAmount() {\n return this._denominatingTokenId != null\n ? null\n : Hbar.fromTinybars(this._amount != null ? this._amount : 0);\n }\n\n /**\n * @returns {CustomFixedFee}\n */\n setDenominatingTokenToSameToken() {\n this._denominatingTokenId = new TokenId(0, 0, 0);\n return this;\n }\n\n /**\n * @returns {?TokenId}\n */\n get denominatingTokenId() {\n return this._denominatingTokenId;\n }\n\n /**\n * @param {TokenId | string} denominatingTokenId\n * @returns {CustomFixedFee}\n */\n setDenominatingTokenId(denominatingTokenId) {\n this._denominatingTokenId =\n typeof denominatingTokenId === \"string\"\n ? TokenId.fromString(denominatingTokenId)\n : denominatingTokenId;\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 {CustomFixedFee}\n */\n setAmount(amount) {\n this._amount = convertAmountToLong(amount);\n return this;\n }\n\n /**\n * @internal\n * @override\n * @param {HieroProto.proto.ICustomFee} info\n * @returns {CustomFixedFee}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n static _fromProtobuf(info) {\n const fee = /** @type {HieroProto.proto.IFixedFee} */ (info.fixedFee);\n\n return new CustomFixedFee({\n feeCollectorAccountId:\n info.feeCollectorAccountId != null\n ? AccountId._fromProtobuf(info.feeCollectorAccountId)\n : undefined,\n allCollectorsAreExempt:\n info.allCollectorsAreExempt != null\n ? info.allCollectorsAreExempt\n : undefined,\n denominatingTokenId:\n fee.denominatingTokenId != null\n ? TokenId._fromProtobuf(fee.denominatingTokenId)\n : undefined,\n amount: fee.amount != null ? fee.amount : undefined,\n });\n }\n\n /**\n * @internal\n * @abstract\n * @returns {HieroProto.proto.ICustomFee}\n */\n _toProtobuf() {\n return {\n feeCollectorAccountId:\n this.feeCollectorAccountId != null\n ? this.feeCollectorAccountId._toProtobuf()\n : null,\n allCollectorsAreExempt: this.allCollectorsAreExempt,\n fixedFee: {\n denominatingTokenId:\n this._denominatingTokenId != null\n ? this._denominatingTokenId._toProtobuf()\n : null,\n amount: this._amount,\n },\n };\n }\n\n /**\n * @internal\n * @abstract\n * @returns {HieroProto.proto.IFixedCustomFee}\n */\n _toTopicFeeProtobuf() {\n return {\n feeCollectorAccountId:\n this.feeCollectorAccountId != null\n ? this.feeCollectorAccountId._toProtobuf()\n : null,\n fixedFee: {\n denominatingTokenId:\n this._denominatingTokenId != null\n ? this._denominatingTokenId._toProtobuf()\n : null,\n amount: this._amount,\n },\n };\n }\n}\n"],"names":["CustomFixedFee","CustomFee","constructor","props","super","this","_denominatingTokenId","denominatingTokenId","setDenominatingTokenId","_amount","amount","setAmount","setHbarAmount","toTinybars","hbarAmount","Hbar","fromTinybars","setDenominatingTokenToSameToken","TokenId","fromString","convertAmountToLong","_fromProtobuf","info","fee","feeCollectorAccountId","AccountId","undefined","allCollectorsAreExempt","_toProtobuf","fixedFee","_toTopicFeeProtobuf"],"mappings":"4KAmBe,MAAMA,UAAuBC,EAQxC,WAAAC,CAAYC,EAAQ,IAChBC,MAAMD,GAKNE,KAAKC,qBAAuB,KAEK,MAA7BH,EAAMI,qBACNF,KAAKG,uBAAuBL,EAAMI,qBAMtCF,KAAKI,QAAU,KAEK,MAAhBN,EAAMO,QACNL,KAAKM,UAAUR,EAAMO,OAEjC,CAMI,aAAAE,CAAcF,GAGV,OAFAL,KAAKI,QAAUC,EAAOG,aACtBR,KAAKC,qBAAuB,KACrBD,IACf,CAKI,cAAIS,GACA,OAAoC,MAA7BT,KAAKC,qBACN,KACAS,EAAKC,aAA6B,MAAhBX,KAAKI,QAAkBJ,KAAKI,QAAU,EACtE,CAKI,+BAAAQ,GAEI,OADAZ,KAAKC,qBAAuB,IAAIY,EAAQ,EAAG,EAAG,GACvCb,IACf,CAKI,uBAAIE,GACA,OAAOF,KAAKC,oBACpB,CAMI,sBAAAE,CAAuBD,GAKnB,OAJAF,KAAKC,qBAC8B,iBAAxBC,EACDW,EAAQC,WAAWZ,GACnBA,EACHF,IACf,CAKI,UAAIK,GACA,OAAOL,KAAKI,OACpB,CAMI,SAAAE,CAAUD,GAEN,OADAL,KAAKI,QAAUW,EAAoBV,GAC5BL,IACf,CASI,oBAAOgB,CAAcC,GACjB,MAAMC,EAAiDD,EAAa,SAEpE,OAAO,IAAItB,EAAe,CACtBwB,sBACkC,MAA9BF,EAAKE,sBACCC,EAAUJ,cAAcC,EAAKE,4BAC7BE,EACVC,uBACmC,MAA/BL,EAAKK,uBACCL,EAAKK,4BACLD,EACVnB,oBAC+B,MAA3BgB,EAAIhB,oBACEW,EAAQG,cAAcE,EAAIhB,0BAC1BmB,EACVhB,OAAsB,MAAda,EAAIb,OAAiBa,EAAIb,YAASgB,GAEtD,CAOI,WAAAE,GACI,MAAO,CACHJ,sBACkC,MAA9BnB,KAAKmB,sBACCnB,KAAKmB,sBAAsBI,cAC3B,KACVD,uBAAwBtB,KAAKsB,uBAC7BE,SAAU,CACNtB,oBACiC,MAA7BF,KAAKC,qBACCD,KAAKC,qBAAqBsB,cAC1B,KACVlB,OAAQL,KAAKI,SAG7B,CAOI,mBAAAqB,GACI,MAAO,CACHN,sBACkC,MAA9BnB,KAAKmB,sBACCnB,KAAKmB,sBAAsBI,cAC3B,KACVC,SAAU,CACNtB,oBACiC,MAA7BF,KAAKC,qBACCD,KAAKC,qBAAqBsB,cAC1B,KACVlB,OAAQL,KAAKI,SAG7B"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _long = _interopRequireDefault(require("long"));
|
|
8
8
|
var _PendingAirdropId = _interopRequireDefault(require("./PendingAirdropId.cjs"));
|
|
9
|
+
var _util = require("../util.cjs");
|
|
9
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
11
|
// SPDX-License-Identifier: Apache-2.0
|
|
11
12
|
/**
|
|
@@ -13,15 +14,19 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
13
14
|
* @typedef {import("@hashgraph/proto").proto.PendingAirdropRecord} HieroProto.proto.PendingAirdropRecord
|
|
14
15
|
*/
|
|
15
16
|
|
|
17
|
+
/**
|
|
18
|
+
* @typedef {import("bignumber.js").default} BigNumber
|
|
19
|
+
*/
|
|
20
|
+
|
|
16
21
|
class PendingAirdropRecord {
|
|
17
22
|
/**
|
|
18
23
|
* @param {object} props
|
|
19
24
|
* @param {PendingAirdropId} props.airdropId
|
|
20
|
-
* @param {Long} props.amount
|
|
25
|
+
* @param {Long | number | BigNumber | bigint} props.amount
|
|
21
26
|
*/
|
|
22
27
|
constructor(props) {
|
|
23
28
|
this.airdropId = props.airdropId;
|
|
24
|
-
this.amount = props.amount;
|
|
29
|
+
this.amount = (0, _util.convertAmountToLong)(props.amount);
|
|
25
30
|
}
|
|
26
31
|
|
|
27
32
|
/**
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {import("bignumber.js").default} BigNumber
|
|
3
|
+
*/
|
|
1
4
|
export default class PendingAirdropRecord {
|
|
2
5
|
/**
|
|
3
6
|
* @param {HieroProto.proto.PendingAirdropRecord} pb
|
|
@@ -7,11 +10,11 @@ export default class PendingAirdropRecord {
|
|
|
7
10
|
/**
|
|
8
11
|
* @param {object} props
|
|
9
12
|
* @param {PendingAirdropId} props.airdropId
|
|
10
|
-
* @param {Long} props.amount
|
|
13
|
+
* @param {Long | number | BigNumber | bigint} props.amount
|
|
11
14
|
*/
|
|
12
15
|
constructor(props: {
|
|
13
16
|
airdropId: PendingAirdropId;
|
|
14
|
-
amount: Long;
|
|
17
|
+
amount: Long | number | BigNumber | bigint;
|
|
15
18
|
});
|
|
16
19
|
airdropId: PendingAirdropId;
|
|
17
20
|
amount: Long;
|
|
@@ -25,5 +28,6 @@ export namespace HieroProto {
|
|
|
25
28
|
type PendingAirdropRecord = import("@hashgraph/proto").proto.PendingAirdropRecord;
|
|
26
29
|
}
|
|
27
30
|
}
|
|
31
|
+
export type BigNumber = import("bignumber.js").default;
|
|
28
32
|
import PendingAirdropId from "./PendingAirdropId.js";
|
|
29
33
|
import Long from "long";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import r from"long";import o from"./PendingAirdropId.js";class
|
|
1
|
+
import r from"long";import o from"./PendingAirdropId.js";import{convertAmountToLong as i}from"../util.js";class t{constructor(r){this.airdropId=r.airdropId,this.amount=i(r.amount)}toBytes(){return{pendingAirdropId:this.airdropId.toBytes(),pendingAirdropValue:{amount:this.amount}}}static fromBytes(i){if(null==i.pendingAirdropId)throw new Error("pendingAirdropId is required");const d=o.fromBytes(i.pendingAirdropId),n=i.pendingAirdropValue?.amount;return new t({airdropId:d,amount:n||r.ZERO})}}export{t as default};
|
|
2
2
|
//# sourceMappingURL=PendingAirdropRecord.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PendingAirdropRecord.js","sources":["../../src/token/PendingAirdropRecord.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n/**\n * @namespace proto\n * @typedef {import(\"@hashgraph/proto\").proto.PendingAirdropRecord} HieroProto.proto.PendingAirdropRecord\n */\n\nimport Long from \"long\";\nimport PendingAirdropId from \"./PendingAirdropId.js\";\n\nexport default class PendingAirdropRecord {\n /**\n * @param {object} props\n * @param {PendingAirdropId} props.airdropId\n * @param {Long} props.amount\n */\n constructor(props) {\n this.airdropId = props.airdropId;\n this.amount = props.amount;\n }\n\n /**\n * @returns {HieroProto.proto.PendingAirdropRecord}\n */\n toBytes() {\n return {\n pendingAirdropId: this.airdropId.toBytes(),\n pendingAirdropValue: {\n amount: this.amount,\n },\n };\n }\n\n /**\n * @param {HieroProto.proto.PendingAirdropRecord} pb\n * @returns {PendingAirdropRecord}\n */\n static fromBytes(pb) {\n if (pb.pendingAirdropId == null) {\n throw new Error(\"pendingAirdropId is required\");\n }\n\n const airdropId = PendingAirdropId.fromBytes(pb.pendingAirdropId);\n const amount = pb.pendingAirdropValue?.amount;\n\n return new PendingAirdropRecord({\n airdropId: airdropId,\n amount: amount ? amount : Long.ZERO,\n });\n }\n}\n"],"names":["PendingAirdropRecord","constructor","props","this","airdropId","amount","toBytes","pendingAirdropId","pendingAirdropValue","fromBytes","pb","Error","PendingAirdropId","Long","ZERO"],"mappings":"
|
|
1
|
+
{"version":3,"file":"PendingAirdropRecord.js","sources":["../../src/token/PendingAirdropRecord.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n/**\n * @namespace proto\n * @typedef {import(\"@hashgraph/proto\").proto.PendingAirdropRecord} HieroProto.proto.PendingAirdropRecord\n */\n\nimport Long from \"long\";\nimport PendingAirdropId from \"./PendingAirdropId.js\";\nimport { convertAmountToLong } from \"../util.js\";\n\n/**\n * @typedef {import(\"bignumber.js\").default} BigNumber\n */\n\nexport default class PendingAirdropRecord {\n /**\n * @param {object} props\n * @param {PendingAirdropId} props.airdropId\n * @param {Long | number | BigNumber | bigint} props.amount\n */\n constructor(props) {\n this.airdropId = props.airdropId;\n this.amount = convertAmountToLong(props.amount);\n }\n\n /**\n * @returns {HieroProto.proto.PendingAirdropRecord}\n */\n toBytes() {\n return {\n pendingAirdropId: this.airdropId.toBytes(),\n pendingAirdropValue: {\n amount: this.amount,\n },\n };\n }\n\n /**\n * @param {HieroProto.proto.PendingAirdropRecord} pb\n * @returns {PendingAirdropRecord}\n */\n static fromBytes(pb) {\n if (pb.pendingAirdropId == null) {\n throw new Error(\"pendingAirdropId is required\");\n }\n\n const airdropId = PendingAirdropId.fromBytes(pb.pendingAirdropId);\n const amount = pb.pendingAirdropValue?.amount;\n\n return new PendingAirdropRecord({\n airdropId: airdropId,\n amount: amount ? amount : Long.ZERO,\n });\n }\n}\n"],"names":["PendingAirdropRecord","constructor","props","this","airdropId","amount","convertAmountToLong","toBytes","pendingAirdropId","pendingAirdropValue","fromBytes","pb","Error","PendingAirdropId","Long","ZERO"],"mappings":"0GAce,MAAMA,EAMjB,WAAAC,CAAYC,GACRC,KAAKC,UAAYF,EAAME,UACvBD,KAAKE,OAASC,EAAoBJ,EAAMG,OAChD,CAKI,OAAAE,GACI,MAAO,CACHC,iBAAkBL,KAAKC,UAAUG,UACjCE,oBAAqB,CACjBJ,OAAQF,KAAKE,QAG7B,CAMI,gBAAOK,CAAUC,GACb,GAA2B,MAAvBA,EAAGH,iBACH,MAAM,IAAII,MAAM,gCAGpB,MAAMR,EAAYS,EAAiBH,UAAUC,EAAGH,kBAC1CH,EAASM,EAAGF,qBAAqBJ,OAEvC,OAAO,IAAIL,EAAqB,CAC5BI,UAAWA,EACXC,OAAQA,GAAkBS,EAAKC,MAE3C"}
|
|
@@ -30,6 +30,7 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
30
30
|
* @typedef {import("../account/AccountId.js").default} AccountId
|
|
31
31
|
* @typedef {import("./NftId.js").default} NftId
|
|
32
32
|
* @typedef {import("./TokenId.js").default} TokenId
|
|
33
|
+
* @typedef {import("bignumber.js").default} BigNumber
|
|
33
34
|
*/
|
|
34
35
|
|
|
35
36
|
/**
|
|
@@ -112,7 +113,7 @@ class TokenAirdropTransaction extends _AbstractTokenTransferTransaction.default
|
|
|
112
113
|
*
|
|
113
114
|
* @param {TokenId} tokenId
|
|
114
115
|
* @param {AccountId} accountId
|
|
115
|
-
* @param {Long} amount
|
|
116
|
+
* @param {Long | number | BigNumber | bigint} amount
|
|
116
117
|
* @param {number} expectedDecimals
|
|
117
118
|
* @returns {this}
|
|
118
119
|
*/
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* @typedef {import("../account/AccountId.js").default} AccountId
|
|
16
16
|
* @typedef {import("./NftId.js").default} NftId
|
|
17
17
|
* @typedef {import("./TokenId.js").default} TokenId
|
|
18
|
+
* @typedef {import("bignumber.js").default} BigNumber
|
|
18
19
|
*/
|
|
19
20
|
/**
|
|
20
21
|
* Airdrop one or more tokens to one or more accounts.
|
|
@@ -91,11 +92,11 @@ export default class TokenAirdropTransaction extends AbstractTokenTransferTransa
|
|
|
91
92
|
*
|
|
92
93
|
* @param {TokenId} tokenId
|
|
93
94
|
* @param {AccountId} accountId
|
|
94
|
-
* @param {Long} amount
|
|
95
|
+
* @param {Long | number | BigNumber | bigint} amount
|
|
95
96
|
* @param {number} expectedDecimals
|
|
96
97
|
* @returns {this}
|
|
97
98
|
*/
|
|
98
|
-
addApprovedTokenTransferWithDecimals(tokenId: TokenId, accountId: AccountId, amount: Long, expectedDecimals: number): this;
|
|
99
|
+
addApprovedTokenTransferWithDecimals(tokenId: TokenId, accountId: AccountId, amount: Long | number | BigNumber | bigint, expectedDecimals: number): this;
|
|
99
100
|
}
|
|
100
101
|
export namespace HieroProto {
|
|
101
102
|
namespace proto {
|
|
@@ -114,6 +115,7 @@ export type TransactionId = import("../transaction/TransactionId.js").default;
|
|
|
114
115
|
export type AccountId = import("../account/AccountId.js").default;
|
|
115
116
|
export type NftId = import("./NftId.js").default;
|
|
116
117
|
export type TokenId = import("./TokenId.js").default;
|
|
118
|
+
export type BigNumber = import("bignumber.js").default;
|
|
117
119
|
import AbstractTokenTransferTransaction from "./AbstractTokenTransferTransaction.js";
|
|
118
120
|
import TokenTransfer from "./TokenTransfer.js";
|
|
119
121
|
import NftTransfer from "./TokenNftTransfer.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenAirdropTransaction.js","sources":["../../src/token/TokenAirdropTransaction.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\nimport Transaction, {\n TRANSACTION_REGISTRY,\n} from \"../transaction/Transaction.js\";\nimport TokenTransfer from \"./TokenTransfer.js\";\nimport NftTransfer from \"./TokenNftTransfer.js\";\nimport AbstractTokenTransferTransaction from \"./AbstractTokenTransferTransaction.js\";\n\n/**\n * @namespace proto\n * @typedef {import(\"@hashgraph/proto\").proto.ITokenAirdropTransactionBody} HieroProto.proto.ITokenAirdropTransactionBody\n * @typedef {import(\"@hashgraph/proto\").proto.ITransaction} HieroProto.proto.ITransaction\n * @typedef {import(\"@hashgraph/proto\").proto.TransactionID} HieroProto.proto.TransactionID\n * @typedef {import(\"@hashgraph/proto\").proto.AccountID} HieroProto.proto.AccountID\n * @typedef {import(\"@hashgraph/proto\").proto.ISignedTransaction} HieroProto.proto.ISignedTransaction\n * @typedef {import(\"@hashgraph/proto\").proto.ITransactionBody} HieroProto.proto.ITransactionBody\n * @typedef {import(\"@hashgraph/proto\").proto.TransactionBody} HieroProto.proto.TransactionBody\n * @typedef {import(\"@hashgraph/proto\").proto.ITransactionResponse} HieroProto.proto.ITransactionResponse\n */\n\n/**\n * @typedef {import(\"../channel/Channel.js\").default} Channel\n * @typedef {import(\"../transaction/TransactionId.js\").default} TransactionId\n * @typedef {import(\"../account/AccountId.js\").default} AccountId\n * @typedef {import(\"./NftId.js\").default} NftId\n * @typedef {import(\"./TokenId.js\").default} TokenId\n */\n\n/**\n * Airdrop one or more tokens to one or more accounts.\n *\n * ### Effects\n * This distributes tokens from the balance of one or more sending account(s)\n * to the balance of one or more recipient accounts. Accounts MAY receive the\n * tokens in one of four ways.\n *\n * - An account already associated to the token to be distributed SHALL\n * receive the airdropped tokens immediately to the recipient account\n * balance.<br/>\n * The fee for this transfer SHALL include the transfer, the airdrop fee,\n * and any custom fees.\n * - An account with available automatic association slots SHALL be\n * automatically associated to the token, and SHALL immediately receive\n * the airdropped tokens to the recipient account balance.<br/>\n * The fee for this transfer SHALL include the transfer, the association,\n * the cost to renew that association once, the airdrop fee, and\n * any custom fees.\n * - An account with \"receiver signature required\" set SHALL have a\n * \"Pending Airdrop\" created and must claim that airdrop with a\n * `claimAirdrop` transaction.<br/>\n * The fee for this transfer SHALL include the transfer, the association,\n * the cost to renew that association once, the airdrop fee, and\n * any custom fees.<br/>\n * If the pending airdrop is not claimed immediately, the `sender` SHALL\n * pay the cost to renew the token association, and the cost to maintain\n * the pending airdrop, until the pending airdrop is claimed or cancelled.\n * - An account with no available automatic association slots SHALL have a\n * \"Pending Airdrop\" created and must claim that airdrop with a\n * `claimAirdrop` transaction.<br/>\n * The fee for this transfer SHALL include the transfer, the association,\n * the cost to renew that association once, the airdrop fee, and any custom\n * fees.<br/>\n * If the pending airdrop is not claimed immediately, the `sender` SHALL\n * pay the cost to renew the token association, and the cost to maintain\n * the pending airdrop, until the pending airdrop is claimed or cancelled.\n *\n * If an airdrop would create a pending airdrop for a fungible/common token,\n * and a pending airdrop for the same sender, receiver, and token already\n * exists, the existing pending airdrop SHALL be updated to add the new\n * amount to the existing airdrop, rather than creating\n * a new pending airdrop.<br/>\n * Any airdrop that completes immediately SHALL be irreversible. Any airdrop\n * that results in a \"Pending Airdrop\" MAY be canceled via a `cancelAirdrop`\n * transaction.<br/>\n * All transfer fees (including custom fees and royalties), as well as the\n * rent cost for the first auto-renewal period for any automatic-association\n * slot occupied by the airdropped tokens, SHALL be charged to the account\n * paying for this transaction.<br/>\n */\nexport default class TokenAirdropTransaction extends AbstractTokenTransferTransaction {\n /**\n * @param {object} props\n * @param {TokenTransfer[]} [props.tokenTransfers]\n * @param {NftTransfer[]} [props.nftTransfers]\n */\n constructor(props = {}) {\n super();\n\n if (props.tokenTransfers != null) {\n for (const tokenTransfer of props.tokenTransfers) {\n this._addTokenTransfer(\n tokenTransfer.tokenId,\n tokenTransfer.accountId,\n tokenTransfer.amount,\n tokenTransfer.isApproved,\n tokenTransfer.expectedDecimals,\n );\n }\n }\n /**\n * @private\n * @type {NftTransfer[]}\n */\n this._nftTransfers = [];\n if (props.nftTransfers != null) {\n for (const nftTransfer of props.nftTransfers) {\n this._addNftTransfer(\n nftTransfer.isApproved,\n nftTransfer.tokenId,\n nftTransfer.serialNumber,\n nftTransfer.senderAccountId,\n nftTransfer.receiverAccountId,\n );\n }\n }\n }\n\n /**\n *\n * @param {TokenId} tokenId\n * @param {AccountId} accountId\n * @param {Long} amount\n * @param {number} expectedDecimals\n * @returns {this}\n */\n addApprovedTokenTransferWithDecimals(\n tokenId,\n accountId,\n amount,\n expectedDecimals,\n ) {\n this._requireNotFrozen();\n this._addTokenTransfer(\n tokenId,\n accountId,\n amount,\n true,\n expectedDecimals,\n );\n return this;\n }\n\n /**\n * @internal\n * @param {HieroProto.proto.ITransaction[]} transactions\n * @param {HieroProto.proto.ISignedTransaction[]} signedTransactions\n * @param {TransactionId[]} transactionIds\n * @param {AccountId[]} nodeIds\n * @param {HieroProto.proto.ITransactionBody[]} bodies\n * @returns {TokenAirdropTransaction}\n */\n static _fromProtobuf(\n transactions,\n signedTransactions,\n transactionIds,\n nodeIds,\n bodies,\n ) {\n const body = bodies[0];\n const tokenAirdrop =\n /** @type {HieroProto.proto.ITokenAirdropTransactionBody} */ (\n body.tokenAirdrop\n );\n\n const tokenTransfers = TokenTransfer._fromProtobuf(\n tokenAirdrop.tokenTransfers ?? [],\n );\n const nftTransfers = NftTransfer._fromProtobuf(\n tokenAirdrop.tokenTransfers ?? [],\n );\n\n return Transaction._fromProtobufTransactions(\n new TokenAirdropTransaction({\n nftTransfers: nftTransfers,\n tokenTransfers: tokenTransfers,\n }),\n transactions,\n signedTransactions,\n transactionIds,\n nodeIds,\n bodies,\n );\n }\n\n /**\n * @override\n * @internal\n * @param {Channel} channel\n * @param {HieroProto.proto.ITransaction} request\n * @returns {Promise<HieroProto.proto.ITransactionResponse>}\n */\n _execute(channel, request) {\n return channel.token.airdropTokens(request);\n }\n\n /**\n * @override\n * @protected\n * @returns {NonNullable<HieroProto.proto.TransactionBody[\"data\"]>}\n */\n _getTransactionDataCase() {\n return \"tokenAirdrop\";\n }\n\n /**\n * @returns {string}\n */\n _getLogId() {\n const timestamp = /** @type {import(\"../Timestamp.js\").default} */ (\n this._transactionIds.current.validStart\n );\n return `TokenAirdropTransaction:${timestamp.toString()}`;\n }\n}\n\nTRANSACTION_REGISTRY.set(\n \"tokenAirdrop\",\n // eslint-disable-next-line @typescript-eslint/unbound-method\n TokenAirdropTransaction._fromProtobuf,\n);\n"],"names":["TokenAirdropTransaction","AbstractTokenTransferTransaction","constructor","props","super","tokenTransfers","tokenTransfer","this","_addTokenTransfer","tokenId","accountId","amount","isApproved","expectedDecimals","_nftTransfers","nftTransfers","nftTransfer","_addNftTransfer","serialNumber","senderAccountId","receiverAccountId","addApprovedTokenTransferWithDecimals","_requireNotFrozen","_fromProtobuf","transactions","signedTransactions","transactionIds","nodeIds","bodies","tokenAirdrop","TokenTransfer","NftTransfer","Transaction","_fromProtobufTransactions","_execute","channel","request","token","airdropTokens","_getTransactionDataCase","_getLogId","_transactionIds","current","toString","TRANSACTION_REGISTRY","set"],"mappings":"oMA+Ee,MAAMA,UAAgCC,EAMjD,WAAAC,CAAYC,EAAQ,IAGhB,GAFAC,QAE4B,MAAxBD,EAAME,eACN,IAAK,MAAMC,KAAiBH,EAAME,eAC9BE,KAAKC,kBACDF,EAAcG,QACdH,EAAcI,UACdJ,EAAcK,OACdL,EAAcM,WACdN,EAAcO,kBAS1B,GADAN,KAAKO,cAAgB,GACK,MAAtBX,EAAMY,aACN,IAAK,MAAMC,KAAeb,EAAMY,aAC5BR,KAAKU,gBACDD,EAAYJ,WACZI,EAAYP,QACZO,EAAYE,aACZF,EAAYG,gBACZH,EAAYI,kBAIhC,CAUI,oCAAAC,CACIZ,EACAC,EACAC,EACAE,GAUA,OARAN,KAAKe,oBACLf,KAAKC,kBACDC,EACAC,EACAC,GACA,EACAE,GAEGN,IACf,CAWI,oBAAOgB,CACHC,EACAC,EACAC,EACAC,EACAC,GAEA,MACMC,EADOD,EAAO,GAIf,aAECvB,EAAiByB,EAAcP,cACjCM,EAAaxB,gBAAkB,IAE7BU,EAAegB,EAAYR,cAC7BM,EAAaxB,gBAAkB,IAGnC,OAAO2B,EAAYC,0BACf,IAAIjC,EAAwB,CACxBe,aAAcA,EACdV,eAAgBA,IAEpBmB,EACAC,EACAC,EACAC,EACAC,EAEZ,CASI,QAAAM,CAASC,EAASC,GACd,OAAOD,EAAQE,MAAMC,cAAcF,EAC3C,CAOI,uBAAAG,GACI,MAAO,cACf,CAKI,SAAAC,GAII,MAAO,2BAFHjC,KAAKkC,gBAAgBC,QACxB,WAC2CC,YACpD,EAGAC,EAAqBC,IACjB,eAEA7C,EAAwBuB"}
|
|
1
|
+
{"version":3,"file":"TokenAirdropTransaction.js","sources":["../../src/token/TokenAirdropTransaction.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\nimport Transaction, {\n TRANSACTION_REGISTRY,\n} from \"../transaction/Transaction.js\";\nimport TokenTransfer from \"./TokenTransfer.js\";\nimport NftTransfer from \"./TokenNftTransfer.js\";\nimport AbstractTokenTransferTransaction from \"./AbstractTokenTransferTransaction.js\";\n\n/**\n * @namespace proto\n * @typedef {import(\"@hashgraph/proto\").proto.ITokenAirdropTransactionBody} HieroProto.proto.ITokenAirdropTransactionBody\n * @typedef {import(\"@hashgraph/proto\").proto.ITransaction} HieroProto.proto.ITransaction\n * @typedef {import(\"@hashgraph/proto\").proto.TransactionID} HieroProto.proto.TransactionID\n * @typedef {import(\"@hashgraph/proto\").proto.AccountID} HieroProto.proto.AccountID\n * @typedef {import(\"@hashgraph/proto\").proto.ISignedTransaction} HieroProto.proto.ISignedTransaction\n * @typedef {import(\"@hashgraph/proto\").proto.ITransactionBody} HieroProto.proto.ITransactionBody\n * @typedef {import(\"@hashgraph/proto\").proto.TransactionBody} HieroProto.proto.TransactionBody\n * @typedef {import(\"@hashgraph/proto\").proto.ITransactionResponse} HieroProto.proto.ITransactionResponse\n */\n\n/**\n * @typedef {import(\"../channel/Channel.js\").default} Channel\n * @typedef {import(\"../transaction/TransactionId.js\").default} TransactionId\n * @typedef {import(\"../account/AccountId.js\").default} AccountId\n * @typedef {import(\"./NftId.js\").default} NftId\n * @typedef {import(\"./TokenId.js\").default} TokenId\n * @typedef {import(\"bignumber.js\").default} BigNumber\n */\n\n/**\n * Airdrop one or more tokens to one or more accounts.\n *\n * ### Effects\n * This distributes tokens from the balance of one or more sending account(s)\n * to the balance of one or more recipient accounts. Accounts MAY receive the\n * tokens in one of four ways.\n *\n * - An account already associated to the token to be distributed SHALL\n * receive the airdropped tokens immediately to the recipient account\n * balance.<br/>\n * The fee for this transfer SHALL include the transfer, the airdrop fee,\n * and any custom fees.\n * - An account with available automatic association slots SHALL be\n * automatically associated to the token, and SHALL immediately receive\n * the airdropped tokens to the recipient account balance.<br/>\n * The fee for this transfer SHALL include the transfer, the association,\n * the cost to renew that association once, the airdrop fee, and\n * any custom fees.\n * - An account with \"receiver signature required\" set SHALL have a\n * \"Pending Airdrop\" created and must claim that airdrop with a\n * `claimAirdrop` transaction.<br/>\n * The fee for this transfer SHALL include the transfer, the association,\n * the cost to renew that association once, the airdrop fee, and\n * any custom fees.<br/>\n * If the pending airdrop is not claimed immediately, the `sender` SHALL\n * pay the cost to renew the token association, and the cost to maintain\n * the pending airdrop, until the pending airdrop is claimed or cancelled.\n * - An account with no available automatic association slots SHALL have a\n * \"Pending Airdrop\" created and must claim that airdrop with a\n * `claimAirdrop` transaction.<br/>\n * The fee for this transfer SHALL include the transfer, the association,\n * the cost to renew that association once, the airdrop fee, and any custom\n * fees.<br/>\n * If the pending airdrop is not claimed immediately, the `sender` SHALL\n * pay the cost to renew the token association, and the cost to maintain\n * the pending airdrop, until the pending airdrop is claimed or cancelled.\n *\n * If an airdrop would create a pending airdrop for a fungible/common token,\n * and a pending airdrop for the same sender, receiver, and token already\n * exists, the existing pending airdrop SHALL be updated to add the new\n * amount to the existing airdrop, rather than creating\n * a new pending airdrop.<br/>\n * Any airdrop that completes immediately SHALL be irreversible. Any airdrop\n * that results in a \"Pending Airdrop\" MAY be canceled via a `cancelAirdrop`\n * transaction.<br/>\n * All transfer fees (including custom fees and royalties), as well as the\n * rent cost for the first auto-renewal period for any automatic-association\n * slot occupied by the airdropped tokens, SHALL be charged to the account\n * paying for this transaction.<br/>\n */\nexport default class TokenAirdropTransaction extends AbstractTokenTransferTransaction {\n /**\n * @param {object} props\n * @param {TokenTransfer[]} [props.tokenTransfers]\n * @param {NftTransfer[]} [props.nftTransfers]\n */\n constructor(props = {}) {\n super();\n\n if (props.tokenTransfers != null) {\n for (const tokenTransfer of props.tokenTransfers) {\n this._addTokenTransfer(\n tokenTransfer.tokenId,\n tokenTransfer.accountId,\n tokenTransfer.amount,\n tokenTransfer.isApproved,\n tokenTransfer.expectedDecimals,\n );\n }\n }\n /**\n * @private\n * @type {NftTransfer[]}\n */\n this._nftTransfers = [];\n if (props.nftTransfers != null) {\n for (const nftTransfer of props.nftTransfers) {\n this._addNftTransfer(\n nftTransfer.isApproved,\n nftTransfer.tokenId,\n nftTransfer.serialNumber,\n nftTransfer.senderAccountId,\n nftTransfer.receiverAccountId,\n );\n }\n }\n }\n\n /**\n *\n * @param {TokenId} tokenId\n * @param {AccountId} accountId\n * @param {Long | number | BigNumber | bigint} amount\n * @param {number} expectedDecimals\n * @returns {this}\n */\n addApprovedTokenTransferWithDecimals(\n tokenId,\n accountId,\n amount,\n expectedDecimals,\n ) {\n this._requireNotFrozen();\n this._addTokenTransfer(\n tokenId,\n accountId,\n amount,\n true,\n expectedDecimals,\n );\n return this;\n }\n\n /**\n * @internal\n * @param {HieroProto.proto.ITransaction[]} transactions\n * @param {HieroProto.proto.ISignedTransaction[]} signedTransactions\n * @param {TransactionId[]} transactionIds\n * @param {AccountId[]} nodeIds\n * @param {HieroProto.proto.ITransactionBody[]} bodies\n * @returns {TokenAirdropTransaction}\n */\n static _fromProtobuf(\n transactions,\n signedTransactions,\n transactionIds,\n nodeIds,\n bodies,\n ) {\n const body = bodies[0];\n const tokenAirdrop =\n /** @type {HieroProto.proto.ITokenAirdropTransactionBody} */ (\n body.tokenAirdrop\n );\n\n const tokenTransfers = TokenTransfer._fromProtobuf(\n tokenAirdrop.tokenTransfers ?? [],\n );\n const nftTransfers = NftTransfer._fromProtobuf(\n tokenAirdrop.tokenTransfers ?? [],\n );\n\n return Transaction._fromProtobufTransactions(\n new TokenAirdropTransaction({\n nftTransfers: nftTransfers,\n tokenTransfers: tokenTransfers,\n }),\n transactions,\n signedTransactions,\n transactionIds,\n nodeIds,\n bodies,\n );\n }\n\n /**\n * @override\n * @internal\n * @param {Channel} channel\n * @param {HieroProto.proto.ITransaction} request\n * @returns {Promise<HieroProto.proto.ITransactionResponse>}\n */\n _execute(channel, request) {\n return channel.token.airdropTokens(request);\n }\n\n /**\n * @override\n * @protected\n * @returns {NonNullable<HieroProto.proto.TransactionBody[\"data\"]>}\n */\n _getTransactionDataCase() {\n return \"tokenAirdrop\";\n }\n\n /**\n * @returns {string}\n */\n _getLogId() {\n const timestamp = /** @type {import(\"../Timestamp.js\").default} */ (\n this._transactionIds.current.validStart\n );\n return `TokenAirdropTransaction:${timestamp.toString()}`;\n }\n}\n\nTRANSACTION_REGISTRY.set(\n \"tokenAirdrop\",\n // eslint-disable-next-line @typescript-eslint/unbound-method\n TokenAirdropTransaction._fromProtobuf,\n);\n"],"names":["TokenAirdropTransaction","AbstractTokenTransferTransaction","constructor","props","super","tokenTransfers","tokenTransfer","this","_addTokenTransfer","tokenId","accountId","amount","isApproved","expectedDecimals","_nftTransfers","nftTransfers","nftTransfer","_addNftTransfer","serialNumber","senderAccountId","receiverAccountId","addApprovedTokenTransferWithDecimals","_requireNotFrozen","_fromProtobuf","transactions","signedTransactions","transactionIds","nodeIds","bodies","tokenAirdrop","TokenTransfer","NftTransfer","Transaction","_fromProtobufTransactions","_execute","channel","request","token","airdropTokens","_getTransactionDataCase","_getLogId","_transactionIds","current","toString","TRANSACTION_REGISTRY","set"],"mappings":"oMAgFe,MAAMA,UAAgCC,EAMjD,WAAAC,CAAYC,EAAQ,IAGhB,GAFAC,QAE4B,MAAxBD,EAAME,eACN,IAAK,MAAMC,KAAiBH,EAAME,eAC9BE,KAAKC,kBACDF,EAAcG,QACdH,EAAcI,UACdJ,EAAcK,OACdL,EAAcM,WACdN,EAAcO,kBAS1B,GADAN,KAAKO,cAAgB,GACK,MAAtBX,EAAMY,aACN,IAAK,MAAMC,KAAeb,EAAMY,aAC5BR,KAAKU,gBACDD,EAAYJ,WACZI,EAAYP,QACZO,EAAYE,aACZF,EAAYG,gBACZH,EAAYI,kBAIhC,CAUI,oCAAAC,CACIZ,EACAC,EACAC,EACAE,GAUA,OARAN,KAAKe,oBACLf,KAAKC,kBACDC,EACAC,EACAC,GACA,EACAE,GAEGN,IACf,CAWI,oBAAOgB,CACHC,EACAC,EACAC,EACAC,EACAC,GAEA,MACMC,EADOD,EAAO,GAIf,aAECvB,EAAiByB,EAAcP,cACjCM,EAAaxB,gBAAkB,IAE7BU,EAAegB,EAAYR,cAC7BM,EAAaxB,gBAAkB,IAGnC,OAAO2B,EAAYC,0BACf,IAAIjC,EAAwB,CACxBe,aAAcA,EACdV,eAAgBA,IAEpBmB,EACAC,EACAC,EACAC,EACAC,EAEZ,CASI,QAAAM,CAASC,EAASC,GACd,OAAOD,EAAQE,MAAMC,cAAcF,EAC3C,CAOI,uBAAAG,GACI,MAAO,cACf,CAKI,SAAAC,GAII,MAAO,2BAFHjC,KAAKkC,gBAAgBC,QACxB,WAC2CC,YACpD,EAGAC,EAAqBC,IACjB,eAEA7C,EAAwBuB"}
|