@hashgraph/sdk
Version:
3 lines (2 loc) • 2.4 kB
JavaScript
import t from"../account/AccountId.js";import n from"../Timestamp.js";import*as r from"@hiero-ledger/proto";import e from"long";import o from"../Cache.js";class i{constructor(t,n,r=!1,e=null){this.accountId=t,this.validStart=n,this.scheduled=r,this.nonce=null,null!=e&&0!=e&&this.setNonce(e),Object.seal(this)}setNonce(t){return this.nonce="number"==typeof t?e.fromNumber(t):t,this}static withValidStart(t,n){return new i(t,n)}static generate(r){return new i("string"==typeof r?t.fromString(r):new t(r),n.generate())}static fromString(r){let o,c,s,a,u,l;return[o,l]=r.split("@"),[c,l]=l.split("."),l.includes("?")?([s,l]=l.split("?scheduled"),a=!0,u=l.includes("/")?l.replace("/",""):null):l.includes("/")?([s,u]=l.split("/"),a=!1):s=l,new i(t.fromString(o),new n(e.fromValue(c),e.fromValue(s)),a,null!=u?e.fromString(u):null)}setScheduled(t){return this.scheduled=t,this}toString(){if(null!=this.accountId&&null!=this.validStart){const t=String(this.validStart.nanos).padStart(9,"0"),n=null!=this.nonce?"/".concat(this.nonce.toString()):"",r=this.scheduled?"?scheduled":"";return`${this.accountId.toString()}@${this.validStart.seconds.toString()}.${t}${r}${n}`}throw new Error("neither `accountId` nor `validStart` are set")}static _fromProtobuf(r){if(null!=r.accountID&&null!=r.transactionValidStart)return new i(t._fromProtobuf(r.accountID),n._fromProtobuf(r.transactionValidStart),null!=r.scheduled?r.scheduled:void 0,null!=r.nonce?r.nonce:void 0);throw new Error("Neither `nonce` or `accountID` and `transactionValidStart` are set")}_toProtobuf(){return{accountID:null!=this.accountId?this.accountId._toProtobuf():null,transactionValidStart:null!=this.validStart?this.validStart._toProtobuf():null,scheduled:this.scheduled,nonce:null!=this.nonce?this.nonce.toInt():null}}static fromBytes(t){return i._fromProtobuf(r.proto.TransactionID.decode(t))}toBytes(){return r.proto.TransactionID.encode(this._toProtobuf()).finish()}clone(){return new i(this.accountId,this.validStart,this.scheduled,this.nonce)}compare(t){const n=this.accountId.compare(t.accountId);return 0!=n?n:this.validStart.compare(t.validStart)}getReceipt(t){return o.transactionReceiptQueryConstructor().setTransactionId(this).execute(t)}async getRecord(t){return await this.getReceipt(t),o.transactionRecordQueryConstructor().setTransactionId(this).execute(t)}}export{i as default};
//# sourceMappingURL=TransactionId.js.map