@hashgraph/sdk
Version:
3 lines (2 loc) • 3.19 kB
JavaScript
import r from"../Hbar.js";import t from"../token/TokenId.js";import s from"./AccountId.js";import n,{TRANSACTION_REGISTRY as o}from"../transaction/Transaction.js";import a from"../Transfer.js";import e from"../token/TokenTransfer.js";import f from"./HbarTransferMap.js";import c from"../token/TokenNftTransfer.js";import i from"../token/NftId.js";import u from"../token/AbstractTokenTransferTransaction.js";class T extends u{constructor(t={}){super(),this._hbarTransfers=[],this._defaultMaxTransactionFee=new r(1);for(const r of null!=t.hbarTransfers?t.hbarTransfers:[])this.addHbarTransfer(r.accountId,r.amount)}static _fromProtobuf(r,t,s,o,f){const i=f[0].cryptoTransfer,u=new T;return u._tokenTransfers=e._fromProtobuf(null!=i.tokenTransfers?i.tokenTransfers:[]),u._hbarTransfers=a._fromProtobuf(null!=i.transfers&&null!=i.transfers.accountAmounts?i.transfers.accountAmounts:[]),u._nftTransfers=c._fromProtobuf(null!=i.tokenTransfers?i.tokenTransfers:[]),n._fromProtobufTransactions(u,r,t,s,o,f)}get hbarTransfers(){const r=new f;for(const t of this._hbarTransfers)r._set(t.accountId,t.amount);return r}get hbarTransfersList(){return this._hbarTransfers}_addHbarTransfer(t,n,o){this._requireNotFrozen();const e=t instanceof s?t.clone():s.fromString(t),f=n instanceof r?n:new r(n);for(const t of this._hbarTransfers)if(0===t.accountId.compare(e))return t.amount=r.fromTinybars(t.amount.toTinybars().add(f.toTinybars())),this;return this._hbarTransfers.push(new a({accountId:e,amount:f,isApproved:o})),this}addHbarTransfer(r,t){return this._addHbarTransfer(r,t,!1)}addApprovedHbarTransfer(r,t){return this._addHbarTransfer(r,t,!0)}_validateChecksums(r){for(const t of this._hbarTransfers)t.accountId.validateChecksum(r);for(const t of this._tokenTransfers)t.tokenId.validateChecksum(r),t.accountId.validateChecksum(r);for(const t of this._nftTransfers)t.tokenId.validateChecksum(r),t.senderAccountId.validateChecksum(r),t.receiverAccountId.validateChecksum(r)}setHbarTransferApproval(r,t){const n="string"==typeof r?s.fromString(r):r;for(const r of this._hbarTransfers)0===r.accountId.compare(n)&&(r.isApproved=t);return this}setTokenTransferApproval(r,n,o){const a="string"==typeof r?t.fromString(r):r,e="string"==typeof n?s.fromString(n):n;for(const r of this._tokenTransfers)0===r.tokenId.compare(a)&&0===r.accountId.compare(e)&&(r.isApproved=o);return this}setNftTransferApproval(r,t){const s="string"==typeof r?i.fromString(r):r;for(const r of this._nftTransfers)0===r.tokenId.compare(s.tokenId)&&0===r.serialNumber.compare(s.serial)&&(r.isApproved=t);return this}_execute(r,t){return r.crypto.cryptoTransfer(t)}_getTransactionDataCase(){return"cryptoTransfer"}_makeTransactionData(){const{tokenTransfers:r}=super._makeTransactionData();return this._hbarTransfers.sort(((r,t)=>r.accountId.compare(t.accountId))),{transfers:{accountAmounts:this._hbarTransfers.map((r=>({accountID:r.accountId._toProtobuf(),amount:r.amount.toTinybars(),isApproval:r.isApproved})))},tokenTransfers:r}}_getLogId(){return`TransferTransaction:${this._transactionIds.current.validStart.toString()}`}}o.set("cryptoTransfer",T._fromProtobuf);export{T as default};
//# sourceMappingURL=TransferTransaction.js.map