UNPKG

@hiero-ledger/sdk

Version:
3 lines (2 loc) 2.99 kB
import{constructor as t,fromEvmAddress as r,fromStringSplitter as s,validateChecksum as e,fromSolidityAddress as o,toSolidityAddress as m,toEvmAddress as i,toStringWithChecksum as n,compare as u}from"../EntityIdHelper.js";import h from"../Key.js";import*as d from"@hiero-ledger/proto";import a from"../Cache.js";import{decode as l,encode as c}from"../encoding/hex.js";import{arrayEqual as f}from"../array.js";import v from"long";import{isLongZeroAddress as A}from"../util.js";import g from"../EvmAddress.js";class p extends h{constructor(r,s,e,o){super();const m=t(r,s,e);this.shard=m.shard,this.realm=m.realm,this.num=m.num,this.evmAddress=null!=o?o:null,this._checksum=null}static fromEvmAddress(t,s,e){const o=g.fromString(e),[m,i,n,u]=r(t,s,o.toString());return new p(m,i,n,u?.toBytes())}static fromString(t){const r=s(t);if(Number.isNaN(r.shard)||Number.isNaN(r.realm))throw new Error("invalid format for entity ID");const e=null!=r.shard?v.fromString(r.shard):v.ZERO,o=null!=r.realm?v.fromString(r.realm):v.ZERO,[m,i]=r.numOrHex.length<40?[v.fromString(r.numOrHex),void 0]:[v.ZERO,l(r.numOrHex)];return new p(e,o,m,i)}static _fromProtobuf(t){return new p(null!=t.shardNum?t.shardNum:0,null!=t.realmNum?t.realmNum:0,null!=t.contractNum?t.contractNum:0)}get checksum(){return this._checksum}async populateAccountNum(t){const r=`${t.mirrorRestApiBaseUrl}/contracts/${this.toEvmAddress()}`,s=await fetch(r),e=(await s.json()).contract_id;return this.num=v.fromString(e.slice(e.lastIndexOf(".")+1)),this}validate(t){console.warn("Deprecated: Use `validateChecksum` instead"),this.validateChecksum(t)}validateChecksum(t){e(this.shard,this.realm,this.num,this._checksum,t)}static fromBytes(t){return p._fromProtobuf(d.proto.ContractID.decode(t))}static fromSolidityAddress(t){return A(l(t))?new p(...o(t)):this.fromEvmAddress(0,0,t)}toSolidityAddress(){return null!=this.evmAddress?c(this.evmAddress):m([this.shard,this.realm,this.num])}toEvmAddress(){return null!=this.evmAddress?i(this.evmAddress):i(this.num)}_toProtobuf(){return{contractNum:this.num,shardNum:this.shard,realmNum:this.realm,evmAddress:this.evmAddress}}toString(){return null!=this.evmAddress?`${this.shard.toString()}.${this.realm.toString()}.${c(this.evmAddress)}`:`${this.shard.toString()}.${this.realm.toString()}.${this.num.toString()}`}toStringWithChecksum(t){return n(this.toString(),t)}toBytes(){return d.proto.ContractID.encode(this._toProtobuf()).finish()}clone(){const t=new p(this);return t._checksum=this._checksum,t.evmAddress=this.evmAddress,t}compare(t){return u([this.shard,this.realm,this.num],[t.shard,t.realm,t.num])}equals(t){let r=!1;return null!=this.evmAddress&&null!=t.evmAddress&&(r=f(this.evmAddress,t.evmAddress)),this.shard.eq(t.shard)&&this.realm.eq(t.realm)&&this.num.eq(t.num)&&r}_toProtobufKey(){return{contractID:this._toProtobuf()}}static __fromProtobufKey(t){return p._fromProtobuf(t)}}a.setContractId(t=>p.__fromProtobufKey(t));export{p as default}; //# sourceMappingURL=ContractId.js.map