@gardenfi/core 0.2.0-beta.66 → 0.2.0-beta.67

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/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";var Fs=Object.defineProperty;var Us=(e,t,r)=>t in e?Fs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var pt=(e,t,r)=>Us(e,typeof t!="symbol"?t+"":t,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("@catalogfi/utils"),J=require("@gardenfi/orderbook"),ge=require("@gardenfi/utils"),He=require("viem"),Ns=require("varuint-bitcoin"),Ms=require("tiny-secp256k1"),An=require("@catalogfi/wallets"),gi=require("bitcoinjs-lib"),Ds=require("bignumber.js");function fn(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const Rn=fn(Ns),wt=fn(Ms),ye=fn(gi);var or=(e=>(e[e.evm=14400]="evm",e[e.btc=288]="btc",e))(or||{}),ue=(e=>(e.Idle="Idle",e.Initiate="Initiate",e.Redeem="Redeem",e.Refund="Refund",e))(ue||{});function Wt(e){return{formatters:void 0,fees:void 0,serializers:void 0,...e}}const mi="2.21.30";let kt={getDocsUrl:({docsBaseUrl:e,docsPath:t="",docsSlug:r})=>t?`${e??"https://viem.sh"}${t}${r?`#${r}`:""}`:void 0,version:`viem@${mi}`};class Z extends Error{constructor(t,r={}){var u;const n=(()=>{var l;return r.cause instanceof Z?r.cause.details:(l=r.cause)!=null&&l.message?r.cause.message:r.details})(),i=r.cause instanceof Z&&r.cause.docsPath||r.docsPath,a=(u=kt.getDocsUrl)==null?void 0:u.call(kt,{...r,docsPath:i}),f=[t||"An error occurred.","",...r.metaMessages?[...r.metaMessages,""]:[],...a?[`Docs: ${a}`]:[],...n?[`Details: ${n}`]:[],...kt.version?[`Version: ${kt.version}`]:[]].join(`
2
2
  `);super(f,r.cause?{cause:r.cause}:void 0),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BaseError"}),this.details=n,this.docsPath=i,this.metaMessages=r.metaMessages,this.name=r.name??this.name,this.shortMessage=t,this.version=mi}walk(t){return _i(this,t)}}function _i(e,t){return t!=null&&t(e)?e:e&&typeof e=="object"&&"cause"in e?_i(e.cause,t):t?null:e}class $s extends Z{constructor({max:t,min:r,signed:n,size:i,value:a}){super(`Number "${a}" is not in safe ${i?`${i*8}-bit ${n?"signed":"unsigned"} `:""}integer range ${t?`(${r} to ${t})`:`(above ${r})`}`,{name:"IntegerOutOfRangeError"})}}class Hs extends Z{constructor({givenSize:t,maxSize:r}){super(`Size cannot exceed ${r} bytes. Given size: ${t} bytes.`,{name:"SizeOverflowError"})}}function qt(e,{strict:t=!0}={}){return!e||typeof e!="string"?!1:t?/^0x[0-9a-fA-F]*$/.test(e):e.startsWith("0x")}function xt(e){return qt(e,{strict:!1})?Math.ceil((e.length-2)/2):e.length}function ar(e,{dir:t="left"}={}){let r=typeof e=="string"?e.replace("0x",""):e,n=0;for(let i=0;i<r.length-1&&r[t==="left"?i:r.length-i-1].toString()==="0";i++)n++;return r=t==="left"?r.slice(n):r.slice(0,r.length-n),typeof e=="string"?(r.length===1&&t==="right"&&(r=`${r}0`),`0x${r.length%2===1?`0${r}`:r}`):r}class zs extends Z{constructor({offset:t,position:r,size:n}){super(`Slice ${r==="start"?"starting":"ending"} at offset "${t}" is out-of-bounds (size: ${n}).`,{name:"SliceOffsetOutOfBoundsError"})}}class wi extends Z{constructor({size:t,targetSize:r,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} size (${t}) exceeds padding size (${r}).`,{name:"SizeExceedsPaddingSizeError"})}}function St(e,{dir:t,size:r=32}={}){return typeof e=="string"?js(e,{dir:t,size:r}):Gs(e,{dir:t,size:r})}function js(e,{dir:t,size:r=32}={}){if(r===null)return e;const n=e.replace("0x","");if(n.length>r*2)throw new wi({size:Math.ceil(n.length/2),targetSize:r,type:"hex"});return`0x${n[t==="right"?"padEnd":"padStart"](r*2,"0")}`}function Gs(e,{dir:t,size:r=32}={}){if(r===null)return e;if(e.length>r)throw new wi({size:e.length,targetSize:r,type:"bytes"});const n=new Uint8Array(r);for(let i=0;i<r;i++){const a=t==="right";n[a?i:r-i-1]=e[a?i:e.length-i-1]}return n}const Ws=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function W(e,t={}){return typeof e=="number"||typeof e=="bigint"?xi(e,t):typeof e=="string"?Ks(e,t):typeof e=="boolean"?qs(e,t):Ze(e,t)}function qs(e,t={}){const r=`0x${Number(e)}`;return typeof t.size=="number"?(It(r,{size:t.size}),St(r,{size:t.size})):r}function Ze(e,t={}){let r="";for(let i=0;i<e.length;i++)r+=Ws[e[i]];const n=`0x${r}`;return typeof t.size=="number"?(It(n,{size:t.size}),St(n,{dir:"right",size:t.size})):n}function xi(e,t={}){const{signed:r,size:n}=t,i=BigInt(e);let a;n?r?a=(1n<<BigInt(n)*8n-1n)-1n:a=2n**(BigInt(n)*8n)-1n:typeof e=="number"&&(a=BigInt(Number.MAX_SAFE_INTEGER));const f=typeof a=="bigint"&&r?-a-1n:0;if(a&&i>a||i<f){const l=typeof e=="bigint"?"n":"";throw new $s({max:a?`${a}${l}`:void 0,min:`${f}${l}`,signed:r,size:n,value:`${e}${l}`})}const u=`0x${(r&&i<0?(1n<<BigInt(n*8))+BigInt(i):i).toString(16)}`;return n?St(u,{size:n}):u}const Vs=new TextEncoder;function Ks(e,t={}){const r=Vs.encode(e);return Ze(r,t)}const Ys=new TextEncoder;function vi(e,t={}){return typeof e=="number"||typeof e=="bigint"?Xs(e,t):typeof e=="boolean"?Js(e,t):qt(e)?st(e,t):Ei(e,t)}function Js(e,t={}){const r=new Uint8Array(1);return r[0]=Number(e),typeof t.size=="number"?(It(r,{size:t.size}),St(r,{size:t.size})):r}const Me={zero:48,nine:57,A:65,F:70,a:97,f:102};function Tn(e){if(e>=Me.zero&&e<=Me.nine)return e-Me.zero;if(e>=Me.A&&e<=Me.F)return e-(Me.A-10);if(e>=Me.a&&e<=Me.f)return e-(Me.a-10)}function st(e,t={}){let r=e;t.size&&(It(r,{size:t.size}),r=St(r,{dir:"right",size:t.size}));let n=r.slice(2);n.length%2&&(n=`0${n}`);const i=n.length/2,a=new Uint8Array(i);for(let f=0,u=0;f<i;f++){const l=Tn(n.charCodeAt(u++)),b=Tn(n.charCodeAt(u++));if(l===void 0||b===void 0)throw new Z(`Invalid byte sequence ("${n[u-2]}${n[u-1]}" in "${n}").`);a[f]=l*16+b}return a}function Xs(e,t){const r=xi(e,t);return st(r)}function Ei(e,t={}){const r=Ys.encode(e);return typeof t.size=="number"?(It(r,{size:t.size}),St(r,{dir:"right",size:t.size})):r}function It(e,{size:t}){if(xt(e)>t)throw new Hs({givenSize:xt(e),maxSize:t})}function gt(e,t={}){const{signed:r}=t;t.size&&It(e,{size:t.size});const n=BigInt(e);if(!r)return n;const i=(e.length-2)/2,a=(1n<<BigInt(i)*8n-1n)-1n;return n<=a?n:n-BigInt(`0x${"f".padStart(i*2,"f")}`)-1n}function fr(e,t={}){return Number(gt(e,t))}function un(e,t){return({exclude:r,format:n})=>({exclude:r,format:i=>{const a=t(i);if(r)for(const f of r)delete a[f];return{...a,...n(i)}},type:e})}const Bi={"0x0":"legacy","0x1":"eip2930","0x2":"eip1559","0x3":"eip4844","0x4":"eip7702"};function cn(e){const t={...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,chainId:e.chainId?fr(e.chainId):void 0,gas:e.gas?BigInt(e.gas):void 0,gasPrice:e.gasPrice?BigInt(e.gasPrice):void 0,maxFeePerBlobGas:e.maxFeePerBlobGas?BigInt(e.maxFeePerBlobGas):void 0,maxFeePerGas:e.maxFeePerGas?BigInt(e.maxFeePerGas):void 0,maxPriorityFeePerGas:e.maxPriorityFeePerGas?BigInt(e.maxPriorityFeePerGas):void 0,nonce:e.nonce?fr(e.nonce):void 0,to:e.to?e.to:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,type:e.type?Bi[e.type]:void 0,typeHex:e.type?e.type:void 0,value:e.value?BigInt(e.value):void 0,v:e.v?BigInt(e.v):void 0};return e.authorizationList&&(t.authorizationList=Zs(e.authorizationList)),t.yParity=(()=>{if(e.yParity)return Number(e.yParity);if(typeof t.v=="bigint"){if(t.v===0n||t.v===27n)return 0;if(t.v===1n||t.v===28n)return 1;if(t.v>=35n)return t.v%2n===0n?1:0}})(),t.type==="legacy"&&(delete t.accessList,delete t.maxFeePerBlobGas,delete t.maxFeePerGas,delete t.maxPriorityFeePerGas,delete t.yParity),t.type==="eip2930"&&(delete t.maxFeePerBlobGas,delete t.maxFeePerGas,delete t.maxPriorityFeePerGas),t.type==="eip1559"&&delete t.maxFeePerBlobGas,t}const Qs=un("transaction",cn);function Zs(e){return e.map(t=>({contractAddress:t.address,chainId:Number(t.chainId),nonce:Number(t.nonce),r:t.r,s:t.s,yParity:Number(t.yParity)}))}function eo(e){var r;const t=(r=e.transactions)==null?void 0:r.map(n=>typeof n=="string"?n:cn(n));return{...e,baseFeePerGas:e.baseFeePerGas?BigInt(e.baseFeePerGas):null,blobGasUsed:e.blobGasUsed?BigInt(e.blobGasUsed):void 0,difficulty:e.difficulty?BigInt(e.difficulty):void 0,excessBlobGas:e.excessBlobGas?BigInt(e.excessBlobGas):void 0,gasLimit:e.gasLimit?BigInt(e.gasLimit):void 0,gasUsed:e.gasUsed?BigInt(e.gasUsed):void 0,hash:e.hash?e.hash:null,logsBloom:e.logsBloom?e.logsBloom:null,nonce:e.nonce?e.nonce:null,number:e.number?BigInt(e.number):null,size:e.size?BigInt(e.size):void 0,timestamp:e.timestamp?BigInt(e.timestamp):void 0,transactions:t,totalDifficulty:e.totalDifficulty?BigInt(e.totalDifficulty):null}}const to=un("block",eo);function ro(e,{args:t,eventName:r}={}){return{...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,logIndex:e.logIndex?Number(e.logIndex):null,transactionHash:e.transactionHash?e.transactionHash:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,...r?{args:t,eventName:r}:{}}}const no={"0x0":"reverted","0x1":"success"};function io(e){const t={...e,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,contractAddress:e.contractAddress?e.contractAddress:null,cumulativeGasUsed:e.cumulativeGasUsed?BigInt(e.cumulativeGasUsed):null,effectiveGasPrice:e.effectiveGasPrice?BigInt(e.effectiveGasPrice):null,gasUsed:e.gasUsed?BigInt(e.gasUsed):null,logs:e.logs?e.logs.map(r=>ro(r)):null,to:e.to?e.to:null,transactionIndex:e.transactionIndex?fr(e.transactionIndex):null,status:e.status?no[e.status]:null,type:e.type?Bi[e.type]||e.type:null};return e.blobGasPrice&&(t.blobGasPrice=BigInt(e.blobGasPrice)),e.blobGasUsed&&(t.blobGasUsed=BigInt(e.blobGasUsed)),t}const so=un("transactionReceipt",io),ln=2n**256n-1n;function Vt(e){return`0x${e.reduce((t,r)=>t+r.replace("0x",""),"")}`}class Pn extends Z{constructor({offset:t}){super(`Offset \`${t}\` cannot be negative.`,{name:"NegativeOffsetError"})}}class oo extends Z{constructor({length:t,position:r}){super(`Position \`${r}\` is out of bounds (\`0 < position < ${t}\`).`,{name:"PositionOutOfBoundsError"})}}class ao extends Z{constructor({count:t,limit:r}){super(`Recursive read limit of \`${r}\` exceeded (recursive read count: \`${t}\`).`,{name:"RecursiveReadLimitExceededError"})}}const fo={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:Number.POSITIVE_INFINITY,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new ao({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(e){if(e<0||e>this.bytes.length-1)throw new oo({length:this.bytes.length,position:e})},decrementPosition(e){if(e<0)throw new Pn({offset:e});const t=this.position-e;this.assertPosition(t),this.position=t},getReadCount(e){return this.positionReadCount.get(e||this.position)||0},incrementPosition(e){if(e<0)throw new Pn({offset:e});const t=this.position+e;this.assertPosition(t),this.position=t},inspectByte(e){const t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectBytes(e,t){const r=t??this.position;return this.assertPosition(r+e-1),this.bytes.subarray(r,r+e)},inspectUint8(e){const t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectUint16(e){const t=e??this.position;return this.assertPosition(t+1),this.dataView.getUint16(t)},inspectUint24(e){const t=e??this.position;return this.assertPosition(t+2),(this.dataView.getUint16(t)<<8)+this.dataView.getUint8(t+2)},inspectUint32(e){const t=e??this.position;return this.assertPosition(t+3),this.dataView.getUint32(t)},pushByte(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushBytes(e){this.assertPosition(this.position+e.length-1),this.bytes.set(e,this.position),this.position+=e.length},pushUint8(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushUint16(e){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,e),this.position+=2},pushUint24(e){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,e>>8),this.dataView.setUint8(this.position+2,e&255),this.position+=3},pushUint32(e){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,e),this.position+=4},readByte(){this.assertReadLimit(),this._touch();const e=this.inspectByte();return this.position++,e},readBytes(e,t){this.assertReadLimit(),this._touch();const r=this.inspectBytes(e);return this.position+=t??e,r},readUint8(){this.assertReadLimit(),this._touch();const e=this.inspectUint8();return this.position+=1,e},readUint16(){this.assertReadLimit(),this._touch();const e=this.inspectUint16();return this.position+=2,e},readUint24(){this.assertReadLimit(),this._touch();const e=this.inspectUint24();return this.position+=3,e},readUint32(){this.assertReadLimit(),this._touch();const e=this.inspectUint32();return this.position+=4,e},get remaining(){return this.bytes.length-this.position},setPosition(e){const t=this.position;return this.assertPosition(e),this.position=e,()=>this.position=t},_touch(){if(this.recursiveReadLimit===Number.POSITIVE_INFINITY)return;const e=this.getReadCount();this.positionReadCount.set(this.position,e+1),e>0&&this.recursiveReadCount++}};function Si(e,{recursiveReadLimit:t=8192}={}){const r=Object.create(fo);return r.bytes=e,r.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength),r.positionReadCount=new Map,r.recursiveReadLimit=t,r}function ot(e,t="hex"){const r=Ii(e),n=Si(new Uint8Array(r.length));return r.encode(n),t==="hex"?Ze(n.bytes):n.bytes}function Ii(e){return Array.isArray(e)?uo(e.map(t=>Ii(t))):co(e)}function uo(e){const t=e.reduce((i,a)=>i+a.length,0),r=Ai(t);return{length:t<=55?1+t:1+r+t,encode(i){t<=55?i.pushByte(192+t):(i.pushByte(247+r),r===1?i.pushUint8(t):r===2?i.pushUint16(t):r===3?i.pushUint24(t):i.pushUint32(t));for(const{encode:a}of e)a(i)}}}function co(e){const t=typeof e=="string"?st(e):e,r=Ai(t.length);return{length:t.length===1&&t[0]<128?1:t.length<=55?1+t.length:1+r+t.length,encode(i){t.length===1&&t[0]<128?i.pushBytes(t):t.length<=55?(i.pushByte(128+t.length),i.pushBytes(t)):(i.pushByte(183+r),r===1?i.pushUint8(t.length):r===2?i.pushUint16(t.length):r===3?i.pushUint24(t.length):i.pushUint32(t.length),i.pushBytes(t))}}}function Ai(e){if(e<2**8)return 1;if(e<2**16)return 2;if(e<2**24)return 3;if(e<2**32)return 4;throw new Z("Length is too large.")}const lo={ether:-9,wei:9};function ho(e,t){let r=e.toString();const n=r.startsWith("-");n&&(r=r.slice(1)),r=r.padStart(t,"0");let[i,a]=[r.slice(0,r.length-t),r.slice(r.length-t)];return a=a.replace(/(0+)$/,""),`${n?"-":""}${i||"0"}${a?`.${a}`:""}`}function Xr(e,t="wei"){return ho(e,lo[t])}function po(e){const t=Object.entries(e).map(([n,i])=>i===void 0||i===!1?null:[n,i]).filter(Boolean),r=t.reduce((n,[i])=>Math.max(n,i.length),0);return t.map(([n,i])=>` ${`${n}:`.padEnd(r+1)} ${i}`).join(`
3
3
  `)}class bo extends Z{constructor({v:t}){super(`Invalid \`v\` value "${t}". Expected 27 or 28.`,{name:"InvalidLegacyVError"})}}class yo extends Z{constructor({transaction:t}){super("Cannot infer a transaction type from provided transaction.",{metaMessages:["Provided Transaction:","{",po(t),"}","","To infer the type, either provide:","- a `type` to the Transaction, or","- an EIP-1559 Transaction with `maxFeePerGas`, or","- an EIP-2930 Transaction with `gasPrice` & `accessList`, or","- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or","- an EIP-7702 Transaction with `authorizationList`, or","- a Legacy Transaction with `gasPrice`"],name:"InvalidSerializableTransactionError"})}}class go extends Z{constructor({storageKey:t}){super(`Size for storage key "${t}" is invalid. Expected 32 bytes. Got ${Math.floor((t.length-2)/2)} bytes.`,{name:"InvalidStorageKeySizeError"})}}function Ri(e){const{kzg:t}=e,r=e.to??(typeof e.blobs[0]=="string"?"hex":"bytes"),n=typeof e.blobs[0]=="string"?e.blobs.map(a=>st(a)):e.blobs,i=[];for(const a of n)i.push(Uint8Array.from(t.blobToKzgCommitment(a)));return r==="bytes"?i:i.map(a=>Ze(a))}function Ti(e){const{kzg:t}=e,r=e.to??(typeof e.blobs[0]=="string"?"hex":"bytes"),n=typeof e.blobs[0]=="string"?e.blobs.map(f=>st(f)):e.blobs,i=typeof e.commitments[0]=="string"?e.commitments.map(f=>st(f)):e.commitments,a=[];for(let f=0;f<n.length;f++){const u=n[f],l=i[f];a.push(Uint8Array.from(t.computeBlobKzgProof(u,l)))}return r==="bytes"?a:a.map(f=>Ze(f))}function kn(e){if(!Number.isSafeInteger(e)||e<0)throw new Error(`positive integer expected, not ${e}`)}function mo(e){return e instanceof Uint8Array||e!=null&&typeof e=="object"&&e.constructor.name==="Uint8Array"}function hn(e,...t){if(!mo(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error(`Uint8Array expected of length ${t}, not of length=${e.length}`)}function ur(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function Pi(e,t){hn(e);const r=t.outputLen;if(e.length<r)throw new Error(`digestInto() expects output buffer of length at least ${r}`)}/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */const _o=e=>new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4)),Cr=e=>new DataView(e.buffer,e.byteOffset,e.byteLength),Oe=(e,t)=>e<<32-t|e>>>t,Cn=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68,wo=e=>e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255;function Ln(e){for(let t=0;t<e.length;t++)e[t]=wo(e[t])}function xo(e){if(typeof e!="string")throw new Error(`utf8ToBytes expected string, got ${typeof e}`);return new Uint8Array(new TextEncoder().encode(e))}function dn(e){return typeof e=="string"&&(e=xo(e)),hn(e),e}let ki=class{clone(){return this._cloneInto()}};function Ci(e){const t=n=>e().update(dn(n)).digest(),r=e();return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=()=>e(),t}function vo(e,t,r,n){if(typeof e.setBigUint64=="function")return e.setBigUint64(t,r,n);const i=BigInt(32),a=BigInt(4294967295),f=Number(r>>i&a),u=Number(r&a),l=n?4:0,b=n?0:4;e.setUint32(t+l,f,n),e.setUint32(t+b,u,n)}const Eo=(e,t,r)=>e&t^~e&r,Bo=(e,t,r)=>e&t^e&r^t&r;class So extends ki{constructor(t,r,n,i){super(),this.blockLen=t,this.outputLen=r,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=Cr(this.buffer)}update(t){ur(this);const{view:r,buffer:n,blockLen:i}=this;t=dn(t);const a=t.length;for(let f=0;f<a;){const u=Math.min(i-this.pos,a-f);if(u===i){const l=Cr(t);for(;i<=a-f;f+=i)this.process(l,f);continue}n.set(t.subarray(f,f+u),this.pos),this.pos+=u,f+=u,this.pos===i&&(this.process(r,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){ur(this),Pi(t,this),this.finished=!0;const{buffer:r,view:n,blockLen:i,isLE:a}=this;let{pos:f}=this;r[f++]=128,this.buffer.subarray(f).fill(0),this.padOffset>i-f&&(this.process(n,0),f=0);for(let m=f;m<i;m++)r[m]=0;vo(n,i-8,BigInt(this.length*8),a),this.process(n,0);const u=Cr(t),l=this.outputLen;if(l%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const b=l/4,g=this.get();if(b>g.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<b;m++)u.setUint32(4*m,g[m],a)}digest(){const{buffer:t,outputLen:r}=this;this.digestInto(t);const n=t.slice(0,r);return this.destroy(),n}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());const{blockLen:r,buffer:n,length:i,finished:a,destroyed:f,pos:u}=this;return t.length=i,t.pos=u,t.finished=a,t.destroyed=f,i%r&&t.buffer.set(n),t}}const Io=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ye=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Je=new Uint32Array(64);class Ao extends So{constructor(){super(64,32,8,!1),this.A=Ye[0]|0,this.B=Ye[1]|0,this.C=Ye[2]|0,this.D=Ye[3]|0,this.E=Ye[4]|0,this.F=Ye[5]|0,this.G=Ye[6]|0,this.H=Ye[7]|0}get(){const{A:t,B:r,C:n,D:i,E:a,F:f,G:u,H:l}=this;return[t,r,n,i,a,f,u,l]}set(t,r,n,i,a,f,u,l){this.A=t|0,this.B=r|0,this.C=n|0,this.D=i|0,this.E=a|0,this.F=f|0,this.G=u|0,this.H=l|0}process(t,r){for(let m=0;m<16;m++,r+=4)Je[m]=t.getUint32(r,!1);for(let m=16;m<64;m++){const v=Je[m-15],I=Je[m-2],B=Oe(v,7)^Oe(v,18)^v>>>3,k=Oe(I,17)^Oe(I,19)^I>>>10;Je[m]=k+Je[m-7]+B+Je[m-16]|0}let{A:n,B:i,C:a,D:f,E:u,F:l,G:b,H:g}=this;for(let m=0;m<64;m++){const v=Oe(u,6)^Oe(u,11)^Oe(u,25),I=g+v+Eo(u,l,b)+Io[m]+Je[m]|0,k=(Oe(n,2)^Oe(n,13)^Oe(n,22))+Bo(n,i,a)|0;g=b,b=l,l=u,u=f+I|0,f=a,a=i,i=n,n=I+k|0}n=n+this.A|0,i=i+this.B|0,a=a+this.C|0,f=f+this.D|0,u=u+this.E|0,l=l+this.F|0,b=b+this.G|0,g=g+this.H|0,this.set(n,i,a,f,u,l,b,g)}roundClean(){Je.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const Ro=Ci(()=>new Ao);function To(e,t){return Ro(qt(e,{strict:!1})?vi(e):e)}function Po(e){const{commitment:t,version:r=1}=e,n=e.to??(typeof t=="string"?"hex":"bytes"),i=To(t);return i.set([r],0),n==="bytes"?i:Ze(i)}function ko(e){const{commitments:t,version:r}=e,n=e.to??(typeof t[0]=="string"?"hex":"bytes"),i=[];for(const a of t)i.push(Po({commitment:a,to:n,version:r}));return i}const On=6,Li=32,pn=4096,Oi=Li*pn,Fn=Oi*On-1-1*pn*On,Fi=1;class Co extends Z{constructor({maxSize:t,size:r}){super("Blob size is too large.",{metaMessages:[`Max: ${t} bytes`,`Given: ${r} bytes`],name:"BlobSizeTooLargeError"})}}class Ui extends Z{constructor(){super("Blob data must not be empty.",{name:"EmptyBlobError"})}}class Lo extends Z{constructor({hash:t,size:r}){super(`Versioned hash "${t}" size is invalid.`,{metaMessages:["Expected: 32",`Received: ${r}`],name:"InvalidVersionedHashSizeError"})}}class Oo extends Z{constructor({hash:t,version:r}){super(`Versioned hash "${t}" version is invalid.`,{metaMessages:[`Expected: ${Fi}`,`Received: ${r}`],name:"InvalidVersionedHashVersionError"})}}function Fo(e){const t=e.to??(typeof e.data=="string"?"hex":"bytes"),r=typeof e.data=="string"?st(e.data):e.data,n=xt(r);if(!n)throw new Ui;if(n>Fn)throw new Co({maxSize:Fn,size:n});const i=[];let a=!0,f=0;for(;a;){const u=Si(new Uint8Array(Oi));let l=0;for(;l<pn;){const b=r.slice(f,f+(Li-1));if(u.pushByte(0),u.pushBytes(b),b.length<31){u.pushByte(128),a=!1;break}l++,f+=31}i.push(u)}return t==="bytes"?i.map(u=>u.bytes):i.map(u=>Ze(u.bytes))}function Uo(e){const{data:t,kzg:r,to:n}=e,i=e.blobs??Fo({data:t,to:n}),a=e.commitments??Ri({blobs:i,kzg:r,to:n}),f=e.proofs??Ti({blobs:i,commitments:a,kzg:r,to:n}),u=[];for(let l=0;l<i.length;l++)u.push({blob:i[l],commitment:a[l],proof:f[l]});return u}function No(e){if(!e||e.length===0)return[];const t=[];for(const r of e){const{contractAddress:n,chainId:i,nonce:a,...f}=r;t.push([W(i),n,a?W(a):"0x",...Kt({},f)])}return t}class at extends Z{constructor({address:t}){super(`Address "${t}" is invalid.`,{metaMessages:["- Address must be a hex value of 20 bytes (40 hex characters).","- Address must match its checksum counterpart."],name:"InvalidAddressError"})}}class gr extends Z{constructor({chainId:t}){super(typeof t=="number"?`Chain ID "${t}" is invalid.`:"Chain ID is invalid.",{name:"InvalidChainIdError"})}}class mr extends Z{constructor({cause:t,maxFeePerGas:r}={}){super(`The fee cap (\`maxFeePerGas\`${r?` = ${Xr(r)} gwei`:""}) cannot be higher than the maximum allowed value (2^256-1).`,{cause:t,name:"FeeCapTooHighError"})}}Object.defineProperty(mr,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas higher than 2\^256-1|fee cap higher than 2\^256-1/});class Ni extends Z{constructor({cause:t,maxPriorityFeePerGas:r,maxFeePerGas:n}={}){super([`The provided tip (\`maxPriorityFeePerGas\`${r?` = ${Xr(r)} gwei`:""}) cannot be higher than the fee cap (\`maxFeePerGas\`${n?` = ${Xr(n)} gwei`:""}).`].join(`
4
- `),{cause:t,name:"TipAboveFeeCapError"})}}Object.defineProperty(Ni,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max priority fee per gas higher than max fee per gas|tip higher than fee cap/});class Mi extends Map{constructor(t){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=t}get(t){const r=super.get(t);return super.has(t)&&r!==void 0&&(this.delete(t),super.set(t,r)),r}set(t,r){if(super.set(t,r),this.maxSize&&this.size>this.maxSize){const n=this.keys().next().value;n&&this.delete(n)}return this}}const tr=BigInt(2**32-1),Un=BigInt(32);function Mo(e,t=!1){return t?{h:Number(e&tr),l:Number(e>>Un&tr)}:{h:Number(e>>Un&tr)|0,l:Number(e&tr)|0}}function Do(e,t=!1){let r=new Uint32Array(e.length),n=new Uint32Array(e.length);for(let i=0;i<e.length;i++){const{h:a,l:f}=Mo(e[i],t);[r[i],n[i]]=[a,f]}return[r,n]}const $o=(e,t,r)=>e<<r|t>>>32-r,Ho=(e,t,r)=>t<<r|e>>>32-r,zo=(e,t,r)=>t<<r-32|e>>>64-r,jo=(e,t,r)=>e<<r-32|t>>>64-r,Di=[],$i=[],Hi=[],Go=BigInt(0),Ct=BigInt(1),Wo=BigInt(2),qo=BigInt(7),Vo=BigInt(256),Ko=BigInt(113);for(let e=0,t=Ct,r=1,n=0;e<24;e++){[r,n]=[n,(2*r+3*n)%5],Di.push(2*(5*n+r)),$i.push((e+1)*(e+2)/2%64);let i=Go;for(let a=0;a<7;a++)t=(t<<Ct^(t>>qo)*Ko)%Vo,t&Wo&&(i^=Ct<<(Ct<<BigInt(a))-Ct);Hi.push(i)}const[Yo,Jo]=Do(Hi,!0),Nn=(e,t,r)=>r>32?zo(e,t,r):$o(e,t,r),Mn=(e,t,r)=>r>32?jo(e,t,r):Ho(e,t,r);function Xo(e,t=24){const r=new Uint32Array(10);for(let n=24-t;n<24;n++){for(let f=0;f<10;f++)r[f]=e[f]^e[f+10]^e[f+20]^e[f+30]^e[f+40];for(let f=0;f<10;f+=2){const u=(f+8)%10,l=(f+2)%10,b=r[l],g=r[l+1],m=Nn(b,g,1)^r[u],v=Mn(b,g,1)^r[u+1];for(let I=0;I<50;I+=10)e[f+I]^=m,e[f+I+1]^=v}let i=e[2],a=e[3];for(let f=0;f<24;f++){const u=$i[f],l=Nn(i,a,u),b=Mn(i,a,u),g=Di[f];i=e[g],a=e[g+1],e[g]=l,e[g+1]=b}for(let f=0;f<50;f+=10){for(let u=0;u<10;u++)r[u]=e[f+u];for(let u=0;u<10;u++)e[f+u]^=~r[(u+2)%10]&r[(u+4)%10]}e[0]^=Yo[n],e[1]^=Jo[n]}r.fill(0)}class bn extends ki{constructor(t,r,n,i=!1,a=24){if(super(),this.blockLen=t,this.suffix=r,this.outputLen=n,this.enableXOF=i,this.rounds=a,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,kn(n),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=_o(this.state)}keccak(){Cn||Ln(this.state32),Xo(this.state32,this.rounds),Cn||Ln(this.state32),this.posOut=0,this.pos=0}update(t){ur(this);const{blockLen:r,state:n}=this;t=dn(t);const i=t.length;for(let a=0;a<i;){const f=Math.min(r-this.pos,i-a);for(let u=0;u<f;u++)n[this.pos++]^=t[a++];this.pos===r&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;const{state:t,suffix:r,pos:n,blockLen:i}=this;t[n]^=r,r&128&&n===i-1&&this.keccak(),t[i-1]^=128,this.keccak()}writeInto(t){ur(this,!1),hn(t),this.finish();const r=this.state,{blockLen:n}=this;for(let i=0,a=t.length;i<a;){this.posOut>=n&&this.keccak();const f=Math.min(n-this.posOut,a-i);t.set(r.subarray(this.posOut,this.posOut+f),i),this.posOut+=f,i+=f}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return kn(t),this.xofInto(new Uint8Array(t))}digestInto(t){if(Pi(t,this),this.finished)throw new Error("digest() was already called");return this.writeInto(t),this.destroy(),t}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(t){const{blockLen:r,suffix:n,outputLen:i,rounds:a,enableXOF:f}=this;return t||(t=new bn(r,n,i,f,a)),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=a,t.suffix=n,t.outputLen=i,t.enableXOF=f,t.destroyed=this.destroyed,t}}const Qo=(e,t,r)=>Ci(()=>new bn(t,e,r)),Zo=Qo(1,136,256/8);function ea(e,t){return Zo(qt(e,{strict:!1})?vi(e):e)}const Lr=new Mi(8192);function ta(e,t){if(Lr.has(`${e}.${t}`))return Lr.get(`${e}.${t}`);const r=e.substring(2).toLowerCase(),n=ea(Ei(r)),i=r.split("");for(let f=0;f<40;f+=2)n[f>>1]>>4>=8&&i[f]&&(i[f]=i[f].toUpperCase()),(n[f>>1]&15)>=8&&i[f+1]&&(i[f+1]=i[f+1].toUpperCase());const a=`0x${i.join("")}`;return Lr.set(`${e}.${t}`,a),a}const ra=/^0x[a-fA-F0-9]{40}$/,Or=new Mi(8192);function ft(e,t){const{strict:r=!0}=t??{},n=`${e}.${r}`;if(Or.has(n))return Or.get(n);const i=ra.test(e)?e.toLowerCase()===e?!0:r?ta(e)===e:!0:!1;return Or.set(n,i),i}function na(e,t,r,{strict:n}={}){return qt(e,{strict:!1})?sa(e,t,r,{strict:n}):ia(e,t,r,{strict:n})}function zi(e,t,r){if(xt(e)!==r-t)throw new zs({offset:r,position:"end",size:xt(e)})}function ia(e,t,r,{strict:n}={}){const i=e.slice(t,r);return n&&zi(i,t,r),i}function sa(e,t,r,{strict:n}={}){const i=`0x${e.replace("0x","").slice(t*2,r*2)}`;return n&&zi(i,t,r),i}function oa(e){const{authorizationList:t}=e;if(t)for(const r of t){const{contractAddress:n,chainId:i}=r;if(!ft(n))throw new at({address:n});if(i<=0)throw new gr({chainId:i})}yn(e)}function aa(e){const{blobVersionedHashes:t}=e;if(t){if(t.length===0)throw new Ui;for(const r of t){const n=xt(r),i=fr(na(r,0,1));if(n!==32)throw new Lo({hash:r,size:n});if(i!==Fi)throw new Oo({hash:r,version:i})}}yn(e)}function yn(e){const{chainId:t,maxPriorityFeePerGas:r,maxFeePerGas:n,to:i}=e;if(t<=0)throw new gr({chainId:t});if(i&&!ft(i))throw new at({address:i});if(n&&n>ln)throw new mr({maxFeePerGas:n});if(r&&n&&r>n)throw new Ni({maxFeePerGas:n,maxPriorityFeePerGas:r})}function fa(e){const{chainId:t,maxPriorityFeePerGas:r,gasPrice:n,maxFeePerGas:i,to:a}=e;if(t<=0)throw new gr({chainId:t});if(a&&!ft(a))throw new at({address:a});if(r||i)throw new Z("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid EIP-2930 Transaction attribute.");if(n&&n>ln)throw new mr({maxFeePerGas:n})}function ua(e){const{chainId:t,maxPriorityFeePerGas:r,gasPrice:n,maxFeePerGas:i,to:a}=e;if(a&&!ft(a))throw new at({address:a});if(typeof t<"u"&&t<=0)throw new gr({chainId:t});if(r||i)throw new Z("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid Legacy Transaction attribute.");if(n&&n>ln)throw new mr({maxFeePerGas:n})}function ca(e){if(e.type)return e.type;if(typeof e.authorizationList<"u")return"eip7702";if(typeof e.blobs<"u"||typeof e.blobVersionedHashes<"u"||typeof e.maxFeePerBlobGas<"u"||typeof e.sidecars<"u")return"eip4844";if(typeof e.maxFeePerGas<"u"||typeof e.maxPriorityFeePerGas<"u")return"eip1559";if(typeof e.gasPrice<"u")return typeof e.accessList<"u"?"eip2930":"legacy";throw new yo({transaction:e})}function _r(e){if(!e||e.length===0)return[];const t=[];for(let r=0;r<e.length;r++){const{address:n,storageKeys:i}=e[r];for(let a=0;a<i.length;a++)if(i[a].length-2!==64)throw new go({storageKey:i[a]});if(!ft(n,{strict:!1}))throw new at({address:n});t.push([n,i])}return t}function la(e,t){const r=ca(e);return r==="eip1559"?pa(e,t):r==="eip2930"?ba(e,t):r==="eip4844"?da(e,t):r==="eip7702"?ha(e,t):ya(e,t)}function ha(e,t){const{authorizationList:r,chainId:n,gas:i,nonce:a,to:f,value:u,maxFeePerGas:l,maxPriorityFeePerGas:b,accessList:g,data:m}=e;oa(e);const v=_r(g),I=No(r);return Vt(["0x04",ot([W(n),a?W(a):"0x",b?W(b):"0x",l?W(l):"0x",i?W(i):"0x",f??"0x",u?W(u):"0x",m??"0x",v,I,...Kt(e,t)])])}function da(e,t){const{chainId:r,gas:n,nonce:i,to:a,value:f,maxFeePerBlobGas:u,maxFeePerGas:l,maxPriorityFeePerGas:b,accessList:g,data:m}=e;aa(e);let v=e.blobVersionedHashes,I=e.sidecars;if(e.blobs&&(typeof v>"u"||typeof I>"u")){const O=typeof e.blobs[0]=="string"?e.blobs:e.blobs.map(S=>Ze(S)),L=e.kzg,U=Ri({blobs:O,kzg:L});if(typeof v>"u"&&(v=ko({commitments:U})),typeof I>"u"){const S=Ti({blobs:O,commitments:U,kzg:L});I=Uo({blobs:O,commitments:U,proofs:S})}}const B=_r(g),k=[W(r),i?W(i):"0x",b?W(b):"0x",l?W(l):"0x",n?W(n):"0x",a??"0x",f?W(f):"0x",m??"0x",B,u?W(u):"0x",v??[],...Kt(e,t)],T=[],C=[],F=[];if(I)for(let O=0;O<I.length;O++){const{blob:L,commitment:U,proof:S}=I[O];T.push(L),C.push(U),F.push(S)}return Vt(["0x03",ot(I?[k,T,C,F]:k)])}function pa(e,t){const{chainId:r,gas:n,nonce:i,to:a,value:f,maxFeePerGas:u,maxPriorityFeePerGas:l,accessList:b,data:g}=e;yn(e);const m=_r(b),v=[W(r),i?W(i):"0x",l?W(l):"0x",u?W(u):"0x",n?W(n):"0x",a??"0x",f?W(f):"0x",g??"0x",m,...Kt(e,t)];return Vt(["0x02",ot(v)])}function ba(e,t){const{chainId:r,gas:n,data:i,nonce:a,to:f,value:u,accessList:l,gasPrice:b}=e;fa(e);const g=_r(l),m=[W(r),a?W(a):"0x",b?W(b):"0x",n?W(n):"0x",f??"0x",u?W(u):"0x",i??"0x",g,...Kt(e,t)];return Vt(["0x01",ot(m)])}function ya(e,t){const{chainId:r=0,gas:n,data:i,nonce:a,to:f,value:u,gasPrice:l}=e;ua(e);let b=[a?W(a):"0x",l?W(l):"0x",n?W(n):"0x",f??"0x",u?W(u):"0x",i??"0x"];if(t){const g=(()=>{if(t.v>=35n)return(t.v-35n)/2n>0?t.v:27n+(t.v===35n?0n:1n);if(r>0)return BigInt(r*2)+BigInt(35n+t.v-27n);const I=27n+(t.v===27n?0n:1n);if(t.v!==I)throw new bo({v:t.v});return I})(),m=ar(t.r),v=ar(t.s);b=[...b,W(g),m==="0x00"?"0x":m,v==="0x00"?"0x":v]}else r>0&&(b=[...b,W(r),"0x","0x"]);return ot(b)}function Kt(e,t){const r=t??e,{v:n,yParity:i}=r;if(typeof r.r>"u")return[];if(typeof r.s>"u")return[];if(typeof n>"u"&&typeof i>"u")return[];const a=ar(r.r),f=ar(r.s);return[typeof i=="number"?i?W(1):"0x":n===0n?"0x":n===1n?W(1):n===27n?"0x":W(1),a==="0x00"?"0x":a,f==="0x00"?"0x":f]}const ga={gasPriceOracle:{address:"0x420000000000000000000000000000000000000F"},l1Block:{address:"0x4200000000000000000000000000000000000015"},l2CrossDomainMessenger:{address:"0x4200000000000000000000000000000000000007"},l2Erc721Bridge:{address:"0x4200000000000000000000000000000000000014"},l2StandardBridge:{address:"0x4200000000000000000000000000000000000010"},l2ToL1MessagePasser:{address:"0x4200000000000000000000000000000000000016"}},ma={block:to({format(e){var r;return{transactions:(r=e.transactions)==null?void 0:r.map(n=>{if(typeof n=="string")return n;const i=cn(n);return i.typeHex==="0x7e"&&(i.isSystemTx=n.isSystemTx,i.mint=n.mint?gt(n.mint):void 0,i.sourceHash=n.sourceHash,i.type="deposit"),i}),stateRoot:e.stateRoot}}}),transaction:Qs({format(e){const t={};return e.type==="0x7e"&&(t.isSystemTx=e.isSystemTx,t.mint=e.mint?gt(e.mint):void 0,t.sourceHash=e.sourceHash,t.type="deposit"),t}}),transactionReceipt:so({format(e){return{l1GasPrice:e.l1GasPrice?gt(e.l1GasPrice):null,l1GasUsed:e.l1GasUsed?gt(e.l1GasUsed):null,l1Fee:e.l1Fee?gt(e.l1Fee):null,l1FeeScalar:e.l1FeeScalar?Number(e.l1FeeScalar):null}}})};function _a(e,t){return va(e)?xa(e):la(e,t)}const wa={transaction:_a};function xa(e){Ea(e);const{sourceHash:t,data:r,from:n,gas:i,isSystemTx:a,mint:f,to:u,value:l}=e,b=[t,n,u??"0x",f?W(f):"0x",l?W(l):"0x",i?W(i):"0x",a?"0x1":"0x",r??"0x"];return Vt(["0x7e",ot(b)])}function va(e){return e.type==="deposit"||typeof e.sourceHash<"u"}function Ea(e){const{from:t,to:r}=e;if(t&&!ft(t))throw new at({address:t});if(r&&!ft(r))throw new at({address:r})}const Dn={contracts:ga,formatters:ma,serializers:wa},Ba=Wt({id:42161,name:"Arbitrum One",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://arb1.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://arbiscan.io",apiUrl:"https://api.arbiscan.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:7654707}}}),Sa=Wt({id:421614,name:"Arbitrum Sepolia",nativeCurrency:{name:"Arbitrum Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia-rollup.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://sepolia.arbiscan.io",apiUrl:"https://api-sepolia.arbiscan.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:81930}},testnet:!0}),Lt=11155111,Ia=Wt({...Dn,id:84532,network:"base-sepolia",name:"Base Sepolia",nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia.base.org"]}},blockExplorers:{default:{name:"Basescan",url:"https://sepolia.basescan.org",apiUrl:"https://api-sepolia.basescan.org/api"}},contracts:{...Dn.contracts,disputeGameFactory:{[Lt]:{address:"0xd6E6dBf4F7EA0ac412fD8b65ED297e64BB7a06E1"}},l2OutputOracle:{[Lt]:{address:"0x84457ca9D0163FbC4bbfe4Dfbb20ba46e48DF254"}},portal:{[Lt]:{address:"0x49f53e41452c74589e85ca1677426ba426459e85",blockCreated:4446677}},l1StandardBridge:{[Lt]:{address:"0xfd0Bf71F60660E2f608ed56e1659C450eB113120",blockCreated:4446677}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:1059647}},testnet:!0,sourceId:Lt}),Aa=Wt({id:1,name:"Ethereum",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://cloudflare-eth.com"]}},blockExplorers:{default:{name:"Etherscan",url:"https://etherscan.io",apiUrl:"https://api.etherscan.io/api"}},contracts:{ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"},ensUniversalResolver:{address:"0xce01f8eee7E479C928F8919abD53E553a36CeF67",blockCreated:19258213},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:14353601}}}),Ra=Wt({id:11155111,name:"Sepolia",nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc2.sepolia.org"]}},blockExplorers:{default:{name:"Etherscan",url:"https://sepolia.etherscan.io",apiUrl:"https://api-sepolia.etherscan.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:751532},ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"},ensUniversalResolver:{address:"0xc8Af999e38273D658BE1b921b88A9Ddf005769cC",blockCreated:5317080}},testnet:!0});function Qr(e){return typeof e=="string"&&(e=Buffer.from(e,"hex")),e.length===32?e:e.subarray(1,33)}function bt(e,t){if(!e)throw new Error(t)}function Ta(e){return Buffer.concat([Uint8Array.from([192]),Pa(e)])}function Pa(e){const t=Rn.encodingLength(e.length),r=Buffer.allocUnsafe(t);return Rn.encode(e.length,r),Buffer.concat([r,e])}function ka(e,t){if(e.compare(t)>0){const r=e;e=t,t=r}return[e,t]}const Ot=e=>e.length===64?e:e.slice(2),Ca=e=>{if(!e)return!1;try{const t=Buffer.from(e,"hex");return wt.isPoint(t)}catch{return!1}},La={ethereum:Aa,ethereum_arbitrum:Ba,ethereum_sepolia:Ra,arbitrum_sepolia:Sa,ethereum_localnet:J.EthereumLocalnet,arbitrum_localnet:J.ArbitrumLocalnet,base_sepolia:Ia},Oa=async(e,t)=>{var n;const r=La[e];if(r)try{if(r.id===((n=t.chain)==null?void 0:n.id))return P.Ok({message:"Already on the network",walletClient:t});await t.switchChain({id:r.id});const i=He.createWalletClient({account:t.account,chain:r,transport:He.custom(window.ethereum)});return P.Ok({message:"Switched chain",walletClient:i})}catch(i){if(Fa(i))try{await t.addChain({chain:r});const a=He.createWalletClient({account:t.account,chain:r,transport:He.custom(window.ethereum)});return P.Ok({message:"Added network",walletClient:a})}catch{return P.Err("Failed to add network")}else return P.Err("Failed to switch network")}else return P.Err("Chain not supported")},Fa=e=>typeof e=="object"&&e!==null&&"code"in e&&e.code===4902,ji=(e,t,r,n)=>e+":"+t.toLowerCase()+"::"+r+":"+n.toLowerCase();var ne=(e=>(e.Created="Created",e.Matched="Matched",e.InitiateDetected="InitiateDetected",e.Initiated="Initiated",e.CounterPartyInitiateDetected="CounterPartyInitiateDetected",e.CounterPartyInitiated="CounterPartyInitiated",e.RedeemDetected="RedeemDetected",e.Redeemed="Redeemed",e.CounterPartyRedeemDetected="CounterPartyRedeemDetected",e.CounterPartyRedeemed="CounterPartyRedeemed",e.Completed="Completed",e.CounterPartySwapExpired="CounterPartySwapExpired",e.Expired="Expired",e.RefundDetected="RefundDetected",e.Refunded="Refunded",e.CounterPartyRefundDetected="CounterPartyRefundDetected",e.CounterPartyRefunded="CounterPartyRefunded",e.Cancelled="Cancelled",e.DeadLineExceeded="DeadLineExceeded",e))(ne||{}),Q=(e=>(e.Idle="Idle",e.InitiateDetected="InitiateDetected",e.Initiated="Initiated",e.RedeemDetected="RedeemDetected",e.Redeemed="Redeemed",e.RefundDetected="RefundDetected",e.Refunded="Refunded",e.Expired="Expired",e))(Q||{});const gn=(e,t,r)=>{const n=cr(e.source_swap,t),i=cr(e.destination_swap,r);if(i===Q.RedeemDetected)return ne.RedeemDetected;if(n===Q.Redeemed)return ne.CounterPartyRedeemed;if(n===Q.RedeemDetected)return ne.CounterPartyRedeemDetected;if(i===Q.Redeemed)return ne.Redeemed;if(n===Q.Refunded)return ne.Refunded;if(n===Q.RefundDetected)return ne.RefundDetected;if(i===Q.Expired)return ne.CounterPartySwapExpired;if(n===Q.Expired)return ne.Expired;if(i===Q.Refunded)return ne.CounterPartyRefunded;if(i===Q.RefundDetected)return ne.CounterPartyRefundDetected;const a=Number(e.create_order.additional_data.deadline);return i===Q.Initiated?ne.CounterPartyInitiated:i===Q.InitiateDetected?ne.CounterPartyInitiateDetected:zt(a,12)?ne.DeadLineExceeded:n===Q.Initiated?ne.Initiated:zt(a,1)?ne.DeadLineExceeded:n===Q.InitiateDetected?ne.InitiateDetected:ne.Matched},cr=(e,t)=>{if(e.redeem_tx_hash)return Number(e.redeem_block_number)?Q.Redeemed:Q.RedeemDetected;if(e.refund_tx_hash)return Number(e.refund_block_number)?Q.Refunded:Q.RefundDetected;if(Number(e.initiate_block_number)){const r=Number(e.initiate_block_number)+e.timelock;if(t>r)return Q.Expired}return e.initiate_tx_hash?Number(e.initiate_block_number)?Q.Initiated:Q.InitiateDetected:Q.Idle},Ua=(e,t,r)=>{const n=gn(e,t,r);return mn(n)},mn=e=>{switch(e){case ne.Matched:return ue.Initiate;case ne.CounterPartyInitiated:case ne.CounterPartyInitiateDetected:case ne.RedeemDetected:return ue.Redeem;case ne.Expired:return ue.Refund;default:return ue.Idle}},zt=(e,t=0)=>{const r=Date.now(),n=e*1e3+t*36e5;return r>=n},Gi=e=>e.filter(t=>{const{source_swap:r,create_order:n}=t,{initiate_tx_hash:i,initiate_block_number:a}=r,{deadline:f}=n.additional_data;return i&&Number(a)?!0:i&&!Number(a)?!zt(Number(f),12):i?!0:!zt(Number(f),1)}),Na=[{inputs:[{internalType:"address",name:"token_",type:"address"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"InvalidShortString",type:"error"},{inputs:[{internalType:"string",name:"str",type:"string"}],name:"StringTooLong",type:"error"},{anonymous:!1,inputs:[],name:"EIP712DomainChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"orderID",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"secretHash",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Initiated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"orderID",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"secretHash",type:"bytes32"},{indexed:!1,internalType:"bytes",name:"secret",type:"bytes"}],name:"Redeemed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"orderID",type:"bytes32"}],name:"Refunded",type:"event"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"redeemer",type:"address"},{internalType:"uint256",name:"timelock",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"secretHash",type:"bytes32"}],name:"initiate",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"redeemer",type:"address"},{internalType:"uint256",name:"timelock",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"secretHash",type:"bytes32"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"initiateWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"orderID",type:"bytes32"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"instantRefund",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"address",name:"redeemer",type:"address"},{internalType:"uint256",name:"expiry",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"secretHash",type:"bytes32"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct HTLC.InitWithSig[]",name:"inits",type:"tuple[]"},{components:[{internalType:"bytes32",name:"orderID",type:"bytes32"},{internalType:"bytes",name:"secret",type:"bytes"}],internalType:"struct HTLC.Redeem[]",name:"redeems",type:"tuple[]"},{components:[{internalType:"bytes32",name:"orderID",type:"bytes32"}],internalType:"struct HTLC.Refund[]",name:"refunds",type:"tuple[]"}],name:"multicall",outputs:[{internalType:"bool[]",name:"results",type:"bool[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"orders",outputs:[{internalType:"bool",name:"isFulfilled",type:"bool"},{internalType:"address",name:"initiator",type:"address"},{internalType:"address",name:"redeemer",type:"address"},{internalType:"uint256",name:"initiatedAt",type:"uint256"},{internalType:"uint256",name:"timelock",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"orderID",type:"bytes32"},{internalType:"bytes",name:"secret",type:"bytes"}],name:"redeem",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"orderID",type:"bytes32"}],name:"refund",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"token",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"}];class Wi{constructor(t,r,n){this.url=new ge.Url("/relayer",r),this.auth=n,this.order=t}async init(t,r){if(!t.account)return P.Err("No account found");if(t.account.address.toLowerCase()!==this.order.source_swap.initiator.toLowerCase())return P.Err("Account address and order initiator mismatch");if(!r){const g=await ge.fetchEVMBlockNumber(t);if(g.error)return P.Err(g.error);r=g.val}if(cr(this.order.source_swap,r)!==Q.Idle)return P.Err("Invalid swap status");const{create_order:i,source_swap:a}=this.order;if(!a.amount||!a.redeemer||!i.timelock||!i.secret_hash)return P.Err("Invalid order");const f=ge.with0x(i.secret_hash),u=BigInt(i.timelock),l=ge.with0x(a.redeemer),b=BigInt(a.amount);try{const g=await this.auth.getToken();if(g.error)return P.Err(g.error);const m=He.getContract({address:ge.with0x(this.order.source_swap.asset),abi:Na,client:t}),v=await m.read.token(),I=await ge.checkAllowanceAndApprove(Number(b),v,this.order.source_swap.asset,t);if(I.error)return P.Err(I.error);const B=await m.read.eip712Domain(),k=await t.signTypedData({account:t.account,domain:{name:B[1],version:B[2],chainId:Number(B[3]),verifyingContract:B[4]},types:{Initiate:[{name:"redeemer",type:"address"},{name:"timelock",type:"uint256"},{name:"amount",type:"uint256"},{name:"secretHash",type:"bytes32"}]},primaryType:"Initiate",message:{redeemer:l,timelock:u,amount:b,secretHash:f}}),T=await P.Fetcher.post(this.url.endpoint("initiate"),{body:JSON.stringify({order_id:i.create_id,signature:k,perform_on:"Source"}),headers:{Authorization:ge.Authorization(g.val),"Content-Type":"application/json"}});return T.error?P.Err(T.error):T.result?P.Ok(T.result):P.Err("Init: No result found")}catch(g){return console.log("init error :",g),P.Err(String(g))}}async redeem(t,r){try{const n=await this.auth.getToken();if(n.error)return P.Err(n.error);const i=await P.Fetcher.post(this.url.endpoint("redeem"),{body:JSON.stringify({order_id:t,secret:P.trim0x(r),perform_on:"Destination"}),headers:{Authorization:ge.Authorization(n.val),"Content-Type":"application/json"}});return i.error?P.Err(i.error):i.result?P.Ok(i.result):P.Err("Redeem: No result found")}catch(n){return P.Err(String(n))}}}const Ma=Buffer.from("79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","hex"),Da=Buffer.from("483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8","hex"),$a=Buffer.concat([Ma,Da]),Ha=Buffer.from("0250929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0","hex"),$n={failedToCreateInternalPubkey:"failed to create internal pubkey",failedToTweakPubkey:"failed to tweak pubkey"};function za(){const e=gi.crypto.sha256(Buffer.from("GardenHTLC","utf-8")),t=wt.pointMultiply(Buffer.concat([Buffer.from("04","hex"),$a]),e);if(!t)throw new Error($n.failedToCreateInternalPubkey);const r=wt.pointAdd(Ha,t);if(!r)throw new Error($n.failedToCreateInternalPubkey);return Qr(Buffer.from(r))}const _e={secretMismatch:"invalid secret",secretHashLenMismatch:"secret hash should be 32 bytes",pubkeyLenMismatch:"pubkey should be 32 bytes",zeroOrNegativeExpiry:"expiry should be greater than 0",htlcAddressGenerationFailed:"failed to generate htlc address",notFunded:"address not funded",noCounterpartySigs:"counterparty signatures are required",counterPartySigNotFound:e=>"counterparty signature not found for utxo "+e,invalidCounterpartySigForUTXO:e=>"invalid counterparty signature for utxo "+e,htlcNotExpired:e=>`HTLC not expired, need more ${e} blocks`,controlBlockGenerationFailed:"failed to generate control block",invalidLeaf:"invalid leaf"},rr=192;ye.initEccLib(wt);class lr{constructor(t,r,n,i,a,f,u,l){this.secretHash=n,this.redeemerPubkey=i,this.initiatorPubkey=a,this.expiry=f,this.signer=t,this.network=u,this.internalPubkey=za(),this.initiateAmount=r,this.utxoHashes=l}static async from(t,r,n,i,a,f,u){n=n.startsWith("0x")?n.slice(2):n,bt(n.length===64,_e.secretHashLenMismatch),bt(i.length===64||i.length===66,`initiator ${_e.pubkeyLenMismatch}`),bt(a.length===64||a.length===66,`redeemer ${_e.pubkeyLenMismatch}`),bt(f>0,_e.zeroOrNegativeExpiry);const l=await t.getNetwork();return new lr(t,r,n,Qr(a).toString("hex"),Qr(i).toString("hex"),f,l,u)}address(){const{address:t}=ye.payments.p2tr({internalPubkey:this.internalPubkey,network:this.network,scriptTree:this.leaves()});if(!t)throw new Error(_e.htlcAddressGenerationFailed);return t}id(){return this.address()}async _buildRawTx(t,r){const n=new ye.Transaction;n.version=2;const i=this.address(),a=await this.signer.getProvider();let f=[];if(this.utxoHashes&&this.utxoHashes.length>0)for(const l of this.utxoHashes){const b=await a.getTransaction(l);for(let g=0;g<b.vout.length;g++){const m=b.vout[g];m.scriptpubkey_address===i&&f.push({txid:b.txid,vout:g,value:m.value,status:{confirmed:!1}})}}else f=await a.getUTXOs(i);const u=f.reduce((l,b)=>l+b.value,0);if(u===0)throw new Error(`${i} ${_e.notFunded}`);for(let l=0;l<f.length;l++)n.addInput(Buffer.from(f[l].txid,"hex").reverse(),f[l].vout);return r??(r=await a.suggestFee(i,u,An.Urgency.MEDIUM)),n.addOutput(ye.address.toOutputScript(t,this.network),u-r),{tx:n,usedUtxos:f}}async buildRawTx(t){return await this._buildRawTx(await this.signer.getAddress(),t)}getOutputScript(){return ye.address.toOutputScript(this.address(),this.network)}async init(t){return t??(t=await(await this.signer.getProvider()).suggestFee(await this.signer.getAddress(),this.initiateAmount,An.Urgency.MEDIUM)),await this.signer.send(this.address(),this.initiateAmount,t)}async instantRefund(t,r){bt(t.length>0,_e.noCounterpartySigs);const{tx:n,usedUtxos:i}=await this.buildRawTx(r);for(const m of i)if(!t.find(v=>v.utxo===m.txid))throw new Error(_e.counterPartySigNotFound(m.txid));const a=this.getOutputScript(),f=ye.Transaction.SIGHASH_DEFAULT,u=this.leafHash(2),l=i.map(m=>m.value),b=Fr(a,i.length);for(let m=0;m<n.ins.length;m++){const v=n.hashForWitnessV1(m,b,l,f,u);if(!wt.verifySchnorr(v,Buffer.from(this.redeemerPubkey,"hex"),Buffer.from(t[m].sig,"hex")))throw new Error(_e.invalidCounterpartySigForUTXO(t[m].utxo));const I=await this.signer.signSchnorr(v),B=Buffer.from(n.ins[m].hash).reverse().toString("hex"),k=t.find(T=>T.utxo===B);if(!k)throw new Error(_e.counterPartySigNotFound(B));n.setWitness(m,[Buffer.from(k.sig,"hex"),I,this.instantRefundLeaf(),this.generateControlBlockFor(2)])}return await(await this.signer.getProvider()).broadcast(n.toHex())}async redeem(t,r,n){bt(ye.crypto.sha256(Buffer.from(t,"hex")).toString("hex")===this.secretHash,_e.secretMismatch);const{tx:i,usedUtxos:a}=await this._buildRawTx(r??await this.signer.getAddress(),n),f=this.leafHash(1),u=a.map(m=>m.value),l=Fr(this.getOutputScript(),a.length),b=ye.Transaction.SIGHASH_DEFAULT;for(let m=0;m<i.ins.length;m++){const v=i.hashForWitnessV1(m,l,u,b,f),I=await this.signer.signSchnorr(v);i.setWitness(m,[I,Buffer.from(t,"hex"),this.redeemLeaf(),this.generateControlBlockFor(1)])}return await(await this.signer.getProvider()).broadcast(i.toHex())}async refund(t,r){const{tx:n,usedUtxos:i}=await this._buildRawTx(t??await this.signer.getAddress(),r),[a,f]=await this.canRefund(i);if(!a)throw new Error(_e.htlcNotExpired(f));const u=this.leafHash(0),l=i.map(v=>v.value),b=Fr(this.getOutputScript(),i.length),g=ye.Transaction.SIGHASH_DEFAULT;for(let v=0;v<n.ins.length;v++){n.ins[v].sequence=this.expiry;const I=n.hashForWitnessV1(v,b,l,g,u),B=await this.signer.signSchnorr(I);n.setWitness(v,[B,this.refundLeaf(),this.generateControlBlockFor(0)])}return await(await this.signer.getProvider()).broadcast(n.toHex())}async canRefund(t){const n=await(await this.signer.getProvider()).getLatestTip();for(const i of t){let a=0;if(i.status.confirmed&&i.status.block_height+this.expiry>n?a=i.status.block_height+this.expiry-n+1:i.status.confirmed||(a=this.expiry+1),a>0)return[!1,a]}return[!0,0]}generateControlBlockFor(t){let r;switch(t){case 1:r=this.redeemLeaf();break;case 0:r=this.refundLeaf();break;case 2:r=this.instantRefundLeaf();break;default:throw new Error(_e.invalidLeaf)}const n=ye.payments.p2tr({internalPubkey:this.internalPubkey,network:this.network,scriptTree:this.leaves(),redeem:{output:r,redeemVersion:rr}});if(!n.witness)throw new Error(_e.controlBlockGenerationFailed);return n.witness[n.witness.length-1]}leafHash(t){let r=this.redeemLeaf();return t===0&&(r=this.refundLeaf()),t===2&&(r=this.instantRefundLeaf()),ye.crypto.taggedHash("TapLeaf",Ta(r))}refundLeaf(){return ye.script.fromASM(`
4
+ `),{cause:t,name:"TipAboveFeeCapError"})}}Object.defineProperty(Ni,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max priority fee per gas higher than max fee per gas|tip higher than fee cap/});class Mi extends Map{constructor(t){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=t}get(t){const r=super.get(t);return super.has(t)&&r!==void 0&&(this.delete(t),super.set(t,r)),r}set(t,r){if(super.set(t,r),this.maxSize&&this.size>this.maxSize){const n=this.keys().next().value;n&&this.delete(n)}return this}}const tr=BigInt(2**32-1),Un=BigInt(32);function Mo(e,t=!1){return t?{h:Number(e&tr),l:Number(e>>Un&tr)}:{h:Number(e>>Un&tr)|0,l:Number(e&tr)|0}}function Do(e,t=!1){let r=new Uint32Array(e.length),n=new Uint32Array(e.length);for(let i=0;i<e.length;i++){const{h:a,l:f}=Mo(e[i],t);[r[i],n[i]]=[a,f]}return[r,n]}const $o=(e,t,r)=>e<<r|t>>>32-r,Ho=(e,t,r)=>t<<r|e>>>32-r,zo=(e,t,r)=>t<<r-32|e>>>64-r,jo=(e,t,r)=>e<<r-32|t>>>64-r,Di=[],$i=[],Hi=[],Go=BigInt(0),Ct=BigInt(1),Wo=BigInt(2),qo=BigInt(7),Vo=BigInt(256),Ko=BigInt(113);for(let e=0,t=Ct,r=1,n=0;e<24;e++){[r,n]=[n,(2*r+3*n)%5],Di.push(2*(5*n+r)),$i.push((e+1)*(e+2)/2%64);let i=Go;for(let a=0;a<7;a++)t=(t<<Ct^(t>>qo)*Ko)%Vo,t&Wo&&(i^=Ct<<(Ct<<BigInt(a))-Ct);Hi.push(i)}const[Yo,Jo]=Do(Hi,!0),Nn=(e,t,r)=>r>32?zo(e,t,r):$o(e,t,r),Mn=(e,t,r)=>r>32?jo(e,t,r):Ho(e,t,r);function Xo(e,t=24){const r=new Uint32Array(10);for(let n=24-t;n<24;n++){for(let f=0;f<10;f++)r[f]=e[f]^e[f+10]^e[f+20]^e[f+30]^e[f+40];for(let f=0;f<10;f+=2){const u=(f+8)%10,l=(f+2)%10,b=r[l],g=r[l+1],m=Nn(b,g,1)^r[u],v=Mn(b,g,1)^r[u+1];for(let I=0;I<50;I+=10)e[f+I]^=m,e[f+I+1]^=v}let i=e[2],a=e[3];for(let f=0;f<24;f++){const u=$i[f],l=Nn(i,a,u),b=Mn(i,a,u),g=Di[f];i=e[g],a=e[g+1],e[g]=l,e[g+1]=b}for(let f=0;f<50;f+=10){for(let u=0;u<10;u++)r[u]=e[f+u];for(let u=0;u<10;u++)e[f+u]^=~r[(u+2)%10]&r[(u+4)%10]}e[0]^=Yo[n],e[1]^=Jo[n]}r.fill(0)}class bn extends ki{constructor(t,r,n,i=!1,a=24){if(super(),this.blockLen=t,this.suffix=r,this.outputLen=n,this.enableXOF=i,this.rounds=a,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,kn(n),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=_o(this.state)}keccak(){Cn||Ln(this.state32),Xo(this.state32,this.rounds),Cn||Ln(this.state32),this.posOut=0,this.pos=0}update(t){ur(this);const{blockLen:r,state:n}=this;t=dn(t);const i=t.length;for(let a=0;a<i;){const f=Math.min(r-this.pos,i-a);for(let u=0;u<f;u++)n[this.pos++]^=t[a++];this.pos===r&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;const{state:t,suffix:r,pos:n,blockLen:i}=this;t[n]^=r,r&128&&n===i-1&&this.keccak(),t[i-1]^=128,this.keccak()}writeInto(t){ur(this,!1),hn(t),this.finish();const r=this.state,{blockLen:n}=this;for(let i=0,a=t.length;i<a;){this.posOut>=n&&this.keccak();const f=Math.min(n-this.posOut,a-i);t.set(r.subarray(this.posOut,this.posOut+f),i),this.posOut+=f,i+=f}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return kn(t),this.xofInto(new Uint8Array(t))}digestInto(t){if(Pi(t,this),this.finished)throw new Error("digest() was already called");return this.writeInto(t),this.destroy(),t}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(t){const{blockLen:r,suffix:n,outputLen:i,rounds:a,enableXOF:f}=this;return t||(t=new bn(r,n,i,f,a)),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=a,t.suffix=n,t.outputLen=i,t.enableXOF=f,t.destroyed=this.destroyed,t}}const Qo=(e,t,r)=>Ci(()=>new bn(t,e,r)),Zo=Qo(1,136,256/8);function ea(e,t){return Zo(qt(e,{strict:!1})?vi(e):e)}const Lr=new Mi(8192);function ta(e,t){if(Lr.has(`${e}.${t}`))return Lr.get(`${e}.${t}`);const r=e.substring(2).toLowerCase(),n=ea(Ei(r)),i=r.split("");for(let f=0;f<40;f+=2)n[f>>1]>>4>=8&&i[f]&&(i[f]=i[f].toUpperCase()),(n[f>>1]&15)>=8&&i[f+1]&&(i[f+1]=i[f+1].toUpperCase());const a=`0x${i.join("")}`;return Lr.set(`${e}.${t}`,a),a}const ra=/^0x[a-fA-F0-9]{40}$/,Or=new Mi(8192);function ft(e,t){const{strict:r=!0}=t??{},n=`${e}.${r}`;if(Or.has(n))return Or.get(n);const i=ra.test(e)?e.toLowerCase()===e?!0:r?ta(e)===e:!0:!1;return Or.set(n,i),i}function na(e,t,r,{strict:n}={}){return qt(e,{strict:!1})?sa(e,t,r,{strict:n}):ia(e,t,r,{strict:n})}function zi(e,t,r){if(xt(e)!==r-t)throw new zs({offset:r,position:"end",size:xt(e)})}function ia(e,t,r,{strict:n}={}){const i=e.slice(t,r);return n&&zi(i,t,r),i}function sa(e,t,r,{strict:n}={}){const i=`0x${e.replace("0x","").slice(t*2,r*2)}`;return n&&zi(i,t,r),i}function oa(e){const{authorizationList:t}=e;if(t)for(const r of t){const{contractAddress:n,chainId:i}=r;if(!ft(n))throw new at({address:n});if(i<=0)throw new gr({chainId:i})}yn(e)}function aa(e){const{blobVersionedHashes:t}=e;if(t){if(t.length===0)throw new Ui;for(const r of t){const n=xt(r),i=fr(na(r,0,1));if(n!==32)throw new Lo({hash:r,size:n});if(i!==Fi)throw new Oo({hash:r,version:i})}}yn(e)}function yn(e){const{chainId:t,maxPriorityFeePerGas:r,maxFeePerGas:n,to:i}=e;if(t<=0)throw new gr({chainId:t});if(i&&!ft(i))throw new at({address:i});if(n&&n>ln)throw new mr({maxFeePerGas:n});if(r&&n&&r>n)throw new Ni({maxFeePerGas:n,maxPriorityFeePerGas:r})}function fa(e){const{chainId:t,maxPriorityFeePerGas:r,gasPrice:n,maxFeePerGas:i,to:a}=e;if(t<=0)throw new gr({chainId:t});if(a&&!ft(a))throw new at({address:a});if(r||i)throw new Z("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid EIP-2930 Transaction attribute.");if(n&&n>ln)throw new mr({maxFeePerGas:n})}function ua(e){const{chainId:t,maxPriorityFeePerGas:r,gasPrice:n,maxFeePerGas:i,to:a}=e;if(a&&!ft(a))throw new at({address:a});if(typeof t<"u"&&t<=0)throw new gr({chainId:t});if(r||i)throw new Z("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid Legacy Transaction attribute.");if(n&&n>ln)throw new mr({maxFeePerGas:n})}function ca(e){if(e.type)return e.type;if(typeof e.authorizationList<"u")return"eip7702";if(typeof e.blobs<"u"||typeof e.blobVersionedHashes<"u"||typeof e.maxFeePerBlobGas<"u"||typeof e.sidecars<"u")return"eip4844";if(typeof e.maxFeePerGas<"u"||typeof e.maxPriorityFeePerGas<"u")return"eip1559";if(typeof e.gasPrice<"u")return typeof e.accessList<"u"?"eip2930":"legacy";throw new yo({transaction:e})}function _r(e){if(!e||e.length===0)return[];const t=[];for(let r=0;r<e.length;r++){const{address:n,storageKeys:i}=e[r];for(let a=0;a<i.length;a++)if(i[a].length-2!==64)throw new go({storageKey:i[a]});if(!ft(n,{strict:!1}))throw new at({address:n});t.push([n,i])}return t}function la(e,t){const r=ca(e);return r==="eip1559"?pa(e,t):r==="eip2930"?ba(e,t):r==="eip4844"?da(e,t):r==="eip7702"?ha(e,t):ya(e,t)}function ha(e,t){const{authorizationList:r,chainId:n,gas:i,nonce:a,to:f,value:u,maxFeePerGas:l,maxPriorityFeePerGas:b,accessList:g,data:m}=e;oa(e);const v=_r(g),I=No(r);return Vt(["0x04",ot([W(n),a?W(a):"0x",b?W(b):"0x",l?W(l):"0x",i?W(i):"0x",f??"0x",u?W(u):"0x",m??"0x",v,I,...Kt(e,t)])])}function da(e,t){const{chainId:r,gas:n,nonce:i,to:a,value:f,maxFeePerBlobGas:u,maxFeePerGas:l,maxPriorityFeePerGas:b,accessList:g,data:m}=e;aa(e);let v=e.blobVersionedHashes,I=e.sidecars;if(e.blobs&&(typeof v>"u"||typeof I>"u")){const O=typeof e.blobs[0]=="string"?e.blobs:e.blobs.map(S=>Ze(S)),L=e.kzg,U=Ri({blobs:O,kzg:L});if(typeof v>"u"&&(v=ko({commitments:U})),typeof I>"u"){const S=Ti({blobs:O,commitments:U,kzg:L});I=Uo({blobs:O,commitments:U,proofs:S})}}const B=_r(g),k=[W(r),i?W(i):"0x",b?W(b):"0x",l?W(l):"0x",n?W(n):"0x",a??"0x",f?W(f):"0x",m??"0x",B,u?W(u):"0x",v??[],...Kt(e,t)],T=[],C=[],F=[];if(I)for(let O=0;O<I.length;O++){const{blob:L,commitment:U,proof:S}=I[O];T.push(L),C.push(U),F.push(S)}return Vt(["0x03",ot(I?[k,T,C,F]:k)])}function pa(e,t){const{chainId:r,gas:n,nonce:i,to:a,value:f,maxFeePerGas:u,maxPriorityFeePerGas:l,accessList:b,data:g}=e;yn(e);const m=_r(b),v=[W(r),i?W(i):"0x",l?W(l):"0x",u?W(u):"0x",n?W(n):"0x",a??"0x",f?W(f):"0x",g??"0x",m,...Kt(e,t)];return Vt(["0x02",ot(v)])}function ba(e,t){const{chainId:r,gas:n,data:i,nonce:a,to:f,value:u,accessList:l,gasPrice:b}=e;fa(e);const g=_r(l),m=[W(r),a?W(a):"0x",b?W(b):"0x",n?W(n):"0x",f??"0x",u?W(u):"0x",i??"0x",g,...Kt(e,t)];return Vt(["0x01",ot(m)])}function ya(e,t){const{chainId:r=0,gas:n,data:i,nonce:a,to:f,value:u,gasPrice:l}=e;ua(e);let b=[a?W(a):"0x",l?W(l):"0x",n?W(n):"0x",f??"0x",u?W(u):"0x",i??"0x"];if(t){const g=(()=>{if(t.v>=35n)return(t.v-35n)/2n>0?t.v:27n+(t.v===35n?0n:1n);if(r>0)return BigInt(r*2)+BigInt(35n+t.v-27n);const I=27n+(t.v===27n?0n:1n);if(t.v!==I)throw new bo({v:t.v});return I})(),m=ar(t.r),v=ar(t.s);b=[...b,W(g),m==="0x00"?"0x":m,v==="0x00"?"0x":v]}else r>0&&(b=[...b,W(r),"0x","0x"]);return ot(b)}function Kt(e,t){const r=t??e,{v:n,yParity:i}=r;if(typeof r.r>"u")return[];if(typeof r.s>"u")return[];if(typeof n>"u"&&typeof i>"u")return[];const a=ar(r.r),f=ar(r.s);return[typeof i=="number"?i?W(1):"0x":n===0n?"0x":n===1n?W(1):n===27n?"0x":W(1),a==="0x00"?"0x":a,f==="0x00"?"0x":f]}const ga={gasPriceOracle:{address:"0x420000000000000000000000000000000000000F"},l1Block:{address:"0x4200000000000000000000000000000000000015"},l2CrossDomainMessenger:{address:"0x4200000000000000000000000000000000000007"},l2Erc721Bridge:{address:"0x4200000000000000000000000000000000000014"},l2StandardBridge:{address:"0x4200000000000000000000000000000000000010"},l2ToL1MessagePasser:{address:"0x4200000000000000000000000000000000000016"}},ma={block:to({format(e){var r;return{transactions:(r=e.transactions)==null?void 0:r.map(n=>{if(typeof n=="string")return n;const i=cn(n);return i.typeHex==="0x7e"&&(i.isSystemTx=n.isSystemTx,i.mint=n.mint?gt(n.mint):void 0,i.sourceHash=n.sourceHash,i.type="deposit"),i}),stateRoot:e.stateRoot}}}),transaction:Qs({format(e){const t={};return e.type==="0x7e"&&(t.isSystemTx=e.isSystemTx,t.mint=e.mint?gt(e.mint):void 0,t.sourceHash=e.sourceHash,t.type="deposit"),t}}),transactionReceipt:so({format(e){return{l1GasPrice:e.l1GasPrice?gt(e.l1GasPrice):null,l1GasUsed:e.l1GasUsed?gt(e.l1GasUsed):null,l1Fee:e.l1Fee?gt(e.l1Fee):null,l1FeeScalar:e.l1FeeScalar?Number(e.l1FeeScalar):null}}})};function _a(e,t){return va(e)?xa(e):la(e,t)}const wa={transaction:_a};function xa(e){Ea(e);const{sourceHash:t,data:r,from:n,gas:i,isSystemTx:a,mint:f,to:u,value:l}=e,b=[t,n,u??"0x",f?W(f):"0x",l?W(l):"0x",i?W(i):"0x",a?"0x1":"0x",r??"0x"];return Vt(["0x7e",ot(b)])}function va(e){return e.type==="deposit"||typeof e.sourceHash<"u"}function Ea(e){const{from:t,to:r}=e;if(t&&!ft(t))throw new at({address:t});if(r&&!ft(r))throw new at({address:r})}const Dn={contracts:ga,formatters:ma,serializers:wa},Ba=Wt({id:42161,name:"Arbitrum One",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://arb1.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://arbiscan.io",apiUrl:"https://api.arbiscan.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:7654707}}}),Sa=Wt({id:421614,name:"Arbitrum Sepolia",nativeCurrency:{name:"Arbitrum Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia-rollup.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://sepolia.arbiscan.io",apiUrl:"https://api-sepolia.arbiscan.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:81930}},testnet:!0}),Lt=11155111,Ia=Wt({...Dn,id:84532,network:"base-sepolia",name:"Base Sepolia",nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia.base.org"]}},blockExplorers:{default:{name:"Basescan",url:"https://sepolia.basescan.org",apiUrl:"https://api-sepolia.basescan.org/api"}},contracts:{...Dn.contracts,disputeGameFactory:{[Lt]:{address:"0xd6E6dBf4F7EA0ac412fD8b65ED297e64BB7a06E1"}},l2OutputOracle:{[Lt]:{address:"0x84457ca9D0163FbC4bbfe4Dfbb20ba46e48DF254"}},portal:{[Lt]:{address:"0x49f53e41452c74589e85ca1677426ba426459e85",blockCreated:4446677}},l1StandardBridge:{[Lt]:{address:"0xfd0Bf71F60660E2f608ed56e1659C450eB113120",blockCreated:4446677}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:1059647}},testnet:!0,sourceId:Lt}),Aa=Wt({id:1,name:"Ethereum",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://cloudflare-eth.com"]}},blockExplorers:{default:{name:"Etherscan",url:"https://etherscan.io",apiUrl:"https://api.etherscan.io/api"}},contracts:{ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"},ensUniversalResolver:{address:"0xce01f8eee7E479C928F8919abD53E553a36CeF67",blockCreated:19258213},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:14353601}}}),Ra=Wt({id:11155111,name:"Sepolia",nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc2.sepolia.org"]}},blockExplorers:{default:{name:"Etherscan",url:"https://sepolia.etherscan.io",apiUrl:"https://api-sepolia.etherscan.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:751532},ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"},ensUniversalResolver:{address:"0xc8Af999e38273D658BE1b921b88A9Ddf005769cC",blockCreated:5317080}},testnet:!0});function Qr(e){return typeof e=="string"&&(e=Buffer.from(e,"hex")),e.length===32?e:e.subarray(1,33)}function bt(e,t){if(!e)throw new Error(t)}function Ta(e){return Buffer.concat([Uint8Array.from([192]),Pa(e)])}function Pa(e){const t=Rn.encodingLength(e.length),r=Buffer.allocUnsafe(t);return Rn.encode(e.length,r),Buffer.concat([r,e])}function ka(e,t){if(e.compare(t)>0){const r=e;e=t,t=r}return[e,t]}const Ot=e=>e.length===64?e:e.slice(2),Ca=e=>{if(!e)return!1;try{const t=Buffer.from(e,"hex");return wt.isPoint(t)}catch{return!1}},La={ethereum:Aa,ethereum_arbitrum:Ba,ethereum_sepolia:Ra,arbitrum_sepolia:Sa,ethereum_localnet:J.EthereumLocalnet,arbitrum_localnet:J.ArbitrumLocalnet,base_sepolia:Ia},Oa=async(e,t)=>{var n;const r=La[e];if(r)try{if(r.id===((n=t.chain)==null?void 0:n.id))return P.Ok({message:"Already on the network",walletClient:t});await t.switchChain({id:r.id});const i=He.createWalletClient({account:t.account,chain:r,transport:He.custom(window.ethereum)});return P.Ok({message:"Switched chain",walletClient:i})}catch(i){if(Fa(i))try{await t.addChain({chain:r});const a=He.createWalletClient({account:t.account,chain:r,transport:He.custom(window.ethereum)});return P.Ok({message:"Added network",walletClient:a})}catch{return P.Err("Failed to add network")}else return P.Err("Failed to switch network")}else return P.Err("Chain not supported")},Fa=e=>typeof e=="object"&&e!==null&&"code"in e&&e.code===4902,ji=(e,t,r,n)=>e+":"+t.toLowerCase()+"::"+r+":"+n.toLowerCase();var ne=(e=>(e.Created="Created",e.Matched="Matched",e.InitiateDetected="InitiateDetected",e.Initiated="Initiated",e.CounterPartyInitiateDetected="CounterPartyInitiateDetected",e.CounterPartyInitiated="CounterPartyInitiated",e.RedeemDetected="RedeemDetected",e.Redeemed="Redeemed",e.CounterPartyRedeemDetected="CounterPartyRedeemDetected",e.CounterPartyRedeemed="CounterPartyRedeemed",e.Completed="Completed",e.CounterPartySwapExpired="CounterPartySwapExpired",e.Expired="Expired",e.RefundDetected="RefundDetected",e.Refunded="Refunded",e.CounterPartyRefundDetected="CounterPartyRefundDetected",e.CounterPartyRefunded="CounterPartyRefunded",e.Cancelled="Cancelled",e.DeadLineExceeded="DeadLineExceeded",e))(ne||{}),Q=(e=>(e.Idle="Idle",e.InitiateDetected="InitiateDetected",e.Initiated="Initiated",e.RedeemDetected="RedeemDetected",e.Redeemed="Redeemed",e.RefundDetected="RefundDetected",e.Refunded="Refunded",e.Expired="Expired",e))(Q||{});const gn=(e,t,r)=>{const n=cr(e.source_swap,t),i=cr(e.destination_swap,r);if(i===Q.RedeemDetected)return ne.RedeemDetected;if(n===Q.Redeemed)return ne.CounterPartyRedeemed;if(n===Q.RedeemDetected)return ne.CounterPartyRedeemDetected;if(i===Q.Redeemed)return ne.Redeemed;if(n===Q.Refunded)return ne.Refunded;if(n===Q.RefundDetected)return ne.RefundDetected;if(i===Q.Expired)return ne.CounterPartySwapExpired;if(n===Q.Expired)return ne.Expired;if(i===Q.Refunded)return ne.CounterPartyRefunded;if(i===Q.RefundDetected)return ne.CounterPartyRefundDetected;const a=Number(e.create_order.additional_data.deadline);return i===Q.Initiated?ne.CounterPartyInitiated:i===Q.InitiateDetected?ne.CounterPartyInitiateDetected:zt(a,12)?ne.DeadLineExceeded:n===Q.Initiated?ne.Initiated:zt(a,1)?ne.DeadLineExceeded:n===Q.InitiateDetected?ne.InitiateDetected:ne.Matched},cr=(e,t)=>{if(e.redeem_tx_hash)return Number(e.redeem_block_number)?Q.Redeemed:Q.RedeemDetected;if(e.refund_tx_hash)return Number(e.refund_block_number)?Q.Refunded:Q.RefundDetected;if(Number(e.initiate_block_number)){const r=Number(e.initiate_block_number)+e.timelock;if(t>r)return Q.Expired}return e.initiate_tx_hash?Number(e.initiate_block_number)?Q.Initiated:Q.InitiateDetected:Q.Idle},Ua=(e,t,r)=>{const n=gn(e,t,r);return mn(n)},mn=e=>{switch(e){case ne.Matched:return ue.Initiate;case ne.CounterPartyInitiated:case ne.CounterPartyInitiateDetected:case ne.RedeemDetected:return ue.Redeem;case ne.Expired:return ue.Refund;default:return ue.Idle}},zt=(e,t=0)=>{const r=Date.now(),n=e*1e3+t*36e5;return r>=n},Gi=e=>e.filter(t=>{const{source_swap:r,create_order:n}=t,{initiate_tx_hash:i,initiate_block_number:a}=r,{deadline:f}=n.additional_data;return i&&Number(a)?!0:i&&!Number(a)?!zt(Number(f),12):i?!0:!zt(Number(f),1)}),Na=[{inputs:[{internalType:"address",name:"token_",type:"address"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"InvalidShortString",type:"error"},{inputs:[{internalType:"string",name:"str",type:"string"}],name:"StringTooLong",type:"error"},{anonymous:!1,inputs:[],name:"EIP712DomainChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"orderID",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"secretHash",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Initiated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"orderID",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"secretHash",type:"bytes32"},{indexed:!1,internalType:"bytes",name:"secret",type:"bytes"}],name:"Redeemed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"orderID",type:"bytes32"}],name:"Refunded",type:"event"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"redeemer",type:"address"},{internalType:"uint256",name:"timelock",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"secretHash",type:"bytes32"}],name:"initiate",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"redeemer",type:"address"},{internalType:"uint256",name:"timelock",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"secretHash",type:"bytes32"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"initiateWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"orderID",type:"bytes32"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"instantRefund",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"address",name:"redeemer",type:"address"},{internalType:"uint256",name:"expiry",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"secretHash",type:"bytes32"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct HTLC.InitWithSig[]",name:"inits",type:"tuple[]"},{components:[{internalType:"bytes32",name:"orderID",type:"bytes32"},{internalType:"bytes",name:"secret",type:"bytes"}],internalType:"struct HTLC.Redeem[]",name:"redeems",type:"tuple[]"},{components:[{internalType:"bytes32",name:"orderID",type:"bytes32"}],internalType:"struct HTLC.Refund[]",name:"refunds",type:"tuple[]"}],name:"multicall",outputs:[{internalType:"bool[]",name:"results",type:"bool[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"orders",outputs:[{internalType:"bool",name:"isFulfilled",type:"bool"},{internalType:"address",name:"initiator",type:"address"},{internalType:"address",name:"redeemer",type:"address"},{internalType:"uint256",name:"initiatedAt",type:"uint256"},{internalType:"uint256",name:"timelock",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"orderID",type:"bytes32"},{internalType:"bytes",name:"secret",type:"bytes"}],name:"redeem",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"orderID",type:"bytes32"}],name:"refund",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"token",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"}];class Wi{constructor(t,r,n){this.url=new ge.Url("/relayer",r),this.auth=n,this.order=t}async init(t,r){if(!t.account)return P.Err("No account found");if(t.account.address.toLowerCase()!==this.order.source_swap.initiator.toLowerCase())return P.Err("Account address and order initiator mismatch");if(!r){const g=await ge.fetchEVMBlockNumber(t);if(g.error)return P.Err(g.error);r=g.val}if(cr(this.order.source_swap,r)!==Q.Idle)return P.Err("Invalid swap status");const{create_order:i,source_swap:a}=this.order;if(!a.amount||!a.redeemer||!i.timelock||!i.secret_hash)return P.Err("Invalid order");const f=ge.with0x(i.secret_hash),u=BigInt(i.timelock),l=ge.with0x(a.redeemer),b=BigInt(a.amount);try{const g=await this.auth.getToken();if(g.error)return P.Err(g.error);const m=He.getContract({address:ge.with0x(this.order.source_swap.asset),abi:Na,client:t}),v=await m.read.token(),I=await ge.checkAllowanceAndApprove(Number(b),v,this.order.source_swap.asset,t);if(I.error)return P.Err(I.error);const B=await m.read.eip712Domain(),k=await t.signTypedData({account:t.account,domain:{name:B[1],version:B[2],chainId:Number(B[3]),verifyingContract:B[4]},types:{Initiate:[{name:"redeemer",type:"address"},{name:"timelock",type:"uint256"},{name:"amount",type:"uint256"},{name:"secretHash",type:"bytes32"}]},primaryType:"Initiate",message:{redeemer:l,timelock:u,amount:b,secretHash:f}}),T=await P.Fetcher.post(this.url.endpoint("initiate"),{body:JSON.stringify({order_id:i.create_id,signature:k,perform_on:"Source"}),headers:{Authorization:ge.Authorization(g.val),"Content-Type":"application/json"}});return T.error?P.Err(T.error):T.result?P.Ok(T.result):P.Err("Init: No result found")}catch(g){return console.log("init error :",g),P.Err(String(g))}}async redeem(t,r){try{const n=await this.auth.getToken();if(n.error)return P.Err(n.error);const i=await P.Fetcher.post(this.url.endpoint("redeem"),{body:JSON.stringify({order_id:t,secret:P.trim0x(r),perform_on:"Destination"}),headers:{Authorization:ge.Authorization(n.val),"Content-Type":"application/json"}});return i.error?P.Err(i.error):i.result?P.Ok(i.result):P.Err("Redeem: No result found")}catch(n){return P.Err(String(n))}}}const Ma=Buffer.from("79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","hex"),Da=Buffer.from("483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8","hex"),$a=Buffer.concat([Ma,Da]),Ha=Buffer.from("0250929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0","hex"),$n={failedToCreateInternalPubkey:"failed to create internal pubkey",failedToTweakPubkey:"failed to tweak pubkey"};function za(){const e=gi.crypto.sha256(Buffer.from("GardenHTLC","utf-8")),t=wt.pointMultiply(Buffer.concat([Buffer.from("04","hex"),$a]),e);if(!t)throw new Error($n.failedToCreateInternalPubkey);const r=wt.pointAdd(Ha,t);if(!r)throw new Error($n.failedToCreateInternalPubkey);return Qr(Buffer.from(r))}const _e={secretMismatch:"invalid secret",secretHashLenMismatch:"secret hash should be 32 bytes",pubkeyLenMismatch:"pubkey should be 32 bytes",zeroOrNegativeExpiry:"expiry should be greater than 0",htlcAddressGenerationFailed:"failed to generate htlc address",notFunded:"address not funded",noCounterpartySigs:"counterparty signatures are required",counterPartySigNotFound:e=>"counterparty signature not found for utxo "+e,invalidCounterpartySigForUTXO:e=>"invalid counterparty signature for utxo "+e,htlcNotExpired:e=>`HTLC not expired, need more ${e} blocks`,controlBlockGenerationFailed:"failed to generate control block",invalidLeaf:"invalid leaf"},rr=192;ye.initEccLib(wt);class lr{constructor(t,r,n,i,a,f,u,l){this.secretHash=n,this.redeemerPubkey=i,this.initiatorPubkey=a,this.expiry=f,this.signer=t,this.network=u,this.internalPubkey=za(),this.initiateAmount=r,this.utxoHashes=l}static async from(t,r,n,i,a,f,u){n=n.startsWith("0x")?n.slice(2):n,bt(n.length===64,_e.secretHashLenMismatch),bt(i.length===64||i.length===66,`initiator ${_e.pubkeyLenMismatch}`),bt(a.length===64||a.length===66,`redeemer ${_e.pubkeyLenMismatch}`),bt(f>0,_e.zeroOrNegativeExpiry);const l=await t.getNetwork();return new lr(t,r,n,Qr(a).toString("hex"),Qr(i).toString("hex"),f,l,u)}address(){const{address:t}=ye.payments.p2tr({internalPubkey:this.internalPubkey,network:this.network,scriptTree:this.leaves()});if(!t)throw new Error(_e.htlcAddressGenerationFailed);return t}id(){return this.address()}async _buildRawTx(t,r){const n=new ye.Transaction;n.version=2;const i=this.address(),a=await this.signer.getProvider();let f=[];if(this.utxoHashes&&this.utxoHashes.length>0)for(const l of this.utxoHashes){const b=await a.getTransaction(l);for(let g=0;g<b.vout.length;g++){const m=b.vout[g];m.scriptpubkey_address===i&&f.push({txid:b.txid,vout:g,value:m.value,status:{confirmed:!1}})}}else f=await a.getUTXOs(i);const u=f.reduce((l,b)=>l+b.value,0);if(u===0)throw new Error(`${i} ${_e.notFunded}`);for(let l=0;l<f.length;l++)n.addInput(Buffer.from(f[l].txid,"hex").reverse(),f[l].vout);return r??(r=await a.suggestFee(i,u,An.Urgency.MEDIUM)),n.addOutput(ye.address.toOutputScript(t,this.network),u-r),{tx:n,usedUtxos:f}}async buildRawTx(t){return await this._buildRawTx(await this.signer.getAddress(),t)}getOutputScript(){return ye.address.toOutputScript(this.address(),this.network)}async init(t){return t??(t=await(await this.signer.getProvider()).suggestFee(await this.signer.getAddress(),this.initiateAmount,An.Urgency.MEDIUM)),await this.signer.send(this.address(),this.initiateAmount,t)}async instantRefund(t,r){bt(t.length>0,_e.noCounterpartySigs);const{tx:n,usedUtxos:i}=await this.buildRawTx(r);for(const m of i)if(!t.find(v=>v.utxo===m.txid))throw new Error(_e.counterPartySigNotFound(m.txid));const a=this.getOutputScript(),f=ye.Transaction.SIGHASH_DEFAULT,u=this.leafHash(2),l=i.map(m=>m.value),b=Fr(a,i.length);for(let m=0;m<n.ins.length;m++){const v=n.hashForWitnessV1(m,b,l,f,u);if(!wt.verifySchnorr(v,Buffer.from(this.redeemerPubkey,"hex"),Buffer.from(t[m].sig,"hex")))throw new Error(_e.invalidCounterpartySigForUTXO(t[m].utxo));const I=await this.signer.signSchnorr(v),B=Buffer.from(n.ins[m].hash).reverse().toString("hex"),k=t.find(T=>T.utxo===B);if(!k)throw new Error(_e.counterPartySigNotFound(B));n.setWitness(m,[Buffer.from(k.sig,"hex"),I,this.instantRefundLeaf(),this.generateControlBlockFor(2)])}return await(await this.signer.getProvider()).broadcast(n.toHex())}async redeem(t,r,n){bt(ye.crypto.sha256(Buffer.from(t,"hex")).toString("hex")===this.secretHash,_e.secretMismatch);const{tx:i,usedUtxos:a}=await this._buildRawTx(r??await this.signer.getAddress(),n),f=this.leafHash(1),u=a.map(m=>m.value),l=Fr(this.getOutputScript(),a.length),b=ye.Transaction.SIGHASH_DEFAULT;for(let m=0;m<i.ins.length;m++){const v=i.hashForWitnessV1(m,l,u,b,f),I=await this.signer.signSchnorr(v);i.setWitness(m,[I,Buffer.from(t,"hex"),this.redeemLeaf(),this.generateControlBlockFor(1)])}return await(await this.signer.getProvider()).broadcast(i.toHex())}async refund(t,r){const{tx:n,usedUtxos:i}=await this._buildRawTx(t??await this.signer.getAddress(),r),[a,f]=await this.canRefund(i);if(!a)throw new Error(_e.htlcNotExpired(f));const u=this.leafHash(0),l=i.map(v=>v.value),b=Fr(this.getOutputScript(),i.length),g=ye.Transaction.SIGHASH_DEFAULT;console.log("hashType :",g),console.log("values :",l),console.log("outputs :",b),console.log("tx.ins.length :",n.ins.length),console.log("refundLeafHash :",u);for(let v=0;v<n.ins.length;v++){n.ins[v].sequence=this.expiry;const I=n.hashForWitnessV1(v,b,l,g,u),B=await this.signer.signSchnorr(I);n.setWitness(v,[B,this.refundLeaf(),this.generateControlBlockFor(0)])}return await(await this.signer.getProvider()).broadcast(n.toHex())}async canRefund(t){const n=await(await this.signer.getProvider()).getLatestTip();for(const i of t){let a=0;if(i.status.confirmed&&i.status.block_height+this.expiry>n?a=i.status.block_height+this.expiry-n+1:i.status.confirmed||(a=this.expiry+1),a>0)return[!1,a]}return[!0,0]}generateControlBlockFor(t){let r;switch(t){case 1:r=this.redeemLeaf();break;case 0:r=this.refundLeaf();break;case 2:r=this.instantRefundLeaf();break;default:throw new Error(_e.invalidLeaf)}const n=ye.payments.p2tr({internalPubkey:this.internalPubkey,network:this.network,scriptTree:this.leaves(),redeem:{output:r,redeemVersion:rr}});if(!n.witness)throw new Error(_e.controlBlockGenerationFailed);return n.witness[n.witness.length-1]}leafHash(t){let r=this.redeemLeaf();return t===0&&(r=this.refundLeaf()),t===2&&(r=this.instantRefundLeaf()),ye.crypto.taggedHash("TapLeaf",Ta(r))}refundLeaf(){return ye.script.fromASM(`
5
5
  ${ye.script.number.encode(this.expiry).toString("hex")}
6
6
  OP_CHECKSEQUENCEVERIFY
7
7
  OP_DROP
package/dist/index.js CHANGED
@@ -2517,6 +2517,7 @@ class br {
2517
2517
  0
2518
2518
  /* REFUND */
2519
2519
  ), l = i.map((v) => v.value), b = Mr(this.getOutputScript(), i.length), g = ye.Transaction.SIGHASH_DEFAULT;
2520
+ console.log("hashType :", g), console.log("values :", l), console.log("outputs :", b), console.log("tx.ins.length :", n.ins.length), console.log("refundLeafHash :", u);
2520
2521
  for (let v = 0; v < n.ins.length; v++) {
2521
2522
  n.ins[v].sequence = this.expiry;
2522
2523
  const I = n.hashForWitnessV1(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gardenfi/core",
3
- "version": "0.2.0-beta.66",
3
+ "version": "0.2.0-beta.67",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"