@hashgraph/sdk
Version:
3 lines (2 loc) • 2.08 kB
JavaScript
import*as t from"@ethersproject/rlp";import{decode as i,encode as s}from"./encoding/hex.js";import a from"./EthereumTransactionData.js";import r from"./Cache.js";class e extends a{constructor(t){super(t),this.chainId=t.chainId,this.nonce=t.nonce,this.maxPriorityGas=t.maxPriorityGas,this.maxGas=t.maxGas,this.gasLimit=t.gasLimit,this.to=t.to,this.value=t.value,this.callData=t.callData,this.authorizationList=t.authorizationList,this.accessList=t.accessList,this.recId=t.recId,this.r=t.r,this.s=t.s}static fromBytes(s){if(0===s.length)throw new Error("empty bytes");const a=t.decode(s.subarray(1));if(!Array.isArray(a))throw new Error("ethereum data is not a list");if(13!==a.length)throw new Error("invalid ethereum transaction data");if(!Array.isArray(a[9]))throw new Error("authorization list must be an array");const r=a[9].map(t=>{if(!Array.isArray(t)||6!==t.length)throw new Error("invalid authorization list entry: must be [chainId, contractAddress, nonce, yParity, r, s]");return[i(t[0]),i(t[1]),i(t[2]),i(t[3]),i(t[4]),i(t[5])]});return new e({chainId:i(a[0]),nonce:i(a[1]),maxPriorityGas:i(a[2]),maxGas:i(a[3]),gasLimit:i(a[4]),to:i(a[5]),value:i(a[6]),callData:i(a[7]),accessList:a[8].map(t=>i(t)),authorizationList:r,recId:i(a[10]),r:i(a[11]),s:i(a[12])})}toBytes(){const s=t.encode([this.chainId,this.nonce,this.maxPriorityGas,this.maxGas,this.gasLimit,this.to,this.value,this.callData,this.accessList,this.authorizationList,this.recId,this.r,this.s]);return i("04"+s.substring(2))}toString(){return JSON.stringify(this.toJSON(),null,2)}toJSON(){return{chainId:s(this.chainId),nonce:s(this.nonce),maxPriorityGas:s(this.maxPriorityGas),maxGas:s(this.maxGas),gasLimit:s(this.gasLimit),to:s(this.to),value:s(this.value),callData:s(this.callData),authorizationList:this.authorizationList.map(([t,i,a,r,e,o])=>[s(t),s(i),s(a),s(r),s(e),s(o)]),accessList:this.accessList.map(t=>s(t)),recId:s(this.recId),r:s(this.r),s:s(this.s)}}}r.setEthereumTransactionDataEip7702FromBytes(t=>e.fromBytes(t));export{e as default};
//# sourceMappingURL=EthereumTransactionDataEip7702.js.map