@allbridge/bridge-core-sdk 3.23.1-alpha.1 → 3.23.1-beta.2

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.
@@ -1,4 +1,4 @@
1
- var fs=Object.create;var ki=Object.defineProperty;var ys=Object.getOwnPropertyDescriptor;var hs=Object.getOwnPropertyNames;var Ts=Object.getPrototypeOf,bs=Object.prototype.hasOwnProperty;var Bt=(s,i)=>()=>(s&&(i=s(s=0)),i);var Gr=(s,i)=>()=>(i||s((i={exports:{}}).exports,i),i.exports);var Ss=(s,i,r,a)=>{if(i&&typeof i=="object"||typeof i=="function")for(let o of hs(i))!bs.call(s,o)&&o!==r&&ki(s,o,{get:()=>i[o],enumerable:!(a=ys(i,o))||a.enumerable});return s};var He=(s,i,r)=>(r=s!=null?fs(Ts(s)):{},Ss(i||!s||!s.__esModule?ki(r,"default",{value:s,enumerable:!0}):r,s));var g=Bt(()=>{});function Ps(s,i){this.fun=s,this.array=i}function xi(s){var i=Math.floor((Date.now()-It.now())*.001),r=It.now()*.001,a=Math.floor(r)+i,o=Math.floor(r%1*1e9);return s&&(a=a-s[0],o=o-s[1],o<0&&(a--,o+=Vr)),[a,o]}var Fc,It,Ur,Vr,Fi=Bt(()=>{g();y();f();Ps.prototype.run=function(){this.fun.apply(null,this.array)};Fc={PATH:"/usr/bin",LANG:typeof navigator<"u"?navigator.language+".UTF-8":void 0,PWD:"/",HOME:"/home",TMP:"/tmp"},It={now:typeof performance<"u"?performance.now.bind(performance):void 0,timing:typeof performance<"u"?performance.timing:void 0};It.now===void 0&&(Ur=Date.now(),It.timing&&It.timing.navigationStart&&(Ur=It.timing.navigationStart),It.now=()=>Date.now()-Ur);Vr=1e9;xi.bigint=function(s){var i=xi(s);return typeof BigInt>"u"?i[0]*Vr+i[1]:BigInt(i[0]*Vr)+BigInt(i[1])}});var f=Bt(()=>{Fi()});function ws(){if(Mi)return on;Mi=!0,on.byteLength=p,on.toByteArray=T,on.fromByteArray=x;for(var s=[],i=[],r=typeof Uint8Array<"u"?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,u=a.length;o<u;++o)s[o]=a[o],i[a.charCodeAt(o)]=o;i[45]=62,i[95]=63;function m(B){var I=B.length;if(I%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var F=B.indexOf("=");F===-1&&(F=I);var D=F===I?0:4-F%4;return[F,D]}function p(B){var I=m(B),F=I[0],D=I[1];return(F+D)*3/4-D}function h(B,I,F){return(I+F)*3/4-F}function T(B){var I,F=m(B),D=F[0],O=F[1],W=new r(h(B,D,O)),E=0,V=O>0?D-4:D,Z;for(Z=0;Z<V;Z+=4)I=i[B.charCodeAt(Z)]<<18|i[B.charCodeAt(Z+1)]<<12|i[B.charCodeAt(Z+2)]<<6|i[B.charCodeAt(Z+3)],W[E++]=I>>16&255,W[E++]=I>>8&255,W[E++]=I&255;return O===2&&(I=i[B.charCodeAt(Z)]<<2|i[B.charCodeAt(Z+1)]>>4,W[E++]=I&255),O===1&&(I=i[B.charCodeAt(Z)]<<10|i[B.charCodeAt(Z+1)]<<4|i[B.charCodeAt(Z+2)]>>2,W[E++]=I>>8&255,W[E++]=I&255),W}function S(B){return s[B>>18&63]+s[B>>12&63]+s[B>>6&63]+s[B&63]}function P(B,I,F){for(var D,O=[],W=I;W<F;W+=3)D=(B[W]<<16&16711680)+(B[W+1]<<8&65280)+(B[W+2]&255),O.push(S(D));return O.join("")}function x(B){for(var I,F=B.length,D=F%3,O=[],W=16383,E=0,V=F-D;E<V;E+=W)O.push(P(B,E,E+W>V?V:E+W));return D===1?(I=B[F-1],O.push(s[I>>2]+s[I<<4&63]+"==")):D===2&&(I=(B[F-2]<<8)+B[F-1],O.push(s[I>>10]+s[I>>4&63]+s[I<<2&63]+"=")),O.join("")}return on}function Cs(){if(Oi)return Mn;Oi=!0;return Mn.read=function(s,i,r,a,o){var u,m,p=o*8-a-1,h=(1<<p)-1,T=h>>1,S=-7,P=r?o-1:0,x=r?-1:1,B=s[i+P];for(P+=x,u=B&(1<<-S)-1,B>>=-S,S+=p;S>0;u=u*256+s[i+P],P+=x,S-=8);for(m=u&(1<<-S)-1,u>>=-S,S+=a;S>0;m=m*256+s[i+P],P+=x,S-=8);if(u===0)u=1-T;else{if(u===h)return m?NaN:(B?-1:1)*(1/0);m=m+Math.pow(2,a),u=u-T}return(B?-1:1)*m*Math.pow(2,u-a)},Mn.write=function(s,i,r,a,o,u){var m,p,h,T=u*8-o-1,S=(1<<T)-1,P=S>>1,x=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,B=a?0:u-1,I=a?1:-1,F=i<0||i===0&&1/i<0?1:0;for(i=Math.abs(i),isNaN(i)||i===1/0?(p=isNaN(i)?1:0,m=S):(m=Math.floor(Math.log(i)/Math.LN2),i*(h=Math.pow(2,-m))<1&&(m--,h*=2),m+P>=1?i+=x/h:i+=x*Math.pow(2,1-P),i*h>=2&&(m++,h/=2),m+P>=S?(p=0,m=S):m+P>=1?(p=(i*h-1)*Math.pow(2,o),m=m+P):(p=i*Math.pow(2,P-1)*Math.pow(2,o),m=0));o>=8;s[r+B]=p&255,B+=I,p/=256,o-=8);for(m=m<<o|p,T+=o;T>0;s[r+B]=m&255,B+=I,m/=256,T-=8);s[r+B-I]|=F*128},Mn}function Ni(){if(Di)return Rt;Di=!0;let s=ws(),i=Cs(),r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Rt.Buffer=m,Rt.SlowBuffer=O,Rt.INSPECT_MAX_BYTES=50;let a=2147483647;Rt.kMaxLength=a,m.TYPED_ARRAY_SUPPORT=o(),!m.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function o(){try{let l=new Uint8Array(1),c={foo:function(){return 42}};return Object.setPrototypeOf(c,Uint8Array.prototype),Object.setPrototypeOf(l,c),l.foo()===42}catch{return!1}}Object.defineProperty(m.prototype,"parent",{enumerable:!0,get:function(){if(m.isBuffer(this))return this.buffer}}),Object.defineProperty(m.prototype,"offset",{enumerable:!0,get:function(){if(m.isBuffer(this))return this.byteOffset}});function u(l){if(l>a)throw new RangeError('The value "'+l+'" is invalid for option "size"');let c=new Uint8Array(l);return Object.setPrototypeOf(c,m.prototype),c}function m(l,c,A){if(typeof l=="number"){if(typeof c=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return S(l)}return p(l,c,A)}m.poolSize=8192;function p(l,c,A){if(typeof l=="string")return P(l,c);if(ArrayBuffer.isView(l))return B(l);if(l==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof l);if(rt(l,ArrayBuffer)||l&&rt(l.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(rt(l,SharedArrayBuffer)||l&&rt(l.buffer,SharedArrayBuffer)))return I(l,c,A);if(typeof l=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let d=l.valueOf&&l.valueOf();if(d!=null&&d!==l)return m.from(d,c,A);let b=F(l);if(b)return b;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof l[Symbol.toPrimitive]=="function")return m.from(l[Symbol.toPrimitive]("string"),c,A);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof l)}m.from=function(l,c,A){return p(l,c,A)},Object.setPrototypeOf(m.prototype,Uint8Array.prototype),Object.setPrototypeOf(m,Uint8Array);function h(l){if(typeof l!="number")throw new TypeError('"size" argument must be of type number');if(l<0)throw new RangeError('The value "'+l+'" is invalid for option "size"')}function T(l,c,A){return h(l),l<=0?u(l):c!==void 0?typeof A=="string"?u(l).fill(c,A):u(l).fill(c):u(l)}m.alloc=function(l,c,A){return T(l,c,A)};function S(l){return h(l),u(l<0?0:D(l)|0)}m.allocUnsafe=function(l){return S(l)},m.allocUnsafeSlow=function(l){return S(l)};function P(l,c){if((typeof c!="string"||c==="")&&(c="utf8"),!m.isEncoding(c))throw new TypeError("Unknown encoding: "+c);let A=W(l,c)|0,d=u(A),b=d.write(l,c);return b!==A&&(d=d.slice(0,b)),d}function x(l){let c=l.length<0?0:D(l.length)|0,A=u(c);for(let d=0;d<c;d+=1)A[d]=l[d]&255;return A}function B(l){if(rt(l,Uint8Array)){let c=new Uint8Array(l);return I(c.buffer,c.byteOffset,c.byteLength)}return x(l)}function I(l,c,A){if(c<0||l.byteLength<c)throw new RangeError('"offset" is outside of buffer bounds');if(l.byteLength<c+(A||0))throw new RangeError('"length" is outside of buffer bounds');let d;return c===void 0&&A===void 0?d=new Uint8Array(l):A===void 0?d=new Uint8Array(l,c):d=new Uint8Array(l,c,A),Object.setPrototypeOf(d,m.prototype),d}function F(l){if(m.isBuffer(l)){let c=D(l.length)|0,A=u(c);return A.length===0||l.copy(A,0,0,c),A}if(l.length!==void 0)return typeof l.length!="number"||Er(l.length)?u(0):x(l);if(l.type==="Buffer"&&Array.isArray(l.data))return x(l.data)}function D(l){if(l>=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return l|0}function O(l){return+l!=l&&(l=0),m.alloc(+l)}m.isBuffer=function(c){return c!=null&&c._isBuffer===!0&&c!==m.prototype},m.compare=function(c,A){if(rt(c,Uint8Array)&&(c=m.from(c,c.offset,c.byteLength)),rt(A,Uint8Array)&&(A=m.from(A,A.offset,A.byteLength)),!m.isBuffer(c)||!m.isBuffer(A))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(c===A)return 0;let d=c.length,b=A.length;for(let w=0,R=Math.min(d,b);w<R;++w)if(c[w]!==A[w]){d=c[w],b=A[w];break}return d<b?-1:b<d?1:0},m.isEncoding=function(c){switch(String(c).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},m.concat=function(c,A){if(!Array.isArray(c))throw new TypeError('"list" argument must be an Array of Buffers');if(c.length===0)return m.alloc(0);let d;if(A===void 0)for(A=0,d=0;d<c.length;++d)A+=c[d].length;let b=m.allocUnsafe(A),w=0;for(d=0;d<c.length;++d){let R=c[d];if(rt(R,Uint8Array))w+R.length>b.length?(m.isBuffer(R)||(R=m.from(R)),R.copy(b,w)):Uint8Array.prototype.set.call(b,R,w);else if(m.isBuffer(R))R.copy(b,w);else throw new TypeError('"list" argument must be an Array of Buffers');w+=R.length}return b};function W(l,c){if(m.isBuffer(l))return l.length;if(ArrayBuffer.isView(l)||rt(l,ArrayBuffer))return l.byteLength;if(typeof l!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof l);let A=l.length,d=arguments.length>2&&arguments[2]===!0;if(!d&&A===0)return 0;let b=!1;for(;;)switch(c){case"ascii":case"latin1":case"binary":return A;case"utf8":case"utf-8":return Wr(l).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A*2;case"hex":return A>>>1;case"base64":return vi(l).length;default:if(b)return d?-1:Wr(l).length;c=(""+c).toLowerCase(),b=!0}}m.byteLength=W;function E(l,c,A){let d=!1;if((c===void 0||c<0)&&(c=0),c>this.length||((A===void 0||A>this.length)&&(A=this.length),A<=0)||(A>>>=0,c>>>=0,A<=c))return"";for(l||(l="utf8");;)switch(l){case"hex":return _e(this,c,A);case"utf8":case"utf-8":return fe(this,c,A);case"ascii":return Be(this,c,A);case"latin1":case"binary":return Ze(this,c,A);case"base64":return Me(this,c,A);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return De(this,c,A);default:if(d)throw new TypeError("Unknown encoding: "+l);l=(l+"").toLowerCase(),d=!0}}m.prototype._isBuffer=!0;function V(l,c,A){let d=l[c];l[c]=l[A],l[A]=d}m.prototype.swap16=function(){let c=this.length;if(c%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let A=0;A<c;A+=2)V(this,A,A+1);return this},m.prototype.swap32=function(){let c=this.length;if(c%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let A=0;A<c;A+=4)V(this,A,A+3),V(this,A+1,A+2);return this},m.prototype.swap64=function(){let c=this.length;if(c%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let A=0;A<c;A+=8)V(this,A,A+7),V(this,A+1,A+6),V(this,A+2,A+5),V(this,A+3,A+4);return this},m.prototype.toString=function(){let c=this.length;return c===0?"":arguments.length===0?fe(this,0,c):E.apply(this,arguments)},m.prototype.toLocaleString=m.prototype.toString,m.prototype.equals=function(c){if(!m.isBuffer(c))throw new TypeError("Argument must be a Buffer");return this===c?!0:m.compare(this,c)===0},m.prototype.inspect=function(){let c="",A=Rt.INSPECT_MAX_BYTES;return c=this.toString("hex",0,A).replace(/(.{2})/g,"$1 ").trim(),this.length>A&&(c+=" ... "),"<Buffer "+c+">"},r&&(m.prototype[r]=m.prototype.inspect),m.prototype.compare=function(c,A,d,b,w){if(rt(c,Uint8Array)&&(c=m.from(c,c.offset,c.byteLength)),!m.isBuffer(c))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof c);if(A===void 0&&(A=0),d===void 0&&(d=c?c.length:0),b===void 0&&(b=0),w===void 0&&(w=this.length),A<0||d>c.length||b<0||w>this.length)throw new RangeError("out of range index");if(b>=w&&A>=d)return 0;if(b>=w)return-1;if(A>=d)return 1;if(A>>>=0,d>>>=0,b>>>=0,w>>>=0,this===c)return 0;let R=w-b,$=d-A,ae=Math.min(R,$),ne=this.slice(b,w),se=c.slice(A,d);for(let te=0;te<ae;++te)if(ne[te]!==se[te]){R=ne[te],$=se[te];break}return R<$?-1:$<R?1:0};function Z(l,c,A,d,b){if(l.length===0)return-1;if(typeof A=="string"?(d=A,A=0):A>2147483647?A=2147483647:A<-2147483648&&(A=-2147483648),A=+A,Er(A)&&(A=b?0:l.length-1),A<0&&(A=l.length+A),A>=l.length){if(b)return-1;A=l.length-1}else if(A<0)if(b)A=0;else return-1;if(typeof c=="string"&&(c=m.from(c,d)),m.isBuffer(c))return c.length===0?-1:K(l,c,A,d,b);if(typeof c=="number")return c=c&255,typeof Uint8Array.prototype.indexOf=="function"?b?Uint8Array.prototype.indexOf.call(l,c,A):Uint8Array.prototype.lastIndexOf.call(l,c,A):K(l,[c],A,d,b);throw new TypeError("val must be string, number or Buffer")}function K(l,c,A,d,b){let w=1,R=l.length,$=c.length;if(d!==void 0&&(d=String(d).toLowerCase(),d==="ucs2"||d==="ucs-2"||d==="utf16le"||d==="utf-16le")){if(l.length<2||c.length<2)return-1;w=2,R/=2,$/=2,A/=2}function ae(se,te){return w===1?se[te]:se.readUInt16BE(te*w)}let ne;if(b){let se=-1;for(ne=A;ne<R;ne++)if(ae(l,ne)===ae(c,se===-1?0:ne-se)){if(se===-1&&(se=ne),ne-se+1===$)return se*w}else se!==-1&&(ne-=ne-se),se=-1}else for(A+$>R&&(A=R-$),ne=A;ne>=0;ne--){let se=!0;for(let te=0;te<$;te++)if(ae(l,ne+te)!==ae(c,te)){se=!1;break}if(se)return ne}return-1}m.prototype.includes=function(c,A,d){return this.indexOf(c,A,d)!==-1},m.prototype.indexOf=function(c,A,d){return Z(this,c,A,d,!0)},m.prototype.lastIndexOf=function(c,A,d){return Z(this,c,A,d,!1)};function we(l,c,A,d){A=Number(A)||0;let b=l.length-A;d?(d=Number(d),d>b&&(d=b)):d=b;let w=c.length;d>w/2&&(d=w/2);let R;for(R=0;R<d;++R){let $=parseInt(c.substr(R*2,2),16);if(Er($))return R;l[A+R]=$}return R}function Ae(l,c,A,d){return Fn(Wr(c,l.length-A),l,A,d)}function Ve(l,c,A,d){return Fn(ls(c),l,A,d)}function je(l,c,A,d){return Fn(vi(c),l,A,d)}function Ke(l,c,A,d){return Fn(ds(c,l.length-A),l,A,d)}m.prototype.write=function(c,A,d,b){if(A===void 0)b="utf8",d=this.length,A=0;else if(d===void 0&&typeof A=="string")b=A,d=this.length,A=0;else if(isFinite(A))A=A>>>0,isFinite(d)?(d=d>>>0,b===void 0&&(b="utf8")):(b=d,d=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let w=this.length-A;if((d===void 0||d>w)&&(d=w),c.length>0&&(d<0||A<0)||A>this.length)throw new RangeError("Attempt to write outside buffer bounds");b||(b="utf8");let R=!1;for(;;)switch(b){case"hex":return we(this,c,A,d);case"utf8":case"utf-8":return Ae(this,c,A,d);case"ascii":case"latin1":case"binary":return Ve(this,c,A,d);case"base64":return je(this,c,A,d);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ke(this,c,A,d);default:if(R)throw new TypeError("Unknown encoding: "+b);b=(""+b).toLowerCase(),R=!0}},m.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Me(l,c,A){return c===0&&A===l.length?s.fromByteArray(l):s.fromByteArray(l.slice(c,A))}function fe(l,c,A){A=Math.min(l.length,A);let d=[],b=c;for(;b<A;){let w=l[b],R=null,$=w>239?4:w>223?3:w>191?2:1;if(b+$<=A){let ae,ne,se,te;switch($){case 1:w<128&&(R=w);break;case 2:ae=l[b+1],(ae&192)===128&&(te=(w&31)<<6|ae&63,te>127&&(R=te));break;case 3:ae=l[b+1],ne=l[b+2],(ae&192)===128&&(ne&192)===128&&(te=(w&15)<<12|(ae&63)<<6|ne&63,te>2047&&(te<55296||te>57343)&&(R=te));break;case 4:ae=l[b+1],ne=l[b+2],se=l[b+3],(ae&192)===128&&(ne&192)===128&&(se&192)===128&&(te=(w&15)<<18|(ae&63)<<12|(ne&63)<<6|se&63,te>65535&&te<1114112&&(R=te))}}R===null?(R=65533,$=1):R>65535&&(R-=65536,d.push(R>>>10&1023|55296),R=56320|R&1023),d.push(R),b+=$}return Oe(d)}let Ce=4096;function Oe(l){let c=l.length;if(c<=Ce)return String.fromCharCode.apply(String,l);let A="",d=0;for(;d<c;)A+=String.fromCharCode.apply(String,l.slice(d,d+=Ce));return A}function Be(l,c,A){let d="";A=Math.min(l.length,A);for(let b=c;b<A;++b)d+=String.fromCharCode(l[b]&127);return d}function Ze(l,c,A){let d="";A=Math.min(l.length,A);for(let b=c;b<A;++b)d+=String.fromCharCode(l[b]);return d}function _e(l,c,A){let d=l.length;(!c||c<0)&&(c=0),(!A||A<0||A>d)&&(A=d);let b="";for(let w=c;w<A;++w)b+=ps[l[w]];return b}function De(l,c,A){let d=l.slice(c,A),b="";for(let w=0;w<d.length-1;w+=2)b+=String.fromCharCode(d[w]+d[w+1]*256);return b}m.prototype.slice=function(c,A){let d=this.length;c=~~c,A=A===void 0?d:~~A,c<0?(c+=d,c<0&&(c=0)):c>d&&(c=d),A<0?(A+=d,A<0&&(A=0)):A>d&&(A=d),A<c&&(A=c);let b=this.subarray(c,A);return Object.setPrototypeOf(b,m.prototype),b};function G(l,c,A){if(l%1!==0||l<0)throw new RangeError("offset is not uint");if(l+c>A)throw new RangeError("Trying to access beyond buffer length")}m.prototype.readUintLE=m.prototype.readUIntLE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let b=this[c],w=1,R=0;for(;++R<A&&(w*=256);)b+=this[c+R]*w;return b},m.prototype.readUintBE=m.prototype.readUIntBE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let b=this[c+--A],w=1;for(;A>0&&(w*=256);)b+=this[c+--A]*w;return b},m.prototype.readUint8=m.prototype.readUInt8=function(c,A){return c=c>>>0,A||G(c,1,this.length),this[c]},m.prototype.readUint16LE=m.prototype.readUInt16LE=function(c,A){return c=c>>>0,A||G(c,2,this.length),this[c]|this[c+1]<<8},m.prototype.readUint16BE=m.prototype.readUInt16BE=function(c,A){return c=c>>>0,A||G(c,2,this.length),this[c]<<8|this[c+1]},m.prototype.readUint32LE=m.prototype.readUInt32LE=function(c,A){return c=c>>>0,A||G(c,4,this.length),(this[c]|this[c+1]<<8|this[c+2]<<16)+this[c+3]*16777216},m.prototype.readUint32BE=m.prototype.readUInt32BE=function(c,A){return c=c>>>0,A||G(c,4,this.length),this[c]*16777216+(this[c+1]<<16|this[c+2]<<8|this[c+3])},m.prototype.readBigUInt64LE=gt(function(c){c=c>>>0,Gt(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&sn(c,this.length-8);let b=A+this[++c]*2**8+this[++c]*2**16+this[++c]*2**24,w=this[++c]+this[++c]*2**8+this[++c]*2**16+d*2**24;return BigInt(b)+(BigInt(w)<<BigInt(32))}),m.prototype.readBigUInt64BE=gt(function(c){c=c>>>0,Gt(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&sn(c,this.length-8);let b=A*2**24+this[++c]*2**16+this[++c]*2**8+this[++c],w=this[++c]*2**24+this[++c]*2**16+this[++c]*2**8+d;return(BigInt(b)<<BigInt(32))+BigInt(w)}),m.prototype.readIntLE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let b=this[c],w=1,R=0;for(;++R<A&&(w*=256);)b+=this[c+R]*w;return w*=128,b>=w&&(b-=Math.pow(2,8*A)),b},m.prototype.readIntBE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let b=A,w=1,R=this[c+--b];for(;b>0&&(w*=256);)R+=this[c+--b]*w;return w*=128,R>=w&&(R-=Math.pow(2,8*A)),R},m.prototype.readInt8=function(c,A){return c=c>>>0,A||G(c,1,this.length),this[c]&128?(255-this[c]+1)*-1:this[c]},m.prototype.readInt16LE=function(c,A){c=c>>>0,A||G(c,2,this.length);let d=this[c]|this[c+1]<<8;return d&32768?d|4294901760:d},m.prototype.readInt16BE=function(c,A){c=c>>>0,A||G(c,2,this.length);let d=this[c+1]|this[c]<<8;return d&32768?d|4294901760:d},m.prototype.readInt32LE=function(c,A){return c=c>>>0,A||G(c,4,this.length),this[c]|this[c+1]<<8|this[c+2]<<16|this[c+3]<<24},m.prototype.readInt32BE=function(c,A){return c=c>>>0,A||G(c,4,this.length),this[c]<<24|this[c+1]<<16|this[c+2]<<8|this[c+3]},m.prototype.readBigInt64LE=gt(function(c){c=c>>>0,Gt(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&sn(c,this.length-8);let b=this[c+4]+this[c+5]*2**8+this[c+6]*2**16+(d<<24);return(BigInt(b)<<BigInt(32))+BigInt(A+this[++c]*2**8+this[++c]*2**16+this[++c]*2**24)}),m.prototype.readBigInt64BE=gt(function(c){c=c>>>0,Gt(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&sn(c,this.length-8);let b=(A<<24)+this[++c]*2**16+this[++c]*2**8+this[++c];return(BigInt(b)<<BigInt(32))+BigInt(this[++c]*2**24+this[++c]*2**16+this[++c]*2**8+d)}),m.prototype.readFloatLE=function(c,A){return c=c>>>0,A||G(c,4,this.length),i.read(this,c,!0,23,4)},m.prototype.readFloatBE=function(c,A){return c=c>>>0,A||G(c,4,this.length),i.read(this,c,!1,23,4)},m.prototype.readDoubleLE=function(c,A){return c=c>>>0,A||G(c,8,this.length),i.read(this,c,!0,52,8)},m.prototype.readDoubleBE=function(c,A){return c=c>>>0,A||G(c,8,this.length),i.read(this,c,!1,52,8)};function le(l,c,A,d,b,w){if(!m.isBuffer(l))throw new TypeError('"buffer" argument must be a Buffer instance');if(c>b||c<w)throw new RangeError('"value" argument is out of bounds');if(A+d>l.length)throw new RangeError("Index out of range")}m.prototype.writeUintLE=m.prototype.writeUIntLE=function(c,A,d,b){if(c=+c,A=A>>>0,d=d>>>0,!b){let $=Math.pow(2,8*d)-1;le(this,c,A,d,$,0)}let w=1,R=0;for(this[A]=c&255;++R<d&&(w*=256);)this[A+R]=c/w&255;return A+d},m.prototype.writeUintBE=m.prototype.writeUIntBE=function(c,A,d,b){if(c=+c,A=A>>>0,d=d>>>0,!b){let $=Math.pow(2,8*d)-1;le(this,c,A,d,$,0)}let w=d-1,R=1;for(this[A+w]=c&255;--w>=0&&(R*=256);)this[A+w]=c/R&255;return A+d},m.prototype.writeUint8=m.prototype.writeUInt8=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,1,255,0),this[A]=c&255,A+1},m.prototype.writeUint16LE=m.prototype.writeUInt16LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,65535,0),this[A]=c&255,this[A+1]=c>>>8,A+2},m.prototype.writeUint16BE=m.prototype.writeUInt16BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,65535,0),this[A]=c>>>8,this[A+1]=c&255,A+2},m.prototype.writeUint32LE=m.prototype.writeUInt32LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,4294967295,0),this[A+3]=c>>>24,this[A+2]=c>>>16,this[A+1]=c>>>8,this[A]=c&255,A+4},m.prototype.writeUint32BE=m.prototype.writeUInt32BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,4294967295,0),this[A]=c>>>24,this[A+1]=c>>>16,this[A+2]=c>>>8,this[A+3]=c&255,A+4};function xn(l,c,A,d,b){Ri(c,d,b,l,A,7);let w=Number(c&BigInt(4294967295));l[A++]=w,w=w>>8,l[A++]=w,w=w>>8,l[A++]=w,w=w>>8,l[A++]=w;let R=Number(c>>BigInt(32)&BigInt(4294967295));return l[A++]=R,R=R>>8,l[A++]=R,R=R>>8,l[A++]=R,R=R>>8,l[A++]=R,A}function Pi(l,c,A,d,b){Ri(c,d,b,l,A,7);let w=Number(c&BigInt(4294967295));l[A+7]=w,w=w>>8,l[A+6]=w,w=w>>8,l[A+5]=w,w=w>>8,l[A+4]=w;let R=Number(c>>BigInt(32)&BigInt(4294967295));return l[A+3]=R,R=R>>8,l[A+2]=R,R=R>>8,l[A+1]=R,R=R>>8,l[A]=R,A+8}m.prototype.writeBigUInt64LE=gt(function(c,A=0){return xn(this,c,A,BigInt(0),BigInt("0xffffffffffffffff"))}),m.prototype.writeBigUInt64BE=gt(function(c,A=0){return Pi(this,c,A,BigInt(0),BigInt("0xffffffffffffffff"))}),m.prototype.writeIntLE=function(c,A,d,b){if(c=+c,A=A>>>0,!b){let ae=Math.pow(2,8*d-1);le(this,c,A,d,ae-1,-ae)}let w=0,R=1,$=0;for(this[A]=c&255;++w<d&&(R*=256);)c<0&&$===0&&this[A+w-1]!==0&&($=1),this[A+w]=(c/R>>0)-$&255;return A+d},m.prototype.writeIntBE=function(c,A,d,b){if(c=+c,A=A>>>0,!b){let ae=Math.pow(2,8*d-1);le(this,c,A,d,ae-1,-ae)}let w=d-1,R=1,$=0;for(this[A+w]=c&255;--w>=0&&(R*=256);)c<0&&$===0&&this[A+w+1]!==0&&($=1),this[A+w]=(c/R>>0)-$&255;return A+d},m.prototype.writeInt8=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,1,127,-128),c<0&&(c=255+c+1),this[A]=c&255,A+1},m.prototype.writeInt16LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,32767,-32768),this[A]=c&255,this[A+1]=c>>>8,A+2},m.prototype.writeInt16BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,32767,-32768),this[A]=c>>>8,this[A+1]=c&255,A+2},m.prototype.writeInt32LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,2147483647,-2147483648),this[A]=c&255,this[A+1]=c>>>8,this[A+2]=c>>>16,this[A+3]=c>>>24,A+4},m.prototype.writeInt32BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,2147483647,-2147483648),c<0&&(c=4294967295+c+1),this[A]=c>>>24,this[A+1]=c>>>16,this[A+2]=c>>>8,this[A+3]=c&255,A+4},m.prototype.writeBigInt64LE=gt(function(c,A=0){return xn(this,c,A,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),m.prototype.writeBigInt64BE=gt(function(c,A=0){return Pi(this,c,A,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function wi(l,c,A,d,b,w){if(A+d>l.length)throw new RangeError("Index out of range");if(A<0)throw new RangeError("Index out of range")}function Ci(l,c,A,d,b){return c=+c,A=A>>>0,b||wi(l,c,A,4),i.write(l,c,A,d,23,4),A+4}m.prototype.writeFloatLE=function(c,A,d){return Ci(this,c,A,!0,d)},m.prototype.writeFloatBE=function(c,A,d){return Ci(this,c,A,!1,d)};function Bi(l,c,A,d,b){return c=+c,A=A>>>0,b||wi(l,c,A,8),i.write(l,c,A,d,52,8),A+8}m.prototype.writeDoubleLE=function(c,A,d){return Bi(this,c,A,!0,d)},m.prototype.writeDoubleBE=function(c,A,d){return Bi(this,c,A,!1,d)},m.prototype.copy=function(c,A,d,b){if(!m.isBuffer(c))throw new TypeError("argument should be a Buffer");if(d||(d=0),!b&&b!==0&&(b=this.length),A>=c.length&&(A=c.length),A||(A=0),b>0&&b<d&&(b=d),b===d||c.length===0||this.length===0)return 0;if(A<0)throw new RangeError("targetStart out of bounds");if(d<0||d>=this.length)throw new RangeError("Index out of range");if(b<0)throw new RangeError("sourceEnd out of bounds");b>this.length&&(b=this.length),c.length-A<b-d&&(b=c.length-A+d);let w=b-d;return this===c&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(A,d,b):Uint8Array.prototype.set.call(c,this.subarray(d,b),A),w},m.prototype.fill=function(c,A,d,b){if(typeof c=="string"){if(typeof A=="string"?(b=A,A=0,d=this.length):typeof d=="string"&&(b=d,d=this.length),b!==void 0&&typeof b!="string")throw new TypeError("encoding must be a string");if(typeof b=="string"&&!m.isEncoding(b))throw new TypeError("Unknown encoding: "+b);if(c.length===1){let R=c.charCodeAt(0);(b==="utf8"&&R<128||b==="latin1")&&(c=R)}}else typeof c=="number"?c=c&255:typeof c=="boolean"&&(c=Number(c));if(A<0||this.length<A||this.length<d)throw new RangeError("Out of range index");if(d<=A)return this;A=A>>>0,d=d===void 0?this.length:d>>>0,c||(c=0);let w;if(typeof c=="number")for(w=A;w<d;++w)this[w]=c;else{let R=m.isBuffer(c)?c:m.from(c,b),$=R.length;if($===0)throw new TypeError('The value "'+c+'" is invalid for argument "value"');for(w=0;w<d-A;++w)this[w+A]=R[w%$]}return this};let Et={};function Nr(l,c,A){Et[l]=class extends A{constructor(){super(),Object.defineProperty(this,"message",{value:c.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${l}]`,this.stack,delete this.name}get code(){return l}set code(b){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:b,writable:!0})}toString(){return`${this.name} [${l}]: ${this.message}`}}}Nr("ERR_BUFFER_OUT_OF_BOUNDS",function(l){return l?`${l} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),Nr("ERR_INVALID_ARG_TYPE",function(l,c){return`The "${l}" argument must be of type number. Received type ${typeof c}`},TypeError),Nr("ERR_OUT_OF_RANGE",function(l,c,A){let d=`The value of "${l}" is out of range.`,b=A;return Number.isInteger(A)&&Math.abs(A)>2**32?b=Ii(String(A)):typeof A=="bigint"&&(b=String(A),(A>BigInt(2)**BigInt(32)||A<-(BigInt(2)**BigInt(32)))&&(b=Ii(b)),b+="n"),d+=` It must be ${c}. Received ${b}`,d},RangeError);function Ii(l){let c="",A=l.length,d=l[0]==="-"?1:0;for(;A>=d+4;A-=3)c=`_${l.slice(A-3,A)}${c}`;return`${l.slice(0,A)}${c}`}function As(l,c,A){Gt(c,"offset"),(l[c]===void 0||l[c+A]===void 0)&&sn(c,l.length-(A+1))}function Ri(l,c,A,d,b,w){if(l>A||l<c){let R=typeof c=="bigint"?"n":"",$;throw c===0||c===BigInt(0)?$=`>= 0${R} and < 2${R} ** ${(w+1)*8}${R}`:$=`>= -(2${R} ** ${(w+1)*8-1}${R}) and < 2 ** ${(w+1)*8-1}${R}`,new Et.ERR_OUT_OF_RANGE("value",$,l)}As(d,b,w)}function Gt(l,c){if(typeof l!="number")throw new Et.ERR_INVALID_ARG_TYPE(c,"number",l)}function sn(l,c,A){throw Math.floor(l)!==l?(Gt(l,A),new Et.ERR_OUT_OF_RANGE("offset","an integer",l)):c<0?new Et.ERR_BUFFER_OUT_OF_BOUNDS:new Et.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${c}`,l)}let us=/[^+/0-9A-Za-z-_]/g;function ms(l){if(l=l.split("=")[0],l=l.trim().replace(us,""),l.length<2)return"";for(;l.length%4!==0;)l=l+"=";return l}function Wr(l,c){c=c||1/0;let A,d=l.length,b=null,w=[];for(let R=0;R<d;++R){if(A=l.charCodeAt(R),A>55295&&A<57344){if(!b){if(A>56319){(c-=3)>-1&&w.push(239,191,189);continue}else if(R+1===d){(c-=3)>-1&&w.push(239,191,189);continue}b=A;continue}if(A<56320){(c-=3)>-1&&w.push(239,191,189),b=A;continue}A=(b-55296<<10|A-56320)+65536}else b&&(c-=3)>-1&&w.push(239,191,189);if(b=null,A<128){if((c-=1)<0)break;w.push(A)}else if(A<2048){if((c-=2)<0)break;w.push(A>>6|192,A&63|128)}else if(A<65536){if((c-=3)<0)break;w.push(A>>12|224,A>>6&63|128,A&63|128)}else if(A<1114112){if((c-=4)<0)break;w.push(A>>18|240,A>>12&63|128,A>>6&63|128,A&63|128)}else throw new Error("Invalid code point")}return w}function ls(l){let c=[];for(let A=0;A<l.length;++A)c.push(l.charCodeAt(A)&255);return c}function ds(l,c){let A,d,b,w=[];for(let R=0;R<l.length&&!((c-=2)<0);++R)A=l.charCodeAt(R),d=A>>8,b=A%256,w.push(b),w.push(d);return w}function vi(l){return s.toByteArray(ms(l))}function Fn(l,c,A,d){let b;for(b=0;b<d&&!(b+A>=c.length||b>=l.length);++b)c[b+A]=l[b];return b}function rt(l,c){return l instanceof c||l!=null&&l.constructor!=null&&l.constructor.name!=null&&l.constructor.name===c.name}function Er(l){return l!==l}let ps=function(){let l="0123456789abcdef",c=new Array(256);for(let A=0;A<16;++A){let d=A*16;for(let b=0;b<16;++b)c[d+b]=l[A]+l[b]}return c}();function gt(l){return typeof BigInt>"u"?gs:l}function gs(){throw new Error("BigInt not supported")}return Rt}var on,Mi,Mn,Oi,Rt,Di,Wi=Bt(()=>{g();y();f();on={},Mi=!1;Mn={},Oi=!1;Rt={},Di=!1});var vt,C,Zc,_c,Ei=Bt(()=>{g();y();f();Wi();vt=Ni();vt.Buffer;vt.SlowBuffer;vt.INSPECT_MAX_BYTES;vt.kMaxLength;C=vt.Buffer,Zc=vt.INSPECT_MAX_BYTES,_c=vt.kMaxLength});var y=Bt(()=>{Ei()});import{bcs as Fe}from"@mysten/sui/bcs";function to(s,i=["<",">"]){let[r,a]=i,o=[],u="",m=0;for(let p=0;p<s.length;p++){let h=s[p];if(h===r&&m++,h===a&&m--,m===0&&h===","){o.push(u.trim()),u="";continue}u+=h}return o.push(u.trim()),o}function Se(s){if(typeof s!="string")throw new Error(`Illegal type passed as a name of the type: ${s}`);let[i,r]=["<",">"],a=s.indexOf(i),o=Array.from(s).reverse().indexOf(r);if(a===-1&&o===-1)return{typeName:s,typeArgs:[]};if(a===-1||o===-1)throw new Error(`Unclosed generic in name '${s}'`);let u=s.slice(0,a),m=to(s.slice(a+1,s.length-o-1),[i,r]);return{typeName:u,typeArgs:m}}function Pa(s){return!s||typeof s!="object"||Array.isArray(s)?!1:"GasCoin"in s||"Input"in s||"Result"in s||"NestedResult"in s}function j(s,i){return Pa(i)?i:s.object(i)}function Xe(s,i,r){if(Pa(i))return j(s,i);function a(T){let{typeName:S,typeArgs:P}=Se(T);switch(S){case"bool":return Fe.Bool;case"u8":return Fe.U8;case"u16":return Fe.U16;case"u32":return Fe.U32;case"u64":return Fe.U64;case"u128":return Fe.U128;case"u256":return Fe.U256;case"address":return Fe.Address;case"0x1::string::String":case"0x1::ascii::String":return Fe.String;case"0x2::object::ID":return Fe.Address;case"0x1::option::Option":return Fe.option(a(P[0]));case"vector":return Fe.vector(a(P[0]));default:throw new Error(`invalid primitive type ${T}`)}}function o(T){for(let S of T){if(typeof S>"u"||S===null)return!0;if(Array.isArray(S))return o(S)}return!1}function u(T){for(let S of T){if(!Array.isArray(S)){if(S===null)continue;switch(typeof S){case"string":case"number":case"bigint":case"boolean":continue;default:return!1}}return u(S)}return!0}function m(T){for(let S of T){if(!Array.isArray(S))switch(typeof S){case"string":case"number":case"bigint":case"boolean":return!0;default:continue}return m(S)}return!1}let{typeName:p,typeArgs:h}=Se(r);switch(p){case"0x1::option::Option":if(i===null)return s.pure.option("bool",null);if(u([i]))return s.pure(a(r).serialize(i));if(m([i]))throw new Error("mixing primitive and TransactionArgument values is not supported");return s.moveCall({target:"0x1::option::some",typeArguments:[h[0]],arguments:[Xe(s,i,h[0])]});case"vector":if(!Array.isArray(i))throw new Error("expected an array for vector type");if(i.length===0)return s.pure(Fe.vector(Fe.Bool).serialize([]));if(o(i))throw new Error("the provided array contains undefined or null values");if(u(i))return s.pure(a(r).serialize(i));if(m(i))throw new Error("mixing primitive and TransactionArgument values is not supported");return s.makeMoveVec({type:h[0],elements:i});default:return s.pure(a(r).serialize(i))}}function no(s){let i=s.split("0x").join("");for(let r=0;r<i.length;r++)if(i[r]!=="0")return`0x${i.substring(r)}`;return"0x0"}function U(s){let{typeName:i,typeArgs:r}=Se(s);switch(i){case"bool":case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"address":case"signer":return i;case"vector":return`vector<${U(r[0])}>`;default:{let a=i.split("::");a[0]=no(a[0]);let o=a.join("::");return r.length>0?`${o}<${r.map(u=>U(u)).join(",")}>`:o}}}function z(s,...i){return i.length>0?`${s}<${i.join(", ")}>`:s}var ye=Bt(()=>{"use strict";g();y();f()});var Tt=Gr((Yd,wa)=>{"use strict";g();y();f();ye();var ti=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return U(s.$PACKAGE_ID)}get PUBLISHED_AT(){return U(s.$PUBLISHED_AT)}get PKG_V1(){return U(s.$PKG_V[1])}setPackageId(i){s.$PACKAGE_ID=i}setPublishedAt(i){s.$PUBLISHED_AT=i}setPkgV(i,r){s.$PKG_V[i]=r}setAddress(i,r){s.$PACKAGE_ID=i,s.$PUBLISHED_AT=i,s.$PKG_V[1]=r||i}},ro=new ti;wa.exports=ro});var ai=Gr((ip,xa)=>{"use strict";g();y();f();ye();var ii=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return U(s.$PACKAGE_ID)}get PUBLISHED_AT(){return U(s.$PUBLISHED_AT)}get PKG_V1(){return U(s.$PKG_V[1])}setPackageId(i){s.$PACKAGE_ID=i}setPublishedAt(i){s.$PUBLISHED_AT=i}setPkgV(i,r){s.$PKG_V[i]=r}setAddress(i,r){s.$PACKAGE_ID=i,s.$PUBLISHED_AT=i,s.$PKG_V[1]=r||i}},io=new ii;xa.exports=io});var ci=Gr((pp,Ma)=>{"use strict";g();y();f();ye();var oi=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return U(s.$PACKAGE_ID)}get PUBLISHED_AT(){return U(s.$PUBLISHED_AT)}get PKG_V1(){return U(s.$PKG_V[1])}setPackageId(i){s.$PACKAGE_ID=i}setPublishedAt(i){s.$PUBLISHED_AT=i}setPkgV(i,r){s.$PKG_V[i]=r}setAddress(i,r){s.$PACKAGE_ID=i,s.$PUBLISHED_AT=i,s.$PKG_V[1]=r||i}},ao=new oi;Ma.exports=ao});g();y();f();g();y();f();g();y();f();var On={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"https://lite-api.jup.ag/swap/v1",wormholeMessengerProgramId:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",solanaLookUpTable:"2JcBAEVnAwVo4u8d61iqgHPrzZuugur7cVTjWubsVLHj",sorobanNetworkPassphrase:"Public Global Stellar Network ; September 2015",tronJsonRpc:"https://api.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{ETH:0,AVA:1,OPT:2,ARB:3,SOL:5,BAS:6,POL:7,SUI:8}},cachePoolInfoChainSec:20},Hc={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},Qc={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org",SUI:"https://fullnode.mainnet.sui.io"};g();y();f();g();y();f();g();y();f();import{TronWeb as ho}from"tronweb";import{Web3 as To}from"web3";g();y();f();g();y();f();g();y();f();var ue=class extends Error{errorCode;constructor(i,r){super(r),this.errorCode=i}},M=class extends ue{constructor(i){super("SdkError",i)}},ut=class extends ue{constructor(i){super("InvalidAmountError",i)}},Ut=class extends ue{constructor(i){super("AmountNotEnoughError",i)}},mt=class extends ue{constructor(i){super("InsufficientPoolLiquidityError",i)}},he=class extends ue{constructor(i){super("JupiterError",i)}},cn=class extends ue{constructor(i){super("InvalidGasFeePaymentOptionError",i)}},Dn=class extends ue{constructor(i){super("InvalidMessengerOptionError",i)}},de=class extends ue{constructor(i){super("MethodNotSupportedError",i)}},An=class extends ue{constructor(i){super("VerifyTxError",i)}},Vt=class extends ue{constructor(i){super("InvalidTxError",i)}},Nn=class extends ue{constructor(i){super("ExtraGasMaxLimitExceededError",i)}},Wn=class extends ue{constructor(i,r,a){super("ArgumentInvalidDecimalsError",`Argument '${i}' decimals '${r}' cannot be greater than '${a}'`)}},un=class extends ue{constructor(i){super("TimeoutError",i)}},En=class extends ue{constructor(i){super("NodeRpcUrlNotInitializedError",`For chain '${i}' Node RPC URL not initialized`)}},Ie=class extends ue{constructor(i){super("CCTPDoesNotSupportedError",i)}},Re=class extends ue{constructor(i){super("OFTDoesNotSupportedError",i)}},Gn=class extends ue{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},Bs=(O=>(O.SDK_ERROR="SdkError",O.INVALID_AMOUNT_ERROR="InvalidAmountError",O.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",O.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",O.JUPITER_ERROR="JupiterError",O.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",O.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",O.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",O.VERIFY_TX_ERROR="VerifyTxError",O.INVALID_TX_ERROR="InvalidTxError",O.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",O.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",O.TIMEOUT_ERROR="TimeoutError",O.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",O.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",O.OFT_DOES_NOT_SUPPORTED_ERROR="OFTDoesNotSupportedError",O.TX_TOO_LARGE="TxTooLargeError",O))(Bs||{});g();y();f();var $e=(I=>(I.BSC="BSC",I.ETH="ETH",I.BAS="BAS",I.SOL="SOL",I.TRX="TRX",I.POL="POL",I.ARB="ARB",I.CEL="CEL",I.AVA="AVA",I.SRB="SRB",I.STLR="STLR",I.OPT="OPT",I.SUI="SUI",I.SNC="SNC",I))($e||{}),ie=(u=>(u.EVM="EVM",u.SOLANA="SOLANA",u.TRX="TRX",u.SRB="SRB",u.SUI="SUI",u))(ie||{});var Is={EVM:18,SOLANA:9,TRX:6,SRB:7,SUI:9},Rs={BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SNC:{chainSymbol:"SNC",chainId:"0x92",name:"Sonic",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"},SUI:{chainSymbol:"SUI",name:"Sui",chainType:"SUI"}},H=(()=>{let s={...Rs};return{addChainsProperties(i){s={...s,...i}},getChainProperty(i){let r=s[i];if(!r)throw new M(`Cannot find chain properties for ${i}`);return r},getChainsProperties(){return s},getChainDecimalsByType(i){return Is[i]}}})();g();y();f();var jr=(m=>(m.OK="OK",m.INVALID="INVALID",m.FORBIDDEN="FORBIDDEN",m.UNINITIALIZED="UNINITIALIZED",m.CONTRACT_ADDRESS="CONTRACT_ADDRESS",m.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",m))(jr||{});var Je=(u=>(u[u.ALLBRIDGE=1]="ALLBRIDGE",u[u.WORMHOLE=2]="WORMHOLE",u[u.CCTP=3]="CCTP",u[u.CCTP_V2=4]="CCTP_V2",u[u.OFT=5]="OFT",u))(Je||{});g();y();f();import{Big as Gi}from"big.js";async function pe(s,i){return await s.getPoolInfoByKey({chainSymbol:i.chainSymbol,poolAddress:i.poolAddress})}function q(s){if(Gi(s).lte(0))throw new ut("Amount must be greater than zero")}function ee(s,i,r){let a=Gi(i).toFixed(),[o,u]=a.split(".");if(u&&u.length>r)throw new Wn(s,u.length,r)}async function Un(s,i,r){return await Promise.race([s,new Promise((a,o)=>{setTimeout(()=>o(new un(i)),r)})])}async function Zr(s,i,r,a){if(r<1)throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${r} was received.`);let o=0;for(;;)try{return await Un(s(),i,a)}catch{if(++o>=r)throw new un(i)}}async function Ui(s,i,r,a=1.5,o=!1){let u=[],m=0,p=await s();if(u.push(p),!i(p))return u;let h=new Date(Date.now()+r*1e3).valueOf(),T=1e3,S=T;for(;Date.now()<h;){let P=u[u.length-1];if(P===void 0||!i(P))break;m++,o&&console.info(`Waiting ${T}ms before trying again (bringing the total wait time to ${S}ms so far, of total ${r*1e3}ms)`),await new Promise(B=>setTimeout(B,T)),T=T*a,new Date(Date.now()+T).valueOf()>h&&(T=h-Date.now(),o&&console.info(`was gonna wait too long; new waitTime: ${T}ms`)),S=T+S;let x=await s(P);u.push(x),o&&i(x)&&console.info(`${m}. Called ${s.name}; ${u.length} prev attempts. Most recent: ${JSON.stringify(u[u.length-1],null,2)}`)}return u}g();y();f();import{Big as Vs}from"big.js";g();y();f();var vs={abi:[{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"uint256",name:"_chainPrecision",type:"uint256"},{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"},{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"},{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"gas",type:"uint256"}],name:"BridgingFeeFromTokens",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"bridgeTransactionCost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"messageTransactionCost",type:"uint256"}],name:"ReceiveFee",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Received",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes32",name:"sendToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"sendAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receiveAmount",type:"uint256"}],name:"Swapped",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{indexed:!1,internalType:"bytes32",name:"message",type:"bytes32"}],name:"TokensReceived",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"addBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract Pool",name:"pool",type:"address"},{internalType:"bytes32",name:"token",type:"bytes32"}],name:"addPool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"canSwap",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"address",name:"tokenAddress",type:"address"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageGasUsage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"hasReceivedMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"}],name:"hasSentMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"hashMessage",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"otherBridgeTokens",outputs:[{internalType:"bool",name:"isSupported",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"otherBridges",outputs:[{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"tokenId",type:"bytes32"}],name:"pools",outputs:[{internalType:"contract Pool",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"processedMessages",outputs:[{internalType:"uint256",name:"isProcessed",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],name:"registerBridge",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"removeBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"sentMessages",outputs:[{internalType:"uint256",name:"isSent",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"}],name:"setAllbridgeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_rebalancer",type:"address"}],name:"setRebalancer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"}],name:"setWormholeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"feeTokenAmount",type:"uint256"}],name:"swapAndBridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"withdrawBridgingFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGasTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Vi=vs;g();y();f();var ks={abi:[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"address",name:"cctpMessenger_",type:"address"},{internalType:"address",name:"cctpTransmitter_",type:"address"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedExtraGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"RecipientReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"}],name:"TokensSentExtras",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridgeWithWalletAddress",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"changeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getDomainByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint64",name:"nonce",type:"uint64"}],name:"isMessageProcessed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bytes",name:"message",type:"bytes"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"domain",type:"uint32"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},ji=ks;g();y();f();var xs={abi:[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[{internalType:"uint16",name:"optionType",type:"uint16"}],name:"InvalidOptionType",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"address",name:"tokenAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFeeWithExtraGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"extraGasDestinationToken",type:"uint256"}],name:"OftTokensSent",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{internalType:"address",name:"oft_",type:"address"}],name:"addToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress",type:"address"}],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"feeShare",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"},{internalType:"uint256",name:"extraGasInDestinationToken",type:"uint256"},{internalType:"uint256",name:"slippageBP",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress_",type:"address"},{internalType:"uint256",name:"destinationChainId_",type:"uint256"},{internalType:"uint128",name:"extraGasAmount_",type:"uint128"}],name:"extraGasPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getEidByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress",type:"address"}],name:"oftAddress",outputs:[{internalType:"address",name:"oftAddress",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"eid_",type:"uint32"},{internalType:"uint128",name:"lzGasLimit_",type:"uint128"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress_",type:"address"},{internalType:"uint256",name:"destinationChainId_",type:"uint256"}],name:"relayerFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"oft_",type:"address"}],name:"removeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress_",type:"address"},{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint128",name:"lzGasLimit_",type:"uint128"}],name:"setLzGasLimit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"maxExtraGas_",type:"uint256"}],name:"setMaxExtraGas",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token_",type:"address"}],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount_",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Zi=xs;g();y();f();import*as Zn from"@project-serum/anchor";import{PublicKey as ca}from"@solana/web3.js";g();y();f();import*as Te from"@project-serum/anchor";import{PublicKey as ve}from"@solana/web3.js";async function Qe(s,i){return Te.utils.token.associatedAddress({mint:i,owner:s})}async function ft(s){let[i]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("config")],s);return i}async function _i(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("lock"),Uint8Array.from(s)],i);return r}async function mn(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([s])],i);return r}async function jt(s){let i=await ft(s),[r]=await ve.findProgramAddress([i.toBuffer()],s);return r}async function $i(s,i){let[r]=await ve.findProgramAddress([s.toBuffer()],i);return r}async function Zt(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("token"),s.toBytes()],i);return r}async function Ji(s,i,r){let[a]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("other_bridge_token"),C.from([s]),i],r);return a}async function _r(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([s])],i);return r}async function $r(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([s])],i);return r}async function Li(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("sent_message"),s],i);return r}async function Jr(s,i,r){let[a]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("user_deposit"),i.toBytes(),s.toBytes()],r);return a}async function Xi(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("cctp_bridge"),s.toBytes()],i);return r}async function Yi(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("token"),s.toBytes()],i);return r}function Ki(s,i){let[r]=ve.findProgramAddressSync([Te.utils.bytes.utf8.encode("lock"),i.toBuffer()],s);return r}function Hi(s,i,r,a){let o=kt("message_transmitter",r),u=kt("token_messenger",a),m=kt("__event_authority",a),p=kt("token_minter",a),h=kt("local_token",a,[i]),T=kt("remote_token_messenger",a,[s.toString()]),S=kt("sender_authority",a);return{messageTransmitterAccount:o,tokenMessenger:u,tokenMessengerEventAuthority:m,tokenMinter:p,localToken:h,remoteTokenMessengerKey:T,authorityPda:S}}function kt(s,i,r=[]){let a=[C.from(Te.utils.bytes.utf8.encode(s))];for(let u of r)typeof u=="string"?a.push(C.from(Te.utils.bytes.utf8.encode(u))):Array.isArray(u)?a.push(C.from(Uint8Array.from(u))):C.isBuffer(u)?a.push(C.from(Uint8Array.from(u))):a.push(C.from(Uint8Array.from(u.toBuffer())));return ve.findProgramAddressSync(a,i)[0]}g();y();f();import{AnchorProvider as Fs}from"@project-serum/anchor";import{Connection as Ms,PublicKey as Os}from"@solana/web3.js";function yt(s,i){let r=new Ms(s,"confirmed"),a=new Os(i);return new Fs(r,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}g();y();f();import{PublicKey as Ds}from"@solana/web3.js";import{Address as Ns}from"@stellar/stellar-sdk";import{Big as We}from"big.js";import aa from"randombytes";import{utils as ra}from"tronweb";g();y();f();import{Big as N}from"big.js";import Lr from"bn.js";g();y();f();function Xr(s,i){return N(100).minus(N(100).times(i).div(s)).toNumber()}function xt(s,i){return Le(s,i,3).round(0,N.roundDown)}function Ne(s,i){return Le(s,3,i)}function Le(s,i,r){let a=N(r).minus(i).toNumber();return N(s).times(ln(a))}function ln(s){return N(10).pow(s)}function Q(s,i){return N(s).times(ln(i))}function J(s,i){let r=N(s);return r.eq(0)?N(0):N(r).div(ln(i))}function ke(s){return J(N(s.tokenBalance).minus(s.vUsdBalance).toFixed(),3).div(2).toFixed()}function it(s,{feeShare:i,decimals:r},a){let o=N(s);if(o.lte(0))return"0";let u=o.times(i),m=o.minus(u),p=xt(m,r),h=N(a.tokenBalance).plus(p),T=at(h,a.aValue,a.dValue);return N(a.vUsdBalance).minus(T).round(0,N.roundDown).toFixed()}function dn(s,{feeShare:i,decimals:r},a){let o=N(s);if(o.lte(0))return N(0).toFixed();let u=o.plus(a.vUsdBalance),m=at(u,a.aValue,a.dValue),p=Ne(N(a.tokenBalance).minus(m),r),h=N(p).times(i);return N(p).minus(h).round(0,N.roundDown).toFixed()}function Qi(s,i){let r=N(s);if(r.lte(0))return i;let a=r.plus(i.vUsdBalance),o=at(a,i.aValue,i.dValue);return{aValue:i.aValue,dValue:i.dValue,tokenBalance:o.toFixed(0),vUsdBalance:a.toFixed(0)}}function zi(s,{feeShare:i,decimals:r},a){if(N(s).lte(0))return N(0);let o=N(a.vUsdBalance).minus(s);if(o.lte(0))throw new mt;let u=at(o,a.aValue,a.dValue),m=N(u).minus(a.tokenBalance),p=Ne(m,r),h=N(i).div(N(1).minus(i)),T=N(p).times(h).round(0,N.roundUp);return N(p).plus(T).round(0,N.roundDown)}function qi(s,{feeShare:i,decimals:r},a){if(N(s).lte(0))return N(0);let o=N(i).div(N(1).minus(i)),u=N(s).times(o).round(0,N.roundUp),m=N(s).plus(u),p=xt(m,r),h=N(a.tokenBalance).minus(p);if(h.lte(0))throw new mt;let T=at(h,a.aValue,a.dValue);return N(T).minus(a.vUsdBalance).round(0,N.roundDown)}function at(s,i,r){let a=N(4).times(i).times(N(r).minus(s)).minus(r),o=N(r).pow(3),u=a.pow(2),m=N(s).times(N(s).times(u).plus(N(4).times(i).times(o))).sqrt().round(0,N.roundDown),p=N(8).times(i).times(s),h=a.times(s).plus(m).div(p).round(0,N.roundDown);return h.eq(0)?N(0):h.plus(1)}function ea(s,i,r,a){let o=new Lr(s),u=new Lr(r),m=new Lr(i);return o.mul(u).shrn(a).sub(m).toString()}function ta(s){return N(s).gt(0)?`${Number(N(s).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function na(s,i,r){let a=N(i).times(r),o=N(i).plus(r),u=N(8).times(s).times(a).times(o),m=a.times(N(16).times(s).minus(4)).div(3),p=u.times(u),h=m.times(m).times(m),T=p.plus(h),S=N(T).sqrt(),P=N(Math.cbrt(+u.plus(S).toFixed())),x=N(Math.cbrt(+u.minus(S).toFixed()));return P.plus(x).toFixed()}function lt(s,i,r){let a;switch(i){case"EVM":{a=ia(s);break}case"SOLANA":{a=new Ds(s).toBuffer();break}case"TRX":{a=Ws(s);break}case"SRB":{a=new Ns(s).toBuffer();break}case"SUI":{a=ia(s);break}}switch(r){case"EVM":return"0x"+a.toString("hex");case"SOLANA":return Array.from(a);case"TRX":return a;case"SRB":return a.toJSON().data;case"SUI":return"0x"+a.toString("hex")}}function ze(s){return s.replace(/^0x/i,"")}function sa(s){return C.from(s.replace(/^0x/i,""),"hex")}function ia(s){let r=sa(s);return C.concat([C.alloc(32-r.length,0),r],32)}function Ws(s){let i=pn(s),r=sa(i);return Es(r,32)}function pn(s){let i=ra.crypto.decodeBase58Address(s);return i?ra.bytes.byteArray2hexStr(i).replace(/^41/,"0x"):""}function Es(s,i){if(s.length>=i)return s;let r=C.alloc(i,0);return s.copy(r,i-s.length),r}function Vn(){return aa(32)}function st(){let s=aa(32).readBigInt64BE();return s<0?s*-1n:s}function ot(s,i){let r={},a=i.sourceToken;if(r.amount=Q(i.amount,a.decimals).toFixed(),r.contractAddress=a.bridgeAddress,r.fromAccountAddress=i.fromAccountAddress,s==="SUI"){if(!a.originTokenAddress)throw new M("SUI sourceToken must contain 'originTokenAddress'");r.fromTokenAddress=a.originTokenAddress}else r.fromTokenAddress=lt(a.tokenAddress,s,s);if(r.toAccountAddress=i.toAccountAddress,s==="SUI"){if(!i.destinationToken.originTokenAddress)throw new M("SUI destinationToken must contain 'originTokenAddress'");r.toTokenAddress=i.destinationToken.originTokenAddress}else r.toTokenAddress=lt(i.destinationToken.tokenAddress,s,s);return r.minimumReceiveAmount=i.minimumReceiveAmount?Q(i.minimumReceiveAmount,i.destinationToken.decimals).toFixed():"0",r}async function qe(s,i,r){let a={};a.fromChainId=i.sourceToken.allbridgeChainId,a.fromChainSymbol=i.sourceToken.chainSymbol;let o=H.getChainProperty(i.destinationToken.chainSymbol).chainType;if(s==="SUI"){if(!i.sourceToken.originTokenAddress)throw new M("SUI token must contain 'originTokenAddress'");a.fromTokenAddress=i.sourceToken.originTokenAddress}else a.fromTokenAddress=i.sourceToken.tokenAddress;a.toChainId=i.destinationToken.allbridgeChainId,a.toTokenAddress=i.destinationToken.tokenAddress,i.gasFeePaymentMethod==="stablecoin"?a.gasFeePaymentMethod="stablecoin":a.gasFeePaymentMethod="native";let u=i.sourceToken;switch(i.messenger){case 3:if(!u.cctpAddress||!i.destinationToken.cctpAddress)throw new Ie("Such route does not support CCTP protocol");a.contractAddress=u.cctpAddress;break;case 4:if(!u.cctpV2Address||!i.destinationToken.cctpV2Address)throw new Ie("Such route does not support CCTP V2 protocol");a.contractAddress=u.cctpV2Address;break;case 5:if(!u.oftBridgeAddress||!i.destinationToken.oftBridgeAddress||u.oftId!==i.destinationToken.oftId)throw new Re("Such route does not support OFT protocol");a.contractAddress=u.oftBridgeAddress;break;case 1:case 2:a.contractAddress=u.bridgeAddress;break}a.messenger=i.messenger,a.fromAccountAddress=i.fromAccountAddress,a.amount=Q(i.amount,u.decimals).toFixed();let{fee:m,feeFormat:p}=i;if(!m){let P=(await Yr(i.sourceToken,a.toChainId,a.messenger,r))[a.gasFeePaymentMethod];if(!P)throw new cn;m=P.int,p="int"}if(p=="float")switch(a.gasFeePaymentMethod){case"native":a.fee=Q(m,H.getChainDecimalsByType(u.chainType)).toFixed(0);break;case"stablecoin":a.fee=Q(m,u.decimals).toFixed(0);break}else a.fee=m;let{extraGas:h,extraGasFormat:T}=i;if(h&&+h>0){let S=await Kr(u,i.destinationToken,a.messenger,r),P,x;switch(a.gasFeePaymentMethod){case"native":P=H.getChainDecimalsByType(u.chainType),x=We(S.exchangeRate);break;case"stablecoin":P=u.decimals,x=We(S.exchangeRate).div(S.sourceNativeTokenPrice);break}switch(T??"int"){case"float":{a.extraGas=Q(h,P).toFixed(0);let B=x.mul(h);a.extraGasDest=Q(B,H.getChainDecimalsByType(i.destinationToken.chainType)).toFixed(0,We.roundDown);break}case"int":{a.extraGas=h;let B=J(a.extraGas,H.getChainDecimalsByType(u.chainType)),I=x.mul(B);a.extraGasDest=Q(I,H.getChainDecimalsByType(i.destinationToken.chainType)).toFixed(0,We.roundDown);break}}Us(a.extraGas,a.gasFeePaymentMethod,S)}return s!=="SUI"&&(a.fromTokenAddress=lt(a.fromTokenAddress,s,s)),a.toAccountAddress=lt(i.toAccountAddress,o,s),a.toTokenAddress=lt(a.toTokenAddress,o,s),a.gasFeePaymentMethod=="stablecoin"&&Gs(a.amount,u.decimals,a.fee,a.extraGas),a}function Gs(s,i,r,a){let o=We(s).minus(r).minus(a??0);if(o.lte(0))throw new Ut(`Amount not enough to pay fee, ${J(We(o).minus(1).neg(),i).toFixed()} stables is missing`)}async function Yr(s,i,r,a){let o=await a.getReceiveTransactionCost({sourceChainId:s.allbridgeChainId,destinationChainId:i,messenger:r,sourceToken:s.tokenAddress}),u={native:{int:o.fee,float:J(o.fee,H.getChainDecimalsByType(s.chainType)).toFixed()},adminFeeShareWithExtras:o.adminFeeShareWithExtras};if(o.sourceNativeTokenPrice){let m=Le(new We(o.fee).mul(o.sourceNativeTokenPrice),H.getChainDecimalsByType(s.chainType),s.decimals).toFixed(0,We.roundUp);u.stablecoin={int:m,float:J(m,s.decimals).toFixed()}}return u}function Us(s,i,r){let a=r.extraGasMax[i];if(!a)throw new cn(`Impossible to pay extra gas by '${i}' payment method`);let o=a.int;if(We(s).gt(o))throw new Nn(`Extra gas ${s} in int format, exceeded limit ${o} for '${i}' payment method`)}async function Kr(s,i,r,a){let o={},u=await a.getReceiveTransactionCost({sourceChainId:s.allbridgeChainId,destinationChainId:i.allbridgeChainId,messenger:r,sourceToken:s.tokenAddress}),m=i.txCostAmount.maxAmount,p=J(m,H.getChainDecimalsByType(i.chainType)).toFixed(),h=We(p).div(u.exchangeRate).toFixed(H.getChainDecimalsByType(s.chainType),We.roundDown),T=Q(h,H.getChainDecimalsByType(s.chainType)).toFixed(0);if(o.native={int:T,float:h},u.sourceNativeTokenPrice){let S=We(h).mul(u.sourceNativeTokenPrice).toFixed(s.decimals,We.roundDown);o.stablecoin={int:Q(S,s.decimals).toFixed(0),float:S}}return{extraGasMax:o,destinationChain:{gasAmountMax:{int:m,float:p},swap:{int:i.txCostAmount.swap,float:J(i.txCostAmount.swap,H.getChainDecimalsByType(i.chainType)).toFixed()},transfer:{int:i.txCostAmount.transfer,float:J(i.txCostAmount.transfer,H.getChainDecimalsByType(i.chainType)).toFixed()}},exchangeRate:u.exchangeRate,sourceNativeTokenPrice:u.sourceNativeTokenPrice}}function oa(s){return s.sourceToken.chainSymbol!==s.destinationToken.chainSymbol}async function _n(s,i,r,a){let o,u=new ca(i),m=new ca(r),p=await Qe(u,m),h=yt(a,i);Zn.setProvider(h);let T=await Zn.Spl.token(h).account.token.fetchNullable(p);if(T?.authority.equals(u))o=lt(p.toBase58(),"SOLANA",s);else{let S=await h.connection.getTokenAccountsByOwner(u,{mint:m});if(S.value.length===0&&!T)o=lt(p.toBase58(),"SOLANA",s);else if(S.value.length>0){let P=S.value[0];if(!P?.pubkey)throw new M("First token account or its public key is undefined");o=lt(P.pubkey.toBase58(),"SOLANA",s)}else throw new M("Associated account has wrong owner")}return o}g();y();f();g();y();f();var Ee=class{};var gn=class extends Ee{constructor(r,a,o){super();this.web3=r;this.api=a;this.nodeRpcUrlsConfig=o}chainType="EVM";async send(r){let a=await this.buildRawTransactionSend(r);return this.sendRawTransaction(a)}async buildRawTransactionSwap(r){let a=ot(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:o,fromAccountAddress:u,fromTokenAddress:m,toAccountAddress:p,toTokenAddress:h,minimumReceiveAmount:T}=r,P=this.getBridgeContract(o).methods.swap(a,m,h,p,T);return Promise.resolve({from:u,to:o,data:P.encodeABI()})}async buildRawTransactionSend(r){let a=await qe(this.chainType,r,this.api),{amount:o,contractAddress:u,fromAccountAddress:m,fromTokenAddress:p,toChainId:h,toAccountAddress:T,toTokenAddress:S,messenger:P,fee:x,gasFeePaymentMethod:B,extraGas:I,extraGasDest:F}=a,D="0x"+Vn().toString("hex"),O,W,E=x;switch(I&&(E=Vs(E).plus(I).toFixed()),P){case 3:case 4:{let V=await this.buildRawTransactionCctpSend(r,a,E);O=V.sendMethod,W=V.value;break}case 5:{let V=this.buildRawTransactionOftSend(r,a,E,F);O=V.sendMethod,W=V.value;break}case 1:case 2:{let V=this.getBridgeContract(u);B==="stablecoin"?(O=V.methods.swapAndBridge(p,o,T,h,S,D,P,E),W="0"):(O=V.methods.swapAndBridge(p,o,T,h,S,D,P,0),W=E)}break}return Promise.resolve({from:m,to:u,value:W,data:O.encodeABI()})}async buildRawTransactionCctpSend(r,a,o){let{amount:u,contractAddress:m,toChainId:p,toAccountAddress:h,gasFeePaymentMethod:T}=a,S=this.getCctpBridgeContract(m),P,x;if(r.destinationToken.chainType==="SOLANA"){let B=await _n(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));T==="stablecoin"?(P=S.methods.bridgeWithWalletAddress(u,B,h,p,o),x="0"):(P=S.methods.bridgeWithWalletAddress(u,B,h,p,0),x=o)}else T==="stablecoin"?(P=S.methods.bridge(u,h,p,o),x="0"):(P=S.methods.bridge(u,h,p,0),x=o);return{sendMethod:P,value:x}}buildRawTransactionOftSend(r,a,o,u){let{amount:m,contractAddress:p,toChainId:h,toAccountAddress:T,gasFeePaymentMethod:S}=a,P=this.getOftBridgeContract(p),x,B;return S==="stablecoin"?(x=P.methods.bridge(r.sourceToken.tokenAddress,m,T,h,o,u??"0","10"),B="0"):(x=P.methods.bridge(r.sourceToken.tokenAddress,m,T,h,0,u??"0","10"),B=o),{sendMethod:x,value:B}}async sendRawTransaction(r){let a=await this.web3.eth.estimateGas(r),o={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:u}=await this.web3.eth.sendTransaction({...r,gas:a,...o});return{txId:u.toString()}}getBridgeContract(r){return new this.web3.eth.Contract(Vi.abi,r)}getCctpBridgeContract(r){return new this.web3.eth.Contract(ji.abi,r)}getOftBridgeContract(r){return new this.web3.eth.Contract(Zi.abi,r)}};g();y();f();var $n=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o}async approve(i,r){let a,o;r?(a=i,o=r):o=i;let u=fn(o.token,o.messenger);return this.tokenService.buildRawTransactionApprove({...o,spender:u},a)}async send(i,r){return q(i.amount),ee("amount",i.amount,i.sourceToken.decimals),oa(i)?Jn(i.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSend(i):Jn(i.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSwap(i)}};g();y();f();import{BN as Jt,Program as zr,Spl as Hs,web3 as ht}from"@project-serum/anchor";import{Keypair as ba,PublicKey as re,SystemProgram as Qs}from"@solana/web3.js";import{Big as et}from"big.js";g();y();f();var yn={version:"0.1.0",name:"bridge",instructions:[{name:"initialize",accounts:[{name:"admin",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializePool",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"token",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializePoolArgs"}}]},{name:"initDepositAccount",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"deposit",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdraw",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amountLp",type:"u64"}]},{name:"swapAndBridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"messenger",isMut:!1,isSigner:!1},{name:"messengerConfig",isMut:!0,isSigner:!1},{name:"sentMessageAccount",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swapAndBridgeWormhole",accounts:[{name:"user",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"wormholeMessenger",isMut:!1,isSigner:!1},{name:"wormholeMessengerConfig",isMut:!0,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"bridge",isMut:!0,isSigner:!1},{name:"message",isMut:!0,isSigner:!0},{name:"sequence",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swap",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"sendMint",isMut:!1,isSigner:!1},{name:"receiveMint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"sendPool",isMut:!0,isSigner:!1},{name:"receivePool",isMut:!0,isSigner:!1},{name:"sendBridgeToken",isMut:!0,isSigner:!1},{name:"receiveBridgeToken",isMut:!0,isSigner:!1},{name:"sendUserToken",isMut:!0,isSigner:!1},{name:"receiveUserToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"},{name:"receiveAmountMin",type:"u64"}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"receiveAndSwap",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"receiveAndSwapWormhole",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"claimRewards",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAdmin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAdmin",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"startBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"stopBridge",accounts:[{name:"stopAuthority",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"setRebalancer",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"rebalancer",isMut:!1,isSigner:!1}],args:[]},{name:"setStopAuthority",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAuthority",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"setAllbridgeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setWormholeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setPoolFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setBalanceRatioMin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"balanceRatioMinBp",type:"u16"}]},{name:"setPoolAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"addOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"removeOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"adjustTotalLpAmount",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"chainBridge",type:{kind:"struct",fields:[{name:"address",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"config",type:{kind:"struct",fields:[{name:"admin",type:"publicKey"},{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"rebalancer",type:"publicKey"},{name:"stopAuthority",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"canSwap",type:"bool"},{name:"canDeposit",type:"bool"},{name:"canWithdraw",type:"bool"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"sentTokenAddress",type:"publicKey"},{name:"amount",type:"u64"},{name:"vusdAmount",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"nonce",type:{array:["u8",32]}},{name:"messenger",type:{defined:"Messenger"}},{name:"slot",type:"u64"},{name:"fee",type:"u64"}]}},{name:"otherBridgeToken",type:{kind:"struct",fields:[]}},{name:"pool",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"a",type:"u64"},{name:"d",type:"u64"},{name:"tokenBalance",type:"u64"},{name:"vUsdBalance",type:"u64"},{name:"reserves",type:"u64"},{name:"decimals",type:"u8"},{name:"totalLpAmount",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"accRewardPerShareP",type:"u128"},{name:"adminFeeAmount",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"unlock",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"fee",type:"u64"},{name:"vUsdAmount",type:"u64"},{name:"slot",type:"u64"}]}},{name:"userDeposit",type:{kind:"struct",fields:[{name:"userAddress",type:"publicKey"},{name:"mint",type:"publicKey"},{name:"lpAmount",type:"u64"},{name:"rewardDebt",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"}]}},{name:"InitializePoolArgs",type:{kind:"struct",fields:[{name:"a",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"vusdAmount",type:"u64"}]}},{name:"UnlockArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"recipient",type:"publicKey"},{name:"sourceChainId",type:"u8"},{name:"receiveToken",type:"publicKey"},{name:"messenger",type:{defined:"Messenger"}},{name:"hash",type:{array:["u8",32]}},{name:"receiveAmountMin",type:"u64"}]}},{name:"RewardError",type:{kind:"enum",variants:[{name:"FeeTooHigh"}]}},{name:"Messenger",type:{kind:"enum",variants:[{name:"None"},{name:"Allbridge"},{name:"Wormhole"}]}},{name:"ActionType",type:{kind:"enum",variants:[{name:"Deposit"},{name:"Withdraw"},{name:"Swap"}]}}],errors:[{code:6e3,name:"AccountAlreadyInitialized",msg:"This account has already been initialized"},{code:6001,name:"AdminAuthorityInvalid",msg:"This instruction requires admin authority"},{code:6002,name:"InvalidSignature",msg:"Provided signature has wrong signer or message"},{code:6003,name:"InvalidHash",msg:"Wrong unlock message hash"},{code:6004,name:"PoolOverflow",msg:"PoolInfo overflow"},{code:6005,name:"ReservesExhausted",msg:"Reserves exhausted"},{code:6006,name:"ZeroAmount",msg:"Zero amount"},{code:6007,name:"ZeroChanges",msg:"Zero changes"},{code:6008,name:"HighVusdAmount",msg:"vUSD amount is too high"},{code:6009,name:"BalanceRatioExceeded",msg:"Balance ratio exceeded"},{code:6010,name:"InsufficientReceivedAmount",msg:"Received insufficient amount"},{code:6011,name:"ForbiddenAction",msg:"ForbiddenAction"},{code:6012,name:"ValueTooHigh",msg:"Value is too high"}]};g();y();f();var Aa={version:"0.1.0",name:"cctp_bridge",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"bridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"cctpMessenger",isMut:!1,isSigner:!1},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"messageTransmitterAccount",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"remoteTokenMessengerKey",isMut:!1,isSigner:!1},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"setAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setCctpTokenMessengerMinter",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]}],accounts:[{name:"cctpBridge",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"admin",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"adminFeeShareBp",type:"u64"},{name:"adminFeeAmount",type:"u64"}]}},{name:"chainBridge",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"amount",type:"u64"},{name:"adminFee",type:"u64"},{name:"relayerFee",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"slot",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"amount",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"gasOracleProgramId",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"}]}}],errors:[{code:6e3,name:"ValueTooHigh",msg:"Value is too high"}]};g();y();f();import{Spl as js}from"@project-serum/anchor";import Zs from"big.js";import{Web3 as Ln}from"web3";async function _t(s,i){return await js.token(i).account.token.fetch(s)}async function ua(s,i,r){let a=await i.account.pool.fetch(r),o=a.decimals,u=Zs(a.feeShareBp.toString()).div(1e4).toFixed(),m={aValue:a.a.toString(),dValue:a.d.toString(),totalLpAmount:a.totalLpAmount.toString(),tokenBalance:a.tokenBalance.toString(),vUsdBalance:a.vUsdBalance.toString(),accRewardPerShareP:a.accRewardPerShareP.toString()};return it(s,{decimals:o,feeShare:u},m)}function ma(s){let i=s.amount,r="0x"+s.recipient.toString("hex"),a=s.sourceChainId,o=s.destinationChainId,u="0x"+s.receiveToken.toString("hex"),m="0x"+s.nonce.toString("hex"),p=1,h="0x"+s.chainBridge.toString("hex"),T=Ln.utils.encodePacked({t:"uint256",v:i},{t:"bytes32",v:r},{t:"uint256",v:a},{t:"bytes32",v:u},{t:"uint256",v:m},{t:"uint8",v:p});if(!T)throw new M("message cannot be undefined");let S=Ln.utils.keccak256(C.from(T.replace("0x",""),"hex")),P=C.from(S.replace("0x",""),"hex");P[0]=a,P[1]=o;let x=Ln.utils.encodePacked({t:"bytes32",v:"0x"+P.toString("hex")},{t:"bytes32",v:h});if(!x)throw new Vt("messageWithSigner cannot be undefined");let B=Ln.utils.keccak256(C.from(x.replace("0x",""),"hex")),I=C.from(B.replace("0x",""),"hex");return I[0]=P[0],I[1]=P[1],I}g();y();f();import{ComputeBudgetInstruction as da,ComputeBudgetProgram as Xn,Connection as pa,TransactionMessage as _s}from"@solana/web3.js";import{Big as $s}from"big.js";g();y();f();import{AddressLookupTableAccount as la}from"@solana/web3.js";async function Mt(s,i){return await Promise.all(s.message.addressTableLookups.map(async r=>new la({key:r.accountKey,state:la.deserialize(await i.getAccountInfo(r.accountKey).then(a=>{if(!a)throw new M("Cannot get AccountInfo");return a.data}))})))}g();y();f();g();y();f();var Hr="AUTO";async function $t(s,i,r){let a=new pa(r,"confirmed"),o=(await a.simulateTransaction(s)).value.unitsConsumed;await fa(s.instructions,o,i,a)}async function ga(s,i,r){let a=new pa(r,"confirmed"),o=await Mt(s,a),u=_s.decompile(s.message,{addressLookupTableAccounts:o});if(s.serialize().length>1232)throw new Gn;await fa(u.instructions,769230,i,a),s.message=u.compileToV0Message(o)}async function fa(s,i,r,a){if(i>0){let o=Js(i,s);if(r?.solana){let u=r.solana;if(u===Hr)await Qr(s,a);else if("pricePerUnitInMicroLamports"in u)await Qr(s,a,u.pricePerUnitInMicroLamports);else{let m=$s(u.extraFeeInLamports).div(o).mul(ln(6)).toFixed(0);await Qr(s,a,m)}}}}function Js(s,i){let r=i.findIndex(u=>u.programId.equals(Xn.programId)&&da.decodeInstructionType(u)==="SetComputeUnitLimit"),a=Number((s*1.3).toFixed(0)),o=Xn.setComputeUnitLimit({units:a});return r>=0?i[r]=o:i.push(o),a.toString()}async function Qr(s,i,r){let a=s.findIndex(m=>m.programId.equals(Xn.programId)&&da.decodeInstructionType(m)==="SetComputeUnitPrice"),o=BigInt(r||await Ls(i)),u=Xn.setComputeUnitPrice({microLamports:o});return a>=0?s[a]=u:s.push(u),o.toString()}async function Ls(s){let i=await s.getRecentPrioritizationFees(),r=0;for(let a of i)r+=a.prioritizationFee;return(r/i.length).toFixed(0)}g();y();f();import{NATIVE_MINT as Xs}from"@solana/spl-token";import{Connection as Ys,TransactionMessage as ya,VersionedTransaction as Ks}from"@solana/web3.js";import ha,{AxiosError as Ta}from"axios";var Yn=class{connection;jupiterUrl;apiKeyHeader;maxAccounts;constructor(i,r){this.connection=new Ys(i),this.jupiterUrl=r.jupiterUrl.replace(/\/$/,""),this.apiKeyHeader=r.jupiterApiKeyHeader,this.maxAccounts=r.jupiterMaxAccounts}async getJupiterSwapTx(i,r,a,o){let u;try{let P=o?"ExactOut":"ExactIn",x=`${this.jupiterUrl}/quote?inputMint=${r}&outputMint=${Xs.toString()}&amount=${a}&swapMode=${P}&slippageBps=100&onlyDirectRoutes=true`;this.maxAccounts&&(x+=`&maxAccounts=${this.maxAccounts}`),u=await ha.get(x,{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(P){throw P instanceof Ta&&P.response&&P.response.data&&P.response.data.error?new he(P.response.data.error):new he("Cannot get route")}let m;if(o&&u?.data?.inAmount)m=u.data.inAmount;else if(o)throw new he("Cannot get inAmount");let p;try{p=await ha.post(`${this.jupiterUrl}/swap`,{quoteResponse:u.data,userPublicKey:i,wrapAndUnwrapSol:!0},{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(P){throw P instanceof Ta&&P.response&&P.response.data&&P.response.data.error?new he(P.response.data.error):new he("Cannot get swap transaction")}let h;if(p?.data?.swapTransaction)h=p.data.swapTransaction;else throw new he("Cannot get swap transaction");let T=C.from(h,"base64"),S=Ks.deserialize(T);return o?{tx:S,amountIn:m}:{tx:S}}async amendJupiterWithSdkTx(i,r){try{let a=await Mt(i,this.connection),o=await Mt(r,this.connection),u=ya.decompile(i.message,{addressLookupTableAccounts:a}),m=ya.decompile(r.message,{addressLookupTableAccounts:o});if(m.instructions.shift(),u.instructions.push(...m.instructions),a.push(...o),i.message=u.compileToV0Message(a),r.message.header.numRequiredSignatures===2&&i.signatures.length===1){let p=r.signatures[0];if(!p)throw new M("Signature is undefined");i.signatures.push(p)}return i}catch(a){throw a instanceof Error&&a.message?new he(`Some error occurred during creation final swap and bridge transaction. ${a.message}`):new he("Some error occurred during creation final swap and bridge transaction")}}};var qr=1e6,Sa=1.1,Kn=class extends Ee{constructor(r,a,o){super();this.solanaRpcUrl=r;this.params=a;this.api=o;this.jupiterService=new Yn(r,a.jupiterParams)}chainType="SOLANA";jupiterService;async buildRawTransactionSwap(r){let a=ot(this.chainType,r);return await this.buildSwapTransaction(a,r.sourceToken.poolAddress,r.destinationToken.poolAddress,r.txFeeParams)}async buildSwapTransaction(r,a,o,u){let{fromAccountAddress:m,amount:p,contractAddress:h,fromTokenAddress:T,toTokenAddress:S,toAccountAddress:P,minimumReceiveAmount:x}=r,B=m,I=h,F=T,D=S,O=o,W=P,E=new re(B),V=yt(this.solanaRpcUrl,E.toString()),Z=new zr(yn,I,V),K=await jt(Z.programId),we=await ft(Z.programId),Ae=new re(F),Ve=await Zt(Ae,Z.programId),je=new re(a),Ke=await Qe(E,Ae),Me=new re(W),fe=new re(D),Ce=await Zt(fe,Z.programId),Oe=new re(O),Be=await Qe(Me,fe),Ze=[ht.ComputeBudgetProgram.setComputeUnitLimit({units:qr})];try{await _t(Be,V)}catch{let xn=await Hs.associatedToken(V).methods.create().accounts({mint:fe,owner:Me,associatedAccount:Be}).instruction();Ze.push(xn)}let _e=await Z.methods.swap(new Jt(p),new Jt(x||0)).accounts({payer:E,config:we,bridgeAuthority:K,user:E,sendBridgeToken:Ve,sendMint:Ae,sendPool:je,sendUserToken:Ke,receiveBridgeToken:Ce,receiveMint:fe,receivePool:Oe,receiveUserToken:Be}).preInstructions(Ze).transaction(),De=V.connection;return _e.recentBlockhash=(await De.getLatestBlockhash()).blockhash,_e.feePayer=E,await $t(_e,u,this.solanaRpcUrl),await this.convertToVersionedTransaction(_e,De)}async buildRawTransactionSend(r){let a=await qe(this.chainType,r,this.api),o=this.addPoolAddress(r,a),u=o.gasFeePaymentMethod=="stablecoin",m;if(u)try{let{tx:T,solTxSendUpdatedParams:S}=await this.processJup(o,r,!0);m=T,o={...o,...S}}catch{try{let{tx:S,solTxSendUpdatedParams:P}=await this.processJup(o,r,!1);m=S,o={...o,...P}}catch(S){throw S instanceof ue?S:S instanceof Error&&S.message?new he(`Some error occurred during creation Jupiter swap transaction. ${S.message}`):new he("Some error occurred during creation Jupiter swap transaction")}}let p,h;switch(a.messenger){case 1:{let T=await this.prepareSwapAndBridgeData(o);p=await this.buildSwapAndBridgeAllbridgeTransaction(T);break}case 2:{let T=await this.prepareSwapAndBridgeData(o),{transaction:S,messageAccount:P}=await this.buildSwapAndBridgeWormholeTransaction(T);p=S,h=P;break}case 3:case 4:{let T=await this.prepareSwapAndBridgeCctpData(o),{transaction:S,messageSentEventDataKeypair:P}=await this.buildSwapAndBridgeCctpTransaction(r.destinationToken.chainSymbol,T);p=S,h=P;break}case 5:throw new Re("Messenger OFT is not supported yet.")}if(u){if(!m)throw new he("Swap tx is absent");p=await this.jupiterService.amendJupiterWithSdkTx(m,p)}return await ga(p,r.txFeeParams,this.solanaRpcUrl),h&&p.sign([h]),p}async processJup(r,a,o){let{fee:u,extraGas:m,gasFeePaymentMethod:p}=await this.convertStableCoinFeeAndExtraGasToNativeCurrency(a.sourceToken,r),h=o?et(u):et(r.fee);m&&(h=h.plus(m)),o||(h=h.mul(Sa));let{tx:T,amountIn:S}=await this.jupiterService.getJupiterSwapTx(a.fromAccountAddress,a.sourceToken.tokenAddress,h.toFixed(0),o),P;if(o){if(!S)throw new he("Cannot get inAmount");P=et(r.amount).minus(et(S).mul(Sa)).toFixed(0)}else P=et(r.amount).minus(h).toFixed(0);if(et(P).lte(0))throw new Ut(`Amount not enough to pay fee, ${J(et(P).minus(1).neg(),a.sourceToken.decimals).toFixed()} stables is missing`);return{tx:T,solTxSendUpdatedParams:{amount:P,fee:u,extraGas:m,gasFeePaymentMethod:p}}}addPoolAddress(r,a){return{...a,poolAddress:r.sourceToken.poolAddress}}async convertStableCoinFeeAndExtraGasToNativeCurrency(r,a){if(a.gasFeePaymentMethod=="stablecoin"){let o=(await this.api.getReceiveTransactionCost({sourceChainId:a.fromChainId,destinationChainId:a.toChainId,messenger:a.messenger,sourceToken:r.tokenAddress})).sourceNativeTokenPrice,u=et(a.fee).div(o).mul(et(10).pow(H.getChainDecimalsByType("SOLANA")-r.decimals)).toFixed(0),m;return a.extraGas&&(m=et(a.extraGas).div(o).mul(et(10).pow(H.getChainDecimalsByType("SOLANA")-r.decimals)).toFixed(0)),{fee:u,extraGas:m,gasFeePaymentMethod:"native"}}return{fee:a.fee,extraGas:a.extraGas,gasFeePaymentMethod:"native"}}getExtraGasInstruction(r,a,o){return ht.SystemProgram.transfer({fromPubkey:a,toPubkey:o,lamports:+r})}async prepareSwapAndBridgeData(r){let{amount:a,contractAddress:o,fromChainId:u,fromAccountAddress:m,fromTokenAddress:p,toChainId:h,toAccountAddress:T,toTokenAddress:S,poolAddress:P,extraGas:x}=r,B=p,I=m,F=h,D=S,O=T,W=o,E=u,V=yt(this.solanaRpcUrl,I),Z=new zr(yn,W,V),K=Array.from(Vn()),we=new re(P),Ae=await ua(a,Z,we),Ve=await _i(K,Z.programId),je=await jt(Z.programId),Ke=await Qe(new re(I),new re(B)),Me=await Zt(new re(B),Z.programId),fe=await _r(F,Z.programId),Ce=await Ji(F,C.from(D),Z.programId),Oe=await ft(Z.programId),Be=await Z.account.config.fetch(Oe),Ze=await mn(F,Be.gasOracleProgramId),_e=await mn(E,Be.gasOracleProgramId),De=ma({amount:Ae,recipient:C.from(O),nonce:C.from(K),receiveToken:C.from(D),destinationChainId:F,sourceChainId:E,chainBridge:(await jt(Z.programId)).toBuffer()}),G={};return G.bridge=Z,G.amount=new Jt(a),G.vusdAmount=new Jt(Ae),G.nonce=K,G.recipient=Array.from(O),G.receiveToken=Array.from(D),G.poolAccount=we,G.lockAccount=Ve,G.bridgeAuthority=je,G.userToken=Ke,G.bridgeTokenAccount=Me,G.chainBridgeAccount=fe,G.otherBridgeTokenAccount=Ce,G.userAccount=new re(I),G.destinationChainId=F,G.mint=new re(B),G.config=Oe,G.configAccountInfo=Be,G.gasPrice=Ze,G.thisGasPrice=_e,G.message=De,x&&(G.extraGasInstruction=this.getExtraGasInstruction(x,G.userAccount,Oe)),G}async buildSwapAndBridgeAllbridgeTransaction(r){let{bridge:a,vusdAmount:o,nonce:u,recipient:m,receiveToken:p,poolAccount:h,lockAccount:T,bridgeAuthority:S,userToken:P,bridgeTokenAccount:x,chainBridgeAccount:B,otherBridgeTokenAccount:I,userAccount:F,destinationChainId:D,mint:O,config:W,configAccountInfo:E,gasPrice:V,thisGasPrice:Z,message:K,extraGasInstruction:we}=r,Ae=E.allbridgeMessengerProgramId,Ve=await $r(D,Ae),je=await ft(Ae),Ke=await Li(K,Ae),Me=[];we&&Me.push(we);let fe=await a.methods.swapAndBridge({vusdAmount:o,nonce:u,destinationChainId:D,recipient:m,receiveToken:p}).accounts({mint:O,user:F,config:W,lock:T,pool:h,gasPrice:V,thisGasPrice:Z,bridgeAuthority:S,userToken:P,bridgeToken:x,chainBridge:B,messenger:Ae,messengerGasUsage:Ve,messengerConfig:je,sentMessageAccount:Ke,otherBridgeToken:I}).preInstructions([ht.ComputeBudgetProgram.setComputeUnitLimit({units:qr})]).postInstructions(Me).transaction(),Ce=yt(this.solanaRpcUrl,F.toString()).connection;return fe.recentBlockhash=(await Ce.getLatestBlockhash()).blockhash,fe.feePayer=F,await this.convertToVersionedTransaction(fe,Ce)}async convertToVersionedTransaction(r,a){let o=await a.getAddressLookupTable(new re(this.params.solanaLookUpTable)).then(m=>m.value);if(!o)throw new M("Cannot find allbridgeLookupTableAccount");let u=new ht.TransactionMessage({payerKey:r.feePayer,recentBlockhash:r.recentBlockhash,instructions:r.instructions}).compileToV0Message([o]);return new ht.VersionedTransaction(u)}async buildSwapAndBridgeWormholeTransaction(r){let{bridge:a,vusdAmount:o,nonce:u,recipient:m,receiveToken:p,poolAccount:h,lockAccount:T,bridgeAuthority:S,userToken:P,bridgeTokenAccount:x,chainBridgeAccount:B,otherBridgeTokenAccount:I,userAccount:F,destinationChainId:D,mint:O,config:W,configAccountInfo:E,gasPrice:V,thisGasPrice:Z,message:K,extraGasInstruction:we}=r,Ae=this.params.wormholeMessengerProgramId,[Ve]=re.findProgramAddressSync([C.from("Bridge")],new re(Ae)),[je]=re.findProgramAddressSync([C.from("fee_collector")],new re(Ae)),[Ke]=re.findProgramAddressSync([C.from("Sequence"),S.toBuffer()],new re(Ae)),Me=await $r(D,E.wormholeMessengerProgramId),fe=await ft(E.wormholeMessengerProgramId),Ce=ba.generate(),Oe=yt(this.solanaRpcUrl,F.toString()),Be=await Oe.connection.getAccountInfo(Ve);if(Be==null)throw new M("Cannot fetch wormhole bridge account info");let Ze=new Jt(Be.data.slice(16,24),"le").toString(),_e=Qs.transfer({fromPubkey:F,toPubkey:je,lamports:+Ze}),De=[];we&&De.push(we);let G={mint:O,user:F,config:W,lock:T,pool:h,gasPrice:V,thisGasPrice:Z,bridgeAuthority:S,userToken:P,bridgeToken:x,chainBridge:B,otherBridgeToken:I,messengerGasUsage:Me,wormholeProgram:Ae,bridge:Ve,message:Ce.publicKey,wormholeMessenger:E.wormholeMessengerProgramId,sequence:Ke,feeCollector:je,wormholeMessengerConfig:fe,clock:ht.SYSVAR_CLOCK_PUBKEY},le=await a.methods.swapAndBridgeWormhole({vusdAmount:o,nonce:u,destinationChainId:D,recipient:m,receiveToken:p}).accounts(G).preInstructions([ht.ComputeBudgetProgram.setComputeUnitLimit({units:qr}),_e]).postInstructions(De).signers([Ce]).transaction();return le.recentBlockhash=(await Oe.connection.getLatestBlockhash()).blockhash,le.feePayer=F,{transaction:await this.convertToVersionedTransaction(le,Oe.connection),messageAccount:Ce}}async prepareSwapAndBridgeCctpData(r){let{contractAddress:a,amount:o,fromAccountAddress:u,fromTokenAddress:m,toChainId:p,toAccountAddress:h,toTokenAddress:T,extraGas:S}=r,P=a;if(!P)throw new Ie("Such route does not support CCTP protocol");let x=4,B=u,I=T,F=h,D=yt(this.solanaRpcUrl,B),O=new zr(Aa,P,D),W=new re(m),E=await Xi(W,O.programId),V=new re(B),Z=await O.account.cctpBridge.fetch(E),K={};return K.cctpBridge=O,K.cctpBridgeAccount=E,K.cctpAddressAccount=new re(P),K.amount=new Jt(o),K.recipient=Array.from(F),K.receiveToken=Array.from(I),K.userToken=await Qe(V,W),K.bridgeAuthority=await $i(E,O.programId),K.bridgeTokenAccount=await Yi(W,O.programId),K.chainBridgeAccount=await _r(p,O.programId),K.userAccount=V,K.destinationChainId=p,K.mint=W,K.gasPrice=await mn(p,Z.gasOracleProgramId),K.thisGasPrice=await mn(x,Z.gasOracleProgramId),K.provider=D,S&&(K.extraGasInstruction=this.getExtraGasInstruction(S,K.userAccount,E)),K}async buildSwapAndBridgeCctpTransaction(r,a){let{cctpBridge:o,cctpBridgeAccount:u,amount:m,recipient:p,receiveToken:h,bridgeAuthority:T,userToken:S,bridgeTokenAccount:P,chainBridgeAccount:x,userAccount:B,destinationChainId:I,mint:F,gasPrice:D,thisGasPrice:O,extraGasInstruction:W,provider:E}=a,V=this.params.cctpParams.cctpDomains[r],Z=this.params.cctpParams.cctpTransmitterProgramId,K=this.params.cctpParams.cctpTokenMessengerMinter;if(V==null||!Z||!K)throw new M("CCTP is not configured");let we=new re(Z),Ae=new re(K),{messageTransmitterAccount:Ve,tokenMessenger:je,tokenMessengerEventAuthority:Ke,tokenMinter:Me,localToken:fe,remoteTokenMessengerKey:Ce,authorityPda:Oe}=Hi(V,F,we,Ae),Be=[];W&&Be.push(W);let Ze=ba.generate(),_e=Ki(o.programId,Ze.publicKey),De=await o.methods.bridge({amount:m,destinationChainId:I,recipient:p,receiveToken:h}).accounts({mint:F,user:B,cctpBridge:u,messageSentEventData:Ze.publicKey,lock:_e,cctpMessenger:Ae,messageTransmitterProgram:we,messageTransmitterAccount:Ve,tokenMessenger:je,tokenMinter:Me,localToken:fe,remoteTokenMessengerKey:Ce,authorityPda:Oe,eventAuthority:Ke,bridgeToken:P,gasPrice:D,thisGasPrice:O,chainBridge:x,userToken:S,bridgeAuthority:T}).preInstructions([ht.ComputeBudgetProgram.setComputeUnitLimit({units:2e6})]).postInstructions(Be).transaction(),G=E.connection;return De.recentBlockhash=(await G.getLatestBlockhash()).blockhash,De.feePayer=B,{transaction:await this.convertToVersionedTransaction(De,G),messageSentEventDataKeypair:Ze}}send(r){throw new de}};g();y();f();import{Address as ei,contract as ak}from"@stellar/stellar-sdk";import{Big as eo}from"big.js";g();y();f();import{contract as n}from"@stellar/stellar-sdk";var zs=n.Spec,qs=n.Client;var hn=class extends qs{constructor(r){super(new zs(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAApnYXNfb3JhY2xlAAAAAAATAAAAAAAAAAxuYXRpdmVfdG9rZW4AAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9hbmRfYnJpZGdlAAAAAAkAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACXJlY2lwaWVudAAAAAAAA+4AAAAgAAAAAAAAABRkZXN0aW5hdGlvbl9jaGFpbl9pZAAAAAQAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAFbm9uY2UAAAAAAAAMAAAAAAAAAApnYXNfYW1vdW50AAAAAAAKAAAAAAAAABBmZWVfdG9rZW5fYW1vdW50AAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOcmVjZWl2ZV90b2tlbnMAAAAAAAgAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAA9zb3VyY2VfY2hhaW5faWQAAAAABAAAAAAAAAANcmVjZWl2ZV90b2tlbgAAAAAAA+4AAAAgAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAAAAAAJZXh0cmFfZ2FzAAAAAAAD6AAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAEc3dhcAAAAAYAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAA+4AAAAgAAAAAAAAAA1yZWNlaXZlX3Rva2VuAAAAAAAD7gAAACAAAAAAAAAACXJlY2lwaWVudAAAAAAAABMAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAJc3RvcF9zd2FwAAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc3RhcnRfc3dhcAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X2dhc19vcmFjbGUAAAAAAAEAAAAAAAAAC25ld19hZGRyZXNzAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X3JlYmFsYW5jZXIAAAAAAAEAAAAAAAAACnJlYmFsYW5jZXIAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X21lc3NlbmdlcgAAAAAAAAEAAAAAAAAACW1lc3NlbmdlcgAAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X2dhc191c2FnZQAAAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAJZ2FzX3VzYWdlAAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAPcmVnaXN0ZXJfYnJpZGdlAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAOYnJpZGdlX2FkZHJlc3MAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAQYWRkX2JyaWRnZV90b2tlbgAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAANdG9rZW5fYWRkcmVzcwAAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATcmVtb3ZlX2JyaWRnZV90b2tlbgAAAAACAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAIYWRkX3Bvb2wAAAACAAAAAAAAAARwb29sAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATd2l0aGRyYXdfZ2FzX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAfd2l0aGRyYXdfYnJpZGdpbmdfZmVlX2luX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAVaGFzX3Byb2Nlc3NlZF9tZXNzYWdlAAAAAAAAAQAAAAAAAAAHbWVzc2FnZQAAAAPuAAAAIAAAAAEAAAPpAAAAAQAAAAM=","AAAAAAAAAAAAAAAUaGFzX3JlY2VpdmVkX21lc3NhZ2UAAAABAAAAAAAAAAdtZXNzYWdlAAAAA+4AAAAgAAAAAQAAA+kAAAABAAAAAw==","AAAAAAAAAAAAAAAQZ2V0X3Bvb2xfYWRkcmVzcwAAAAEAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAKZ2V0X2NvbmZpZwAAAAAAAAAAAAEAAAPpAAAH0AAAAAZCcmlkZ2UAAAAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAUZ2V0X3RyYW5zYWN0aW9uX2Nvc3QAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAANZ2V0X2dhc191c2FnZQAAAAAAAAEAAAAAAAAACGNoYWluX2lkAAAABAAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAOZ2V0X2dhc19vcmFjbGUAAAAAAAAAAAABAAAD6QAAABMAAAAD","AAAAAAAAAAAAAAASZ2V0X2Fub3RoZXJfYnJpZGdlAAAAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAB9AAAAANQW5vdGhlckJyaWRnZQAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAB1N3YXBwZWQAAAAABgAAAAAAAAAOcmVjZWl2ZV9hbW91bnQAAAAAAAoAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAAEwAAAAAAAAALc2VuZF9hbW91bnQAAAAACgAAAAAAAAAKc2VuZF90b2tlbgAAAAAD7gAAACAAAAAAAAAABnNlbmRlcgAAAAAAEw==","AAAAAQAAAAAAAAAAAAAAClRva2Vuc1NlbnQAAAAAAAUAAAAAAAAABmFtb3VudAAAAAAACgAAAAAAAAAUZGVzdGluYXRpb25fY2hhaW5faWQAAAAEAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAADlRva2Vuc1JlY2VpdmVkAAAAAAAEAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAB21lc3NhZ2UAAAAD7gAAACAAAAAAAAAABW5vbmNlAAAAAAAADAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAAClJlY2VpdmVGZWUAAAAAAAMAAAAAAAAAF2JyaWRnZV90cmFuc2FjdGlvbl9jb3N0AAAAAAoAAAAAAAAACWV4dHJhX2dhcwAAAAAAAAoAAAAAAAAAGG1lc3NhZ2VfdHJhbnNhY3Rpb25fY29zdAAAAAo=","AAAAAQAAAAAAAAAAAAAAFUJyaWRnaW5nRmVlRnJvbVRva2VucwAAAAAAAAIAAAAAAAAAEGZlZV90b2tlbl9hbW91bnQAAAAKAAAAAAAAAANnYXMAAAAACg==","AAAAAQAAAAAAAAAAAAAADUFub3RoZXJCcmlkZ2UAAAAAAAACAAAAAAAAAAdhZGRyZXNzAAAAA+4AAAAgAAAAAAAAAAZ0b2tlbnMAAAAAA+wAAAPuAAAAIAAAAAE=","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAABgAAAGBwcmVjb21wdXRlZCB2YWx1ZXMgb2YgdGhlIHNjYWxpbmcgZmFjdG9yIHJlcXVpcmVkIGZvciBwYXlpbmcgdGhlIGJyaWRnaW5nIGZlZSB3aXRoIHN0YWJsZSB0b2tlbnMAAAAeYnJpZGdpbmdfZmVlX2NvbnZlcnNpb25fZmFjdG9yAAAAAAPsAAAAEwAAAAoAAAAAAAAACGNhbl9zd2FwAAAAAQAAAGxwcmVjb21wdXRlZCB2YWx1ZXMgdG8gZGl2aWRlIGJ5IHRvIGNoYW5nZSB0aGUgcHJlY2lzaW9uIGZyb20gdGhlIEdhcyBPcmFjbGUgcHJlY2lzaW9uIHRvIHRoZSB0b2tlbiBwcmVjaXNpb24AAAAWZnJvbV9nYXNfb3JhY2xlX2ZhY3RvcgAAAAAD7AAAABMAAAAKAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAAVwb29scwAAAAAAA+wAAAPuAAAAIAAAABMAAAAAAAAACnJlYmFsYW5jZXIAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAwAAAAEAAAAAAAAAC090aGVyQnJpZGdlAAAAAAEAAAAEAAAAAQAAAAAAAAALU2VudE1lc3NhZ2UAAAAAAQAAA+4AAAAgAAAAAQAAAAAAAAAPUmVjZWl2ZWRNZXNzYWdlAAAAAAEAAAPuAAAAIA==","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),r);this.options=r}fromJSON={initialize:this.txFromJSON,swap_and_bridge:this.txFromJSON,receive_tokens:this.txFromJSON,swap:this.txFromJSON,stop_swap:this.txFromJSON,start_swap:this.txFromJSON,set_gas_oracle:this.txFromJSON,set_stop_authority:this.txFromJSON,set_rebalancer:this.txFromJSON,set_messenger:this.txFromJSON,set_gas_usage:this.txFromJSON,register_bridge:this.txFromJSON,add_bridge_token:this.txFromJSON,remove_bridge_token:this.txFromJSON,add_pool:this.txFromJSON,withdraw_gas_tokens:this.txFromJSON,withdraw_bridging_fee_in_tokens:this.txFromJSON,has_processed_message:this.txFromJSON,has_received_message:this.txFromJSON,get_pool_address:this.txFromJSON,get_config:this.txFromJSON,get_stop_authority:this.txFromJSON,get_transaction_cost:this.txFromJSON,get_gas_usage:this.txFromJSON,get_admin:this.txFromJSON,get_gas_oracle:this.txFromJSON,get_another_bridge:this.txFromJSON,set_admin:this.txFromJSON,upgrade:this.txFromJSON}};var Hn=class extends Ee{constructor(r,a,o){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=o}chainType="SRB";async buildRawTransactionSend(r){let a=await qe(this.chainType,r,this.api);return await this.buildRawTransactionSendFromParams(a)}async buildRawTransactionSendFromParams(r){let{amount:a,contractAddress:o,fromAccountAddress:u,fromTokenAddress:m,toChainId:p,toAccountAddress:h,toTokenAddress:T,fee:S,gasFeePaymentMethod:P,extraGas:x}=r,B=S;x&&(B=eo(B).plus(x).toFixed());let I=this.getContract(hn,o,u),F;return P==="stablecoin"?F=await I.swap_and_bridge({sender:u,token:ei.contract(C.from(m)).toString(),amount:BigInt(a),recipient:C.from(h),destination_chain_id:+p,receive_token:C.from(T),nonce:st(),gas_amount:BigInt(0),fee_token_amount:BigInt(B)}):F=await I.swap_and_bridge({sender:u,token:ei.contract(C.from(m)).toString(),amount:BigInt(a),recipient:C.from(h),destination_chain_id:+p,receive_token:C.from(T),nonce:st(),gas_amount:BigInt(B),fee_token_amount:BigInt(0)}),F.toXDR()}async buildRawTransactionSwap(r){let a=ot(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:o,fromAccountAddress:u,fromTokenAddress:m,toAccountAddress:p,toTokenAddress:h,minimumReceiveAmount:T}=r;return(await this.getContract(hn,o,u).swap({sender:u,amount:BigInt(a),token:ei.contract(C.from(m)).toBuffer(),receive_token:C.from(h),recipient:p,receive_amount_min:BigInt(T)})).toXDR()}send(r){throw new de}getContract(r,a,o){let u={publicKey:o,contractId:a,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new r(u)}};g();y();f();import{SuiClient as po}from"@mysten/sui/client";import{coinWithBalance as ce,Transaction as nr}from"@mysten/sui/transactions";import{SUI_CLOCK_OBJECT_ID as Wa}from"@mysten/sui/utils";import{Big as li}from"big.js";var di=He(Tt());g();y();f();var dt=He(Tt());ye();function Ca(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap`,typeArguments:i,arguments:[j(s,r.bridge),j(s,r.coin),Xe(s,r.receiveAmountMin,"u64")]})}function Ba(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::deposit`,typeArguments:[i],arguments:[j(s,r.bridge),j(s,r.userDeposit),j(s,r.coin)]})}function Ia(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::withdraw`,typeArguments:[i],arguments:[j(s,r.bridge),j(s,r.userDeposit),Xe(s,r.amountLp,"u64")]})}function Ra(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::claim_reward`,typeArguments:[i],arguments:[j(s,r.bridge),j(s,r.userDeposit)]})}function va(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::pool`,typeArguments:[i],arguments:[j(s,r)]})}function ni(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap_and_bridge_wormhole`,typeArguments:[i],arguments:[j(s,r.bridge),j(s,r.messenger),j(s,r.wormholeState),j(s,r.theClock),j(s,r.gasOracle),j(s,r.amount),j(s,r.recipient),Xe(s,r.destinationChainId,"u8"),j(s,r.receiveToken),Xe(s,r.nonce,"u256"),j(s,r.feeSuiCoin),j(s,r.feeTokenCoin)]})}function ka(s,i){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::new_user_deposit`,typeArguments:[i],arguments:[]})}function ri(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap_and_bridge`,typeArguments:[i],arguments:[j(s,r.bridge),j(s,r.messenger),j(s,r.gasOracle),j(s,r.amount),j(s,r.recipient),Xe(s,r.destinationChainId,"u8"),j(s,r.receiveToken),Xe(s,r.nonce,"u256"),j(s,r.feeSuiCoin),j(s,r.feeTokenCoin)]})}var Ea=He(ai());g();y();f();var Fa=He(ai());ye();function si(s,i,r){return s.moveCall({target:`${Fa.PUBLISHED_AT}::cctp_bridge_interface::bridge`,typeArguments:[i],arguments:[j(s,r.cctpBridge),j(s,r.gasOracle),j(s,r.tokenMessengerMinterState),j(s,r.messageTransmitterState),j(s,r.treasury),j(s,r.denyList),j(s,r.amount),j(s,r.feeSuiCoin),j(s,r.feeTokenCoin),Xe(s,r.destinationChainId,"u8"),j(s,r.recipient),j(s,r.recipientWalletAddress)]})}var Ga=He(ci());g();y();f();var Na=He(ci());g();y();f();g();y();f();ye();import{bcs as bt}from"@mysten/sui/bcs";import{fromHEX as oo,toHEX as co}from"@mysten/sui/utils";g();y();f();import{bcs as so}from"@mysten/sui/bcs";ye();var Ai=class s{__VectorClass=!0;static $typeName="vector";static $numTypeParams=1;static $isPhantom=[!1];$typeName="vector";$fullTypeName;$typeArgs;$isPhantom=[!1];elements;constructor(i,r){this.$fullTypeName=z(this.$typeName,...i),this.$typeArgs=i,this.elements=r}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs(Tn(i)),fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),new:r=>new s([_(i)],r),kind:"VectorClassReified"}}static get r(){return s.reified}static get bcs(){return so.vector}static fromFields(i,r){return s.reified(i).new(r.map(a=>Y(i,a)))}static fromFieldsWithTypes(i,r){return s.reified(i).new(r.map(a=>L(i,a)))}static fromBcs(i,r){return s.fromFields(i,s.bcs(Tn(i)).parse(r))}toJSONField(){return this.elements.map(i=>Ot(this.$typeArgs[0],i))}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,elements:this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new(r.map(a=>X(i,a)))}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a vector json object");return s.fromJSONField(i,r.elements)}};function Lt(s){return Ai.r(s)}function oe(s){return typeof s=="string"?{phantomType:s,kind:"PhantomReified"}:{phantomType:s.fullTypeName,kind:"PhantomReified"}}var Ao=bt.bytes(32).transform({input:s=>oo(s),output:s=>co(s)});function Tn(s){switch(s){case"bool":return bt.bool();case"u8":return bt.u8();case"u16":return bt.u16();case"u32":return bt.u32();case"u64":return bt.u64();case"u128":return bt.u128();case"u256":return bt.u256();case"address":return Ao;default:return s.bcs}}function _(s){switch(s){case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"bool":case"address":return s}switch(s.kind){case"PhantomReified":return s.phantomType;case"StructClassReified":return s.fullTypeName;case"VectorClassReified":return s.fullTypeName}throw new Error("unreachable")}function Y(s,i){switch(s){case"bool":case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return BigInt(i);case"address":return`0x${i}`}if(s.kind==="VectorClassReified")return s.fromFields(i).elements;switch(s.typeName){case"0x1::string::String":case"0x1::ascii::String":return new TextDecoder().decode(Uint8Array.from(i.bytes)).toString();case"0x2::url::Url":return new TextDecoder().decode(Uint8Array.from(i.url.bytes)).toString();case"0x2::object::ID":return`0x${i.bytes}`;case"0x2::object::UID":return`0x${i.id.bytes}`;case"0x1::option::Option":return i.vec.length===0?null:s.fromFields(i).vec[0];default:return s.fromFields(i)}}function L(s,i){switch(s){case"bool":case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return BigInt(i);case"address":return i}if(s.kind==="VectorClassReified")return s.fromFieldsWithTypes(i).elements;switch(s.typeName){case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":return i;case"0x2::object::UID":return i.id;case"0x2::balance::Balance":return s.fromFields({value:BigInt(i)});case"0x1::option::Option":return i===null?null:L(s.reifiedTypeArgs[0],i);default:return s.fromFieldsWithTypes(i)}}function tt(s,i,r){if(r.length!==i.length)throw new Error(`provided item has mismatching number of type argments ${s} (expected ${r.length}, got ${i.length}))`);for(let a=0;a<i.length;a++)if(U(i[a])!==U(_(r[a])))throw new Error(`provided item has mismatching type argments ${s} (expected ${_(r[a])}, got ${i[a]}))`)}function ct(s,i){let{typeArgs:r}=Se(s.type);tt(s.type,r,i)}function Ot(s,i){let{typeName:r,typeArgs:a}=Se(s);switch(r){case"bool":return i;case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return i.toString();case"address":case"signer":return i;case"vector":return i.map(o=>Ot(a[0],o));case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":case"0x2::object::UID":return i;case"0x1::option::Option":return i===null?null:Ot(a[0],i);default:return i.toJSONField()}}function X(s,i){switch(s){case"bool":case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return BigInt(i);case"address":return i}if(s.kind==="VectorClassReified")return s.fromJSONField(i).elements;switch(s.typeName){case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":case"0x2::object::UID":return i;case"0x1::option::Option":return i===null?null:X(s.reifiedTypeArgs[0],i);default:return s.fromJSONField(i)}}ye();g();y();f();var Qn="0x1";import{bcs as ng}from"@mysten/sui/bcs";import{fromB64 as ig}from"@mysten/sui/utils";g();y();f();ye();import{bcs as ui}from"@mysten/sui/bcs";import{fromB64 as uo}from"@mysten/sui/utils";function zn(s){return s=U(s),s===`${Qn}::string::String`}var qn=class s{__StructClass=!0;static get $typeName(){return`${Qn}::string::String`}static $numTypeParams=0;static $isPhantom=[];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;bytes;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.bytes=r.bytes}static reified(){return{typeName:s.$typeName,fullTypeName:z(s.$typeName),typeArgs:[],isPhantom:s.$isPhantom,reifiedTypeArgs:[],fromFields:i=>s.fromFields(i),fromFieldsWithTypes:i=>s.fromFieldsWithTypes(i),fromBcs:i=>s.fromBcs(i),bcs:s.bcs,fromJSONField:i=>s.fromJSONField(i),fromJSON:i=>s.fromJSON(i),fromSuiParsedData:i=>s.fromSuiParsedData(i),fromSuiObjectData:i=>s.fromSuiObjectData(i),fetch:async(i,r)=>s.fetch(i,r),new:i=>new s([],i),kind:"StructClassReified"}}static get r(){return s.reified()}static phantom(){return oe(s.reified())}static get p(){return s.phantom()}static get bcs(){return ui.struct("String",{bytes:ui.vector(ui.u8())})}static fromFields(i){return s.reified().new({bytes:Y(Lt("u8"),i.bytes)})}static fromFieldsWithTypes(i){if(!zn(i.type))throw new Error("not a String type");return s.reified().new({bytes:L(Lt("u8"),i.fields.bytes)})}static fromBcs(i){return s.fromFields(s.bcs.parse(i))}toJSONField(){return{bytes:Ot("vector<u8>",this.bytes)}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i){return s.reified().new({bytes:X(Lt("u8"),i.bytes)})}static fromJSON(i){if(i.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return s.fromJSONField(i)}static fromSuiParsedData(i){if(i.dataType!=="moveObject")throw new Error("not an object");if(!zn(i.type))throw new Error(`object at ${i.fields.id} is not a String object`);return s.fromFieldsWithTypes(i)}static fromSuiObjectData(i){if(i.bcs){if(i.bcs.dataType!=="moveObject"||!zn(i.bcs.type))throw new Error("object at is not a String object");return s.fromBcs(uo(i.bcs.bcsBytes))}if(i.content)return s.fromSuiParsedData(i.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r){let a=await i.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching String object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!zn(a.data.bcs.type))throw new Error(`object at id ${r} is not a String object`);return s.fromSuiObjectData(a.data)}};ye();g();y();f();ye();g();y();f();var St="0x2";import{bcs as mi}from"@mysten/sui/bcs";import{fromB64 as Da,fromHEX as mo,toHEX as lo}from"@mysten/sui/utils";function er(s){return s=U(s),s===`${St}::object::ID`}var Dt=class s{__StructClass=!0;static get $typeName(){return`${St}::object::ID`}static $numTypeParams=0;static $isPhantom=[];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;bytes;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.bytes=r.bytes}static reified(){return{typeName:s.$typeName,fullTypeName:z(s.$typeName),typeArgs:[],isPhantom:s.$isPhantom,reifiedTypeArgs:[],fromFields:i=>s.fromFields(i),fromFieldsWithTypes:i=>s.fromFieldsWithTypes(i),fromBcs:i=>s.fromBcs(i),bcs:s.bcs,fromJSONField:i=>s.fromJSONField(i),fromJSON:i=>s.fromJSON(i),fromSuiParsedData:i=>s.fromSuiParsedData(i),fromSuiObjectData:i=>s.fromSuiObjectData(i),fetch:async(i,r)=>s.fetch(i,r),new:i=>new s([],i),kind:"StructClassReified"}}static get r(){return s.reified()}static phantom(){return oe(s.reified())}static get p(){return s.phantom()}static get bcs(){return mi.struct("ID",{bytes:mi.bytes(32).transform({input:i=>mo(i),output:i=>lo(i)})})}static fromFields(i){return s.reified().new({bytes:Y("address",i.bytes)})}static fromFieldsWithTypes(i){if(!er(i.type))throw new Error("not a ID type");return s.reified().new({bytes:L("address",i.fields.bytes)})}static fromBcs(i){return s.fromFields(s.bcs.parse(i))}toJSONField(){return{bytes:this.bytes}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i){return s.reified().new({bytes:X("address",i.bytes)})}static fromJSON(i){if(i.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return s.fromJSONField(i)}static fromSuiParsedData(i){if(i.dataType!=="moveObject")throw new Error("not an object");if(!er(i.type))throw new Error(`object at ${i.fields.id} is not a ID object`);return s.fromFieldsWithTypes(i)}static fromSuiObjectData(i){if(i.bcs){if(i.bcs.dataType!=="moveObject"||!er(i.bcs.type))throw new Error("object at is not a ID object");return s.fromBcs(Da(i.bcs.bcsBytes))}if(i.content)return s.fromSuiParsedData(i.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r){let a=await i.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching ID object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!er(a.data.bcs.type))throw new Error(`object at id ${r} is not a ID object`);return s.fromSuiObjectData(a.data)}};function tr(s){return s=U(s),s===`${St}::object::UID`}var Ye=class s{__StructClass=!0;static get $typeName(){return`${St}::object::UID`}static $numTypeParams=0;static $isPhantom=[];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;id;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.id=r.id}static reified(){return{typeName:s.$typeName,fullTypeName:z(s.$typeName),typeArgs:[],isPhantom:s.$isPhantom,reifiedTypeArgs:[],fromFields:i=>s.fromFields(i),fromFieldsWithTypes:i=>s.fromFieldsWithTypes(i),fromBcs:i=>s.fromBcs(i),bcs:s.bcs,fromJSONField:i=>s.fromJSONField(i),fromJSON:i=>s.fromJSON(i),fromSuiParsedData:i=>s.fromSuiParsedData(i),fromSuiObjectData:i=>s.fromSuiObjectData(i),fetch:async(i,r)=>s.fetch(i,r),new:i=>new s([],i),kind:"StructClassReified"}}static get r(){return s.reified()}static phantom(){return oe(s.reified())}static get p(){return s.phantom()}static get bcs(){return mi.struct("UID",{id:Dt.bcs})}static fromFields(i){return s.reified().new({id:Y(Dt.reified(),i.id)})}static fromFieldsWithTypes(i){if(!tr(i.type))throw new Error("not a UID type");return s.reified().new({id:L(Dt.reified(),i.fields.id)})}static fromBcs(i){return s.fromFields(s.bcs.parse(i))}toJSONField(){return{id:this.id}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i){return s.reified().new({id:X(Dt.reified(),i.id)})}static fromJSON(i){if(i.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return s.fromJSONField(i)}static fromSuiParsedData(i){if(i.dataType!=="moveObject")throw new Error("not an object");if(!tr(i.type))throw new Error(`object at ${i.fields.id} is not a UID object`);return s.fromFieldsWithTypes(i)}static fromSuiObjectData(i){if(i.bcs){if(i.bcs.dataType!=="moveObject"||!tr(i.bcs.type))throw new Error("object at is not a UID object");return s.fromBcs(Da(i.bcs.bcsBytes))}if(i.content)return s.fromSuiParsedData(i.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r){let a=await i.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching UID object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!tr(a.data.bcs.type))throw new Error(`object at id ${r} is not a UID object`);return s.fromSuiObjectData(a.data)}};function nt(s,i){return s.moveCall({target:`${Na.PUBLISHED_AT}::bytes32::from_hex`,arguments:[Xe(s,i,`${qn.$typeName}`)]})}g();y();f();async function At(s,i,r=[]){let a=await s(i),o=r.concat(a.data);return a.hasNextPage&&a.nextCursor?At(s,a.nextCursor,o):o}var rr=class extends Ee{constructor(r,a){super();this.nodeRpcUrlsConfig=r;this.api=a;this.client=new po({url:r.getNodeRpcUrl(this.chainSymbol)})}chainType="SUI";chainSymbol="SUI";client;send(){throw new M("Method send not implemented.")}async buildRawTransactionSwap(r){let a=r.sourceToken.suiAddresses;if(!a)throw new M("SUI token must contain 'suiAddresses'");(0,di.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin);let o=ot(this.chainType,r);return await this.buildRawTransactionSwapFromParams(o,a)}async buildRawTransactionSwapFromParams(r,a){let{amount:o,fromAccountAddress:u,fromTokenAddress:m,toTokenAddress:p,minimumReceiveAmount:h}=r,T=new nr;T.setSender(u);let S={bridge:a.bridgeObjectAddress,coin:ce({balance:BigInt(o),type:m}),receiveAmountMin:BigInt(h)},P=Ca(T,[m,p],S),x=await At(B=>this.client.getCoins({owner:r.toAccountAddress,coinType:p,cursor:B}));return x.length===0||!x[0]?T.transferObjects([P],r.toAccountAddress):T.mergeCoins(x[0].coinObjectId,[P]),await T.toJSON({client:this.client})}async buildRawTransactionSend(r){let a=await qe(this.chainType,r,this.api),{messenger:o}=a,u=r.sourceToken.suiAddresses;if(!u)throw new M("SUI token must contain 'suiAddresses'");switch((0,di.setAddress)(u.bridgeAddress,u.bridgeAddressOrigin),(0,Ga.setAddress)(u.utilsAddress),o){case 1:return this.buildRawTransactionAllbridgeSend(a,u);case 2:return this.buildRawTransactionWormholeSend(a,u);case 3:case 4:return this.buildRawTransactionCctpSend(r,a,u);case 5:throw new Re("Messenger OFT is not supported yet.")}}async buildRawTransactionAllbridgeSend(r,a){let{amount:o,fromAccountAddress:u,fromTokenAddress:m,toChainId:p,toAccountAddress:h,toTokenAddress:T,fee:S,gasFeePaymentMethod:P,extraGas:x}=r,B=S;x&&(B=li(B).plus(x).toFixed());let I=new nr;if(I.setSender(u),P==="stablecoin"){let F=BigInt(o)-BigInt(B),D={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:ce({balance:F,type:m}),destinationChainId:p,nonce:st(),recipient:nt(I,ze(h)),receiveToken:nt(I,ze(T)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(B),type:m}),feeSuiCoin:ce({balance:BigInt(0),useGasCoin:!1})};ri(I,m,D)}else{let F=B==="0"?ce({balance:BigInt(B),useGasCoin:!1}):ce({balance:BigInt(B)}),D={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:ce({balance:BigInt(o),type:m}),destinationChainId:p,nonce:st(),recipient:nt(I,ze(h)),receiveToken:nt(I,ze(T)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(0),type:m}),feeSuiCoin:F};ri(I,m,D)}return await I.toJSON({client:this.client})}async buildRawTransactionWormholeSend(r,a){let{amount:o,fromAccountAddress:u,fromTokenAddress:m,toChainId:p,toAccountAddress:h,toTokenAddress:T,fee:S,gasFeePaymentMethod:P,extraGas:x}=r,B=S;x&&(B=li(B).plus(x).toFixed());let I=new nr;if(I.setSender(u),P==="stablecoin"){let F=BigInt(o)-BigInt(B),D={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:Wa,amount:ce({balance:F,type:m}),destinationChainId:p,nonce:st(),recipient:nt(I,ze(h)),receiveToken:nt(I,ze(T)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(B),type:m}),feeSuiCoin:ce({balance:BigInt(0),useGasCoin:!1})};ni(I,m,D)}else{let F=B==="0"?ce({balance:BigInt(B),useGasCoin:!1}):ce({balance:BigInt(B)}),D={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:Wa,amount:ce({balance:BigInt(o),type:m}),destinationChainId:p,nonce:st(),recipient:nt(I,ze(h)),receiveToken:nt(I,ze(T)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(0),type:m}),feeSuiCoin:F};ni(I,m,D)}return await I.toJSON({client:this.client})}async buildRawTransactionCctpSend(r,a,o){let{amount:u,fromAccountAddress:m,fromTokenAddress:p,toChainId:h,toAccountAddress:T,fee:S,gasFeePaymentMethod:P,extraGas:x}=a;(0,Ea.setAddress)(o.cctpAddress,o.cctpAddressOrigin);let B=S;x&&(B=li(B).plus(x).toFixed());let I=new nr;I.setSender(m);let F=nt(I,ze(T)),D;if(r.destinationToken.chainType==="SOLANA"){let O=await _n(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));D=nt(I,ze(O))}else D=F;if(P==="stablecoin"){let O=BigInt(u)-BigInt(B),W={cctpBridge:o.cctpObjectAddress,tokenMessengerMinterState:o.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:o.cctpMessageTransmitterStateObjectAddress,treasury:o.cctpTreasuryObjectAddress,denyList:o.cctpDenyListObjectAddress,amount:ce({balance:O,type:p}),destinationChainId:h,recipient:D,recipientWalletAddress:F,gasOracle:o.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(B),type:p}),feeSuiCoin:ce({balance:BigInt(0),useGasCoin:!1})};si(I,p,W)}else{let O=B==="0"?ce({balance:BigInt(B),useGasCoin:!1}):ce({balance:BigInt(B)}),W={cctpBridge:o.cctpObjectAddress,tokenMessengerMinterState:o.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:o.cctpMessageTransmitterStateObjectAddress,treasury:o.cctpTreasuryObjectAddress,denyList:o.cctpDenyListObjectAddress,amount:ce({balance:BigInt(u),type:p}),destinationChainId:h,recipient:D,recipientWalletAddress:F,gasOracle:o.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(0),type:p}),feeSuiCoin:O};si(I,p,W)}return await I.toJSON({client:this.client})}};g();y();f();import{Big as yo}from"big.js";g();y();f();g();y();f();import go from"bn.js";function ir(s){return"0x"+new go(s).toString("hex")}function Ua(s){return new Promise(i=>setTimeout(()=>i(),s))}async function ar(s,i){let r=await s.trx.sign(i);if(!r.signature)throw new Vt("Transaction was not signed properly");let o=(await s.trx.sendRawTransaction(r)).transaction.txID;return await fo(s,o),{txId:o}}async function fo(s,i,r=1e4){let a=Date.now();for(;;){if(Date.now()-a>r)throw new An("Transaction not found");let o=await s.trx.getUnconfirmedTransactionInfo(i);if(!o?.receipt){await Ua(2e3);continue}if(o.receipt.result==="SUCCESS")return o;throw new An(`Transaction status is ${o.receipt.result}`)}}var bn=class extends Ee{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async send(r){let a=await qe(this.chainType,r,this.api),o=await this.buildRawTransactionSendFromParams(r,a);return await ar(this.tronWeb,o)}async buildRawTransactionSwap(r){let a=ot(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:o,fromAccountAddress:u,fromTokenAddress:m,toAccountAddress:p,toTokenAddress:h,minimumReceiveAmount:T}=r,S=[{type:"uint256",value:a},{type:"bytes32",value:m},{type:"bytes32",value:h},{type:"address",value:p},{type:"uint256",value:T}];return this.buildRawTransaction(o,"swap(uint256,bytes32,bytes32,address,uint256)",S,"0",u)}async buildRawTransactionSend(r){let a=await qe(this.chainType,r,this.api);return this.buildRawTransactionSendFromParams(r,a)}async buildRawTransactionSendFromParams(r,a){let{amount:o,contractAddress:u,fromAccountAddress:m,fromTokenAddress:p,toChainId:h,toAccountAddress:T,toTokenAddress:S,messenger:P,fee:x,gasFeePaymentMethod:B,extraGas:I,extraGasDest:F}=a,D=x;I&&(D=yo(D).plus(I).toFixed());let O=st().toString(),W,E,V;switch(P){case 3:case 4:B==="stablecoin"?(W=[{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:D}],E="0"):(W=[{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:0}],E=D),V="bridge(uint256,bytes32,uint256,uint256)";break;case 5:B==="stablecoin"?(W=[{type:"address",value:r.sourceToken.tokenAddress},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:D},{type:"uint256",value:F??"0"},{type:"uint256",value:"10"}],E="0"):(W=[{type:"address",value:r.sourceToken.tokenAddress},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:0},{type:"uint256",value:F??"0"},{type:"uint256",value:"10"}],E=D),V="bridge(address,uint256,bytes32,uint256,uint256,uint256,uint256)";break;case 1:case 2:B==="stablecoin"?(W=[{type:"bytes32",value:p},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"bytes32",value:S},{type:"uint256",value:O},{type:"uint8",value:P},{type:"uint256",value:D}],E="0"):(W=[{type:"bytes32",value:p},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"bytes32",value:S},{type:"uint256",value:O},{type:"uint8",value:P},{type:"uint256",value:0}],E=D),V="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)";break}return this.buildRawTransaction(u,V,W,E,m)}async buildRawTransaction(r,a,o,u,m){let p=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+u},o,m);if(!p?.result?.result)throw new M("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}};var sr=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o;this.rawTxBuilder=new $n(i,r,a,o)}rawTxBuilder;async getAllowance(i,r){let a,o;r?(a=i,o=r):o=i;let u=fn(o.token,o.messenger);return await this.tokenService.getAllowance({...o,spender:u},a)}async checkAllowance(i,r){let a,o;r?(a=i,o=r):o=i;let u=fn(o.token,o.messenger);return this.tokenService.checkAllowance({...o,spender:u},a)}async approve(i,r){let a=fn(r.token,r.messenger);return this.tokenService.approve(i,{...r,spender:a})}async send(i,r){return q(r.amount),ee("amount",r.amount,r.sourceToken.decimals),Jn(r.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).send(r)}};function fn(s,i=1){switch(i){case 3:if(s.cctpAddress)return s.cctpAddress;throw new Ie("Such route does not support CCTP protocol");case 4:if(s.cctpV2Address)return s.cctpV2Address;throw new Ie("Such route does not support CCTP V2 protocol");case 5:if(s.oftBridgeAddress)return s.oftBridgeAddress;throw new Re("Such route does not support OFT protocol");case 1:case 2:return s.bridgeAddress}}function Jn(s,i,r,a,o){switch(H.getChainProperty(s).chainType){case"EVM":{if(o)return new gn(o,i,r);{let u=r.getNodeRpcUrl(s);return new gn(new To(u),i,r)}}case"TRX":{if(o)return new bn(o,i);{let u=r.getNodeRpcUrl(s);return new bn(new ho({fullHost:u,solidityNode:u,eventServer:u}),i)}}case"SOLANA":return new Kn(r.getNodeRpcUrl("SOL"),{wormholeMessengerProgramId:a.wormholeMessengerProgramId,solanaLookUpTable:a.solanaLookUpTable,cctpParams:a.cctpParams,jupiterParams:{jupiterUrl:a.jupiterUrl,jupiterApiKeyHeader:a.jupiterApiKeyHeader,jupiterMaxAccounts:a.jupiterMaxAccounts}},i);case"SRB":return new Hn(r,a,i);case"SUI":return new rr(r,i)}}g();y();f();import{Big as Eo}from"big.js";import Go from"timed-cache";import{TronWeb as Uo}from"tronweb";import{FMT_BYTES as Vo,FMT_NUMBER as jo,Web3 as Zo}from"web3";g();y();f();import{Big as pt}from"big.js";function Va(s,i,r,a,o){let u=Q(s,3),m=pt(u),p=pt(r),h=pt(a).plus(o),T,S;if(p.eq(0)||h.eq(0)){let x=m.div(2);T=pt(a).plus(x),S=pt(o).plus(x)}else T=pt(a).plus(m.mul(a).div(h)),S=pt(o).plus(m.mul(o).div(h));return pt(na(i,T.toFixed(),S.toFixed())).minus(p).toFixed()}function ja(s){let i=Q(s,3);return pt(i).round().toFixed()}g();y();f();import{Web3 as Pt}from"web3";g();y();f();var bo={abi:[{inputs:[{internalType:"address",name:"_router",type:"address"},{internalType:"uint256",name:"_a",type:"uint256"},{internalType:"contract ERC20",name:"_token",type:"address"},{internalType:"uint16",name:"_feeShareBP",type:"uint16"},{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"},{internalType:"string",name:"lpName",type:"string"},{internalType:"string",name:"lpSymbol",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"RewardsClaimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedFromVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedToVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"a",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"accRewardPerShareP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adjustTotalLpAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"adminFeeAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"balanceRatioMinBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canDeposit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canWithdraw",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"claimAdminFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"claimRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"d",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"feeShareBP",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"x",type:"uint256"}],name:"getY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"pendingReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"reserves",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"router",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_adminFeeShareBP",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"}],name:"setBalanceRatioMinBP",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"_feeShareBP",type:"uint16"}],name:"setFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_router",type:"address"}],name:"setRouter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapFromVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapToVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"token",outputs:[{internalType:"contract ERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"userRewardDebt",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"vUsdBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amountLp",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Sn=bo;g();y();f();g();y();f();var xe=class{lpAmount;rewardDebt;constructor(i){this.lpAmount=i.lpAmount,this.rewardDebt=i.rewardDebt}get userLiquidity(){return J(this.lpAmount,3).toFixed()}earned(i,r){let a=ea(this.lpAmount,this.rewardDebt,i.accRewardPerShareP,i.p);return r?J(a,r).toFixed():a}};g();y();f();var Ge=class{};var Pn=class extends Ge{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";P=52;async getUserBalanceInfo(r,a){let o;try{o=await Un(this.getUserBalanceInfoByBatch(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5e3)}catch{o=await Zr(()=>this.getUserBalanceInfoPerProperty(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5,2e3)}return o}async getPoolInfoFromChain(r){let a;try{a=await Un(this.getPoolInfoByBatch(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5e3)}catch{a=await Zr(()=>this.getPoolInfoPerProperty(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5,2e3)}return a}async getUserBalanceInfoByBatch(r,a){let o=new this.web3.eth.BatchRequest,u=this.getPoolContract(a.poolAddress),m=u.methods.userRewardDebt(r).encodeABI(),p=u.methods.balanceOf(r).encodeABI();o.add({method:"eth_call",params:[{to:a.poolAddress,data:m},"latest"]}),o.add({method:"eth_call",params:[{to:a.poolAddress,data:p},"latest"]});let[h,T]=await o.execute();if(h&&T&&!h.error&&!T.error)return new xe({lpAmount:Pt.utils.toBigInt(T.result).toString(),rewardDebt:Pt.utils.toBigInt(h.result).toString()});throw new Error("Batched failed")}async getUserBalanceInfoPerProperty(r,a){let o=(await this.getPoolContract(a.poolAddress).methods.userRewardDebt(r).call()).toString(),u=(await this.getPoolContract(a.poolAddress).methods.balanceOf(r).call()).toString();return new xe({lpAmount:u,rewardDebt:o})}async getPoolInfoByBatch(r){let a=new this.web3.eth.BatchRequest,o=this.getPoolContract(r.poolAddress),u=o.methods.a().encodeABI(),m=o.methods.d().encodeABI(),p=o.methods.tokenBalance().encodeABI(),h=o.methods.vUsdBalance().encodeABI(),T=o.methods.totalSupply().encodeABI(),S=o.methods.accRewardPerShareP().encodeABI();a.add({method:"eth_call",params:[{to:r.poolAddress,data:u},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:m},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:p},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:h},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:T},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:S},"latest"]});let[P,x,B,I,F,D]=await a.execute();if(P&&x&&B&&I&&F&&D&&!P.error&&!x.error&&!B.error&&!I.error&&!F.error&&!D.error){let O=Pt.utils.toBigInt(B.result).toString(),W=Pt.utils.toBigInt(I.result).toString(),E=ke({tokenBalance:O,vUsdBalance:W});return{aValue:Pt.utils.toBigInt(P.result).toString(),dValue:Pt.utils.toBigInt(x.result).toString(),tokenBalance:O,vUsdBalance:W,totalLpAmount:Pt.utils.toBigInt(F.result).toString(),accRewardPerShareP:Pt.utils.toBigInt(D.result).toString(),p:this.P,imbalance:E}}throw new Error("Batched failed")}async getPoolInfoPerProperty(r){let a=this.getPoolContract(r.poolAddress),o=(await a.methods.a().call()).toString(),u=(await a.methods.d().call()).toString(),m=(await a.methods.tokenBalance().call()).toString(),p=(await a.methods.vUsdBalance().call()).toString(),h=(await a.methods.totalSupply().call()).toString(),T=(await a.methods.accRewardPerShareP().call()).toString(),S=ke({tokenBalance:m,vUsdBalance:p});return{aValue:o,dValue:u,tokenBalance:m,vUsdBalance:p,totalLpAmount:h,accRewardPerShareP:T,p:this.P,imbalance:S}}async buildRawTransactionDeposit(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.deposit(r.amount).encodeABI()})}async buildRawTransactionWithdraw(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.withdraw(r.amount).encodeABI()})}async buildRawTransactionClaimRewards(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.claimRewards().encodeABI()})}buildTxParams(r){return{from:r.accountAddress,to:r.token.poolAddress,value:"0"}}getPoolContract(r){return new this.web3.eth.Contract(Sn.abi,r)}};g();y();f();var or=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o}async approve(i,r){if(r){let a=i,o=r;return this.tokenService.buildRawTransactionApprove({...o,spender:o.token.poolAddress},a)}else{let a=i;return this.tokenService.buildRawTransactionApprove({...a,spender:a.token.poolAddress})}}async deposit(i,r){return q(i.amount),ee("amount",i.amount,i.token.decimals),i.amount=Q(i.amount,i.token.decimals).toFixed(),Xt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionDeposit(i)}async withdraw(i,r){return q(i.amount),ee("amount",i.amount,i.token.decimals),i.amount=Q(i.amount,3).toFixed(),Xt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionWithdraw(i)}async claimRewards(i,r){return Xt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionClaimRewards(i)}};g();y();f();import{AnchorProvider as So,BN as Za,Program as Po,Spl as wo,web3 as Co}from"@project-serum/anchor";import{Connection as Bo,PublicKey as wt}from"@solana/web3.js";var cr=class extends Ge{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";P=48;async getUserBalanceInfo(r,a){let o=this.buildAnchorProvider(r),u=this.getBridge(a.bridgeAddress,o),m=new wt(a.poolAddress),p=await u.account.pool.fetch(m);try{let h=await Jr(new wt(r),p.mint,u.programId),{lpAmount:T,rewardDebt:S}=await u.account.userDeposit.fetch(h);return new xe({lpAmount:T.toString(),rewardDebt:S.toString()})}catch{return new xe({lpAmount:"0",rewardDebt:"0"})}}async getPoolInfoFromChain(r){let a=this.buildAnchorProvider(r.bridgeAddress),o=await this.getBridge(r.bridgeAddress,a).account.pool.fetch(r.poolAddress),u=o.vUsdBalance.toString(),m=o.tokenBalance.toString(),p=ke({tokenBalance:m,vUsdBalance:u});return{dValue:o.d.toString(),aValue:o.a.toString(),totalLpAmount:o.totalLpAmount.toString(),vUsdBalance:u,tokenBalance:m,accRewardPerShareP:o.accRewardPerShareP.toString(),p:this.P,imbalance:p}}async buildRawTransactionDeposit(r){let{bridge:a,accounts:o,preInstructions:u}=await this.prepareDataForTransaction(r),m=await a.methods.deposit(new Za(r.amount)).accounts(o).preInstructions(u).transaction();return m.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,m.feePayer=new wt(r.accountAddress),await $t(m,r.txFeeParams,this.solanaRpcUrl),m}async buildRawTransactionWithdraw(r){let{bridge:a,accounts:o,preInstructions:u}=await this.prepareDataForTransaction(r),m=await a.methods.withdraw(new Za(r.amount)).accounts(o).preInstructions(u).transaction();return m.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,m.feePayer=new wt(r.accountAddress),await $t(m,r.txFeeParams,this.solanaRpcUrl),m}async buildRawTransactionClaimRewards(r){let{bridge:a,accounts:o,preInstructions:u}=await this.prepareDataForTransaction(r),m=await a.methods.claimRewards().accounts(o).preInstructions(u).transaction();return m.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,m.feePayer=new wt(r.accountAddress),await $t(m,r.txFeeParams,this.solanaRpcUrl),m}async prepareDataForTransaction(r){let a=this.buildAnchorProvider(r.accountAddress),o=this.getBridge(r.token.bridgeAddress,a),{accounts:u,preInstructions:m}=await this._getLPTransactionData(o,r.token.poolAddress,r.accountAddress,a);return{bridge:o,accounts:u,preInstructions:m}}getBridge(r,a){return new Po(yn,r,a)}buildAnchorProvider(r){let a=new Bo(this.solanaRpcUrl,"confirmed"),o=new wt(r);return new So(a,{publicKey:o},{preflightCommitment:"confirmed",commitment:"confirmed"})}async _getLPTransactionData(r,a,o,u){let m=new wt(o),p=await ft(r.programId),h=await jt(r.programId),T=new wt(a),P=(await r.account.pool.fetch(T)).mint,x=await Qe(m,P),B=await Zt(P,r.programId),I=await Jr(m,P,r.programId),F=[Co.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await _t(x,u)}catch{let E=await wo.associatedToken(u).methods.create().accounts({mint:P,owner:m,associatedAccount:x}).instruction();F.push(E)}try{await r.account.userDeposit.fetch(I)}catch{let W=await r.methods.initDepositAccount().accounts({mint:P,user:m,userDeposit:I}).instruction();F.push(W)}return{accounts:{mint:P,user:m,config:p,pool:T,bridgeAuthority:h,userDeposit:I,userToken:x,bridgeToken:B},preInstructions:F}}};g();y();f();import{contract as sk}from"@stellar/stellar-sdk";g();y();f();import{contract as t}from"@stellar/stellar-sdk";var Io=t.Spec,Ro=t.Client;var Ar=class extends Ro{constructor(r){super(new Io(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABwAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAZicmlkZ2UAAAAAABMAAAAAAAAAAWEAAAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAADGZlZV9zaGFyZV9icAAAAAoAAAAAAAAAFGJhbGFuY2VfcmF0aW9fbWluX2JwAAAACgAAAAAAAAASYWRtaW5fZmVlX3NoYXJlX2JwAAAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAHZGVwb3NpdAAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAId2l0aGRyYXcAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAACWFtb3VudF9scAAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3dhcF90b192X3VzZAAAAAAAAAMAAAAAAAAABHVzZXIAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9mcm9tX3ZfdXNkAAAAAAQAAAAAAAAABHVzZXIAAAATAAAAAAAAAAt2dXNkX2Ftb3VudAAAAAAKAAAAAAAAABJyZWNlaXZlX2Ftb3VudF9taW4AAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAANY2xhaW1fcmV3YXJkcwAAAAAAAAEAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAdgYWRtaW5gAAAAAA1zZXRfZmVlX3NoYXJlAAAAAAAAAQAAAAAAAAAMZmVlX3NoYXJlX2JwAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAWYWRqdXN0X3RvdGFsX2xwX2Ftb3VudAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAYc2V0X2JhbGFuY2VfcmF0aW9fbWluX2JwAAAAAQAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAMc3RvcF9kZXBvc2l0AAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAANc3RhcnRfZGVwb3NpdAAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3RvcF93aXRoZHJhdwAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAOc3RhcnRfd2l0aGRyYXcAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc2V0X2JyaWRnZQAAAAAAAQAAAAAAAAAGYnJpZGdlAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAATc2V0X2FkbWluX2ZlZV9zaGFyZQAAAAABAAAAAAAAABJhZG1pbl9mZWVfc2hhcmVfYnAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAPY2xhaW1fYWRtaW5fZmVlAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAZgdmlld2AAAAAAAA5wZW5kaW5nX3Jld2FyZAAAAAAAAQAAAAAAAAAEdXNlcgAAABMAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAAIZ2V0X3Bvb2wAAAAAAAAAAQAAA+kAAAfQAAAABFBvb2wAAAAD","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAKZ2V0X2JyaWRnZQAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAQZ2V0X3VzZXJfZGVwb3NpdAAAAAEAAAAAAAAABHVzZXIAAAATAAAAAQAAA+kAAAfQAAAAC1VzZXJEZXBvc2l0AAAAAAM=","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAD1N3YXBwZWRGcm9tVlVzZAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAAC3Z1c2RfYW1vdW50AAAAAAo=","AAAAAQAAAAAAAAAAAAAADVN3YXBwZWRUb1ZVc2QAAAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAALdnVzZF9hbW91bnQAAAAACg==","AAAAAQAAAAAAAAAAAAAAB0RlcG9zaXQAAAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAACFdpdGhkcmF3AAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAADlJld2FyZHNDbGFpbWVkAAAAAAACAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAABHVzZXIAAAAT","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAQAAAAEAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAEAAAAT","AAAAAQAAAAAAAAAAAAAABFBvb2wAAAAPAAAAAAAAAAFhAAAAAAAACgAAAAAAAAAWYWNjX3Jld2FyZF9wZXJfc2hhcmVfcAAAAAAACgAAAAAAAAAQYWRtaW5fZmVlX2Ftb3VudAAAAAoAAAAAAAAAEmFkbWluX2ZlZV9zaGFyZV9icAAAAAAACgAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAAAAAAtjYW5fZGVwb3NpdAAAAAABAAAAAAAAAAxjYW5fd2l0aGRyYXcAAAABAAAAAAAAAAFkAAAAAAAACgAAAAAAAAAIZGVjaW1hbHMAAAAEAAAAAAAAAAxmZWVfc2hhcmVfYnAAAAAKAAAAAAAAAAhyZXNlcnZlcwAAAAoAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAANdG9rZW5fYmFsYW5jZQAAAAAAAAoAAAAAAAAAD3RvdGFsX2xwX2Ftb3VudAAAAAAKAAAAAAAAAA12X3VzZF9iYWxhbmNlAAAAAAAACg==","AAAAAQAAAAAAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAIAAAAAAAAACWxwX2Ftb3VudAAAAAAAAAoAAAAAAAAAC3Jld2FyZF9kZWJ0AAAAAAo=","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),r);this.options=r}fromJSON={initialize:this.txFromJSON,deposit:this.txFromJSON,withdraw:this.txFromJSON,swap_to_v_usd:this.txFromJSON,swap_from_v_usd:this.txFromJSON,claim_rewards:this.txFromJSON,set_fee_share:this.txFromJSON,adjust_total_lp_amount:this.txFromJSON,set_balance_ratio_min_bp:this.txFromJSON,stop_deposit:this.txFromJSON,start_deposit:this.txFromJSON,stop_withdraw:this.txFromJSON,start_withdraw:this.txFromJSON,set_stop_authority:this.txFromJSON,set_bridge:this.txFromJSON,set_admin:this.txFromJSON,set_admin_fee_share:this.txFromJSON,claim_admin_fee:this.txFromJSON,pending_reward:this.txFromJSON,get_pool:this.txFromJSON,get_admin:this.txFromJSON,get_stop_authority:this.txFromJSON,get_bridge:this.txFromJSON,get_user_deposit:this.txFromJSON,upgrade:this.txFromJSON}};g();y();f();import{contract as Eh,rpc as vo}from"@stellar/stellar-sdk";var _a=vo.Api;function Yt(s){let{simulation:i,options:r}=s;if(!i)throw new Error("Soroban assembled transaction does not have simulation");if(_a.isSimulationSuccess(i))return i.result==null?void 0:r.parseResultXdr(i.result.retval);throw new Error(i.error)}function Kt(s){let{simulation:i}=s;if(!i)throw new Error("Soroban assembled transaction does not have simulation");return _a.isSimulationError(i)}var ur=class extends Ge{constructor(r,a,o){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=o}chainType="SRB";P=48;async getUserBalanceInfo(r,a){let u=await this.getContract(a.poolAddress).get_user_deposit({user:r});if(Kt(u))throw new M;let m=Yt(u);if(!m)throw new M;let p=m.unwrap();return new xe({lpAmount:p.lp_amount.toString(),rewardDebt:p.reward_debt.toString()})}async getPoolInfoFromChain(r){let o=await this.getContract(r.poolAddress).get_pool();if(Kt(o))throw new M;let u=Yt(o);if(!u)throw new M;let m=u.unwrap();return{aValue:m.a.toString(),accRewardPerShareP:m.acc_reward_per_share_p.toString(),dValue:m.d.toString(),tokenBalance:m.token_balance.toString(),p:this.P,totalLpAmount:m.total_lp_amount.toString(),vUsdBalance:m.v_usd_balance.toString(),imbalance:ke({tokenBalance:m.token_balance.toString(),vUsdBalance:m.v_usd_balance.toString()})}}async buildRawTransactionDeposit(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).deposit({sender:r.accountAddress,amount:BigInt(r.amount)})).toXDR()}async buildRawTransactionWithdraw(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).withdraw({sender:r.accountAddress,amount_lp:BigInt(r.amount)})).toXDR()}async buildRawTransactionClaimRewards(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).claim_rewards({sender:r.accountAddress})).toXDR()}getContract(r,a){let o={publicKey:a,contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new Ar(o)}};g();y();f();import{SuiClient as No}from"@mysten/sui/client";import{Transaction as Tr}from"@mysten/sui/transactions";var Qt=He(Tt());g();y();f();ye();g();y();f();ye();import{bcs as $a}from"@mysten/sui/bcs";import{fromB64 as ko}from"@mysten/sui/utils";function mr(s){return s=U(s),s.startsWith(`${St}::balance::Balance<`)}var Pe=class s{__StructClass=!0;static get $typeName(){return`${St}::balance::Balance`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;value;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.value=r.value}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return $a.struct("Balance",{value:$a.u64()})}static fromFields(i,r){return s.reified(i).new({value:Y("u64",r.value)})}static fromFieldsWithTypes(i,r){if(!mr(r.type))throw new Error("not a Balance type");return ct(r,[i]),s.reified(i).new({value:L("u64",r.fields.value)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{value:this.value.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({value:X("u64",r.value)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(z(s.$typeName,_(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!mr(r.type))throw new Error(`object at ${r.fields.id} is not a Balance object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!mr(r.bcs.type))throw new Error("object at is not a Balance object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=U(a[0]),u=U(_(i));if(o!==U(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,ko(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching Balance object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!mr(o.data.bcs.type))throw new Error(`object at id ${a} is not a Balance object`);return s.fromSuiObjectData(r,o.data)}};var fi=He(Tt());g();y();f();ye();var pi=He(Tt());import{bcs as lr}from"@mysten/sui/bcs";import{fromB64 as xo}from"@mysten/sui/utils";function dr(s){return s=U(s),s.startsWith(`${pi.PKG_V1}::pool_rewards::PoolRewards<`)}var Nt=class s{__StructClass=!0;static get $typeName(){return`${pi.PKG_V1}::pool_rewards::PoolRewards`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;accRewardPerShareP;adminFeeShareBp;adminFee;rewards;lpSupply;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.accRewardPerShareP=r.accRewardPerShareP,this.adminFeeShareBp=r.adminFeeShareBp,this.adminFee=r.adminFee,this.rewards=r.rewards,this.lpSupply=r.lpSupply}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return lr.struct("PoolRewards",{acc_reward_per_share_p:lr.u128(),admin_fee_share_bp:lr.u64(),admin_fee:Pe.bcs,rewards:Pe.bcs,lp_supply:lr.u64()})}static fromFields(i,r){return s.reified(i).new({accRewardPerShareP:Y("u128",r.acc_reward_per_share_p),adminFeeShareBp:Y("u64",r.admin_fee_share_bp),adminFee:Y(Pe.reified(i),r.admin_fee),rewards:Y(Pe.reified(i),r.rewards),lpSupply:Y("u64",r.lp_supply)})}static fromFieldsWithTypes(i,r){if(!dr(r.type))throw new Error("not a PoolRewards type");return ct(r,[i]),s.reified(i).new({accRewardPerShareP:L("u128",r.fields.acc_reward_per_share_p),adminFeeShareBp:L("u64",r.fields.admin_fee_share_bp),adminFee:L(Pe.reified(i),r.fields.admin_fee),rewards:L(Pe.reified(i),r.fields.rewards),lpSupply:L("u64",r.fields.lp_supply)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{accRewardPerShareP:this.accRewardPerShareP.toString(),adminFeeShareBp:this.adminFeeShareBp.toString(),adminFee:this.adminFee.toJSONField(),rewards:this.rewards.toJSONField(),lpSupply:this.lpSupply.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({accRewardPerShareP:X("u128",r.accRewardPerShareP),adminFeeShareBp:X("u64",r.adminFeeShareBp),adminFee:X(Pe.reified(i),r.adminFee),rewards:X(Pe.reified(i),r.rewards),lpSupply:X("u64",r.lpSupply)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(z(s.$typeName,_(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!dr(r.type))throw new Error(`object at ${r.fields.id} is not a PoolRewards object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!dr(r.bcs.type))throw new Error("object at is not a PoolRewards object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=U(a[0]),u=U(_(i));if(o!==U(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,xo(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching PoolRewards object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!dr(o.data.bcs.type))throw new Error(`object at id ${a} is not a PoolRewards object`);return s.fromSuiObjectData(r,o.data)}};g();y();f();ye();var gi=He(Tt());import{bcs as Ht}from"@mysten/sui/bcs";import{fromB64 as Fo}from"@mysten/sui/utils";function pr(s){return s=U(s),s.startsWith(`${gi.PKG_V1}::pool_state::PoolState<`)}var Wt=class s{__StructClass=!0;static get $typeName(){return`${gi.PKG_V1}::pool_state::PoolState`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;tokenBalance;vusdBalance;d;a;balanceRatioMinBp;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.tokenBalance=r.tokenBalance,this.vusdBalance=r.vusdBalance,this.d=r.d,this.a=r.a,this.balanceRatioMinBp=r.balanceRatioMinBp}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return Ht.struct("PoolState",{token_balance:Ht.u64(),vusd_balance:Ht.u64(),d:Ht.u64(),a:Ht.u64(),balance_ratio_min_bp:Ht.u64()})}static fromFields(i,r){return s.reified(i).new({tokenBalance:Y("u64",r.token_balance),vusdBalance:Y("u64",r.vusd_balance),d:Y("u64",r.d),a:Y("u64",r.a),balanceRatioMinBp:Y("u64",r.balance_ratio_min_bp)})}static fromFieldsWithTypes(i,r){if(!pr(r.type))throw new Error("not a PoolState type");return ct(r,[i]),s.reified(i).new({tokenBalance:L("u64",r.fields.token_balance),vusdBalance:L("u64",r.fields.vusd_balance),d:L("u64",r.fields.d),a:L("u64",r.fields.a),balanceRatioMinBp:L("u64",r.fields.balance_ratio_min_bp)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{tokenBalance:this.tokenBalance.toString(),vusdBalance:this.vusdBalance.toString(),d:this.d.toString(),a:this.a.toString(),balanceRatioMinBp:this.balanceRatioMinBp.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({tokenBalance:X("u64",r.tokenBalance),vusdBalance:X("u64",r.vusdBalance),d:X("u64",r.d),a:X("u64",r.a),balanceRatioMinBp:X("u64",r.balanceRatioMinBp)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(z(s.$typeName,_(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!pr(r.type))throw new Error(`object at ${r.fields.id} is not a PoolState object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!pr(r.bcs.type))throw new Error("object at is not a PoolState object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=U(a[0]),u=U(_(i));if(o!==U(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Fo(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching PoolState object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!pr(o.data.bcs.type))throw new Error(`object at id ${a} is not a PoolState object`);return s.fromSuiObjectData(r,o.data)}};import{bcs as wn}from"@mysten/sui/bcs";import{fromB64 as Mo}from"@mysten/sui/utils";function gr(s){return s=U(s),s.startsWith(`${fi.PKG_V1}::pool::Pool<`)}var fr=class s{__StructClass=!0;static get $typeName(){return`${fi.PKG_V1}::pool::Pool`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;id;state;rewards;feeShareBp;canDeposit;canWithdraw;decimals;balance;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.id=r.id,this.state=r.state,this.rewards=r.rewards,this.feeShareBp=r.feeShareBp,this.canDeposit=r.canDeposit,this.canWithdraw=r.canWithdraw,this.decimals=r.decimals,this.balance=r.balance}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return wn.struct("Pool",{id:Ye.bcs,state:Wt.bcs,rewards:Nt.bcs,fee_share_bp:wn.u64(),can_deposit:wn.bool(),can_withdraw:wn.bool(),decimals:wn.u8(),balance:Pe.bcs})}static fromFields(i,r){return s.reified(i).new({id:Y(Ye.reified(),r.id),state:Y(Wt.reified(i),r.state),rewards:Y(Nt.reified(i),r.rewards),feeShareBp:Y("u64",r.fee_share_bp),canDeposit:Y("bool",r.can_deposit),canWithdraw:Y("bool",r.can_withdraw),decimals:Y("u8",r.decimals),balance:Y(Pe.reified(i),r.balance)})}static fromFieldsWithTypes(i,r){if(!gr(r.type))throw new Error("not a Pool type");return ct(r,[i]),s.reified(i).new({id:L(Ye.reified(),r.fields.id),state:L(Wt.reified(i),r.fields.state),rewards:L(Nt.reified(i),r.fields.rewards),feeShareBp:L("u64",r.fields.fee_share_bp),canDeposit:L("bool",r.fields.can_deposit),canWithdraw:L("bool",r.fields.can_withdraw),decimals:L("u8",r.fields.decimals),balance:L(Pe.reified(i),r.fields.balance)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{id:this.id,state:this.state.toJSONField(),rewards:this.rewards.toJSONField(),feeShareBp:this.feeShareBp.toString(),canDeposit:this.canDeposit,canWithdraw:this.canWithdraw,decimals:this.decimals,balance:this.balance.toJSONField()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({id:X(Ye.reified(),r.id),state:X(Wt.reified(i),r.state),rewards:X(Nt.reified(i),r.rewards),feeShareBp:X("u64",r.feeShareBp),canDeposit:X("bool",r.canDeposit),canWithdraw:X("bool",r.canWithdraw),decimals:X("u8",r.decimals),balance:X(Pe.reified(i),r.balance)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(z(s.$typeName,_(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!gr(r.type))throw new Error(`object at ${r.fields.id} is not a Pool object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!gr(r.bcs.type))throw new Error("object at is not a Pool object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=U(a[0]),u=U(_(i));if(o!==U(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Mo(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching Pool object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!gr(o.data.bcs.type))throw new Error(`object at id ${a} is not a Pool object`);return s.fromSuiObjectData(r,o.data)}};g();y();f();ye();var hi=He(Tt());import{bcs as yi}from"@mysten/sui/bcs";import{fromB64 as Oo}from"@mysten/sui/utils";function yr(s){return s=U(s),s.startsWith(`${hi.PKG_V1}::user_deposit::UserDeposit<`)}var hr=class s{__StructClass=!0;static get $typeName(){return`${hi.PKG_V1}::user_deposit::UserDeposit`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;id;lpAmount;rewardDebt;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.id=r.id,this.lpAmount=r.lpAmount,this.rewardDebt=r.rewardDebt}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return yi.struct("UserDeposit",{id:Ye.bcs,lp_amount:yi.u64(),reward_debt:yi.u64()})}static fromFields(i,r){return s.reified(i).new({id:Y(Ye.reified(),r.id),lpAmount:Y("u64",r.lp_amount),rewardDebt:Y("u64",r.reward_debt)})}static fromFieldsWithTypes(i,r){if(!yr(r.type))throw new Error("not a UserDeposit type");return ct(r,[i]),s.reified(i).new({id:L(Ye.reified(),r.fields.id),lpAmount:L("u64",r.fields.lp_amount),rewardDebt:L("u64",r.fields.reward_debt)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{id:this.id,lpAmount:this.lpAmount.toString(),rewardDebt:this.rewardDebt.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({id:X(Ye.reified(),r.id),lpAmount:X("u64",r.lpAmount),rewardDebt:X("u64",r.rewardDebt)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(z(s.$typeName,_(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!yr(r.type))throw new Error(`object at ${r.fields.id} is not a UserDeposit object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!yr(r.bcs.type))throw new Error("object at is not a UserDeposit object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=U(a[0]),u=U(_(i));if(o!==U(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Oo(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching UserDeposit object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!yr(o.data.bcs.type))throw new Error(`object at id ${a} is not a UserDeposit object`);return s.fromSuiObjectData(r,o.data)}};g();y();f();function La(s,i,r){if(i.length===0||!i[0])return[];let a=i[0],o=s.reduce((p,h)=>p+BigInt(h),BigInt(0)),u=BigInt(a.balance),m=[];for(let p of i.slice(1)){if(u>o)return Ja(r,a,m,s);u+=BigInt(p.balance),m.push(p)}return u>=o?Ja(r,a,m,s):[]}function Ja(s,i,r,a){let o=a.map(u=>s.pure.u64(u));return r.length>0&&s.mergeCoins(i.coinObjectId,r.map(u=>u.coinObjectId)),s.splitCoins(i.coinObjectId,o)}g();y();f();var Do="0x0000000000000000000000000000000000000000000000000000000000000000";async function Xa(s,i,r){let a=await s.devInspectTransactionBlock({sender:Do,transactionBlock:i});if(a.effects.status.status!=="success")throw new Error(`inspectionResult failed. ${JSON.stringify(a,null,2)}`);let o=a.results?.pop()?.returnValues?.pop();if(!o)throw new Error(`Something with inspectionResult went wrong. ${JSON.stringify(a,null,2)}`);let[u,m]=o;return typeof r=="object"?r.fromBcs(Uint8Array.from(u)).toJSONField():Tn(r).parse(Uint8Array.from(u))}var br=class extends Ge{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.client=new No({url:r})}chainType="SUI";client;async getUserBalanceInfo(r,a){if(!a.originTokenAddress)throw new M("SUI token must contain 'originTokenAddress'");let o=a.suiAddresses;if(!o)throw new M("SUI token must contain 'suiAddresses'");(0,Qt.setAddress)(o.bridgeAddress,o.bridgeAddressOrigin);let m=(await this.fetchDeposits(r,a.originTokenAddress)).reduce((p,h)=>{if(h.data)return p.lpAmount+=BigInt(h.data.content.fields.lp_amount),p.rewardDebt+=BigInt(h.data.content.fields.reward_debt),p;throw new M("Deposits fetch failed")},{lpAmount:BigInt(0),rewardDebt:BigInt(0)});return new xe({lpAmount:m.lpAmount.toString(),rewardDebt:m.rewardDebt.toString()})}async fetchDeposits(r,a){return await At(o=>this.client.getOwnedObjects({owner:r,filter:{StructType:hr.phantom(oe(a)).phantomType},options:{showContent:!0},cursor:o}))}async getPoolInfoFromChain(r){let a=r.suiAddresses;if(!a)throw new M("SUI token must contain 'suiAddresses'");if((0,Qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.originTokenAddress)throw new M("SUI token must contain 'originTokenAddress'");let o=48,u=new Tr;va(u,r.originTokenAddress,a.bridgeObjectAddress);let m=await Xa(this.client,u,fr.reified(oe(r.originTokenAddress))),p=m.state.tokenBalance,h=m.state.vusdBalance,T=ke({tokenBalance:p,vUsdBalance:h});return{dValue:m.state.d,aValue:m.state.a,totalLpAmount:m.rewards.lpSupply,vUsdBalance:h,tokenBalance:p,accRewardPerShareP:m.rewards.accRewardPerShareP,p:o,imbalance:T}}async buildRawTransactionDeposit(r){let a=r.token.suiAddresses;if(!a)throw new M("SUI token must contain 'suiAddresses'");if((0,Qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new M("SUI token must contain 'originTokenAddress'");let o=await At(P=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:P}));if(o.length===0||!o[0])throw new ut("No coins to deposit");let u=o[0],m=new Tr;m.setSender(r.accountAddress);let{depositObj:p,isNewDeposit:h}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,m),[T]=La([r.amount],o,m);if(!T)throw new ut("No coins to deposit");if(!r.token.originTokenAddress)throw new M("SUI token must contain 'originTokenAddress'");let S=Ba(m,r.token.originTokenAddress,{bridge:a.bridgeObjectAddress,userDeposit:p,coin:T});return m.mergeCoins(u.coinObjectId,[S]),h&&m.transferObjects([p],r.accountAddress),await m.toJSON({client:this.client})}async getDepositObject(r,a,o){let u=await this.fetchDeposits(r,a);if(u.length===0||!u[0]){let m=oe(a).phantomType;return{depositObj:ka(o,m),isNewDeposit:!0}}else{if(u[0].data?.objectId)return{depositObj:u[0].data.objectId,isNewDeposit:!1};throw new M("Something went wrong while deposit")}}async buildRawTransactionWithdraw(r){let a=r.token.suiAddresses;if(!a)throw new M("SUI token must contain 'suiAddresses'");if((0,Qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new M("SUI token must contain 'originTokenAddress'");let o=oe(r.token.originTokenAddress).phantomType,u=new Tr;u.setSender(r.accountAddress);let{depositObj:m,isNewDeposit:p}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,u);if(p)throw new ut("No deposit found");let h=Ia(u,o,{bridge:a.bridgeObjectAddress,userDeposit:m,amountLp:BigInt(r.amount)}),T=await At(S=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:S}));if(!h[0]||!h[1])throw new M("No rewards found");return T[0]?u.mergeCoins(T[0].coinObjectId,[h[0],h[1]]):(u.mergeCoins(h[0],[h[1]]),u.transferObjects([h[0]],r.accountAddress)),await u.toJSON({client:this.client})}async buildRawTransactionClaimRewards(r){let a=r.token.suiAddresses;if(!a)throw new M("SUI token must contain 'suiAddresses'");if((0,Qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new M("SUI token must contain 'originTokenAddress'");let o=oe(r.token.originTokenAddress).phantomType,u=new Tr;u.setSender(r.accountAddress);let{depositObj:m,isNewDeposit:p}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,u);if(p)throw new ut("No deposit found");let h=Ra(u,o,{bridge:a.bridgeObjectAddress,userDeposit:m}),T=await At(S=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:S}));return T[0]?u.mergeCoins(T[0].coinObjectId,[h]):u.transferObjects([h],r.accountAddress),await u.toJSON({client:this.client})}};g();y();f();import{Web3 as Sr}from"web3";import{encodeFunctionCall as Wo}from"web3-eth-abi";var Cn=class extends Ge{constructor(r,a,o){super();this.tronWeb=r;this.api=a;this.tronJsonRpc=o}chainType="TRX";P=52;async getUserBalanceInfo(r,a){let o;if(this.tronJsonRpc)try{o=await this.getUserBalanceInfoByBatch(this.tronJsonRpc,r,a)}catch{o=await this.getUserBalanceInfoPerProperty(r,a)}else o=await this.getUserBalanceInfoPerProperty(r,a);return o}async getUserBalanceInfoByBatch(r,a,o){let u=pn(o.poolAddress),m=pn(a),p=[{jsonrpc:"2.0",id:1,method:"eth_call",params:[{to:u,data:this.getFunctionAbi("userRewardDebt",m)},"latest"]},{jsonrpc:"2.0",id:2,method:"eth_call",params:[{to:u,data:this.getFunctionAbi("balanceOf",m)},"latest"]}],T=await(await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(p)})).json();if(Array.isArray(T)&&T.length===2){let S=P=>{let x=T.find(B=>B.id===P);if(!x||!x.result)throw new Error(`Missing or invalid result for id ${P}`);return Sr.utils.toBigInt(x.result).toString()};return new xe({lpAmount:Sr.utils.toBigInt(S(2)).toString(),rewardDebt:Sr.utils.toBigInt(S(1)).toString()})}throw new Error("Batched HTTP call failed")}async getUserBalanceInfoPerProperty(r,a){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(r);let o=this.getContract(a.poolAddress),u=(await o.methods.userRewardDebt(r).call()).toString(),m=(await o.methods.balanceOf(r).call()).toString();return new xe({lpAmount:m,rewardDebt:u})}async getPoolInfoFromChain(r){let a;if(this.tronJsonRpc)try{a=await this.getPoolInfoByBatch(this.tronJsonRpc,r)}catch{a=await this.getPoolInfoPerProperty(r)}else a=await this.getPoolInfoPerProperty(r);return a}async getPoolInfoByBatch(r,a){let o=pn(a.poolAddress),u=[{jsonrpc:"2.0",id:1,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("a")},"latest"]},{jsonrpc:"2.0",id:2,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("d")},"latest"]},{jsonrpc:"2.0",id:3,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("tokenBalance")},"latest"]},{jsonrpc:"2.0",id:4,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("vUsdBalance")},"latest"]},{jsonrpc:"2.0",id:5,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("totalSupply")},"latest"]},{jsonrpc:"2.0",id:6,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("accRewardPerShareP")},"latest"]}],p=await(await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)})).json();if(Array.isArray(p)&&p.length===6){let h=x=>{let B=p.find(I=>I.id===x);if(!B||!B.result)throw new Error(`Missing or invalid result for id ${x}`);return Sr.utils.toBigInt(B.result).toString()},T=h(3),S=h(4),P=ke({tokenBalance:T,vUsdBalance:S});return{aValue:h(1),dValue:h(2),tokenBalance:T,vUsdBalance:S,totalLpAmount:h(5),accRewardPerShareP:h(6),p:this.P,imbalance:P}}throw new Error("Batched pool info call failed")}async getPoolInfoPerProperty(r){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(r.poolAddress);let a=this.getContract(r.poolAddress),[o,u,m,p,h,T]=await Promise.all([a.methods.a().call(),a.methods.d().call(),a.methods.tokenBalance().call(),a.methods.vUsdBalance().call(),a.methods.totalSupply().call(),a.methods.accRewardPerShareP().call()]),S=m.toString(),P=p.toString(),x=ke({tokenBalance:S,vUsdBalance:P});return{aValue:o.toString(),dValue:u.toString(),tokenBalance:S,vUsdBalance:P,totalLpAmount:h.toString(),accRewardPerShareP:T.toString(),p:this.P,imbalance:x}}buildRawTransactionDeposit(r){let{amount:a,accountAddress:o}=r,u=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.poolAddress,"deposit(uint256)",u,"0",o)}buildRawTransactionWithdraw(r){let{amount:a,accountAddress:o}=r,u=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.poolAddress,"withdraw(uint256)",u,"0",o)}buildRawTransactionClaimRewards(r){let{accountAddress:a}=r,o=[];return this.buildRawTransaction(r.token.poolAddress,"claimRewards()",o,"0",a)}async buildRawTransaction(r,a,o,u,m){let p=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+u},o,m);if(!p?.result?.result)throw new M("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}getContract(r){return this.tronWeb.contract(Sn.abi,r)}getFunctionAbi(r,...a){let o=Sn.abi.find(u=>u.type==="function"&&"name"in u&&u.name===r);if(!o)throw new Error(`${r} method not found in Pool ABI`);return Wo(o,a)}};var Pr=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o;this.rawTxBuilder=new or(i,r,this.params,o);let u=a.cachePoolInfoChainSec>0?a.cachePoolInfoChainSec*1e3:20*1e3;this.cache=new Go({defaultTtl:u})}rawTxBuilder;cache;async getAllowance(i,r){if(r){let a=i,o=r;return await this.tokenService.getAllowance({...o,spender:o.token.poolAddress},a)}else{let a=i;return await this.tokenService.getAllowance({...a,spender:a.token.poolAddress})}}async checkAllowance(i,r){if(r){let a=i,o=r;return this.tokenService.checkAllowance({...o,spender:o.token.poolAddress},a)}else{let a=i;return this.tokenService.checkAllowance({...a,spender:a.token.poolAddress})}}async approve(i,r){return this.tokenService.approve(i,{...r,spender:r.token.poolAddress})}async getAmountToBeDeposited(i,r,a){q(i),ee("amount",i,r.decimals);let o=await this.getPoolInfoFromChain(r,a),{vUsdBalance:u,tokenBalance:m,aValue:p,dValue:h}=o,T=Va(i,p,h,m,u);return J(T,3).toFixed()}async getAmountToBeWithdrawn(i,r,a,o){q(i),ee("amount",i,a.decimals);let u=await this.getPoolInfoFromChain(a,o),m=ja(i),p=Ne(m,a.decimals),T=(await this.getUserBalanceInfo(r,a,o)).earned(u)||"0",S=Eo(p).plus(T).toFixed();return J(S,a.decimals).toFixed()}async getUserBalanceInfo(i,r,a){return Xt(r.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,a).getUserBalanceInfo(i,r)}async getPoolInfoFromChain(i,r){let a={chainSymbol:i.chainSymbol,poolAddress:i.poolAddress},o=this.cache.get(a);if(o)return o;{let u=await Xt(i.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).getPoolInfoFromChain(i);return this.cache.put(a,u),this.api.cachePut({chainSymbol:i.chainSymbol,poolAddress:i.poolAddress},u),u}}};function Xt(s,i,r,a,o){switch(H.getChainProperty(s).chainType){case"EVM":{if(o)return new Pn(o,i);{let u=r.getNodeRpcUrl(s),m=new Zo(u);return m.defaultReturnFormat={number:jo.STR,bytes:Vo.HEX},new Pn(m,i)}}case"TRX":{let u=r.getNodeRpcUrl(s),m=a.tronJsonRpc;if(o)return new Cn(o,i,m);{let p=new Uo({fullHost:u});return new Cn(p,i,m)}}case"SOLANA":{let u=r.getNodeRpcUrl(s);return new cr(u,i)}case"SRB":return new ur(r,a,i);case"SUI":return new br(r.getNodeRpcUrl(s),i)}}g();y();f();g();y();f();import{Big as me}from"big.js";function Ha(s,i,r){let a=_o(s,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo),o=$o(a.amountIncludingCommissionInSystemPrecision,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:o}}function Qa(s,i,r){let a=Jo(s,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo),o=Lo(a.amountIncludingCommissionInSystemPrecision,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:o}}function _o(s,{feeShare:i,decimals:r},a){let o=me(s),u=o.times(i),m=o.minus(u);return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInSystemPrecision:Ya(xt(m,r),a),amountExcludingCommissionInSystemPrecision:Ya(xt(o,r),a)}}function Ya(s,i){if(s.eq(0))return"0";let r=me(i.tokenBalance).plus(s),a=at(r.toFixed(),i.aValue,i.dValue);return me(i.vUsdBalance).minus(a).round().toFixed()}function $o(s,{feeShare:i,decimals:r},a){if(me(s).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let u=me(s).plus(a.vUsdBalance),m=at(u,a.aValue,a.dValue),p=Ne(me(a.tokenBalance).minus(m),r),h=me(p).times(i),T=me(p).minus(h).round();return{bridgeFeeInTokenPrecision:h.round().toFixed(),amountIncludingCommissionInTokenPrecision:T.toFixed(),amountExcludingCommissionInTokenPrecision:p.toFixed()}}function Jo(s,{feeShare:i,decimals:r},a){let o=me(i).div(me(1).minus(i)),u=me(s).times(o),m=me(s).plus(u);return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInSystemPrecision:Ka(xt(m,r),a),amountExcludingCommissionInSystemPrecision:Ka(xt(s,r),a)}}function Ka(s,i){let r=me(i.tokenBalance).minus(s),a=at(r.toFixed(),i.aValue,i.dValue);return me(a).minus(i.vUsdBalance).round().toFixed()}function Lo(s,{feeShare:i,decimals:r},a){if(me(s).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let o=me(a.vUsdBalance).minus(s),u=at(o.toFixed(),a.aValue,a.dValue),m=me(u).minus(a.tokenBalance),p=Ne(m.toFixed(),r),h=me(i).div(me(1).minus(i)),T=me(p).times(h),S=me(p).plus(T);return{bridgeFeeInTokenPrecision:T.round().toFixed(),amountIncludingCommissionInTokenPrecision:S.round().toFixed(),amountExcludingCommissionInTokenPrecision:p.toFixed()}}g();y();f();import{Big as Ct}from"big.js";function za(s,i,r,a,o){let u=it(s,i,r),m=Ne(u,i.decimals),p=dn(u,a,o),h=Ct(s).times(i.feeShare),T=Ct(p).div(Ct(1).minus(a.feeShare)).minus(p);return{sourceLPSwap:{fee:J(h,i.decimals).neg().round(i.decimals,Ct.roundUp).toFixed(),swap:J(Ct(s).minus(m).minus(h),i.decimals).neg().round(i.decimals,Ct.roundUp).toFixed()},destLPSwap:{fee:J(T,a.decimals).neg().round(a.decimals,Ct.roundUp).toFixed(),swap:J(Ne(u,a.decimals).minus(p).minus(T),a.decimals).neg().round(a.decimals,Ct.roundUp).toFixed()}}}g();y();f();g();y();f();g();y();f();g();y();f();import zo from"axios";g();y();f();var qa="3.23.1-alpha.1";g();y();f();function es(s){return Object.entries(s).reduce((i,r)=>{let a=r[0],o=r[1],u=Qo(a,o);return u&&(i[a]=u),i},{})}function ts(s){let i={};for(let[r,a]of Object.entries(s)){let o=r;for(let u of a.tokens){let m=zt({chainSymbol:o,poolAddress:u.poolAddress}),p=ke(u.poolInfo);i[m]={...u.poolInfo,imbalance:p}}}return i}function Xo(s,i){let{name:r,...a}=s,{poolInfo:o,...u}=i;return{...u,...a,chainName:r}}function Yo(s){switch(s){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;case"cctpV2":return 4;case"oft":return 5}}function Ko(s){return Object.entries(s).reduce((i,[r,a])=>(i[r]=Ho(a),i),{})}function Ho(s){return Object.entries(s).reduce((i,[r,a])=>{let o=Yo(r);return o&&(i[o]=a),i},{})}function Qo(s,i){let r=H.getChainsProperties()[s];if(!r)return null;let a={...r,allbridgeChainId:i.chainId,bridgeAddress:i.bridgeAddress,oftBridgeAddress:i.oftBridgeAddress,transferTime:Ko(i.transferTime),txCostAmount:i.txCostAmount,confirmations:i.confirmations,suiAddresses:i.suiAddresses};return{...a,tokens:i.tokens.map(o=>Xo(a,o))}}function zt(s){return s.chainSymbol+"_"+s.poolAddress}function ns(s){let i=[];for(let[r,a]of Object.entries(s)){let o=r;for(let u of a.tokens)i.push({chainSymbol:o,poolAddress:u.poolAddress})}return i}function rs(s){let i={};for(let[r,a]of Object.entries(s)){let o=r;for(let[u,m]of Object.entries(a))m.imbalance=ke(m),i[zt({chainSymbol:o,poolAddress:u})]=m}return i}var qt=class{api;constructor(i){this.api=zo.create({baseURL:i.coreApiUrl,headers:{Accept:"application/json",...i.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+qa},params:i.coreApiQueryParams})}async getTokenInfo(){let{data:i}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:es(i),poolInfoMap:ts(i)}}async getPendingInfo(){let{data:i}=await this.api.get("/pending-info");return i}async getGasBalance(i,r){let{data:a}=await this.api.get(`/check/${i}/${r}`);return a}async getTransferStatus(i,r){let{data:a}=await this.api.get(`/chain/${i}/${r}`);return a}async getReceiveTransactionCost(i){if(i.messenger===5&&!i.sourceToken)throw new Dn("For OFT sourceToken required");let{data:r}=await this.api.post("/receive-fee",i,{headers:{"Content-Type":"application/json"}});return{exchangeRate:r.exchangeRate,fee:r.fee,sourceNativeTokenPrice:r.sourceNativeTokenPrice,adminFeeShareWithExtras:r.adminFeeShareWithExtras}}async getPoolInfoMap(i){let r=i instanceof Array?i:[i],{data:a}=await this.api.post("/pool-info",{pools:r},{headers:{"Content-Type":"application/json"}});return rs(a)}};g();y();f();import wr from"timed-cache";var Ti=20*1e3,qo=55*1e3,en=class{constructor(i){this.apiClient=i;this.tokenInfoCache=new wr({defaultTtl:qo}),this.receivedTransactionCache=new wr({defaultTtl:Ti}),this.pendingInfoCache=new wr({defaultTtl:Ti}),this.gasBalanceCache=new wr({defaultTtl:Ti})}tokenInfoCache;pendingInfoCache;gasBalanceCache;receivedTransactionCache;getTokenInfo(){let i="TOKEN_INFO_CACHE_KEY",r=this.tokenInfoCache.get(i);if(r)return r;let a=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(i,a),a}async getGasBalance(i,r){let a=`GAS_BALANCE_${i}_${r}`,o=this.gasBalanceCache.get(a);if(o)return o;let u=this.apiClient.getGasBalance(i,r);return this.gasBalanceCache.put(a,u),u}async getPendingInfo(){let i="PENDING_INFO_CACHE_KEY",r=this.pendingInfoCache.get(i);if(r)return r;let a=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(i,a),a}async getReceiveTransactionCost(i){let r=`RECEIVE_TX_COST_${i.sourceChainId}_${i.destinationChainId}_${i.messenger}${i.sourceToken?"_"+i.sourceToken:""}`,a=this.receivedTransactionCache.get(r);if(a)return a;let o=await this.apiClient.getReceiveTransactionCost(i);return this.receivedTransactionCache.put(r,o),o}async getTransferStatus(i,r){return this.apiClient.getTransferStatus(i,r)}async getPoolInfoMap(i){return this.apiClient.getPoolInfoMap(i)}};g();y();f();var tn=class{constructor(i){this.apiClient=i}async getChainDetailsMap(){return(await this.apiClient.getTokenInfo()).chainDetailsMap}async tokens(){let i=await this.getChainDetailsMap();return Object.values(i).flatMap(r=>r.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(i,r){return this.apiClient.getGasBalance(i,r)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(i,r){return await this.apiClient.getTransferStatus(i,r)}async getReceiveTransactionCost(i){return await this.apiClient.getReceiveTransactionCost(i)}async getPoolInfoMap(i){return await this.apiClient.getPoolInfoMap(i)}};g();y();f();var nn=class{constructor(i,r){this.client=i;this.isStaging=r.coreApiQueryParams?.staging==="true"}isStaging;async getChainDetailsMap(i){let r=await this.client.getChainDetailsMap(),a={};for(let o in r){let u=r[o];u&&(a[o]={...u,tokens:is(u.tokens,i,this.isStaging)})}return a}async tokens(i){return is(await this.client.tokens(),i,this.isStaging)}async getPendingInfo(){return this.client.getPendingInfo()}async getGasBalance(i,r){return this.client.getGasBalance(i,r)}async getTransferStatus(i,r){return await this.client.getTransferStatus(i,r)}async getReceiveTransactionCost(i){return await this.client.getReceiveTransactionCost(i)}cachePut(i,r){return this.client.cachePut(i,r)}getPoolInfoByKey(i){return this.client.getPoolInfoByKey(i)}refreshPoolInfo(i){return this.client.refreshPoolInfo(i)}};function is(s,i,r){return s.filter(a=>r?!0:a.flags[i]).map(ec)}function ec(s){let{flags:i,...r}=s;return r}g();y();f();import tc from"timed-cache";var nc=55*1e3,rn=class{constructor(i){this.client=i;this.poolInfoCache=new bi}poolInfoCache;async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(i,r){return this.client.getTransferStatus(i,r)}getReceiveTransactionCost(i){return this.client.getReceiveTransactionCost(i)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(i,r){return this.client.getGasBalance(i,r)}async getPoolInfoByKey(i){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let r=this.poolInfoCache.get(i);if(r)return r;{let a=await this.client.getPoolInfoMap(i);this.poolInfoCache.putAll(a);let o=a[zt(i)];if(o)return o;throw new M("Cannot find pool info for "+i.poolAddress+" on chain "+i.chainSymbol)}}async refreshPoolInfo(i){let r;if(i)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),r=await this.client.getPoolInfoMap(i);else{let a=await this.client.getChainDetailsMapAndPoolInfoMap();r=await this.client.getPoolInfoMap(ns(a.chainDetailsMap))}this.poolInfoCache.putAll(r)}cachePut(i,r){this.poolInfoCache.put(zt(i),r)}},bi=class{cache;constructor(){this.cache=new tc({defaultTtl:nc})}putAll(i){for(let[r,a]of Object.entries(i))this.cache.put(r,a)}putAllIfNotExists(i){for(let[r,a]of Object.entries(i))this.cache.get(r)||this.cache.put(r,a)}put(i,r){this.cache.put(i,r)}get(i){let r=zt(i);return this.cache.get(r)}};g();y();f();import{Big as lc}from"big.js";import{TronWeb as dc}from"tronweb";import{Web3 as pc}from"web3";g();y();f();g();y();f();var rc={abi:[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}]},Cr=rc;g();y();f();g();y();f();g();y();f();import{Big as as}from"big.js";var Ue=class{async checkAllowance(i){let r=await this.getAllowance(i);return as(r).gte(as(i.amount))}};var ic="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",ac="0xdac17f958d2ee523a2206206994597c13d831ec7",sc=1e5,Bn=class extends Ue{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";getAllowance(r){let a=r.token.tokenAddress,o=r.owner,u=r.spender;return this.getAllowanceByTokenAddress(a,o,u)}getAllowanceByTokenAddress(r,a,o){return this.getERC20Contract(r).methods.allowance(a,o).call()}async getTokenBalance(r){return await this.getERC20Contract(r.token.tokenAddress).methods.balanceOf(r.account).call()}async getNativeTokenBalance(r){return(await this.web3.eth.getBalance(r.account)).toString()}async approve(r){if(this.isUsdt(r.tokenAddress)&&await this.getAllowanceByTokenAddress(r.tokenAddress,r.owner,r.spender)!=="0"){let u=await this.buildRawTransactionApprove({...r,amount:"0"});await this.sendRawTransaction(u,r.chainSymbol)}let a=await this.buildRawTransactionApprove(r);return await this.sendRawTransaction(a,r.chainSymbol)}isUsdt(r){return r.toLowerCase()===ac}buildRawTransactionApprove(r){let{tokenAddress:a,spender:o,owner:u,amount:m}=r,h=this.getERC20Contract(a).methods.approve(o,m==null?ic:ir(m));return Promise.resolve({from:u,to:a,value:"0",data:h.encodeABI()})}async sendRawTransaction(r,a){let o=r,u={maxPriorityFeePerGas:void 0,maxFeePerGas:void 0};a==="POL"?o.gas=sc:o.gas=await this.web3.eth.estimateGas(r);let{transactionHash:m}=await this.web3.eth.sendTransaction({...o,...u});return{txId:m.toString()}}getERC20Contract(r){return new this.web3.eth.Contract(Cr.abi,r)}};g();y();f();import{AnchorProvider as oc}from"@project-serum/anchor";import{Connection as cc,PublicKey as Br}from"@solana/web3.js";var Ir=class extends Ue{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";approve(r){throw new de}buildRawTransactionApprove(r){throw new de}buildAnchorProvider(r){let a=new cc(this.solanaRpcUrl,"confirmed"),o=new Br(r);return new oc(a,{publicKey:o},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(r){throw new de}async getTokenBalance(r){let{account:a,token:o}=r;try{let u=await Qe(new Br(a),new Br(o.tokenAddress));return(await _t(u,this.buildAnchorProvider(a))).amount.toString()}catch(u){if(u instanceof Error)return u.message.startsWith("Account does not exist"),"0";throw u}}async getNativeTokenBalance(r){return(await this.buildAnchorProvider(r.account).connection.getBalance(new Br(r.account))).toString()}};g();y();f();import{Horizon as yC,NotFoundError as Ac}from"@stellar/stellar-sdk";var Rr=class extends Ue{constructor(r,a,o){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=o}chainType="SRB";getAllowance(){throw new de}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new M("OriginTokenAddress missing");let[a,o]=r.token.originTokenAddress.split(":"),u=new yC.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),m;try{m=await u.loadAccount(r.account)}catch(T){if(T instanceof Ac)return"0";throw T}let h=m.balances.find(T=>(T.asset_type==="credit_alphanum4"||T.asset_type==="credit_alphanum12")&&T.asset_code==a&&T.asset_issuer==o);return h?.balance?Q(h.balance,H.getChainDecimalsByType(H.getChainProperty(r.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(r){let m=(await new yC.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(r.account)).balances.find(p=>p.asset_type==="native");return m?.balance?Q(m.balance,H.getChainDecimalsByType(H.getChainProperty(r.chainSymbol).chainType)).toFixed():"0"}approve(){throw new de}buildRawTransactionApprove(){throw new de}};g();y();f();import{SuiClient as uc}from"@mysten/sui/client";var vr=class extends Ue{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.suiClient=new uc({url:this.suiRpcUrl})}chainType="SUI";suiClient;approve(r){throw new de}buildRawTransactionApprove(r){throw new de}getAllowance(r){throw new de}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new M("SUI token must contain 'originTokenAddress'");return(await this.suiClient.getBalance({owner:r.account,coinType:r.token.originTokenAddress})).totalBalance}async getNativeTokenBalance(r){let a=await At(o=>this.suiClient.getCoins({owner:r.account,cursor:o}));return a.length===0?"0":a.reduce((o,u)=>o+BigInt(u.balance),BigInt(0)).toString()}};g();y();f();var mc="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",In=class extends Ue{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async getAllowance(r){let{token:{tokenAddress:a},owner:o}=r;return(await(await this.getContract(a)).methods.allowance(o,r.spender).call()).toString()}async getTokenBalance(r){return(await(await this.getContract(r.token.tokenAddress)).balanceOf(r.account).call()).toString()}async getNativeTokenBalance(r){return(await this.tronWeb.trx.getBalance(r.account)).toString()}async approve(r){let a=await this.buildRawTransactionApprove(r);return await ar(this.tronWeb,a)}async buildRawTransactionApprove(r){let{tokenAddress:a,spender:o,owner:u,amount:m}=r,p=m==null?mc:ir(m),h=[{type:"address",value:o},{type:"uint256",value:p}];return this.buildRawTransaction(a,"approve(address,uint256)",h,"0",u)}getContract(r){return this.tronWeb.contract(Cr.abi,r)}async buildRawTransaction(r,a,o,u,m){let p=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+u},o,m);if(!p?.result?.result)throw new M("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}};var an=class{constructor(i,r,a){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a}async getAllowance(i,r){let a=await this.getChainTokenService(i.token.chainSymbol,i.owner,r).getAllowance(i);return J(a,i.token.decimals).toFixed()}async checkAllowance(i,r){return q(i.amount),ee("amount",i.amount,i.token.decimals),this.getChainTokenService(i.token.chainSymbol,i.owner,r).checkAllowance(this.prepareCheckAllowanceParams(i))}async approve(i,r){return r.amount&&(q(r.amount),ee("amount",r.amount,r.token.decimals)),this.getChainTokenService(r.token.chainSymbol,r.owner,i).approve(this.prepareApproveParams(r))}async buildRawTransactionApprove(i,r){return i.amount&&(q(i.amount),ee("amount",i.amount,i.token.decimals)),this.getChainTokenService(i.token.chainSymbol,i.owner,r).buildRawTransactionApprove(this.prepareApproveParams(i))}async getTokenBalance(i,r){let a=await this.getChainTokenService(i.token.chainSymbol,i.account,r).getTokenBalance(i);return i.token.decimals?J(a,i.token.decimals).toFixed():a}async getNativeTokenBalance(i,r){let a=await this.getChainTokenService(i.chainSymbol,i.account,r).getNativeTokenBalance(i);return{int:a,float:J(a,H.getChainDecimalsByType(H.getChainProperty(i.chainSymbol).chainType)).toFixed()}}getChainTokenService(i,r,a){switch(H.getChainProperty(i).chainType){case"EVM":{if(a)return new Bn(a,this.api);{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i);return new Bn(new pc(o),this.api)}}case"TRX":{if(a)return new In(a,this.api);{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i),u=new dc({fullHost:o});return u.setAddress(r),new In(u,this.api)}}case"SOLANA":{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i);return new Ir(o,this.api)}case"SRB":return new Rr(this.nodeRpcUrlsConfig,this.params,this.api);case"SUI":return new vr(this.nodeRpcUrlsConfig.getNodeRpcUrl(i),this.api)}}prepareCheckAllowanceParams(i){return{...i,amount:Q(i.amount,i.token.decimals)}}prepareApproveParams(i){return{tokenAddress:i.token.tokenAddress,owner:i.owner,spender:i.spender,chainSymbol:i.token.chainSymbol,amount:i.amount==null?void 0:lc(i.amount).toFixed()}}};var kr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r;let a=new qt(r),o=new en(a),u=new tn(o),m=new rn(u);this.api=new nn(m,r),this.tokenService=new an(this.api,i,r)}api;tokenService;buildRawTransactionApprove(i,r){return this.tokenService.buildRawTransactionApprove(i,r)}checkAllowance(i,r){return this.tokenService.checkAllowance(i,r)}getAllowance(i,r){return this.tokenService.getAllowance(i,r)}};g();y();f();import{Connection as gc,PublicKey as fc,TransactionMessage as yc}from"@solana/web3.js";var xr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r}async addMemoToTx(i,r){if(r.length>28)throw new M("InvalidArgumentException memo cannot be more than 28 characters");let a=new gc(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),o=await Mt(i,a),u=yc.decompile(i.message,{addressLookupTableAccounts:o}),m=u.instructions[u.instructions.length-1];if(!m?.keys)throw new M("Last instruction or its keys are invalid.");m.keys.push({pubkey:new fc(C.from(r)),isSigner:!1,isWritable:!1}),i.message=u.compileToV0Message(o)}};g();y();f();import{Asset as bc,BASE_FEE as Sc,contract as ok,Horizon as ss,Operation as Pc,Operation as wc,rpc as vn,TimeoutInfinite as Cc,TransactionBuilder as Si,TransactionBuilder as os}from"@stellar/stellar-sdk";g();y();f();import{contract as e}from"@stellar/stellar-sdk";var hc=e.Spec,Tc=e.Client;var Rn=class extends Tc{constructor(r){super(new hc(["AAAAAAAAAYlSZXR1cm5zIHRoZSBhbGxvd2FuY2UgZm9yIGBzcGVuZGVyYCB0byB0cmFuc2ZlciBmcm9tIGBmcm9tYC4KClRoZSBhbW91bnQgcmV0dXJuZWQgaXMgdGhlIGFtb3VudCB0aGF0IHNwZW5kZXIgaXMgYWxsb3dlZCB0byB0cmFuc2ZlcgpvdXQgb2YgZnJvbSdzIGJhbGFuY2UuIFdoZW4gdGhlIHNwZW5kZXIgdHJhbnNmZXJzIGFtb3VudHMsIHRoZSBhbGxvd2FuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQgdHJhbnNmZXJlZC4KCiMgQXJndW1lbnRzCgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHRvIGJlIGRyYXduIGZyb20uCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3Mgc3BlbmRpbmcgdGhlIHRva2VucyBoZWxkIGJ5IGBmcm9tYC4AAAAAAAAJYWxsb3dhbmNlAAAAAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAEAAAAL","AAAAAAAAAIlSZXR1cm5zIHRydWUgaWYgYGlkYCBpcyBhdXRob3JpemVkIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBmb3Igd2hpY2ggdG9rZW4gYXV0aG9yaXphdGlvbiBpcyBiZWluZyBjaGVja2VkLgAAAAAAAAphdXRob3JpemVkAAAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAB","AAAAAAAAA55TZXQgdGhlIGFsbG93YW5jZSBieSBgYW1vdW50YCBmb3IgYHNwZW5kZXJgIHRvIHRyYW5zZmVyL2J1cm4gZnJvbQpgZnJvbWAuCgpUaGUgYW1vdW50IHNldCBpcyB0aGUgYW1vdW50IHRoYXQgc3BlbmRlciBpcyBhcHByb3ZlZCB0byB0cmFuc2ZlciBvdXQgb2YKZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byB0cmFuc2ZlciBhbW91bnRzLCBhbmQKd2hlbiBhbiBhbW91bnQgaXMgdHJhbnNmZXJyZWQgdGhlIGFsbG93YW5jZSB3aWxsIGJlIHJlZHVjZWQgYnkgdGhlCmFtb3VudCB0cmFuc2ZlcmVkLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgdG8gYmUgZHJhd24gZnJvbS4KKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBiZWluZyBhdXRob3JpemVkIHRvIHNwZW5kIHRoZSB0b2tlbnMgaGVsZCBieQpgZnJvbWAuCiogYGFtb3VudGAgLSBUaGUgdG9rZW5zIHRvIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGBzcGVuZGVyYC4KKiBgZXhwaXJhdGlvbl9sZWRnZXJgIC0gVGhlIGxlZGdlciBudW1iZXIgd2hlcmUgdGhpcyBhbGxvd2FuY2UgZXhwaXJlcy4gQ2Fubm90CmJlIGxlc3MgdGhhbiB0aGUgY3VycmVudCBsZWRnZXIgbnVtYmVyIHVubGVzcyB0aGUgYW1vdW50IGlzIGJlaW5nIHNldCB0byAwLgpBbiBleHBpcmVkIGVudHJ5ICh3aGVyZSBleHBpcmF0aW9uX2xlZGdlciA8IHRoZSBjdXJyZW50IGxlZGdlciBudW1iZXIpCnNob3VsZCBiZSB0cmVhdGVkIGFzIGEgMCBhbW91bnQgYWxsb3dhbmNlLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImFwcHJvdmUiLCBmcm9tOiBBZGRyZXNzLApzcGVuZGVyOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6IGkxMjgsIGV4cGlyYXRpb25fbGVkZ2VyOiB1MzJdYAAAAAAAB2FwcHJvdmUAAAAABAAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAAAAABFleHBpcmF0aW9uX2xlZGdlcgAAAAAAAAQAAAAA","AAAAAAAAAJhSZXR1cm5zIHRoZSBiYWxhbmNlIG9mIGBpZGAuCgojIEFyZ3VtZW50cwoKKiBgaWRgIC0gVGhlIGFkZHJlc3MgZm9yIHdoaWNoIGEgYmFsYW5jZSBpcyBiZWluZyBxdWVyaWVkLiBJZiB0aGUKYWRkcmVzcyBoYXMgbm8gZXhpc3RpbmcgYmFsYW5jZSwgcmV0dXJucyAwLgAAAAdiYWxhbmNlAAAAAAEAAAAAAAAAAmlkAAAAAAATAAAAAQAAAAs=","AAAAAAAAAWRCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLgoKUmVkdWNlcyBmcm9tJ3MgYmFsYW5jZSBieSB0aGUgYW1vdW50LCB3aXRob3V0IHRyYW5zZmVycmluZyB0aGUgYmFsYW5jZQp0byBhbm90aGVyIGhvbGRlcidzIGJhbGFuY2UuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIG9mIHRva2VucyB3aGljaCB3aWxsIGJlCmJ1cm5lZCBmcm9tLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgYnVybmVkLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImJ1cm4iLCBmcm9tOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6CmkxMjhdYAAAAARidXJuAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAtxCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSBvZiBgc3BlbmRlcmAuCgpSZWR1Y2VzIGZyb20ncyBiYWxhbmNlIGJ5IHRoZSBhbW91bnQsIHdpdGhvdXQgdHJhbnNmZXJyaW5nIHRoZSBiYWxhbmNlCnRvIGFub3RoZXIgaG9sZGVyJ3MgYmFsYW5jZS4KClRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byBidXJuIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZSwgaWYKdGhlIGFtb3VudCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGFsbG93YW5jZSB0aGF0IHRoZSBzcGVuZGVyIGhhcwpvbiB0aGUgZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyJ3MgYWxsb3dhbmNlIG9uIGZyb20ncyBiYWxhbmNlIHdpbGwgYmUKcmVkdWNlZCBieSB0aGUgYW1vdW50LgoKIyBBcmd1bWVudHMKCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3MgYXV0aG9yaXppbmcgdGhlIGJ1cm4sIGFuZCBoYXZpbmcgaXRzIGFsbG93YW5jZQpjb25zdW1lZCBkdXJpbmcgdGhlIGJ1cm4uCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQpidXJuZWQgZnJvbS4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIGJ1cm5lZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJidXJuIiwgZnJvbTogQWRkcmVzc10sIGRhdGEgPSBbYW1vdW50OgppMTI4XWAAAAAJYnVybl9mcm9tAAAAAAAAAwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAVNDbGF3YmFjayBgYW1vdW50YCBmcm9tIGBmcm9tYCBhY2NvdW50LiBgYW1vdW50YCBpcyBidXJuZWQgaW4gdGhlCmNsYXdiYWNrIHByb2Nlc3MuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIGZyb20gd2hpY2ggdGhlIGNsYXdiYWNrIHdpbGwKdGFrZSB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSBjbGF3ZWQgYmFjay4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJjbGF3YmFjayIsIGFkbWluOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAACGNsYXdiYWNrAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAIBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdXNlZCB0byByZXByZXNlbnQgYW1vdW50cyBvZiB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAhkZWNpbWFscwAAAAAAAAABAAAABA==","AAAAAAAAAPVNaW50cyBgYW1vdW50YCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgbWludGVkIHRva2Vucy4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIG1pbnRlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJtaW50IiwgYWRtaW46IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwgZGF0YQo9IFthbW91bnQ6IGkxMjhdYAAAAAAAAARtaW50AAAAAgAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAFlSZXR1cm5zIHRoZSBuYW1lIGZvciB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAAAAARuYW1lAAAAAAAAAAEAAAAQ","AAAAAAAAAQxTZXRzIHRoZSBhZG1pbmlzdHJhdG9yIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyBgbmV3X2FkbWluYC4KCiMgQXJndW1lbnRzCgoqIGBuZXdfYWRtaW5gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCBoZW5jZWZvcnRoIGJlIHRoZSBhZG1pbmlzdHJhdG9yCm9mIHRoaXMgdG9rZW4gY29udHJhY3QuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2FkbWluIiwgYWRtaW46IEFkZHJlc3NdLCBkYXRhID0KW25ld19hZG1pbjogQWRkcmVzc11gAAAACXNldF9hZG1pbgAAAAAAAAEAAAAAAAAACW5ld19hZG1pbgAAAAAAABMAAAAA","AAAAAAAAAEZSZXR1cm5zIHRoZSBhZG1pbiBvZiB0aGUgY29udHJhY3QuCgojIFBhbmljcwoKSWYgdGhlIGFkbWluIGlzIG5vdCBzZXQuAAAAAAAFYWRtaW4AAAAAAAAAAAAAAQAAABM=","AAAAAAAAAVBTZXRzIHdoZXRoZXIgdGhlIGFjY291bnQgaXMgYXV0aG9yaXplZCB0byB1c2UgaXRzIGJhbGFuY2UuIElmCmBhdXRob3JpemVkYCBpcyB0cnVlLCBgaWRgIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBiZWluZyAoZGUtKWF1dGhvcml6ZWQuCiogYGF1dGhvcml6ZWAgLSBXaGV0aGVyIG9yIG5vdCBgaWRgIGNhbiB1c2UgaXRzIGJhbGFuY2UuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2F1dGhvcml6ZWQiLCBpZDogQWRkcmVzc10sIGRhdGEgPQpbYXV0aG9yaXplOiBib29sXWAAAAAOc2V0X2F1dGhvcml6ZWQAAAAAAAIAAAAAAAAAAmlkAAAAAAATAAAAAAAAAAlhdXRob3JpemUAAAAAAAABAAAAAA==","AAAAAAAAAFtSZXR1cm5zIHRoZSBzeW1ib2wgZm9yIHRoaXMgdG9rZW4uCgojIFBhbmljcwoKSWYgdGhlIGNvbnRyYWN0IGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuAAAAAAZzeW1ib2wAAAAAAAAAAAABAAAAEA==","AAAAAAAAAWRUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQp3aXRoZHJhd24gZnJvbS4KKiBgdG9gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCByZWNlaXZlIHRoZSB0cmFuc2ZlcnJlZCB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSB0cmFuc2ZlcnJlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJ0cmFuc2ZlciIsIGZyb206IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwKZGF0YSA9IFthbW91bnQ6IGkxMjhdYAAAAAh0cmFuc2ZlcgAAAAMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAzNUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSB0aGF0CmBzcGVuZGVyYCBoYXMgb24gYGZyb21gJ3MgYmFsYW5jZS4gQXV0aG9yaXplZCBieSBzcGVuZGVyCihgc3BlbmRlci5yZXF1aXJlX2F1dGgoKWApLgoKVGhlIHNwZW5kZXIgd2lsbCBiZSBhbGxvd2VkIHRvIHRyYW5zZmVyIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZQppZiB0aGUgYW1vdW50IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgYWxsb3dhbmNlIHRoYXQgdGhlIHNwZW5kZXIKaGFzIG9uIHRoZSBmcm9tJ3MgYmFsYW5jZS4gVGhlIHNwZW5kZXIncyBhbGxvd2FuY2Ugb24gZnJvbSdzIGJhbGFuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQuCgojIEFyZ3VtZW50cwoKKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBhdXRob3JpemluZyB0aGUgdHJhbnNmZXIsIGFuZCBoYXZpbmcgaXRzCmFsbG93YW5jZSBjb25zdW1lZCBkdXJpbmcgdGhlIHRyYW5zZmVyLgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHdoaWNoIHdpbGwgYmUKd2l0aGRyYXduIGZyb20uCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgdHJhbnNmZXJyZWQgdG9rZW5zLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgdHJhbnNmZXJyZWQuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsidHJhbnNmZXIiLCBmcm9tOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAADXRyYW5zZmVyX2Zyb20AAAAAAAAEAAAAAAAAAAdzcGVuZGVyAAAAABMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA=="]),r);this.options=r}fromJSON={allowance:this.txFromJSON,authorized:this.txFromJSON,approve:this.txFromJSON,balance:this.txFromJSON,burn:this.txFromJSON,burn_from:this.txFromJSON,clawback:this.txFromJSON,decimals:this.txFromJSON,mint:this.txFromJSON,name:this.txFromJSON,set_admin:this.txFromJSON,admin:this.txFromJSON,set_authorized:this.txFromJSON,symbol:this.txFromJSON,transfer:this.txFromJSON,transfer_from:this.txFromJSON}};var Bc=100,Ic=180,Fr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r}async buildChangeTrustLineXdrTx(i){let a=await new ss.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(i.sender),u=await this.getContract(Rn,i.tokenAddress).name();if(Kt(u))throw new M;let m=Yt(u);if(!m)throw new M;let[p,h]=m.split(":");if(p===void 0||h===void 0)throw new M("Invalid token name format. Expected format 'symbol:srbTokenAddress'");let T=new bc(p,h),S=wc.changeTrust({asset:T,limit:i.limit});return new os(a,{fee:Bc.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(S).setTimeout(Ic).build().toXDR()}async getBalanceLine(i,r){let o=await this.getContract(Rn,r).name();if(Kt(o))throw new M;let u=Yt(o);if(!u)throw new M;let[m,p]=u.split(":"),h=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new ss.Server(h).loadAccount(i)).balances.find(x=>(x.asset_type==="credit_alphanum4"||x.asset_type==="credit_alphanum12")&&x.asset_code==m&&x.asset_issuer==p)}async submitTransactionStellar(i){let r=new ss.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),a=os.fromXDR(i,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await r.submitTransaction(a)}async simulateAndCheckRestoreTxRequiredSoroban(i,r){let a=new vn.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),o=await a.getAccount(r),u=Si.fromXDR(i,this.params.sorobanNetworkPassphrase),m=await a.simulateTransaction(u);if(vn.Api.isSimulationRestore(m))return new Si(o,{fee:(+Sc+ +m.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(m.restorePreamble.transactionData.build()).addOperation(Pc.restoreFootprint({})).setTimeout(Cc).build().toXDR()}async sendTransactionSoroban(i){let r=new vn.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=Si.fromXDR(i,this.params.sorobanNetworkPassphrase);return r.sendTransaction(a)}async confirmTx(i,r=15){let a=new vn.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),o=await Ui(()=>a.getTransaction(i),m=>m.status===vn.Api.GetTransactionStatus.NOT_FOUND,r);if(o.length===0)throw new M("No transaction responses found.");let u=o[o.length-1];if(!u)throw new M("Unexpected error: last response is undefined.");return u}getContract(i,r){let a={contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new i(a)}};g();y();f();import{Transaction as Rc}from"@mysten/sui/transactions";var Mr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r}keyMap={SplitCoins:"amounts",MoveCall:"arguments",MergeCoins:"sources",TransferObjects:"objects",MakeMoveVec:"elements",Upgrade:"ticket"};offset(i,r,a){return i.Input!==void 0?(i.Input=i.Input+r,i):i.NestedResult!==void 0?(i.NestedResult=[i.NestedResult[0]+a,i.NestedResult[1]],i):(i.Result!==void 0&&(i.Result=i.Result+a),i)}async merge(i,r){let a=JSON.parse(i),o=a.inputs.length,u=a.commands.length,m=JSON.parse(r);a.inputs=a.inputs.concat(m.inputs);for(let h of m.commands){let T=Object.keys(h)[0],S=this.keyMap[T];if(!S)continue;let P=h[T][S];Array.isArray(P)&&(h[T][S]=P.map(x=>this.offset(x,o,u)),a.commands.push(h))}return Rc.from(JSON.stringify(a)).toJSON()}};var Or=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.srb=new Fr(i,r),this.sol=new xr(i,r),this.sui=new Mr(i,r),this.evm=new kr(i,r)}srb;sol;sui;evm};g();y();f();var Ft=(r=>(r.WITH_NATIVE_CURRENCY="native",r.WITH_STABLECOIN="stablecoin",r))(Ft||{}),jn=(r=>(r.INT="int",r.FLOAT="float",r))(jn||{});g();y();f();import{Big as ge}from"big.js";var kn=class{constructor(i){this.nodeRpcUrls=i}getNodeRpcUrl(i){let r=this.nodeRpcUrls[i];if(r!==void 0)return r;throw new En(i)}},Dr=class{api;tokenService;params;bridge;pool;constructor(i,r=On){H.addChainsProperties(r.additionalChainsProperties);let a=new qt(r),o=new en(a),u=new tn(o),m=new rn(u);this.api=new nn(m,r),this.tokenService=new an(this.api,i,r),this.bridge=new sr(this.api,i,r,this.tokenService),this.pool=new Pr(this.api,i,r,this.tokenService),this.params=r}async chainDetailsMap(i){return this.api.getChainDetailsMap(i)}async tokens(i){return this.api.tokens(i)}async tokensByChain(i,r){let o=(await this.api.getChainDetailsMap(r))[i];return o?o.tokens:[]}async getTransferStatus(i,r){return this.api.getTransferStatus(i,r)}async getGasBalance(i,r){return this.api.getGasBalance(i,r)}async checkAddress(){return new Promise(i=>{i({status:"OK",gasBalance:null})})}async getPendingStatusInfo(i,r,a,o){q(i);let u;r=="float"?(ee("amount",i,a.decimals),u=Q(i,a.decimals).toFixed()):u=i;let m=it(u,a,await pe(this.api,a)),p=await pe(this.api,o),h=this.getAmountFromVUsdFormatted(m,o,p),T,S=await this.api.getPendingInfo();for(let P in S[o.chainSymbol]){let x=S[o.chainSymbol];if(!x)throw new M("Cannot find pending info for "+o.chainSymbol);T=x[P]}if(T){let P=Qi(T.totalSentAmount,p),x=this.getAmountFromVUsdFormatted(m,o,P),B;return ge(x.int).gt(h.int)?B={min:h,max:x}:B={min:x,max:h},{pendingTxs:T.pendingTxs,pendingAmount:{int:Le(T.totalSentAmount,3,o.decimals).toFixed(0),float:J(T.totalSentAmount,3).toFixed()},estimatedAmount:B}}return{pendingTxs:0,pendingAmount:{int:"0",float:"0"},estimatedAmount:{min:h,max:h}}}async getTokenBalance(i,r){return this.tokenService.getTokenBalance(i,r)}async getNativeTokenBalance(i,r){return this.tokenService.getNativeTokenBalance(i,r)}async calculateFeePercentOnSourceChain(i,r){q(i),ee("amountFloat",i,r.decimals);let a=Q(i,r.decimals);if(a.eq(0))return 0;let o=it(a,r,await pe(this.api,r)),u=Ne(o,r.decimals);return Xr(a,u)}async calculateFeePercentOnDestinationChain(i,r,a){q(i),ee("amountFloat",i,r.decimals);let o=Q(i,r.decimals);if(o.eq(0))return 0;let u=it(o,r,await pe(this.api,r)),m=dn(u,a,await pe(this.api,a)),p=Ne(u,a.decimals);return Xr(p,m)}async getAmountToBeReceivedAndGasFeeOptions(i,r,a,o){return q(i),ee("amountToSendFloat",i,r.decimals),{amountToSendFloat:ge(i).toFixed(),amountToBeReceivedFloat:await this.getAmountToBeReceived(i,r,a,o),gasFeeOptions:await this.getGasFeeOptions(r,a,o)}}async getAmountToSendAndGasFeeOptions(i,r,a,o){return q(i),ee("amountToBeReceivedFloat",i,a.decimals),{amountToSendFloat:await this.getAmountToSend(i,r,a,o),amountToBeReceivedFloat:ge(i).toFixed(),gasFeeOptions:await this.getGasFeeOptions(r,a,o)}}async getAmountToBeReceived(i,r,a,o){return this.getAmountToBeReceivedCompute(i,r,a,o,async()=>await pe(this.api,r),async()=>await pe(this.api,a))}async getAmountToBeReceivedFromChain(i,r,a,o,u,m){return this.getAmountToBeReceivedCompute(i,r,a,o,async()=>await this.pool.getPoolInfoFromChain(r,u),async()=>await this.pool.getPoolInfoFromChain(a,m))}async getAmountToBeReceivedCompute(i,r,a,o=1,u,m){switch(o){case 1:case 2:return this.getAmountToBeReceivedComputeWithPools(i,r,a,await u(),await m());case 3:case 4:return this.getAmountToBeReceivedComputeCctp(i,r,a,o);case 5:return this.getAmountToBeReceivedComputeOft(i,r,a)}}getAmountToBeReceivedComputeWithPools(i,r,a,o,u){q(i),ee("amountToSendFloat",i,r.decimals);let m=Q(i,r.decimals),p=it(m,r,o);return this.getAmountFromVUsdFormatted(p,a,u).float}getAmountToBeReceivedComputeCctp(i,r,a,o){q(i),ee("amountToSendFloat",i,r.decimals);let u=Q(i,r.decimals);switch(o){case 3:{if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new Ie("Such route does not support CCTP protocol");let m=u.mul(ge(1).minus(r.cctpFeeShare)).round(0,ge.roundUp),p=Le(m,r.decimals,a.decimals).round(0);return J(p,a.decimals).toFixed()}case 4:{if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new Ie("Such route does not support CCTP V2 protocol");let m=u.mul(ge(1).minus(r.cctpV2FeeShare)).round(0,ge.roundUp),p=Le(m,r.decimals,a.decimals).round(0);return J(p,a.decimals).toFixed()}}}async getAmountToBeReceivedComputeOft(i,r,a){q(i),ee("amountToSendFloat",i,r.decimals);let o=Q(i,r.decimals);if(!r.oftBridgeAddress||!a.oftBridgeAddress||r.oftId!==a.oftId)throw new Re("Such route does not support OFT protocol");let{adminFeeShareWithExtras:u}=await this.api.getReceiveTransactionCost({sourceChainId:r.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:5,sourceToken:r.tokenAddress});if(!u)throw new Re("Such route does not support OFT protocol");let m=o.mul(ge(1).minus(u)).round(0,ge.roundUp),p=Le(m,r.decimals,a.decimals).round(0);return J(p,a.decimals).toFixed()}async getAmountToSend(i,r,a,o){return this.getAmountToSendCompute(i,r,a,o,()=>pe(this.api,r),()=>pe(this.api,a))}async getAmountToSendFromChain(i,r,a,o,u,m){return this.getAmountToSendCompute(i,r,a,o,()=>this.pool.getPoolInfoFromChain(r,u),()=>this.pool.getPoolInfoFromChain(a,m))}async getAmountToSendCompute(i,r,a,o=1,u,m){switch(o){case 1:case 2:return this.getAmountToSendComputeWithPools(i,r,a,await u(),await m());case 3:case 4:return this.getAmountToSendComputeCctp(i,r,a,o);case 5:return this.getAmountToSendComputeOft(i,r,a)}}getAmountToSendComputeWithPools(i,r,a,o,u){q(i),ee("amountToBeReceivedFloat",i,a.decimals);let m=Q(i,a.decimals),p=qi(m,a,u),h=zi(p,r,o);if(ge(h).lte(0))throw new mt;return J(h,r.decimals).toFixed()}getAmountToSendComputeCctp(i,r,a,o){q(i),ee("amountToBeReceivedFloat",i,a.decimals);let u=Q(i,a.decimals);switch(o){case 3:{if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new Ie("Such route does not support CCTP protocol");let m=u.div(ge(1).minus(r.cctpFeeShare)).round(0,ge.roundDown),p=Le(m,a.decimals,r.decimals).round(0);return J(p,r.decimals).toFixed()}case 4:{if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new Ie("Such route does not support CCTP V2 protocol");let m=u.div(ge(1).minus(r.cctpV2FeeShare)).round(0,ge.roundDown),p=Le(m,a.decimals,r.decimals).round(0);return J(p,r.decimals).toFixed()}}}async getAmountToSendComputeOft(i,r,a){q(i),ee("amountToBeReceivedFloat",i,a.decimals);let o=Q(i,a.decimals);if(!r.oftId||!a.oftId||!r.oftBridgeAddress||r.oftId!==a.oftId)throw new Re("Such route does not support OFT protocol");let{adminFeeShareWithExtras:u}=await this.api.getReceiveTransactionCost({sourceChainId:r.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:5,sourceToken:r.tokenAddress});if(!u)throw new Re("Such route does not support OFT protocol");let m=o.div(ge(1).minus(u)).round(0,ge.roundDown),p=Le(m,a.decimals,r.decimals).round(0);return J(p,r.decimals).toFixed()}async getGasFeeOptions(i,r,a){return Yr(i,r.allbridgeChainId,a,this.api)}getAverageTransferTime(i,r,a){return i.transferTime?.[r.chainSymbol]?.[a]??null}async getPoolInfoByToken(i){return await this.api.getPoolInfoByKey({chainSymbol:i.chainSymbol,poolAddress:i.poolAddress})}async refreshPoolInfo(i){if(i){let a=(i instanceof Array?i:[i]).map(o=>({chainSymbol:o.chainSymbol,poolAddress:o.poolAddress}));return this.api.refreshPoolInfo(a)}return this.api.refreshPoolInfo()}aprInPercents(i){return ta(i)}async getExtraGasMaxLimits(i,r,a){return await Kr(i,r,a,this.api)}async getVUsdFromAmount(i,r,a){q(i);let o;r=="float"?(ee("amount",i,a.decimals),o=Q(i,a.decimals).toFixed()):o=i;let u=it(o,a,await pe(this.api,a));return{int:u,float:J(u,3).toFixed()}}async getAmountFromVUsd(i,r){return this.getAmountFromVUsdFormatted(i,r,await pe(this.api,r))}getAmountFromVUsdFormatted(i,r,a){q(i);let o=dn(i,r,a);if(ge(o).lt(0))throw new mt;return{int:o,float:J(o,r.decimals).toFixed()}}async swapAndBridgeFeeCalculation(i,r,a){return Ha(i,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await pe(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await pe(this.api,a)})}async swapAndBridgeFeeCalculationReverse(i,r,a){let o=Qa(i,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await pe(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await pe(this.api,a)}),u=o.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if(ge(u).lt(0))throw new mt;return o}async getSendAmountDetails(i,r,a,o){q(i);let u;return r=="float"?(ee("amount",i,a.decimals),u=Q(i,a.decimals).toFixed()):u=i,za(u,a,await pe(this.api,a),o,await pe(this.api,o))}};function vc(s){return"solanaRpcUrl"in s}var cs=class{params;bridge;pool;utils;service;constructor(i,r=On){let a;vc(i)?a=new kn({SOL:i.solanaRpcUrl,TRX:i.tronRpcUrl}):a=new kn(i),this.service=new Dr(a,r),this.bridge=this.service.bridge,this.pool=this.service.pool,this.utils=new Or(a,r),this.params=r}async chainDetailsMap(i="swap"){return this.service.chainDetailsMap(i)}async tokens(i="swap"){return this.service.tokens(i)}async tokensByChain(i,r="swap"){return this.service.tokensByChain(i,r)}async getTransferStatus(i,r){return this.service.getTransferStatus(i,r)}async getGasBalance(i,r){return this.service.getGasBalance(i,r)}async checkAddress(i,r,a){return await this.service.checkAddress()}async getPendingStatusInfo(i,r,a,o){return this.service.getPendingStatusInfo(i,r,a,o)}async getTokenBalance(i,r){return this.service.getTokenBalance(i,r)}async getNativeTokenBalance(i,r){return this.service.getNativeTokenBalance(i,r)}async calculateFeePercentOnSourceChain(i,r){return this.service.calculateFeePercentOnSourceChain(i,r)}async calculateFeePercentOnDestinationChain(i,r,a){return this.service.calculateFeePercentOnDestinationChain(i,r,a)}async getAmountToBeReceivedAndGasFeeOptions(i,r,a,o){return this.service.getAmountToBeReceivedAndGasFeeOptions(i,r,a,o)}async getAmountToSendAndGasFeeOptions(i,r,a,o){return this.service.getAmountToSendAndGasFeeOptions(i,r,a,o)}async getAmountToBeReceived(i,r,a,o=1){return this.service.getAmountToBeReceived(i,r,a,o)}async getAmountToBeReceivedFromChain(i,r,a,o=1,u,m){return this.service.getAmountToBeReceivedFromChain(i,r,a,o,u,m)}getAmountToBeReceivedFromPools(i,r,a,o,u,m=1){switch(m){case 1:case 2:return this.service.getAmountToBeReceivedComputeWithPools(i,r,a,o,u);case 3:case 4:return this.service.getAmountToBeReceivedComputeCctp(i,r,a,m)}}async getAmountToSend(i,r,a,o=1){return this.service.getAmountToSend(i,r,a,o)}async getAmountToSendFromChain(i,r,a,o=1,u,m){return this.service.getAmountToSendFromChain(i,r,a,o,u,m)}getAmountToSendFromPools(i,r,a,o,u,m=1){switch(m){case 1:case 2:return this.service.getAmountToSendComputeWithPools(i,r,a,o,u);case 3:case 4:return this.service.getAmountToSendComputeCctp(i,r,a,m)}}async getGasFeeOptions(i,r,a){return this.service.getGasFeeOptions(i,r,a)}getAverageTransferTime(i,r,a){return this.service.getAverageTransferTime(i,r,a)}async getPoolInfoByToken(i){return this.service.getPoolInfoByToken(i)}async refreshPoolInfo(i){return this.service.refreshPoolInfo(i)}aprInPercents(i){return this.service.aprInPercents(i)}async getExtraGasMaxLimits(i,r,a=1){return this.service.getExtraGasMaxLimits(i,r,a)}async getVUsdFromAmount(i,r,a){return this.service.getVUsdFromAmount(i,r,a)}async getAmountFromVUsd(i,r){return this.service.getAmountFromVUsd(i,r)}async swapAndBridgeFeeCalculation(i,r,a){return this.service.swapAndBridgeFeeCalculation(i,r,a)}async swapAndBridgeFeeCalculationReverse(i,r,a){return this.service.swapAndBridgeFeeCalculationReverse(i,r,a)}async getSendAmountDetails(i,r,a,o){return this.service.getSendAmountDetails(i,r,a,o)}};export{jr as AddressStatus,cs as AllbridgeCoreSdk,jn as AmountFormat,Ut as AmountNotEnoughError,Wn as ArgumentInvalidDecimalsError,Ie as CCTPDoesNotSupportedError,$e as ChainSymbol,ie as ChainType,Bs as ErrorCode,Nn as ExtraGasMaxLimitExceededError,Ft as FeePaymentMethod,mt as InsufficientPoolLiquidityError,ut as InvalidAmountError,cn as InvalidGasFeePaymentOptionError,Dn as InvalidMessengerOptionError,Vt as InvalidTxError,he as JupiterError,Je as Messenger,de as MethodNotSupportedError,En as NodeRpcUrlNotInitializedError,Re as OFTDoesNotSupportedError,M as SdkError,ue as SdkRootError,Hr as SolanaAutoTxFee,un as TimeoutError,Gn as TxTooLargeError,An as VerifyTxError,On as mainnet,Qc as nodeRpcUrlsDefault,Hc as nodeUrlsDefault};
1
+ var fs=Object.create;var ki=Object.defineProperty;var ys=Object.getOwnPropertyDescriptor;var hs=Object.getOwnPropertyNames;var Ts=Object.getPrototypeOf,bs=Object.prototype.hasOwnProperty;var Bt=(s,i)=>()=>(s&&(i=s(s=0)),i);var Er=(s,i)=>()=>(i||s((i={exports:{}}).exports,i),i.exports);var Ss=(s,i,r,a)=>{if(i&&typeof i=="object"||typeof i=="function")for(let o of hs(i))!bs.call(s,o)&&o!==r&&ki(s,o,{get:()=>i[o],enumerable:!(a=ys(i,o))||a.enumerable});return s};var He=(s,i,r)=>(r=s!=null?fs(Ts(s)):{},Ss(i||!s||!s.__esModule?ki(r,"default",{value:s,enumerable:!0}):r,s));var g=Bt(()=>{});function Ps(s,i){this.fun=s,this.array=i}function xi(s){var i=Math.floor((Date.now()-It.now())*.001),r=It.now()*.001,a=Math.floor(r)+i,o=Math.floor(r%1*1e9);return s&&(a=a-s[0],o=o-s[1],o<0&&(a--,o+=Gr)),[a,o]}var xc,It,Ur,Gr,Fi=Bt(()=>{g();y();f();Ps.prototype.run=function(){this.fun.apply(null,this.array)};xc={PATH:"/usr/bin",LANG:typeof navigator<"u"?navigator.language+".UTF-8":void 0,PWD:"/",HOME:"/home",TMP:"/tmp"},It={now:typeof performance<"u"?performance.now.bind(performance):void 0,timing:typeof performance<"u"?performance.timing:void 0};It.now===void 0&&(Ur=Date.now(),It.timing&&It.timing.navigationStart&&(Ur=It.timing.navigationStart),It.now=()=>Date.now()-Ur);Gr=1e9;xi.bigint=function(s){var i=xi(s);return typeof BigInt>"u"?i[0]*Gr+i[1]:BigInt(i[0]*Gr)+BigInt(i[1])}});var f=Bt(()=>{Fi()});function ws(){if(Mi)return cn;Mi=!0,cn.byteLength=p,cn.toByteArray=T,cn.fromByteArray=k;for(var s=[],i=[],r=typeof Uint8Array<"u"?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,u=a.length;o<u;++o)s[o]=a[o],i[a.charCodeAt(o)]=o;i[45]=62,i[95]=63;function m(I){var x=I.length;if(x%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var F=I.indexOf("=");F===-1&&(F=x);var N=F===x?0:4-F%4;return[F,N]}function p(I){var x=m(I),F=x[0],N=x[1];return(F+N)*3/4-N}function h(I,x,F){return(x+F)*3/4-F}function T(I){var x,F=m(I),N=F[0],M=F[1],D=new r(h(I,N,M)),W=0,U=M>0?N-4:N,V;for(V=0;V<U;V+=4)x=i[I.charCodeAt(V)]<<18|i[I.charCodeAt(V+1)]<<12|i[I.charCodeAt(V+2)]<<6|i[I.charCodeAt(V+3)],D[W++]=x>>16&255,D[W++]=x>>8&255,D[W++]=x&255;return M===2&&(x=i[I.charCodeAt(V)]<<2|i[I.charCodeAt(V+1)]>>4,D[W++]=x&255),M===1&&(x=i[I.charCodeAt(V)]<<10|i[I.charCodeAt(V+1)]<<4|i[I.charCodeAt(V+2)]>>2,D[W++]=x>>8&255,D[W++]=x&255),D}function S(I){return s[I>>18&63]+s[I>>12&63]+s[I>>6&63]+s[I&63]}function P(I,x,F){for(var N,M=[],D=x;D<F;D+=3)N=(I[D]<<16&16711680)+(I[D+1]<<8&65280)+(I[D+2]&255),M.push(S(N));return M.join("")}function k(I){for(var x,F=I.length,N=F%3,M=[],D=16383,W=0,U=F-N;W<U;W+=D)M.push(P(I,W,W+D>U?U:W+D));return N===1?(x=I[F-1],M.push(s[x>>2]+s[x<<4&63]+"==")):N===2&&(x=(I[F-2]<<8)+I[F-1],M.push(s[x>>10]+s[x>>4&63]+s[x<<2&63]+"=")),M.join("")}return cn}function Cs(){if(Oi)return On;Oi=!0;return On.read=function(s,i,r,a,o){var u,m,p=o*8-a-1,h=(1<<p)-1,T=h>>1,S=-7,P=r?o-1:0,k=r?-1:1,I=s[i+P];for(P+=k,u=I&(1<<-S)-1,I>>=-S,S+=p;S>0;u=u*256+s[i+P],P+=k,S-=8);for(m=u&(1<<-S)-1,u>>=-S,S+=a;S>0;m=m*256+s[i+P],P+=k,S-=8);if(u===0)u=1-T;else{if(u===h)return m?NaN:(I?-1:1)*(1/0);m=m+Math.pow(2,a),u=u-T}return(I?-1:1)*m*Math.pow(2,u-a)},On.write=function(s,i,r,a,o,u){var m,p,h,T=u*8-o-1,S=(1<<T)-1,P=S>>1,k=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,I=a?0:u-1,x=a?1:-1,F=i<0||i===0&&1/i<0?1:0;for(i=Math.abs(i),isNaN(i)||i===1/0?(p=isNaN(i)?1:0,m=S):(m=Math.floor(Math.log(i)/Math.LN2),i*(h=Math.pow(2,-m))<1&&(m--,h*=2),m+P>=1?i+=k/h:i+=k*Math.pow(2,1-P),i*h>=2&&(m++,h/=2),m+P>=S?(p=0,m=S):m+P>=1?(p=(i*h-1)*Math.pow(2,o),m=m+P):(p=i*Math.pow(2,P-1)*Math.pow(2,o),m=0));o>=8;s[r+I]=p&255,I+=x,p/=256,o-=8);for(m=m<<o|p,T+=o;T>0;s[r+I]=m&255,I+=x,m/=256,T-=8);s[r+I-x]|=F*128},On}function Ni(){if(Di)return Rt;Di=!0;let s=ws(),i=Cs(),r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Rt.Buffer=m,Rt.SlowBuffer=M,Rt.INSPECT_MAX_BYTES=50;let a=2147483647;Rt.kMaxLength=a,m.TYPED_ARRAY_SUPPORT=o(),!m.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function o(){try{let l=new Uint8Array(1),c={foo:function(){return 42}};return Object.setPrototypeOf(c,Uint8Array.prototype),Object.setPrototypeOf(l,c),l.foo()===42}catch{return!1}}Object.defineProperty(m.prototype,"parent",{enumerable:!0,get:function(){if(m.isBuffer(this))return this.buffer}}),Object.defineProperty(m.prototype,"offset",{enumerable:!0,get:function(){if(m.isBuffer(this))return this.byteOffset}});function u(l){if(l>a)throw new RangeError('The value "'+l+'" is invalid for option "size"');let c=new Uint8Array(l);return Object.setPrototypeOf(c,m.prototype),c}function m(l,c,A){if(typeof l=="number"){if(typeof c=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return S(l)}return p(l,c,A)}m.poolSize=8192;function p(l,c,A){if(typeof l=="string")return P(l,c);if(ArrayBuffer.isView(l))return I(l);if(l==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof l);if(rt(l,ArrayBuffer)||l&&rt(l.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(rt(l,SharedArrayBuffer)||l&&rt(l.buffer,SharedArrayBuffer)))return x(l,c,A);if(typeof l=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let d=l.valueOf&&l.valueOf();if(d!=null&&d!==l)return m.from(d,c,A);let b=F(l);if(b)return b;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof l[Symbol.toPrimitive]=="function")return m.from(l[Symbol.toPrimitive]("string"),c,A);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof l)}m.from=function(l,c,A){return p(l,c,A)},Object.setPrototypeOf(m.prototype,Uint8Array.prototype),Object.setPrototypeOf(m,Uint8Array);function h(l){if(typeof l!="number")throw new TypeError('"size" argument must be of type number');if(l<0)throw new RangeError('The value "'+l+'" is invalid for option "size"')}function T(l,c,A){return h(l),l<=0?u(l):c!==void 0?typeof A=="string"?u(l).fill(c,A):u(l).fill(c):u(l)}m.alloc=function(l,c,A){return T(l,c,A)};function S(l){return h(l),u(l<0?0:N(l)|0)}m.allocUnsafe=function(l){return S(l)},m.allocUnsafeSlow=function(l){return S(l)};function P(l,c){if((typeof c!="string"||c==="")&&(c="utf8"),!m.isEncoding(c))throw new TypeError("Unknown encoding: "+c);let A=D(l,c)|0,d=u(A),b=d.write(l,c);return b!==A&&(d=d.slice(0,b)),d}function k(l){let c=l.length<0?0:N(l.length)|0,A=u(c);for(let d=0;d<c;d+=1)A[d]=l[d]&255;return A}function I(l){if(rt(l,Uint8Array)){let c=new Uint8Array(l);return x(c.buffer,c.byteOffset,c.byteLength)}return k(l)}function x(l,c,A){if(c<0||l.byteLength<c)throw new RangeError('"offset" is outside of buffer bounds');if(l.byteLength<c+(A||0))throw new RangeError('"length" is outside of buffer bounds');let d;return c===void 0&&A===void 0?d=new Uint8Array(l):A===void 0?d=new Uint8Array(l,c):d=new Uint8Array(l,c,A),Object.setPrototypeOf(d,m.prototype),d}function F(l){if(m.isBuffer(l)){let c=N(l.length)|0,A=u(c);return A.length===0||l.copy(A,0,0,c),A}if(l.length!==void 0)return typeof l.length!="number"||Wr(l.length)?u(0):k(l);if(l.type==="Buffer"&&Array.isArray(l.data))return k(l.data)}function N(l){if(l>=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return l|0}function M(l){return+l!=l&&(l=0),m.alloc(+l)}m.isBuffer=function(c){return c!=null&&c._isBuffer===!0&&c!==m.prototype},m.compare=function(c,A){if(rt(c,Uint8Array)&&(c=m.from(c,c.offset,c.byteLength)),rt(A,Uint8Array)&&(A=m.from(A,A.offset,A.byteLength)),!m.isBuffer(c)||!m.isBuffer(A))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(c===A)return 0;let d=c.length,b=A.length;for(let w=0,B=Math.min(d,b);w<B;++w)if(c[w]!==A[w]){d=c[w],b=A[w];break}return d<b?-1:b<d?1:0},m.isEncoding=function(c){switch(String(c).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},m.concat=function(c,A){if(!Array.isArray(c))throw new TypeError('"list" argument must be an Array of Buffers');if(c.length===0)return m.alloc(0);let d;if(A===void 0)for(A=0,d=0;d<c.length;++d)A+=c[d].length;let b=m.allocUnsafe(A),w=0;for(d=0;d<c.length;++d){let B=c[d];if(rt(B,Uint8Array))w+B.length>b.length?(m.isBuffer(B)||(B=m.from(B)),B.copy(b,w)):Uint8Array.prototype.set.call(b,B,w);else if(m.isBuffer(B))B.copy(b,w);else throw new TypeError('"list" argument must be an Array of Buffers');w+=B.length}return b};function D(l,c){if(m.isBuffer(l))return l.length;if(ArrayBuffer.isView(l)||rt(l,ArrayBuffer))return l.byteLength;if(typeof l!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof l);let A=l.length,d=arguments.length>2&&arguments[2]===!0;if(!d&&A===0)return 0;let b=!1;for(;;)switch(c){case"ascii":case"latin1":case"binary":return A;case"utf8":case"utf-8":return Nr(l).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A*2;case"hex":return A>>>1;case"base64":return vi(l).length;default:if(b)return d?-1:Nr(l).length;c=(""+c).toLowerCase(),b=!0}}m.byteLength=D;function W(l,c,A){let d=!1;if((c===void 0||c<0)&&(c=0),c>this.length||((A===void 0||A>this.length)&&(A=this.length),A<=0)||(A>>>=0,c>>>=0,A<=c))return"";for(l||(l="utf8");;)switch(l){case"hex":return _e(this,c,A);case"utf8":case"utf-8":return ye(this,c,A);case"ascii":return Be(this,c,A);case"latin1":case"binary":return Ze(this,c,A);case"base64":return Me(this,c,A);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return De(this,c,A);default:if(d)throw new TypeError("Unknown encoding: "+l);l=(l+"").toLowerCase(),d=!0}}m.prototype._isBuffer=!0;function U(l,c,A){let d=l[c];l[c]=l[A],l[A]=d}m.prototype.swap16=function(){let c=this.length;if(c%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let A=0;A<c;A+=2)U(this,A,A+1);return this},m.prototype.swap32=function(){let c=this.length;if(c%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let A=0;A<c;A+=4)U(this,A,A+3),U(this,A+1,A+2);return this},m.prototype.swap64=function(){let c=this.length;if(c%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let A=0;A<c;A+=8)U(this,A,A+7),U(this,A+1,A+6),U(this,A+2,A+5),U(this,A+3,A+4);return this},m.prototype.toString=function(){let c=this.length;return c===0?"":arguments.length===0?ye(this,0,c):W.apply(this,arguments)},m.prototype.toLocaleString=m.prototype.toString,m.prototype.equals=function(c){if(!m.isBuffer(c))throw new TypeError("Argument must be a Buffer");return this===c?!0:m.compare(this,c)===0},m.prototype.inspect=function(){let c="",A=Rt.INSPECT_MAX_BYTES;return c=this.toString("hex",0,A).replace(/(.{2})/g,"$1 ").trim(),this.length>A&&(c+=" ... "),"<Buffer "+c+">"},r&&(m.prototype[r]=m.prototype.inspect),m.prototype.compare=function(c,A,d,b,w){if(rt(c,Uint8Array)&&(c=m.from(c,c.offset,c.byteLength)),!m.isBuffer(c))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof c);if(A===void 0&&(A=0),d===void 0&&(d=c?c.length:0),b===void 0&&(b=0),w===void 0&&(w=this.length),A<0||d>c.length||b<0||w>this.length)throw new RangeError("out of range index");if(b>=w&&A>=d)return 0;if(b>=w)return-1;if(A>=d)return 1;if(A>>>=0,d>>>=0,b>>>=0,w>>>=0,this===c)return 0;let B=w-b,$=d-A,ae=Math.min(B,$),ne=this.slice(b,w),se=c.slice(A,d);for(let te=0;te<ae;++te)if(ne[te]!==se[te]){B=ne[te],$=se[te];break}return B<$?-1:$<B?1:0};function V(l,c,A,d,b){if(l.length===0)return-1;if(typeof A=="string"?(d=A,A=0):A>2147483647?A=2147483647:A<-2147483648&&(A=-2147483648),A=+A,Wr(A)&&(A=b?0:l.length-1),A<0&&(A=l.length+A),A>=l.length){if(b)return-1;A=l.length-1}else if(A<0)if(b)A=0;else return-1;if(typeof c=="string"&&(c=m.from(c,d)),m.isBuffer(c))return c.length===0?-1:L(l,c,A,d,b);if(typeof c=="number")return c=c&255,typeof Uint8Array.prototype.indexOf=="function"?b?Uint8Array.prototype.indexOf.call(l,c,A):Uint8Array.prototype.lastIndexOf.call(l,c,A):L(l,[c],A,d,b);throw new TypeError("val must be string, number or Buffer")}function L(l,c,A,d,b){let w=1,B=l.length,$=c.length;if(d!==void 0&&(d=String(d).toLowerCase(),d==="ucs2"||d==="ucs-2"||d==="utf16le"||d==="utf-16le")){if(l.length<2||c.length<2)return-1;w=2,B/=2,$/=2,A/=2}function ae(se,te){return w===1?se[te]:se.readUInt16BE(te*w)}let ne;if(b){let se=-1;for(ne=A;ne<B;ne++)if(ae(l,ne)===ae(c,se===-1?0:ne-se)){if(se===-1&&(se=ne),ne-se+1===$)return se*w}else se!==-1&&(ne-=ne-se),se=-1}else for(A+$>B&&(A=B-$),ne=A;ne>=0;ne--){let se=!0;for(let te=0;te<$;te++)if(ae(l,ne+te)!==ae(c,te)){se=!1;break}if(se)return ne}return-1}m.prototype.includes=function(c,A,d){return this.indexOf(c,A,d)!==-1},m.prototype.indexOf=function(c,A,d){return V(this,c,A,d,!0)},m.prototype.lastIndexOf=function(c,A,d){return V(this,c,A,d,!1)};function fe(l,c,A,d){A=Number(A)||0;let b=l.length-A;d?(d=Number(d),d>b&&(d=b)):d=b;let w=c.length;d>w/2&&(d=w/2);let B;for(B=0;B<d;++B){let $=parseInt(c.substr(B*2,2),16);if(Wr($))return B;l[A+B]=$}return B}function Ae(l,c,A,d){return Mn(Nr(c,l.length-A),l,A,d)}function Ve(l,c,A,d){return Mn(ls(c),l,A,d)}function je(l,c,A,d){return Mn(vi(c),l,A,d)}function Ke(l,c,A,d){return Mn(ds(c,l.length-A),l,A,d)}m.prototype.write=function(c,A,d,b){if(A===void 0)b="utf8",d=this.length,A=0;else if(d===void 0&&typeof A=="string")b=A,d=this.length,A=0;else if(isFinite(A))A=A>>>0,isFinite(d)?(d=d>>>0,b===void 0&&(b="utf8")):(b=d,d=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let w=this.length-A;if((d===void 0||d>w)&&(d=w),c.length>0&&(d<0||A<0)||A>this.length)throw new RangeError("Attempt to write outside buffer bounds");b||(b="utf8");let B=!1;for(;;)switch(b){case"hex":return fe(this,c,A,d);case"utf8":case"utf-8":return Ae(this,c,A,d);case"ascii":case"latin1":case"binary":return Ve(this,c,A,d);case"base64":return je(this,c,A,d);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ke(this,c,A,d);default:if(B)throw new TypeError("Unknown encoding: "+b);b=(""+b).toLowerCase(),B=!0}},m.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Me(l,c,A){return c===0&&A===l.length?s.fromByteArray(l):s.fromByteArray(l.slice(c,A))}function ye(l,c,A){A=Math.min(l.length,A);let d=[],b=c;for(;b<A;){let w=l[b],B=null,$=w>239?4:w>223?3:w>191?2:1;if(b+$<=A){let ae,ne,se,te;switch($){case 1:w<128&&(B=w);break;case 2:ae=l[b+1],(ae&192)===128&&(te=(w&31)<<6|ae&63,te>127&&(B=te));break;case 3:ae=l[b+1],ne=l[b+2],(ae&192)===128&&(ne&192)===128&&(te=(w&15)<<12|(ae&63)<<6|ne&63,te>2047&&(te<55296||te>57343)&&(B=te));break;case 4:ae=l[b+1],ne=l[b+2],se=l[b+3],(ae&192)===128&&(ne&192)===128&&(se&192)===128&&(te=(w&15)<<18|(ae&63)<<12|(ne&63)<<6|se&63,te>65535&&te<1114112&&(B=te))}}B===null?(B=65533,$=1):B>65535&&(B-=65536,d.push(B>>>10&1023|55296),B=56320|B&1023),d.push(B),b+=$}return Oe(d)}let Ce=4096;function Oe(l){let c=l.length;if(c<=Ce)return String.fromCharCode.apply(String,l);let A="",d=0;for(;d<c;)A+=String.fromCharCode.apply(String,l.slice(d,d+=Ce));return A}function Be(l,c,A){let d="";A=Math.min(l.length,A);for(let b=c;b<A;++b)d+=String.fromCharCode(l[b]&127);return d}function Ze(l,c,A){let d="";A=Math.min(l.length,A);for(let b=c;b<A;++b)d+=String.fromCharCode(l[b]);return d}function _e(l,c,A){let d=l.length;(!c||c<0)&&(c=0),(!A||A<0||A>d)&&(A=d);let b="";for(let w=c;w<A;++w)b+=ps[l[w]];return b}function De(l,c,A){let d=l.slice(c,A),b="";for(let w=0;w<d.length-1;w+=2)b+=String.fromCharCode(d[w]+d[w+1]*256);return b}m.prototype.slice=function(c,A){let d=this.length;c=~~c,A=A===void 0?d:~~A,c<0?(c+=d,c<0&&(c=0)):c>d&&(c=d),A<0?(A+=d,A<0&&(A=0)):A>d&&(A=d),A<c&&(A=c);let b=this.subarray(c,A);return Object.setPrototypeOf(b,m.prototype),b};function G(l,c,A){if(l%1!==0||l<0)throw new RangeError("offset is not uint");if(l+c>A)throw new RangeError("Trying to access beyond buffer length")}m.prototype.readUintLE=m.prototype.readUIntLE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let b=this[c],w=1,B=0;for(;++B<A&&(w*=256);)b+=this[c+B]*w;return b},m.prototype.readUintBE=m.prototype.readUIntBE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let b=this[c+--A],w=1;for(;A>0&&(w*=256);)b+=this[c+--A]*w;return b},m.prototype.readUint8=m.prototype.readUInt8=function(c,A){return c=c>>>0,A||G(c,1,this.length),this[c]},m.prototype.readUint16LE=m.prototype.readUInt16LE=function(c,A){return c=c>>>0,A||G(c,2,this.length),this[c]|this[c+1]<<8},m.prototype.readUint16BE=m.prototype.readUInt16BE=function(c,A){return c=c>>>0,A||G(c,2,this.length),this[c]<<8|this[c+1]},m.prototype.readUint32LE=m.prototype.readUInt32LE=function(c,A){return c=c>>>0,A||G(c,4,this.length),(this[c]|this[c+1]<<8|this[c+2]<<16)+this[c+3]*16777216},m.prototype.readUint32BE=m.prototype.readUInt32BE=function(c,A){return c=c>>>0,A||G(c,4,this.length),this[c]*16777216+(this[c+1]<<16|this[c+2]<<8|this[c+3])},m.prototype.readBigUInt64LE=gt(function(c){c=c>>>0,Ut(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&on(c,this.length-8);let b=A+this[++c]*2**8+this[++c]*2**16+this[++c]*2**24,w=this[++c]+this[++c]*2**8+this[++c]*2**16+d*2**24;return BigInt(b)+(BigInt(w)<<BigInt(32))}),m.prototype.readBigUInt64BE=gt(function(c){c=c>>>0,Ut(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&on(c,this.length-8);let b=A*2**24+this[++c]*2**16+this[++c]*2**8+this[++c],w=this[++c]*2**24+this[++c]*2**16+this[++c]*2**8+d;return(BigInt(b)<<BigInt(32))+BigInt(w)}),m.prototype.readIntLE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let b=this[c],w=1,B=0;for(;++B<A&&(w*=256);)b+=this[c+B]*w;return w*=128,b>=w&&(b-=Math.pow(2,8*A)),b},m.prototype.readIntBE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let b=A,w=1,B=this[c+--b];for(;b>0&&(w*=256);)B+=this[c+--b]*w;return w*=128,B>=w&&(B-=Math.pow(2,8*A)),B},m.prototype.readInt8=function(c,A){return c=c>>>0,A||G(c,1,this.length),this[c]&128?(255-this[c]+1)*-1:this[c]},m.prototype.readInt16LE=function(c,A){c=c>>>0,A||G(c,2,this.length);let d=this[c]|this[c+1]<<8;return d&32768?d|4294901760:d},m.prototype.readInt16BE=function(c,A){c=c>>>0,A||G(c,2,this.length);let d=this[c+1]|this[c]<<8;return d&32768?d|4294901760:d},m.prototype.readInt32LE=function(c,A){return c=c>>>0,A||G(c,4,this.length),this[c]|this[c+1]<<8|this[c+2]<<16|this[c+3]<<24},m.prototype.readInt32BE=function(c,A){return c=c>>>0,A||G(c,4,this.length),this[c]<<24|this[c+1]<<16|this[c+2]<<8|this[c+3]},m.prototype.readBigInt64LE=gt(function(c){c=c>>>0,Ut(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&on(c,this.length-8);let b=this[c+4]+this[c+5]*2**8+this[c+6]*2**16+(d<<24);return(BigInt(b)<<BigInt(32))+BigInt(A+this[++c]*2**8+this[++c]*2**16+this[++c]*2**24)}),m.prototype.readBigInt64BE=gt(function(c){c=c>>>0,Ut(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&on(c,this.length-8);let b=(A<<24)+this[++c]*2**16+this[++c]*2**8+this[++c];return(BigInt(b)<<BigInt(32))+BigInt(this[++c]*2**24+this[++c]*2**16+this[++c]*2**8+d)}),m.prototype.readFloatLE=function(c,A){return c=c>>>0,A||G(c,4,this.length),i.read(this,c,!0,23,4)},m.prototype.readFloatBE=function(c,A){return c=c>>>0,A||G(c,4,this.length),i.read(this,c,!1,23,4)},m.prototype.readDoubleLE=function(c,A){return c=c>>>0,A||G(c,8,this.length),i.read(this,c,!0,52,8)},m.prototype.readDoubleBE=function(c,A){return c=c>>>0,A||G(c,8,this.length),i.read(this,c,!1,52,8)};function le(l,c,A,d,b,w){if(!m.isBuffer(l))throw new TypeError('"buffer" argument must be a Buffer instance');if(c>b||c<w)throw new RangeError('"value" argument is out of bounds');if(A+d>l.length)throw new RangeError("Index out of range")}m.prototype.writeUintLE=m.prototype.writeUIntLE=function(c,A,d,b){if(c=+c,A=A>>>0,d=d>>>0,!b){let $=Math.pow(2,8*d)-1;le(this,c,A,d,$,0)}let w=1,B=0;for(this[A]=c&255;++B<d&&(w*=256);)this[A+B]=c/w&255;return A+d},m.prototype.writeUintBE=m.prototype.writeUIntBE=function(c,A,d,b){if(c=+c,A=A>>>0,d=d>>>0,!b){let $=Math.pow(2,8*d)-1;le(this,c,A,d,$,0)}let w=d-1,B=1;for(this[A+w]=c&255;--w>=0&&(B*=256);)this[A+w]=c/B&255;return A+d},m.prototype.writeUint8=m.prototype.writeUInt8=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,1,255,0),this[A]=c&255,A+1},m.prototype.writeUint16LE=m.prototype.writeUInt16LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,65535,0),this[A]=c&255,this[A+1]=c>>>8,A+2},m.prototype.writeUint16BE=m.prototype.writeUInt16BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,65535,0),this[A]=c>>>8,this[A+1]=c&255,A+2},m.prototype.writeUint32LE=m.prototype.writeUInt32LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,4294967295,0),this[A+3]=c>>>24,this[A+2]=c>>>16,this[A+1]=c>>>8,this[A]=c&255,A+4},m.prototype.writeUint32BE=m.prototype.writeUInt32BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,4294967295,0),this[A]=c>>>24,this[A+1]=c>>>16,this[A+2]=c>>>8,this[A+3]=c&255,A+4};function Fn(l,c,A,d,b){Ri(c,d,b,l,A,7);let w=Number(c&BigInt(4294967295));l[A++]=w,w=w>>8,l[A++]=w,w=w>>8,l[A++]=w,w=w>>8,l[A++]=w;let B=Number(c>>BigInt(32)&BigInt(4294967295));return l[A++]=B,B=B>>8,l[A++]=B,B=B>>8,l[A++]=B,B=B>>8,l[A++]=B,A}function Pi(l,c,A,d,b){Ri(c,d,b,l,A,7);let w=Number(c&BigInt(4294967295));l[A+7]=w,w=w>>8,l[A+6]=w,w=w>>8,l[A+5]=w,w=w>>8,l[A+4]=w;let B=Number(c>>BigInt(32)&BigInt(4294967295));return l[A+3]=B,B=B>>8,l[A+2]=B,B=B>>8,l[A+1]=B,B=B>>8,l[A]=B,A+8}m.prototype.writeBigUInt64LE=gt(function(c,A=0){return Fn(this,c,A,BigInt(0),BigInt("0xffffffffffffffff"))}),m.prototype.writeBigUInt64BE=gt(function(c,A=0){return Pi(this,c,A,BigInt(0),BigInt("0xffffffffffffffff"))}),m.prototype.writeIntLE=function(c,A,d,b){if(c=+c,A=A>>>0,!b){let ae=Math.pow(2,8*d-1);le(this,c,A,d,ae-1,-ae)}let w=0,B=1,$=0;for(this[A]=c&255;++w<d&&(B*=256);)c<0&&$===0&&this[A+w-1]!==0&&($=1),this[A+w]=(c/B>>0)-$&255;return A+d},m.prototype.writeIntBE=function(c,A,d,b){if(c=+c,A=A>>>0,!b){let ae=Math.pow(2,8*d-1);le(this,c,A,d,ae-1,-ae)}let w=d-1,B=1,$=0;for(this[A+w]=c&255;--w>=0&&(B*=256);)c<0&&$===0&&this[A+w+1]!==0&&($=1),this[A+w]=(c/B>>0)-$&255;return A+d},m.prototype.writeInt8=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,1,127,-128),c<0&&(c=255+c+1),this[A]=c&255,A+1},m.prototype.writeInt16LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,32767,-32768),this[A]=c&255,this[A+1]=c>>>8,A+2},m.prototype.writeInt16BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,32767,-32768),this[A]=c>>>8,this[A+1]=c&255,A+2},m.prototype.writeInt32LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,2147483647,-2147483648),this[A]=c&255,this[A+1]=c>>>8,this[A+2]=c>>>16,this[A+3]=c>>>24,A+4},m.prototype.writeInt32BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,2147483647,-2147483648),c<0&&(c=4294967295+c+1),this[A]=c>>>24,this[A+1]=c>>>16,this[A+2]=c>>>8,this[A+3]=c&255,A+4},m.prototype.writeBigInt64LE=gt(function(c,A=0){return Fn(this,c,A,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),m.prototype.writeBigInt64BE=gt(function(c,A=0){return Pi(this,c,A,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function wi(l,c,A,d,b,w){if(A+d>l.length)throw new RangeError("Index out of range");if(A<0)throw new RangeError("Index out of range")}function Ci(l,c,A,d,b){return c=+c,A=A>>>0,b||wi(l,c,A,4),i.write(l,c,A,d,23,4),A+4}m.prototype.writeFloatLE=function(c,A,d){return Ci(this,c,A,!0,d)},m.prototype.writeFloatBE=function(c,A,d){return Ci(this,c,A,!1,d)};function Bi(l,c,A,d,b){return c=+c,A=A>>>0,b||wi(l,c,A,8),i.write(l,c,A,d,52,8),A+8}m.prototype.writeDoubleLE=function(c,A,d){return Bi(this,c,A,!0,d)},m.prototype.writeDoubleBE=function(c,A,d){return Bi(this,c,A,!1,d)},m.prototype.copy=function(c,A,d,b){if(!m.isBuffer(c))throw new TypeError("argument should be a Buffer");if(d||(d=0),!b&&b!==0&&(b=this.length),A>=c.length&&(A=c.length),A||(A=0),b>0&&b<d&&(b=d),b===d||c.length===0||this.length===0)return 0;if(A<0)throw new RangeError("targetStart out of bounds");if(d<0||d>=this.length)throw new RangeError("Index out of range");if(b<0)throw new RangeError("sourceEnd out of bounds");b>this.length&&(b=this.length),c.length-A<b-d&&(b=c.length-A+d);let w=b-d;return this===c&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(A,d,b):Uint8Array.prototype.set.call(c,this.subarray(d,b),A),w},m.prototype.fill=function(c,A,d,b){if(typeof c=="string"){if(typeof A=="string"?(b=A,A=0,d=this.length):typeof d=="string"&&(b=d,d=this.length),b!==void 0&&typeof b!="string")throw new TypeError("encoding must be a string");if(typeof b=="string"&&!m.isEncoding(b))throw new TypeError("Unknown encoding: "+b);if(c.length===1){let B=c.charCodeAt(0);(b==="utf8"&&B<128||b==="latin1")&&(c=B)}}else typeof c=="number"?c=c&255:typeof c=="boolean"&&(c=Number(c));if(A<0||this.length<A||this.length<d)throw new RangeError("Out of range index");if(d<=A)return this;A=A>>>0,d=d===void 0?this.length:d>>>0,c||(c=0);let w;if(typeof c=="number")for(w=A;w<d;++w)this[w]=c;else{let B=m.isBuffer(c)?c:m.from(c,b),$=B.length;if($===0)throw new TypeError('The value "'+c+'" is invalid for argument "value"');for(w=0;w<d-A;++w)this[w+A]=B[w%$]}return this};let Et={};function Dr(l,c,A){Et[l]=class extends A{constructor(){super(),Object.defineProperty(this,"message",{value:c.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${l}]`,this.stack,delete this.name}get code(){return l}set code(b){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:b,writable:!0})}toString(){return`${this.name} [${l}]: ${this.message}`}}}Dr("ERR_BUFFER_OUT_OF_BOUNDS",function(l){return l?`${l} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),Dr("ERR_INVALID_ARG_TYPE",function(l,c){return`The "${l}" argument must be of type number. Received type ${typeof c}`},TypeError),Dr("ERR_OUT_OF_RANGE",function(l,c,A){let d=`The value of "${l}" is out of range.`,b=A;return Number.isInteger(A)&&Math.abs(A)>2**32?b=Ii(String(A)):typeof A=="bigint"&&(b=String(A),(A>BigInt(2)**BigInt(32)||A<-(BigInt(2)**BigInt(32)))&&(b=Ii(b)),b+="n"),d+=` It must be ${c}. Received ${b}`,d},RangeError);function Ii(l){let c="",A=l.length,d=l[0]==="-"?1:0;for(;A>=d+4;A-=3)c=`_${l.slice(A-3,A)}${c}`;return`${l.slice(0,A)}${c}`}function As(l,c,A){Ut(c,"offset"),(l[c]===void 0||l[c+A]===void 0)&&on(c,l.length-(A+1))}function Ri(l,c,A,d,b,w){if(l>A||l<c){let B=typeof c=="bigint"?"n":"",$;throw c===0||c===BigInt(0)?$=`>= 0${B} and < 2${B} ** ${(w+1)*8}${B}`:$=`>= -(2${B} ** ${(w+1)*8-1}${B}) and < 2 ** ${(w+1)*8-1}${B}`,new Et.ERR_OUT_OF_RANGE("value",$,l)}As(d,b,w)}function Ut(l,c){if(typeof l!="number")throw new Et.ERR_INVALID_ARG_TYPE(c,"number",l)}function on(l,c,A){throw Math.floor(l)!==l?(Ut(l,A),new Et.ERR_OUT_OF_RANGE("offset","an integer",l)):c<0?new Et.ERR_BUFFER_OUT_OF_BOUNDS:new Et.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${c}`,l)}let us=/[^+/0-9A-Za-z-_]/g;function ms(l){if(l=l.split("=")[0],l=l.trim().replace(us,""),l.length<2)return"";for(;l.length%4!==0;)l=l+"=";return l}function Nr(l,c){c=c||1/0;let A,d=l.length,b=null,w=[];for(let B=0;B<d;++B){if(A=l.charCodeAt(B),A>55295&&A<57344){if(!b){if(A>56319){(c-=3)>-1&&w.push(239,191,189);continue}else if(B+1===d){(c-=3)>-1&&w.push(239,191,189);continue}b=A;continue}if(A<56320){(c-=3)>-1&&w.push(239,191,189),b=A;continue}A=(b-55296<<10|A-56320)+65536}else b&&(c-=3)>-1&&w.push(239,191,189);if(b=null,A<128){if((c-=1)<0)break;w.push(A)}else if(A<2048){if((c-=2)<0)break;w.push(A>>6|192,A&63|128)}else if(A<65536){if((c-=3)<0)break;w.push(A>>12|224,A>>6&63|128,A&63|128)}else if(A<1114112){if((c-=4)<0)break;w.push(A>>18|240,A>>12&63|128,A>>6&63|128,A&63|128)}else throw new Error("Invalid code point")}return w}function ls(l){let c=[];for(let A=0;A<l.length;++A)c.push(l.charCodeAt(A)&255);return c}function ds(l,c){let A,d,b,w=[];for(let B=0;B<l.length&&!((c-=2)<0);++B)A=l.charCodeAt(B),d=A>>8,b=A%256,w.push(b),w.push(d);return w}function vi(l){return s.toByteArray(ms(l))}function Mn(l,c,A,d){let b;for(b=0;b<d&&!(b+A>=c.length||b>=l.length);++b)c[b+A]=l[b];return b}function rt(l,c){return l instanceof c||l!=null&&l.constructor!=null&&l.constructor.name!=null&&l.constructor.name===c.name}function Wr(l){return l!==l}let ps=function(){let l="0123456789abcdef",c=new Array(256);for(let A=0;A<16;++A){let d=A*16;for(let b=0;b<16;++b)c[d+b]=l[A]+l[b]}return c}();function gt(l){return typeof BigInt>"u"?gs:l}function gs(){throw new Error("BigInt not supported")}return Rt}var cn,Mi,On,Oi,Rt,Di,Wi=Bt(()=>{g();y();f();cn={},Mi=!1;On={},Oi=!1;Rt={},Di=!1});var vt,C,jc,Zc,Ei=Bt(()=>{g();y();f();Wi();vt=Ni();vt.Buffer;vt.SlowBuffer;vt.INSPECT_MAX_BYTES;vt.kMaxLength;C=vt.Buffer,jc=vt.INSPECT_MAX_BYTES,Zc=vt.kMaxLength});var y=Bt(()=>{Ei()});import{bcs as Fe}from"@mysten/sui/bcs";function to(s,i=["<",">"]){let[r,a]=i,o=[],u="",m=0;for(let p=0;p<s.length;p++){let h=s[p];if(h===r&&m++,h===a&&m--,m===0&&h===","){o.push(u.trim()),u="";continue}u+=h}return o.push(u.trim()),o}function Pe(s){if(typeof s!="string")throw new Error(`Illegal type passed as a name of the type: ${s}`);let[i,r]=["<",">"],a=s.indexOf(i),o=Array.from(s).reverse().indexOf(r);if(a===-1&&o===-1)return{typeName:s,typeArgs:[]};if(a===-1||o===-1)throw new Error(`Unclosed generic in name '${s}'`);let u=s.slice(0,a),m=to(s.slice(a+1,s.length-o-1),[i,r]);return{typeName:u,typeArgs:m}}function Pa(s){return!s||typeof s!="object"||Array.isArray(s)?!1:"GasCoin"in s||"Input"in s||"Result"in s||"NestedResult"in s}function Z(s,i){return Pa(i)?i:s.object(i)}function Xe(s,i,r){if(Pa(i))return Z(s,i);function a(T){let{typeName:S,typeArgs:P}=Pe(T);switch(S){case"bool":return Fe.Bool;case"u8":return Fe.U8;case"u16":return Fe.U16;case"u32":return Fe.U32;case"u64":return Fe.U64;case"u128":return Fe.U128;case"u256":return Fe.U256;case"address":return Fe.Address;case"0x1::string::String":case"0x1::ascii::String":return Fe.String;case"0x2::object::ID":return Fe.Address;case"0x1::option::Option":return Fe.option(a(P[0]));case"vector":return Fe.vector(a(P[0]));default:throw new Error(`invalid primitive type ${T}`)}}function o(T){for(let S of T){if(typeof S>"u"||S===null)return!0;if(Array.isArray(S))return o(S)}return!1}function u(T){for(let S of T){if(!Array.isArray(S)){if(S===null)continue;switch(typeof S){case"string":case"number":case"bigint":case"boolean":continue;default:return!1}}return u(S)}return!0}function m(T){for(let S of T){if(!Array.isArray(S))switch(typeof S){case"string":case"number":case"bigint":case"boolean":return!0;default:continue}return m(S)}return!1}let{typeName:p,typeArgs:h}=Pe(r);switch(p){case"0x1::option::Option":if(i===null)return s.pure.option("bool",null);if(u([i]))return s.pure(a(r).serialize(i));if(m([i]))throw new Error("mixing primitive and TransactionArgument values is not supported");return s.moveCall({target:"0x1::option::some",typeArguments:[h[0]],arguments:[Xe(s,i,h[0])]});case"vector":if(!Array.isArray(i))throw new Error("expected an array for vector type");if(i.length===0)return s.pure(Fe.vector(Fe.Bool).serialize([]));if(o(i))throw new Error("the provided array contains undefined or null values");if(u(i))return s.pure(a(r).serialize(i));if(m(i))throw new Error("mixing primitive and TransactionArgument values is not supported");return s.makeMoveVec({type:h[0],elements:i});default:return s.pure(a(r).serialize(i))}}function no(s){let i=s.split("0x").join("");for(let r=0;r<i.length;r++)if(i[r]!=="0")return`0x${i.substring(r)}`;return"0x0"}function j(s){let{typeName:i,typeArgs:r}=Pe(s);switch(i){case"bool":case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"address":case"signer":return i;case"vector":return`vector<${j(r[0])}>`;default:{let a=i.split("::");a[0]=no(a[0]);let o=a.join("::");return r.length>0?`${o}<${r.map(u=>j(u)).join(",")}>`:o}}}function z(s,...i){return i.length>0?`${s}<${i.join(", ")}>`:s}var he=Bt(()=>{"use strict";g();y();f()});var Tt=Er((Xd,wa)=>{"use strict";g();y();f();he();var ei=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return j(s.$PACKAGE_ID)}get PUBLISHED_AT(){return j(s.$PUBLISHED_AT)}get PKG_V1(){return j(s.$PKG_V[1])}setPackageId(i){s.$PACKAGE_ID=i}setPublishedAt(i){s.$PUBLISHED_AT=i}setPkgV(i,r){s.$PKG_V[i]=r}setAddress(i,r){s.$PACKAGE_ID=i,s.$PUBLISHED_AT=i,s.$PKG_V[1]=r||i}},ro=new ei;wa.exports=ro});var ii=Er((rp,xa)=>{"use strict";g();y();f();he();var ri=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return j(s.$PACKAGE_ID)}get PUBLISHED_AT(){return j(s.$PUBLISHED_AT)}get PKG_V1(){return j(s.$PKG_V[1])}setPackageId(i){s.$PACKAGE_ID=i}setPublishedAt(i){s.$PUBLISHED_AT=i}setPkgV(i,r){s.$PKG_V[i]=r}setAddress(i,r){s.$PACKAGE_ID=i,s.$PUBLISHED_AT=i,s.$PKG_V[1]=r||i}},io=new ri;xa.exports=io});var oi=Er((dp,Ma)=>{"use strict";g();y();f();he();var si=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return j(s.$PACKAGE_ID)}get PUBLISHED_AT(){return j(s.$PUBLISHED_AT)}get PKG_V1(){return j(s.$PKG_V[1])}setPackageId(i){s.$PACKAGE_ID=i}setPublishedAt(i){s.$PUBLISHED_AT=i}setPkgV(i,r){s.$PKG_V[i]=r}setAddress(i,r){s.$PACKAGE_ID=i,s.$PUBLISHED_AT=i,s.$PKG_V[1]=r||i}},ao=new si;Ma.exports=ao});g();y();f();g();y();f();g();y();f();var Dn={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"https://lite-api.jup.ag/swap/v1",wormholeMessengerProgramId:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",solanaLookUpTable:"2JcBAEVnAwVo4u8d61iqgHPrzZuugur7cVTjWubsVLHj",sorobanNetworkPassphrase:"Public Global Stellar Network ; September 2015",tronJsonRpc:"https://api.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{ETH:0,AVA:1,OPT:2,ARB:3,SOL:5,BAS:6,POL:7,SUI:8}},cachePoolInfoChainSec:20},Kc={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},Hc={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org",SUI:"https://fullnode.mainnet.sui.io"};g();y();f();g();y();f();g();y();f();import{TronWeb as ho}from"tronweb";import{Web3 as To}from"web3";g();y();f();g();y();f();g();y();f();var ue=class extends Error{errorCode;constructor(i,r){super(r),this.errorCode=i}},O=class extends ue{constructor(i){super("SdkError",i)}},ut=class extends ue{constructor(i){super("InvalidAmountError",i)}},Gt=class extends ue{constructor(i){super("AmountNotEnoughError",i)}},mt=class extends ue{constructor(i){super("InsufficientPoolLiquidityError",i)}},Te=class extends ue{constructor(i){super("JupiterError",i)}},An=class extends ue{constructor(i){super("InvalidGasFeePaymentOptionError",i)}},Nn=class extends ue{constructor(i){super("InvalidMessengerOptionError",i)}},de=class extends ue{constructor(i){super("MethodNotSupportedError",i)}},un=class extends ue{constructor(i){super("VerifyTxError",i)}},Vt=class extends ue{constructor(i){super("InvalidTxError",i)}},Wn=class extends ue{constructor(i){super("ExtraGasMaxLimitExceededError",i)}},En=class extends ue{constructor(i,r,a){super("ArgumentInvalidDecimalsError",`Argument '${i}' decimals '${r}' cannot be greater than '${a}'`)}},mn=class extends ue{constructor(i){super("TimeoutError",i)}},Un=class extends ue{constructor(i){super("NodeRpcUrlNotInitializedError",`For chain '${i}' Node RPC URL not initialized`)}},Ie=class extends ue{constructor(i){super("CCTPDoesNotSupportedError",i)}},Re=class extends ue{constructor(i){super("OFTDoesNotSupportedError",i)}},Gn=class extends ue{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},Bs=(M=>(M.SDK_ERROR="SdkError",M.INVALID_AMOUNT_ERROR="InvalidAmountError",M.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",M.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",M.JUPITER_ERROR="JupiterError",M.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",M.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",M.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",M.VERIFY_TX_ERROR="VerifyTxError",M.INVALID_TX_ERROR="InvalidTxError",M.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",M.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",M.TIMEOUT_ERROR="TimeoutError",M.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",M.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",M.OFT_DOES_NOT_SUPPORTED_ERROR="OFTDoesNotSupportedError",M.TX_TOO_LARGE="TxTooLargeError",M))(Bs||{});g();y();f();var $e=(x=>(x.BSC="BSC",x.ETH="ETH",x.BAS="BAS",x.SOL="SOL",x.TRX="TRX",x.POL="POL",x.ARB="ARB",x.CEL="CEL",x.AVA="AVA",x.SRB="SRB",x.STLR="STLR",x.OPT="OPT",x.SUI="SUI",x.SNC="SNC",x))($e||{}),ie=(u=>(u.EVM="EVM",u.SOLANA="SOLANA",u.TRX="TRX",u.SRB="SRB",u.SUI="SUI",u))(ie||{});var Is={EVM:18,SOLANA:9,TRX:6,SRB:7,SUI:9},Rs={BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SNC:{chainSymbol:"SNC",chainId:"0x92",name:"Sonic",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"},SUI:{chainSymbol:"SUI",name:"Sui",chainType:"SUI"}},H=(()=>{let s={...Rs};return{addChainsProperties(i){s={...s,...i}},getChainProperty(i){let r=s[i];if(!r)throw new O(`Cannot find chain properties for ${i}`);return r},getChainsProperties(){return s},getChainDecimalsByType(i){return Is[i]}}})();g();y();f();var Vr=(m=>(m.OK="OK",m.INVALID="INVALID",m.FORBIDDEN="FORBIDDEN",m.UNINITIALIZED="UNINITIALIZED",m.CONTRACT_ADDRESS="CONTRACT_ADDRESS",m.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",m))(Vr||{});var Je=(u=>(u[u.ALLBRIDGE=1]="ALLBRIDGE",u[u.WORMHOLE=2]="WORMHOLE",u[u.CCTP=3]="CCTP",u[u.CCTP_V2=4]="CCTP_V2",u[u.OFT=5]="OFT",u))(Je||{});g();y();f();import{Big as Ui}from"big.js";async function pe(s,i){return await s.getPoolInfoByKey({chainSymbol:i.chainSymbol,poolAddress:i.poolAddress})}function q(s){if(Ui(s).lte(0))throw new ut("Amount must be greater than zero")}function ee(s,i,r){let a=Ui(i).toFixed(),[o,u]=a.split(".");if(u&&u.length>r)throw new En(s,u.length,r)}async function Vn(s,i,r){return await Promise.race([s,new Promise((a,o)=>{setTimeout(()=>o(new mn(i)),r)})])}async function jr(s,i,r,a){if(r<1)throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${r} was received.`);let o=0;for(;;)try{return await Vn(s(),i,a)}catch{if(++o>=r)throw new mn(i)}}async function Gi(s,i,r,a=1.5,o=!1){let u=[],m=0,p=await s();if(u.push(p),!i(p))return u;let h=new Date(Date.now()+r*1e3).valueOf(),T=1e3,S=T;for(;Date.now()<h;){let P=u[u.length-1];if(P===void 0||!i(P))break;m++,o&&console.info(`Waiting ${T}ms before trying again (bringing the total wait time to ${S}ms so far, of total ${r*1e3}ms)`),await new Promise(I=>setTimeout(I,T)),T=T*a,new Date(Date.now()+T).valueOf()>h&&(T=h-Date.now(),o&&console.info(`was gonna wait too long; new waitTime: ${T}ms`)),S=T+S;let k=await s(P);u.push(k),o&&i(k)&&console.info(`${m}. Called ${s.name}; ${u.length} prev attempts. Most recent: ${JSON.stringify(u[u.length-1],null,2)}`)}return u}g();y();f();import{Big as Vs}from"big.js";g();y();f();var vs={abi:[{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"uint256",name:"_chainPrecision",type:"uint256"},{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"},{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"},{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"gas",type:"uint256"}],name:"BridgingFeeFromTokens",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"bridgeTransactionCost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"messageTransactionCost",type:"uint256"}],name:"ReceiveFee",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Received",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes32",name:"sendToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"sendAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receiveAmount",type:"uint256"}],name:"Swapped",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{indexed:!1,internalType:"bytes32",name:"message",type:"bytes32"}],name:"TokensReceived",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"addBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract Pool",name:"pool",type:"address"},{internalType:"bytes32",name:"token",type:"bytes32"}],name:"addPool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"canSwap",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"address",name:"tokenAddress",type:"address"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageGasUsage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"hasReceivedMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"}],name:"hasSentMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"hashMessage",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"otherBridgeTokens",outputs:[{internalType:"bool",name:"isSupported",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"otherBridges",outputs:[{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"tokenId",type:"bytes32"}],name:"pools",outputs:[{internalType:"contract Pool",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"processedMessages",outputs:[{internalType:"uint256",name:"isProcessed",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],name:"registerBridge",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"removeBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"sentMessages",outputs:[{internalType:"uint256",name:"isSent",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"}],name:"setAllbridgeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_rebalancer",type:"address"}],name:"setRebalancer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"}],name:"setWormholeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"feeTokenAmount",type:"uint256"}],name:"swapAndBridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"withdrawBridgingFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGasTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Vi=vs;g();y();f();var ks={abi:[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"address",name:"cctpMessenger_",type:"address"},{internalType:"address",name:"cctpTransmitter_",type:"address"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedExtraGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"RecipientReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"}],name:"TokensSentExtras",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridgeWithWalletAddress",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"changeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getDomainByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint64",name:"nonce",type:"uint64"}],name:"isMessageProcessed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bytes",name:"message",type:"bytes"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"domain",type:"uint32"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},ji=ks;g();y();f();var xs={abi:[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[{internalType:"uint16",name:"optionType",type:"uint16"}],name:"InvalidOptionType",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"address",name:"tokenAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFeeWithExtraGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"extraGasDestinationToken",type:"uint256"}],name:"OftTokensSent",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{internalType:"address",name:"oft_",type:"address"}],name:"addToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress",type:"address"}],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"feeShare",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"},{internalType:"uint256",name:"extraGasInDestinationToken",type:"uint256"},{internalType:"uint256",name:"slippageBP",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress_",type:"address"},{internalType:"uint256",name:"destinationChainId_",type:"uint256"},{internalType:"uint128",name:"extraGasAmount_",type:"uint128"}],name:"extraGasPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getEidByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress",type:"address"}],name:"oftAddress",outputs:[{internalType:"address",name:"oftAddress",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"eid_",type:"uint32"},{internalType:"uint128",name:"lzGasLimit_",type:"uint128"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress_",type:"address"},{internalType:"uint256",name:"destinationChainId_",type:"uint256"}],name:"relayerFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"oft_",type:"address"}],name:"removeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress_",type:"address"},{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint128",name:"lzGasLimit_",type:"uint128"}],name:"setLzGasLimit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"maxExtraGas_",type:"uint256"}],name:"setMaxExtraGas",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token_",type:"address"}],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount_",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Zi=xs;g();y();f();import*as _n from"@project-serum/anchor";import{PublicKey as ca}from"@solana/web3.js";g();y();f();import*as be from"@project-serum/anchor";import{PublicKey as ve}from"@solana/web3.js";async function Qe(s,i){return be.utils.token.associatedAddress({mint:i,owner:s})}async function ft(s){let[i]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("config")],s);return i}async function _i(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("lock"),Uint8Array.from(s)],i);return r}async function ln(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([s])],i);return r}async function jt(s){let i=await ft(s),[r]=await ve.findProgramAddress([i.toBuffer()],s);return r}async function $i(s,i){let[r]=await ve.findProgramAddress([s.toBuffer()],i);return r}async function Zt(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("token"),s.toBytes()],i);return r}async function Ji(s,i,r){let[a]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("other_bridge_token"),C.from([s]),i],r);return a}async function Zr(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([s])],i);return r}async function _r(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([s])],i);return r}async function Li(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("sent_message"),s],i);return r}async function $r(s,i,r){let[a]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("user_deposit"),i.toBytes(),s.toBytes()],r);return a}async function Xi(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("cctp_bridge"),s.toBytes()],i);return r}async function Yi(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("token"),s.toBytes()],i);return r}function Ki(s,i){let[r]=ve.findProgramAddressSync([be.utils.bytes.utf8.encode("lock"),i.toBuffer()],s);return r}function Hi(s,i,r,a){let o=kt("message_transmitter",r),u=kt("token_messenger",a),m=kt("__event_authority",a),p=kt("token_minter",a),h=kt("local_token",a,[i]),T=kt("remote_token_messenger",a,[s.toString()]),S=kt("sender_authority",a);return{messageTransmitterAccount:o,tokenMessenger:u,tokenMessengerEventAuthority:m,tokenMinter:p,localToken:h,remoteTokenMessengerKey:T,authorityPda:S}}function kt(s,i,r=[]){let a=[C.from(be.utils.bytes.utf8.encode(s))];for(let u of r)typeof u=="string"?a.push(C.from(be.utils.bytes.utf8.encode(u))):Array.isArray(u)?a.push(C.from(Uint8Array.from(u))):C.isBuffer(u)?a.push(C.from(Uint8Array.from(u))):a.push(C.from(Uint8Array.from(u.toBuffer())));return ve.findProgramAddressSync(a,i)[0]}g();y();f();import{AnchorProvider as Fs}from"@project-serum/anchor";import{Connection as Ms,PublicKey as Os}from"@solana/web3.js";function yt(s,i){let r=new Ms(s,"confirmed"),a=new Os(i);return new Fs(r,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}g();y();f();import{PublicKey as Ds}from"@solana/web3.js";import{Address as Ns}from"@stellar/stellar-sdk";import{Big as We}from"big.js";import aa from"randombytes";import{utils as ra}from"tronweb";g();y();f();import{Big as E}from"big.js";import Jr from"bn.js";g();y();f();function Lr(s,i){return E(100).minus(E(100).times(i).div(s)).toNumber()}function xt(s,i){return Le(s,i,3).round(0,E.roundDown)}function Ne(s,i){return Le(s,3,i)}function Le(s,i,r){let a=E(r).minus(i).toNumber();return E(s).times(dn(a))}function dn(s){return E(10).pow(s)}function Q(s,i){return E(s).times(dn(i))}function J(s,i){let r=E(s);return r.eq(0)?E(0):E(r).div(dn(i))}function ke(s){return J(E(s.tokenBalance).minus(s.vUsdBalance).toFixed(),3).div(2).toFixed()}function it(s,{feeShare:i,decimals:r},a){let o=E(s);if(o.lte(0))return"0";let u=o.times(i),m=o.minus(u),p=xt(m,r),h=E(a.tokenBalance).plus(p),T=at(h,a.aValue,a.dValue);return E(a.vUsdBalance).minus(T).round(0,E.roundDown).toFixed()}function pn(s,{feeShare:i,decimals:r},a){let o=E(s);if(o.lte(0))return E(0).toFixed();let u=o.plus(a.vUsdBalance),m=at(u,a.aValue,a.dValue),p=Ne(E(a.tokenBalance).minus(m),r),h=E(p).times(i);return E(p).minus(h).round(0,E.roundDown).toFixed()}function Qi(s,i){let r=E(s);if(r.lte(0))return i;let a=r.plus(i.vUsdBalance),o=at(a,i.aValue,i.dValue);return{aValue:i.aValue,dValue:i.dValue,tokenBalance:o.toFixed(0),vUsdBalance:a.toFixed(0)}}function zi(s,{feeShare:i,decimals:r},a){if(E(s).lte(0))return E(0);let o=E(a.vUsdBalance).minus(s);if(o.lte(0))throw new mt;let u=at(o,a.aValue,a.dValue),m=E(u).minus(a.tokenBalance),p=Ne(m,r),h=E(i).div(E(1).minus(i)),T=E(p).times(h).round(0,E.roundUp);return E(p).plus(T).round(0,E.roundDown)}function qi(s,{feeShare:i,decimals:r},a){if(E(s).lte(0))return E(0);let o=E(i).div(E(1).minus(i)),u=E(s).times(o).round(0,E.roundUp),m=E(s).plus(u),p=xt(m,r),h=E(a.tokenBalance).minus(p);if(h.lte(0))throw new mt;let T=at(h,a.aValue,a.dValue);return E(T).minus(a.vUsdBalance).round(0,E.roundDown)}function at(s,i,r){let a=E(4).times(i).times(E(r).minus(s)).minus(r),o=E(r).pow(3),u=a.pow(2),m=E(s).times(E(s).times(u).plus(E(4).times(i).times(o))).sqrt().round(0,E.roundDown),p=E(8).times(i).times(s),h=a.times(s).plus(m).div(p).round(0,E.roundDown);return h.eq(0)?E(0):h.plus(1)}function ea(s,i,r,a){let o=new Jr(s),u=new Jr(r),m=new Jr(i);return o.mul(u).shrn(a).sub(m).toString()}function ta(s){return E(s).gt(0)?`${Number(E(s).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function na(s,i,r){let a=E(i).times(r),o=E(i).plus(r),u=E(8).times(s).times(a).times(o),m=a.times(E(16).times(s).minus(4)).div(3),p=u.times(u),h=m.times(m).times(m),T=p.plus(h),S=E(T).sqrt(),P=E(Math.cbrt(+u.plus(S).toFixed())),k=E(Math.cbrt(+u.minus(S).toFixed()));return P.plus(k).toFixed()}function lt(s,i,r){let a;switch(i){case"EVM":{a=ia(s);break}case"SOLANA":{a=new Ds(s).toBuffer();break}case"TRX":{a=Ws(s);break}case"SRB":{a=new Ns(s).toBuffer();break}case"SUI":{a=ia(s);break}}switch(r){case"EVM":return"0x"+a.toString("hex");case"SOLANA":return Array.from(a);case"TRX":return a;case"SRB":return a.toJSON().data;case"SUI":return"0x"+a.toString("hex")}}function ze(s){return s.replace(/^0x/i,"")}function sa(s){return C.from(s.replace(/^0x/i,""),"hex")}function ia(s){let r=sa(s);return C.concat([C.alloc(32-r.length,0),r],32)}function Ws(s){let i=gn(s),r=sa(i);return Es(r,32)}function gn(s){let i=ra.crypto.decodeBase58Address(s);return i?ra.bytes.byteArray2hexStr(i).replace(/^41/,"0x"):""}function Es(s,i){if(s.length>=i)return s;let r=C.alloc(i,0);return s.copy(r,i-s.length),r}function jn(){return aa(32)}function st(){let s=aa(32).readBigInt64BE();return s<0?s*-1n:s}function ot(s,i){let r={},a=i.sourceToken;if(r.amount=Q(i.amount,a.decimals).toFixed(),r.contractAddress=a.bridgeAddress,r.fromAccountAddress=i.fromAccountAddress,s==="SUI"){if(!a.originTokenAddress)throw new O("SUI sourceToken must contain 'originTokenAddress'");r.fromTokenAddress=a.originTokenAddress}else r.fromTokenAddress=lt(a.tokenAddress,s,s);if(r.toAccountAddress=i.toAccountAddress,s==="SUI"){if(!i.destinationToken.originTokenAddress)throw new O("SUI destinationToken must contain 'originTokenAddress'");r.toTokenAddress=i.destinationToken.originTokenAddress}else r.toTokenAddress=lt(i.destinationToken.tokenAddress,s,s);return r.minimumReceiveAmount=i.minimumReceiveAmount?Q(i.minimumReceiveAmount,i.destinationToken.decimals).toFixed():"0",r}async function qe(s,i,r){let a={};a.fromChainId=i.sourceToken.allbridgeChainId,a.fromChainSymbol=i.sourceToken.chainSymbol;let o=H.getChainProperty(i.destinationToken.chainSymbol).chainType;if(s==="SUI"){if(!i.sourceToken.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");a.fromTokenAddress=i.sourceToken.originTokenAddress}else a.fromTokenAddress=i.sourceToken.tokenAddress;a.toChainId=i.destinationToken.allbridgeChainId,a.toTokenAddress=i.destinationToken.tokenAddress,i.gasFeePaymentMethod==="stablecoin"?a.gasFeePaymentMethod="stablecoin":a.gasFeePaymentMethod="native";let u=i.sourceToken;switch(i.messenger){case 3:if(!u.cctpAddress||!i.destinationToken.cctpAddress)throw new Ie("Such route does not support CCTP protocol");a.contractAddress=u.cctpAddress;break;case 4:if(!u.cctpV2Address||!i.destinationToken.cctpV2Address)throw new Ie("Such route does not support CCTP V2 protocol");a.contractAddress=u.cctpV2Address;break;case 5:if(!u.oftBridgeAddress||!i.destinationToken.oftBridgeAddress||u.oftId!==i.destinationToken.oftId)throw new Re("Such route does not support OFT protocol");a.contractAddress=u.oftBridgeAddress;break;case 1:case 2:a.contractAddress=u.bridgeAddress;break}a.messenger=i.messenger,a.fromAccountAddress=i.fromAccountAddress,a.amount=Q(i.amount,u.decimals).toFixed();let{fee:m,feeFormat:p}=i;if(!m){let P=(await Xr(i.sourceToken,a.toChainId,a.messenger,r))[a.gasFeePaymentMethod];if(!P)throw new An;m=P.int,p="int"}if(p=="float")switch(a.gasFeePaymentMethod){case"native":a.fee=Q(m,H.getChainDecimalsByType(u.chainType)).toFixed(0);break;case"stablecoin":a.fee=Q(m,u.decimals).toFixed(0);break}else a.fee=m;let{extraGas:h,extraGasFormat:T}=i;if(h&&+h>0){let S=await Yr(u,i.destinationToken,a.messenger,r),P,k;switch(a.gasFeePaymentMethod){case"native":P=H.getChainDecimalsByType(u.chainType),k=We(S.exchangeRate);break;case"stablecoin":P=u.decimals,k=We(S.exchangeRate).div(S.sourceNativeTokenPrice);break}switch(T??"int"){case"float":{a.extraGas=Q(h,P).toFixed(0);let I=k.mul(h);a.extraGasDest=Q(I,H.getChainDecimalsByType(i.destinationToken.chainType)).toFixed(0,We.roundDown);break}case"int":{a.extraGas=h;let I=J(a.extraGas,H.getChainDecimalsByType(u.chainType)),x=k.mul(I);a.extraGasDest=Q(x,H.getChainDecimalsByType(i.destinationToken.chainType)).toFixed(0,We.roundDown);break}}Gs(a.extraGas,a.gasFeePaymentMethod,S)}return s!=="SUI"&&(a.fromTokenAddress=lt(a.fromTokenAddress,s,s)),a.toAccountAddress=lt(i.toAccountAddress,o,s),a.toTokenAddress=lt(a.toTokenAddress,o,s),a.gasFeePaymentMethod=="stablecoin"&&Us(a.amount,u.decimals,a.fee,a.extraGas),a}function Us(s,i,r,a){let o=We(s).minus(r).minus(a??0);if(o.lte(0))throw new Gt(`Amount not enough to pay fee, ${J(We(o).minus(1).neg(),i).toFixed()} stables is missing`)}async function Xr(s,i,r,a){let o=await a.getReceiveTransactionCost({sourceChainId:s.allbridgeChainId,destinationChainId:i,messenger:r,sourceToken:s.tokenAddress}),u={native:{int:o.fee,float:J(o.fee,H.getChainDecimalsByType(s.chainType)).toFixed()},adminFeeShareWithExtras:o.adminFeeShareWithExtras};if(o.sourceNativeTokenPrice){let m=Le(new We(o.fee).mul(o.sourceNativeTokenPrice),H.getChainDecimalsByType(s.chainType),s.decimals).toFixed(0,We.roundUp);u.stablecoin={int:m,float:J(m,s.decimals).toFixed()}}return u}function Gs(s,i,r){let a=r.extraGasMax[i];if(!a)throw new An(`Impossible to pay extra gas by '${i}' payment method`);let o=a.int;if(We(s).gt(o))throw new Wn(`Extra gas ${s} in int format, exceeded limit ${o} for '${i}' payment method`)}async function Yr(s,i,r,a){let o={},u=await a.getReceiveTransactionCost({sourceChainId:s.allbridgeChainId,destinationChainId:i.allbridgeChainId,messenger:r,sourceToken:s.tokenAddress}),m=i.txCostAmount.maxAmount,p=J(m,H.getChainDecimalsByType(i.chainType)).toFixed(),h=We(p).div(u.exchangeRate).toFixed(H.getChainDecimalsByType(s.chainType),We.roundDown),T=Q(h,H.getChainDecimalsByType(s.chainType)).toFixed(0);if(o.native={int:T,float:h},u.sourceNativeTokenPrice){let S=We(h).mul(u.sourceNativeTokenPrice).toFixed(s.decimals,We.roundDown);o.stablecoin={int:Q(S,s.decimals).toFixed(0),float:S}}return{extraGasMax:o,destinationChain:{gasAmountMax:{int:m,float:p},swap:{int:i.txCostAmount.swap,float:J(i.txCostAmount.swap,H.getChainDecimalsByType(i.chainType)).toFixed()},transfer:{int:i.txCostAmount.transfer,float:J(i.txCostAmount.transfer,H.getChainDecimalsByType(i.chainType)).toFixed()}},exchangeRate:u.exchangeRate,sourceNativeTokenPrice:u.sourceNativeTokenPrice}}function oa(s){return s.sourceToken.chainSymbol!==s.destinationToken.chainSymbol}async function $n(s,i,r,a){let o,u=new ca(i),m=new ca(r),p=await Qe(u,m),h=yt(a,i);_n.setProvider(h);let T=await _n.Spl.token(h).account.token.fetchNullable(p);if(T?.authority.equals(u))o=lt(p.toBase58(),"SOLANA",s);else{let S=await h.connection.getTokenAccountsByOwner(u,{mint:m});if(S.value.length===0&&!T)o=lt(p.toBase58(),"SOLANA",s);else if(S.value.length>0){let P=S.value[0];if(!P?.pubkey)throw new O("First token account or its public key is undefined");o=lt(P.pubkey.toBase58(),"SOLANA",s)}else throw new O("Associated account has wrong owner")}return o}g();y();f();g();y();f();var Ee=class{};var fn=class extends Ee{constructor(r,a,o){super();this.web3=r;this.api=a;this.nodeRpcUrlsConfig=o}chainType="EVM";async send(r){let a=await this.buildRawTransactionSend(r);return this.sendRawTransaction(a)}async buildRawTransactionSwap(r){let a=ot(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:o,fromAccountAddress:u,fromTokenAddress:m,toAccountAddress:p,toTokenAddress:h,minimumReceiveAmount:T}=r,P=this.getBridgeContract(o).methods.swap(a,m,h,p,T);return Promise.resolve({from:u,to:o,data:P.encodeABI()})}async buildRawTransactionSend(r){let a=await qe(this.chainType,r,this.api),{amount:o,contractAddress:u,fromAccountAddress:m,fromTokenAddress:p,toChainId:h,toAccountAddress:T,toTokenAddress:S,messenger:P,fee:k,gasFeePaymentMethod:I,extraGas:x,extraGasDest:F}=a,N="0x"+jn().toString("hex"),M,D,W=k;switch(x&&(W=Vs(W).plus(x).toFixed()),P){case 3:case 4:{let U=await this.buildRawTransactionCctpSend(r,a,W);M=U.sendMethod,D=U.value;break}case 5:{let U=this.buildRawTransactionOftSend(r,a,W,F);M=U.sendMethod,D=U.value;break}case 1:case 2:{let U=this.getBridgeContract(u);I==="stablecoin"?(M=U.methods.swapAndBridge(p,o,T,h,S,N,P,W),D="0"):(M=U.methods.swapAndBridge(p,o,T,h,S,N,P,0),D=W)}break}return Promise.resolve({from:m,to:u,value:D,data:M.encodeABI()})}async buildRawTransactionCctpSend(r,a,o){let{amount:u,contractAddress:m,toChainId:p,toAccountAddress:h,gasFeePaymentMethod:T}=a,S=this.getCctpBridgeContract(m),P,k;if(r.destinationToken.chainType==="SOLANA"){let I=await $n(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));T==="stablecoin"?(P=S.methods.bridgeWithWalletAddress(u,I,h,p,o),k="0"):(P=S.methods.bridgeWithWalletAddress(u,I,h,p,0),k=o)}else T==="stablecoin"?(P=S.methods.bridge(u,h,p,o),k="0"):(P=S.methods.bridge(u,h,p,0),k=o);return{sendMethod:P,value:k}}buildRawTransactionOftSend(r,a,o,u){let{amount:m,contractAddress:p,toChainId:h,toAccountAddress:T,gasFeePaymentMethod:S}=a,P=this.getOftBridgeContract(p),k,I;return S==="stablecoin"?(k=P.methods.bridge(r.sourceToken.tokenAddress,m,T,h,o,u??"0","10"),I="0"):(k=P.methods.bridge(r.sourceToken.tokenAddress,m,T,h,0,u??"0","10"),I=o),{sendMethod:k,value:I}}async sendRawTransaction(r){let a=await this.web3.eth.estimateGas(r),o={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:u}=await this.web3.eth.sendTransaction({...r,gas:a,...o});return{txId:u.toString()}}getBridgeContract(r){return new this.web3.eth.Contract(Vi.abi,r)}getCctpBridgeContract(r){return new this.web3.eth.Contract(ji.abi,r)}getOftBridgeContract(r){return new this.web3.eth.Contract(Zi.abi,r)}};g();y();f();var Jn=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o}async approve(i,r){let a,o;r?(a=i,o=r):o=i;let u=yn(o.token,o.messenger);return this.tokenService.buildRawTransactionApprove({...o,spender:u},a)}async send(i,r){return q(i.amount),ee("amount",i.amount,i.sourceToken.decimals),oa(i)?Ln(i.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSend(i):Ln(i.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSwap(i)}};g();y();f();import{BN as Jt,Program as Qr,Spl as Hs,web3 as ht}from"@project-serum/anchor";import{Keypair as ba,PublicKey as re,SystemProgram as Qs}from"@solana/web3.js";import{Big as et}from"big.js";g();y();f();var hn={version:"0.1.0",name:"bridge",instructions:[{name:"initialize",accounts:[{name:"admin",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializePool",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"token",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializePoolArgs"}}]},{name:"initDepositAccount",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"deposit",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdraw",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amountLp",type:"u64"}]},{name:"swapAndBridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"messenger",isMut:!1,isSigner:!1},{name:"messengerConfig",isMut:!0,isSigner:!1},{name:"sentMessageAccount",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swapAndBridgeWormhole",accounts:[{name:"user",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"wormholeMessenger",isMut:!1,isSigner:!1},{name:"wormholeMessengerConfig",isMut:!0,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"bridge",isMut:!0,isSigner:!1},{name:"message",isMut:!0,isSigner:!0},{name:"sequence",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swap",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"sendMint",isMut:!1,isSigner:!1},{name:"receiveMint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"sendPool",isMut:!0,isSigner:!1},{name:"receivePool",isMut:!0,isSigner:!1},{name:"sendBridgeToken",isMut:!0,isSigner:!1},{name:"receiveBridgeToken",isMut:!0,isSigner:!1},{name:"sendUserToken",isMut:!0,isSigner:!1},{name:"receiveUserToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"},{name:"receiveAmountMin",type:"u64"}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"receiveAndSwap",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"receiveAndSwapWormhole",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"claimRewards",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAdmin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAdmin",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"startBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"stopBridge",accounts:[{name:"stopAuthority",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"setRebalancer",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"rebalancer",isMut:!1,isSigner:!1}],args:[]},{name:"setStopAuthority",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAuthority",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"setAllbridgeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setWormholeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setPoolFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setBalanceRatioMin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"balanceRatioMinBp",type:"u16"}]},{name:"setPoolAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"addOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"removeOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"adjustTotalLpAmount",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"chainBridge",type:{kind:"struct",fields:[{name:"address",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"config",type:{kind:"struct",fields:[{name:"admin",type:"publicKey"},{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"rebalancer",type:"publicKey"},{name:"stopAuthority",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"canSwap",type:"bool"},{name:"canDeposit",type:"bool"},{name:"canWithdraw",type:"bool"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"sentTokenAddress",type:"publicKey"},{name:"amount",type:"u64"},{name:"vusdAmount",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"nonce",type:{array:["u8",32]}},{name:"messenger",type:{defined:"Messenger"}},{name:"slot",type:"u64"},{name:"fee",type:"u64"}]}},{name:"otherBridgeToken",type:{kind:"struct",fields:[]}},{name:"pool",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"a",type:"u64"},{name:"d",type:"u64"},{name:"tokenBalance",type:"u64"},{name:"vUsdBalance",type:"u64"},{name:"reserves",type:"u64"},{name:"decimals",type:"u8"},{name:"totalLpAmount",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"accRewardPerShareP",type:"u128"},{name:"adminFeeAmount",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"unlock",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"fee",type:"u64"},{name:"vUsdAmount",type:"u64"},{name:"slot",type:"u64"}]}},{name:"userDeposit",type:{kind:"struct",fields:[{name:"userAddress",type:"publicKey"},{name:"mint",type:"publicKey"},{name:"lpAmount",type:"u64"},{name:"rewardDebt",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"}]}},{name:"InitializePoolArgs",type:{kind:"struct",fields:[{name:"a",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"vusdAmount",type:"u64"}]}},{name:"UnlockArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"recipient",type:"publicKey"},{name:"sourceChainId",type:"u8"},{name:"receiveToken",type:"publicKey"},{name:"messenger",type:{defined:"Messenger"}},{name:"hash",type:{array:["u8",32]}},{name:"receiveAmountMin",type:"u64"}]}},{name:"RewardError",type:{kind:"enum",variants:[{name:"FeeTooHigh"}]}},{name:"Messenger",type:{kind:"enum",variants:[{name:"None"},{name:"Allbridge"},{name:"Wormhole"}]}},{name:"ActionType",type:{kind:"enum",variants:[{name:"Deposit"},{name:"Withdraw"},{name:"Swap"}]}}],errors:[{code:6e3,name:"AccountAlreadyInitialized",msg:"This account has already been initialized"},{code:6001,name:"AdminAuthorityInvalid",msg:"This instruction requires admin authority"},{code:6002,name:"InvalidSignature",msg:"Provided signature has wrong signer or message"},{code:6003,name:"InvalidHash",msg:"Wrong unlock message hash"},{code:6004,name:"PoolOverflow",msg:"PoolInfo overflow"},{code:6005,name:"ReservesExhausted",msg:"Reserves exhausted"},{code:6006,name:"ZeroAmount",msg:"Zero amount"},{code:6007,name:"ZeroChanges",msg:"Zero changes"},{code:6008,name:"HighVusdAmount",msg:"vUSD amount is too high"},{code:6009,name:"BalanceRatioExceeded",msg:"Balance ratio exceeded"},{code:6010,name:"InsufficientReceivedAmount",msg:"Received insufficient amount"},{code:6011,name:"ForbiddenAction",msg:"ForbiddenAction"},{code:6012,name:"ValueTooHigh",msg:"Value is too high"}]};g();y();f();var Aa={version:"0.1.0",name:"cctp_bridge",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"bridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"cctpMessenger",isMut:!1,isSigner:!1},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"messageTransmitterAccount",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"remoteTokenMessengerKey",isMut:!1,isSigner:!1},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"setAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setCctpTokenMessengerMinter",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]}],accounts:[{name:"cctpBridge",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"admin",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"adminFeeShareBp",type:"u64"},{name:"adminFeeAmount",type:"u64"}]}},{name:"chainBridge",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"amount",type:"u64"},{name:"adminFee",type:"u64"},{name:"relayerFee",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"slot",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"amount",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"gasOracleProgramId",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"}]}}],errors:[{code:6e3,name:"ValueTooHigh",msg:"Value is too high"}]};g();y();f();import{Spl as js}from"@project-serum/anchor";import Zs from"big.js";import{Web3 as Xn}from"web3";async function _t(s,i){return await js.token(i).account.token.fetch(s)}async function ua(s,i,r){let a=await i.account.pool.fetch(r),o=a.decimals,u=Zs(a.feeShareBp.toString()).div(1e4).toFixed(),m={aValue:a.a.toString(),dValue:a.d.toString(),totalLpAmount:a.totalLpAmount.toString(),tokenBalance:a.tokenBalance.toString(),vUsdBalance:a.vUsdBalance.toString(),accRewardPerShareP:a.accRewardPerShareP.toString()};return it(s,{decimals:o,feeShare:u},m)}function ma(s){let i=s.amount,r="0x"+s.recipient.toString("hex"),a=s.sourceChainId,o=s.destinationChainId,u="0x"+s.receiveToken.toString("hex"),m="0x"+s.nonce.toString("hex"),p=1,h="0x"+s.chainBridge.toString("hex"),T=Xn.utils.encodePacked({t:"uint256",v:i},{t:"bytes32",v:r},{t:"uint256",v:a},{t:"bytes32",v:u},{t:"uint256",v:m},{t:"uint8",v:p});if(!T)throw new O("message cannot be undefined");let S=Xn.utils.keccak256(C.from(T.replace("0x",""),"hex")),P=C.from(S.replace("0x",""),"hex");P[0]=a,P[1]=o;let k=Xn.utils.encodePacked({t:"bytes32",v:"0x"+P.toString("hex")},{t:"bytes32",v:h});if(!k)throw new Vt("messageWithSigner cannot be undefined");let I=Xn.utils.keccak256(C.from(k.replace("0x",""),"hex")),x=C.from(I.replace("0x",""),"hex");return x[0]=P[0],x[1]=P[1],x}g();y();f();import{ComputeBudgetInstruction as da,ComputeBudgetProgram as Yn,Connection as pa,TransactionMessage as _s}from"@solana/web3.js";import{Big as $s}from"big.js";g();y();f();import{AddressLookupTableAccount as la}from"@solana/web3.js";async function Mt(s,i){return await Promise.all(s.message.addressTableLookups.map(async r=>new la({key:r.accountKey,state:la.deserialize(await i.getAccountInfo(r.accountKey).then(a=>{if(!a)throw new O("Cannot get AccountInfo");return a.data}))})))}g();y();f();g();y();f();var Kr="AUTO";async function $t(s,i,r){let a=new pa(r,"confirmed"),o=(await a.simulateTransaction(s)).value.unitsConsumed;await fa(s.instructions,o,i,a)}async function ga(s,i,r){let a=new pa(r,"confirmed"),o=await Mt(s,a),u=_s.decompile(s.message,{addressLookupTableAccounts:o});if(s.serialize().length>1232)throw new Gn;await fa(u.instructions,769230,i,a),s.message=u.compileToV0Message(o)}async function fa(s,i,r,a){if(i>0){let o=Js(i,s);if(r?.solana){let u=r.solana;if(u===Kr)await Hr(s,a);else if("pricePerUnitInMicroLamports"in u)await Hr(s,a,u.pricePerUnitInMicroLamports);else{let m=$s(u.extraFeeInLamports).div(o).mul(dn(6)).toFixed(0);await Hr(s,a,m)}}}}function Js(s,i){let r=i.findIndex(u=>u.programId.equals(Yn.programId)&&da.decodeInstructionType(u)==="SetComputeUnitLimit"),a=Number((s*1.3).toFixed(0)),o=Yn.setComputeUnitLimit({units:a});return r>=0?i[r]=o:i.push(o),a.toString()}async function Hr(s,i,r){let a=s.findIndex(m=>m.programId.equals(Yn.programId)&&da.decodeInstructionType(m)==="SetComputeUnitPrice"),o=BigInt(r||await Ls(i)),u=Yn.setComputeUnitPrice({microLamports:o});return a>=0?s[a]=u:s.push(u),o.toString()}async function Ls(s){let i=await s.getRecentPrioritizationFees(),r=0;for(let a of i)r+=a.prioritizationFee;return(r/i.length).toFixed(0)}g();y();f();import{NATIVE_MINT as Xs}from"@solana/spl-token";import{Connection as Ys,TransactionMessage as ya,VersionedTransaction as Ks}from"@solana/web3.js";import ha,{AxiosError as Ta}from"axios";var Kn=class{connection;jupiterUrl;apiKeyHeader;maxAccounts;constructor(i,r){this.connection=new Ys(i),this.jupiterUrl=r.jupiterUrl.replace(/\/$/,""),this.apiKeyHeader=r.jupiterApiKeyHeader,this.maxAccounts=r.jupiterMaxAccounts}async getJupiterSwapTx(i,r,a,o){let u;try{let P=o?"ExactOut":"ExactIn",k=`${this.jupiterUrl}/quote?inputMint=${r}&outputMint=${Xs.toString()}&amount=${a}&swapMode=${P}&slippageBps=100&onlyDirectRoutes=true`;this.maxAccounts&&(k+=`&maxAccounts=${this.maxAccounts}`),u=await ha.get(k,{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(P){throw P instanceof Ta&&P.response&&P.response.data&&P.response.data.error?new Te(P.response.data.error):new Te("Cannot get route")}let m;if(o&&u?.data?.inAmount)m=u.data.inAmount;else if(o)throw new Te("Cannot get inAmount");let p;try{p=await ha.post(`${this.jupiterUrl}/swap`,{quoteResponse:u.data,userPublicKey:i,wrapAndUnwrapSol:!0},{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(P){throw P instanceof Ta&&P.response&&P.response.data&&P.response.data.error?new Te(P.response.data.error):new Te("Cannot get swap transaction")}let h;if(p?.data?.swapTransaction)h=p.data.swapTransaction;else throw new Te("Cannot get swap transaction");let T=C.from(h,"base64"),S=Ks.deserialize(T);return o?{tx:S,amountIn:m}:{tx:S}}async amendJupiterWithSdkTx(i,r){try{let a=await Mt(i,this.connection),o=await Mt(r,this.connection),u=ya.decompile(i.message,{addressLookupTableAccounts:a}),m=ya.decompile(r.message,{addressLookupTableAccounts:o});if(m.instructions.shift(),u.instructions.push(...m.instructions),a.push(...o),i.message=u.compileToV0Message(a),r.message.header.numRequiredSignatures===2&&i.signatures.length===1){let p=r.signatures[0];if(!p)throw new O("Signature is undefined");i.signatures.push(p)}return i}catch(a){throw a instanceof Error&&a.message?new Te(`Some error occurred during creation final swap and bridge transaction. ${a.message}`):new Te("Some error occurred during creation final swap and bridge transaction")}}};var zr=1e6,Sa=1.1,Hn=class extends Ee{constructor(r,a,o){super();this.solanaRpcUrl=r;this.params=a;this.api=o;this.jupiterService=new Kn(r,a.jupiterParams)}chainType="SOLANA";jupiterService;async buildRawTransactionSwap(r){let a=ot(this.chainType,r);return await this.buildSwapTransaction(a,r.sourceToken.poolAddress,r.destinationToken.poolAddress,r.txFeeParams)}async buildSwapTransaction(r,a,o,u){let{fromAccountAddress:m,amount:p,contractAddress:h,fromTokenAddress:T,toTokenAddress:S,toAccountAddress:P,minimumReceiveAmount:k}=r,I=m,x=h,F=T,N=S,M=o,D=P,W=new re(I),U=yt(this.solanaRpcUrl,W.toString()),V=new Qr(hn,x,U),L=await jt(V.programId),fe=await ft(V.programId),Ae=new re(F),Ve=await Zt(Ae,V.programId),je=new re(a),Ke=await Qe(W,Ae),Me=new re(D),ye=new re(N),Ce=await Zt(ye,V.programId),Oe=new re(M),Be=await Qe(Me,ye),Ze=[ht.ComputeBudgetProgram.setComputeUnitLimit({units:zr})];try{await _t(Be,U)}catch{let Fn=await Hs.associatedToken(U).methods.create().accounts({mint:ye,owner:Me,associatedAccount:Be}).instruction();Ze.push(Fn)}let _e=await V.methods.swap(new Jt(p),new Jt(k||0)).accounts({payer:W,config:fe,bridgeAuthority:L,user:W,sendBridgeToken:Ve,sendMint:Ae,sendPool:je,sendUserToken:Ke,receiveBridgeToken:Ce,receiveMint:ye,receivePool:Oe,receiveUserToken:Be}).preInstructions(Ze).transaction(),De=U.connection;return _e.recentBlockhash=(await De.getLatestBlockhash()).blockhash,_e.feePayer=W,await $t(_e,u,this.solanaRpcUrl),await this.convertToVersionedTransaction(_e,De)}async buildRawTransactionSend(r){let a=await qe(this.chainType,r,this.api),o=this.addPoolAddress(r,a),u=o.gasFeePaymentMethod=="stablecoin",m;if(u)try{let{tx:T,solTxSendUpdatedParams:S}=await this.processJup(o,r,!0);m=T,o={...o,...S}}catch{try{let{tx:S,solTxSendUpdatedParams:P}=await this.processJup(o,r,!1);m=S,o={...o,...P}}catch(S){throw S instanceof ue?S:S instanceof Error&&S.message?new Te(`Some error occurred during creation Jupiter swap transaction. ${S.message}`):new Te("Some error occurred during creation Jupiter swap transaction")}}let p,h;switch(a.messenger){case 1:{let T=await this.prepareSwapAndBridgeData(o);p=await this.buildSwapAndBridgeAllbridgeTransaction(T);break}case 2:{let T=await this.prepareSwapAndBridgeData(o),{transaction:S,messageAccount:P}=await this.buildSwapAndBridgeWormholeTransaction(T);p=S,h=P;break}case 3:case 4:{let T=await this.prepareSwapAndBridgeCctpData(o),{transaction:S,messageSentEventDataKeypair:P}=await this.buildSwapAndBridgeCctpTransaction(r.destinationToken.chainSymbol,T);p=S,h=P;break}case 5:throw new Re("Messenger OFT is not supported yet.")}if(u){if(!m)throw new Te("Swap tx is absent");p=await this.jupiterService.amendJupiterWithSdkTx(m,p)}return await ga(p,r.txFeeParams,this.solanaRpcUrl),h&&p.sign([h]),p}async processJup(r,a,o){let{fee:u,extraGas:m,gasFeePaymentMethod:p}=await this.convertStableCoinFeeAndExtraGasToNativeCurrency(a.sourceToken,r),h=o?et(u):et(r.fee);m&&(h=h.plus(m)),o||(h=h.mul(Sa));let{tx:T,amountIn:S}=await this.jupiterService.getJupiterSwapTx(a.fromAccountAddress,a.sourceToken.tokenAddress,h.toFixed(0),o),P;if(o){if(!S)throw new Te("Cannot get inAmount");P=et(r.amount).minus(et(S).mul(Sa)).toFixed(0)}else P=et(r.amount).minus(h).toFixed(0);if(et(P).lte(0))throw new Gt(`Amount not enough to pay fee, ${J(et(P).minus(1).neg(),a.sourceToken.decimals).toFixed()} stables is missing`);return{tx:T,solTxSendUpdatedParams:{amount:P,fee:u,extraGas:m,gasFeePaymentMethod:p}}}addPoolAddress(r,a){return{...a,poolAddress:r.sourceToken.poolAddress}}async convertStableCoinFeeAndExtraGasToNativeCurrency(r,a){if(a.gasFeePaymentMethod=="stablecoin"){let o=(await this.api.getReceiveTransactionCost({sourceChainId:a.fromChainId,destinationChainId:a.toChainId,messenger:a.messenger,sourceToken:r.tokenAddress})).sourceNativeTokenPrice,u=et(a.fee).div(o).mul(et(10).pow(H.getChainDecimalsByType("SOLANA")-r.decimals)).toFixed(0),m;return a.extraGas&&(m=et(a.extraGas).div(o).mul(et(10).pow(H.getChainDecimalsByType("SOLANA")-r.decimals)).toFixed(0)),{fee:u,extraGas:m,gasFeePaymentMethod:"native"}}return{fee:a.fee,extraGas:a.extraGas,gasFeePaymentMethod:"native"}}getExtraGasInstruction(r,a,o){return ht.SystemProgram.transfer({fromPubkey:a,toPubkey:o,lamports:+r})}async prepareSwapAndBridgeData(r){let{amount:a,contractAddress:o,fromChainId:u,fromAccountAddress:m,fromTokenAddress:p,toChainId:h,toAccountAddress:T,toTokenAddress:S,poolAddress:P,extraGas:k}=r,I=p,x=m,F=h,N=S,M=T,D=o,W=u,U=yt(this.solanaRpcUrl,x),V=new Qr(hn,D,U),L=Array.from(jn()),fe=new re(P),Ae=await ua(a,V,fe),Ve=await _i(L,V.programId),je=await jt(V.programId),Ke=await Qe(new re(x),new re(I)),Me=await Zt(new re(I),V.programId),ye=await Zr(F,V.programId),Ce=await Ji(F,C.from(N),V.programId),Oe=await ft(V.programId),Be=await V.account.config.fetch(Oe),Ze=await ln(F,Be.gasOracleProgramId),_e=await ln(W,Be.gasOracleProgramId),De=ma({amount:Ae,recipient:C.from(M),nonce:C.from(L),receiveToken:C.from(N),destinationChainId:F,sourceChainId:W,chainBridge:(await jt(V.programId)).toBuffer()}),G={};return G.bridge=V,G.amount=new Jt(a),G.vusdAmount=new Jt(Ae),G.nonce=L,G.recipient=Array.from(M),G.receiveToken=Array.from(N),G.poolAccount=fe,G.lockAccount=Ve,G.bridgeAuthority=je,G.userToken=Ke,G.bridgeTokenAccount=Me,G.chainBridgeAccount=ye,G.otherBridgeTokenAccount=Ce,G.userAccount=new re(x),G.destinationChainId=F,G.mint=new re(I),G.config=Oe,G.configAccountInfo=Be,G.gasPrice=Ze,G.thisGasPrice=_e,G.message=De,k&&(G.extraGasInstruction=this.getExtraGasInstruction(k,G.userAccount,Oe)),G}async buildSwapAndBridgeAllbridgeTransaction(r){let{bridge:a,vusdAmount:o,nonce:u,recipient:m,receiveToken:p,poolAccount:h,lockAccount:T,bridgeAuthority:S,userToken:P,bridgeTokenAccount:k,chainBridgeAccount:I,otherBridgeTokenAccount:x,userAccount:F,destinationChainId:N,mint:M,config:D,configAccountInfo:W,gasPrice:U,thisGasPrice:V,message:L,extraGasInstruction:fe}=r,Ae=W.allbridgeMessengerProgramId,Ve=await _r(N,Ae),je=await ft(Ae),Ke=await Li(L,Ae),Me=[];fe&&Me.push(fe);let ye=await a.methods.swapAndBridge({vusdAmount:o,nonce:u,destinationChainId:N,recipient:m,receiveToken:p}).accounts({mint:M,user:F,config:D,lock:T,pool:h,gasPrice:U,thisGasPrice:V,bridgeAuthority:S,userToken:P,bridgeToken:k,chainBridge:I,messenger:Ae,messengerGasUsage:Ve,messengerConfig:je,sentMessageAccount:Ke,otherBridgeToken:x}).preInstructions([ht.ComputeBudgetProgram.setComputeUnitLimit({units:zr})]).postInstructions(Me).transaction(),Ce=yt(this.solanaRpcUrl,F.toString()).connection;return ye.recentBlockhash=(await Ce.getLatestBlockhash()).blockhash,ye.feePayer=F,await this.convertToVersionedTransaction(ye,Ce)}async convertToVersionedTransaction(r,a){let o=await a.getAddressLookupTable(new re(this.params.solanaLookUpTable)).then(m=>m.value);if(!o)throw new O("Cannot find allbridgeLookupTableAccount");let u=new ht.TransactionMessage({payerKey:r.feePayer,recentBlockhash:r.recentBlockhash,instructions:r.instructions}).compileToV0Message([o]);return new ht.VersionedTransaction(u)}async buildSwapAndBridgeWormholeTransaction(r){let{bridge:a,vusdAmount:o,nonce:u,recipient:m,receiveToken:p,poolAccount:h,lockAccount:T,bridgeAuthority:S,userToken:P,bridgeTokenAccount:k,chainBridgeAccount:I,otherBridgeTokenAccount:x,userAccount:F,destinationChainId:N,mint:M,config:D,configAccountInfo:W,gasPrice:U,thisGasPrice:V,message:L,extraGasInstruction:fe}=r,Ae=this.params.wormholeMessengerProgramId,[Ve]=re.findProgramAddressSync([C.from("Bridge")],new re(Ae)),[je]=re.findProgramAddressSync([C.from("fee_collector")],new re(Ae)),[Ke]=re.findProgramAddressSync([C.from("Sequence"),S.toBuffer()],new re(Ae)),Me=await _r(N,W.wormholeMessengerProgramId),ye=await ft(W.wormholeMessengerProgramId),Ce=ba.generate(),Oe=yt(this.solanaRpcUrl,F.toString()),Be=await Oe.connection.getAccountInfo(Ve);if(Be==null)throw new O("Cannot fetch wormhole bridge account info");let Ze=new Jt(Be.data.slice(16,24),"le").toString(),_e=Qs.transfer({fromPubkey:F,toPubkey:je,lamports:+Ze}),De=[];fe&&De.push(fe);let G={mint:M,user:F,config:D,lock:T,pool:h,gasPrice:U,thisGasPrice:V,bridgeAuthority:S,userToken:P,bridgeToken:k,chainBridge:I,otherBridgeToken:x,messengerGasUsage:Me,wormholeProgram:Ae,bridge:Ve,message:Ce.publicKey,wormholeMessenger:W.wormholeMessengerProgramId,sequence:Ke,feeCollector:je,wormholeMessengerConfig:ye,clock:ht.SYSVAR_CLOCK_PUBKEY},le=await a.methods.swapAndBridgeWormhole({vusdAmount:o,nonce:u,destinationChainId:N,recipient:m,receiveToken:p}).accounts(G).preInstructions([ht.ComputeBudgetProgram.setComputeUnitLimit({units:zr}),_e]).postInstructions(De).signers([Ce]).transaction();return le.recentBlockhash=(await Oe.connection.getLatestBlockhash()).blockhash,le.feePayer=F,{transaction:await this.convertToVersionedTransaction(le,Oe.connection),messageAccount:Ce}}async prepareSwapAndBridgeCctpData(r){let{contractAddress:a,amount:o,fromAccountAddress:u,fromTokenAddress:m,toChainId:p,toAccountAddress:h,toTokenAddress:T,extraGas:S}=r,P=a;if(!P)throw new Ie("Such route does not support CCTP protocol");let k=4,I=u,x=T,F=h,N=yt(this.solanaRpcUrl,I),M=new Qr(Aa,P,N),D=new re(m),W=await Xi(D,M.programId),U=new re(I),V=await M.account.cctpBridge.fetch(W),L={};return L.cctpBridge=M,L.cctpBridgeAccount=W,L.cctpAddressAccount=new re(P),L.amount=new Jt(o),L.recipient=Array.from(F),L.receiveToken=Array.from(x),L.userToken=await Qe(U,D),L.bridgeAuthority=await $i(W,M.programId),L.bridgeTokenAccount=await Yi(D,M.programId),L.chainBridgeAccount=await Zr(p,M.programId),L.userAccount=U,L.destinationChainId=p,L.mint=D,L.gasPrice=await ln(p,V.gasOracleProgramId),L.thisGasPrice=await ln(k,V.gasOracleProgramId),L.provider=N,S&&(L.extraGasInstruction=this.getExtraGasInstruction(S,L.userAccount,W)),L}async buildSwapAndBridgeCctpTransaction(r,a){let{cctpBridge:o,cctpBridgeAccount:u,amount:m,recipient:p,receiveToken:h,bridgeAuthority:T,userToken:S,bridgeTokenAccount:P,chainBridgeAccount:k,userAccount:I,destinationChainId:x,mint:F,gasPrice:N,thisGasPrice:M,extraGasInstruction:D,provider:W}=a,U=this.params.cctpParams.cctpDomains[r],V=this.params.cctpParams.cctpTransmitterProgramId,L=this.params.cctpParams.cctpTokenMessengerMinter;if(U==null||!V||!L)throw new O("CCTP is not configured");let fe=new re(V),Ae=new re(L),{messageTransmitterAccount:Ve,tokenMessenger:je,tokenMessengerEventAuthority:Ke,tokenMinter:Me,localToken:ye,remoteTokenMessengerKey:Ce,authorityPda:Oe}=Hi(U,F,fe,Ae),Be=[];D&&Be.push(D);let Ze=ba.generate(),_e=Ki(o.programId,Ze.publicKey),De=await o.methods.bridge({amount:m,destinationChainId:x,recipient:p,receiveToken:h}).accounts({mint:F,user:I,cctpBridge:u,messageSentEventData:Ze.publicKey,lock:_e,cctpMessenger:Ae,messageTransmitterProgram:fe,messageTransmitterAccount:Ve,tokenMessenger:je,tokenMinter:Me,localToken:ye,remoteTokenMessengerKey:Ce,authorityPda:Oe,eventAuthority:Ke,bridgeToken:P,gasPrice:N,thisGasPrice:M,chainBridge:k,userToken:S,bridgeAuthority:T}).preInstructions([ht.ComputeBudgetProgram.setComputeUnitLimit({units:2e6})]).postInstructions(Be).transaction(),G=W.connection;return De.recentBlockhash=(await G.getLatestBlockhash()).blockhash,De.feePayer=I,{transaction:await this.convertToVersionedTransaction(De,G),messageSentEventDataKeypair:Ze}}send(r){throw new de}};g();y();f();import{Address as qr,contract as ik}from"@stellar/stellar-sdk";import{Big as eo}from"big.js";g();y();f();import{contract as n}from"@stellar/stellar-sdk";var zs=n.Spec,qs=n.Client;var Tn=class extends qs{constructor(r){super(new zs(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAApnYXNfb3JhY2xlAAAAAAATAAAAAAAAAAxuYXRpdmVfdG9rZW4AAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9hbmRfYnJpZGdlAAAAAAkAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACXJlY2lwaWVudAAAAAAAA+4AAAAgAAAAAAAAABRkZXN0aW5hdGlvbl9jaGFpbl9pZAAAAAQAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAFbm9uY2UAAAAAAAAMAAAAAAAAAApnYXNfYW1vdW50AAAAAAAKAAAAAAAAABBmZWVfdG9rZW5fYW1vdW50AAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOcmVjZWl2ZV90b2tlbnMAAAAAAAgAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAA9zb3VyY2VfY2hhaW5faWQAAAAABAAAAAAAAAANcmVjZWl2ZV90b2tlbgAAAAAAA+4AAAAgAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAAAAAAJZXh0cmFfZ2FzAAAAAAAD6AAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAEc3dhcAAAAAYAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAA+4AAAAgAAAAAAAAAA1yZWNlaXZlX3Rva2VuAAAAAAAD7gAAACAAAAAAAAAACXJlY2lwaWVudAAAAAAAABMAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAJc3RvcF9zd2FwAAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc3RhcnRfc3dhcAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X2dhc19vcmFjbGUAAAAAAAEAAAAAAAAAC25ld19hZGRyZXNzAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X3JlYmFsYW5jZXIAAAAAAAEAAAAAAAAACnJlYmFsYW5jZXIAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X21lc3NlbmdlcgAAAAAAAAEAAAAAAAAACW1lc3NlbmdlcgAAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X2dhc191c2FnZQAAAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAJZ2FzX3VzYWdlAAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAPcmVnaXN0ZXJfYnJpZGdlAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAOYnJpZGdlX2FkZHJlc3MAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAQYWRkX2JyaWRnZV90b2tlbgAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAANdG9rZW5fYWRkcmVzcwAAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATcmVtb3ZlX2JyaWRnZV90b2tlbgAAAAACAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAIYWRkX3Bvb2wAAAACAAAAAAAAAARwb29sAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATd2l0aGRyYXdfZ2FzX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAfd2l0aGRyYXdfYnJpZGdpbmdfZmVlX2luX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAVaGFzX3Byb2Nlc3NlZF9tZXNzYWdlAAAAAAAAAQAAAAAAAAAHbWVzc2FnZQAAAAPuAAAAIAAAAAEAAAPpAAAAAQAAAAM=","AAAAAAAAAAAAAAAUaGFzX3JlY2VpdmVkX21lc3NhZ2UAAAABAAAAAAAAAAdtZXNzYWdlAAAAA+4AAAAgAAAAAQAAA+kAAAABAAAAAw==","AAAAAAAAAAAAAAAQZ2V0X3Bvb2xfYWRkcmVzcwAAAAEAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAKZ2V0X2NvbmZpZwAAAAAAAAAAAAEAAAPpAAAH0AAAAAZCcmlkZ2UAAAAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAUZ2V0X3RyYW5zYWN0aW9uX2Nvc3QAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAANZ2V0X2dhc191c2FnZQAAAAAAAAEAAAAAAAAACGNoYWluX2lkAAAABAAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAOZ2V0X2dhc19vcmFjbGUAAAAAAAAAAAABAAAD6QAAABMAAAAD","AAAAAAAAAAAAAAASZ2V0X2Fub3RoZXJfYnJpZGdlAAAAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAB9AAAAANQW5vdGhlckJyaWRnZQAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAB1N3YXBwZWQAAAAABgAAAAAAAAAOcmVjZWl2ZV9hbW91bnQAAAAAAAoAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAAEwAAAAAAAAALc2VuZF9hbW91bnQAAAAACgAAAAAAAAAKc2VuZF90b2tlbgAAAAAD7gAAACAAAAAAAAAABnNlbmRlcgAAAAAAEw==","AAAAAQAAAAAAAAAAAAAAClRva2Vuc1NlbnQAAAAAAAUAAAAAAAAABmFtb3VudAAAAAAACgAAAAAAAAAUZGVzdGluYXRpb25fY2hhaW5faWQAAAAEAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAADlRva2Vuc1JlY2VpdmVkAAAAAAAEAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAB21lc3NhZ2UAAAAD7gAAACAAAAAAAAAABW5vbmNlAAAAAAAADAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAAClJlY2VpdmVGZWUAAAAAAAMAAAAAAAAAF2JyaWRnZV90cmFuc2FjdGlvbl9jb3N0AAAAAAoAAAAAAAAACWV4dHJhX2dhcwAAAAAAAAoAAAAAAAAAGG1lc3NhZ2VfdHJhbnNhY3Rpb25fY29zdAAAAAo=","AAAAAQAAAAAAAAAAAAAAFUJyaWRnaW5nRmVlRnJvbVRva2VucwAAAAAAAAIAAAAAAAAAEGZlZV90b2tlbl9hbW91bnQAAAAKAAAAAAAAAANnYXMAAAAACg==","AAAAAQAAAAAAAAAAAAAADUFub3RoZXJCcmlkZ2UAAAAAAAACAAAAAAAAAAdhZGRyZXNzAAAAA+4AAAAgAAAAAAAAAAZ0b2tlbnMAAAAAA+wAAAPuAAAAIAAAAAE=","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAABgAAAGBwcmVjb21wdXRlZCB2YWx1ZXMgb2YgdGhlIHNjYWxpbmcgZmFjdG9yIHJlcXVpcmVkIGZvciBwYXlpbmcgdGhlIGJyaWRnaW5nIGZlZSB3aXRoIHN0YWJsZSB0b2tlbnMAAAAeYnJpZGdpbmdfZmVlX2NvbnZlcnNpb25fZmFjdG9yAAAAAAPsAAAAEwAAAAoAAAAAAAAACGNhbl9zd2FwAAAAAQAAAGxwcmVjb21wdXRlZCB2YWx1ZXMgdG8gZGl2aWRlIGJ5IHRvIGNoYW5nZSB0aGUgcHJlY2lzaW9uIGZyb20gdGhlIEdhcyBPcmFjbGUgcHJlY2lzaW9uIHRvIHRoZSB0b2tlbiBwcmVjaXNpb24AAAAWZnJvbV9nYXNfb3JhY2xlX2ZhY3RvcgAAAAAD7AAAABMAAAAKAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAAVwb29scwAAAAAAA+wAAAPuAAAAIAAAABMAAAAAAAAACnJlYmFsYW5jZXIAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAwAAAAEAAAAAAAAAC090aGVyQnJpZGdlAAAAAAEAAAAEAAAAAQAAAAAAAAALU2VudE1lc3NhZ2UAAAAAAQAAA+4AAAAgAAAAAQAAAAAAAAAPUmVjZWl2ZWRNZXNzYWdlAAAAAAEAAAPuAAAAIA==","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),r);this.options=r}fromJSON={initialize:this.txFromJSON,swap_and_bridge:this.txFromJSON,receive_tokens:this.txFromJSON,swap:this.txFromJSON,stop_swap:this.txFromJSON,start_swap:this.txFromJSON,set_gas_oracle:this.txFromJSON,set_stop_authority:this.txFromJSON,set_rebalancer:this.txFromJSON,set_messenger:this.txFromJSON,set_gas_usage:this.txFromJSON,register_bridge:this.txFromJSON,add_bridge_token:this.txFromJSON,remove_bridge_token:this.txFromJSON,add_pool:this.txFromJSON,withdraw_gas_tokens:this.txFromJSON,withdraw_bridging_fee_in_tokens:this.txFromJSON,has_processed_message:this.txFromJSON,has_received_message:this.txFromJSON,get_pool_address:this.txFromJSON,get_config:this.txFromJSON,get_stop_authority:this.txFromJSON,get_transaction_cost:this.txFromJSON,get_gas_usage:this.txFromJSON,get_admin:this.txFromJSON,get_gas_oracle:this.txFromJSON,get_another_bridge:this.txFromJSON,set_admin:this.txFromJSON,upgrade:this.txFromJSON}};var Qn=class extends Ee{constructor(r,a,o){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=o}chainType="SRB";async buildRawTransactionSend(r){let a=await qe(this.chainType,r,this.api);return await this.buildRawTransactionSendFromParams(a)}async buildRawTransactionSendFromParams(r){let{amount:a,contractAddress:o,fromAccountAddress:u,fromTokenAddress:m,toChainId:p,toAccountAddress:h,toTokenAddress:T,fee:S,gasFeePaymentMethod:P,extraGas:k}=r,I=S;k&&(I=eo(I).plus(k).toFixed());let x=this.getContract(Tn,o,u),F;return P==="stablecoin"?F=await x.swap_and_bridge({sender:u,token:qr.contract(C.from(m)).toString(),amount:BigInt(a),recipient:C.from(h),destination_chain_id:+p,receive_token:C.from(T),nonce:st(),gas_amount:BigInt(0),fee_token_amount:BigInt(I)}):F=await x.swap_and_bridge({sender:u,token:qr.contract(C.from(m)).toString(),amount:BigInt(a),recipient:C.from(h),destination_chain_id:+p,receive_token:C.from(T),nonce:st(),gas_amount:BigInt(I),fee_token_amount:BigInt(0)}),F.toXDR()}async buildRawTransactionSwap(r){let a=ot(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:o,fromAccountAddress:u,fromTokenAddress:m,toAccountAddress:p,toTokenAddress:h,minimumReceiveAmount:T}=r;return(await this.getContract(Tn,o,u).swap({sender:u,amount:BigInt(a),token:qr.contract(C.from(m)).toBuffer(),receive_token:C.from(h),recipient:p,receive_amount_min:BigInt(T)})).toXDR()}send(r){throw new de}getContract(r,a,o){let u={publicKey:o,contractId:a,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new r(u)}};g();y();f();import{SuiClient as po}from"@mysten/sui/client";import{coinWithBalance as ce,Transaction as mi}from"@mysten/sui/transactions";import{SUI_CLOCK_OBJECT_ID as Wa}from"@mysten/sui/utils";import{Big as li}from"big.js";var di=He(Tt());g();y();f();var dt=He(Tt());he();function Ca(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap`,typeArguments:i,arguments:[Z(s,r.bridge),Z(s,r.coin),Xe(s,r.receiveAmountMin,"u64")]})}function Ba(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::deposit`,typeArguments:[i],arguments:[Z(s,r.bridge),Z(s,r.userDeposit),Z(s,r.coin)]})}function Ia(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::withdraw`,typeArguments:[i],arguments:[Z(s,r.bridge),Z(s,r.userDeposit),Xe(s,r.amountLp,"u64")]})}function Ra(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::claim_reward`,typeArguments:[i],arguments:[Z(s,r.bridge),Z(s,r.userDeposit)]})}function va(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::pool`,typeArguments:[i],arguments:[Z(s,r)]})}function ti(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap_and_bridge_wormhole`,typeArguments:[i],arguments:[Z(s,r.bridge),Z(s,r.messenger),Z(s,r.wormholeState),Z(s,r.theClock),Z(s,r.gasOracle),Z(s,r.amount),Z(s,r.recipient),Xe(s,r.destinationChainId,"u8"),Z(s,r.receiveToken),Xe(s,r.nonce,"u256"),Z(s,r.feeSuiCoin),Z(s,r.feeTokenCoin)]})}function ka(s,i){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::new_user_deposit`,typeArguments:[i],arguments:[]})}function ni(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap_and_bridge`,typeArguments:[i],arguments:[Z(s,r.bridge),Z(s,r.messenger),Z(s,r.gasOracle),Z(s,r.amount),Z(s,r.recipient),Xe(s,r.destinationChainId,"u8"),Z(s,r.receiveToken),Xe(s,r.nonce,"u256"),Z(s,r.feeSuiCoin),Z(s,r.feeTokenCoin)]})}var Ea=He(ii());g();y();f();var Fa=He(ii());he();function ai(s,i,r){return s.moveCall({target:`${Fa.PUBLISHED_AT}::cctp_bridge_interface::bridge`,typeArguments:[i],arguments:[Z(s,r.cctpBridge),Z(s,r.gasOracle),Z(s,r.tokenMessengerMinterState),Z(s,r.messageTransmitterState),Z(s,r.treasury),Z(s,r.denyList),Z(s,r.amount),Z(s,r.feeSuiCoin),Z(s,r.feeTokenCoin),Xe(s,r.destinationChainId,"u8"),Z(s,r.recipient),Z(s,r.recipientWalletAddress)]})}var Ua=He(oi());g();y();f();var Na=He(oi());g();y();f();g();y();f();he();import{bcs as bt}from"@mysten/sui/bcs";import{fromHEX as oo,toHEX as co}from"@mysten/sui/utils";g();y();f();import{bcs as so}from"@mysten/sui/bcs";he();var ci=class s{__VectorClass=!0;static $typeName="vector";static $numTypeParams=1;static $isPhantom=[!1];$typeName="vector";$fullTypeName;$typeArgs;$isPhantom=[!1];elements;constructor(i,r){this.$fullTypeName=z(this.$typeName,...i),this.$typeArgs=i,this.elements=r}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs(bn(i)),fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),new:r=>new s([_(i)],r),kind:"VectorClassReified"}}static get r(){return s.reified}static get bcs(){return so.vector}static fromFields(i,r){return s.reified(i).new(r.map(a=>K(i,a)))}static fromFieldsWithTypes(i,r){return s.reified(i).new(r.map(a=>X(i,a)))}static fromBcs(i,r){return s.fromFields(i,s.bcs(bn(i)).parse(r))}toJSONField(){return this.elements.map(i=>Ot(this.$typeArgs[0],i))}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,elements:this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new(r.map(a=>Y(i,a)))}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a vector json object");return s.fromJSONField(i,r.elements)}};function Lt(s){return ci.r(s)}function oe(s){return typeof s=="string"?{phantomType:s,kind:"PhantomReified"}:{phantomType:s.fullTypeName,kind:"PhantomReified"}}var Ao=bt.bytes(32).transform({input:s=>oo(s),output:s=>co(s)});function bn(s){switch(s){case"bool":return bt.bool();case"u8":return bt.u8();case"u16":return bt.u16();case"u32":return bt.u32();case"u64":return bt.u64();case"u128":return bt.u128();case"u256":return bt.u256();case"address":return Ao;default:return s.bcs}}function _(s){switch(s){case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"bool":case"address":return s}switch(s.kind){case"PhantomReified":return s.phantomType;case"StructClassReified":return s.fullTypeName;case"VectorClassReified":return s.fullTypeName}throw new Error("unreachable")}function K(s,i){switch(s){case"bool":case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return BigInt(i);case"address":return`0x${i}`}if(s.kind==="VectorClassReified")return s.fromFields(i).elements;switch(s.typeName){case"0x1::string::String":case"0x1::ascii::String":return new TextDecoder().decode(Uint8Array.from(i.bytes)).toString();case"0x2::url::Url":return new TextDecoder().decode(Uint8Array.from(i.url.bytes)).toString();case"0x2::object::ID":return`0x${i.bytes}`;case"0x2::object::UID":return`0x${i.id.bytes}`;case"0x1::option::Option":return i.vec.length===0?null:s.fromFields(i).vec[0];default:return s.fromFields(i)}}function X(s,i){switch(s){case"bool":case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return BigInt(i);case"address":return i}if(s.kind==="VectorClassReified")return s.fromFieldsWithTypes(i).elements;switch(s.typeName){case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":return i;case"0x2::object::UID":return i.id;case"0x2::balance::Balance":return s.fromFields({value:BigInt(i)});case"0x1::option::Option":return i===null?null:X(s.reifiedTypeArgs[0],i);default:return s.fromFieldsWithTypes(i)}}function tt(s,i,r){if(r.length!==i.length)throw new Error(`provided item has mismatching number of type argments ${s} (expected ${r.length}, got ${i.length}))`);for(let a=0;a<i.length;a++)if(j(i[a])!==j(_(r[a])))throw new Error(`provided item has mismatching type argments ${s} (expected ${_(r[a])}, got ${i[a]}))`)}function ct(s,i){let{typeArgs:r}=Pe(s.type);tt(s.type,r,i)}function Ot(s,i){let{typeName:r,typeArgs:a}=Pe(s);switch(r){case"bool":return i;case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return i.toString();case"address":case"signer":return i;case"vector":return i.map(o=>Ot(a[0],o));case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":case"0x2::object::UID":return i;case"0x1::option::Option":return i===null?null:Ot(a[0],i);default:return i.toJSONField()}}function Y(s,i){switch(s){case"bool":case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return BigInt(i);case"address":return i}if(s.kind==="VectorClassReified")return s.fromJSONField(i).elements;switch(s.typeName){case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":case"0x2::object::UID":return i;case"0x1::option::Option":return i===null?null:Y(s.reifiedTypeArgs[0],i);default:return s.fromJSONField(i)}}he();g();y();f();var zn="0x1";import{bcs as tg}from"@mysten/sui/bcs";import{fromB64 as rg}from"@mysten/sui/utils";g();y();f();he();import{bcs as Ai}from"@mysten/sui/bcs";import{fromB64 as uo}from"@mysten/sui/utils";function qn(s){return s=j(s),s===`${zn}::string::String`}var er=class s{__StructClass=!0;static get $typeName(){return`${zn}::string::String`}static $numTypeParams=0;static $isPhantom=[];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;bytes;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.bytes=r.bytes}static reified(){return{typeName:s.$typeName,fullTypeName:z(s.$typeName),typeArgs:[],isPhantom:s.$isPhantom,reifiedTypeArgs:[],fromFields:i=>s.fromFields(i),fromFieldsWithTypes:i=>s.fromFieldsWithTypes(i),fromBcs:i=>s.fromBcs(i),bcs:s.bcs,fromJSONField:i=>s.fromJSONField(i),fromJSON:i=>s.fromJSON(i),fromSuiParsedData:i=>s.fromSuiParsedData(i),fromSuiObjectData:i=>s.fromSuiObjectData(i),fetch:async(i,r)=>s.fetch(i,r),new:i=>new s([],i),kind:"StructClassReified"}}static get r(){return s.reified()}static phantom(){return oe(s.reified())}static get p(){return s.phantom()}static get bcs(){return Ai.struct("String",{bytes:Ai.vector(Ai.u8())})}static fromFields(i){return s.reified().new({bytes:K(Lt("u8"),i.bytes)})}static fromFieldsWithTypes(i){if(!qn(i.type))throw new Error("not a String type");return s.reified().new({bytes:X(Lt("u8"),i.fields.bytes)})}static fromBcs(i){return s.fromFields(s.bcs.parse(i))}toJSONField(){return{bytes:Ot("vector<u8>",this.bytes)}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i){return s.reified().new({bytes:Y(Lt("u8"),i.bytes)})}static fromJSON(i){if(i.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return s.fromJSONField(i)}static fromSuiParsedData(i){if(i.dataType!=="moveObject")throw new Error("not an object");if(!qn(i.type))throw new Error(`object at ${i.fields.id} is not a String object`);return s.fromFieldsWithTypes(i)}static fromSuiObjectData(i){if(i.bcs){if(i.bcs.dataType!=="moveObject"||!qn(i.bcs.type))throw new Error("object at is not a String object");return s.fromBcs(uo(i.bcs.bcsBytes))}if(i.content)return s.fromSuiParsedData(i.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r){let a=await i.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching String object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!qn(a.data.bcs.type))throw new Error(`object at id ${r} is not a String object`);return s.fromSuiObjectData(a.data)}};he();g();y();f();he();g();y();f();var St="0x2";import{bcs as ui}from"@mysten/sui/bcs";import{fromB64 as Da,fromHEX as mo,toHEX as lo}from"@mysten/sui/utils";function tr(s){return s=j(s),s===`${St}::object::ID`}var Dt=class s{__StructClass=!0;static get $typeName(){return`${St}::object::ID`}static $numTypeParams=0;static $isPhantom=[];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;bytes;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.bytes=r.bytes}static reified(){return{typeName:s.$typeName,fullTypeName:z(s.$typeName),typeArgs:[],isPhantom:s.$isPhantom,reifiedTypeArgs:[],fromFields:i=>s.fromFields(i),fromFieldsWithTypes:i=>s.fromFieldsWithTypes(i),fromBcs:i=>s.fromBcs(i),bcs:s.bcs,fromJSONField:i=>s.fromJSONField(i),fromJSON:i=>s.fromJSON(i),fromSuiParsedData:i=>s.fromSuiParsedData(i),fromSuiObjectData:i=>s.fromSuiObjectData(i),fetch:async(i,r)=>s.fetch(i,r),new:i=>new s([],i),kind:"StructClassReified"}}static get r(){return s.reified()}static phantom(){return oe(s.reified())}static get p(){return s.phantom()}static get bcs(){return ui.struct("ID",{bytes:ui.bytes(32).transform({input:i=>mo(i),output:i=>lo(i)})})}static fromFields(i){return s.reified().new({bytes:K("address",i.bytes)})}static fromFieldsWithTypes(i){if(!tr(i.type))throw new Error("not a ID type");return s.reified().new({bytes:X("address",i.fields.bytes)})}static fromBcs(i){return s.fromFields(s.bcs.parse(i))}toJSONField(){return{bytes:this.bytes}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i){return s.reified().new({bytes:Y("address",i.bytes)})}static fromJSON(i){if(i.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return s.fromJSONField(i)}static fromSuiParsedData(i){if(i.dataType!=="moveObject")throw new Error("not an object");if(!tr(i.type))throw new Error(`object at ${i.fields.id} is not a ID object`);return s.fromFieldsWithTypes(i)}static fromSuiObjectData(i){if(i.bcs){if(i.bcs.dataType!=="moveObject"||!tr(i.bcs.type))throw new Error("object at is not a ID object");return s.fromBcs(Da(i.bcs.bcsBytes))}if(i.content)return s.fromSuiParsedData(i.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r){let a=await i.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching ID object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!tr(a.data.bcs.type))throw new Error(`object at id ${r} is not a ID object`);return s.fromSuiObjectData(a.data)}};function nr(s){return s=j(s),s===`${St}::object::UID`}var Ye=class s{__StructClass=!0;static get $typeName(){return`${St}::object::UID`}static $numTypeParams=0;static $isPhantom=[];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;id;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.id=r.id}static reified(){return{typeName:s.$typeName,fullTypeName:z(s.$typeName),typeArgs:[],isPhantom:s.$isPhantom,reifiedTypeArgs:[],fromFields:i=>s.fromFields(i),fromFieldsWithTypes:i=>s.fromFieldsWithTypes(i),fromBcs:i=>s.fromBcs(i),bcs:s.bcs,fromJSONField:i=>s.fromJSONField(i),fromJSON:i=>s.fromJSON(i),fromSuiParsedData:i=>s.fromSuiParsedData(i),fromSuiObjectData:i=>s.fromSuiObjectData(i),fetch:async(i,r)=>s.fetch(i,r),new:i=>new s([],i),kind:"StructClassReified"}}static get r(){return s.reified()}static phantom(){return oe(s.reified())}static get p(){return s.phantom()}static get bcs(){return ui.struct("UID",{id:Dt.bcs})}static fromFields(i){return s.reified().new({id:K(Dt.reified(),i.id)})}static fromFieldsWithTypes(i){if(!nr(i.type))throw new Error("not a UID type");return s.reified().new({id:X(Dt.reified(),i.fields.id)})}static fromBcs(i){return s.fromFields(s.bcs.parse(i))}toJSONField(){return{id:this.id}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i){return s.reified().new({id:Y(Dt.reified(),i.id)})}static fromJSON(i){if(i.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return s.fromJSONField(i)}static fromSuiParsedData(i){if(i.dataType!=="moveObject")throw new Error("not an object");if(!nr(i.type))throw new Error(`object at ${i.fields.id} is not a UID object`);return s.fromFieldsWithTypes(i)}static fromSuiObjectData(i){if(i.bcs){if(i.bcs.dataType!=="moveObject"||!nr(i.bcs.type))throw new Error("object at is not a UID object");return s.fromBcs(Da(i.bcs.bcsBytes))}if(i.content)return s.fromSuiParsedData(i.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r){let a=await i.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching UID object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!nr(a.data.bcs.type))throw new Error(`object at id ${r} is not a UID object`);return s.fromSuiObjectData(a.data)}};function nt(s,i){return s.moveCall({target:`${Na.PUBLISHED_AT}::bytes32::from_hex`,arguments:[Xe(s,i,`${er.$typeName}`)]})}g();y();f();async function At(s,i,r=[]){let a=await s(i),o=r.concat(a.data);return a.hasNextPage&&a.nextCursor?At(s,a.nextCursor,o):o}var Xt=class extends Ee{constructor(r,a){super();this.nodeRpcUrlsConfig=r;this.api=a;this.client=new po({url:r.getNodeRpcUrl(this.chainSymbol)})}chainType="SUI";chainSymbol="SUI";client;send(){throw new O("Method send not implemented.")}async buildRawTransactionSwap(r){let a=r.sourceToken.suiAddresses;if(!a)throw new O("SUI token must contain 'suiAddresses'");(0,di.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin);let o=ot(this.chainType,r);return await this.buildRawTransactionSwapFromParams(o,a)}async buildRawTransactionSwapFromParams(r,a){let{amount:o,fromAccountAddress:u,fromTokenAddress:m,toTokenAddress:p,minimumReceiveAmount:h}=r,T=new mi;T.setSender(u);let S={bridge:a.bridgeObjectAddress,coin:ce({balance:BigInt(o),type:m}),receiveAmountMin:BigInt(h)},P=Ca(T,[m,p],S),k=await At(I=>this.client.getCoins({owner:r.toAccountAddress,coinType:p,cursor:I}));return k.length===0||!k[0]?T.transferObjects([P],r.toAccountAddress):T.mergeCoins(k[0].coinObjectId,[P]),await T.toJSON({client:this.client})}async buildRawTransactionSendFromCustomTx(r,a,o){let u=mi.from(r);return this.buildRawTransactionSendFromTx(o,u,a)}async buildRawTransactionSend(r){return this.buildRawTransactionSendFromTx(r,new mi)}async buildRawTransactionSendFromTx(r,a,o){let u=await qe(this.chainType,r,this.api),{messenger:m}=u,p=r.sourceToken.suiAddresses;if(!p)throw new O("SUI token must contain 'suiAddresses'");switch((0,di.setAddress)(p.bridgeAddress,p.bridgeAddressOrigin),(0,Ua.setAddress)(p.utilsAddress),m){case 1:return this.buildRawTransactionAllbridgeSend(u,p,a,o);case 2:return this.buildRawTransactionWormholeSend(u,p,a,o);case 3:case 4:return this.buildRawTransactionCctpSend(r,u,p,a,o);case 5:throw new Re("Messenger OFT is not supported yet.")}}async buildRawTransactionAllbridgeSend(r,a,o,u){let{amount:m,fromAccountAddress:p,fromTokenAddress:h,toChainId:T,toAccountAddress:S,toTokenAddress:P,fee:k,gasFeePaymentMethod:I,extraGas:x}=r,F=k;if(x&&(F=li(F).plus(x).toFixed()),o.setSender(p),I==="stablecoin"){let N=BigInt(m)-BigInt(F),M,D;if(u){let[U,V]=o.splitCoins(u,[m,F]);M=U,D=V}else M=ce({balance:N,type:h}),D=ce({balance:BigInt(F),type:h});let W={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:M,destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(P)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:D,feeSuiCoin:ce({balance:BigInt(0),useGasCoin:!1})};ni(o,h,W)}else{let N=F==="0"?ce({balance:BigInt(F),useGasCoin:!1}):ce({balance:BigInt(F)}),M={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:u??ce({balance:BigInt(m),type:h}),destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(P)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(0),type:h}),feeSuiCoin:N};ni(o,h,M)}return await o.toJSON({client:this.client})}async buildRawTransactionWormholeSend(r,a,o,u){let{amount:m,fromAccountAddress:p,fromTokenAddress:h,toChainId:T,toAccountAddress:S,toTokenAddress:P,fee:k,gasFeePaymentMethod:I,extraGas:x}=r,F=k;if(x&&(F=li(F).plus(x).toFixed()),o.setSender(p),I==="stablecoin"){let N=BigInt(m)-BigInt(F),M,D;if(u){let[U,V]=o.splitCoins(u,[m,F]);M=U,D=V}else M=ce({balance:N,type:h}),D=ce({balance:BigInt(F),type:h});let W={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:Wa,amount:M,destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(P)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:D,feeSuiCoin:ce({balance:BigInt(0),useGasCoin:!1})};ti(o,h,W)}else{let N=F==="0"?ce({balance:BigInt(F),useGasCoin:!1}):ce({balance:BigInt(F)}),M={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:Wa,amount:u??ce({balance:BigInt(m),type:h}),destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(P)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(0),type:h}),feeSuiCoin:N};ti(o,h,M)}return await o.toJSON({client:this.client})}async buildRawTransactionCctpSend(r,a,o,u,m){let{amount:p,fromAccountAddress:h,fromTokenAddress:T,toChainId:S,toAccountAddress:P,fee:k,gasFeePaymentMethod:I,extraGas:x}=a;(0,Ea.setAddress)(o.cctpAddress,o.cctpAddressOrigin);let F=k;x&&(F=li(F).plus(x).toFixed()),u.setSender(h);let N=nt(u,ze(P)),M;if(r.destinationToken.chainType==="SOLANA"){let D=await $n(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));M=nt(u,ze(D))}else M=N;if(I==="stablecoin"){let D=BigInt(p)-BigInt(F),W,U;if(m){let[L,fe]=u.splitCoins(m,[p,F]);W=L,U=fe}else W=ce({balance:D,type:T}),U=ce({balance:BigInt(F),type:T});let V={cctpBridge:o.cctpObjectAddress,tokenMessengerMinterState:o.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:o.cctpMessageTransmitterStateObjectAddress,treasury:o.cctpTreasuryObjectAddress,denyList:o.cctpDenyListObjectAddress,amount:W,destinationChainId:S,recipient:M,recipientWalletAddress:N,gasOracle:o.gasOracleObjectAddress,feeTokenCoin:U,feeSuiCoin:ce({balance:BigInt(0),useGasCoin:!1})};ai(u,T,V)}else{let D=F==="0"?ce({balance:BigInt(F),useGasCoin:!1}):ce({balance:BigInt(F)}),W={cctpBridge:o.cctpObjectAddress,tokenMessengerMinterState:o.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:o.cctpMessageTransmitterStateObjectAddress,treasury:o.cctpTreasuryObjectAddress,denyList:o.cctpDenyListObjectAddress,amount:m??ce({balance:BigInt(p),type:T}),destinationChainId:S,recipient:M,recipientWalletAddress:N,gasOracle:o.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(0),type:T}),feeSuiCoin:D};ai(u,T,W)}return await u.toJSON({client:this.client})}};g();y();f();import{Big as yo}from"big.js";g();y();f();g();y();f();import go from"bn.js";function rr(s){return"0x"+new go(s).toString("hex")}function Ga(s){return new Promise(i=>setTimeout(()=>i(),s))}async function ir(s,i){let r=await s.trx.sign(i);if(!r.signature)throw new Vt("Transaction was not signed properly");let o=(await s.trx.sendRawTransaction(r)).transaction.txID;return await fo(s,o),{txId:o}}async function fo(s,i,r=1e4){let a=Date.now();for(;;){if(Date.now()-a>r)throw new un("Transaction not found");let o=await s.trx.getUnconfirmedTransactionInfo(i);if(!o?.receipt){await Ga(2e3);continue}if(o.receipt.result==="SUCCESS")return o;throw new un(`Transaction status is ${o.receipt.result}`)}}var Sn=class extends Ee{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async send(r){let a=await qe(this.chainType,r,this.api),o=await this.buildRawTransactionSendFromParams(r,a);return await ir(this.tronWeb,o)}async buildRawTransactionSwap(r){let a=ot(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:o,fromAccountAddress:u,fromTokenAddress:m,toAccountAddress:p,toTokenAddress:h,minimumReceiveAmount:T}=r,S=[{type:"uint256",value:a},{type:"bytes32",value:m},{type:"bytes32",value:h},{type:"address",value:p},{type:"uint256",value:T}];return this.buildRawTransaction(o,"swap(uint256,bytes32,bytes32,address,uint256)",S,"0",u)}async buildRawTransactionSend(r){let a=await qe(this.chainType,r,this.api);return this.buildRawTransactionSendFromParams(r,a)}async buildRawTransactionSendFromParams(r,a){let{amount:o,contractAddress:u,fromAccountAddress:m,fromTokenAddress:p,toChainId:h,toAccountAddress:T,toTokenAddress:S,messenger:P,fee:k,gasFeePaymentMethod:I,extraGas:x,extraGasDest:F}=a,N=k;x&&(N=yo(N).plus(x).toFixed());let M=st().toString(),D,W,U;switch(P){case 3:case 4:I==="stablecoin"?(D=[{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:N}],W="0"):(D=[{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:0}],W=N),U="bridge(uint256,bytes32,uint256,uint256)";break;case 5:I==="stablecoin"?(D=[{type:"address",value:r.sourceToken.tokenAddress},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:N},{type:"uint256",value:F??"0"},{type:"uint256",value:"10"}],W="0"):(D=[{type:"address",value:r.sourceToken.tokenAddress},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:0},{type:"uint256",value:F??"0"},{type:"uint256",value:"10"}],W=N),U="bridge(address,uint256,bytes32,uint256,uint256,uint256,uint256)";break;case 1:case 2:I==="stablecoin"?(D=[{type:"bytes32",value:p},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"bytes32",value:S},{type:"uint256",value:M},{type:"uint8",value:P},{type:"uint256",value:N}],W="0"):(D=[{type:"bytes32",value:p},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"bytes32",value:S},{type:"uint256",value:M},{type:"uint8",value:P},{type:"uint256",value:0}],W=N),U="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)";break}return this.buildRawTransaction(u,U,D,W,m)}async buildRawTransaction(r,a,o,u,m){let p=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+u},o,m);if(!p?.result?.result)throw new O("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}};var ar=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o;this.rawTxBuilder=new Jn(i,r,a,o)}rawTxBuilder;async getAllowance(i,r){let a,o;r?(a=i,o=r):o=i;let u=yn(o.token,o.messenger);return await this.tokenService.getAllowance({...o,spender:u},a)}async checkAllowance(i,r){let a,o;r?(a=i,o=r):o=i;let u=yn(o.token,o.messenger);return this.tokenService.checkAllowance({...o,spender:u},a)}async approve(i,r){let a=yn(r.token,r.messenger);return this.tokenService.approve(i,{...r,spender:a})}async send(i,r){return q(r.amount),ee("amount",r.amount,r.sourceToken.decimals),Ln(r.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).send(r)}};function yn(s,i=1){switch(i){case 3:if(s.cctpAddress)return s.cctpAddress;throw new Ie("Such route does not support CCTP protocol");case 4:if(s.cctpV2Address)return s.cctpV2Address;throw new Ie("Such route does not support CCTP V2 protocol");case 5:if(s.oftBridgeAddress)return s.oftBridgeAddress;throw new Re("Such route does not support OFT protocol");case 1:case 2:return s.bridgeAddress}}function Ln(s,i,r,a,o){switch(H.getChainProperty(s).chainType){case"EVM":{if(o)return new fn(o,i,r);{let u=r.getNodeRpcUrl(s);return new fn(new To(u),i,r)}}case"TRX":{if(o)return new Sn(o,i);{let u=r.getNodeRpcUrl(s);return new Sn(new ho({fullHost:u,solidityNode:u,eventServer:u}),i)}}case"SOLANA":return new Hn(r.getNodeRpcUrl("SOL"),{wormholeMessengerProgramId:a.wormholeMessengerProgramId,solanaLookUpTable:a.solanaLookUpTable,cctpParams:a.cctpParams,jupiterParams:{jupiterUrl:a.jupiterUrl,jupiterApiKeyHeader:a.jupiterApiKeyHeader,jupiterMaxAccounts:a.jupiterMaxAccounts}},i);case"SRB":return new Qn(r,a,i);case"SUI":return new Xt(r,i)}}g();y();f();import{Big as Eo}from"big.js";import Uo from"timed-cache";import{TronWeb as Go}from"tronweb";import{FMT_BYTES as Vo,FMT_NUMBER as jo,Web3 as Zo}from"web3";g();y();f();import{Big as pt}from"big.js";function Va(s,i,r,a,o){let u=Q(s,3),m=pt(u),p=pt(r),h=pt(a).plus(o),T,S;if(p.eq(0)||h.eq(0)){let k=m.div(2);T=pt(a).plus(k),S=pt(o).plus(k)}else T=pt(a).plus(m.mul(a).div(h)),S=pt(o).plus(m.mul(o).div(h));return pt(na(i,T.toFixed(),S.toFixed())).minus(p).toFixed()}function ja(s){let i=Q(s,3);return pt(i).round().toFixed()}g();y();f();import{Web3 as Pt}from"web3";g();y();f();var bo={abi:[{inputs:[{internalType:"address",name:"_router",type:"address"},{internalType:"uint256",name:"_a",type:"uint256"},{internalType:"contract ERC20",name:"_token",type:"address"},{internalType:"uint16",name:"_feeShareBP",type:"uint16"},{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"},{internalType:"string",name:"lpName",type:"string"},{internalType:"string",name:"lpSymbol",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"RewardsClaimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedFromVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedToVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"a",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"accRewardPerShareP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adjustTotalLpAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"adminFeeAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"balanceRatioMinBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canDeposit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canWithdraw",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"claimAdminFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"claimRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"d",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"feeShareBP",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"x",type:"uint256"}],name:"getY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"pendingReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"reserves",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"router",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_adminFeeShareBP",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"}],name:"setBalanceRatioMinBP",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"_feeShareBP",type:"uint16"}],name:"setFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_router",type:"address"}],name:"setRouter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapFromVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapToVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"token",outputs:[{internalType:"contract ERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"userRewardDebt",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"vUsdBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amountLp",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Pn=bo;g();y();f();g();y();f();var xe=class{lpAmount;rewardDebt;constructor(i){this.lpAmount=i.lpAmount,this.rewardDebt=i.rewardDebt}get userLiquidity(){return J(this.lpAmount,3).toFixed()}earned(i,r){let a=ea(this.lpAmount,this.rewardDebt,i.accRewardPerShareP,i.p);return r?J(a,r).toFixed():a}};g();y();f();var Ue=class{};var wn=class extends Ue{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";P=52;async getUserBalanceInfo(r,a){let o;try{o=await Vn(this.getUserBalanceInfoByBatch(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5e3)}catch{o=await jr(()=>this.getUserBalanceInfoPerProperty(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5,2e3)}return o}async getPoolInfoFromChain(r){let a;try{a=await Vn(this.getPoolInfoByBatch(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5e3)}catch{a=await jr(()=>this.getPoolInfoPerProperty(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5,2e3)}return a}async getUserBalanceInfoByBatch(r,a){let o=new this.web3.eth.BatchRequest,u=this.getPoolContract(a.poolAddress),m=u.methods.userRewardDebt(r).encodeABI(),p=u.methods.balanceOf(r).encodeABI();o.add({method:"eth_call",params:[{to:a.poolAddress,data:m},"latest"]}),o.add({method:"eth_call",params:[{to:a.poolAddress,data:p},"latest"]});let[h,T]=await o.execute();if(h&&T&&!h.error&&!T.error)return new xe({lpAmount:Pt.utils.toBigInt(T.result).toString(),rewardDebt:Pt.utils.toBigInt(h.result).toString()});throw new Error("Batched failed")}async getUserBalanceInfoPerProperty(r,a){let o=(await this.getPoolContract(a.poolAddress).methods.userRewardDebt(r).call()).toString(),u=(await this.getPoolContract(a.poolAddress).methods.balanceOf(r).call()).toString();return new xe({lpAmount:u,rewardDebt:o})}async getPoolInfoByBatch(r){let a=new this.web3.eth.BatchRequest,o=this.getPoolContract(r.poolAddress),u=o.methods.a().encodeABI(),m=o.methods.d().encodeABI(),p=o.methods.tokenBalance().encodeABI(),h=o.methods.vUsdBalance().encodeABI(),T=o.methods.totalSupply().encodeABI(),S=o.methods.accRewardPerShareP().encodeABI();a.add({method:"eth_call",params:[{to:r.poolAddress,data:u},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:m},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:p},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:h},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:T},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:S},"latest"]});let[P,k,I,x,F,N]=await a.execute();if(P&&k&&I&&x&&F&&N&&!P.error&&!k.error&&!I.error&&!x.error&&!F.error&&!N.error){let M=Pt.utils.toBigInt(I.result).toString(),D=Pt.utils.toBigInt(x.result).toString(),W=ke({tokenBalance:M,vUsdBalance:D});return{aValue:Pt.utils.toBigInt(P.result).toString(),dValue:Pt.utils.toBigInt(k.result).toString(),tokenBalance:M,vUsdBalance:D,totalLpAmount:Pt.utils.toBigInt(F.result).toString(),accRewardPerShareP:Pt.utils.toBigInt(N.result).toString(),p:this.P,imbalance:W}}throw new Error("Batched failed")}async getPoolInfoPerProperty(r){let a=this.getPoolContract(r.poolAddress),o=(await a.methods.a().call()).toString(),u=(await a.methods.d().call()).toString(),m=(await a.methods.tokenBalance().call()).toString(),p=(await a.methods.vUsdBalance().call()).toString(),h=(await a.methods.totalSupply().call()).toString(),T=(await a.methods.accRewardPerShareP().call()).toString(),S=ke({tokenBalance:m,vUsdBalance:p});return{aValue:o,dValue:u,tokenBalance:m,vUsdBalance:p,totalLpAmount:h,accRewardPerShareP:T,p:this.P,imbalance:S}}async buildRawTransactionDeposit(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.deposit(r.amount).encodeABI()})}async buildRawTransactionWithdraw(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.withdraw(r.amount).encodeABI()})}async buildRawTransactionClaimRewards(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.claimRewards().encodeABI()})}buildTxParams(r){return{from:r.accountAddress,to:r.token.poolAddress,value:"0"}}getPoolContract(r){return new this.web3.eth.Contract(Pn.abi,r)}};g();y();f();var sr=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o}async approve(i,r){if(r){let a=i,o=r;return this.tokenService.buildRawTransactionApprove({...o,spender:o.token.poolAddress},a)}else{let a=i;return this.tokenService.buildRawTransactionApprove({...a,spender:a.token.poolAddress})}}async deposit(i,r){return q(i.amount),ee("amount",i.amount,i.token.decimals),i.amount=Q(i.amount,i.token.decimals).toFixed(),Yt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionDeposit(i)}async withdraw(i,r){return q(i.amount),ee("amount",i.amount,i.token.decimals),i.amount=Q(i.amount,3).toFixed(),Yt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionWithdraw(i)}async claimRewards(i,r){return Yt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionClaimRewards(i)}};g();y();f();import{AnchorProvider as So,BN as Za,Program as Po,Spl as wo,web3 as Co}from"@project-serum/anchor";import{Connection as Bo,PublicKey as wt}from"@solana/web3.js";var or=class extends Ue{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";P=48;async getUserBalanceInfo(r,a){let o=this.buildAnchorProvider(r),u=this.getBridge(a.bridgeAddress,o),m=new wt(a.poolAddress),p=await u.account.pool.fetch(m);try{let h=await $r(new wt(r),p.mint,u.programId),{lpAmount:T,rewardDebt:S}=await u.account.userDeposit.fetch(h);return new xe({lpAmount:T.toString(),rewardDebt:S.toString()})}catch{return new xe({lpAmount:"0",rewardDebt:"0"})}}async getPoolInfoFromChain(r){let a=this.buildAnchorProvider(r.bridgeAddress),o=await this.getBridge(r.bridgeAddress,a).account.pool.fetch(r.poolAddress),u=o.vUsdBalance.toString(),m=o.tokenBalance.toString(),p=ke({tokenBalance:m,vUsdBalance:u});return{dValue:o.d.toString(),aValue:o.a.toString(),totalLpAmount:o.totalLpAmount.toString(),vUsdBalance:u,tokenBalance:m,accRewardPerShareP:o.accRewardPerShareP.toString(),p:this.P,imbalance:p}}async buildRawTransactionDeposit(r){let{bridge:a,accounts:o,preInstructions:u}=await this.prepareDataForTransaction(r),m=await a.methods.deposit(new Za(r.amount)).accounts(o).preInstructions(u).transaction();return m.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,m.feePayer=new wt(r.accountAddress),await $t(m,r.txFeeParams,this.solanaRpcUrl),m}async buildRawTransactionWithdraw(r){let{bridge:a,accounts:o,preInstructions:u}=await this.prepareDataForTransaction(r),m=await a.methods.withdraw(new Za(r.amount)).accounts(o).preInstructions(u).transaction();return m.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,m.feePayer=new wt(r.accountAddress),await $t(m,r.txFeeParams,this.solanaRpcUrl),m}async buildRawTransactionClaimRewards(r){let{bridge:a,accounts:o,preInstructions:u}=await this.prepareDataForTransaction(r),m=await a.methods.claimRewards().accounts(o).preInstructions(u).transaction();return m.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,m.feePayer=new wt(r.accountAddress),await $t(m,r.txFeeParams,this.solanaRpcUrl),m}async prepareDataForTransaction(r){let a=this.buildAnchorProvider(r.accountAddress),o=this.getBridge(r.token.bridgeAddress,a),{accounts:u,preInstructions:m}=await this._getLPTransactionData(o,r.token.poolAddress,r.accountAddress,a);return{bridge:o,accounts:u,preInstructions:m}}getBridge(r,a){return new Po(hn,r,a)}buildAnchorProvider(r){let a=new Bo(this.solanaRpcUrl,"confirmed"),o=new wt(r);return new So(a,{publicKey:o},{preflightCommitment:"confirmed",commitment:"confirmed"})}async _getLPTransactionData(r,a,o,u){let m=new wt(o),p=await ft(r.programId),h=await jt(r.programId),T=new wt(a),P=(await r.account.pool.fetch(T)).mint,k=await Qe(m,P),I=await Zt(P,r.programId),x=await $r(m,P,r.programId),F=[Co.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await _t(k,u)}catch{let W=await wo.associatedToken(u).methods.create().accounts({mint:P,owner:m,associatedAccount:k}).instruction();F.push(W)}try{await r.account.userDeposit.fetch(x)}catch{let D=await r.methods.initDepositAccount().accounts({mint:P,user:m,userDeposit:x}).instruction();F.push(D)}return{accounts:{mint:P,user:m,config:p,pool:T,bridgeAuthority:h,userDeposit:x,userToken:k,bridgeToken:I},preInstructions:F}}};g();y();f();import{contract as ak}from"@stellar/stellar-sdk";g();y();f();import{contract as t}from"@stellar/stellar-sdk";var Io=t.Spec,Ro=t.Client;var cr=class extends Ro{constructor(r){super(new Io(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABwAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAZicmlkZ2UAAAAAABMAAAAAAAAAAWEAAAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAADGZlZV9zaGFyZV9icAAAAAoAAAAAAAAAFGJhbGFuY2VfcmF0aW9fbWluX2JwAAAACgAAAAAAAAASYWRtaW5fZmVlX3NoYXJlX2JwAAAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAHZGVwb3NpdAAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAId2l0aGRyYXcAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAACWFtb3VudF9scAAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3dhcF90b192X3VzZAAAAAAAAAMAAAAAAAAABHVzZXIAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9mcm9tX3ZfdXNkAAAAAAQAAAAAAAAABHVzZXIAAAATAAAAAAAAAAt2dXNkX2Ftb3VudAAAAAAKAAAAAAAAABJyZWNlaXZlX2Ftb3VudF9taW4AAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAANY2xhaW1fcmV3YXJkcwAAAAAAAAEAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAdgYWRtaW5gAAAAAA1zZXRfZmVlX3NoYXJlAAAAAAAAAQAAAAAAAAAMZmVlX3NoYXJlX2JwAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAWYWRqdXN0X3RvdGFsX2xwX2Ftb3VudAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAYc2V0X2JhbGFuY2VfcmF0aW9fbWluX2JwAAAAAQAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAMc3RvcF9kZXBvc2l0AAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAANc3RhcnRfZGVwb3NpdAAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3RvcF93aXRoZHJhdwAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAOc3RhcnRfd2l0aGRyYXcAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc2V0X2JyaWRnZQAAAAAAAQAAAAAAAAAGYnJpZGdlAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAATc2V0X2FkbWluX2ZlZV9zaGFyZQAAAAABAAAAAAAAABJhZG1pbl9mZWVfc2hhcmVfYnAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAPY2xhaW1fYWRtaW5fZmVlAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAZgdmlld2AAAAAAAA5wZW5kaW5nX3Jld2FyZAAAAAAAAQAAAAAAAAAEdXNlcgAAABMAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAAIZ2V0X3Bvb2wAAAAAAAAAAQAAA+kAAAfQAAAABFBvb2wAAAAD","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAKZ2V0X2JyaWRnZQAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAQZ2V0X3VzZXJfZGVwb3NpdAAAAAEAAAAAAAAABHVzZXIAAAATAAAAAQAAA+kAAAfQAAAAC1VzZXJEZXBvc2l0AAAAAAM=","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAD1N3YXBwZWRGcm9tVlVzZAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAAC3Z1c2RfYW1vdW50AAAAAAo=","AAAAAQAAAAAAAAAAAAAADVN3YXBwZWRUb1ZVc2QAAAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAALdnVzZF9hbW91bnQAAAAACg==","AAAAAQAAAAAAAAAAAAAAB0RlcG9zaXQAAAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAACFdpdGhkcmF3AAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAADlJld2FyZHNDbGFpbWVkAAAAAAACAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAABHVzZXIAAAAT","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAQAAAAEAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAEAAAAT","AAAAAQAAAAAAAAAAAAAABFBvb2wAAAAPAAAAAAAAAAFhAAAAAAAACgAAAAAAAAAWYWNjX3Jld2FyZF9wZXJfc2hhcmVfcAAAAAAACgAAAAAAAAAQYWRtaW5fZmVlX2Ftb3VudAAAAAoAAAAAAAAAEmFkbWluX2ZlZV9zaGFyZV9icAAAAAAACgAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAAAAAAtjYW5fZGVwb3NpdAAAAAABAAAAAAAAAAxjYW5fd2l0aGRyYXcAAAABAAAAAAAAAAFkAAAAAAAACgAAAAAAAAAIZGVjaW1hbHMAAAAEAAAAAAAAAAxmZWVfc2hhcmVfYnAAAAAKAAAAAAAAAAhyZXNlcnZlcwAAAAoAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAANdG9rZW5fYmFsYW5jZQAAAAAAAAoAAAAAAAAAD3RvdGFsX2xwX2Ftb3VudAAAAAAKAAAAAAAAAA12X3VzZF9iYWxhbmNlAAAAAAAACg==","AAAAAQAAAAAAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAIAAAAAAAAACWxwX2Ftb3VudAAAAAAAAAoAAAAAAAAAC3Jld2FyZF9kZWJ0AAAAAAo=","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),r);this.options=r}fromJSON={initialize:this.txFromJSON,deposit:this.txFromJSON,withdraw:this.txFromJSON,swap_to_v_usd:this.txFromJSON,swap_from_v_usd:this.txFromJSON,claim_rewards:this.txFromJSON,set_fee_share:this.txFromJSON,adjust_total_lp_amount:this.txFromJSON,set_balance_ratio_min_bp:this.txFromJSON,stop_deposit:this.txFromJSON,start_deposit:this.txFromJSON,stop_withdraw:this.txFromJSON,start_withdraw:this.txFromJSON,set_stop_authority:this.txFromJSON,set_bridge:this.txFromJSON,set_admin:this.txFromJSON,set_admin_fee_share:this.txFromJSON,claim_admin_fee:this.txFromJSON,pending_reward:this.txFromJSON,get_pool:this.txFromJSON,get_admin:this.txFromJSON,get_stop_authority:this.txFromJSON,get_bridge:this.txFromJSON,get_user_deposit:this.txFromJSON,upgrade:this.txFromJSON}};g();y();f();import{contract as Wh,rpc as vo}from"@stellar/stellar-sdk";var _a=vo.Api;function Kt(s){let{simulation:i,options:r}=s;if(!i)throw new Error("Soroban assembled transaction does not have simulation");if(_a.isSimulationSuccess(i))return i.result==null?void 0:r.parseResultXdr(i.result.retval);throw new Error(i.error)}function Ht(s){let{simulation:i}=s;if(!i)throw new Error("Soroban assembled transaction does not have simulation");return _a.isSimulationError(i)}var Ar=class extends Ue{constructor(r,a,o){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=o}chainType="SRB";P=48;async getUserBalanceInfo(r,a){let u=await this.getContract(a.poolAddress).get_user_deposit({user:r});if(Ht(u))throw new O;let m=Kt(u);if(!m)throw new O;let p=m.unwrap();return new xe({lpAmount:p.lp_amount.toString(),rewardDebt:p.reward_debt.toString()})}async getPoolInfoFromChain(r){let o=await this.getContract(r.poolAddress).get_pool();if(Ht(o))throw new O;let u=Kt(o);if(!u)throw new O;let m=u.unwrap();return{aValue:m.a.toString(),accRewardPerShareP:m.acc_reward_per_share_p.toString(),dValue:m.d.toString(),tokenBalance:m.token_balance.toString(),p:this.P,totalLpAmount:m.total_lp_amount.toString(),vUsdBalance:m.v_usd_balance.toString(),imbalance:ke({tokenBalance:m.token_balance.toString(),vUsdBalance:m.v_usd_balance.toString()})}}async buildRawTransactionDeposit(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).deposit({sender:r.accountAddress,amount:BigInt(r.amount)})).toXDR()}async buildRawTransactionWithdraw(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).withdraw({sender:r.accountAddress,amount_lp:BigInt(r.amount)})).toXDR()}async buildRawTransactionClaimRewards(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).claim_rewards({sender:r.accountAddress})).toXDR()}getContract(r,a){let o={publicKey:a,contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new cr(o)}};g();y();f();import{SuiClient as No}from"@mysten/sui/client";import{Transaction as hr}from"@mysten/sui/transactions";var zt=He(Tt());g();y();f();he();g();y();f();he();import{bcs as $a}from"@mysten/sui/bcs";import{fromB64 as ko}from"@mysten/sui/utils";function ur(s){return s=j(s),s.startsWith(`${St}::balance::Balance<`)}var we=class s{__StructClass=!0;static get $typeName(){return`${St}::balance::Balance`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;value;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.value=r.value}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return $a.struct("Balance",{value:$a.u64()})}static fromFields(i,r){return s.reified(i).new({value:K("u64",r.value)})}static fromFieldsWithTypes(i,r){if(!ur(r.type))throw new Error("not a Balance type");return ct(r,[i]),s.reified(i).new({value:X("u64",r.fields.value)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{value:this.value.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({value:Y("u64",r.value)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(z(s.$typeName,_(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!ur(r.type))throw new Error(`object at ${r.fields.id} is not a Balance object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!ur(r.bcs.type))throw new Error("object at is not a Balance object");let a=Pe(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=j(a[0]),u=j(_(i));if(o!==j(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,ko(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching Balance object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!ur(o.data.bcs.type))throw new Error(`object at id ${a} is not a Balance object`);return s.fromSuiObjectData(r,o.data)}};var fi=He(Tt());g();y();f();he();var pi=He(Tt());import{bcs as mr}from"@mysten/sui/bcs";import{fromB64 as xo}from"@mysten/sui/utils";function lr(s){return s=j(s),s.startsWith(`${pi.PKG_V1}::pool_rewards::PoolRewards<`)}var Nt=class s{__StructClass=!0;static get $typeName(){return`${pi.PKG_V1}::pool_rewards::PoolRewards`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;accRewardPerShareP;adminFeeShareBp;adminFee;rewards;lpSupply;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.accRewardPerShareP=r.accRewardPerShareP,this.adminFeeShareBp=r.adminFeeShareBp,this.adminFee=r.adminFee,this.rewards=r.rewards,this.lpSupply=r.lpSupply}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return mr.struct("PoolRewards",{acc_reward_per_share_p:mr.u128(),admin_fee_share_bp:mr.u64(),admin_fee:we.bcs,rewards:we.bcs,lp_supply:mr.u64()})}static fromFields(i,r){return s.reified(i).new({accRewardPerShareP:K("u128",r.acc_reward_per_share_p),adminFeeShareBp:K("u64",r.admin_fee_share_bp),adminFee:K(we.reified(i),r.admin_fee),rewards:K(we.reified(i),r.rewards),lpSupply:K("u64",r.lp_supply)})}static fromFieldsWithTypes(i,r){if(!lr(r.type))throw new Error("not a PoolRewards type");return ct(r,[i]),s.reified(i).new({accRewardPerShareP:X("u128",r.fields.acc_reward_per_share_p),adminFeeShareBp:X("u64",r.fields.admin_fee_share_bp),adminFee:X(we.reified(i),r.fields.admin_fee),rewards:X(we.reified(i),r.fields.rewards),lpSupply:X("u64",r.fields.lp_supply)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{accRewardPerShareP:this.accRewardPerShareP.toString(),adminFeeShareBp:this.adminFeeShareBp.toString(),adminFee:this.adminFee.toJSONField(),rewards:this.rewards.toJSONField(),lpSupply:this.lpSupply.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({accRewardPerShareP:Y("u128",r.accRewardPerShareP),adminFeeShareBp:Y("u64",r.adminFeeShareBp),adminFee:Y(we.reified(i),r.adminFee),rewards:Y(we.reified(i),r.rewards),lpSupply:Y("u64",r.lpSupply)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(z(s.$typeName,_(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!lr(r.type))throw new Error(`object at ${r.fields.id} is not a PoolRewards object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!lr(r.bcs.type))throw new Error("object at is not a PoolRewards object");let a=Pe(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=j(a[0]),u=j(_(i));if(o!==j(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,xo(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching PoolRewards object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!lr(o.data.bcs.type))throw new Error(`object at id ${a} is not a PoolRewards object`);return s.fromSuiObjectData(r,o.data)}};g();y();f();he();var gi=He(Tt());import{bcs as Qt}from"@mysten/sui/bcs";import{fromB64 as Fo}from"@mysten/sui/utils";function dr(s){return s=j(s),s.startsWith(`${gi.PKG_V1}::pool_state::PoolState<`)}var Wt=class s{__StructClass=!0;static get $typeName(){return`${gi.PKG_V1}::pool_state::PoolState`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;tokenBalance;vusdBalance;d;a;balanceRatioMinBp;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.tokenBalance=r.tokenBalance,this.vusdBalance=r.vusdBalance,this.d=r.d,this.a=r.a,this.balanceRatioMinBp=r.balanceRatioMinBp}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return Qt.struct("PoolState",{token_balance:Qt.u64(),vusd_balance:Qt.u64(),d:Qt.u64(),a:Qt.u64(),balance_ratio_min_bp:Qt.u64()})}static fromFields(i,r){return s.reified(i).new({tokenBalance:K("u64",r.token_balance),vusdBalance:K("u64",r.vusd_balance),d:K("u64",r.d),a:K("u64",r.a),balanceRatioMinBp:K("u64",r.balance_ratio_min_bp)})}static fromFieldsWithTypes(i,r){if(!dr(r.type))throw new Error("not a PoolState type");return ct(r,[i]),s.reified(i).new({tokenBalance:X("u64",r.fields.token_balance),vusdBalance:X("u64",r.fields.vusd_balance),d:X("u64",r.fields.d),a:X("u64",r.fields.a),balanceRatioMinBp:X("u64",r.fields.balance_ratio_min_bp)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{tokenBalance:this.tokenBalance.toString(),vusdBalance:this.vusdBalance.toString(),d:this.d.toString(),a:this.a.toString(),balanceRatioMinBp:this.balanceRatioMinBp.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({tokenBalance:Y("u64",r.tokenBalance),vusdBalance:Y("u64",r.vusdBalance),d:Y("u64",r.d),a:Y("u64",r.a),balanceRatioMinBp:Y("u64",r.balanceRatioMinBp)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(z(s.$typeName,_(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!dr(r.type))throw new Error(`object at ${r.fields.id} is not a PoolState object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!dr(r.bcs.type))throw new Error("object at is not a PoolState object");let a=Pe(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=j(a[0]),u=j(_(i));if(o!==j(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Fo(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching PoolState object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!dr(o.data.bcs.type))throw new Error(`object at id ${a} is not a PoolState object`);return s.fromSuiObjectData(r,o.data)}};import{bcs as Cn}from"@mysten/sui/bcs";import{fromB64 as Mo}from"@mysten/sui/utils";function pr(s){return s=j(s),s.startsWith(`${fi.PKG_V1}::pool::Pool<`)}var gr=class s{__StructClass=!0;static get $typeName(){return`${fi.PKG_V1}::pool::Pool`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;id;state;rewards;feeShareBp;canDeposit;canWithdraw;decimals;balance;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.id=r.id,this.state=r.state,this.rewards=r.rewards,this.feeShareBp=r.feeShareBp,this.canDeposit=r.canDeposit,this.canWithdraw=r.canWithdraw,this.decimals=r.decimals,this.balance=r.balance}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return Cn.struct("Pool",{id:Ye.bcs,state:Wt.bcs,rewards:Nt.bcs,fee_share_bp:Cn.u64(),can_deposit:Cn.bool(),can_withdraw:Cn.bool(),decimals:Cn.u8(),balance:we.bcs})}static fromFields(i,r){return s.reified(i).new({id:K(Ye.reified(),r.id),state:K(Wt.reified(i),r.state),rewards:K(Nt.reified(i),r.rewards),feeShareBp:K("u64",r.fee_share_bp),canDeposit:K("bool",r.can_deposit),canWithdraw:K("bool",r.can_withdraw),decimals:K("u8",r.decimals),balance:K(we.reified(i),r.balance)})}static fromFieldsWithTypes(i,r){if(!pr(r.type))throw new Error("not a Pool type");return ct(r,[i]),s.reified(i).new({id:X(Ye.reified(),r.fields.id),state:X(Wt.reified(i),r.fields.state),rewards:X(Nt.reified(i),r.fields.rewards),feeShareBp:X("u64",r.fields.fee_share_bp),canDeposit:X("bool",r.fields.can_deposit),canWithdraw:X("bool",r.fields.can_withdraw),decimals:X("u8",r.fields.decimals),balance:X(we.reified(i),r.fields.balance)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{id:this.id,state:this.state.toJSONField(),rewards:this.rewards.toJSONField(),feeShareBp:this.feeShareBp.toString(),canDeposit:this.canDeposit,canWithdraw:this.canWithdraw,decimals:this.decimals,balance:this.balance.toJSONField()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({id:Y(Ye.reified(),r.id),state:Y(Wt.reified(i),r.state),rewards:Y(Nt.reified(i),r.rewards),feeShareBp:Y("u64",r.feeShareBp),canDeposit:Y("bool",r.canDeposit),canWithdraw:Y("bool",r.canWithdraw),decimals:Y("u8",r.decimals),balance:Y(we.reified(i),r.balance)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(z(s.$typeName,_(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!pr(r.type))throw new Error(`object at ${r.fields.id} is not a Pool object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!pr(r.bcs.type))throw new Error("object at is not a Pool object");let a=Pe(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=j(a[0]),u=j(_(i));if(o!==j(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Mo(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching Pool object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!pr(o.data.bcs.type))throw new Error(`object at id ${a} is not a Pool object`);return s.fromSuiObjectData(r,o.data)}};g();y();f();he();var hi=He(Tt());import{bcs as yi}from"@mysten/sui/bcs";import{fromB64 as Oo}from"@mysten/sui/utils";function fr(s){return s=j(s),s.startsWith(`${hi.PKG_V1}::user_deposit::UserDeposit<`)}var yr=class s{__StructClass=!0;static get $typeName(){return`${hi.PKG_V1}::user_deposit::UserDeposit`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;id;lpAmount;rewardDebt;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.id=r.id,this.lpAmount=r.lpAmount,this.rewardDebt=r.rewardDebt}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return yi.struct("UserDeposit",{id:Ye.bcs,lp_amount:yi.u64(),reward_debt:yi.u64()})}static fromFields(i,r){return s.reified(i).new({id:K(Ye.reified(),r.id),lpAmount:K("u64",r.lp_amount),rewardDebt:K("u64",r.reward_debt)})}static fromFieldsWithTypes(i,r){if(!fr(r.type))throw new Error("not a UserDeposit type");return ct(r,[i]),s.reified(i).new({id:X(Ye.reified(),r.fields.id),lpAmount:X("u64",r.fields.lp_amount),rewardDebt:X("u64",r.fields.reward_debt)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{id:this.id,lpAmount:this.lpAmount.toString(),rewardDebt:this.rewardDebt.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({id:Y(Ye.reified(),r.id),lpAmount:Y("u64",r.lpAmount),rewardDebt:Y("u64",r.rewardDebt)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(z(s.$typeName,_(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!fr(r.type))throw new Error(`object at ${r.fields.id} is not a UserDeposit object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!fr(r.bcs.type))throw new Error("object at is not a UserDeposit object");let a=Pe(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=j(a[0]),u=j(_(i));if(o!==j(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Oo(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching UserDeposit object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!fr(o.data.bcs.type))throw new Error(`object at id ${a} is not a UserDeposit object`);return s.fromSuiObjectData(r,o.data)}};g();y();f();function La(s,i,r){if(i.length===0||!i[0])return[];let a=i[0],o=s.reduce((p,h)=>p+BigInt(h),BigInt(0)),u=BigInt(a.balance),m=[];for(let p of i.slice(1)){if(u>o)return Ja(r,a,m,s);u+=BigInt(p.balance),m.push(p)}return u>=o?Ja(r,a,m,s):[]}function Ja(s,i,r,a){let o=a.map(u=>s.pure.u64(u));return r.length>0&&s.mergeCoins(i.coinObjectId,r.map(u=>u.coinObjectId)),s.splitCoins(i.coinObjectId,o)}g();y();f();var Do="0x0000000000000000000000000000000000000000000000000000000000000000";async function Xa(s,i,r){let a=await s.devInspectTransactionBlock({sender:Do,transactionBlock:i});if(a.effects.status.status!=="success")throw new Error(`inspectionResult failed. ${JSON.stringify(a,null,2)}`);let o=a.results?.pop()?.returnValues?.pop();if(!o)throw new Error(`Something with inspectionResult went wrong. ${JSON.stringify(a,null,2)}`);let[u,m]=o;return typeof r=="object"?r.fromBcs(Uint8Array.from(u)).toJSONField():bn(r).parse(Uint8Array.from(u))}var Tr=class extends Ue{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.client=new No({url:r})}chainType="SUI";client;async getUserBalanceInfo(r,a){if(!a.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=a.suiAddresses;if(!o)throw new O("SUI token must contain 'suiAddresses'");(0,zt.setAddress)(o.bridgeAddress,o.bridgeAddressOrigin);let m=(await this.fetchDeposits(r,a.originTokenAddress)).reduce((p,h)=>{if(h.data)return p.lpAmount+=BigInt(h.data.content.fields.lp_amount),p.rewardDebt+=BigInt(h.data.content.fields.reward_debt),p;throw new O("Deposits fetch failed")},{lpAmount:BigInt(0),rewardDebt:BigInt(0)});return new xe({lpAmount:m.lpAmount.toString(),rewardDebt:m.rewardDebt.toString()})}async fetchDeposits(r,a){return await At(o=>this.client.getOwnedObjects({owner:r,filter:{StructType:yr.phantom(oe(a)).phantomType},options:{showContent:!0},cursor:o}))}async getPoolInfoFromChain(r){let a=r.suiAddresses;if(!a)throw new O("SUI token must contain 'suiAddresses'");if((0,zt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=48,u=new hr;va(u,r.originTokenAddress,a.bridgeObjectAddress);let m=await Xa(this.client,u,gr.reified(oe(r.originTokenAddress))),p=m.state.tokenBalance,h=m.state.vusdBalance,T=ke({tokenBalance:p,vUsdBalance:h});return{dValue:m.state.d,aValue:m.state.a,totalLpAmount:m.rewards.lpSupply,vUsdBalance:h,tokenBalance:p,accRewardPerShareP:m.rewards.accRewardPerShareP,p:o,imbalance:T}}async buildRawTransactionDeposit(r){let a=r.token.suiAddresses;if(!a)throw new O("SUI token must contain 'suiAddresses'");if((0,zt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=await At(P=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:P}));if(o.length===0||!o[0])throw new ut("No coins to deposit");let u=o[0],m=new hr;m.setSender(r.accountAddress);let{depositObj:p,isNewDeposit:h}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,m),[T]=La([r.amount],o,m);if(!T)throw new ut("No coins to deposit");if(!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let S=Ba(m,r.token.originTokenAddress,{bridge:a.bridgeObjectAddress,userDeposit:p,coin:T});return m.mergeCoins(u.coinObjectId,[S]),h&&m.transferObjects([p],r.accountAddress),await m.toJSON({client:this.client})}async getDepositObject(r,a,o){let u=await this.fetchDeposits(r,a);if(u.length===0||!u[0]){let m=oe(a).phantomType;return{depositObj:ka(o,m),isNewDeposit:!0}}else{if(u[0].data?.objectId)return{depositObj:u[0].data.objectId,isNewDeposit:!1};throw new O("Something went wrong while deposit")}}async buildRawTransactionWithdraw(r){let a=r.token.suiAddresses;if(!a)throw new O("SUI token must contain 'suiAddresses'");if((0,zt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=oe(r.token.originTokenAddress).phantomType,u=new hr;u.setSender(r.accountAddress);let{depositObj:m,isNewDeposit:p}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,u);if(p)throw new ut("No deposit found");let h=Ia(u,o,{bridge:a.bridgeObjectAddress,userDeposit:m,amountLp:BigInt(r.amount)}),T=await At(S=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:S}));if(!h[0]||!h[1])throw new O("No rewards found");return T[0]?u.mergeCoins(T[0].coinObjectId,[h[0],h[1]]):(u.mergeCoins(h[0],[h[1]]),u.transferObjects([h[0]],r.accountAddress)),await u.toJSON({client:this.client})}async buildRawTransactionClaimRewards(r){let a=r.token.suiAddresses;if(!a)throw new O("SUI token must contain 'suiAddresses'");if((0,zt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=oe(r.token.originTokenAddress).phantomType,u=new hr;u.setSender(r.accountAddress);let{depositObj:m,isNewDeposit:p}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,u);if(p)throw new ut("No deposit found");let h=Ra(u,o,{bridge:a.bridgeObjectAddress,userDeposit:m}),T=await At(S=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:S}));return T[0]?u.mergeCoins(T[0].coinObjectId,[h]):u.transferObjects([h],r.accountAddress),await u.toJSON({client:this.client})}};g();y();f();import{Web3 as br}from"web3";import{encodeFunctionCall as Wo}from"web3-eth-abi";var Bn=class extends Ue{constructor(r,a,o){super();this.tronWeb=r;this.api=a;this.tronJsonRpc=o}chainType="TRX";P=52;async getUserBalanceInfo(r,a){let o;if(this.tronJsonRpc)try{o=await this.getUserBalanceInfoByBatch(this.tronJsonRpc,r,a)}catch{o=await this.getUserBalanceInfoPerProperty(r,a)}else o=await this.getUserBalanceInfoPerProperty(r,a);return o}async getUserBalanceInfoByBatch(r,a,o){let u=gn(o.poolAddress),m=gn(a),p=[{jsonrpc:"2.0",id:1,method:"eth_call",params:[{to:u,data:this.getFunctionAbi("userRewardDebt",m)},"latest"]},{jsonrpc:"2.0",id:2,method:"eth_call",params:[{to:u,data:this.getFunctionAbi("balanceOf",m)},"latest"]}],T=await(await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(p)})).json();if(Array.isArray(T)&&T.length===2){let S=P=>{let k=T.find(I=>I.id===P);if(!k||!k.result)throw new Error(`Missing or invalid result for id ${P}`);return br.utils.toBigInt(k.result).toString()};return new xe({lpAmount:br.utils.toBigInt(S(2)).toString(),rewardDebt:br.utils.toBigInt(S(1)).toString()})}throw new Error("Batched HTTP call failed")}async getUserBalanceInfoPerProperty(r,a){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(r);let o=this.getContract(a.poolAddress),u=(await o.methods.userRewardDebt(r).call()).toString(),m=(await o.methods.balanceOf(r).call()).toString();return new xe({lpAmount:m,rewardDebt:u})}async getPoolInfoFromChain(r){let a;if(this.tronJsonRpc)try{a=await this.getPoolInfoByBatch(this.tronJsonRpc,r)}catch{a=await this.getPoolInfoPerProperty(r)}else a=await this.getPoolInfoPerProperty(r);return a}async getPoolInfoByBatch(r,a){let o=gn(a.poolAddress),u=[{jsonrpc:"2.0",id:1,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("a")},"latest"]},{jsonrpc:"2.0",id:2,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("d")},"latest"]},{jsonrpc:"2.0",id:3,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("tokenBalance")},"latest"]},{jsonrpc:"2.0",id:4,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("vUsdBalance")},"latest"]},{jsonrpc:"2.0",id:5,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("totalSupply")},"latest"]},{jsonrpc:"2.0",id:6,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("accRewardPerShareP")},"latest"]}],p=await(await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)})).json();if(Array.isArray(p)&&p.length===6){let h=k=>{let I=p.find(x=>x.id===k);if(!I||!I.result)throw new Error(`Missing or invalid result for id ${k}`);return br.utils.toBigInt(I.result).toString()},T=h(3),S=h(4),P=ke({tokenBalance:T,vUsdBalance:S});return{aValue:h(1),dValue:h(2),tokenBalance:T,vUsdBalance:S,totalLpAmount:h(5),accRewardPerShareP:h(6),p:this.P,imbalance:P}}throw new Error("Batched pool info call failed")}async getPoolInfoPerProperty(r){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(r.poolAddress);let a=this.getContract(r.poolAddress),[o,u,m,p,h,T]=await Promise.all([a.methods.a().call(),a.methods.d().call(),a.methods.tokenBalance().call(),a.methods.vUsdBalance().call(),a.methods.totalSupply().call(),a.methods.accRewardPerShareP().call()]),S=m.toString(),P=p.toString(),k=ke({tokenBalance:S,vUsdBalance:P});return{aValue:o.toString(),dValue:u.toString(),tokenBalance:S,vUsdBalance:P,totalLpAmount:h.toString(),accRewardPerShareP:T.toString(),p:this.P,imbalance:k}}buildRawTransactionDeposit(r){let{amount:a,accountAddress:o}=r,u=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.poolAddress,"deposit(uint256)",u,"0",o)}buildRawTransactionWithdraw(r){let{amount:a,accountAddress:o}=r,u=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.poolAddress,"withdraw(uint256)",u,"0",o)}buildRawTransactionClaimRewards(r){let{accountAddress:a}=r,o=[];return this.buildRawTransaction(r.token.poolAddress,"claimRewards()",o,"0",a)}async buildRawTransaction(r,a,o,u,m){let p=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+u},o,m);if(!p?.result?.result)throw new O("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}getContract(r){return this.tronWeb.contract(Pn.abi,r)}getFunctionAbi(r,...a){let o=Pn.abi.find(u=>u.type==="function"&&"name"in u&&u.name===r);if(!o)throw new Error(`${r} method not found in Pool ABI`);return Wo(o,a)}};var Sr=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o;this.rawTxBuilder=new sr(i,r,this.params,o);let u=a.cachePoolInfoChainSec>0?a.cachePoolInfoChainSec*1e3:20*1e3;this.cache=new Uo({defaultTtl:u})}rawTxBuilder;cache;async getAllowance(i,r){if(r){let a=i,o=r;return await this.tokenService.getAllowance({...o,spender:o.token.poolAddress},a)}else{let a=i;return await this.tokenService.getAllowance({...a,spender:a.token.poolAddress})}}async checkAllowance(i,r){if(r){let a=i,o=r;return this.tokenService.checkAllowance({...o,spender:o.token.poolAddress},a)}else{let a=i;return this.tokenService.checkAllowance({...a,spender:a.token.poolAddress})}}async approve(i,r){return this.tokenService.approve(i,{...r,spender:r.token.poolAddress})}async getAmountToBeDeposited(i,r,a){q(i),ee("amount",i,r.decimals);let o=await this.getPoolInfoFromChain(r,a),{vUsdBalance:u,tokenBalance:m,aValue:p,dValue:h}=o,T=Va(i,p,h,m,u);return J(T,3).toFixed()}async getAmountToBeWithdrawn(i,r,a,o){q(i),ee("amount",i,a.decimals);let u=await this.getPoolInfoFromChain(a,o),m=ja(i),p=Ne(m,a.decimals),T=(await this.getUserBalanceInfo(r,a,o)).earned(u)||"0",S=Eo(p).plus(T).toFixed();return J(S,a.decimals).toFixed()}async getUserBalanceInfo(i,r,a){return Yt(r.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,a).getUserBalanceInfo(i,r)}async getPoolInfoFromChain(i,r){let a={chainSymbol:i.chainSymbol,poolAddress:i.poolAddress},o=this.cache.get(a);if(o)return o;{let u=await Yt(i.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).getPoolInfoFromChain(i);return this.cache.put(a,u),this.api.cachePut({chainSymbol:i.chainSymbol,poolAddress:i.poolAddress},u),u}}};function Yt(s,i,r,a,o){switch(H.getChainProperty(s).chainType){case"EVM":{if(o)return new wn(o,i);{let u=r.getNodeRpcUrl(s),m=new Zo(u);return m.defaultReturnFormat={number:jo.STR,bytes:Vo.HEX},new wn(m,i)}}case"TRX":{let u=r.getNodeRpcUrl(s),m=a.tronJsonRpc;if(o)return new Bn(o,i,m);{let p=new Go({fullHost:u});return new Bn(p,i,m)}}case"SOLANA":{let u=r.getNodeRpcUrl(s);return new or(u,i)}case"SRB":return new Ar(r,a,i);case"SUI":return new Tr(r.getNodeRpcUrl(s),i)}}g();y();f();g();y();f();import{Big as me}from"big.js";function Ha(s,i,r){let a=_o(s,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo),o=$o(a.amountIncludingCommissionInSystemPrecision,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:o}}function Qa(s,i,r){let a=Jo(s,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo),o=Lo(a.amountIncludingCommissionInSystemPrecision,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:o}}function _o(s,{feeShare:i,decimals:r},a){let o=me(s),u=o.times(i),m=o.minus(u);return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInSystemPrecision:Ya(xt(m,r),a),amountExcludingCommissionInSystemPrecision:Ya(xt(o,r),a)}}function Ya(s,i){if(s.eq(0))return"0";let r=me(i.tokenBalance).plus(s),a=at(r.toFixed(),i.aValue,i.dValue);return me(i.vUsdBalance).minus(a).round().toFixed()}function $o(s,{feeShare:i,decimals:r},a){if(me(s).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let u=me(s).plus(a.vUsdBalance),m=at(u,a.aValue,a.dValue),p=Ne(me(a.tokenBalance).minus(m),r),h=me(p).times(i),T=me(p).minus(h).round();return{bridgeFeeInTokenPrecision:h.round().toFixed(),amountIncludingCommissionInTokenPrecision:T.toFixed(),amountExcludingCommissionInTokenPrecision:p.toFixed()}}function Jo(s,{feeShare:i,decimals:r},a){let o=me(i).div(me(1).minus(i)),u=me(s).times(o),m=me(s).plus(u);return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInSystemPrecision:Ka(xt(m,r),a),amountExcludingCommissionInSystemPrecision:Ka(xt(s,r),a)}}function Ka(s,i){let r=me(i.tokenBalance).minus(s),a=at(r.toFixed(),i.aValue,i.dValue);return me(a).minus(i.vUsdBalance).round().toFixed()}function Lo(s,{feeShare:i,decimals:r},a){if(me(s).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let o=me(a.vUsdBalance).minus(s),u=at(o.toFixed(),a.aValue,a.dValue),m=me(u).minus(a.tokenBalance),p=Ne(m.toFixed(),r),h=me(i).div(me(1).minus(i)),T=me(p).times(h),S=me(p).plus(T);return{bridgeFeeInTokenPrecision:T.round().toFixed(),amountIncludingCommissionInTokenPrecision:S.round().toFixed(),amountExcludingCommissionInTokenPrecision:p.toFixed()}}g();y();f();import{Big as Ct}from"big.js";function za(s,i,r,a,o){let u=it(s,i,r),m=Ne(u,i.decimals),p=pn(u,a,o),h=Ct(s).times(i.feeShare),T=Ct(p).div(Ct(1).minus(a.feeShare)).minus(p);return{sourceLPSwap:{fee:J(h,i.decimals).neg().round(i.decimals,Ct.roundUp).toFixed(),swap:J(Ct(s).minus(m).minus(h),i.decimals).neg().round(i.decimals,Ct.roundUp).toFixed()},destLPSwap:{fee:J(T,a.decimals).neg().round(a.decimals,Ct.roundUp).toFixed(),swap:J(Ne(u,a.decimals).minus(p).minus(T),a.decimals).neg().round(a.decimals,Ct.roundUp).toFixed()}}}g();y();f();g();y();f();g();y();f();g();y();f();import zo from"axios";g();y();f();var qa="3.23.1-beta.2";g();y();f();function es(s){return Object.entries(s).reduce((i,r)=>{let a=r[0],o=r[1],u=Qo(a,o);return u&&(i[a]=u),i},{})}function ts(s){let i={};for(let[r,a]of Object.entries(s)){let o=r;for(let u of a.tokens){let m=qt({chainSymbol:o,poolAddress:u.poolAddress}),p=ke(u.poolInfo);i[m]={...u.poolInfo,imbalance:p}}}return i}function Xo(s,i){let{name:r,...a}=s,{poolInfo:o,...u}=i;return{...u,...a,chainName:r}}function Yo(s){switch(s){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;case"cctpV2":return 4;case"oft":return 5}}function Ko(s){return Object.entries(s).reduce((i,[r,a])=>(i[r]=Ho(a),i),{})}function Ho(s){return Object.entries(s).reduce((i,[r,a])=>{let o=Yo(r);return o&&(i[o]=a),i},{})}function Qo(s,i){let r=H.getChainsProperties()[s];if(!r)return null;let a={...r,allbridgeChainId:i.chainId,bridgeAddress:i.bridgeAddress,oftBridgeAddress:i.oftBridgeAddress,transferTime:Ko(i.transferTime),txCostAmount:i.txCostAmount,confirmations:i.confirmations,suiAddresses:i.suiAddresses};return{...a,tokens:i.tokens.map(o=>Xo(a,o))}}function qt(s){return s.chainSymbol+"_"+s.poolAddress}function ns(s){let i=[];for(let[r,a]of Object.entries(s)){let o=r;for(let u of a.tokens)i.push({chainSymbol:o,poolAddress:u.poolAddress})}return i}function rs(s){let i={};for(let[r,a]of Object.entries(s)){let o=r;for(let[u,m]of Object.entries(a))m.imbalance=ke(m),i[qt({chainSymbol:o,poolAddress:u})]=m}return i}var en=class{api;constructor(i){this.api=zo.create({baseURL:i.coreApiUrl,headers:{Accept:"application/json",...i.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+qa},params:i.coreApiQueryParams})}async getTokenInfo(){let{data:i}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:es(i),poolInfoMap:ts(i)}}async getPendingInfo(){let{data:i}=await this.api.get("/pending-info");return i}async getGasBalance(i,r){let{data:a}=await this.api.get(`/check/${i}/${r}`);return a}async getTransferStatus(i,r){let{data:a}=await this.api.get(`/chain/${i}/${r}`);return a}async getReceiveTransactionCost(i){if(i.messenger===5&&!i.sourceToken)throw new Nn("For OFT sourceToken required");let{data:r}=await this.api.post("/receive-fee",i,{headers:{"Content-Type":"application/json"}});return{exchangeRate:r.exchangeRate,fee:r.fee,sourceNativeTokenPrice:r.sourceNativeTokenPrice,adminFeeShareWithExtras:r.adminFeeShareWithExtras}}async getPoolInfoMap(i){let r=i instanceof Array?i:[i],{data:a}=await this.api.post("/pool-info",{pools:r},{headers:{"Content-Type":"application/json"}});return rs(a)}};g();y();f();import Pr from"timed-cache";var Ti=20*1e3,qo=55*1e3,tn=class{constructor(i){this.apiClient=i;this.tokenInfoCache=new Pr({defaultTtl:qo}),this.receivedTransactionCache=new Pr({defaultTtl:Ti}),this.pendingInfoCache=new Pr({defaultTtl:Ti}),this.gasBalanceCache=new Pr({defaultTtl:Ti})}tokenInfoCache;pendingInfoCache;gasBalanceCache;receivedTransactionCache;getTokenInfo(){let i="TOKEN_INFO_CACHE_KEY",r=this.tokenInfoCache.get(i);if(r)return r;let a=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(i,a),a}async getGasBalance(i,r){let a=`GAS_BALANCE_${i}_${r}`,o=this.gasBalanceCache.get(a);if(o)return o;let u=this.apiClient.getGasBalance(i,r);return this.gasBalanceCache.put(a,u),u}async getPendingInfo(){let i="PENDING_INFO_CACHE_KEY",r=this.pendingInfoCache.get(i);if(r)return r;let a=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(i,a),a}async getReceiveTransactionCost(i){let r=`RECEIVE_TX_COST_${i.sourceChainId}_${i.destinationChainId}_${i.messenger}${i.sourceToken?"_"+i.sourceToken:""}`,a=this.receivedTransactionCache.get(r);if(a)return a;let o=await this.apiClient.getReceiveTransactionCost(i);return this.receivedTransactionCache.put(r,o),o}async getTransferStatus(i,r){return this.apiClient.getTransferStatus(i,r)}async getPoolInfoMap(i){return this.apiClient.getPoolInfoMap(i)}};g();y();f();var nn=class{constructor(i){this.apiClient=i}async getChainDetailsMap(){return(await this.apiClient.getTokenInfo()).chainDetailsMap}async tokens(){let i=await this.getChainDetailsMap();return Object.values(i).flatMap(r=>r.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(i,r){return this.apiClient.getGasBalance(i,r)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(i,r){return await this.apiClient.getTransferStatus(i,r)}async getReceiveTransactionCost(i){return await this.apiClient.getReceiveTransactionCost(i)}async getPoolInfoMap(i){return await this.apiClient.getPoolInfoMap(i)}};g();y();f();var rn=class{constructor(i,r){this.client=i;this.isStaging=r.coreApiQueryParams?.staging==="true"}isStaging;async getChainDetailsMap(i){let r=await this.client.getChainDetailsMap(),a={};for(let o in r){let u=r[o];u&&(a[o]={...u,tokens:is(u.tokens,i,this.isStaging)})}return a}async tokens(i){return is(await this.client.tokens(),i,this.isStaging)}async getPendingInfo(){return this.client.getPendingInfo()}async getGasBalance(i,r){return this.client.getGasBalance(i,r)}async getTransferStatus(i,r){return await this.client.getTransferStatus(i,r)}async getReceiveTransactionCost(i){return await this.client.getReceiveTransactionCost(i)}cachePut(i,r){return this.client.cachePut(i,r)}getPoolInfoByKey(i){return this.client.getPoolInfoByKey(i)}refreshPoolInfo(i){return this.client.refreshPoolInfo(i)}};function is(s,i,r){return s.filter(a=>r?!0:a.flags[i]).map(ec)}function ec(s){let{flags:i,...r}=s;return r}g();y();f();import tc from"timed-cache";var nc=55*1e3,an=class{constructor(i){this.client=i;this.poolInfoCache=new bi}poolInfoCache;async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(i,r){return this.client.getTransferStatus(i,r)}getReceiveTransactionCost(i){return this.client.getReceiveTransactionCost(i)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(i,r){return this.client.getGasBalance(i,r)}async getPoolInfoByKey(i){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let r=this.poolInfoCache.get(i);if(r)return r;{let a=await this.client.getPoolInfoMap(i);this.poolInfoCache.putAll(a);let o=a[qt(i)];if(o)return o;throw new O("Cannot find pool info for "+i.poolAddress+" on chain "+i.chainSymbol)}}async refreshPoolInfo(i){let r;if(i)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),r=await this.client.getPoolInfoMap(i);else{let a=await this.client.getChainDetailsMapAndPoolInfoMap();r=await this.client.getPoolInfoMap(ns(a.chainDetailsMap))}this.poolInfoCache.putAll(r)}cachePut(i,r){this.poolInfoCache.put(qt(i),r)}},bi=class{cache;constructor(){this.cache=new tc({defaultTtl:nc})}putAll(i){for(let[r,a]of Object.entries(i))this.cache.put(r,a)}putAllIfNotExists(i){for(let[r,a]of Object.entries(i))this.cache.get(r)||this.cache.put(r,a)}put(i,r){this.cache.put(i,r)}get(i){let r=qt(i);return this.cache.get(r)}};g();y();f();import{Big as lc}from"big.js";import{TronWeb as dc}from"tronweb";import{Web3 as pc}from"web3";g();y();f();g();y();f();var rc={abi:[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}]},wr=rc;g();y();f();g();y();f();g();y();f();import{Big as as}from"big.js";var Ge=class{async checkAllowance(i){let r=await this.getAllowance(i);return as(r).gte(as(i.amount))}};var ic="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",ac="0xdac17f958d2ee523a2206206994597c13d831ec7",sc=1e5,In=class extends Ge{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";getAllowance(r){let a=r.token.tokenAddress,o=r.owner,u=r.spender;return this.getAllowanceByTokenAddress(a,o,u)}getAllowanceByTokenAddress(r,a,o){return this.getERC20Contract(r).methods.allowance(a,o).call()}async getTokenBalance(r){return await this.getERC20Contract(r.token.tokenAddress).methods.balanceOf(r.account).call()}async getNativeTokenBalance(r){return(await this.web3.eth.getBalance(r.account)).toString()}async approve(r){if(this.isUsdt(r.tokenAddress)&&await this.getAllowanceByTokenAddress(r.tokenAddress,r.owner,r.spender)!=="0"){let u=await this.buildRawTransactionApprove({...r,amount:"0"});await this.sendRawTransaction(u,r.chainSymbol)}let a=await this.buildRawTransactionApprove(r);return await this.sendRawTransaction(a,r.chainSymbol)}isUsdt(r){return r.toLowerCase()===ac}buildRawTransactionApprove(r){let{tokenAddress:a,spender:o,owner:u,amount:m}=r,h=this.getERC20Contract(a).methods.approve(o,m==null?ic:rr(m));return Promise.resolve({from:u,to:a,value:"0",data:h.encodeABI()})}async sendRawTransaction(r,a){let o=r,u={maxPriorityFeePerGas:void 0,maxFeePerGas:void 0};a==="POL"?o.gas=sc:o.gas=await this.web3.eth.estimateGas(r);let{transactionHash:m}=await this.web3.eth.sendTransaction({...o,...u});return{txId:m.toString()}}getERC20Contract(r){return new this.web3.eth.Contract(wr.abi,r)}};g();y();f();import{AnchorProvider as oc}from"@project-serum/anchor";import{Connection as cc,PublicKey as Cr}from"@solana/web3.js";var Br=class extends Ge{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";approve(r){throw new de}buildRawTransactionApprove(r){throw new de}buildAnchorProvider(r){let a=new cc(this.solanaRpcUrl,"confirmed"),o=new Cr(r);return new oc(a,{publicKey:o},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(r){throw new de}async getTokenBalance(r){let{account:a,token:o}=r;try{let u=await Qe(new Cr(a),new Cr(o.tokenAddress));return(await _t(u,this.buildAnchorProvider(a))).amount.toString()}catch(u){if(u instanceof Error)return u.message.startsWith("Account does not exist"),"0";throw u}}async getNativeTokenBalance(r){return(await this.buildAnchorProvider(r.account).connection.getBalance(new Cr(r.account))).toString()}};g();y();f();import{Horizon as fC,NotFoundError as Ac}from"@stellar/stellar-sdk";var Ir=class extends Ge{constructor(r,a,o){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=o}chainType="SRB";getAllowance(){throw new de}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new O("OriginTokenAddress missing");let[a,o]=r.token.originTokenAddress.split(":"),u=new fC.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),m;try{m=await u.loadAccount(r.account)}catch(T){if(T instanceof Ac)return"0";throw T}let h=m.balances.find(T=>(T.asset_type==="credit_alphanum4"||T.asset_type==="credit_alphanum12")&&T.asset_code==a&&T.asset_issuer==o);return h?.balance?Q(h.balance,H.getChainDecimalsByType(H.getChainProperty(r.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(r){let m=(await new fC.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(r.account)).balances.find(p=>p.asset_type==="native");return m?.balance?Q(m.balance,H.getChainDecimalsByType(H.getChainProperty(r.chainSymbol).chainType)).toFixed():"0"}approve(){throw new de}buildRawTransactionApprove(){throw new de}};g();y();f();import{SuiClient as uc}from"@mysten/sui/client";var Rr=class extends Ge{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.suiClient=new uc({url:this.suiRpcUrl})}chainType="SUI";suiClient;approve(r){throw new de}buildRawTransactionApprove(r){throw new de}getAllowance(r){throw new de}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");return(await this.suiClient.getBalance({owner:r.account,coinType:r.token.originTokenAddress})).totalBalance}async getNativeTokenBalance(r){let a=await At(o=>this.suiClient.getCoins({owner:r.account,cursor:o}));return a.length===0?"0":a.reduce((o,u)=>o+BigInt(u.balance),BigInt(0)).toString()}};g();y();f();var mc="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Rn=class extends Ge{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async getAllowance(r){let{token:{tokenAddress:a},owner:o}=r;return(await(await this.getContract(a)).methods.allowance(o,r.spender).call()).toString()}async getTokenBalance(r){return(await(await this.getContract(r.token.tokenAddress)).balanceOf(r.account).call()).toString()}async getNativeTokenBalance(r){return(await this.tronWeb.trx.getBalance(r.account)).toString()}async approve(r){let a=await this.buildRawTransactionApprove(r);return await ir(this.tronWeb,a)}async buildRawTransactionApprove(r){let{tokenAddress:a,spender:o,owner:u,amount:m}=r,p=m==null?mc:rr(m),h=[{type:"address",value:o},{type:"uint256",value:p}];return this.buildRawTransaction(a,"approve(address,uint256)",h,"0",u)}getContract(r){return this.tronWeb.contract(wr.abi,r)}async buildRawTransaction(r,a,o,u,m){let p=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+u},o,m);if(!p?.result?.result)throw new O("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}};var sn=class{constructor(i,r,a){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a}async getAllowance(i,r){let a=await this.getChainTokenService(i.token.chainSymbol,i.owner,r).getAllowance(i);return J(a,i.token.decimals).toFixed()}async checkAllowance(i,r){return q(i.amount),ee("amount",i.amount,i.token.decimals),this.getChainTokenService(i.token.chainSymbol,i.owner,r).checkAllowance(this.prepareCheckAllowanceParams(i))}async approve(i,r){return r.amount&&(q(r.amount),ee("amount",r.amount,r.token.decimals)),this.getChainTokenService(r.token.chainSymbol,r.owner,i).approve(this.prepareApproveParams(r))}async buildRawTransactionApprove(i,r){return i.amount&&(q(i.amount),ee("amount",i.amount,i.token.decimals)),this.getChainTokenService(i.token.chainSymbol,i.owner,r).buildRawTransactionApprove(this.prepareApproveParams(i))}async getTokenBalance(i,r){let a=await this.getChainTokenService(i.token.chainSymbol,i.account,r).getTokenBalance(i);return i.token.decimals?J(a,i.token.decimals).toFixed():a}async getNativeTokenBalance(i,r){let a=await this.getChainTokenService(i.chainSymbol,i.account,r).getNativeTokenBalance(i);return{int:a,float:J(a,H.getChainDecimalsByType(H.getChainProperty(i.chainSymbol).chainType)).toFixed()}}getChainTokenService(i,r,a){switch(H.getChainProperty(i).chainType){case"EVM":{if(a)return new In(a,this.api);{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i);return new In(new pc(o),this.api)}}case"TRX":{if(a)return new Rn(a,this.api);{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i),u=new dc({fullHost:o});return u.setAddress(r),new Rn(u,this.api)}}case"SOLANA":{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i);return new Br(o,this.api)}case"SRB":return new Ir(this.nodeRpcUrlsConfig,this.params,this.api);case"SUI":return new Rr(this.nodeRpcUrlsConfig.getNodeRpcUrl(i),this.api)}}prepareCheckAllowanceParams(i){return{...i,amount:Q(i.amount,i.token.decimals)}}prepareApproveParams(i){return{tokenAddress:i.token.tokenAddress,owner:i.owner,spender:i.spender,chainSymbol:i.token.chainSymbol,amount:i.amount==null?void 0:lc(i.amount).toFixed()}}};var vr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r;let a=new en(r),o=new tn(a),u=new nn(o),m=new an(u);this.api=new rn(m,r),this.tokenService=new sn(this.api,i,r)}api;tokenService;buildRawTransactionApprove(i,r){return this.tokenService.buildRawTransactionApprove(i,r)}checkAllowance(i,r){return this.tokenService.checkAllowance(i,r)}getAllowance(i,r){return this.tokenService.getAllowance(i,r)}};g();y();f();import{Connection as gc,PublicKey as fc,TransactionMessage as yc}from"@solana/web3.js";var kr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r}async addMemoToTx(i,r){if(r.length>28)throw new O("InvalidArgumentException memo cannot be more than 28 characters");let a=new gc(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),o=await Mt(i,a),u=yc.decompile(i.message,{addressLookupTableAccounts:o}),m=u.instructions[u.instructions.length-1];if(!m?.keys)throw new O("Last instruction or its keys are invalid.");m.keys.push({pubkey:new fc(C.from(r)),isSigner:!1,isWritable:!1}),i.message=u.compileToV0Message(o)}};g();y();f();import{Asset as bc,BASE_FEE as Sc,contract as sk,Horizon as ss,Operation as Pc,Operation as wc,rpc as kn,TimeoutInfinite as Cc,TransactionBuilder as Si,TransactionBuilder as os}from"@stellar/stellar-sdk";g();y();f();import{contract as e}from"@stellar/stellar-sdk";var hc=e.Spec,Tc=e.Client;var vn=class extends Tc{constructor(r){super(new hc(["AAAAAAAAAYlSZXR1cm5zIHRoZSBhbGxvd2FuY2UgZm9yIGBzcGVuZGVyYCB0byB0cmFuc2ZlciBmcm9tIGBmcm9tYC4KClRoZSBhbW91bnQgcmV0dXJuZWQgaXMgdGhlIGFtb3VudCB0aGF0IHNwZW5kZXIgaXMgYWxsb3dlZCB0byB0cmFuc2ZlcgpvdXQgb2YgZnJvbSdzIGJhbGFuY2UuIFdoZW4gdGhlIHNwZW5kZXIgdHJhbnNmZXJzIGFtb3VudHMsIHRoZSBhbGxvd2FuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQgdHJhbnNmZXJlZC4KCiMgQXJndW1lbnRzCgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHRvIGJlIGRyYXduIGZyb20uCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3Mgc3BlbmRpbmcgdGhlIHRva2VucyBoZWxkIGJ5IGBmcm9tYC4AAAAAAAAJYWxsb3dhbmNlAAAAAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAEAAAAL","AAAAAAAAAIlSZXR1cm5zIHRydWUgaWYgYGlkYCBpcyBhdXRob3JpemVkIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBmb3Igd2hpY2ggdG9rZW4gYXV0aG9yaXphdGlvbiBpcyBiZWluZyBjaGVja2VkLgAAAAAAAAphdXRob3JpemVkAAAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAB","AAAAAAAAA55TZXQgdGhlIGFsbG93YW5jZSBieSBgYW1vdW50YCBmb3IgYHNwZW5kZXJgIHRvIHRyYW5zZmVyL2J1cm4gZnJvbQpgZnJvbWAuCgpUaGUgYW1vdW50IHNldCBpcyB0aGUgYW1vdW50IHRoYXQgc3BlbmRlciBpcyBhcHByb3ZlZCB0byB0cmFuc2ZlciBvdXQgb2YKZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byB0cmFuc2ZlciBhbW91bnRzLCBhbmQKd2hlbiBhbiBhbW91bnQgaXMgdHJhbnNmZXJyZWQgdGhlIGFsbG93YW5jZSB3aWxsIGJlIHJlZHVjZWQgYnkgdGhlCmFtb3VudCB0cmFuc2ZlcmVkLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgdG8gYmUgZHJhd24gZnJvbS4KKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBiZWluZyBhdXRob3JpemVkIHRvIHNwZW5kIHRoZSB0b2tlbnMgaGVsZCBieQpgZnJvbWAuCiogYGFtb3VudGAgLSBUaGUgdG9rZW5zIHRvIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGBzcGVuZGVyYC4KKiBgZXhwaXJhdGlvbl9sZWRnZXJgIC0gVGhlIGxlZGdlciBudW1iZXIgd2hlcmUgdGhpcyBhbGxvd2FuY2UgZXhwaXJlcy4gQ2Fubm90CmJlIGxlc3MgdGhhbiB0aGUgY3VycmVudCBsZWRnZXIgbnVtYmVyIHVubGVzcyB0aGUgYW1vdW50IGlzIGJlaW5nIHNldCB0byAwLgpBbiBleHBpcmVkIGVudHJ5ICh3aGVyZSBleHBpcmF0aW9uX2xlZGdlciA8IHRoZSBjdXJyZW50IGxlZGdlciBudW1iZXIpCnNob3VsZCBiZSB0cmVhdGVkIGFzIGEgMCBhbW91bnQgYWxsb3dhbmNlLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImFwcHJvdmUiLCBmcm9tOiBBZGRyZXNzLApzcGVuZGVyOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6IGkxMjgsIGV4cGlyYXRpb25fbGVkZ2VyOiB1MzJdYAAAAAAAB2FwcHJvdmUAAAAABAAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAAAAABFleHBpcmF0aW9uX2xlZGdlcgAAAAAAAAQAAAAA","AAAAAAAAAJhSZXR1cm5zIHRoZSBiYWxhbmNlIG9mIGBpZGAuCgojIEFyZ3VtZW50cwoKKiBgaWRgIC0gVGhlIGFkZHJlc3MgZm9yIHdoaWNoIGEgYmFsYW5jZSBpcyBiZWluZyBxdWVyaWVkLiBJZiB0aGUKYWRkcmVzcyBoYXMgbm8gZXhpc3RpbmcgYmFsYW5jZSwgcmV0dXJucyAwLgAAAAdiYWxhbmNlAAAAAAEAAAAAAAAAAmlkAAAAAAATAAAAAQAAAAs=","AAAAAAAAAWRCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLgoKUmVkdWNlcyBmcm9tJ3MgYmFsYW5jZSBieSB0aGUgYW1vdW50LCB3aXRob3V0IHRyYW5zZmVycmluZyB0aGUgYmFsYW5jZQp0byBhbm90aGVyIGhvbGRlcidzIGJhbGFuY2UuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIG9mIHRva2VucyB3aGljaCB3aWxsIGJlCmJ1cm5lZCBmcm9tLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgYnVybmVkLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImJ1cm4iLCBmcm9tOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6CmkxMjhdYAAAAARidXJuAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAtxCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSBvZiBgc3BlbmRlcmAuCgpSZWR1Y2VzIGZyb20ncyBiYWxhbmNlIGJ5IHRoZSBhbW91bnQsIHdpdGhvdXQgdHJhbnNmZXJyaW5nIHRoZSBiYWxhbmNlCnRvIGFub3RoZXIgaG9sZGVyJ3MgYmFsYW5jZS4KClRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byBidXJuIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZSwgaWYKdGhlIGFtb3VudCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGFsbG93YW5jZSB0aGF0IHRoZSBzcGVuZGVyIGhhcwpvbiB0aGUgZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyJ3MgYWxsb3dhbmNlIG9uIGZyb20ncyBiYWxhbmNlIHdpbGwgYmUKcmVkdWNlZCBieSB0aGUgYW1vdW50LgoKIyBBcmd1bWVudHMKCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3MgYXV0aG9yaXppbmcgdGhlIGJ1cm4sIGFuZCBoYXZpbmcgaXRzIGFsbG93YW5jZQpjb25zdW1lZCBkdXJpbmcgdGhlIGJ1cm4uCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQpidXJuZWQgZnJvbS4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIGJ1cm5lZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJidXJuIiwgZnJvbTogQWRkcmVzc10sIGRhdGEgPSBbYW1vdW50OgppMTI4XWAAAAAJYnVybl9mcm9tAAAAAAAAAwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAVNDbGF3YmFjayBgYW1vdW50YCBmcm9tIGBmcm9tYCBhY2NvdW50LiBgYW1vdW50YCBpcyBidXJuZWQgaW4gdGhlCmNsYXdiYWNrIHByb2Nlc3MuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIGZyb20gd2hpY2ggdGhlIGNsYXdiYWNrIHdpbGwKdGFrZSB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSBjbGF3ZWQgYmFjay4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJjbGF3YmFjayIsIGFkbWluOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAACGNsYXdiYWNrAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAIBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdXNlZCB0byByZXByZXNlbnQgYW1vdW50cyBvZiB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAhkZWNpbWFscwAAAAAAAAABAAAABA==","AAAAAAAAAPVNaW50cyBgYW1vdW50YCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgbWludGVkIHRva2Vucy4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIG1pbnRlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJtaW50IiwgYWRtaW46IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwgZGF0YQo9IFthbW91bnQ6IGkxMjhdYAAAAAAAAARtaW50AAAAAgAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAFlSZXR1cm5zIHRoZSBuYW1lIGZvciB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAAAAARuYW1lAAAAAAAAAAEAAAAQ","AAAAAAAAAQxTZXRzIHRoZSBhZG1pbmlzdHJhdG9yIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyBgbmV3X2FkbWluYC4KCiMgQXJndW1lbnRzCgoqIGBuZXdfYWRtaW5gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCBoZW5jZWZvcnRoIGJlIHRoZSBhZG1pbmlzdHJhdG9yCm9mIHRoaXMgdG9rZW4gY29udHJhY3QuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2FkbWluIiwgYWRtaW46IEFkZHJlc3NdLCBkYXRhID0KW25ld19hZG1pbjogQWRkcmVzc11gAAAACXNldF9hZG1pbgAAAAAAAAEAAAAAAAAACW5ld19hZG1pbgAAAAAAABMAAAAA","AAAAAAAAAEZSZXR1cm5zIHRoZSBhZG1pbiBvZiB0aGUgY29udHJhY3QuCgojIFBhbmljcwoKSWYgdGhlIGFkbWluIGlzIG5vdCBzZXQuAAAAAAAFYWRtaW4AAAAAAAAAAAAAAQAAABM=","AAAAAAAAAVBTZXRzIHdoZXRoZXIgdGhlIGFjY291bnQgaXMgYXV0aG9yaXplZCB0byB1c2UgaXRzIGJhbGFuY2UuIElmCmBhdXRob3JpemVkYCBpcyB0cnVlLCBgaWRgIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBiZWluZyAoZGUtKWF1dGhvcml6ZWQuCiogYGF1dGhvcml6ZWAgLSBXaGV0aGVyIG9yIG5vdCBgaWRgIGNhbiB1c2UgaXRzIGJhbGFuY2UuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2F1dGhvcml6ZWQiLCBpZDogQWRkcmVzc10sIGRhdGEgPQpbYXV0aG9yaXplOiBib29sXWAAAAAOc2V0X2F1dGhvcml6ZWQAAAAAAAIAAAAAAAAAAmlkAAAAAAATAAAAAAAAAAlhdXRob3JpemUAAAAAAAABAAAAAA==","AAAAAAAAAFtSZXR1cm5zIHRoZSBzeW1ib2wgZm9yIHRoaXMgdG9rZW4uCgojIFBhbmljcwoKSWYgdGhlIGNvbnRyYWN0IGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuAAAAAAZzeW1ib2wAAAAAAAAAAAABAAAAEA==","AAAAAAAAAWRUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQp3aXRoZHJhd24gZnJvbS4KKiBgdG9gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCByZWNlaXZlIHRoZSB0cmFuc2ZlcnJlZCB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSB0cmFuc2ZlcnJlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJ0cmFuc2ZlciIsIGZyb206IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwKZGF0YSA9IFthbW91bnQ6IGkxMjhdYAAAAAh0cmFuc2ZlcgAAAAMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAzNUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSB0aGF0CmBzcGVuZGVyYCBoYXMgb24gYGZyb21gJ3MgYmFsYW5jZS4gQXV0aG9yaXplZCBieSBzcGVuZGVyCihgc3BlbmRlci5yZXF1aXJlX2F1dGgoKWApLgoKVGhlIHNwZW5kZXIgd2lsbCBiZSBhbGxvd2VkIHRvIHRyYW5zZmVyIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZQppZiB0aGUgYW1vdW50IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgYWxsb3dhbmNlIHRoYXQgdGhlIHNwZW5kZXIKaGFzIG9uIHRoZSBmcm9tJ3MgYmFsYW5jZS4gVGhlIHNwZW5kZXIncyBhbGxvd2FuY2Ugb24gZnJvbSdzIGJhbGFuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQuCgojIEFyZ3VtZW50cwoKKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBhdXRob3JpemluZyB0aGUgdHJhbnNmZXIsIGFuZCBoYXZpbmcgaXRzCmFsbG93YW5jZSBjb25zdW1lZCBkdXJpbmcgdGhlIHRyYW5zZmVyLgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHdoaWNoIHdpbGwgYmUKd2l0aGRyYXduIGZyb20uCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgdHJhbnNmZXJyZWQgdG9rZW5zLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgdHJhbnNmZXJyZWQuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsidHJhbnNmZXIiLCBmcm9tOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAADXRyYW5zZmVyX2Zyb20AAAAAAAAEAAAAAAAAAAdzcGVuZGVyAAAAABMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA=="]),r);this.options=r}fromJSON={allowance:this.txFromJSON,authorized:this.txFromJSON,approve:this.txFromJSON,balance:this.txFromJSON,burn:this.txFromJSON,burn_from:this.txFromJSON,clawback:this.txFromJSON,decimals:this.txFromJSON,mint:this.txFromJSON,name:this.txFromJSON,set_admin:this.txFromJSON,admin:this.txFromJSON,set_authorized:this.txFromJSON,symbol:this.txFromJSON,transfer:this.txFromJSON,transfer_from:this.txFromJSON}};var Bc=100,Ic=180,xr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r}async buildChangeTrustLineXdrTx(i){let a=await new ss.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(i.sender),u=await this.getContract(vn,i.tokenAddress).name();if(Ht(u))throw new O;let m=Kt(u);if(!m)throw new O;let[p,h]=m.split(":");if(p===void 0||h===void 0)throw new O("Invalid token name format. Expected format 'symbol:srbTokenAddress'");let T=new bc(p,h),S=wc.changeTrust({asset:T,limit:i.limit});return new os(a,{fee:Bc.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(S).setTimeout(Ic).build().toXDR()}async getBalanceLine(i,r){let o=await this.getContract(vn,r).name();if(Ht(o))throw new O;let u=Kt(o);if(!u)throw new O;let[m,p]=u.split(":"),h=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new ss.Server(h).loadAccount(i)).balances.find(k=>(k.asset_type==="credit_alphanum4"||k.asset_type==="credit_alphanum12")&&k.asset_code==m&&k.asset_issuer==p)}async submitTransactionStellar(i){let r=new ss.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),a=os.fromXDR(i,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await r.submitTransaction(a)}async simulateAndCheckRestoreTxRequiredSoroban(i,r){let a=new kn.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),o=await a.getAccount(r),u=Si.fromXDR(i,this.params.sorobanNetworkPassphrase),m=await a.simulateTransaction(u);if(kn.Api.isSimulationRestore(m))return new Si(o,{fee:(+Sc+ +m.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(m.restorePreamble.transactionData.build()).addOperation(Pc.restoreFootprint({})).setTimeout(Cc).build().toXDR()}async sendTransactionSoroban(i){let r=new kn.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=Si.fromXDR(i,this.params.sorobanNetworkPassphrase);return r.sendTransaction(a)}async confirmTx(i,r=15){let a=new kn.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),o=await Gi(()=>a.getTransaction(i),m=>m.status===kn.Api.GetTransactionStatus.NOT_FOUND,r);if(o.length===0)throw new O("No transaction responses found.");let u=o[o.length-1];if(!u)throw new O("Unexpected error: last response is undefined.");return u}getContract(i,r){let a={contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new i(a)}};g();y();f();var Fr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.api=r}_suiBridgeService;async buildSendTxFromCustomTx(i,r,a){return this.suiBridgeService.buildRawTransactionSendFromCustomTx(i,r,a)}get suiBridgeService(){return this._suiBridgeService||(this._suiBridgeService=new Xt(this.nodeRpcUrlsConfig,this.api)),this._suiBridgeService}};var Mr=class{constructor(i){this.service=i;this.srb=new xr(i.nodeRpcUrlsConfig,i.params),this.sol=new kr(i.nodeRpcUrlsConfig,i.params),this.sui=new Fr(i.nodeRpcUrlsConfig,i.api),this.evm=new vr(i.nodeRpcUrlsConfig,i.params)}srb;sol;sui;evm};g();y();f();var Ft=(r=>(r.WITH_NATIVE_CURRENCY="native",r.WITH_STABLECOIN="stablecoin",r))(Ft||{}),Zn=(r=>(r.INT="int",r.FLOAT="float",r))(Zn||{});g();y();f();import{Big as ge}from"big.js";var xn=class{constructor(i){this.nodeRpcUrls=i}getNodeRpcUrl(i){let r=this.nodeRpcUrls[i];if(r!==void 0)return r;throw new Un(i)}},Or=class{constructor(i,r=Dn){this.nodeRpcUrlsConfig=i;H.addChainsProperties(r.additionalChainsProperties);let a=new en(r),o=new tn(a),u=new nn(o),m=new an(u);this.api=new rn(m,r),this.tokenService=new sn(this.api,i,r),this.bridge=new ar(this.api,i,r,this.tokenService),this.pool=new Sr(this.api,i,r,this.tokenService),this.params=r}api;tokenService;params;bridge;pool;async chainDetailsMap(i){return this.api.getChainDetailsMap(i)}async tokens(i){return this.api.tokens(i)}async tokensByChain(i,r){let o=(await this.api.getChainDetailsMap(r))[i];return o?o.tokens:[]}async getTransferStatus(i,r){return this.api.getTransferStatus(i,r)}async getGasBalance(i,r){return this.api.getGasBalance(i,r)}async checkAddress(){return new Promise(i=>{i({status:"OK",gasBalance:null})})}async getPendingStatusInfo(i,r,a,o){q(i);let u;r=="float"?(ee("amount",i,a.decimals),u=Q(i,a.decimals).toFixed()):u=i;let m=it(u,a,await pe(this.api,a)),p=await pe(this.api,o),h=this.getAmountFromVUsdFormatted(m,o,p),T,S=await this.api.getPendingInfo();for(let P in S[o.chainSymbol]){let k=S[o.chainSymbol];if(!k)throw new O("Cannot find pending info for "+o.chainSymbol);T=k[P]}if(T){let P=Qi(T.totalSentAmount,p),k=this.getAmountFromVUsdFormatted(m,o,P),I;return ge(k.int).gt(h.int)?I={min:h,max:k}:I={min:k,max:h},{pendingTxs:T.pendingTxs,pendingAmount:{int:Le(T.totalSentAmount,3,o.decimals).toFixed(0),float:J(T.totalSentAmount,3).toFixed()},estimatedAmount:I}}return{pendingTxs:0,pendingAmount:{int:"0",float:"0"},estimatedAmount:{min:h,max:h}}}async getTokenBalance(i,r){return this.tokenService.getTokenBalance(i,r)}async getNativeTokenBalance(i,r){return this.tokenService.getNativeTokenBalance(i,r)}async calculateFeePercentOnSourceChain(i,r){q(i),ee("amountFloat",i,r.decimals);let a=Q(i,r.decimals);if(a.eq(0))return 0;let o=it(a,r,await pe(this.api,r)),u=Ne(o,r.decimals);return Lr(a,u)}async calculateFeePercentOnDestinationChain(i,r,a){q(i),ee("amountFloat",i,r.decimals);let o=Q(i,r.decimals);if(o.eq(0))return 0;let u=it(o,r,await pe(this.api,r)),m=pn(u,a,await pe(this.api,a)),p=Ne(u,a.decimals);return Lr(p,m)}async getAmountToBeReceivedAndGasFeeOptions(i,r,a,o){return q(i),ee("amountToSendFloat",i,r.decimals),{amountToSendFloat:ge(i).toFixed(),amountToBeReceivedFloat:await this.getAmountToBeReceived(i,r,a,o),gasFeeOptions:await this.getGasFeeOptions(r,a,o)}}async getAmountToSendAndGasFeeOptions(i,r,a,o){return q(i),ee("amountToBeReceivedFloat",i,a.decimals),{amountToSendFloat:await this.getAmountToSend(i,r,a,o),amountToBeReceivedFloat:ge(i).toFixed(),gasFeeOptions:await this.getGasFeeOptions(r,a,o)}}async getAmountToBeReceived(i,r,a,o){return this.getAmountToBeReceivedCompute(i,r,a,o,async()=>await pe(this.api,r),async()=>await pe(this.api,a))}async getAmountToBeReceivedFromChain(i,r,a,o,u,m){return this.getAmountToBeReceivedCompute(i,r,a,o,async()=>await this.pool.getPoolInfoFromChain(r,u),async()=>await this.pool.getPoolInfoFromChain(a,m))}async getAmountToBeReceivedCompute(i,r,a,o=1,u,m){switch(o){case 1:case 2:return this.getAmountToBeReceivedComputeWithPools(i,r,a,await u(),await m());case 3:case 4:return this.getAmountToBeReceivedComputeCctp(i,r,a,o);case 5:return this.getAmountToBeReceivedComputeOft(i,r,a)}}getAmountToBeReceivedComputeWithPools(i,r,a,o,u){q(i),ee("amountToSendFloat",i,r.decimals);let m=Q(i,r.decimals),p=it(m,r,o);return this.getAmountFromVUsdFormatted(p,a,u).float}getAmountToBeReceivedComputeCctp(i,r,a,o){q(i),ee("amountToSendFloat",i,r.decimals);let u=Q(i,r.decimals);switch(o){case 3:{if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new Ie("Such route does not support CCTP protocol");let m=u.mul(ge(1).minus(r.cctpFeeShare)).round(0,ge.roundUp),p=Le(m,r.decimals,a.decimals).round(0);return J(p,a.decimals).toFixed()}case 4:{if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new Ie("Such route does not support CCTP V2 protocol");let m=u.mul(ge(1).minus(r.cctpV2FeeShare)).round(0,ge.roundUp),p=Le(m,r.decimals,a.decimals).round(0);return J(p,a.decimals).toFixed()}}}async getAmountToBeReceivedComputeOft(i,r,a){q(i),ee("amountToSendFloat",i,r.decimals);let o=Q(i,r.decimals);if(!r.oftBridgeAddress||!a.oftBridgeAddress||r.oftId!==a.oftId)throw new Re("Such route does not support OFT protocol");let{adminFeeShareWithExtras:u}=await this.api.getReceiveTransactionCost({sourceChainId:r.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:5,sourceToken:r.tokenAddress});if(!u)throw new Re("Such route does not support OFT protocol");let m=o.mul(ge(1).minus(u)).round(0,ge.roundUp),p=Le(m,r.decimals,a.decimals).round(0);return J(p,a.decimals).toFixed()}async getAmountToSend(i,r,a,o){return this.getAmountToSendCompute(i,r,a,o,()=>pe(this.api,r),()=>pe(this.api,a))}async getAmountToSendFromChain(i,r,a,o,u,m){return this.getAmountToSendCompute(i,r,a,o,()=>this.pool.getPoolInfoFromChain(r,u),()=>this.pool.getPoolInfoFromChain(a,m))}async getAmountToSendCompute(i,r,a,o=1,u,m){switch(o){case 1:case 2:return this.getAmountToSendComputeWithPools(i,r,a,await u(),await m());case 3:case 4:return this.getAmountToSendComputeCctp(i,r,a,o);case 5:return this.getAmountToSendComputeOft(i,r,a)}}getAmountToSendComputeWithPools(i,r,a,o,u){q(i),ee("amountToBeReceivedFloat",i,a.decimals);let m=Q(i,a.decimals),p=qi(m,a,u),h=zi(p,r,o);if(ge(h).lte(0))throw new mt;return J(h,r.decimals).toFixed()}getAmountToSendComputeCctp(i,r,a,o){q(i),ee("amountToBeReceivedFloat",i,a.decimals);let u=Q(i,a.decimals);switch(o){case 3:{if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new Ie("Such route does not support CCTP protocol");let m=u.div(ge(1).minus(r.cctpFeeShare)).round(0,ge.roundDown),p=Le(m,a.decimals,r.decimals).round(0);return J(p,r.decimals).toFixed()}case 4:{if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new Ie("Such route does not support CCTP V2 protocol");let m=u.div(ge(1).minus(r.cctpV2FeeShare)).round(0,ge.roundDown),p=Le(m,a.decimals,r.decimals).round(0);return J(p,r.decimals).toFixed()}}}async getAmountToSendComputeOft(i,r,a){q(i),ee("amountToBeReceivedFloat",i,a.decimals);let o=Q(i,a.decimals);if(!r.oftId||!a.oftId||!r.oftBridgeAddress||r.oftId!==a.oftId)throw new Re("Such route does not support OFT protocol");let{adminFeeShareWithExtras:u}=await this.api.getReceiveTransactionCost({sourceChainId:r.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:5,sourceToken:r.tokenAddress});if(!u)throw new Re("Such route does not support OFT protocol");let m=o.div(ge(1).minus(u)).round(0,ge.roundDown),p=Le(m,a.decimals,r.decimals).round(0);return J(p,r.decimals).toFixed()}async getGasFeeOptions(i,r,a){return Xr(i,r.allbridgeChainId,a,this.api)}getAverageTransferTime(i,r,a){return i.transferTime?.[r.chainSymbol]?.[a]??null}async getPoolInfoByToken(i){return await this.api.getPoolInfoByKey({chainSymbol:i.chainSymbol,poolAddress:i.poolAddress})}async refreshPoolInfo(i){if(i){let a=(i instanceof Array?i:[i]).map(o=>({chainSymbol:o.chainSymbol,poolAddress:o.poolAddress}));return this.api.refreshPoolInfo(a)}return this.api.refreshPoolInfo()}aprInPercents(i){return ta(i)}async getExtraGasMaxLimits(i,r,a){return await Yr(i,r,a,this.api)}async getVUsdFromAmount(i,r,a){q(i);let o;r=="float"?(ee("amount",i,a.decimals),o=Q(i,a.decimals).toFixed()):o=i;let u=it(o,a,await pe(this.api,a));return{int:u,float:J(u,3).toFixed()}}async getAmountFromVUsd(i,r){return this.getAmountFromVUsdFormatted(i,r,await pe(this.api,r))}getAmountFromVUsdFormatted(i,r,a){q(i);let o=pn(i,r,a);if(ge(o).lt(0))throw new mt;return{int:o,float:J(o,r.decimals).toFixed()}}async swapAndBridgeFeeCalculation(i,r,a){return Ha(i,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await pe(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await pe(this.api,a)})}async swapAndBridgeFeeCalculationReverse(i,r,a){let o=Qa(i,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await pe(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await pe(this.api,a)}),u=o.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if(ge(u).lt(0))throw new mt;return o}async getSendAmountDetails(i,r,a,o){q(i);let u;return r=="float"?(ee("amount",i,a.decimals),u=Q(i,a.decimals).toFixed()):u=i,za(u,a,await pe(this.api,a),o,await pe(this.api,o))}};function Rc(s){return"solanaRpcUrl"in s}var cs=class{params;bridge;pool;utils;service;constructor(i,r=Dn){let a;Rc(i)?a=new xn({SOL:i.solanaRpcUrl,TRX:i.tronRpcUrl}):a=new xn(i),this.service=new Or(a,r),this.bridge=this.service.bridge,this.pool=this.service.pool,this.utils=new Mr(this.service),this.params=r}async chainDetailsMap(i="swap"){return this.service.chainDetailsMap(i)}async tokens(i="swap"){return this.service.tokens(i)}async tokensByChain(i,r="swap"){return this.service.tokensByChain(i,r)}async getTransferStatus(i,r){return this.service.getTransferStatus(i,r)}async getGasBalance(i,r){return this.service.getGasBalance(i,r)}async checkAddress(i,r,a){return await this.service.checkAddress()}async getPendingStatusInfo(i,r,a,o){return this.service.getPendingStatusInfo(i,r,a,o)}async getTokenBalance(i,r){return this.service.getTokenBalance(i,r)}async getNativeTokenBalance(i,r){return this.service.getNativeTokenBalance(i,r)}async calculateFeePercentOnSourceChain(i,r){return this.service.calculateFeePercentOnSourceChain(i,r)}async calculateFeePercentOnDestinationChain(i,r,a){return this.service.calculateFeePercentOnDestinationChain(i,r,a)}async getAmountToBeReceivedAndGasFeeOptions(i,r,a,o){return this.service.getAmountToBeReceivedAndGasFeeOptions(i,r,a,o)}async getAmountToSendAndGasFeeOptions(i,r,a,o){return this.service.getAmountToSendAndGasFeeOptions(i,r,a,o)}async getAmountToBeReceived(i,r,a,o=1){return this.service.getAmountToBeReceived(i,r,a,o)}async getAmountToBeReceivedFromChain(i,r,a,o=1,u,m){return this.service.getAmountToBeReceivedFromChain(i,r,a,o,u,m)}getAmountToBeReceivedFromPools(i,r,a,o,u,m=1){switch(m){case 1:case 2:return this.service.getAmountToBeReceivedComputeWithPools(i,r,a,o,u);case 3:case 4:return this.service.getAmountToBeReceivedComputeCctp(i,r,a,m)}}async getAmountToSend(i,r,a,o=1){return this.service.getAmountToSend(i,r,a,o)}async getAmountToSendFromChain(i,r,a,o=1,u,m){return this.service.getAmountToSendFromChain(i,r,a,o,u,m)}getAmountToSendFromPools(i,r,a,o,u,m=1){switch(m){case 1:case 2:return this.service.getAmountToSendComputeWithPools(i,r,a,o,u);case 3:case 4:return this.service.getAmountToSendComputeCctp(i,r,a,m)}}async getGasFeeOptions(i,r,a){return this.service.getGasFeeOptions(i,r,a)}getAverageTransferTime(i,r,a){return this.service.getAverageTransferTime(i,r,a)}async getPoolInfoByToken(i){return this.service.getPoolInfoByToken(i)}async refreshPoolInfo(i){return this.service.refreshPoolInfo(i)}aprInPercents(i){return this.service.aprInPercents(i)}async getExtraGasMaxLimits(i,r,a=1){return this.service.getExtraGasMaxLimits(i,r,a)}async getVUsdFromAmount(i,r,a){return this.service.getVUsdFromAmount(i,r,a)}async getAmountFromVUsd(i,r){return this.service.getAmountFromVUsd(i,r)}async swapAndBridgeFeeCalculation(i,r,a){return this.service.swapAndBridgeFeeCalculation(i,r,a)}async swapAndBridgeFeeCalculationReverse(i,r,a){return this.service.swapAndBridgeFeeCalculationReverse(i,r,a)}async getSendAmountDetails(i,r,a,o){return this.service.getSendAmountDetails(i,r,a,o)}};export{Vr as AddressStatus,cs as AllbridgeCoreSdk,Zn as AmountFormat,Gt as AmountNotEnoughError,En as ArgumentInvalidDecimalsError,Ie as CCTPDoesNotSupportedError,$e as ChainSymbol,ie as ChainType,Bs as ErrorCode,Wn as ExtraGasMaxLimitExceededError,Ft as FeePaymentMethod,mt as InsufficientPoolLiquidityError,ut as InvalidAmountError,An as InvalidGasFeePaymentOptionError,Nn as InvalidMessengerOptionError,Vt as InvalidTxError,Te as JupiterError,Je as Messenger,de as MethodNotSupportedError,Un as NodeRpcUrlNotInitializedError,Re as OFTDoesNotSupportedError,O as SdkError,ue as SdkRootError,Kr as SolanaAutoTxFee,mn as TimeoutError,Gn as TxTooLargeError,un as VerifyTxError,Dn as mainnet,Hc as nodeRpcUrlsDefault,Kc as nodeUrlsDefault};
2
2
  /*! Bundled license information:
3
3
 
4
4
  @jspm/core/nodelibs/browser/chunk-DtuTasat.js: