@allbridge/bridge-core-sdk 3.27.0 → 3.27.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/package.json +1 -1
package/dist/browser/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var Bs=Object.create;var Ui=Object.defineProperty;var Is=Object.getOwnPropertyDescriptor;var Rs=Object.getOwnPropertyNames;var vs=Object.getPrototypeOf,ks=Object.prototype.hasOwnProperty;var Bt=(s,i)=>()=>(s&&(i=s(s=0)),i);var Jr=(s,i)=>()=>(i||s((i={exports:{}}).exports,i),i.exports);var xs=(s,i,r,a)=>{if(i&&typeof i=="object"||typeof i=="function")for(let o of Rs(i))!ks.call(s,o)&&o!==r&&Ui(s,o,{get:()=>i[o],enumerable:!(a=Is(i,o))||a.enumerable});return s};var He=(s,i,r)=>(r=s!=null?Bs(vs(s)):{},xs(i||!s||!s.__esModule?Ui(r,"default",{value:s,enumerable:!0}):r,s));var g=Bt(()=>{});function Fs(s,i){this.fun=s,this.array=i}function Gi(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+=Xr)),[a,o]}var Yc,It,Lr,Xr,Vi=Bt(()=>{g();y();f();Fs.prototype.run=function(){this.fun.apply(null,this.array)};Yc={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&&(Lr=Date.now(),It.timing&&It.timing.navigationStart&&(Lr=It.timing.navigationStart),It.now=()=>Date.now()-Lr);Xr=1e9;Gi.bigint=function(s){var i=Gi(s);return typeof BigInt>"u"?i[0]*Xr+i[1]:BigInt(i[0]*Xr)+BigInt(i[1])}});var f=Bt(()=>{Vi()});function Ms(){if(ji)return un;ji=!0,un.byteLength=p,un.toByteArray=T,un.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(v){var M=v.length;if(M%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var x=v.indexOf("=");x===-1&&(x=M);var O=x===M?0:4-x%4;return[x,O]}function p(v){var M=m(v),x=M[0],O=M[1];return(x+O)*3/4-O}function h(v,M,x){return(M+x)*3/4-x}function T(v){var M,x=m(v),O=x[0],N=x[1],F=new r(h(v,O,N)),W=0,U=N>0?O-4:O,_;for(_=0;_<U;_+=4)M=i[v.charCodeAt(_)]<<18|i[v.charCodeAt(_+1)]<<12|i[v.charCodeAt(_+2)]<<6|i[v.charCodeAt(_+3)],F[W++]=M>>16&255,F[W++]=M>>8&255,F[W++]=M&255;return N===2&&(M=i[v.charCodeAt(_)]<<2|i[v.charCodeAt(_+1)]>>4,F[W++]=M&255),N===1&&(M=i[v.charCodeAt(_)]<<10|i[v.charCodeAt(_+1)]<<4|i[v.charCodeAt(_+2)]>>2,F[W++]=M>>8&255,F[W++]=M&255),F}function S(v){return s[v>>18&63]+s[v>>12&63]+s[v>>6&63]+s[v&63]}function w(v,M,x){for(var O,N=[],F=M;F<x;F+=3)O=(v[F]<<16&16711680)+(v[F+1]<<8&65280)+(v[F+2]&255),N.push(S(O));return N.join("")}function k(v){for(var M,x=v.length,O=x%3,N=[],F=16383,W=0,U=x-O;W<U;W+=F)N.push(w(v,W,W+F>U?U:W+F));return O===1?(M=v[x-1],N.push(s[M>>2]+s[M<<4&63]+"==")):O===2&&(M=(v[x-2]<<8)+v[x-1],N.push(s[M>>10]+s[M>>4&63]+s[M<<2&63]+"=")),N.join("")}return un}function Os(){if(_i)return En;_i=!0;return En.read=function(s,i,r,a,o){var u,m,p=o*8-a-1,h=(1<<p)-1,T=h>>1,S=-7,w=r?o-1:0,k=r?-1:1,v=s[i+w];for(w+=k,u=v&(1<<-S)-1,v>>=-S,S+=p;S>0;u=u*256+s[i+w],w+=k,S-=8);for(m=u&(1<<-S)-1,u>>=-S,S+=a;S>0;m=m*256+s[i+w],w+=k,S-=8);if(u===0)u=1-T;else{if(u===h)return m?NaN:(v?-1:1)*(1/0);m=m+Math.pow(2,a),u=u-T}return(v?-1:1)*m*Math.pow(2,u-a)},En.write=function(s,i,r,a,o,u){var m,p,h,T=u*8-o-1,S=(1<<T)-1,w=S>>1,k=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,v=a?0:u-1,M=a?1:-1,x=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+w>=1?i+=k/h:i+=k*Math.pow(2,1-w),i*h>=2&&(m++,h/=2),m+w>=S?(p=0,m=S):m+w>=1?(p=(i*h-1)*Math.pow(2,o),m=m+w):(p=i*Math.pow(2,w-1)*Math.pow(2,o),m=0));o>=8;s[r+v]=p&255,v+=M,p/=256,o-=8);for(m=m<<o|p,T+=o;T>0;s[r+v]=m&255,v+=M,m/=256,T-=8);s[r+v-M]|=x*128},En}function $i(){if(Zi)return Rt;Zi=!0;let s=Ms(),i=Os(),r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Rt.Buffer=m,Rt.SlowBuffer=N,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 w(l,c);if(ArrayBuffer.isView(l))return v(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 M(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=x(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:O(l)|0)}m.allocUnsafe=function(l){return S(l)},m.allocUnsafeSlow=function(l){return S(l)};function w(l,c){if((typeof c!="string"||c==="")&&(c="utf8"),!m.isEncoding(c))throw new TypeError("Unknown encoding: "+c);let A=F(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:O(l.length)|0,A=u(c);for(let d=0;d<c;d+=1)A[d]=l[d]&255;return A}function v(l){if(rt(l,Uint8Array)){let c=new Uint8Array(l);return M(c.buffer,c.byteOffset,c.byteLength)}return k(l)}function M(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 x(l){if(m.isBuffer(l)){let c=O(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"||Yr(l.length)?u(0):k(l);if(l.type==="Buffer"&&Array.isArray(l.data))return k(l.data)}function O(l){if(l>=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return l|0}function N(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 C=0,R=Math.min(d,b);C<R;++C)if(c[C]!==A[C]){d=c[C],b=A[C];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),C=0;for(d=0;d<c.length;++d){let R=c[d];if(rt(R,Uint8Array))C+R.length>b.length?(m.isBuffer(R)||(R=m.from(R)),R.copy(b,C)):Uint8Array.prototype.set.call(b,R,C);else if(m.isBuffer(R))R.copy(b,C);else throw new TypeError('"list" argument must be an Array of Buffers');C+=R.length}return b};function F(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 $r(l).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A*2;case"hex":return A>>>1;case"base64":return Ei(l).length;default:if(b)return d?-1:$r(l).length;c=(""+c).toLowerCase(),b=!0}}m.byteLength=F;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 Ze(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 _e(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,C){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),C===void 0&&(C=this.length),A<0||d>c.length||b<0||C>this.length)throw new RangeError("out of range index");if(b>=C&&A>=d)return 0;if(b>=C)return-1;if(A>=d)return 1;if(A>>>=0,d>>>=0,b>>>=0,C>>>=0,this===c)return 0;let R=C-b,J=d-A,se=Math.min(R,J),ie=this.slice(b,C),oe=c.slice(A,d);for(let ne=0;ne<se;++ne)if(ie[ne]!==oe[ne]){R=ie[ne],J=oe[ne];break}return R<J?-1:J<R?1:0};function _(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,Yr(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 C=1,R=l.length,J=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;C=2,R/=2,J/=2,A/=2}function se(oe,ne){return C===1?oe[ne]:oe.readUInt16BE(ne*C)}let ie;if(b){let oe=-1;for(ie=A;ie<R;ie++)if(se(l,ie)===se(c,oe===-1?0:ie-oe)){if(oe===-1&&(oe=ie),ie-oe+1===J)return oe*C}else oe!==-1&&(ie-=ie-oe),oe=-1}else for(A+J>R&&(A=R-J),ie=A;ie>=0;ie--){let oe=!0;for(let ne=0;ne<J;ne++)if(se(l,ie+ne)!==se(c,ne)){oe=!1;break}if(oe)return ie}return-1}m.prototype.includes=function(c,A,d){return this.indexOf(c,A,d)!==-1},m.prototype.indexOf=function(c,A,d){return _(this,c,A,d,!0)},m.prototype.lastIndexOf=function(c,A,d){return _(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 C=c.length;d>C/2&&(d=C/2);let R;for(R=0;R<d;++R){let J=parseInt(c.substr(R*2,2),16);if(Yr(J))return R;l[A+R]=J}return R}function le(l,c,A,d){return Nn($r(c,l.length-A),l,A,d)}function Ve(l,c,A,d){return Nn(Ss(c),l,A,d)}function je(l,c,A,d){return Nn(Ei(c),l,A,d)}function Ke(l,c,A,d){return Nn(Ps(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 C=this.length-A;if((d===void 0||d>C)&&(d=C),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 le(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 ye(l,c,A){A=Math.min(l.length,A);let d=[],b=c;for(;b<A;){let C=l[b],R=null,J=C>239?4:C>223?3:C>191?2:1;if(b+J<=A){let se,ie,oe,ne;switch(J){case 1:C<128&&(R=C);break;case 2:se=l[b+1],(se&192)===128&&(ne=(C&31)<<6|se&63,ne>127&&(R=ne));break;case 3:se=l[b+1],ie=l[b+2],(se&192)===128&&(ie&192)===128&&(ne=(C&15)<<12|(se&63)<<6|ie&63,ne>2047&&(ne<55296||ne>57343)&&(R=ne));break;case 4:se=l[b+1],ie=l[b+2],oe=l[b+3],(se&192)===128&&(ie&192)===128&&(oe&192)===128&&(ne=(C&15)<<18|(se&63)<<12|(ie&63)<<6|oe&63,ne>65535&&ne<1114112&&(R=ne))}}R===null?(R=65533,J=1):R>65535&&(R-=65536,d.push(R>>>10&1023|55296),R=56320|R&1023),d.push(R),b+=J}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 _e(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 Ze(l,c,A){let d=l.length;(!c||c<0)&&(c=0),(!A||A<0||A>d)&&(A=d);let b="";for(let C=c;C<A;++C)b+=ws[l[C]];return b}function De(l,c,A){let d=l.slice(c,A),b="";for(let C=0;C<d.length-1;C+=2)b+=String.fromCharCode(d[C]+d[C+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],C=1,R=0;for(;++R<A&&(C*=256);)b+=this[c+R]*C;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],C=1;for(;A>0&&(C*=256);)b+=this[c+--A]*C;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)&&An(c,this.length-8);let b=A+this[++c]*2**8+this[++c]*2**16+this[++c]*2**24,C=this[++c]+this[++c]*2**8+this[++c]*2**16+d*2**24;return BigInt(b)+(BigInt(C)<<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)&&An(c,this.length-8);let b=A*2**24+this[++c]*2**16+this[++c]*2**8+this[++c],C=this[++c]*2**24+this[++c]*2**16+this[++c]*2**8+d;return(BigInt(b)<<BigInt(32))+BigInt(C)}),m.prototype.readIntLE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let b=this[c],C=1,R=0;for(;++R<A&&(C*=256);)b+=this[c+R]*C;return C*=128,b>=C&&(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,C=1,R=this[c+--b];for(;b>0&&(C*=256);)R+=this[c+--b]*C;return C*=128,R>=C&&(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)&&An(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)&&An(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 pe(l,c,A,d,b,C){if(!m.isBuffer(l))throw new TypeError('"buffer" argument must be a Buffer instance');if(c>b||c<C)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 J=Math.pow(2,8*d)-1;pe(this,c,A,d,J,0)}let C=1,R=0;for(this[A]=c&255;++R<d&&(C*=256);)this[A+R]=c/C&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 J=Math.pow(2,8*d)-1;pe(this,c,A,d,J,0)}let C=d-1,R=1;for(this[A+C]=c&255;--C>=0&&(R*=256);)this[A+C]=c/R&255;return A+d},m.prototype.writeUint8=m.prototype.writeUInt8=function(c,A,d){return c=+c,A=A>>>0,d||pe(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||pe(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||pe(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||pe(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||pe(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 Wn(l,c,A,d,b){Ni(c,d,b,l,A,7);let C=Number(c&BigInt(4294967295));l[A++]=C,C=C>>8,l[A++]=C,C=C>>8,l[A++]=C,C=C>>8,l[A++]=C;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 Fi(l,c,A,d,b){Ni(c,d,b,l,A,7);let C=Number(c&BigInt(4294967295));l[A+7]=C,C=C>>8,l[A+6]=C,C=C>>8,l[A+5]=C,C=C>>8,l[A+4]=C;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 Wn(this,c,A,BigInt(0),BigInt("0xffffffffffffffff"))}),m.prototype.writeBigUInt64BE=gt(function(c,A=0){return Fi(this,c,A,BigInt(0),BigInt("0xffffffffffffffff"))}),m.prototype.writeIntLE=function(c,A,d,b){if(c=+c,A=A>>>0,!b){let se=Math.pow(2,8*d-1);pe(this,c,A,d,se-1,-se)}let C=0,R=1,J=0;for(this[A]=c&255;++C<d&&(R*=256);)c<0&&J===0&&this[A+C-1]!==0&&(J=1),this[A+C]=(c/R>>0)-J&255;return A+d},m.prototype.writeIntBE=function(c,A,d,b){if(c=+c,A=A>>>0,!b){let se=Math.pow(2,8*d-1);pe(this,c,A,d,se-1,-se)}let C=d-1,R=1,J=0;for(this[A+C]=c&255;--C>=0&&(R*=256);)c<0&&J===0&&this[A+C+1]!==0&&(J=1),this[A+C]=(c/R>>0)-J&255;return A+d},m.prototype.writeInt8=function(c,A,d){return c=+c,A=A>>>0,d||pe(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||pe(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||pe(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||pe(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||pe(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 Wn(this,c,A,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),m.prototype.writeBigInt64BE=gt(function(c,A=0){return Fi(this,c,A,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function Mi(l,c,A,d,b,C){if(A+d>l.length)throw new RangeError("Index out of range");if(A<0)throw new RangeError("Index out of range")}function Oi(l,c,A,d,b){return c=+c,A=A>>>0,b||Mi(l,c,A,4),i.write(l,c,A,d,23,4),A+4}m.prototype.writeFloatLE=function(c,A,d){return Oi(this,c,A,!0,d)},m.prototype.writeFloatBE=function(c,A,d){return Oi(this,c,A,!1,d)};function Di(l,c,A,d,b){return c=+c,A=A>>>0,b||Mi(l,c,A,8),i.write(l,c,A,d,52,8),A+8}m.prototype.writeDoubleLE=function(c,A,d){return Di(this,c,A,!0,d)},m.prototype.writeDoubleBE=function(c,A,d){return Di(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 C=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),C},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 C;if(typeof c=="number")for(C=A;C<d;++C)this[C]=c;else{let R=m.isBuffer(c)?c:m.from(c,b),J=R.length;if(J===0)throw new TypeError('The value "'+c+'" is invalid for argument "value"');for(C=0;C<d-A;++C)this[C+A]=R[C%J]}return this};let Ut={};function Zr(l,c,A){Ut[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}`}}}Zr("ERR_BUFFER_OUT_OF_BOUNDS",function(l){return l?`${l} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),Zr("ERR_INVALID_ARG_TYPE",function(l,c){return`The "${l}" argument must be of type number. Received type ${typeof c}`},TypeError),Zr("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=Wi(String(A)):typeof A=="bigint"&&(b=String(A),(A>BigInt(2)**BigInt(32)||A<-(BigInt(2)**BigInt(32)))&&(b=Wi(b)),b+="n"),d+=` It must be ${c}. Received ${b}`,d},RangeError);function Wi(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 hs(l,c,A){Gt(c,"offset"),(l[c]===void 0||l[c+A]===void 0)&&An(c,l.length-(A+1))}function Ni(l,c,A,d,b,C){if(l>A||l<c){let R=typeof c=="bigint"?"n":"",J;throw c===0||c===BigInt(0)?J=`>= 0${R} and < 2${R} ** ${(C+1)*8}${R}`:J=`>= -(2${R} ** ${(C+1)*8-1}${R}) and < 2 ** ${(C+1)*8-1}${R}`,new Ut.ERR_OUT_OF_RANGE("value",J,l)}hs(d,b,C)}function Gt(l,c){if(typeof l!="number")throw new Ut.ERR_INVALID_ARG_TYPE(c,"number",l)}function An(l,c,A){throw Math.floor(l)!==l?(Gt(l,A),new Ut.ERR_OUT_OF_RANGE("offset","an integer",l)):c<0?new Ut.ERR_BUFFER_OUT_OF_BOUNDS:new Ut.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${c}`,l)}let Ts=/[^+/0-9A-Za-z-_]/g;function bs(l){if(l=l.split("=")[0],l=l.trim().replace(Ts,""),l.length<2)return"";for(;l.length%4!==0;)l=l+"=";return l}function $r(l,c){c=c||1/0;let A,d=l.length,b=null,C=[];for(let R=0;R<d;++R){if(A=l.charCodeAt(R),A>55295&&A<57344){if(!b){if(A>56319){(c-=3)>-1&&C.push(239,191,189);continue}else if(R+1===d){(c-=3)>-1&&C.push(239,191,189);continue}b=A;continue}if(A<56320){(c-=3)>-1&&C.push(239,191,189),b=A;continue}A=(b-55296<<10|A-56320)+65536}else b&&(c-=3)>-1&&C.push(239,191,189);if(b=null,A<128){if((c-=1)<0)break;C.push(A)}else if(A<2048){if((c-=2)<0)break;C.push(A>>6|192,A&63|128)}else if(A<65536){if((c-=3)<0)break;C.push(A>>12|224,A>>6&63|128,A&63|128)}else if(A<1114112){if((c-=4)<0)break;C.push(A>>18|240,A>>12&63|128,A>>6&63|128,A&63|128)}else throw new Error("Invalid code point")}return C}function Ss(l){let c=[];for(let A=0;A<l.length;++A)c.push(l.charCodeAt(A)&255);return c}function Ps(l,c){let A,d,b,C=[];for(let R=0;R<l.length&&!((c-=2)<0);++R)A=l.charCodeAt(R),d=A>>8,b=A%256,C.push(b),C.push(d);return C}function Ei(l){return s.toByteArray(bs(l))}function Nn(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 Yr(l){return l!==l}let ws=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"?Cs:l}function Cs(){throw new Error("BigInt not supported")}return Rt}var un,ji,En,_i,Rt,Zi,Yi=Bt(()=>{g();y();f();un={},ji=!1;En={},_i=!1;Rt={},Zi=!1});var vt,P,nA,rA,Ji=Bt(()=>{g();y();f();Yi();vt=$i();vt.Buffer;vt.SlowBuffer;vt.INSPECT_MAX_BYTES;vt.kMaxLength;P=vt.Buffer,nA=vt.INSPECT_MAX_BYTES,rA=vt.kMaxLength});var y=Bt(()=>{Ji()});import{bcs as Fe}from"@mysten/sui/bcs";function uo(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=uo(s.slice(a+1,s.length-o-1),[i,r]);return{typeName:u,typeArgs:m}}function Fa(s){return!s||typeof s!="object"||Array.isArray(s)?!1:"GasCoin"in s||"Input"in s||"Result"in s||"NestedResult"in s}function $(s,i){return Fa(i)?i:s.object(i)}function Le(s,i,r){if(Fa(i))return $(s,i);function a(T){let{typeName:S,typeArgs:w}=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(w[0]));case"vector":return Fe.vector(a(w[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:[Le(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 mo(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 V(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<${V(r[0])}>`;default:{let a=i.split("::");a[0]=mo(a[0]);let o=a.join("::");return r.length>0?`${o}<${r.map(u=>V(u)).join(",")}>`:o}}}function ee(s,...i){return i.length>0?`${s}<${i.join(", ")}>`:s}var he=Bt(()=>{"use strict";g();y();f()});var Tt=Jr((cp,Ma)=>{"use strict";g();y();f();he();var Ai=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return V(s.$PACKAGE_ID)}get PUBLISHED_AT(){return V(s.$PUBLISHED_AT)}get PKG_V1(){return V(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}},lo=new Ai;Ma.exports=lo});var di=Jr((hp,Ga)=>{"use strict";g();y();f();he();var li=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return V(s.$PACKAGE_ID)}get PUBLISHED_AT(){return V(s.$PUBLISHED_AT)}get PKG_V1(){return V(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}},po=new li;Ga.exports=po});var fi=Jr((vp,ja)=>{"use strict";g();y();f();he();var gi=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return V(s.$PACKAGE_ID)}get PUBLISHED_AT(){return V(s.$PUBLISHED_AT)}get PKG_V1(){return V(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}},go=new gi;ja.exports=go});g();y();f();g();y();f();g();y();f();var Un={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},uA={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},mA={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 Ro}from"tronweb";import{Web3 as vo}from"web3";g();y();f();g();y();f();g();y();f();var ce=class extends Error{errorCode;constructor(i,r){super(r),this.errorCode=i}},D=class extends ce{constructor(i){super("SdkError",i)}},ut=class extends ce{constructor(i){super("InvalidAmountError",i)}},Vt=class extends ce{constructor(i){super("AmountNotEnoughError",i)}},mt=class extends ce{constructor(i){super("InsufficientPoolLiquidityError",i)}},Te=class extends ce{constructor(i){super("JupiterError",i)}},mn=class extends ce{constructor(i){super("InvalidGasFeePaymentOptionError",i)}},Gn=class extends ce{constructor(i){super("InvalidMessengerOptionError",i)}},Ae=class extends ce{constructor(i){super("MethodNotSupportedError",i)}},ln=class extends ce{constructor(i){super("VerifyTxError",i)}},jt=class extends ce{constructor(i){super("InvalidTxError",i)}},Vn=class extends ce{constructor(i){super("ExtraGasMaxLimitExceededError",i)}},jn=class extends ce{constructor(i,r,a){super("ArgumentInvalidDecimalsError",`Argument '${i}' decimals '${r}' cannot be greater than '${a}'`)}},dn=class extends ce{constructor(i){super("TimeoutError",i)}},_n=class extends ce{constructor(i){super("NodeRpcUrlNotInitializedError",`For chain '${i}' Node RPC URL not initialized`)}},Ie=class extends ce{constructor(i){super("CCTPDoesNotSupportedError",i)}},Re=class extends ce{constructor(i){super("OFTDoesNotSupportedError",i)}},Zn=class extends ce{constructor(i){super("YieldDoesNotSupportedError",i)}},$n=class extends ce{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},Ds=(F=>(F.SDK_ERROR="SdkError",F.INVALID_AMOUNT_ERROR="InvalidAmountError",F.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",F.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",F.JUPITER_ERROR="JupiterError",F.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",F.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",F.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",F.VERIFY_TX_ERROR="VerifyTxError",F.INVALID_TX_ERROR="InvalidTxError",F.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",F.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",F.TIMEOUT_ERROR="TimeoutError",F.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",F.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",F.OFT_DOES_NOT_SUPPORTED_ERROR="OFTDoesNotSupportedError",F.YIELD_DOES_NOT_SUPPORTED_ERROR="YieldDoesNotSupportedError",F.TX_TOO_LARGE="TxTooLargeError",F))(Ds||{});g();y();f();var $e=(O=>(O.BSC="BSC",O.ETH="ETH",O.BAS="BAS",O.SOL="SOL",O.TRX="TRX",O.POL="POL",O.ARB="ARB",O.CEL="CEL",O.AVA="AVA",O.SRB="SRB",O.STLR="STLR",O.OPT="OPT",O.SUI="SUI",O.SNC="SNC",O.UNI="UNI",O.LIN="LIN",O))($e||{}),re=(u=>(u.EVM="EVM",u.SOLANA="SOLANA",u.TRX="TRX",u.SRB="SRB",u.SUI="SUI",u))(re||{});var Ws={EVM:18,SOLANA:9,TRX:6,SRB:7,SUI:9},Ns={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"},UNI:{chainSymbol:"UNI",chainId:"0x82",name:"Unichain",chainType:"EVM"},LIN:{chainSymbol:"LIN",chainId:"0xe708",name:"Linea",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"}},X=(()=>{let s={...Ns};return{addChainsProperties(i){s={...s,...i}},getChainProperty(i){let r=s[i];if(!r)throw new D(`Cannot find chain properties for ${i}`);return r},getChainsProperties(){return s},getChainDecimalsByType(i){return Ws[i]}}})();g();y();f();var Kr=(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))(Kr||{});var Ye=(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))(Ye||{});g();y();f();import{Big as Li}from"big.js";async function ge(s,i){return await s.getPoolInfoByKey({chainSymbol:i.chainSymbol,poolAddress:i.poolAddress})}function K(s){if(Li(s).lte(0))throw new ut("Amount must be greater than zero")}function z(s,i,r){let a=Li(i).toFixed(),[o,u]=a.split(".");if(u&&u.length>r)throw new jn(s,u.length,r)}async function Yn(s,i,r){return await Promise.race([s,new Promise((a,o)=>{setTimeout(()=>o(new dn(i)),r)})])}async function Hr(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 Yn(s(),i,a)}catch{if(++o>=r)throw new dn(i)}}async function Xi(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 w=u[u.length-1];if(w===void 0||!i(w))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(v=>setTimeout(v,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(w);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 Ks}from"big.js";g();y();f();var Es={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"}]},Ki=Es;g();y();f();var Us={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"}]},Hi=Us;g();y();f();var Gs={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"}]},Qi=Gs;g();y();f();import*as Xn from"@project-serum/anchor";import{PublicKey as ya}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 zi(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("lock"),Uint8Array.from(s)],i);return r}async function pn(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([s])],i);return r}async function _t(s){let i=await ft(s),[r]=await ve.findProgramAddress([i.toBuffer()],s);return r}async function qi(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 ea(s,i,r){let[a]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("other_bridge_token"),P.from([s]),i],r);return a}async function Qr(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([s])],i);return r}async function zr(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([s])],i);return r}async function ta(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("sent_message"),s],i);return r}async function qr(s,i,r){let[a]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("user_deposit"),i.toBytes(),s.toBytes()],r);return a}async function na(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("cctp_bridge"),s.toBytes()],i);return r}async function ra(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("token"),s.toBytes()],i);return r}function ia(s,i){let[r]=ve.findProgramAddressSync([be.utils.bytes.utf8.encode("lock"),i.toBuffer()],s);return r}function aa(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=[P.from(be.utils.bytes.utf8.encode(s))];for(let u of r)typeof u=="string"?a.push(P.from(be.utils.bytes.utf8.encode(u))):Array.isArray(u)?a.push(P.from(Uint8Array.from(u))):P.isBuffer(u)?a.push(P.from(Uint8Array.from(u))):a.push(P.from(Uint8Array.from(u.toBuffer())));return ve.findProgramAddressSync(a,i)[0]}g();y();f();import{AnchorProvider as Vs}from"@project-serum/anchor";import{Connection as js,PublicKey as _s}from"@solana/web3.js";function yt(s,i){let r=new js(s,"confirmed"),a=new _s(i);return new Vs(r,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}g();y();f();import{PublicKey as Zs}from"@solana/web3.js";import{Address as $s}from"@stellar/stellar-sdk";import{Big as Ne}from"big.js";import pa from"randombytes";import{utils as la}from"tronweb";g();y();f();import{Big as E}from"big.js";import ei from"bn.js";g();y();f();function ti(s,i){return E(100).minus(E(100).times(i).div(s)).toNumber()}function xt(s,i){return Je(s,i,3).round(0,E.roundDown)}function We(s,i){return Je(s,3,i)}function Je(s,i,r){let a=E(r).minus(i).toNumber();return E(s).times(gn(a))}function gn(s){return E(10).pow(s)}function Z(s,i){return E(s).times(gn(i))}function j(s,i){let r=E(s);return r.eq(0)?E(0):E(r).div(gn(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 fn(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=We(E(a.tokenBalance).minus(m),r),h=E(p).times(i);return E(p).minus(h).round(0,E.roundDown).toFixed()}function sa(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 oa(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=We(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 ca(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 Aa(s,i,r,a){let o=new ei(s),u=new ei(r),m=new ei(i);return o.mul(u).shrn(a).sub(m).toString()}function ua(s){return E(s).gt(0)?`${Number(E(s).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function ma(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(),w=E(Math.cbrt(+u.plus(S).toFixed())),k=E(Math.cbrt(+u.minus(S).toFixed()));return w.plus(k).toFixed()}function lt(s,i,r){let a;switch(i){case"EVM":{a=da(s);break}case"SOLANA":{a=new Zs(s).toBuffer();break}case"TRX":{a=Ys(s);break}case"SRB":{a=new $s(s).toBuffer();break}case"SUI":{a=da(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 ga(s){return P.from(s.replace(/^0x/i,""),"hex")}function da(s){let r=ga(s);return P.concat([P.alloc(32-r.length,0),r],32)}function Ys(s){let i=yn(s),r=ga(i);return Js(r,32)}function yn(s){let i=la.crypto.decodeBase58Address(s);return i?la.bytes.byteArray2hexStr(i).replace(/^41/,"0x"):""}function Js(s,i){if(s.length>=i)return s;let r=P.alloc(i,0);return s.copy(r,i-s.length),r}function Jn(){return pa(32)}function st(){let s=pa(32).readBigInt64BE();return s<0?s*-1n:s}function ot(s,i){let r={},a=i.sourceToken;if(r.amount=Z(i.amount,a.decimals).toFixed(),r.contractAddress=a.bridgeAddress,r.fromAccountAddress=i.fromAccountAddress,s==="SUI"){if(!a.originTokenAddress)throw new D("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 D("SUI destinationToken must contain 'originTokenAddress'");r.toTokenAddress=i.destinationToken.originTokenAddress}else r.toTokenAddress=lt(i.destinationToken.tokenAddress,s,s);return r.minimumReceiveAmount=i.minimumReceiveAmount?Z(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=X.getChainProperty(i.destinationToken.chainSymbol).chainType;if(s==="SUI"){if(!i.sourceToken.originTokenAddress)throw new D("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=Z(i.amount,u.decimals).toFixed();let{fee:m,feeFormat:p}=i;if(!m){let w=(await ni(i.sourceToken,a.toChainId,a.messenger,r))[a.gasFeePaymentMethod];if(!w)throw new mn;m=w.int,p="int"}if(p=="float")switch(a.gasFeePaymentMethod){case"native":a.fee=Z(m,X.getChainDecimalsByType(u.chainType)).toFixed(0);break;case"stablecoin":a.fee=Z(m,u.decimals).toFixed(0);break}else a.fee=m;let{extraGas:h,extraGasFormat:T}=i;if(h&&+h>0){let S=await ri(u,i.destinationToken,a.messenger,r),w,k;switch(a.gasFeePaymentMethod){case"native":w=X.getChainDecimalsByType(u.chainType),k=Ne(S.exchangeRate);break;case"stablecoin":w=u.decimals,k=Ne(S.exchangeRate).div(S.sourceNativeTokenPrice);break}switch(T??"int"){case"float":{a.extraGas=Z(h,w).toFixed(0);let v=k.mul(h);a.extraGasDest=Z(v,X.getChainDecimalsByType(i.destinationToken.chainType)).toFixed(0,Ne.roundDown);break}case"int":{a.extraGas=h;let v=j(a.extraGas,X.getChainDecimalsByType(u.chainType)),M=k.mul(v);a.extraGasDest=Z(M,X.getChainDecimalsByType(i.destinationToken.chainType)).toFixed(0,Ne.roundDown);break}}Xs(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"&&Ls(a.amount,u.decimals,a.fee,a.extraGas),a}function Ls(s,i,r,a){let o=Ne(s).minus(r).minus(a??0);if(o.lte(0))throw new Vt(`Amount not enough to pay fee, ${j(Ne(o).minus(1).neg(),i).toFixed()} stables is missing`)}async function ni(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,X.getChainDecimalsByType(s.chainType)).toFixed()},adminFeeShareWithExtras:o.adminFeeShareWithExtras};if(o.sourceNativeTokenPrice){let m=Je(new Ne(o.fee).mul(o.sourceNativeTokenPrice),X.getChainDecimalsByType(s.chainType),s.decimals).toFixed(0,Ne.roundUp);u.stablecoin={int:m,float:j(m,s.decimals).toFixed()}}return u}function Xs(s,i,r){let a=r.extraGasMax[i];if(!a)throw new mn(`Impossible to pay extra gas by '${i}' payment method`);let o=a.int;if(Ne(s).gt(o))throw new Vn(`Extra gas ${s} in int format, exceeded limit ${o} for '${i}' payment method`)}async function ri(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,X.getChainDecimalsByType(i.chainType)).toFixed(),h=Ne(p).div(u.exchangeRate).toFixed(X.getChainDecimalsByType(s.chainType),Ne.roundDown),T=Z(h,X.getChainDecimalsByType(s.chainType)).toFixed(0);if(o.native={int:T,float:h},u.sourceNativeTokenPrice){let S=Ne(h).mul(u.sourceNativeTokenPrice).toFixed(s.decimals,Ne.roundDown);o.stablecoin={int:Z(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,X.getChainDecimalsByType(i.chainType)).toFixed()},transfer:{int:i.txCostAmount.transfer,float:j(i.txCostAmount.transfer,X.getChainDecimalsByType(i.chainType)).toFixed()}},exchangeRate:u.exchangeRate,sourceNativeTokenPrice:u.sourceNativeTokenPrice}}function fa(s){return s.sourceToken.chainSymbol!==s.destinationToken.chainSymbol}async function Kn(s,i,r,a){let o,u=new ya(i),m=new ya(r),p=await Qe(u,m),h=yt(a,i);Xn.setProvider(h);let T=await Xn.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 w=S.value[0];if(!w?.pubkey)throw new D("First token account or its public key is undefined");o=lt(w.pubkey.toBase58(),"SOLANA",s)}else throw new D("Associated account has wrong owner")}return o}g();y();f();g();y();f();var Ee=class{};var hn=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,w=this.getBridgeContract(o).methods.swap(a,m,h,p,T);return Promise.resolve({from:u,to:o,data:w.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:w,fee:k,gasFeePaymentMethod:v,extraGas:M,extraGasDest:x}=a,O="0x"+Jn().toString("hex"),N,F,W=k;switch(M&&(W=Ks(W).plus(M).toFixed()),w){case 3:case 4:{let U=await this.buildRawTransactionCctpSend(r,a,W);N=U.sendMethod,F=U.value;break}case 5:{let U=this.buildRawTransactionOftSend(r,a,W,x);N=U.sendMethod,F=U.value;break}case 1:case 2:{let U=this.getBridgeContract(u);v==="stablecoin"?(N=U.methods.swapAndBridge(p,o,T,h,S,O,w,W),F="0"):(N=U.methods.swapAndBridge(p,o,T,h,S,O,w,0),F=W)}break}return Promise.resolve({from:m,to:u,value:F,data:N.encodeABI()})}async buildRawTransactionCctpSend(r,a,o){let{amount:u,contractAddress:m,toChainId:p,toAccountAddress:h,gasFeePaymentMethod:T}=a,S=this.getCctpBridgeContract(m),w,k;if(r.destinationToken.chainType==="SOLANA"){let v=await Kn(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));T==="stablecoin"?(w=S.methods.bridgeWithWalletAddress(u,v,h,p,o),k="0"):(w=S.methods.bridgeWithWalletAddress(u,v,h,p,0),k=o)}else T==="stablecoin"?(w=S.methods.bridge(u,h,p,o),k="0"):(w=S.methods.bridge(u,h,p,0),k=o);return{sendMethod:w,value:k}}buildRawTransactionOftSend(r,a,o,u){let{amount:m,contractAddress:p,toChainId:h,toAccountAddress:T,gasFeePaymentMethod:S}=a,w=this.getOftBridgeContract(p),k,v;return S==="stablecoin"?(k=w.methods.bridge(r.sourceToken.tokenAddress,m,T,h,o,u??"0","10"),v="0"):(k=w.methods.bridge(r.sourceToken.tokenAddress,m,T,h,0,u??"0","10"),v=o),{sendMethod:k,value:v}}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(Ki.abi,r)}getCctpBridgeContract(r){return new this.web3.eth.Contract(Hi.abi,r)}getOftBridgeContract(r){return new this.web3.eth.Contract(Qi.abi,r)}};g();y();f();var Hn=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=Tn(o.token,o.messenger);return this.tokenService.buildRawTransactionApprove({...o,spender:u},a)}async send(i,r){return K(i.amount),z("amount",i.amount,i.sourceToken.decimals),fa(i)?Qn(i.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSend(i):Qn(i.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSwap(i)}};g();y();f();import{BN as Jt,Program as si,Spl as ao,web3 as ht}from"@project-serum/anchor";import{Keypair as ka,PublicKey as ae,SystemProgram as so}from"@solana/web3.js";import{Big as et}from"big.js";g();y();f();var bn={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 ha={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 Hs}from"@project-serum/anchor";import Qs from"big.js";import{Web3 as zn}from"web3";async function $t(s,i){return await Hs.token(i).account.token.fetch(s)}async function Ta(s,i,r){let a=await i.account.pool.fetch(r),o=a.decimals,u=Qs(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 ba(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=zn.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 D("message cannot be undefined");let S=zn.utils.keccak256(P.from(T.replace("0x",""),"hex")),w=P.from(S.replace("0x",""),"hex");w[0]=a,w[1]=o;let k=zn.utils.encodePacked({t:"bytes32",v:"0x"+w.toString("hex")},{t:"bytes32",v:h});if(!k)throw new jt("messageWithSigner cannot be undefined");let v=zn.utils.keccak256(P.from(k.replace("0x",""),"hex")),M=P.from(v.replace("0x",""),"hex");return M[0]=w[0],M[1]=w[1],M}g();y();f();import{ComputeBudgetInstruction as Pa,ComputeBudgetProgram as qn,Connection as wa,TransactionMessage as zs}from"@solana/web3.js";import{Big as qs}from"big.js";g();y();f();import{AddressLookupTableAccount as Sa}from"@solana/web3.js";async function Mt(s,i){return await Promise.all(s.message.addressTableLookups.map(async r=>new Sa({key:r.accountKey,state:Sa.deserialize(await i.getAccountInfo(r.accountKey).then(a=>{if(!a)throw new D("Cannot get AccountInfo");return a.data}))})))}g();y();f();g();y();f();var ii="AUTO";async function Yt(s,i,r){let a=new wa(r,"confirmed"),o=(await a.simulateTransaction(s)).value.unitsConsumed;await Ba(s.instructions,o,i,a)}async function Ca(s,i,r){let a=new wa(r,"confirmed"),o=await Mt(s,a),u=zs.decompile(s.message,{addressLookupTableAccounts:o});if(s.serialize().length>1232)throw new $n;await Ba(u.instructions,769230,i,a),s.message=u.compileToV0Message(o)}async function Ba(s,i,r,a){if(i>0){let o=eo(i,s);if(r?.solana){let u=r.solana;if(u===ii)await ai(s,a);else if("pricePerUnitInMicroLamports"in u)await ai(s,a,u.pricePerUnitInMicroLamports);else{let m=qs(u.extraFeeInLamports).div(o).mul(gn(6)).toFixed(0);await ai(s,a,m)}}}}function eo(s,i){let r=i.findIndex(u=>u.programId.equals(qn.programId)&&Pa.decodeInstructionType(u)==="SetComputeUnitLimit"),a=Number((s*1.3).toFixed(0)),o=qn.setComputeUnitLimit({units:a});return r>=0?i[r]=o:i.push(o),a.toString()}async function ai(s,i,r){let a=s.findIndex(m=>m.programId.equals(qn.programId)&&Pa.decodeInstructionType(m)==="SetComputeUnitPrice"),o=BigInt(r||await to(i)),u=qn.setComputeUnitPrice({microLamports:o});return a>=0?s[a]=u:s.push(u),o.toString()}async function to(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 no}from"@solana/spl-token";import{Connection as ro,TransactionMessage as Ia,VersionedTransaction as io}from"@solana/web3.js";import Ra,{AxiosError as va}from"axios";var er=class{connection;jupiterUrl;apiKeyHeader;maxAccounts;constructor(i,r){this.connection=new ro(i),this.jupiterUrl=r.jupiterUrl.replace(/\/$/,""),this.apiKeyHeader=r.jupiterApiKeyHeader,this.maxAccounts=r.jupiterMaxAccounts}async getJupiterSwapTx(i,r,a,o){let u;try{let w=o?"ExactOut":"ExactIn",k=`${this.jupiterUrl}/quote?inputMint=${r}&outputMint=${no.toString()}&amount=${a}&swapMode=${w}&slippageBps=100&onlyDirectRoutes=true`;this.maxAccounts&&(k+=`&maxAccounts=${this.maxAccounts}`),u=await Ra.get(k,{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(w){throw w instanceof va&&w.response&&w.response.data&&w.response.data.error?new Te(w.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 Ra.post(`${this.jupiterUrl}/swap`,{quoteResponse:u.data,userPublicKey:i,wrapAndUnwrapSol:!0},{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(w){throw w instanceof va&&w.response&&w.response.data&&w.response.data.error?new Te(w.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=P.from(h,"base64"),S=io.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=Ia.decompile(i.message,{addressLookupTableAccounts:a}),m=Ia.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 D("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 oi=1e6,xa=1.1,tr=class extends Ee{constructor(r,a,o){super();this.solanaRpcUrl=r;this.params=a;this.api=o;this.jupiterService=new er(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:w,minimumReceiveAmount:k}=r,v=m,M=h,x=T,O=S,N=o,F=w,W=new ae(v),U=yt(this.solanaRpcUrl,W.toString()),_=new si(bn,M,U),L=await _t(_.programId),we=await ft(_.programId),le=new ae(x),Ve=await Zt(le,_.programId),je=new ae(a),Ke=await Qe(W,le),Me=new ae(F),ye=new ae(O),Ce=await Zt(ye,_.programId),Oe=new ae(N),Be=await Qe(Me,ye),_e=[ht.ComputeBudgetProgram.setComputeUnitLimit({units:oi})];try{await $t(Be,U)}catch{let Wn=await ao.associatedToken(U).methods.create().accounts({mint:ye,owner:Me,associatedAccount:Be}).instruction();_e.push(Wn)}let Ze=await _.methods.swap(new Jt(p),new Jt(k||0)).accounts({payer:W,config:we,bridgeAuthority:L,user:W,sendBridgeToken:Ve,sendMint:le,sendPool:je,sendUserToken:Ke,receiveBridgeToken:Ce,receiveMint:ye,receivePool:Oe,receiveUserToken:Be}).preInstructions(_e).transaction(),De=U.connection;return Ze.recentBlockhash=(await De.getLatestBlockhash()).blockhash,Ze.feePayer=W,await Yt(Ze,u,this.solanaRpcUrl),await this.convertToVersionedTransaction(Ze,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:w}=await this.processJup(o,r,!1);m=S,o={...o,...w}}catch(S){throw S instanceof ce?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:w}=await this.buildSwapAndBridgeWormholeTransaction(T);p=S,h=w;break}case 3:case 4:{let T=await this.prepareSwapAndBridgeCctpData(o),{transaction:S,messageSentEventDataKeypair:w}=await this.buildSwapAndBridgeCctpTransaction(r.destinationToken.chainSymbol,T);p=S,h=w;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 Ca(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(xa));let{tx:T,amountIn:S}=await this.jupiterService.getJupiterSwapTx(a.fromAccountAddress,a.sourceToken.tokenAddress,h.toFixed(0),o),w;if(o){if(!S)throw new Te("Cannot get inAmount");w=et(r.amount).minus(et(S).mul(xa)).toFixed(0)}else w=et(r.amount).minus(h).toFixed(0);if(et(w).lte(0))throw new Vt(`Amount not enough to pay fee, ${j(et(w).minus(1).neg(),a.sourceToken.decimals).toFixed()} stables is missing`);return{tx:T,solTxSendUpdatedParams:{amount:w,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(X.getChainDecimalsByType("SOLANA")-r.decimals)).toFixed(0),m;return a.extraGas&&(m=et(a.extraGas).div(o).mul(et(10).pow(X.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:w,extraGas:k}=r,v=p,M=m,x=h,O=S,N=T,F=o,W=u,U=yt(this.solanaRpcUrl,M),_=new si(bn,F,U),L=Array.from(Jn()),we=new ae(w),le=await Ta(a,_,we),Ve=await zi(L,_.programId),je=await _t(_.programId),Ke=await Qe(new ae(M),new ae(v)),Me=await Zt(new ae(v),_.programId),ye=await Qr(x,_.programId),Ce=await ea(x,P.from(O),_.programId),Oe=await ft(_.programId),Be=await _.account.config.fetch(Oe),_e=await pn(x,Be.gasOracleProgramId),Ze=await pn(W,Be.gasOracleProgramId),De=ba({amount:le,recipient:P.from(N),nonce:P.from(L),receiveToken:P.from(O),destinationChainId:x,sourceChainId:W,chainBridge:(await _t(_.programId)).toBuffer()}),G={};return G.bridge=_,G.amount=new Jt(a),G.vusdAmount=new Jt(le),G.nonce=L,G.recipient=Array.from(N),G.receiveToken=Array.from(O),G.poolAccount=we,G.lockAccount=Ve,G.bridgeAuthority=je,G.userToken=Ke,G.bridgeTokenAccount=Me,G.chainBridgeAccount=ye,G.otherBridgeTokenAccount=Ce,G.userAccount=new ae(M),G.destinationChainId=x,G.mint=new ae(v),G.config=Oe,G.configAccountInfo=Be,G.gasPrice=_e,G.thisGasPrice=Ze,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:w,bridgeTokenAccount:k,chainBridgeAccount:v,otherBridgeTokenAccount:M,userAccount:x,destinationChainId:O,mint:N,config:F,configAccountInfo:W,gasPrice:U,thisGasPrice:_,message:L,extraGasInstruction:we}=r,le=W.allbridgeMessengerProgramId,Ve=await zr(O,le),je=await ft(le),Ke=await ta(L,le),Me=[];we&&Me.push(we);let ye=await a.methods.swapAndBridge({vusdAmount:o,nonce:u,destinationChainId:O,recipient:m,receiveToken:p}).accounts({mint:N,user:x,config:F,lock:T,pool:h,gasPrice:U,thisGasPrice:_,bridgeAuthority:S,userToken:w,bridgeToken:k,chainBridge:v,messenger:le,messengerGasUsage:Ve,messengerConfig:je,sentMessageAccount:Ke,otherBridgeToken:M}).preInstructions([ht.ComputeBudgetProgram.setComputeUnitLimit({units:oi})]).postInstructions(Me).transaction(),Ce=yt(this.solanaRpcUrl,x.toString()).connection;return ye.recentBlockhash=(await Ce.getLatestBlockhash()).blockhash,ye.feePayer=x,await this.convertToVersionedTransaction(ye,Ce)}async convertToVersionedTransaction(r,a){let o=await a.getAddressLookupTable(new ae(this.params.solanaLookUpTable)).then(m=>m.value);if(!o)throw new D("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:w,bridgeTokenAccount:k,chainBridgeAccount:v,otherBridgeTokenAccount:M,userAccount:x,destinationChainId:O,mint:N,config:F,configAccountInfo:W,gasPrice:U,thisGasPrice:_,message:L,extraGasInstruction:we}=r,le=this.params.wormholeMessengerProgramId,[Ve]=ae.findProgramAddressSync([P.from("Bridge")],new ae(le)),[je]=ae.findProgramAddressSync([P.from("fee_collector")],new ae(le)),[Ke]=ae.findProgramAddressSync([P.from("Sequence"),S.toBuffer()],new ae(le)),Me=await zr(O,W.wormholeMessengerProgramId),ye=await ft(W.wormholeMessengerProgramId),Ce=ka.generate(),Oe=yt(this.solanaRpcUrl,x.toString()),Be=await Oe.connection.getAccountInfo(Ve);if(Be==null)throw new D("Cannot fetch wormhole bridge account info");let _e=new Jt(Be.data.slice(16,24),"le").toString(),Ze=so.transfer({fromPubkey:x,toPubkey:je,lamports:+_e}),De=[];we&&De.push(we);let G={mint:N,user:x,config:F,lock:T,pool:h,gasPrice:U,thisGasPrice:_,bridgeAuthority:S,userToken:w,bridgeToken:k,chainBridge:v,otherBridgeToken:M,messengerGasUsage:Me,wormholeProgram:le,bridge:Ve,message:Ce.publicKey,wormholeMessenger:W.wormholeMessengerProgramId,sequence:Ke,feeCollector:je,wormholeMessengerConfig:ye,clock:ht.SYSVAR_CLOCK_PUBKEY},pe=await a.methods.swapAndBridgeWormhole({vusdAmount:o,nonce:u,destinationChainId:O,recipient:m,receiveToken:p}).accounts(G).preInstructions([ht.ComputeBudgetProgram.setComputeUnitLimit({units:oi}),Ze]).postInstructions(De).signers([Ce]).transaction();return pe.recentBlockhash=(await Oe.connection.getLatestBlockhash()).blockhash,pe.feePayer=x,{transaction:await this.convertToVersionedTransaction(pe,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,w=a;if(!w)throw new Ie("Such route does not support CCTP protocol");let k=4,v=u,M=T,x=h,O=yt(this.solanaRpcUrl,v),N=new si(ha,w,O),F=new ae(m),W=await na(F,N.programId),U=new ae(v),_=await N.account.cctpBridge.fetch(W),L={};return L.cctpBridge=N,L.cctpBridgeAccount=W,L.cctpAddressAccount=new ae(w),L.amount=new Jt(o),L.recipient=Array.from(x),L.receiveToken=Array.from(M),L.userToken=await Qe(U,F),L.bridgeAuthority=await qi(W,N.programId),L.bridgeTokenAccount=await ra(F,N.programId),L.chainBridgeAccount=await Qr(p,N.programId),L.userAccount=U,L.destinationChainId=p,L.mint=F,L.gasPrice=await pn(p,_.gasOracleProgramId),L.thisGasPrice=await pn(k,_.gasOracleProgramId),L.provider=O,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:w,chainBridgeAccount:k,userAccount:v,destinationChainId:M,mint:x,gasPrice:O,thisGasPrice:N,extraGasInstruction:F,provider:W}=a,U=this.params.cctpParams.cctpDomains[r],_=this.params.cctpParams.cctpTransmitterProgramId,L=this.params.cctpParams.cctpTokenMessengerMinter;if(U==null||!_||!L)throw new D("CCTP is not configured");let we=new ae(_),le=new ae(L),{messageTransmitterAccount:Ve,tokenMessenger:je,tokenMessengerEventAuthority:Ke,tokenMinter:Me,localToken:ye,remoteTokenMessengerKey:Ce,authorityPda:Oe}=aa(U,x,we,le),Be=[];F&&Be.push(F);let _e=ka.generate(),Ze=ia(o.programId,_e.publicKey),De=await o.methods.bridge({amount:m,destinationChainId:M,recipient:p,receiveToken:h}).accounts({mint:x,user:v,cctpBridge:u,messageSentEventData:_e.publicKey,lock:Ze,cctpMessenger:le,messageTransmitterProgram:we,messageTransmitterAccount:Ve,tokenMessenger:je,tokenMinter:Me,localToken:ye,remoteTokenMessengerKey:Ce,authorityPda:Oe,eventAuthority:Ke,bridgeToken:w,gasPrice:O,thisGasPrice:N,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=v,{transaction:await this.convertToVersionedTransaction(De,G),messageSentEventDataKeypair:_e}}send(r){throw new Ae}};g();y();f();import{Address as ci,contract as Ax}from"@stellar/stellar-sdk";import{Big as Ao}from"big.js";g();y();f();import{contract as n}from"@stellar/stellar-sdk";var oo=n.Spec,co=n.Client;var Sn=class extends co{constructor(r){super(new oo(["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 nr=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:w,extraGas:k}=r,v=S;k&&(v=Ao(v).plus(k).toFixed());let M=this.getContract(Sn,o,u),x;return w==="stablecoin"?x=await M.swap_and_bridge({sender:u,token:ci.contract(P.from(m)).toString(),amount:BigInt(a),recipient:P.from(h),destination_chain_id:+p,receive_token:P.from(T),nonce:st(),gas_amount:BigInt(0),fee_token_amount:BigInt(v)}):x=await M.swap_and_bridge({sender:u,token:ci.contract(P.from(m)).toString(),amount:BigInt(a),recipient:P.from(h),destination_chain_id:+p,receive_token:P.from(T),nonce:st(),gas_amount:BigInt(v),fee_token_amount:BigInt(0)}),x.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(Sn,o,u).swap({sender:u,amount:BigInt(a),token:ci.contract(P.from(m)).toBuffer(),receive_token:P.from(h),recipient:p,receive_amount_min:BigInt(T)})).toXDR()}send(r){throw new Ae}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 wo}from"@mysten/sui/client";import{coinWithBalance as me,Transaction as bi}from"@mysten/sui/transactions";import{SUI_CLOCK_OBJECT_ID as Ya}from"@mysten/sui/utils";import{Big as Si}from"big.js";var Pi=He(Tt());g();y();f();var dt=He(Tt());he();function Oa(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap`,typeArguments:i,arguments:[$(s,r.bridge),$(s,r.coin),Le(s,r.receiveAmountMin,"u64")]})}function Da(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::deposit`,typeArguments:[i],arguments:[$(s,r.bridge),$(s,r.userDeposit),$(s,r.coin)]})}function Wa(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::withdraw`,typeArguments:[i],arguments:[$(s,r.bridge),$(s,r.userDeposit),Le(s,r.amountLp,"u64")]})}function Na(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::claim_reward`,typeArguments:[i],arguments:[$(s,r.bridge),$(s,r.userDeposit)]})}function Ea(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::pool`,typeArguments:[i],arguments:[$(s,r)]})}function ui(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap_and_bridge_wormhole`,typeArguments:[i],arguments:[$(s,r.bridge),$(s,r.messenger),$(s,r.wormholeState),$(s,r.theClock),$(s,r.gasOracle),$(s,r.amount),$(s,r.recipient),Le(s,r.destinationChainId,"u8"),$(s,r.receiveToken),Le(s,r.nonce,"u256"),$(s,r.feeSuiCoin),$(s,r.feeTokenCoin)]})}function Ua(s,i){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::new_user_deposit`,typeArguments:[i],arguments:[]})}function mi(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap_and_bridge`,typeArguments:[i],arguments:[$(s,r.bridge),$(s,r.messenger),$(s,r.gasOracle),$(s,r.amount),$(s,r.recipient),Le(s,r.destinationChainId,"u8"),$(s,r.receiveToken),Le(s,r.nonce,"u256"),$(s,r.feeSuiCoin),$(s,r.feeTokenCoin)]})}var Ja=He(di());g();y();f();var Va=He(di());he();function pi(s,i,r){return s.moveCall({target:`${Va.PUBLISHED_AT}::cctp_bridge_interface::bridge`,typeArguments:[i],arguments:[$(s,r.cctpBridge),$(s,r.gasOracle),$(s,r.tokenMessengerMinterState),$(s,r.messageTransmitterState),$(s,r.treasury),$(s,r.denyList),$(s,r.amount),$(s,r.feeSuiCoin),$(s,r.feeTokenCoin),Le(s,r.destinationChainId,"u8"),$(s,r.recipient),$(s,r.recipientWalletAddress)]})}var La=He(fi());g();y();f();var $a=He(fi());g();y();f();g();y();f();he();import{bcs as bt}from"@mysten/sui/bcs";import{fromHEX as yo,toHEX as ho}from"@mysten/sui/utils";g();y();f();import{bcs as fo}from"@mysten/sui/bcs";he();var yi=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=ee(this.$typeName,...i),this.$typeArgs=i,this.elements=r}static reified(i){return{typeName:s.$typeName,fullTypeName:ee(s.$typeName,Y(i)),typeArgs:[Y(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(Pn(i)),fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),new:r=>new s([Y(i)],r),kind:"VectorClassReified"}}static get r(){return s.reified}static get bcs(){return fo.vector}static fromFields(i,r){return s.reified(i).new(r.map(a=>q(i,a)))}static fromFieldsWithTypes(i,r){return s.reified(i).new(r.map(a=>H(i,a)))}static fromBcs(i,r){return s.fromFields(i,s.bcs(Pn(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=>Q(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 yi.r(s)}function ue(s){return typeof s=="string"?{phantomType:s,kind:"PhantomReified"}:{phantomType:s.fullTypeName,kind:"PhantomReified"}}var To=bt.bytes(32).transform({input:s=>yo(s),output:s=>ho(s)});function Pn(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 To;default:return s.bcs}}function Y(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 q(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 H(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:H(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(V(i[a])!==V(Y(r[a])))throw new Error(`provided item has mismatching type argments ${s} (expected ${Y(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 Q(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:Q(s.reifiedTypeArgs[0],i);default:return s.fromJSONField(i)}}he();g();y();f();var rr="0x1";import{bcs as fg}from"@mysten/sui/bcs";import{fromB64 as hg}from"@mysten/sui/utils";g();y();f();he();import{bcs as hi}from"@mysten/sui/bcs";import{fromB64 as bo}from"@mysten/sui/utils";function ir(s){return s=V(s),s===`${rr}::string::String`}var ar=class s{__StructClass=!0;static get $typeName(){return`${rr}::string::String`}static $numTypeParams=0;static $isPhantom=[];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;bytes;constructor(i,r){this.$fullTypeName=ee(s.$typeName,...i),this.$typeArgs=i,this.bytes=r.bytes}static reified(){return{typeName:s.$typeName,fullTypeName:ee(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 ue(s.reified())}static get p(){return s.phantom()}static get bcs(){return hi.struct("String",{bytes:hi.vector(hi.u8())})}static fromFields(i){return s.reified().new({bytes:q(Lt("u8"),i.bytes)})}static fromFieldsWithTypes(i){if(!ir(i.type))throw new Error("not a String type");return s.reified().new({bytes:H(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:Q(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(!ir(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"||!ir(i.bcs.type))throw new Error("object at is not a String object");return s.fromBcs(bo(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"||!ir(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 Ti}from"@mysten/sui/bcs";import{fromB64 as Za,fromHEX as So,toHEX as Po}from"@mysten/sui/utils";function sr(s){return s=V(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=ee(s.$typeName,...i),this.$typeArgs=i,this.bytes=r.bytes}static reified(){return{typeName:s.$typeName,fullTypeName:ee(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 ue(s.reified())}static get p(){return s.phantom()}static get bcs(){return Ti.struct("ID",{bytes:Ti.bytes(32).transform({input:i=>So(i),output:i=>Po(i)})})}static fromFields(i){return s.reified().new({bytes:q("address",i.bytes)})}static fromFieldsWithTypes(i){if(!sr(i.type))throw new Error("not a ID type");return s.reified().new({bytes:H("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:Q("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(!sr(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"||!sr(i.bcs.type))throw new Error("object at is not a ID object");return s.fromBcs(Za(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"||!sr(a.data.bcs.type))throw new Error(`object at id ${r} is not a ID object`);return s.fromSuiObjectData(a.data)}};function or(s){return s=V(s),s===`${St}::object::UID`}var Xe=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=ee(s.$typeName,...i),this.$typeArgs=i,this.id=r.id}static reified(){return{typeName:s.$typeName,fullTypeName:ee(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 ue(s.reified())}static get p(){return s.phantom()}static get bcs(){return Ti.struct("UID",{id:Dt.bcs})}static fromFields(i){return s.reified().new({id:q(Dt.reified(),i.id)})}static fromFieldsWithTypes(i){if(!or(i.type))throw new Error("not a UID type");return s.reified().new({id:H(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:Q(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(!or(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"||!or(i.bcs.type))throw new Error("object at is not a UID object");return s.fromBcs(Za(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"||!or(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:`${$a.PUBLISHED_AT}::bytes32::from_hex`,arguments:[Le(s,i,`${ar.$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 wo({url:r.getNodeRpcUrl(this.chainSymbol)})}chainType="SUI";chainSymbol="SUI";client;send(){throw new D("Method send not implemented.")}async buildRawTransactionSwap(r){let a=r.sourceToken.suiAddresses;if(!a)throw new D("SUI token must contain 'suiAddresses'");(0,Pi.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 bi;T.setSender(u);let S={bridge:a.bridgeObjectAddress,coin:me({balance:BigInt(o),type:m}),receiveAmountMin:BigInt(h)},w=Oa(T,[m,p],S),k=await At(v=>this.client.getCoins({owner:r.toAccountAddress,coinType:p,cursor:v}));return k.length===0||!k[0]?T.transferObjects([w],r.toAccountAddress):T.mergeCoins(k[0].coinObjectId,[w]),await T.toJSON({client:this.client})}async buildRawTransactionSendFromCustomTx(r,a,o){let u=bi.from(r);return this.buildRawTransactionSendFromTx(o,u,a)}async buildRawTransactionSend(r){return this.buildRawTransactionSendFromTx(r,new bi)}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 D("SUI token must contain 'suiAddresses'");switch((0,Pi.setAddress)(p.bridgeAddress,p.bridgeAddressOrigin),(0,La.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:w,fee:k,gasFeePaymentMethod:v,extraGas:M}=r,x=k;if(M&&(x=Si(x).plus(M).toFixed()),o.setSender(p),v==="stablecoin"){let O=BigInt(m)-BigInt(x),N,F;if(u){let[U]=o.splitCoins(u,[x]);N=u,F=U}else N=me({balance:O,type:h}),F=me({balance:BigInt(x),type:h});let W={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:N,destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(w)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:F,feeSuiCoin:me({balance:BigInt(0),useGasCoin:!1})};mi(o,h,W)}else{let O=x==="0"?me({balance:BigInt(x),useGasCoin:!1}):me({balance:BigInt(x)}),N={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:u??me({balance:BigInt(m),type:h}),destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(w)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:me({balance:BigInt(0),type:h}),feeSuiCoin:O};mi(o,h,N)}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:w,fee:k,gasFeePaymentMethod:v,extraGas:M}=r,x=k;if(M&&(x=Si(x).plus(M).toFixed()),o.setSender(p),v==="stablecoin"){let O=BigInt(m)-BigInt(x),N,F;if(u){let[U]=o.splitCoins(u,[x]);N=u,F=U}else N=me({balance:O,type:h}),F=me({balance:BigInt(x),type:h});let W={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:Ya,amount:N,destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(w)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:F,feeSuiCoin:me({balance:BigInt(0),useGasCoin:!1})};ui(o,h,W)}else{let O=x==="0"?me({balance:BigInt(x),useGasCoin:!1}):me({balance:BigInt(x)}),N={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:Ya,amount:u??me({balance:BigInt(m),type:h}),destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(w)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:me({balance:BigInt(0),type:h}),feeSuiCoin:O};ui(o,h,N)}return await o.toJSON({client:this.client})}async buildRawTransactionCctpSend(r,a,o,u,m){let{amount:p,fromAccountAddress:h,fromTokenAddress:T,toChainId:S,toAccountAddress:w,fee:k,gasFeePaymentMethod:v,extraGas:M}=a;(0,Ja.setAddress)(o.cctpAddress,o.cctpAddressOrigin);let x=k;M&&(x=Si(x).plus(M).toFixed()),u.setSender(h);let O=nt(u,ze(w)),N;if(r.destinationToken.chainType==="SOLANA"){let F=await Kn(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));N=nt(u,ze(F))}else N=O;if(v==="stablecoin"){let F=BigInt(p)-BigInt(x),W,U;if(m){let[L]=u.splitCoins(m,[x]);W=m,U=L}else W=me({balance:F,type:T}),U=me({balance:BigInt(x),type:T});let _={cctpBridge:o.cctpObjectAddress,tokenMessengerMinterState:o.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:o.cctpMessageTransmitterStateObjectAddress,treasury:o.cctpTreasuryObjectAddress,denyList:o.cctpDenyListObjectAddress,amount:W,destinationChainId:S,recipient:N,recipientWalletAddress:O,gasOracle:o.gasOracleObjectAddress,feeTokenCoin:U,feeSuiCoin:me({balance:BigInt(0),useGasCoin:!1})};pi(u,T,_)}else{let F=x==="0"?me({balance:BigInt(x),useGasCoin:!1}):me({balance:BigInt(x)}),W={cctpBridge:o.cctpObjectAddress,tokenMessengerMinterState:o.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:o.cctpMessageTransmitterStateObjectAddress,treasury:o.cctpTreasuryObjectAddress,denyList:o.cctpDenyListObjectAddress,amount:m??me({balance:BigInt(p),type:T}),destinationChainId:S,recipient:N,recipientWalletAddress:O,gasOracle:o.gasOracleObjectAddress,feeTokenCoin:me({balance:BigInt(0),type:T}),feeSuiCoin:F};pi(u,T,W)}return await u.toJSON({client:this.client})}};g();y();f();import{Big as Io}from"big.js";g();y();f();g();y();f();import Co from"bn.js";function cr(s){return"0x"+new Co(s).toString("hex")}function Xa(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 jt("Transaction was not signed properly");let o=(await s.trx.sendRawTransaction(r)).transaction.txID;return await Bo(s,o),{txId:o}}async function Bo(s,i,r=1e4){let a=Date.now();for(;;){if(Date.now()-a>r)throw new ln("Transaction not found");let o=await s.trx.getUnconfirmedTransactionInfo(i);if(!o?.receipt){await Xa(2e3);continue}if(o.receipt.result==="SUCCESS")return o;throw new ln(`Transaction status is ${o.receipt.result}`)}}var wn=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:w,fee:k,gasFeePaymentMethod:v,extraGas:M,extraGasDest:x}=a,O=k;M&&(O=Io(O).plus(M).toFixed());let N=st().toString(),F,W,U;switch(w){case 3:case 4:v==="stablecoin"?(F=[{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:O}],W="0"):(F=[{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:0}],W=O),U="bridge(uint256,bytes32,uint256,uint256)";break;case 5:v==="stablecoin"?(F=[{type:"address",value:r.sourceToken.tokenAddress},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:O},{type:"uint256",value:x??"0"},{type:"uint256",value:"10"}],W="0"):(F=[{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:x??"0"},{type:"uint256",value:"10"}],W=O),U="bridge(address,uint256,bytes32,uint256,uint256,uint256,uint256)";break;case 1:case 2:v==="stablecoin"?(F=[{type:"bytes32",value:p},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"bytes32",value:S},{type:"uint256",value:N},{type:"uint8",value:w},{type:"uint256",value:O}],W="0"):(F=[{type:"bytes32",value:p},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"bytes32",value:S},{type:"uint256",value:N},{type:"uint8",value:w},{type:"uint256",value:0}],W=O),U="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)";break}return this.buildRawTransaction(u,U,F,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 D("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}};var ur=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o;this.rawTxBuilder=new Hn(i,r,a,o)}rawTxBuilder;async getAllowance(i,r){let a,o;r?(a=i,o=r):o=i;let u=Tn(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=Tn(o.token,o.messenger);return this.tokenService.checkAllowance({...o,spender:u},a)}async approve(i,r){let a=Tn(r.token,r.messenger);return this.tokenService.approve(i,{...r,spender:a})}async send(i,r){return K(r.amount),z("amount",r.amount,r.sourceToken.decimals),Qn(r.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).send(r)}};function Tn(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 Qn(s,i,r,a,o){switch(X.getChainProperty(s).chainType){case"EVM":{if(o)return new hn(o,i,r);{let u=r.getNodeRpcUrl(s);return new hn(new vo(u),i,r)}}case"TRX":{if(o)return new wn(o,i);{let u=r.getNodeRpcUrl(s);return new wn(new Ro({fullHost:u,solidityNode:u,eventServer:u}),i)}}case"SOLANA":return new tr(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 nr(r,a,i);case"SUI":return new Xt(r,i)}}g();y();f();import{Big as Jo}from"big.js";import Lo from"timed-cache";import{TronWeb as Xo}from"tronweb";import{FMT_BYTES as Ko,FMT_NUMBER as Ho,Web3 as Qo}from"web3";g();y();f();import{Big as pt}from"big.js";function Ka(s,i,r,a,o){let u=Z(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(ma(i,T.toFixed(),S.toFixed())).minus(p).toFixed()}function Ha(s){let i=Z(s,3);return pt(i).round().toFixed()}g();y();f();import{Web3 as Pt}from"web3";g();y();f();var ko={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"}]},Cn=ko;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=Aa(this.lpAmount,this.rewardDebt,i.accRewardPerShareP,i.p);return r?j(a,r).toFixed():a}};g();y();f();var Ue=class{};var Bn=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 Yn(this.getUserBalanceInfoByBatch(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5e3)}catch{o=await Hr(()=>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 Yn(this.getPoolInfoByBatch(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5e3)}catch{a=await Hr(()=>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[w,k,v,M,x,O]=await a.execute();if(w&&k&&v&&M&&x&&O&&!w.error&&!k.error&&!v.error&&!M.error&&!x.error&&!O.error){let N=Pt.utils.toBigInt(v.result).toString(),F=Pt.utils.toBigInt(M.result).toString(),W=ke({tokenBalance:N,vUsdBalance:F});return{aValue:Pt.utils.toBigInt(w.result).toString(),dValue:Pt.utils.toBigInt(k.result).toString(),tokenBalance:N,vUsdBalance:F,totalLpAmount:Pt.utils.toBigInt(x.result).toString(),accRewardPerShareP:Pt.utils.toBigInt(O.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(Cn.abi,r)}};g();y();f();var mr=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 K(i.amount),z("amount",i.amount,i.token.decimals),i.amount=Z(i.amount,i.token.decimals).toFixed(),Kt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionDeposit(i)}async withdraw(i,r){return K(i.amount),z("amount",i.amount,i.token.decimals),i.amount=Z(i.amount,3).toFixed(),Kt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionWithdraw(i)}async claimRewards(i,r){return Kt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionClaimRewards(i)}};g();y();f();import{AnchorProvider as xo,BN as Qa,Program as Fo,Spl as Mo,web3 as Oo}from"@project-serum/anchor";import{Connection as Do,PublicKey as wt}from"@solana/web3.js";var lr=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 qr(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 Qa(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 Yt(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 Qa(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 Yt(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 Yt(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 Fo(bn,r,a)}buildAnchorProvider(r){let a=new Do(this.solanaRpcUrl,"confirmed"),o=new wt(r);return new xo(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 _t(r.programId),T=new wt(a),w=(await r.account.pool.fetch(T)).mint,k=await Qe(m,w),v=await Zt(w,r.programId),M=await qr(m,w,r.programId),x=[Oo.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await $t(k,u)}catch{let W=await Mo.associatedToken(u).methods.create().accounts({mint:w,owner:m,associatedAccount:k}).instruction();x.push(W)}try{await r.account.userDeposit.fetch(M)}catch{let F=await r.methods.initDepositAccount().accounts({mint:w,user:m,userDeposit:M}).instruction();x.push(F)}return{accounts:{mint:w,user:m,config:p,pool:T,bridgeAuthority:h,userDeposit:M,userToken:k,bridgeToken:v},preInstructions:x}}};g();y();f();import{contract as ux}from"@stellar/stellar-sdk";g();y();f();import{contract as t}from"@stellar/stellar-sdk";var Wo=t.Spec,No=t.Client;var dr=class extends No{constructor(r){super(new Wo(["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 Qh,rpc as Eo}from"@stellar/stellar-sdk";var za=Eo.Api;function Ht(s){let{simulation:i,options:r}=s;if(!i)throw new Error("Soroban assembled transaction does not have simulation");if(za.isSimulationSuccess(i))return i.result==null?void 0:r.parseResultXdr(i.result.retval);throw new Error(i.error)}function Qt(s){let{simulation:i}=s;if(!i)throw new Error("Soroban assembled transaction does not have simulation");return za.isSimulationError(i)}var pr=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(Qt(u))throw new D;let m=Ht(u);if(!m)throw new D;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(Qt(o))throw new D;let u=Ht(o);if(!u)throw new D;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 dr(o)}};g();y();f();import{SuiClient as $o}from"@mysten/sui/client";import{Transaction as wr}from"@mysten/sui/transactions";var qt=He(Tt());g();y();f();he();g();y();f();he();import{bcs as qa}from"@mysten/sui/bcs";import{fromB64 as Uo}from"@mysten/sui/utils";function gr(s){return s=V(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=ee(s.$typeName,...i),this.$typeArgs=i,this.value=r.value}static reified(i){return{typeName:s.$typeName,fullTypeName:ee(s.$typeName,Y(i)),typeArgs:[Y(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([Y(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return ue(s.reified(i))}static get p(){return s.phantom}static get bcs(){return qa.struct("Balance",{value:qa.u64()})}static fromFields(i,r){return s.reified(i).new({value:q("u64",r.value)})}static fromFieldsWithTypes(i,r){if(!gr(r.type))throw new Error("not a Balance type");return ct(r,[i]),s.reified(i).new({value:H("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:Q("u64",r.value)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(ee(s.$typeName,Y(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 Balance 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 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=V(a[0]),u=V(Y(i));if(o!==V(Y(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Uo(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"||!gr(o.data.bcs.type))throw new Error(`object at id ${a} is not a Balance object`);return s.fromSuiObjectData(r,o.data)}};var Bi=He(Tt());g();y();f();he();var wi=He(Tt());import{bcs as fr}from"@mysten/sui/bcs";import{fromB64 as Go}from"@mysten/sui/utils";function yr(s){return s=V(s),s.startsWith(`${wi.PKG_V1}::pool_rewards::PoolRewards<`)}var Wt=class s{__StructClass=!0;static get $typeName(){return`${wi.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=ee(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:ee(s.$typeName,Y(i)),typeArgs:[Y(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([Y(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return ue(s.reified(i))}static get p(){return s.phantom}static get bcs(){return fr.struct("PoolRewards",{acc_reward_per_share_p:fr.u128(),admin_fee_share_bp:fr.u64(),admin_fee:Pe.bcs,rewards:Pe.bcs,lp_supply:fr.u64()})}static fromFields(i,r){return s.reified(i).new({accRewardPerShareP:q("u128",r.acc_reward_per_share_p),adminFeeShareBp:q("u64",r.admin_fee_share_bp),adminFee:q(Pe.reified(i),r.admin_fee),rewards:q(Pe.reified(i),r.rewards),lpSupply:q("u64",r.lp_supply)})}static fromFieldsWithTypes(i,r){if(!yr(r.type))throw new Error("not a PoolRewards type");return ct(r,[i]),s.reified(i).new({accRewardPerShareP:H("u128",r.fields.acc_reward_per_share_p),adminFeeShareBp:H("u64",r.fields.admin_fee_share_bp),adminFee:H(Pe.reified(i),r.fields.admin_fee),rewards:H(Pe.reified(i),r.fields.rewards),lpSupply:H("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:Q("u128",r.accRewardPerShareP),adminFeeShareBp:Q("u64",r.adminFeeShareBp),adminFee:Q(Pe.reified(i),r.adminFee),rewards:Q(Pe.reified(i),r.rewards),lpSupply:Q("u64",r.lpSupply)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(ee(s.$typeName,Y(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 PoolRewards 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 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=V(a[0]),u=V(Y(i));if(o!==V(Y(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Go(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"||!yr(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 Ci=He(Tt());import{bcs as zt}from"@mysten/sui/bcs";import{fromB64 as Vo}from"@mysten/sui/utils";function hr(s){return s=V(s),s.startsWith(`${Ci.PKG_V1}::pool_state::PoolState<`)}var Nt=class s{__StructClass=!0;static get $typeName(){return`${Ci.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=ee(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:ee(s.$typeName,Y(i)),typeArgs:[Y(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([Y(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return ue(s.reified(i))}static get p(){return s.phantom}static get bcs(){return zt.struct("PoolState",{token_balance:zt.u64(),vusd_balance:zt.u64(),d:zt.u64(),a:zt.u64(),balance_ratio_min_bp:zt.u64()})}static fromFields(i,r){return s.reified(i).new({tokenBalance:q("u64",r.token_balance),vusdBalance:q("u64",r.vusd_balance),d:q("u64",r.d),a:q("u64",r.a),balanceRatioMinBp:q("u64",r.balance_ratio_min_bp)})}static fromFieldsWithTypes(i,r){if(!hr(r.type))throw new Error("not a PoolState type");return ct(r,[i]),s.reified(i).new({tokenBalance:H("u64",r.fields.token_balance),vusdBalance:H("u64",r.fields.vusd_balance),d:H("u64",r.fields.d),a:H("u64",r.fields.a),balanceRatioMinBp:H("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:Q("u64",r.tokenBalance),vusdBalance:Q("u64",r.vusdBalance),d:Q("u64",r.d),a:Q("u64",r.a),balanceRatioMinBp:Q("u64",r.balanceRatioMinBp)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(ee(s.$typeName,Y(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!hr(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"||!hr(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=V(a[0]),u=V(Y(i));if(o!==V(Y(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Vo(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"||!hr(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 In}from"@mysten/sui/bcs";import{fromB64 as jo}from"@mysten/sui/utils";function Tr(s){return s=V(s),s.startsWith(`${Bi.PKG_V1}::pool::Pool<`)}var br=class s{__StructClass=!0;static get $typeName(){return`${Bi.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=ee(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:ee(s.$typeName,Y(i)),typeArgs:[Y(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([Y(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return ue(s.reified(i))}static get p(){return s.phantom}static get bcs(){return In.struct("Pool",{id:Xe.bcs,state:Nt.bcs,rewards:Wt.bcs,fee_share_bp:In.u64(),can_deposit:In.bool(),can_withdraw:In.bool(),decimals:In.u8(),balance:Pe.bcs})}static fromFields(i,r){return s.reified(i).new({id:q(Xe.reified(),r.id),state:q(Nt.reified(i),r.state),rewards:q(Wt.reified(i),r.rewards),feeShareBp:q("u64",r.fee_share_bp),canDeposit:q("bool",r.can_deposit),canWithdraw:q("bool",r.can_withdraw),decimals:q("u8",r.decimals),balance:q(Pe.reified(i),r.balance)})}static fromFieldsWithTypes(i,r){if(!Tr(r.type))throw new Error("not a Pool type");return ct(r,[i]),s.reified(i).new({id:H(Xe.reified(),r.fields.id),state:H(Nt.reified(i),r.fields.state),rewards:H(Wt.reified(i),r.fields.rewards),feeShareBp:H("u64",r.fields.fee_share_bp),canDeposit:H("bool",r.fields.can_deposit),canWithdraw:H("bool",r.fields.can_withdraw),decimals:H("u8",r.fields.decimals),balance:H(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:Q(Xe.reified(),r.id),state:Q(Nt.reified(i),r.state),rewards:Q(Wt.reified(i),r.rewards),feeShareBp:Q("u64",r.feeShareBp),canDeposit:Q("bool",r.canDeposit),canWithdraw:Q("bool",r.canWithdraw),decimals:Q("u8",r.decimals),balance:Q(Pe.reified(i),r.balance)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(ee(s.$typeName,Y(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Tr(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"||!Tr(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=V(a[0]),u=V(Y(i));if(o!==V(Y(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,jo(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"||!Tr(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 Ri=He(Tt());import{bcs as Ii}from"@mysten/sui/bcs";import{fromB64 as _o}from"@mysten/sui/utils";function Sr(s){return s=V(s),s.startsWith(`${Ri.PKG_V1}::user_deposit::UserDeposit<`)}var Pr=class s{__StructClass=!0;static get $typeName(){return`${Ri.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=ee(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:ee(s.$typeName,Y(i)),typeArgs:[Y(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([Y(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return ue(s.reified(i))}static get p(){return s.phantom}static get bcs(){return Ii.struct("UserDeposit",{id:Xe.bcs,lp_amount:Ii.u64(),reward_debt:Ii.u64()})}static fromFields(i,r){return s.reified(i).new({id:q(Xe.reified(),r.id),lpAmount:q("u64",r.lp_amount),rewardDebt:q("u64",r.reward_debt)})}static fromFieldsWithTypes(i,r){if(!Sr(r.type))throw new Error("not a UserDeposit type");return ct(r,[i]),s.reified(i).new({id:H(Xe.reified(),r.fields.id),lpAmount:H("u64",r.fields.lp_amount),rewardDebt:H("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:Q(Xe.reified(),r.id),lpAmount:Q("u64",r.lpAmount),rewardDebt:Q("u64",r.rewardDebt)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(ee(s.$typeName,Y(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Sr(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"||!Sr(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=V(a[0]),u=V(Y(i));if(o!==V(Y(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,_o(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"||!Sr(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 ts(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 es(r,a,m,s);u+=BigInt(p.balance),m.push(p)}return u>=o?es(r,a,m,s):[]}function es(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 Zo="0x0000000000000000000000000000000000000000000000000000000000000000";async function ns(s,i,r){let a=await s.devInspectTransactionBlock({sender:Zo,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():Pn(r).parse(Uint8Array.from(u))}var Cr=class extends Ue{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.client=new $o({url:r})}chainType="SUI";client;async getUserBalanceInfo(r,a){if(!a.originTokenAddress)throw new D("SUI token must contain 'originTokenAddress'");let o=a.suiAddresses;if(!o)throw new D("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 D("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:Pr.phantom(ue(a)).phantomType},options:{showContent:!0},cursor:o}))}async getPoolInfoFromChain(r){let a=r.suiAddresses;if(!a)throw new D("SUI token must contain 'suiAddresses'");if((0,qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.originTokenAddress)throw new D("SUI token must contain 'originTokenAddress'");let o=48,u=new wr;Ea(u,r.originTokenAddress,a.bridgeObjectAddress);let m=await ns(this.client,u,br.reified(ue(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 D("SUI token must contain 'suiAddresses'");if((0,qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new D("SUI token must contain 'originTokenAddress'");let o=await At(w=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:w}));if(o.length===0||!o[0])throw new ut("No coins to deposit");let u=o[0],m=new wr;m.setSender(r.accountAddress);let{depositObj:p,isNewDeposit:h}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,m),[T]=ts([r.amount],o,m);if(!T)throw new ut("No coins to deposit");if(!r.token.originTokenAddress)throw new D("SUI token must contain 'originTokenAddress'");let S=Da(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=ue(a).phantomType;return{depositObj:Ua(o,m),isNewDeposit:!0}}else{if(u[0].data?.objectId)return{depositObj:u[0].data.objectId,isNewDeposit:!1};throw new D("Something went wrong while deposit")}}async buildRawTransactionWithdraw(r){let a=r.token.suiAddresses;if(!a)throw new D("SUI token must contain 'suiAddresses'");if((0,qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new D("SUI token must contain 'originTokenAddress'");let o=ue(r.token.originTokenAddress).phantomType,u=new wr;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=Wa(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 D("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 D("SUI token must contain 'suiAddresses'");if((0,qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new D("SUI token must contain 'originTokenAddress'");let o=ue(r.token.originTokenAddress).phantomType,u=new wr;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=Na(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 Yo}from"web3-eth-abi";var Rn=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=yn(o.poolAddress),m=yn(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=w=>{let k=T.find(v=>v.id===w);if(!k||!k.result)throw new Error(`Missing or invalid result for id ${w}`);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=yn(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 v=p.find(M=>M.id===k);if(!v||!v.result)throw new Error(`Missing or invalid result for id ${k}`);return Br.utils.toBigInt(v.result).toString()},T=h(3),S=h(4),w=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:w}}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(),w=p.toString(),k=ke({tokenBalance:S,vUsdBalance:w});return{aValue:o.toString(),dValue:u.toString(),tokenBalance:S,vUsdBalance:w,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 D("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}getContract(r){return this.tronWeb.contract(Cn.abi,r)}getFunctionAbi(r,...a){let o=Cn.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 Yo(o,a)}};var Ir=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o;this.rawTxBuilder=new mr(i,r,this.params,o);let u=a.cachePoolInfoChainSec>0?a.cachePoolInfoChainSec*1e3:20*1e3;this.cache=new Lo({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){K(i),z("amount",i,r.decimals);let o=await this.getPoolInfoFromChain(r,a),{vUsdBalance:u,tokenBalance:m,aValue:p,dValue:h}=o,T=Ka(i,p,h,m,u);return j(T,3).toFixed()}async getAmountToBeWithdrawn(i,r,a,o){K(i),z("amount",i,a.decimals);let u=await this.getPoolInfoFromChain(a,o),m=Ha(i),p=We(m,a.decimals),T=(await this.getUserBalanceInfo(r,a,o)).earned(u)||"0",S=Jo(p).plus(T).toFixed();return j(S,a.decimals).toFixed()}async getUserBalanceInfo(i,r,a){return Kt(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 Kt(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 Kt(s,i,r,a,o){switch(X.getChainProperty(s).chainType){case"EVM":{if(o)return new Bn(o,i);{let u=r.getNodeRpcUrl(s),m=new Qo(u);return m.defaultReturnFormat={number:Ho.STR,bytes:Ko.HEX},new Bn(m,i)}}case"TRX":{let u=r.getNodeRpcUrl(s),m=a.tronJsonRpc;if(o)return new Rn(o,i,m);{let p=new Xo({fullHost:u});return new Rn(p,i,m)}}case"SOLANA":{let u=r.getNodeRpcUrl(s);return new lr(u,i)}case"SRB":return new pr(r,a,i);case"SUI":return new Cr(r.getNodeRpcUrl(s),i)}}g();y();f();g();y();f();import{TronWeb as ec}from"tronweb";import{FMT_BYTES as tc,FMT_NUMBER as nc,Web3 as rc}from"web3";g();y();f();g();y();f();var zo={abi:[{inputs:[{internalType:"string",name:"tokenName_",type:"string"},{internalType:"string",name:"tokenSymbol_",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:!1,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"lpAmount",type:"uint256"}],name:"Deposited",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"token",type:"address"}],name:"DepositedRewards",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[4]",name:"values",type:"uint256[4]"}],name:"MultiTransfer",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:"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:!1,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdrawn",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"NUM_TOKENS",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:"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"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"minVirtualAmount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"depositRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"}],name:"getEstimatedAmountOnDeposit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"getRewardsAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"virtualAmount",type:"uint256"}],name:"getWithdrawProportionAmount",outputs:[{internalType:"uint256[4]",name:"",type:"uint256[4]"}],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:"uint256",name:"",type:"uint256"}],name:"pools",outputs:[{internalType:"contract IPool",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"},{internalType:"contract IPool",name:"pool",type:"address"}],name:"setPool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subBalanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"subDepositRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"subTotalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subTransfer",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"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subTransferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"virtualAmount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"tokens",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],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:"uint256",name:"virtualAmount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Rr=zo;g();y();f();g();y();f();g();y();f();var Et=class{};var vn=class extends Et{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";async balanceOf(r){let a=(await this.getYieldContract(r.token.yieldAddress).methods.balanceOf(r.owner).call()).toString();return j(a,3).toFixed()}async getEstimatedAmountOnDeposit(r){let a=Z(r.amount,r.token.decimals).toFixed(),o=(await this.getYieldContract(r.token.yieldAddress).methods.getEstimatedAmountOnDeposit(a,r.token.yieldId).call()).toString();return j(o,3).toFixed()}async getWithdrawProportionAmount(r){let a=Z(r.amount,3).toFixed();return await this.getYieldContract(r.cydToken.yieldAddress).methods.getWithdrawProportionAmount(r.owner,a).call()}async buildRawTransactionDeposit(r){return Promise.resolve({...this.buildTxParams({owner:r.owner,yieldAddress:r.token.yieldAddress}),data:this.getYieldContract(r.token.yieldAddress).methods.deposit(r.amount,r.token.yieldId,r.minVirtualAmount).encodeABI()})}async buildRawTransactionWithdraw(r){return Promise.resolve({...this.buildTxParams({owner:r.owner,yieldAddress:r.token.yieldAddress}),data:this.getYieldContract(r.token.yieldAddress).methods.withdraw(r.amount).encodeABI()})}buildTxParams(r){return{from:r.owner,to:r.yieldAddress,value:"0"}}getYieldContract(r){return new this.web3.eth.Contract(Rr.abi,r)}};g();y();f();var vr=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o}async approve(i,r){return this.tokenService.buildRawTransactionApprove({...i,spender:i.token.yieldAddress},r)}async deposit(i,r){return K(i.amount),z("amount",i.amount,i.token.decimals),K(i.minVirtualAmount),z("minVirtualAmount",i.minVirtualAmount,3),i.amount=Z(i.amount,i.token.decimals).toFixed(),i.minVirtualAmount=Z(i.minVirtualAmount,3).toFixed(),en(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,i.owner,r).buildRawTransactionDeposit(i)}async withdraw(i,r){return K(i.amount),z("amount",i.amount,3),i.amount=Z(i.amount,3).toFixed(),en(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,i.owner,r).buildRawTransactionWithdraw(i)}};g();y();f();var kn=class extends Et{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async balanceOf(r){let a=(await(await this.getContract(r.token.yieldAddress)).methods.balanceOf(r.owner).call()).toString();return j(a,3).toFixed()}async getEstimatedAmountOnDeposit(r){let a=Z(r.amount,r.token.decimals).toFixed(),o=(await(await this.getContract(r.token.yieldAddress)).methods.getEstimatedAmountOnDeposit(a,r.token.yieldId).call()).toString();return j(o,3).toFixed()}async getWithdrawProportionAmount(r){let a=Z(r.amount,3).toFixed();return(await(await this.getContract(r.cydToken.yieldAddress)).methods.getWithdrawProportionAmount(r.owner,a).call()).toString().split(",")}async buildRawTransactionDeposit(r){let{amount:a,owner:o,token:u,minVirtualAmount:m}=r,p=[{type:"uint256",value:a},{type:"uint256",value:u.yieldId},{type:"uint256",value:m}];return this.buildRawTransaction(r.token.yieldAddress,"deposit(uint256,uint256,uint256)",p,"0",o)}async buildRawTransactionWithdraw(r){let{amount:a,owner:o}=r,u=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.yieldAddress,"withdraw(uint256)",u,"0",o)}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 D("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}getContract(r){return this.tronWeb.contract(Rr.abi,r)}};g();y();f();function qo(s){if(!kr(s))throw new Zn("Token does not support Yield")}function kr(s){return!!s.yieldAddress&&s.yieldId!==void 0}var xr=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o;this.rawTxBuilder=new vr(i,r,a,o)}rawTxBuilder;async getCYDTokens(){let i=[],r=await this.api.getChainDetailsMap("pool");return Object.values(r).forEach(a=>{if(a.yieldAddress){let o=a.tokens.find(m=>m.tokenAddress===a.yieldAddress),u=a.tokens.filter(kr);if(u.length>0){let m=o??{allbridgeChainId:a.allbridgeChainId,apr:"",apr30d:"",apr7d:"",bridgeAddress:a.bridgeAddress,chainId:a.chainId,chainName:a.name,chainSymbol:a.chainSymbol,chainType:a.chainType,confirmations:a.confirmations,decimals:3,feeShare:"",lpRate:"",name:"Core Yield",poolAddress:"",symbol:"CYD",tokenAddress:a.yieldAddress,transferTime:{},txCostAmount:{maxAmount:"0",swap:"0",transfer:"0"},yieldAddress:a.yieldAddress};i.push({...m,yieldAddress:a.yieldAddress,tokens:u})}}}),i}async getAllowance(i,r){return await this.tokenService.getAllowance({...i,spender:i.token.yieldAddress},r)}async checkAllowance(i,r){return this.tokenService.checkAllowance({...i,spender:i.token.yieldAddress},r)}async balanceOf(i,r){return en(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,i.owner,r).balanceOf(i)}async getEstimatedAmountOnDeposit(i,r){return K(i.amount),z("amount",i.amount,i.token.decimals),en(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,i.token.yieldAddress,r).getEstimatedAmountOnDeposit(i)}async getWithdrawAmounts(i,r){K(i.amount),z("amount",i.amount,3);let a=await en(i.cydToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,i.owner,r).getWithdrawProportionAmount(i);return i.cydToken.tokens.filter(o=>a[o.yieldId]!==void 0).map(o=>({amount:j(a[o.yieldId],o.decimals).toFixed(),token:o}))}};function en(s,i,r,a,o){switch(X.getChainProperty(s).chainType){case"EVM":{if(o)return new vn(o,i);{let u=r.getNodeRpcUrl(s),m=new rc(u);return m.defaultReturnFormat={number:nc.STR,bytes:tc.HEX},new vn(m,i)}}case"TRX":{if(o)return new kn(o,i);{let u=r.getNodeRpcUrl(s),m=new ec({fullHost:u});return m.setAddress(a),new kn(m,i)}}case"SOLANA":throw new Ae;case"SRB":throw new Ae;case"SUI":throw new Ae}}g();y();f();import{Big as de}from"big.js";function as(s,i,r){let a=ic(s,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo),o=ac(a.amountIncludingCommissionInSystemPrecision,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:o}}function ss(s,i,r){let a=sc(s,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo),o=oc(a.amountIncludingCommissionInSystemPrecision,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:o}}function ic(s,{feeShare:i,decimals:r},a){let o=de(s),u=o.times(i),m=o.minus(u);return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInSystemPrecision:rs(xt(m,r),a),amountExcludingCommissionInSystemPrecision:rs(xt(o,r),a)}}function rs(s,i){if(s.eq(0))return"0";let r=de(i.tokenBalance).plus(s),a=at(r.toFixed(),i.aValue,i.dValue);return de(i.vUsdBalance).minus(a).round().toFixed()}function ac(s,{feeShare:i,decimals:r},a){if(de(s).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let u=de(s).plus(a.vUsdBalance),m=at(u,a.aValue,a.dValue),p=We(de(a.tokenBalance).minus(m),r),h=de(p).times(i),T=de(p).minus(h).round();return{bridgeFeeInTokenPrecision:h.round().toFixed(),amountIncludingCommissionInTokenPrecision:T.toFixed(),amountExcludingCommissionInTokenPrecision:p.toFixed()}}function sc(s,{feeShare:i,decimals:r},a){let o=de(i).div(de(1).minus(i)),u=de(s).times(o),m=de(s).plus(u);return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInSystemPrecision:is(xt(m,r),a),amountExcludingCommissionInSystemPrecision:is(xt(s,r),a)}}function is(s,i){let r=de(i.tokenBalance).minus(s),a=at(r.toFixed(),i.aValue,i.dValue);return de(a).minus(i.vUsdBalance).round().toFixed()}function oc(s,{feeShare:i,decimals:r},a){if(de(s).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let o=de(a.vUsdBalance).minus(s),u=at(o.toFixed(),a.aValue,a.dValue),m=de(u).minus(a.tokenBalance),p=We(m.toFixed(),r),h=de(i).div(de(1).minus(i)),T=de(p).times(h),S=de(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 os(s,i,r,a,o){let u=it(s,i,r),m=We(u,i.decimals),p=fn(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(We(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 dc from"axios";g();y();f();var cs="3.27.0";g();y();f();function As(s){return Object.entries(s).reduce((i,r)=>{let a=r[0],o=r[1],u=lc(a,o);return u&&(i[a]=u),i},{})}function us(s){let i={};for(let[r,a]of Object.entries(s)){let o=r;for(let u of a.tokens){let m=tn({chainSymbol:o,poolAddress:u.poolAddress}),p=ke(u.poolInfo);i[m]={...u.poolInfo,imbalance:p}}}return i}function cc(s,i){let{name:r,...a}=s,{poolInfo:o,...u}=i;return{...u,...a,chainName:r}}function Ac(s){switch(s){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;case"cctpV2":return 4;case"oft":return 5}}function uc(s){return Object.entries(s).reduce((i,[r,a])=>(i[r]=mc(a),i),{})}function mc(s){return Object.entries(s).reduce((i,[r,a])=>{let o=Ac(r);return o&&a!=null&&(i[o]=a),i},{})}function lc(s,i){let r=X.getChainsProperties()[s];if(!r)return null;let a={...r,allbridgeChainId:i.chainId,bridgeAddress:i.bridgeAddress,oftBridgeAddress:i.oftBridgeAddress,yieldAddress:i.yieldAddress,transferTime:uc(i.transferTime),txCostAmount:i.txCostAmount,confirmations:i.confirmations,suiAddresses:i.suiAddresses};return{...a,tokens:i.tokens.map(o=>cc(a,o))}}function tn(s){return s.chainSymbol+"_"+s.poolAddress}function ms(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 ls(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[tn({chainSymbol:o,poolAddress:u})]=m}return i}var nn=class{api;constructor(i){this.api=dc.create({baseURL:i.coreApiUrl,headers:{Accept:"application/json",...i.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+cs},params:i.coreApiQueryParams})}async getTokenInfo(){let{data:i}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:As(i),poolInfoMap:us(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 Gn("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 ls(a)}};g();y();f();import Fr from"timed-cache";var vi=20*1e3,pc=55*1e3,rn=class{constructor(i){this.apiClient=i;this.tokenInfoCache=new Fr({defaultTtl:pc}),this.receivedTransactionCache=new Fr({defaultTtl:vi}),this.pendingInfoCache=new Fr({defaultTtl:vi}),this.gasBalanceCache=new Fr({defaultTtl:vi})}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 an=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 sn=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:ds(u.tokens,i,this.isStaging)})}return a}async tokens(i){return ds(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 ds(s,i,r){return s.filter(a=>r?!0:a.flags[i]).map(gc)}function gc(s){let{flags:i,...r}=s;return r}g();y();f();import fc from"timed-cache";var yc=55*1e3,on=class{constructor(i){this.client=i;this.poolInfoCache=new ki}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[tn(i)];if(o)return o;throw new D("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(ms(a.chainDetailsMap))}this.poolInfoCache.putAll(r)}cachePut(i,r){this.poolInfoCache.put(tn(i),r)}},ki=class{cache;constructor(){this.cache=new fc({defaultTtl:yc})}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=tn(i);return this.cache.get(r)}};g();y();f();import{Big as Rc}from"big.js";import{TronWeb as vc}from"tronweb";import{Web3 as kc}from"web3";g();y();f();g();y();f();var hc={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"}]},Mr=hc;g();y();f();g();y();f();g();y();f();import{Big as ps}from"big.js";var Ge=class{async checkAllowance(i){let r=await this.getAllowance(i);return ps(r).gte(ps(i.amount))}};var Tc="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",bc="0xdac17f958d2ee523a2206206994597c13d831ec7",Sc=1e5,xn=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()===bc}buildRawTransactionApprove(r){let{tokenAddress:a,spender:o,owner:u,amount:m}=r,h=this.getERC20Contract(a).methods.approve(o,m==null?Tc:cr(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(Mr.abi,r)}};g();y();f();import{AnchorProvider as Pc}from"@project-serum/anchor";import{Connection as wc,PublicKey as Or}from"@solana/web3.js";var Dr=class extends Ge{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";approve(r){throw new Ae}buildRawTransactionApprove(r){throw new Ae}buildAnchorProvider(r){let a=new wc(this.solanaRpcUrl,"confirmed"),o=new Or(r);return new Pc(a,{publicKey:o},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(r){throw new Ae}async getTokenBalance(r){let{account:a,token:o}=r;try{let u=await Qe(new Or(a),new Or(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 Or(r.account))).toString()}};g();y();f();import{Horizon as nI,NotFoundError as Cc}from"@stellar/stellar-sdk";var Wr=class extends Ge{constructor(r,a,o){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=o}chainType="SRB";getAllowance(){throw new Ae}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new D("OriginTokenAddress missing");let[a,o]=r.token.originTokenAddress.split(":"),u=new nI.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),m;try{m=await u.loadAccount(r.account)}catch(T){if(T instanceof Cc)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?Z(h.balance,X.getChainDecimalsByType(X.getChainProperty(r.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(r){let m=(await new nI.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(r.account)).balances.find(p=>p.asset_type==="native");return m?.balance?Z(m.balance,X.getChainDecimalsByType(X.getChainProperty(r.chainSymbol).chainType)).toFixed():"0"}approve(){throw new Ae}buildRawTransactionApprove(){throw new Ae}};g();y();f();import{SuiClient as Bc}from"@mysten/sui/client";var Nr=class extends Ge{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.suiClient=new Bc({url:this.suiRpcUrl})}chainType="SUI";suiClient;approve(r){throw new Ae}buildRawTransactionApprove(r){throw new Ae}getAllowance(r){throw new Ae}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new D("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 Ic="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Fn=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 Ar(this.tronWeb,a)}async buildRawTransactionApprove(r){let{tokenAddress:a,spender:o,owner:u,amount:m}=r,p=m==null?Ic:cr(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(Mr.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 D("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}};var cn=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 K(i.amount),z("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&&(K(r.amount),z("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&&(K(i.amount),z("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,X.getChainDecimalsByType(X.getChainProperty(i.chainSymbol).chainType)).toFixed()}}getChainTokenService(i,r,a){switch(X.getChainProperty(i).chainType){case"EVM":{if(a)return new xn(a,this.api);{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i);return new xn(new kc(o),this.api)}}case"TRX":{if(a)return new Fn(a,this.api);{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i),u=new vc({fullHost:o});return u.setAddress(r),new Fn(u,this.api)}}case"SOLANA":{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i);return new Dr(o,this.api)}case"SRB":return new Wr(this.nodeRpcUrlsConfig,this.params,this.api);case"SUI":return new Nr(this.nodeRpcUrlsConfig.getNodeRpcUrl(i),this.api)}}prepareCheckAllowanceParams(i){return{...i,amount:Z(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:Rc(i.amount).toFixed()}}};var Er=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r;let a=new nn(r),o=new rn(a),u=new an(o),m=new on(u);this.api=new sn(m,r),this.tokenService=new cn(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 xc,PublicKey as Fc,TransactionMessage as Mc}from"@solana/web3.js";var Ur=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r}async addMemoToTx(i,r){if(r.length>28)throw new D("InvalidArgumentException memo cannot be more than 28 characters");let a=new xc(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),o=await Mt(i,a),u=Mc.decompile(i.message,{addressLookupTableAccounts:o}),m=u.instructions[u.instructions.length-1];if(!m?.keys)throw new D("Last instruction or its keys are invalid.");m.keys.push({pubkey:new Fc(P.from(r)),isSigner:!1,isWritable:!1}),i.message=u.compileToV0Message(o)}};g();y();f();import{Asset as Wc,BASE_FEE as Nc,contract as mx,Horizon as gs,Operation as Ec,Operation as Uc,rpc as On,TimeoutInfinite as Gc,TransactionBuilder as xi,TransactionBuilder as fs}from"@stellar/stellar-sdk";g();y();f();import{contract as e}from"@stellar/stellar-sdk";var Oc=e.Spec,Dc=e.Client;var Mn=class extends Dc{constructor(r){super(new Oc(["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 Vc=100,jc=180,Gr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r}async buildChangeTrustLineXdrTx(i){let a=await new gs.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(i.sender),u=await this.getContract(Mn,i.tokenAddress).name();if(Qt(u))throw new D;let m=Ht(u);if(!m)throw new D;let[p,h]=m.split(":");if(p===void 0||h===void 0)throw new D("Invalid token name format. Expected format 'symbol:srbTokenAddress'");let T=new Wc(p,h),S=Uc.changeTrust({asset:T,limit:i.limit});return new fs(a,{fee:Vc.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(S).setTimeout(jc).build().toXDR()}async getBalanceLine(i,r){let o=await this.getContract(Mn,r).name();if(Qt(o))throw new D;let u=Ht(o);if(!u)throw new D;let[m,p]=u.split(":"),h=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new gs.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 gs.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),a=fs.fromXDR(i,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await r.submitTransaction(a)}async simulateAndCheckRestoreTxRequiredSoroban(i,r){let a=new On.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),o=await a.getAccount(r),u=xi.fromXDR(i,this.params.sorobanNetworkPassphrase),m=await a.simulateTransaction(u);if(On.Api.isSimulationRestore(m))return new xi(o,{fee:(+Nc+ +m.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(m.restorePreamble.transactionData.build()).addOperation(Ec.restoreFootprint({})).setTimeout(Gc).build().toXDR()}async sendTransactionSoroban(i){let r=new On.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=xi.fromXDR(i,this.params.sorobanNetworkPassphrase);return r.sendTransaction(a)}async confirmTx(i,r=15){let a=new On.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),o=await Xi(()=>a.getTransaction(i),m=>m.status===On.Api.GetTransactionStatus.NOT_FOUND,r);if(o.length===0)throw new D("No transaction responses found.");let u=o[o.length-1];if(!u)throw new D("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 Vr=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 jr=class{constructor(i){this.service=i;this.srb=new Gr(i.nodeRpcUrlsConfig,i.params),this.sol=new Ur(i.nodeRpcUrlsConfig,i.params),this.sui=new Vr(i.nodeRpcUrlsConfig,i.api),this.evm=new Er(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||{}),Ln=(r=>(r.INT="int",r.FLOAT="float",r))(Ln||{});g();y();f();import{Big as fe}from"big.js";var Dn=class{constructor(i){this.nodeRpcUrls=i}getNodeRpcUrl(i){let r=this.nodeRpcUrls[i];if(r!==void 0)return r;throw new _n(i)}},_r=class{constructor(i,r=Un){this.nodeRpcUrlsConfig=i;X.addChainsProperties(r.additionalChainsProperties);let a=new nn(r),o=new rn(a),u=new an(o),m=new on(u);this.api=new sn(m,r),this.tokenService=new cn(this.api,i,r),this.bridge=new ur(this.api,i,r,this.tokenService),this.pool=new Ir(this.api,i,r,this.tokenService),this.yield=new xr(this.api,i,r,this.tokenService),this.params=r}api;tokenService;params;bridge;pool;yield;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){K(i);let u;r=="float"?(z("amount",i,a.decimals),u=Z(i,a.decimals).toFixed()):u=i;let m=it(u,a,await ge(this.api,a)),p=await ge(this.api,o),h=this.getAmountFromVUsdFormatted(m,o,p),T,S=await this.api.getPendingInfo();for(let w in S[o.chainSymbol]){let k=S[o.chainSymbol];if(!k)throw new D("Cannot find pending info for "+o.chainSymbol);T=k[w]}if(T){let w=sa(T.totalSentAmount,p),k=this.getAmountFromVUsdFormatted(m,o,w),v;return fe(k.int).gt(h.int)?v={min:h,max:k}:v={min:k,max:h},{pendingTxs:T.pendingTxs,pendingAmount:{int:Je(T.totalSentAmount,3,o.decimals).toFixed(0),float:j(T.totalSentAmount,3).toFixed()},estimatedAmount:v}}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){K(i),z("amountFloat",i,r.decimals);let a=Z(i,r.decimals);if(a.eq(0))return 0;let o=it(a,r,await ge(this.api,r)),u=We(o,r.decimals);return ti(a,u)}async calculateFeePercentOnDestinationChain(i,r,a){K(i),z("amountFloat",i,r.decimals);let o=Z(i,r.decimals);if(o.eq(0))return 0;let u=it(o,r,await ge(this.api,r)),m=fn(u,a,await ge(this.api,a)),p=We(u,a.decimals);return ti(p,m)}async getAmountToBeReceivedAndGasFeeOptions(i,r,a,o){return K(i),z("amountToSendFloat",i,r.decimals),{amountToSendFloat:fe(i).toFixed(),amountToBeReceivedFloat:await this.getAmountToBeReceived(i,r,a,o),gasFeeOptions:await this.getGasFeeOptions(r,a,o)}}async getAmountToSendAndGasFeeOptions(i,r,a,o){return K(i),z("amountToBeReceivedFloat",i,a.decimals),{amountToSendFloat:await this.getAmountToSend(i,r,a,o),amountToBeReceivedFloat:fe(i).toFixed(),gasFeeOptions:await this.getGasFeeOptions(r,a,o)}}async getAmountToBeReceived(i,r,a,o){return this.getAmountToBeReceivedCompute(i,r,a,o,async()=>await ge(this.api,r),async()=>await ge(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){K(i),z("amountToSendFloat",i,r.decimals);let m=Z(i,r.decimals),p=it(m,r,o);return this.getAmountFromVUsdFormatted(p,a,u).float}getAmountToBeReceivedComputeCctp(i,r,a,o){K(i),z("amountToSendFloat",i,r.decimals);let u=Z(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(fe(1).minus(r.cctpFeeShare)).round(0,fe.roundUp),p=Je(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(fe(1).minus(r.cctpV2FeeShare)).round(0,fe.roundUp),p=Je(m,r.decimals,a.decimals).round(0);return j(p,a.decimals).toFixed()}}}async getAmountToBeReceivedComputeOft(i,r,a){K(i),z("amountToSendFloat",i,r.decimals);let o=Z(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(fe(1).minus(u)).round(0,fe.roundUp),p=Je(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,()=>ge(this.api,r),()=>ge(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){K(i),z("amountToBeReceivedFloat",i,a.decimals);let m=Z(i,a.decimals),p=ca(m,a,u),h=oa(p,r,o);if(fe(h).lte(0))throw new mt;return j(h,r.decimals).toFixed()}getAmountToSendComputeCctp(i,r,a,o){K(i),z("amountToBeReceivedFloat",i,a.decimals);let u=Z(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(fe(1).minus(r.cctpFeeShare)).round(0,fe.roundDown),p=Je(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(fe(1).minus(r.cctpV2FeeShare)).round(0,fe.roundDown),p=Je(m,a.decimals,r.decimals).round(0);return j(p,r.decimals).toFixed()}}}async getAmountToSendComputeOft(i,r,a){K(i),z("amountToBeReceivedFloat",i,a.decimals);let o=Z(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(fe(1).minus(u)).round(0,fe.roundDown),p=Je(m,a.decimals,r.decimals).round(0);return j(p,r.decimals).toFixed()}async getGasFeeOptions(i,r,a){return ni(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 ua(i)}async getExtraGasMaxLimits(i,r,a){return await ri(i,r,a,this.api)}async getVUsdFromAmount(i,r,a){K(i);let o;r=="float"?(z("amount",i,a.decimals),o=Z(i,a.decimals).toFixed()):o=i;let u=it(o,a,await ge(this.api,a));return{int:u,float:j(u,3).toFixed()}}async getAmountFromVUsd(i,r){return this.getAmountFromVUsdFormatted(i,r,await ge(this.api,r))}getAmountFromVUsdFormatted(i,r,a){K(i);let o=fn(i,r,a);if(fe(o).lt(0))throw new mt;return{int:o,float:j(o,r.decimals).toFixed()}}async swapAndBridgeFeeCalculation(i,r,a){return as(i,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await ge(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await ge(this.api,a)})}async swapAndBridgeFeeCalculationReverse(i,r,a){let o=ss(i,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await ge(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await ge(this.api,a)}),u=o.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if(fe(u).lt(0))throw new mt;return o}async getSendAmountDetails(i,r,a,o){K(i);let u;return r=="float"?(z("amount",i,a.decimals),u=Z(i,a.decimals).toFixed()):u=i,os(u,a,await ge(this.api,a),o,await ge(this.api,o))}};function _c(s){return"solanaRpcUrl"in s}var ys=class{params;bridge;pool;yield;utils;service;constructor(i,r=Un){let a;_c(i)?a=new Dn({SOL:i.solanaRpcUrl,TRX:i.tronRpcUrl}):a=new Dn(i),this.service=new _r(a,r),this.bridge=this.service.bridge,this.pool=this.service.pool,this.yield=this.service.yield,this.utils=new jr(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{Kr as AddressStatus,ys as AllbridgeCoreSdk,Ln as AmountFormat,Vt as AmountNotEnoughError,jn as ArgumentInvalidDecimalsError,Ie as CCTPDoesNotSupportedError,$e as ChainSymbol,re as ChainType,Ds as ErrorCode,Vn as ExtraGasMaxLimitExceededError,Ft as FeePaymentMethod,mt as InsufficientPoolLiquidityError,ut as InvalidAmountError,mn as InvalidGasFeePaymentOptionError,Gn as InvalidMessengerOptionError,jt as InvalidTxError,Te as JupiterError,Ye as Messenger,Ae as MethodNotSupportedError,_n as NodeRpcUrlNotInitializedError,Re as OFTDoesNotSupportedError,D as SdkError,ce as SdkRootError,ii as SolanaAutoTxFee,dn as TimeoutError,$n as TxTooLargeError,ln as VerifyTxError,Zn as YieldDoesNotSupportedError,qo as assertYieldIsSupported,kr as isYieldSupported,Un as mainnet,mA as nodeRpcUrlsDefault,uA as nodeUrlsDefault};
|
|
1
|
+
var Bs=Object.create;var Ui=Object.defineProperty;var Is=Object.getOwnPropertyDescriptor;var Rs=Object.getOwnPropertyNames;var vs=Object.getPrototypeOf,ks=Object.prototype.hasOwnProperty;var Bt=(s,i)=>()=>(s&&(i=s(s=0)),i);var Jr=(s,i)=>()=>(i||s((i={exports:{}}).exports,i),i.exports);var xs=(s,i,r,a)=>{if(i&&typeof i=="object"||typeof i=="function")for(let o of Rs(i))!ks.call(s,o)&&o!==r&&Ui(s,o,{get:()=>i[o],enumerable:!(a=Is(i,o))||a.enumerable});return s};var He=(s,i,r)=>(r=s!=null?Bs(vs(s)):{},xs(i||!s||!s.__esModule?Ui(r,"default",{value:s,enumerable:!0}):r,s));var g=Bt(()=>{});function Fs(s,i){this.fun=s,this.array=i}function Gi(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+=Xr)),[a,o]}var Yc,It,Lr,Xr,Vi=Bt(()=>{g();y();f();Fs.prototype.run=function(){this.fun.apply(null,this.array)};Yc={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&&(Lr=Date.now(),It.timing&&It.timing.navigationStart&&(Lr=It.timing.navigationStart),It.now=()=>Date.now()-Lr);Xr=1e9;Gi.bigint=function(s){var i=Gi(s);return typeof BigInt>"u"?i[0]*Xr+i[1]:BigInt(i[0]*Xr)+BigInt(i[1])}});var f=Bt(()=>{Vi()});function Ms(){if(ji)return un;ji=!0,un.byteLength=p,un.toByteArray=T,un.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(v){var M=v.length;if(M%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var x=v.indexOf("=");x===-1&&(x=M);var O=x===M?0:4-x%4;return[x,O]}function p(v){var M=m(v),x=M[0],O=M[1];return(x+O)*3/4-O}function h(v,M,x){return(M+x)*3/4-x}function T(v){var M,x=m(v),O=x[0],N=x[1],F=new r(h(v,O,N)),W=0,U=N>0?O-4:O,_;for(_=0;_<U;_+=4)M=i[v.charCodeAt(_)]<<18|i[v.charCodeAt(_+1)]<<12|i[v.charCodeAt(_+2)]<<6|i[v.charCodeAt(_+3)],F[W++]=M>>16&255,F[W++]=M>>8&255,F[W++]=M&255;return N===2&&(M=i[v.charCodeAt(_)]<<2|i[v.charCodeAt(_+1)]>>4,F[W++]=M&255),N===1&&(M=i[v.charCodeAt(_)]<<10|i[v.charCodeAt(_+1)]<<4|i[v.charCodeAt(_+2)]>>2,F[W++]=M>>8&255,F[W++]=M&255),F}function S(v){return s[v>>18&63]+s[v>>12&63]+s[v>>6&63]+s[v&63]}function w(v,M,x){for(var O,N=[],F=M;F<x;F+=3)O=(v[F]<<16&16711680)+(v[F+1]<<8&65280)+(v[F+2]&255),N.push(S(O));return N.join("")}function k(v){for(var M,x=v.length,O=x%3,N=[],F=16383,W=0,U=x-O;W<U;W+=F)N.push(w(v,W,W+F>U?U:W+F));return O===1?(M=v[x-1],N.push(s[M>>2]+s[M<<4&63]+"==")):O===2&&(M=(v[x-2]<<8)+v[x-1],N.push(s[M>>10]+s[M>>4&63]+s[M<<2&63]+"=")),N.join("")}return un}function Os(){if(_i)return En;_i=!0;return En.read=function(s,i,r,a,o){var u,m,p=o*8-a-1,h=(1<<p)-1,T=h>>1,S=-7,w=r?o-1:0,k=r?-1:1,v=s[i+w];for(w+=k,u=v&(1<<-S)-1,v>>=-S,S+=p;S>0;u=u*256+s[i+w],w+=k,S-=8);for(m=u&(1<<-S)-1,u>>=-S,S+=a;S>0;m=m*256+s[i+w],w+=k,S-=8);if(u===0)u=1-T;else{if(u===h)return m?NaN:(v?-1:1)*(1/0);m=m+Math.pow(2,a),u=u-T}return(v?-1:1)*m*Math.pow(2,u-a)},En.write=function(s,i,r,a,o,u){var m,p,h,T=u*8-o-1,S=(1<<T)-1,w=S>>1,k=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,v=a?0:u-1,M=a?1:-1,x=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+w>=1?i+=k/h:i+=k*Math.pow(2,1-w),i*h>=2&&(m++,h/=2),m+w>=S?(p=0,m=S):m+w>=1?(p=(i*h-1)*Math.pow(2,o),m=m+w):(p=i*Math.pow(2,w-1)*Math.pow(2,o),m=0));o>=8;s[r+v]=p&255,v+=M,p/=256,o-=8);for(m=m<<o|p,T+=o;T>0;s[r+v]=m&255,v+=M,m/=256,T-=8);s[r+v-M]|=x*128},En}function $i(){if(Zi)return Rt;Zi=!0;let s=Ms(),i=Os(),r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Rt.Buffer=m,Rt.SlowBuffer=N,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 w(l,c);if(ArrayBuffer.isView(l))return v(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 M(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=x(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:O(l)|0)}m.allocUnsafe=function(l){return S(l)},m.allocUnsafeSlow=function(l){return S(l)};function w(l,c){if((typeof c!="string"||c==="")&&(c="utf8"),!m.isEncoding(c))throw new TypeError("Unknown encoding: "+c);let A=F(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:O(l.length)|0,A=u(c);for(let d=0;d<c;d+=1)A[d]=l[d]&255;return A}function v(l){if(rt(l,Uint8Array)){let c=new Uint8Array(l);return M(c.buffer,c.byteOffset,c.byteLength)}return k(l)}function M(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 x(l){if(m.isBuffer(l)){let c=O(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"||Yr(l.length)?u(0):k(l);if(l.type==="Buffer"&&Array.isArray(l.data))return k(l.data)}function O(l){if(l>=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return l|0}function N(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 C=0,R=Math.min(d,b);C<R;++C)if(c[C]!==A[C]){d=c[C],b=A[C];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),C=0;for(d=0;d<c.length;++d){let R=c[d];if(rt(R,Uint8Array))C+R.length>b.length?(m.isBuffer(R)||(R=m.from(R)),R.copy(b,C)):Uint8Array.prototype.set.call(b,R,C);else if(m.isBuffer(R))R.copy(b,C);else throw new TypeError('"list" argument must be an Array of Buffers');C+=R.length}return b};function F(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 $r(l).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A*2;case"hex":return A>>>1;case"base64":return Ei(l).length;default:if(b)return d?-1:$r(l).length;c=(""+c).toLowerCase(),b=!0}}m.byteLength=F;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 Ze(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 _e(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,C){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),C===void 0&&(C=this.length),A<0||d>c.length||b<0||C>this.length)throw new RangeError("out of range index");if(b>=C&&A>=d)return 0;if(b>=C)return-1;if(A>=d)return 1;if(A>>>=0,d>>>=0,b>>>=0,C>>>=0,this===c)return 0;let R=C-b,J=d-A,se=Math.min(R,J),ie=this.slice(b,C),oe=c.slice(A,d);for(let ne=0;ne<se;++ne)if(ie[ne]!==oe[ne]){R=ie[ne],J=oe[ne];break}return R<J?-1:J<R?1:0};function _(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,Yr(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 C=1,R=l.length,J=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;C=2,R/=2,J/=2,A/=2}function se(oe,ne){return C===1?oe[ne]:oe.readUInt16BE(ne*C)}let ie;if(b){let oe=-1;for(ie=A;ie<R;ie++)if(se(l,ie)===se(c,oe===-1?0:ie-oe)){if(oe===-1&&(oe=ie),ie-oe+1===J)return oe*C}else oe!==-1&&(ie-=ie-oe),oe=-1}else for(A+J>R&&(A=R-J),ie=A;ie>=0;ie--){let oe=!0;for(let ne=0;ne<J;ne++)if(se(l,ie+ne)!==se(c,ne)){oe=!1;break}if(oe)return ie}return-1}m.prototype.includes=function(c,A,d){return this.indexOf(c,A,d)!==-1},m.prototype.indexOf=function(c,A,d){return _(this,c,A,d,!0)},m.prototype.lastIndexOf=function(c,A,d){return _(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 C=c.length;d>C/2&&(d=C/2);let R;for(R=0;R<d;++R){let J=parseInt(c.substr(R*2,2),16);if(Yr(J))return R;l[A+R]=J}return R}function le(l,c,A,d){return Nn($r(c,l.length-A),l,A,d)}function Ve(l,c,A,d){return Nn(Ss(c),l,A,d)}function je(l,c,A,d){return Nn(Ei(c),l,A,d)}function Ke(l,c,A,d){return Nn(Ps(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 C=this.length-A;if((d===void 0||d>C)&&(d=C),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 le(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 ye(l,c,A){A=Math.min(l.length,A);let d=[],b=c;for(;b<A;){let C=l[b],R=null,J=C>239?4:C>223?3:C>191?2:1;if(b+J<=A){let se,ie,oe,ne;switch(J){case 1:C<128&&(R=C);break;case 2:se=l[b+1],(se&192)===128&&(ne=(C&31)<<6|se&63,ne>127&&(R=ne));break;case 3:se=l[b+1],ie=l[b+2],(se&192)===128&&(ie&192)===128&&(ne=(C&15)<<12|(se&63)<<6|ie&63,ne>2047&&(ne<55296||ne>57343)&&(R=ne));break;case 4:se=l[b+1],ie=l[b+2],oe=l[b+3],(se&192)===128&&(ie&192)===128&&(oe&192)===128&&(ne=(C&15)<<18|(se&63)<<12|(ie&63)<<6|oe&63,ne>65535&&ne<1114112&&(R=ne))}}R===null?(R=65533,J=1):R>65535&&(R-=65536,d.push(R>>>10&1023|55296),R=56320|R&1023),d.push(R),b+=J}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 _e(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 Ze(l,c,A){let d=l.length;(!c||c<0)&&(c=0),(!A||A<0||A>d)&&(A=d);let b="";for(let C=c;C<A;++C)b+=ws[l[C]];return b}function De(l,c,A){let d=l.slice(c,A),b="";for(let C=0;C<d.length-1;C+=2)b+=String.fromCharCode(d[C]+d[C+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],C=1,R=0;for(;++R<A&&(C*=256);)b+=this[c+R]*C;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],C=1;for(;A>0&&(C*=256);)b+=this[c+--A]*C;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)&&An(c,this.length-8);let b=A+this[++c]*2**8+this[++c]*2**16+this[++c]*2**24,C=this[++c]+this[++c]*2**8+this[++c]*2**16+d*2**24;return BigInt(b)+(BigInt(C)<<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)&&An(c,this.length-8);let b=A*2**24+this[++c]*2**16+this[++c]*2**8+this[++c],C=this[++c]*2**24+this[++c]*2**16+this[++c]*2**8+d;return(BigInt(b)<<BigInt(32))+BigInt(C)}),m.prototype.readIntLE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let b=this[c],C=1,R=0;for(;++R<A&&(C*=256);)b+=this[c+R]*C;return C*=128,b>=C&&(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,C=1,R=this[c+--b];for(;b>0&&(C*=256);)R+=this[c+--b]*C;return C*=128,R>=C&&(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)&&An(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)&&An(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 pe(l,c,A,d,b,C){if(!m.isBuffer(l))throw new TypeError('"buffer" argument must be a Buffer instance');if(c>b||c<C)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 J=Math.pow(2,8*d)-1;pe(this,c,A,d,J,0)}let C=1,R=0;for(this[A]=c&255;++R<d&&(C*=256);)this[A+R]=c/C&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 J=Math.pow(2,8*d)-1;pe(this,c,A,d,J,0)}let C=d-1,R=1;for(this[A+C]=c&255;--C>=0&&(R*=256);)this[A+C]=c/R&255;return A+d},m.prototype.writeUint8=m.prototype.writeUInt8=function(c,A,d){return c=+c,A=A>>>0,d||pe(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||pe(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||pe(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||pe(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||pe(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 Wn(l,c,A,d,b){Ni(c,d,b,l,A,7);let C=Number(c&BigInt(4294967295));l[A++]=C,C=C>>8,l[A++]=C,C=C>>8,l[A++]=C,C=C>>8,l[A++]=C;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 Fi(l,c,A,d,b){Ni(c,d,b,l,A,7);let C=Number(c&BigInt(4294967295));l[A+7]=C,C=C>>8,l[A+6]=C,C=C>>8,l[A+5]=C,C=C>>8,l[A+4]=C;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 Wn(this,c,A,BigInt(0),BigInt("0xffffffffffffffff"))}),m.prototype.writeBigUInt64BE=gt(function(c,A=0){return Fi(this,c,A,BigInt(0),BigInt("0xffffffffffffffff"))}),m.prototype.writeIntLE=function(c,A,d,b){if(c=+c,A=A>>>0,!b){let se=Math.pow(2,8*d-1);pe(this,c,A,d,se-1,-se)}let C=0,R=1,J=0;for(this[A]=c&255;++C<d&&(R*=256);)c<0&&J===0&&this[A+C-1]!==0&&(J=1),this[A+C]=(c/R>>0)-J&255;return A+d},m.prototype.writeIntBE=function(c,A,d,b){if(c=+c,A=A>>>0,!b){let se=Math.pow(2,8*d-1);pe(this,c,A,d,se-1,-se)}let C=d-1,R=1,J=0;for(this[A+C]=c&255;--C>=0&&(R*=256);)c<0&&J===0&&this[A+C+1]!==0&&(J=1),this[A+C]=(c/R>>0)-J&255;return A+d},m.prototype.writeInt8=function(c,A,d){return c=+c,A=A>>>0,d||pe(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||pe(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||pe(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||pe(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||pe(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 Wn(this,c,A,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),m.prototype.writeBigInt64BE=gt(function(c,A=0){return Fi(this,c,A,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function Mi(l,c,A,d,b,C){if(A+d>l.length)throw new RangeError("Index out of range");if(A<0)throw new RangeError("Index out of range")}function Oi(l,c,A,d,b){return c=+c,A=A>>>0,b||Mi(l,c,A,4),i.write(l,c,A,d,23,4),A+4}m.prototype.writeFloatLE=function(c,A,d){return Oi(this,c,A,!0,d)},m.prototype.writeFloatBE=function(c,A,d){return Oi(this,c,A,!1,d)};function Di(l,c,A,d,b){return c=+c,A=A>>>0,b||Mi(l,c,A,8),i.write(l,c,A,d,52,8),A+8}m.prototype.writeDoubleLE=function(c,A,d){return Di(this,c,A,!0,d)},m.prototype.writeDoubleBE=function(c,A,d){return Di(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 C=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),C},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 C;if(typeof c=="number")for(C=A;C<d;++C)this[C]=c;else{let R=m.isBuffer(c)?c:m.from(c,b),J=R.length;if(J===0)throw new TypeError('The value "'+c+'" is invalid for argument "value"');for(C=0;C<d-A;++C)this[C+A]=R[C%J]}return this};let Ut={};function Zr(l,c,A){Ut[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}`}}}Zr("ERR_BUFFER_OUT_OF_BOUNDS",function(l){return l?`${l} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),Zr("ERR_INVALID_ARG_TYPE",function(l,c){return`The "${l}" argument must be of type number. Received type ${typeof c}`},TypeError),Zr("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=Wi(String(A)):typeof A=="bigint"&&(b=String(A),(A>BigInt(2)**BigInt(32)||A<-(BigInt(2)**BigInt(32)))&&(b=Wi(b)),b+="n"),d+=` It must be ${c}. Received ${b}`,d},RangeError);function Wi(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 hs(l,c,A){Gt(c,"offset"),(l[c]===void 0||l[c+A]===void 0)&&An(c,l.length-(A+1))}function Ni(l,c,A,d,b,C){if(l>A||l<c){let R=typeof c=="bigint"?"n":"",J;throw c===0||c===BigInt(0)?J=`>= 0${R} and < 2${R} ** ${(C+1)*8}${R}`:J=`>= -(2${R} ** ${(C+1)*8-1}${R}) and < 2 ** ${(C+1)*8-1}${R}`,new Ut.ERR_OUT_OF_RANGE("value",J,l)}hs(d,b,C)}function Gt(l,c){if(typeof l!="number")throw new Ut.ERR_INVALID_ARG_TYPE(c,"number",l)}function An(l,c,A){throw Math.floor(l)!==l?(Gt(l,A),new Ut.ERR_OUT_OF_RANGE("offset","an integer",l)):c<0?new Ut.ERR_BUFFER_OUT_OF_BOUNDS:new Ut.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${c}`,l)}let Ts=/[^+/0-9A-Za-z-_]/g;function bs(l){if(l=l.split("=")[0],l=l.trim().replace(Ts,""),l.length<2)return"";for(;l.length%4!==0;)l=l+"=";return l}function $r(l,c){c=c||1/0;let A,d=l.length,b=null,C=[];for(let R=0;R<d;++R){if(A=l.charCodeAt(R),A>55295&&A<57344){if(!b){if(A>56319){(c-=3)>-1&&C.push(239,191,189);continue}else if(R+1===d){(c-=3)>-1&&C.push(239,191,189);continue}b=A;continue}if(A<56320){(c-=3)>-1&&C.push(239,191,189),b=A;continue}A=(b-55296<<10|A-56320)+65536}else b&&(c-=3)>-1&&C.push(239,191,189);if(b=null,A<128){if((c-=1)<0)break;C.push(A)}else if(A<2048){if((c-=2)<0)break;C.push(A>>6|192,A&63|128)}else if(A<65536){if((c-=3)<0)break;C.push(A>>12|224,A>>6&63|128,A&63|128)}else if(A<1114112){if((c-=4)<0)break;C.push(A>>18|240,A>>12&63|128,A>>6&63|128,A&63|128)}else throw new Error("Invalid code point")}return C}function Ss(l){let c=[];for(let A=0;A<l.length;++A)c.push(l.charCodeAt(A)&255);return c}function Ps(l,c){let A,d,b,C=[];for(let R=0;R<l.length&&!((c-=2)<0);++R)A=l.charCodeAt(R),d=A>>8,b=A%256,C.push(b),C.push(d);return C}function Ei(l){return s.toByteArray(bs(l))}function Nn(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 Yr(l){return l!==l}let ws=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"?Cs:l}function Cs(){throw new Error("BigInt not supported")}return Rt}var un,ji,En,_i,Rt,Zi,Yi=Bt(()=>{g();y();f();un={},ji=!1;En={},_i=!1;Rt={},Zi=!1});var vt,P,nA,rA,Ji=Bt(()=>{g();y();f();Yi();vt=$i();vt.Buffer;vt.SlowBuffer;vt.INSPECT_MAX_BYTES;vt.kMaxLength;P=vt.Buffer,nA=vt.INSPECT_MAX_BYTES,rA=vt.kMaxLength});var y=Bt(()=>{Ji()});import{bcs as Fe}from"@mysten/sui/bcs";function uo(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=uo(s.slice(a+1,s.length-o-1),[i,r]);return{typeName:u,typeArgs:m}}function Fa(s){return!s||typeof s!="object"||Array.isArray(s)?!1:"GasCoin"in s||"Input"in s||"Result"in s||"NestedResult"in s}function $(s,i){return Fa(i)?i:s.object(i)}function Le(s,i,r){if(Fa(i))return $(s,i);function a(T){let{typeName:S,typeArgs:w}=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(w[0]));case"vector":return Fe.vector(a(w[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:[Le(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 mo(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 V(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<${V(r[0])}>`;default:{let a=i.split("::");a[0]=mo(a[0]);let o=a.join("::");return r.length>0?`${o}<${r.map(u=>V(u)).join(",")}>`:o}}}function ee(s,...i){return i.length>0?`${s}<${i.join(", ")}>`:s}var he=Bt(()=>{"use strict";g();y();f()});var Tt=Jr((cp,Ma)=>{"use strict";g();y();f();he();var Ai=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return V(s.$PACKAGE_ID)}get PUBLISHED_AT(){return V(s.$PUBLISHED_AT)}get PKG_V1(){return V(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}},lo=new Ai;Ma.exports=lo});var di=Jr((hp,Ga)=>{"use strict";g();y();f();he();var li=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return V(s.$PACKAGE_ID)}get PUBLISHED_AT(){return V(s.$PUBLISHED_AT)}get PKG_V1(){return V(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}},po=new li;Ga.exports=po});var fi=Jr((vp,ja)=>{"use strict";g();y();f();he();var gi=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return V(s.$PACKAGE_ID)}get PUBLISHED_AT(){return V(s.$PUBLISHED_AT)}get PKG_V1(){return V(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}},go=new gi;ja.exports=go});g();y();f();g();y();f();g();y();f();var Un={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},uA={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},mA={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 Ro}from"tronweb";import{Web3 as vo}from"web3";g();y();f();g();y();f();g();y();f();var ce=class extends Error{errorCode;constructor(i,r){super(r),this.errorCode=i}},D=class extends ce{constructor(i){super("SdkError",i)}},ut=class extends ce{constructor(i){super("InvalidAmountError",i)}},Vt=class extends ce{constructor(i){super("AmountNotEnoughError",i)}},mt=class extends ce{constructor(i){super("InsufficientPoolLiquidityError",i)}},Te=class extends ce{constructor(i){super("JupiterError",i)}},mn=class extends ce{constructor(i){super("InvalidGasFeePaymentOptionError",i)}},Gn=class extends ce{constructor(i){super("InvalidMessengerOptionError",i)}},Ae=class extends ce{constructor(i){super("MethodNotSupportedError",i)}},ln=class extends ce{constructor(i){super("VerifyTxError",i)}},jt=class extends ce{constructor(i){super("InvalidTxError",i)}},Vn=class extends ce{constructor(i){super("ExtraGasMaxLimitExceededError",i)}},jn=class extends ce{constructor(i,r,a){super("ArgumentInvalidDecimalsError",`Argument '${i}' decimals '${r}' cannot be greater than '${a}'`)}},dn=class extends ce{constructor(i){super("TimeoutError",i)}},_n=class extends ce{constructor(i){super("NodeRpcUrlNotInitializedError",`For chain '${i}' Node RPC URL not initialized`)}},Ie=class extends ce{constructor(i){super("CCTPDoesNotSupportedError",i)}},Re=class extends ce{constructor(i){super("OFTDoesNotSupportedError",i)}},Zn=class extends ce{constructor(i){super("YieldDoesNotSupportedError",i)}},$n=class extends ce{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},Ds=(F=>(F.SDK_ERROR="SdkError",F.INVALID_AMOUNT_ERROR="InvalidAmountError",F.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",F.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",F.JUPITER_ERROR="JupiterError",F.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",F.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",F.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",F.VERIFY_TX_ERROR="VerifyTxError",F.INVALID_TX_ERROR="InvalidTxError",F.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",F.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",F.TIMEOUT_ERROR="TimeoutError",F.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",F.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",F.OFT_DOES_NOT_SUPPORTED_ERROR="OFTDoesNotSupportedError",F.YIELD_DOES_NOT_SUPPORTED_ERROR="YieldDoesNotSupportedError",F.TX_TOO_LARGE="TxTooLargeError",F))(Ds||{});g();y();f();var $e=(O=>(O.BSC="BSC",O.ETH="ETH",O.BAS="BAS",O.SOL="SOL",O.TRX="TRX",O.POL="POL",O.ARB="ARB",O.CEL="CEL",O.AVA="AVA",O.SRB="SRB",O.STLR="STLR",O.OPT="OPT",O.SUI="SUI",O.SNC="SNC",O.UNI="UNI",O.LIN="LIN",O))($e||{}),re=(u=>(u.EVM="EVM",u.SOLANA="SOLANA",u.TRX="TRX",u.SRB="SRB",u.SUI="SUI",u))(re||{});var Ws={EVM:18,SOLANA:9,TRX:6,SRB:7,SUI:9},Ns={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"},UNI:{chainSymbol:"UNI",chainId:"0x82",name:"Unichain",chainType:"EVM"},LIN:{chainSymbol:"LIN",chainId:"0xe708",name:"Linea",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"}},X=(()=>{let s={...Ns};return{addChainsProperties(i){s={...s,...i}},getChainProperty(i){let r=s[i];if(!r)throw new D(`Cannot find chain properties for ${i}`);return r},getChainsProperties(){return s},getChainDecimalsByType(i){return Ws[i]}}})();g();y();f();var Kr=(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))(Kr||{});var Ye=(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))(Ye||{});g();y();f();import{Big as Li}from"big.js";async function ge(s,i){return await s.getPoolInfoByKey({chainSymbol:i.chainSymbol,poolAddress:i.poolAddress})}function K(s){if(Li(s).lte(0))throw new ut("Amount must be greater than zero")}function z(s,i,r){let a=Li(i).toFixed(),[o,u]=a.split(".");if(u&&u.length>r)throw new jn(s,u.length,r)}async function Yn(s,i,r){return await Promise.race([s,new Promise((a,o)=>{setTimeout(()=>o(new dn(i)),r)})])}async function Hr(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 Yn(s(),i,a)}catch{if(++o>=r)throw new dn(i)}}async function Xi(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 w=u[u.length-1];if(w===void 0||!i(w))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(v=>setTimeout(v,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(w);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 Ks}from"big.js";g();y();f();var Es={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"}]},Ki=Es;g();y();f();var Us={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"}]},Hi=Us;g();y();f();var Gs={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"}]},Qi=Gs;g();y();f();import*as Xn from"@project-serum/anchor";import{PublicKey as ya}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 zi(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("lock"),Uint8Array.from(s)],i);return r}async function pn(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([s])],i);return r}async function _t(s){let i=await ft(s),[r]=await ve.findProgramAddress([i.toBuffer()],s);return r}async function qi(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 ea(s,i,r){let[a]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("other_bridge_token"),P.from([s]),i],r);return a}async function Qr(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([s])],i);return r}async function zr(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([s])],i);return r}async function ta(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("sent_message"),s],i);return r}async function qr(s,i,r){let[a]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("user_deposit"),i.toBytes(),s.toBytes()],r);return a}async function na(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("cctp_bridge"),s.toBytes()],i);return r}async function ra(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("token"),s.toBytes()],i);return r}function ia(s,i){let[r]=ve.findProgramAddressSync([be.utils.bytes.utf8.encode("lock"),i.toBuffer()],s);return r}function aa(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=[P.from(be.utils.bytes.utf8.encode(s))];for(let u of r)typeof u=="string"?a.push(P.from(be.utils.bytes.utf8.encode(u))):Array.isArray(u)?a.push(P.from(Uint8Array.from(u))):P.isBuffer(u)?a.push(P.from(Uint8Array.from(u))):a.push(P.from(Uint8Array.from(u.toBuffer())));return ve.findProgramAddressSync(a,i)[0]}g();y();f();import{AnchorProvider as Vs}from"@project-serum/anchor";import{Connection as js,PublicKey as _s}from"@solana/web3.js";function yt(s,i){let r=new js(s,"confirmed"),a=new _s(i);return new Vs(r,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}g();y();f();import{PublicKey as Zs}from"@solana/web3.js";import{Address as $s}from"@stellar/stellar-sdk";import{Big as Ne}from"big.js";import pa from"randombytes";import{utils as la}from"tronweb";g();y();f();import{Big as E}from"big.js";import ei from"bn.js";g();y();f();function ti(s,i){return E(100).minus(E(100).times(i).div(s)).toNumber()}function xt(s,i){return Je(s,i,3).round(0,E.roundDown)}function We(s,i){return Je(s,3,i)}function Je(s,i,r){let a=E(r).minus(i).toNumber();return E(s).times(gn(a))}function gn(s){return E(10).pow(s)}function Z(s,i){return E(s).times(gn(i))}function j(s,i){let r=E(s);return r.eq(0)?E(0):E(r).div(gn(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 fn(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=We(E(a.tokenBalance).minus(m),r),h=E(p).times(i);return E(p).minus(h).round(0,E.roundDown).toFixed()}function sa(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 oa(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=We(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 ca(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 Aa(s,i,r,a){let o=new ei(s),u=new ei(r),m=new ei(i);return o.mul(u).shrn(a).sub(m).toString()}function ua(s){return E(s).gt(0)?`${Number(E(s).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function ma(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(),w=E(Math.cbrt(+u.plus(S).toFixed())),k=E(Math.cbrt(+u.minus(S).toFixed()));return w.plus(k).toFixed()}function lt(s,i,r){let a;switch(i){case"EVM":{a=da(s);break}case"SOLANA":{a=new Zs(s).toBuffer();break}case"TRX":{a=Ys(s);break}case"SRB":{a=new $s(s).toBuffer();break}case"SUI":{a=da(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 ga(s){return P.from(s.replace(/^0x/i,""),"hex")}function da(s){let r=ga(s);return P.concat([P.alloc(32-r.length,0),r],32)}function Ys(s){let i=yn(s),r=ga(i);return Js(r,32)}function yn(s){let i=la.crypto.decodeBase58Address(s);return i?la.bytes.byteArray2hexStr(i).replace(/^41/,"0x"):""}function Js(s,i){if(s.length>=i)return s;let r=P.alloc(i,0);return s.copy(r,i-s.length),r}function Jn(){return pa(32)}function st(){let s=pa(32).readBigInt64BE();return s<0?s*-1n:s}function ot(s,i){let r={},a=i.sourceToken;if(r.amount=Z(i.amount,a.decimals).toFixed(),r.contractAddress=a.bridgeAddress,r.fromAccountAddress=i.fromAccountAddress,s==="SUI"){if(!a.originTokenAddress)throw new D("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 D("SUI destinationToken must contain 'originTokenAddress'");r.toTokenAddress=i.destinationToken.originTokenAddress}else r.toTokenAddress=lt(i.destinationToken.tokenAddress,s,s);return r.minimumReceiveAmount=i.minimumReceiveAmount?Z(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=X.getChainProperty(i.destinationToken.chainSymbol).chainType;if(s==="SUI"){if(!i.sourceToken.originTokenAddress)throw new D("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=Z(i.amount,u.decimals).toFixed();let{fee:m,feeFormat:p}=i;if(!m){let w=(await ni(i.sourceToken,a.toChainId,a.messenger,r))[a.gasFeePaymentMethod];if(!w)throw new mn;m=w.int,p="int"}if(p=="float")switch(a.gasFeePaymentMethod){case"native":a.fee=Z(m,X.getChainDecimalsByType(u.chainType)).toFixed(0);break;case"stablecoin":a.fee=Z(m,u.decimals).toFixed(0);break}else a.fee=m;let{extraGas:h,extraGasFormat:T}=i;if(h&&+h>0){let S=await ri(u,i.destinationToken,a.messenger,r),w,k;switch(a.gasFeePaymentMethod){case"native":w=X.getChainDecimalsByType(u.chainType),k=Ne(S.exchangeRate);break;case"stablecoin":w=u.decimals,k=Ne(S.exchangeRate).div(S.sourceNativeTokenPrice);break}switch(T??"int"){case"float":{a.extraGas=Z(h,w).toFixed(0);let v=k.mul(h);a.extraGasDest=Z(v,X.getChainDecimalsByType(i.destinationToken.chainType)).toFixed(0,Ne.roundDown);break}case"int":{a.extraGas=h;let v=j(a.extraGas,X.getChainDecimalsByType(u.chainType)),M=k.mul(v);a.extraGasDest=Z(M,X.getChainDecimalsByType(i.destinationToken.chainType)).toFixed(0,Ne.roundDown);break}}Xs(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"&&Ls(a.amount,u.decimals,a.fee,a.extraGas),a}function Ls(s,i,r,a){let o=Ne(s).minus(r).minus(a??0);if(o.lte(0))throw new Vt(`Amount not enough to pay fee, ${j(Ne(o).minus(1).neg(),i).toFixed()} stables is missing`)}async function ni(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,X.getChainDecimalsByType(s.chainType)).toFixed()},adminFeeShareWithExtras:o.adminFeeShareWithExtras};if(o.sourceNativeTokenPrice){let m=Je(new Ne(o.fee).mul(o.sourceNativeTokenPrice),X.getChainDecimalsByType(s.chainType),s.decimals).toFixed(0,Ne.roundUp);u.stablecoin={int:m,float:j(m,s.decimals).toFixed()}}return u}function Xs(s,i,r){let a=r.extraGasMax[i];if(!a)throw new mn(`Impossible to pay extra gas by '${i}' payment method`);let o=a.int;if(Ne(s).gt(o))throw new Vn(`Extra gas ${s} in int format, exceeded limit ${o} for '${i}' payment method`)}async function ri(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,X.getChainDecimalsByType(i.chainType)).toFixed(),h=Ne(p).div(u.exchangeRate).toFixed(X.getChainDecimalsByType(s.chainType),Ne.roundDown),T=Z(h,X.getChainDecimalsByType(s.chainType)).toFixed(0);if(o.native={int:T,float:h},u.sourceNativeTokenPrice){let S=Ne(h).mul(u.sourceNativeTokenPrice).toFixed(s.decimals,Ne.roundDown);o.stablecoin={int:Z(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,X.getChainDecimalsByType(i.chainType)).toFixed()},transfer:{int:i.txCostAmount.transfer,float:j(i.txCostAmount.transfer,X.getChainDecimalsByType(i.chainType)).toFixed()}},exchangeRate:u.exchangeRate,sourceNativeTokenPrice:u.sourceNativeTokenPrice}}function fa(s){return s.sourceToken.chainSymbol!==s.destinationToken.chainSymbol}async function Kn(s,i,r,a){let o,u=new ya(i),m=new ya(r),p=await Qe(u,m),h=yt(a,i);Xn.setProvider(h);let T=await Xn.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 w=S.value[0];if(!w?.pubkey)throw new D("First token account or its public key is undefined");o=lt(w.pubkey.toBase58(),"SOLANA",s)}else throw new D("Associated account has wrong owner")}return o}g();y();f();g();y();f();var Ee=class{};var hn=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,w=this.getBridgeContract(o).methods.swap(a,m,h,p,T);return Promise.resolve({from:u,to:o,data:w.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:w,fee:k,gasFeePaymentMethod:v,extraGas:M,extraGasDest:x}=a,O="0x"+Jn().toString("hex"),N,F,W=k;switch(M&&(W=Ks(W).plus(M).toFixed()),w){case 3:case 4:{let U=await this.buildRawTransactionCctpSend(r,a,W);N=U.sendMethod,F=U.value;break}case 5:{let U=this.buildRawTransactionOftSend(r,a,W,x);N=U.sendMethod,F=U.value;break}case 1:case 2:{let U=this.getBridgeContract(u);v==="stablecoin"?(N=U.methods.swapAndBridge(p,o,T,h,S,O,w,W),F="0"):(N=U.methods.swapAndBridge(p,o,T,h,S,O,w,0),F=W)}break}return Promise.resolve({from:m,to:u,value:F,data:N.encodeABI()})}async buildRawTransactionCctpSend(r,a,o){let{amount:u,contractAddress:m,toChainId:p,toAccountAddress:h,gasFeePaymentMethod:T}=a,S=this.getCctpBridgeContract(m),w,k;if(r.destinationToken.chainType==="SOLANA"){let v=await Kn(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));T==="stablecoin"?(w=S.methods.bridgeWithWalletAddress(u,v,h,p,o),k="0"):(w=S.methods.bridgeWithWalletAddress(u,v,h,p,0),k=o)}else T==="stablecoin"?(w=S.methods.bridge(u,h,p,o),k="0"):(w=S.methods.bridge(u,h,p,0),k=o);return{sendMethod:w,value:k}}buildRawTransactionOftSend(r,a,o,u){let{amount:m,contractAddress:p,toChainId:h,toAccountAddress:T,gasFeePaymentMethod:S}=a,w=this.getOftBridgeContract(p),k,v;return S==="stablecoin"?(k=w.methods.bridge(r.sourceToken.tokenAddress,m,T,h,o,u??"0","10"),v="0"):(k=w.methods.bridge(r.sourceToken.tokenAddress,m,T,h,0,u??"0","10"),v=o),{sendMethod:k,value:v}}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(Ki.abi,r)}getCctpBridgeContract(r){return new this.web3.eth.Contract(Hi.abi,r)}getOftBridgeContract(r){return new this.web3.eth.Contract(Qi.abi,r)}};g();y();f();var Hn=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=Tn(o.token,o.messenger);return this.tokenService.buildRawTransactionApprove({...o,spender:u},a)}async send(i,r){return K(i.amount),z("amount",i.amount,i.sourceToken.decimals),fa(i)?Qn(i.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSend(i):Qn(i.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSwap(i)}};g();y();f();import{BN as Jt,Program as si,Spl as ao,web3 as ht}from"@project-serum/anchor";import{Keypair as ka,PublicKey as ae,SystemProgram as so}from"@solana/web3.js";import{Big as et}from"big.js";g();y();f();var bn={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 ha={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 Hs}from"@project-serum/anchor";import Qs from"big.js";import{Web3 as zn}from"web3";async function $t(s,i){return await Hs.token(i).account.token.fetch(s)}async function Ta(s,i,r){let a=await i.account.pool.fetch(r),o=a.decimals,u=Qs(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 ba(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=zn.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 D("message cannot be undefined");let S=zn.utils.keccak256(P.from(T.replace("0x",""),"hex")),w=P.from(S.replace("0x",""),"hex");w[0]=a,w[1]=o;let k=zn.utils.encodePacked({t:"bytes32",v:"0x"+w.toString("hex")},{t:"bytes32",v:h});if(!k)throw new jt("messageWithSigner cannot be undefined");let v=zn.utils.keccak256(P.from(k.replace("0x",""),"hex")),M=P.from(v.replace("0x",""),"hex");return M[0]=w[0],M[1]=w[1],M}g();y();f();import{ComputeBudgetInstruction as Pa,ComputeBudgetProgram as qn,Connection as wa,TransactionMessage as zs}from"@solana/web3.js";import{Big as qs}from"big.js";g();y();f();import{AddressLookupTableAccount as Sa}from"@solana/web3.js";async function Mt(s,i){return await Promise.all(s.message.addressTableLookups.map(async r=>new Sa({key:r.accountKey,state:Sa.deserialize(await i.getAccountInfo(r.accountKey).then(a=>{if(!a)throw new D("Cannot get AccountInfo");return a.data}))})))}g();y();f();g();y();f();var ii="AUTO";async function Yt(s,i,r){let a=new wa(r,"confirmed"),o=(await a.simulateTransaction(s)).value.unitsConsumed;await Ba(s.instructions,o,i,a)}async function Ca(s,i,r){let a=new wa(r,"confirmed"),o=await Mt(s,a),u=zs.decompile(s.message,{addressLookupTableAccounts:o});if(s.serialize().length>1232)throw new $n;await Ba(u.instructions,769230,i,a),s.message=u.compileToV0Message(o)}async function Ba(s,i,r,a){if(i>0){let o=eo(i,s);if(r?.solana){let u=r.solana;if(u===ii)await ai(s,a);else if("pricePerUnitInMicroLamports"in u)await ai(s,a,u.pricePerUnitInMicroLamports);else{let m=qs(u.extraFeeInLamports).div(o).mul(gn(6)).toFixed(0);await ai(s,a,m)}}}}function eo(s,i){let r=i.findIndex(u=>u.programId.equals(qn.programId)&&Pa.decodeInstructionType(u)==="SetComputeUnitLimit"),a=Number((s*1.3).toFixed(0)),o=qn.setComputeUnitLimit({units:a});return r>=0?i[r]=o:i.push(o),a.toString()}async function ai(s,i,r){let a=s.findIndex(m=>m.programId.equals(qn.programId)&&Pa.decodeInstructionType(m)==="SetComputeUnitPrice"),o=BigInt(r||await to(i)),u=qn.setComputeUnitPrice({microLamports:o});return a>=0?s[a]=u:s.push(u),o.toString()}async function to(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 no}from"@solana/spl-token";import{Connection as ro,TransactionMessage as Ia,VersionedTransaction as io}from"@solana/web3.js";import Ra,{AxiosError as va}from"axios";var er=class{connection;jupiterUrl;apiKeyHeader;maxAccounts;constructor(i,r){this.connection=new ro(i),this.jupiterUrl=r.jupiterUrl.replace(/\/$/,""),this.apiKeyHeader=r.jupiterApiKeyHeader,this.maxAccounts=r.jupiterMaxAccounts}async getJupiterSwapTx(i,r,a,o){let u;try{let w=o?"ExactOut":"ExactIn",k=`${this.jupiterUrl}/quote?inputMint=${r}&outputMint=${no.toString()}&amount=${a}&swapMode=${w}&slippageBps=100&onlyDirectRoutes=true`;this.maxAccounts&&(k+=`&maxAccounts=${this.maxAccounts}`),u=await Ra.get(k,{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(w){throw w instanceof va&&w.response&&w.response.data&&w.response.data.error?new Te(w.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 Ra.post(`${this.jupiterUrl}/swap`,{quoteResponse:u.data,userPublicKey:i,wrapAndUnwrapSol:!0},{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(w){throw w instanceof va&&w.response&&w.response.data&&w.response.data.error?new Te(w.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=P.from(h,"base64"),S=io.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=Ia.decompile(i.message,{addressLookupTableAccounts:a}),m=Ia.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 D("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 oi=1e6,xa=1.1,tr=class extends Ee{constructor(r,a,o){super();this.solanaRpcUrl=r;this.params=a;this.api=o;this.jupiterService=new er(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:w,minimumReceiveAmount:k}=r,v=m,M=h,x=T,O=S,N=o,F=w,W=new ae(v),U=yt(this.solanaRpcUrl,W.toString()),_=new si(bn,M,U),L=await _t(_.programId),we=await ft(_.programId),le=new ae(x),Ve=await Zt(le,_.programId),je=new ae(a),Ke=await Qe(W,le),Me=new ae(F),ye=new ae(O),Ce=await Zt(ye,_.programId),Oe=new ae(N),Be=await Qe(Me,ye),_e=[ht.ComputeBudgetProgram.setComputeUnitLimit({units:oi})];try{await $t(Be,U)}catch{let Wn=await ao.associatedToken(U).methods.create().accounts({mint:ye,owner:Me,associatedAccount:Be}).instruction();_e.push(Wn)}let Ze=await _.methods.swap(new Jt(p),new Jt(k||0)).accounts({payer:W,config:we,bridgeAuthority:L,user:W,sendBridgeToken:Ve,sendMint:le,sendPool:je,sendUserToken:Ke,receiveBridgeToken:Ce,receiveMint:ye,receivePool:Oe,receiveUserToken:Be}).preInstructions(_e).transaction(),De=U.connection;return Ze.recentBlockhash=(await De.getLatestBlockhash()).blockhash,Ze.feePayer=W,await Yt(Ze,u,this.solanaRpcUrl),await this.convertToVersionedTransaction(Ze,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:w}=await this.processJup(o,r,!1);m=S,o={...o,...w}}catch(S){throw S instanceof ce?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:w}=await this.buildSwapAndBridgeWormholeTransaction(T);p=S,h=w;break}case 3:case 4:{let T=await this.prepareSwapAndBridgeCctpData(o),{transaction:S,messageSentEventDataKeypair:w}=await this.buildSwapAndBridgeCctpTransaction(r.destinationToken.chainSymbol,T);p=S,h=w;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 Ca(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(xa));let{tx:T,amountIn:S}=await this.jupiterService.getJupiterSwapTx(a.fromAccountAddress,a.sourceToken.tokenAddress,h.toFixed(0),o),w;if(o){if(!S)throw new Te("Cannot get inAmount");w=et(r.amount).minus(et(S).mul(xa)).toFixed(0)}else w=et(r.amount).minus(h).toFixed(0);if(et(w).lte(0))throw new Vt(`Amount not enough to pay fee, ${j(et(w).minus(1).neg(),a.sourceToken.decimals).toFixed()} stables is missing`);return{tx:T,solTxSendUpdatedParams:{amount:w,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(X.getChainDecimalsByType("SOLANA")-r.decimals)).toFixed(0),m;return a.extraGas&&(m=et(a.extraGas).div(o).mul(et(10).pow(X.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:w,extraGas:k}=r,v=p,M=m,x=h,O=S,N=T,F=o,W=u,U=yt(this.solanaRpcUrl,M),_=new si(bn,F,U),L=Array.from(Jn()),we=new ae(w),le=await Ta(a,_,we),Ve=await zi(L,_.programId),je=await _t(_.programId),Ke=await Qe(new ae(M),new ae(v)),Me=await Zt(new ae(v),_.programId),ye=await Qr(x,_.programId),Ce=await ea(x,P.from(O),_.programId),Oe=await ft(_.programId),Be=await _.account.config.fetch(Oe),_e=await pn(x,Be.gasOracleProgramId),Ze=await pn(W,Be.gasOracleProgramId),De=ba({amount:le,recipient:P.from(N),nonce:P.from(L),receiveToken:P.from(O),destinationChainId:x,sourceChainId:W,chainBridge:(await _t(_.programId)).toBuffer()}),G={};return G.bridge=_,G.amount=new Jt(a),G.vusdAmount=new Jt(le),G.nonce=L,G.recipient=Array.from(N),G.receiveToken=Array.from(O),G.poolAccount=we,G.lockAccount=Ve,G.bridgeAuthority=je,G.userToken=Ke,G.bridgeTokenAccount=Me,G.chainBridgeAccount=ye,G.otherBridgeTokenAccount=Ce,G.userAccount=new ae(M),G.destinationChainId=x,G.mint=new ae(v),G.config=Oe,G.configAccountInfo=Be,G.gasPrice=_e,G.thisGasPrice=Ze,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:w,bridgeTokenAccount:k,chainBridgeAccount:v,otherBridgeTokenAccount:M,userAccount:x,destinationChainId:O,mint:N,config:F,configAccountInfo:W,gasPrice:U,thisGasPrice:_,message:L,extraGasInstruction:we}=r,le=W.allbridgeMessengerProgramId,Ve=await zr(O,le),je=await ft(le),Ke=await ta(L,le),Me=[];we&&Me.push(we);let ye=await a.methods.swapAndBridge({vusdAmount:o,nonce:u,destinationChainId:O,recipient:m,receiveToken:p}).accounts({mint:N,user:x,config:F,lock:T,pool:h,gasPrice:U,thisGasPrice:_,bridgeAuthority:S,userToken:w,bridgeToken:k,chainBridge:v,messenger:le,messengerGasUsage:Ve,messengerConfig:je,sentMessageAccount:Ke,otherBridgeToken:M}).preInstructions([ht.ComputeBudgetProgram.setComputeUnitLimit({units:oi})]).postInstructions(Me).transaction(),Ce=yt(this.solanaRpcUrl,x.toString()).connection;return ye.recentBlockhash=(await Ce.getLatestBlockhash()).blockhash,ye.feePayer=x,await this.convertToVersionedTransaction(ye,Ce)}async convertToVersionedTransaction(r,a){let o=await a.getAddressLookupTable(new ae(this.params.solanaLookUpTable)).then(m=>m.value);if(!o)throw new D("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:w,bridgeTokenAccount:k,chainBridgeAccount:v,otherBridgeTokenAccount:M,userAccount:x,destinationChainId:O,mint:N,config:F,configAccountInfo:W,gasPrice:U,thisGasPrice:_,message:L,extraGasInstruction:we}=r,le=this.params.wormholeMessengerProgramId,[Ve]=ae.findProgramAddressSync([P.from("Bridge")],new ae(le)),[je]=ae.findProgramAddressSync([P.from("fee_collector")],new ae(le)),[Ke]=ae.findProgramAddressSync([P.from("Sequence"),S.toBuffer()],new ae(le)),Me=await zr(O,W.wormholeMessengerProgramId),ye=await ft(W.wormholeMessengerProgramId),Ce=ka.generate(),Oe=yt(this.solanaRpcUrl,x.toString()),Be=await Oe.connection.getAccountInfo(Ve);if(Be==null)throw new D("Cannot fetch wormhole bridge account info");let _e=new Jt(Be.data.slice(16,24),"le").toString(),Ze=so.transfer({fromPubkey:x,toPubkey:je,lamports:+_e}),De=[];we&&De.push(we);let G={mint:N,user:x,config:F,lock:T,pool:h,gasPrice:U,thisGasPrice:_,bridgeAuthority:S,userToken:w,bridgeToken:k,chainBridge:v,otherBridgeToken:M,messengerGasUsage:Me,wormholeProgram:le,bridge:Ve,message:Ce.publicKey,wormholeMessenger:W.wormholeMessengerProgramId,sequence:Ke,feeCollector:je,wormholeMessengerConfig:ye,clock:ht.SYSVAR_CLOCK_PUBKEY},pe=await a.methods.swapAndBridgeWormhole({vusdAmount:o,nonce:u,destinationChainId:O,recipient:m,receiveToken:p}).accounts(G).preInstructions([ht.ComputeBudgetProgram.setComputeUnitLimit({units:oi}),Ze]).postInstructions(De).signers([Ce]).transaction();return pe.recentBlockhash=(await Oe.connection.getLatestBlockhash()).blockhash,pe.feePayer=x,{transaction:await this.convertToVersionedTransaction(pe,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,w=a;if(!w)throw new Ie("Such route does not support CCTP protocol");let k=4,v=u,M=T,x=h,O=yt(this.solanaRpcUrl,v),N=new si(ha,w,O),F=new ae(m),W=await na(F,N.programId),U=new ae(v),_=await N.account.cctpBridge.fetch(W),L={};return L.cctpBridge=N,L.cctpBridgeAccount=W,L.cctpAddressAccount=new ae(w),L.amount=new Jt(o),L.recipient=Array.from(x),L.receiveToken=Array.from(M),L.userToken=await Qe(U,F),L.bridgeAuthority=await qi(W,N.programId),L.bridgeTokenAccount=await ra(F,N.programId),L.chainBridgeAccount=await Qr(p,N.programId),L.userAccount=U,L.destinationChainId=p,L.mint=F,L.gasPrice=await pn(p,_.gasOracleProgramId),L.thisGasPrice=await pn(k,_.gasOracleProgramId),L.provider=O,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:w,chainBridgeAccount:k,userAccount:v,destinationChainId:M,mint:x,gasPrice:O,thisGasPrice:N,extraGasInstruction:F,provider:W}=a,U=this.params.cctpParams.cctpDomains[r],_=this.params.cctpParams.cctpTransmitterProgramId,L=this.params.cctpParams.cctpTokenMessengerMinter;if(U==null||!_||!L)throw new D("CCTP is not configured");let we=new ae(_),le=new ae(L),{messageTransmitterAccount:Ve,tokenMessenger:je,tokenMessengerEventAuthority:Ke,tokenMinter:Me,localToken:ye,remoteTokenMessengerKey:Ce,authorityPda:Oe}=aa(U,x,we,le),Be=[];F&&Be.push(F);let _e=ka.generate(),Ze=ia(o.programId,_e.publicKey),De=await o.methods.bridge({amount:m,destinationChainId:M,recipient:p,receiveToken:h}).accounts({mint:x,user:v,cctpBridge:u,messageSentEventData:_e.publicKey,lock:Ze,cctpMessenger:le,messageTransmitterProgram:we,messageTransmitterAccount:Ve,tokenMessenger:je,tokenMinter:Me,localToken:ye,remoteTokenMessengerKey:Ce,authorityPda:Oe,eventAuthority:Ke,bridgeToken:w,gasPrice:O,thisGasPrice:N,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=v,{transaction:await this.convertToVersionedTransaction(De,G),messageSentEventDataKeypair:_e}}send(r){throw new Ae}};g();y();f();import{Address as ci,contract as Ax}from"@stellar/stellar-sdk";import{Big as Ao}from"big.js";g();y();f();import{contract as n}from"@stellar/stellar-sdk";var oo=n.Spec,co=n.Client;var Sn=class extends co{constructor(r){super(new oo(["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 nr=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:w,extraGas:k}=r,v=S;k&&(v=Ao(v).plus(k).toFixed());let M=this.getContract(Sn,o,u),x;return w==="stablecoin"?x=await M.swap_and_bridge({sender:u,token:ci.contract(P.from(m)).toString(),amount:BigInt(a),recipient:P.from(h),destination_chain_id:+p,receive_token:P.from(T),nonce:st(),gas_amount:BigInt(0),fee_token_amount:BigInt(v)}):x=await M.swap_and_bridge({sender:u,token:ci.contract(P.from(m)).toString(),amount:BigInt(a),recipient:P.from(h),destination_chain_id:+p,receive_token:P.from(T),nonce:st(),gas_amount:BigInt(v),fee_token_amount:BigInt(0)}),x.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(Sn,o,u).swap({sender:u,amount:BigInt(a),token:ci.contract(P.from(m)).toBuffer(),receive_token:P.from(h),recipient:p,receive_amount_min:BigInt(T)})).toXDR()}send(r){throw new Ae}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 wo}from"@mysten/sui/client";import{coinWithBalance as me,Transaction as bi}from"@mysten/sui/transactions";import{SUI_CLOCK_OBJECT_ID as Ya}from"@mysten/sui/utils";import{Big as Si}from"big.js";var Pi=He(Tt());g();y();f();var dt=He(Tt());he();function Oa(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap`,typeArguments:i,arguments:[$(s,r.bridge),$(s,r.coin),Le(s,r.receiveAmountMin,"u64")]})}function Da(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::deposit`,typeArguments:[i],arguments:[$(s,r.bridge),$(s,r.userDeposit),$(s,r.coin)]})}function Wa(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::withdraw`,typeArguments:[i],arguments:[$(s,r.bridge),$(s,r.userDeposit),Le(s,r.amountLp,"u64")]})}function Na(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::claim_reward`,typeArguments:[i],arguments:[$(s,r.bridge),$(s,r.userDeposit)]})}function Ea(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::pool`,typeArguments:[i],arguments:[$(s,r)]})}function ui(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap_and_bridge_wormhole`,typeArguments:[i],arguments:[$(s,r.bridge),$(s,r.messenger),$(s,r.wormholeState),$(s,r.theClock),$(s,r.gasOracle),$(s,r.amount),$(s,r.recipient),Le(s,r.destinationChainId,"u8"),$(s,r.receiveToken),Le(s,r.nonce,"u256"),$(s,r.feeSuiCoin),$(s,r.feeTokenCoin)]})}function Ua(s,i){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::new_user_deposit`,typeArguments:[i],arguments:[]})}function mi(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap_and_bridge`,typeArguments:[i],arguments:[$(s,r.bridge),$(s,r.messenger),$(s,r.gasOracle),$(s,r.amount),$(s,r.recipient),Le(s,r.destinationChainId,"u8"),$(s,r.receiveToken),Le(s,r.nonce,"u256"),$(s,r.feeSuiCoin),$(s,r.feeTokenCoin)]})}var Ja=He(di());g();y();f();var Va=He(di());he();function pi(s,i,r){return s.moveCall({target:`${Va.PUBLISHED_AT}::cctp_bridge_interface::bridge`,typeArguments:[i],arguments:[$(s,r.cctpBridge),$(s,r.gasOracle),$(s,r.tokenMessengerMinterState),$(s,r.messageTransmitterState),$(s,r.treasury),$(s,r.denyList),$(s,r.amount),$(s,r.feeSuiCoin),$(s,r.feeTokenCoin),Le(s,r.destinationChainId,"u8"),$(s,r.recipient),$(s,r.recipientWalletAddress)]})}var La=He(fi());g();y();f();var $a=He(fi());g();y();f();g();y();f();he();import{bcs as bt}from"@mysten/sui/bcs";import{fromHEX as yo,toHEX as ho}from"@mysten/sui/utils";g();y();f();import{bcs as fo}from"@mysten/sui/bcs";he();var yi=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=ee(this.$typeName,...i),this.$typeArgs=i,this.elements=r}static reified(i){return{typeName:s.$typeName,fullTypeName:ee(s.$typeName,Y(i)),typeArgs:[Y(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(Pn(i)),fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),new:r=>new s([Y(i)],r),kind:"VectorClassReified"}}static get r(){return s.reified}static get bcs(){return fo.vector}static fromFields(i,r){return s.reified(i).new(r.map(a=>q(i,a)))}static fromFieldsWithTypes(i,r){return s.reified(i).new(r.map(a=>H(i,a)))}static fromBcs(i,r){return s.fromFields(i,s.bcs(Pn(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=>Q(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 yi.r(s)}function ue(s){return typeof s=="string"?{phantomType:s,kind:"PhantomReified"}:{phantomType:s.fullTypeName,kind:"PhantomReified"}}var To=bt.bytes(32).transform({input:s=>yo(s),output:s=>ho(s)});function Pn(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 To;default:return s.bcs}}function Y(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 q(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 H(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:H(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(V(i[a])!==V(Y(r[a])))throw new Error(`provided item has mismatching type argments ${s} (expected ${Y(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 Q(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:Q(s.reifiedTypeArgs[0],i);default:return s.fromJSONField(i)}}he();g();y();f();var rr="0x1";import{bcs as fg}from"@mysten/sui/bcs";import{fromB64 as hg}from"@mysten/sui/utils";g();y();f();he();import{bcs as hi}from"@mysten/sui/bcs";import{fromB64 as bo}from"@mysten/sui/utils";function ir(s){return s=V(s),s===`${rr}::string::String`}var ar=class s{__StructClass=!0;static get $typeName(){return`${rr}::string::String`}static $numTypeParams=0;static $isPhantom=[];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;bytes;constructor(i,r){this.$fullTypeName=ee(s.$typeName,...i),this.$typeArgs=i,this.bytes=r.bytes}static reified(){return{typeName:s.$typeName,fullTypeName:ee(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 ue(s.reified())}static get p(){return s.phantom()}static get bcs(){return hi.struct("String",{bytes:hi.vector(hi.u8())})}static fromFields(i){return s.reified().new({bytes:q(Lt("u8"),i.bytes)})}static fromFieldsWithTypes(i){if(!ir(i.type))throw new Error("not a String type");return s.reified().new({bytes:H(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:Q(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(!ir(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"||!ir(i.bcs.type))throw new Error("object at is not a String object");return s.fromBcs(bo(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"||!ir(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 Ti}from"@mysten/sui/bcs";import{fromB64 as Za,fromHEX as So,toHEX as Po}from"@mysten/sui/utils";function sr(s){return s=V(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=ee(s.$typeName,...i),this.$typeArgs=i,this.bytes=r.bytes}static reified(){return{typeName:s.$typeName,fullTypeName:ee(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 ue(s.reified())}static get p(){return s.phantom()}static get bcs(){return Ti.struct("ID",{bytes:Ti.bytes(32).transform({input:i=>So(i),output:i=>Po(i)})})}static fromFields(i){return s.reified().new({bytes:q("address",i.bytes)})}static fromFieldsWithTypes(i){if(!sr(i.type))throw new Error("not a ID type");return s.reified().new({bytes:H("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:Q("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(!sr(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"||!sr(i.bcs.type))throw new Error("object at is not a ID object");return s.fromBcs(Za(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"||!sr(a.data.bcs.type))throw new Error(`object at id ${r} is not a ID object`);return s.fromSuiObjectData(a.data)}};function or(s){return s=V(s),s===`${St}::object::UID`}var Xe=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=ee(s.$typeName,...i),this.$typeArgs=i,this.id=r.id}static reified(){return{typeName:s.$typeName,fullTypeName:ee(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 ue(s.reified())}static get p(){return s.phantom()}static get bcs(){return Ti.struct("UID",{id:Dt.bcs})}static fromFields(i){return s.reified().new({id:q(Dt.reified(),i.id)})}static fromFieldsWithTypes(i){if(!or(i.type))throw new Error("not a UID type");return s.reified().new({id:H(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:Q(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(!or(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"||!or(i.bcs.type))throw new Error("object at is not a UID object");return s.fromBcs(Za(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"||!or(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:`${$a.PUBLISHED_AT}::bytes32::from_hex`,arguments:[Le(s,i,`${ar.$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 wo({url:r.getNodeRpcUrl(this.chainSymbol)})}chainType="SUI";chainSymbol="SUI";client;send(){throw new D("Method send not implemented.")}async buildRawTransactionSwap(r){let a=r.sourceToken.suiAddresses;if(!a)throw new D("SUI token must contain 'suiAddresses'");(0,Pi.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 bi;T.setSender(u);let S={bridge:a.bridgeObjectAddress,coin:me({balance:BigInt(o),type:m}),receiveAmountMin:BigInt(h)},w=Oa(T,[m,p],S),k=await At(v=>this.client.getCoins({owner:r.toAccountAddress,coinType:p,cursor:v}));return k.length===0||!k[0]?T.transferObjects([w],r.toAccountAddress):T.mergeCoins(k[0].coinObjectId,[w]),await T.toJSON({client:this.client})}async buildRawTransactionSendFromCustomTx(r,a,o){let u=bi.from(r);return this.buildRawTransactionSendFromTx(o,u,a)}async buildRawTransactionSend(r){return this.buildRawTransactionSendFromTx(r,new bi)}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 D("SUI token must contain 'suiAddresses'");switch((0,Pi.setAddress)(p.bridgeAddress,p.bridgeAddressOrigin),(0,La.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:w,fee:k,gasFeePaymentMethod:v,extraGas:M}=r,x=k;if(M&&(x=Si(x).plus(M).toFixed()),o.setSender(p),v==="stablecoin"){let O=BigInt(m)-BigInt(x),N,F;if(u){let[U]=o.splitCoins(u,[x]);N=u,F=U}else N=me({balance:O,type:h}),F=me({balance:BigInt(x),type:h});let W={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:N,destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(w)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:F,feeSuiCoin:me({balance:BigInt(0),useGasCoin:!1})};mi(o,h,W)}else{let O=x==="0"?me({balance:BigInt(x),useGasCoin:!1}):me({balance:BigInt(x)}),N={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:u??me({balance:BigInt(m),type:h}),destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(w)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:me({balance:BigInt(0),type:h}),feeSuiCoin:O};mi(o,h,N)}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:w,fee:k,gasFeePaymentMethod:v,extraGas:M}=r,x=k;if(M&&(x=Si(x).plus(M).toFixed()),o.setSender(p),v==="stablecoin"){let O=BigInt(m)-BigInt(x),N,F;if(u){let[U]=o.splitCoins(u,[x]);N=u,F=U}else N=me({balance:O,type:h}),F=me({balance:BigInt(x),type:h});let W={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:Ya,amount:N,destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(w)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:F,feeSuiCoin:me({balance:BigInt(0),useGasCoin:!1})};ui(o,h,W)}else{let O=x==="0"?me({balance:BigInt(x),useGasCoin:!1}):me({balance:BigInt(x)}),N={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:Ya,amount:u??me({balance:BigInt(m),type:h}),destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(w)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:me({balance:BigInt(0),type:h}),feeSuiCoin:O};ui(o,h,N)}return await o.toJSON({client:this.client})}async buildRawTransactionCctpSend(r,a,o,u,m){let{amount:p,fromAccountAddress:h,fromTokenAddress:T,toChainId:S,toAccountAddress:w,fee:k,gasFeePaymentMethod:v,extraGas:M}=a;(0,Ja.setAddress)(o.cctpAddress,o.cctpAddressOrigin);let x=k;M&&(x=Si(x).plus(M).toFixed()),u.setSender(h);let O=nt(u,ze(w)),N;if(r.destinationToken.chainType==="SOLANA"){let F=await Kn(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));N=nt(u,ze(F))}else N=O;if(v==="stablecoin"){let F=BigInt(p)-BigInt(x),W,U;if(m){let[L]=u.splitCoins(m,[x]);W=m,U=L}else W=me({balance:F,type:T}),U=me({balance:BigInt(x),type:T});let _={cctpBridge:o.cctpObjectAddress,tokenMessengerMinterState:o.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:o.cctpMessageTransmitterStateObjectAddress,treasury:o.cctpTreasuryObjectAddress,denyList:o.cctpDenyListObjectAddress,amount:W,destinationChainId:S,recipient:N,recipientWalletAddress:O,gasOracle:o.gasOracleObjectAddress,feeTokenCoin:U,feeSuiCoin:me({balance:BigInt(0),useGasCoin:!1})};pi(u,T,_)}else{let F=x==="0"?me({balance:BigInt(x),useGasCoin:!1}):me({balance:BigInt(x)}),W={cctpBridge:o.cctpObjectAddress,tokenMessengerMinterState:o.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:o.cctpMessageTransmitterStateObjectAddress,treasury:o.cctpTreasuryObjectAddress,denyList:o.cctpDenyListObjectAddress,amount:m??me({balance:BigInt(p),type:T}),destinationChainId:S,recipient:N,recipientWalletAddress:O,gasOracle:o.gasOracleObjectAddress,feeTokenCoin:me({balance:BigInt(0),type:T}),feeSuiCoin:F};pi(u,T,W)}return await u.toJSON({client:this.client})}};g();y();f();import{Big as Io}from"big.js";g();y();f();g();y();f();import Co from"bn.js";function cr(s){return"0x"+new Co(s).toString("hex")}function Xa(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 jt("Transaction was not signed properly");let o=(await s.trx.sendRawTransaction(r)).transaction.txID;return await Bo(s,o),{txId:o}}async function Bo(s,i,r=1e4){let a=Date.now();for(;;){if(Date.now()-a>r)throw new ln("Transaction not found");let o=await s.trx.getUnconfirmedTransactionInfo(i);if(!o?.receipt){await Xa(2e3);continue}if(o.receipt.result==="SUCCESS")return o;throw new ln(`Transaction status is ${o.receipt.result}`)}}var wn=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:w,fee:k,gasFeePaymentMethod:v,extraGas:M,extraGasDest:x}=a,O=k;M&&(O=Io(O).plus(M).toFixed());let N=st().toString(),F,W,U;switch(w){case 3:case 4:v==="stablecoin"?(F=[{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:O}],W="0"):(F=[{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:0}],W=O),U="bridge(uint256,bytes32,uint256,uint256)";break;case 5:v==="stablecoin"?(F=[{type:"address",value:r.sourceToken.tokenAddress},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:O},{type:"uint256",value:x??"0"},{type:"uint256",value:"10"}],W="0"):(F=[{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:x??"0"},{type:"uint256",value:"10"}],W=O),U="bridge(address,uint256,bytes32,uint256,uint256,uint256,uint256)";break;case 1:case 2:v==="stablecoin"?(F=[{type:"bytes32",value:p},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"bytes32",value:S},{type:"uint256",value:N},{type:"uint8",value:w},{type:"uint256",value:O}],W="0"):(F=[{type:"bytes32",value:p},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"bytes32",value:S},{type:"uint256",value:N},{type:"uint8",value:w},{type:"uint256",value:0}],W=O),U="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)";break}return this.buildRawTransaction(u,U,F,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 D("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}};var ur=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o;this.rawTxBuilder=new Hn(i,r,a,o)}rawTxBuilder;async getAllowance(i,r){let a,o;r?(a=i,o=r):o=i;let u=Tn(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=Tn(o.token,o.messenger);return this.tokenService.checkAllowance({...o,spender:u},a)}async approve(i,r){let a=Tn(r.token,r.messenger);return this.tokenService.approve(i,{...r,spender:a})}async send(i,r){return K(r.amount),z("amount",r.amount,r.sourceToken.decimals),Qn(r.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).send(r)}};function Tn(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 Qn(s,i,r,a,o){switch(X.getChainProperty(s).chainType){case"EVM":{if(o)return new hn(o,i,r);{let u=r.getNodeRpcUrl(s);return new hn(new vo(u),i,r)}}case"TRX":{if(o)return new wn(o,i);{let u=r.getNodeRpcUrl(s);return new wn(new Ro({fullHost:u,solidityNode:u,eventServer:u}),i)}}case"SOLANA":return new tr(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 nr(r,a,i);case"SUI":return new Xt(r,i)}}g();y();f();import{Big as Jo}from"big.js";import Lo from"timed-cache";import{TronWeb as Xo}from"tronweb";import{FMT_BYTES as Ko,FMT_NUMBER as Ho,Web3 as Qo}from"web3";g();y();f();import{Big as pt}from"big.js";function Ka(s,i,r,a,o){let u=Z(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(ma(i,T.toFixed(),S.toFixed())).minus(p).toFixed()}function Ha(s){let i=Z(s,3);return pt(i).round().toFixed()}g();y();f();import{Web3 as Pt}from"web3";g();y();f();var ko={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"}]},Cn=ko;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=Aa(this.lpAmount,this.rewardDebt,i.accRewardPerShareP,i.p);return r?j(a,r).toFixed():a}};g();y();f();var Ue=class{};var Bn=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 Yn(this.getUserBalanceInfoByBatch(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5e3)}catch{o=await Hr(()=>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 Yn(this.getPoolInfoByBatch(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5e3)}catch{a=await Hr(()=>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[w,k,v,M,x,O]=await a.execute();if(w&&k&&v&&M&&x&&O&&!w.error&&!k.error&&!v.error&&!M.error&&!x.error&&!O.error){let N=Pt.utils.toBigInt(v.result).toString(),F=Pt.utils.toBigInt(M.result).toString(),W=ke({tokenBalance:N,vUsdBalance:F});return{aValue:Pt.utils.toBigInt(w.result).toString(),dValue:Pt.utils.toBigInt(k.result).toString(),tokenBalance:N,vUsdBalance:F,totalLpAmount:Pt.utils.toBigInt(x.result).toString(),accRewardPerShareP:Pt.utils.toBigInt(O.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(Cn.abi,r)}};g();y();f();var mr=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 K(i.amount),z("amount",i.amount,i.token.decimals),i.amount=Z(i.amount,i.token.decimals).toFixed(),Kt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionDeposit(i)}async withdraw(i,r){return K(i.amount),z("amount",i.amount,i.token.decimals),i.amount=Z(i.amount,3).toFixed(),Kt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionWithdraw(i)}async claimRewards(i,r){return Kt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionClaimRewards(i)}};g();y();f();import{AnchorProvider as xo,BN as Qa,Program as Fo,Spl as Mo,web3 as Oo}from"@project-serum/anchor";import{Connection as Do,PublicKey as wt}from"@solana/web3.js";var lr=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 qr(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 Qa(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 Yt(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 Qa(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 Yt(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 Yt(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 Fo(bn,r,a)}buildAnchorProvider(r){let a=new Do(this.solanaRpcUrl,"confirmed"),o=new wt(r);return new xo(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 _t(r.programId),T=new wt(a),w=(await r.account.pool.fetch(T)).mint,k=await Qe(m,w),v=await Zt(w,r.programId),M=await qr(m,w,r.programId),x=[Oo.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await $t(k,u)}catch{let W=await Mo.associatedToken(u).methods.create().accounts({mint:w,owner:m,associatedAccount:k}).instruction();x.push(W)}try{await r.account.userDeposit.fetch(M)}catch{let F=await r.methods.initDepositAccount().accounts({mint:w,user:m,userDeposit:M}).instruction();x.push(F)}return{accounts:{mint:w,user:m,config:p,pool:T,bridgeAuthority:h,userDeposit:M,userToken:k,bridgeToken:v},preInstructions:x}}};g();y();f();import{contract as ux}from"@stellar/stellar-sdk";g();y();f();import{contract as t}from"@stellar/stellar-sdk";var Wo=t.Spec,No=t.Client;var dr=class extends No{constructor(r){super(new Wo(["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 Qh,rpc as Eo}from"@stellar/stellar-sdk";var za=Eo.Api;function Ht(s){let{simulation:i,options:r}=s;if(!i)throw new Error("Soroban assembled transaction does not have simulation");if(za.isSimulationSuccess(i))return i.result==null?void 0:r.parseResultXdr(i.result.retval);throw new Error(i.error)}function Qt(s){let{simulation:i}=s;if(!i)throw new Error("Soroban assembled transaction does not have simulation");return za.isSimulationError(i)}var pr=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(Qt(u))throw new D;let m=Ht(u);if(!m)throw new D;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(Qt(o))throw new D;let u=Ht(o);if(!u)throw new D;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 dr(o)}};g();y();f();import{SuiClient as $o}from"@mysten/sui/client";import{Transaction as wr}from"@mysten/sui/transactions";var qt=He(Tt());g();y();f();he();g();y();f();he();import{bcs as qa}from"@mysten/sui/bcs";import{fromB64 as Uo}from"@mysten/sui/utils";function gr(s){return s=V(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=ee(s.$typeName,...i),this.$typeArgs=i,this.value=r.value}static reified(i){return{typeName:s.$typeName,fullTypeName:ee(s.$typeName,Y(i)),typeArgs:[Y(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([Y(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return ue(s.reified(i))}static get p(){return s.phantom}static get bcs(){return qa.struct("Balance",{value:qa.u64()})}static fromFields(i,r){return s.reified(i).new({value:q("u64",r.value)})}static fromFieldsWithTypes(i,r){if(!gr(r.type))throw new Error("not a Balance type");return ct(r,[i]),s.reified(i).new({value:H("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:Q("u64",r.value)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(ee(s.$typeName,Y(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 Balance 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 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=V(a[0]),u=V(Y(i));if(o!==V(Y(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Uo(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"||!gr(o.data.bcs.type))throw new Error(`object at id ${a} is not a Balance object`);return s.fromSuiObjectData(r,o.data)}};var Bi=He(Tt());g();y();f();he();var wi=He(Tt());import{bcs as fr}from"@mysten/sui/bcs";import{fromB64 as Go}from"@mysten/sui/utils";function yr(s){return s=V(s),s.startsWith(`${wi.PKG_V1}::pool_rewards::PoolRewards<`)}var Wt=class s{__StructClass=!0;static get $typeName(){return`${wi.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=ee(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:ee(s.$typeName,Y(i)),typeArgs:[Y(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([Y(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return ue(s.reified(i))}static get p(){return s.phantom}static get bcs(){return fr.struct("PoolRewards",{acc_reward_per_share_p:fr.u128(),admin_fee_share_bp:fr.u64(),admin_fee:Pe.bcs,rewards:Pe.bcs,lp_supply:fr.u64()})}static fromFields(i,r){return s.reified(i).new({accRewardPerShareP:q("u128",r.acc_reward_per_share_p),adminFeeShareBp:q("u64",r.admin_fee_share_bp),adminFee:q(Pe.reified(i),r.admin_fee),rewards:q(Pe.reified(i),r.rewards),lpSupply:q("u64",r.lp_supply)})}static fromFieldsWithTypes(i,r){if(!yr(r.type))throw new Error("not a PoolRewards type");return ct(r,[i]),s.reified(i).new({accRewardPerShareP:H("u128",r.fields.acc_reward_per_share_p),adminFeeShareBp:H("u64",r.fields.admin_fee_share_bp),adminFee:H(Pe.reified(i),r.fields.admin_fee),rewards:H(Pe.reified(i),r.fields.rewards),lpSupply:H("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:Q("u128",r.accRewardPerShareP),adminFeeShareBp:Q("u64",r.adminFeeShareBp),adminFee:Q(Pe.reified(i),r.adminFee),rewards:Q(Pe.reified(i),r.rewards),lpSupply:Q("u64",r.lpSupply)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(ee(s.$typeName,Y(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 PoolRewards 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 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=V(a[0]),u=V(Y(i));if(o!==V(Y(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Go(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"||!yr(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 Ci=He(Tt());import{bcs as zt}from"@mysten/sui/bcs";import{fromB64 as Vo}from"@mysten/sui/utils";function hr(s){return s=V(s),s.startsWith(`${Ci.PKG_V1}::pool_state::PoolState<`)}var Nt=class s{__StructClass=!0;static get $typeName(){return`${Ci.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=ee(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:ee(s.$typeName,Y(i)),typeArgs:[Y(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([Y(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return ue(s.reified(i))}static get p(){return s.phantom}static get bcs(){return zt.struct("PoolState",{token_balance:zt.u64(),vusd_balance:zt.u64(),d:zt.u64(),a:zt.u64(),balance_ratio_min_bp:zt.u64()})}static fromFields(i,r){return s.reified(i).new({tokenBalance:q("u64",r.token_balance),vusdBalance:q("u64",r.vusd_balance),d:q("u64",r.d),a:q("u64",r.a),balanceRatioMinBp:q("u64",r.balance_ratio_min_bp)})}static fromFieldsWithTypes(i,r){if(!hr(r.type))throw new Error("not a PoolState type");return ct(r,[i]),s.reified(i).new({tokenBalance:H("u64",r.fields.token_balance),vusdBalance:H("u64",r.fields.vusd_balance),d:H("u64",r.fields.d),a:H("u64",r.fields.a),balanceRatioMinBp:H("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:Q("u64",r.tokenBalance),vusdBalance:Q("u64",r.vusdBalance),d:Q("u64",r.d),a:Q("u64",r.a),balanceRatioMinBp:Q("u64",r.balanceRatioMinBp)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(ee(s.$typeName,Y(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!hr(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"||!hr(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=V(a[0]),u=V(Y(i));if(o!==V(Y(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Vo(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"||!hr(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 In}from"@mysten/sui/bcs";import{fromB64 as jo}from"@mysten/sui/utils";function Tr(s){return s=V(s),s.startsWith(`${Bi.PKG_V1}::pool::Pool<`)}var br=class s{__StructClass=!0;static get $typeName(){return`${Bi.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=ee(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:ee(s.$typeName,Y(i)),typeArgs:[Y(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([Y(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return ue(s.reified(i))}static get p(){return s.phantom}static get bcs(){return In.struct("Pool",{id:Xe.bcs,state:Nt.bcs,rewards:Wt.bcs,fee_share_bp:In.u64(),can_deposit:In.bool(),can_withdraw:In.bool(),decimals:In.u8(),balance:Pe.bcs})}static fromFields(i,r){return s.reified(i).new({id:q(Xe.reified(),r.id),state:q(Nt.reified(i),r.state),rewards:q(Wt.reified(i),r.rewards),feeShareBp:q("u64",r.fee_share_bp),canDeposit:q("bool",r.can_deposit),canWithdraw:q("bool",r.can_withdraw),decimals:q("u8",r.decimals),balance:q(Pe.reified(i),r.balance)})}static fromFieldsWithTypes(i,r){if(!Tr(r.type))throw new Error("not a Pool type");return ct(r,[i]),s.reified(i).new({id:H(Xe.reified(),r.fields.id),state:H(Nt.reified(i),r.fields.state),rewards:H(Wt.reified(i),r.fields.rewards),feeShareBp:H("u64",r.fields.fee_share_bp),canDeposit:H("bool",r.fields.can_deposit),canWithdraw:H("bool",r.fields.can_withdraw),decimals:H("u8",r.fields.decimals),balance:H(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:Q(Xe.reified(),r.id),state:Q(Nt.reified(i),r.state),rewards:Q(Wt.reified(i),r.rewards),feeShareBp:Q("u64",r.feeShareBp),canDeposit:Q("bool",r.canDeposit),canWithdraw:Q("bool",r.canWithdraw),decimals:Q("u8",r.decimals),balance:Q(Pe.reified(i),r.balance)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(ee(s.$typeName,Y(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Tr(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"||!Tr(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=V(a[0]),u=V(Y(i));if(o!==V(Y(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,jo(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"||!Tr(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 Ri=He(Tt());import{bcs as Ii}from"@mysten/sui/bcs";import{fromB64 as _o}from"@mysten/sui/utils";function Sr(s){return s=V(s),s.startsWith(`${Ri.PKG_V1}::user_deposit::UserDeposit<`)}var Pr=class s{__StructClass=!0;static get $typeName(){return`${Ri.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=ee(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:ee(s.$typeName,Y(i)),typeArgs:[Y(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([Y(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return ue(s.reified(i))}static get p(){return s.phantom}static get bcs(){return Ii.struct("UserDeposit",{id:Xe.bcs,lp_amount:Ii.u64(),reward_debt:Ii.u64()})}static fromFields(i,r){return s.reified(i).new({id:q(Xe.reified(),r.id),lpAmount:q("u64",r.lp_amount),rewardDebt:q("u64",r.reward_debt)})}static fromFieldsWithTypes(i,r){if(!Sr(r.type))throw new Error("not a UserDeposit type");return ct(r,[i]),s.reified(i).new({id:H(Xe.reified(),r.fields.id),lpAmount:H("u64",r.fields.lp_amount),rewardDebt:H("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:Q(Xe.reified(),r.id),lpAmount:Q("u64",r.lpAmount),rewardDebt:Q("u64",r.rewardDebt)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(ee(s.$typeName,Y(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Sr(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"||!Sr(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=V(a[0]),u=V(Y(i));if(o!==V(Y(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,_o(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"||!Sr(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 ts(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 es(r,a,m,s);u+=BigInt(p.balance),m.push(p)}return u>=o?es(r,a,m,s):[]}function es(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 Zo="0x0000000000000000000000000000000000000000000000000000000000000000";async function ns(s,i,r){let a=await s.devInspectTransactionBlock({sender:Zo,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():Pn(r).parse(Uint8Array.from(u))}var Cr=class extends Ue{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.client=new $o({url:r})}chainType="SUI";client;async getUserBalanceInfo(r,a){if(!a.originTokenAddress)throw new D("SUI token must contain 'originTokenAddress'");let o=a.suiAddresses;if(!o)throw new D("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 D("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:Pr.phantom(ue(a)).phantomType},options:{showContent:!0},cursor:o}))}async getPoolInfoFromChain(r){let a=r.suiAddresses;if(!a)throw new D("SUI token must contain 'suiAddresses'");if((0,qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.originTokenAddress)throw new D("SUI token must contain 'originTokenAddress'");let o=48,u=new wr;Ea(u,r.originTokenAddress,a.bridgeObjectAddress);let m=await ns(this.client,u,br.reified(ue(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 D("SUI token must contain 'suiAddresses'");if((0,qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new D("SUI token must contain 'originTokenAddress'");let o=await At(w=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:w}));if(o.length===0||!o[0])throw new ut("No coins to deposit");let u=o[0],m=new wr;m.setSender(r.accountAddress);let{depositObj:p,isNewDeposit:h}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,m),[T]=ts([r.amount],o,m);if(!T)throw new ut("No coins to deposit");if(!r.token.originTokenAddress)throw new D("SUI token must contain 'originTokenAddress'");let S=Da(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=ue(a).phantomType;return{depositObj:Ua(o,m),isNewDeposit:!0}}else{if(u[0].data?.objectId)return{depositObj:u[0].data.objectId,isNewDeposit:!1};throw new D("Something went wrong while deposit")}}async buildRawTransactionWithdraw(r){let a=r.token.suiAddresses;if(!a)throw new D("SUI token must contain 'suiAddresses'");if((0,qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new D("SUI token must contain 'originTokenAddress'");let o=ue(r.token.originTokenAddress).phantomType,u=new wr;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=Wa(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 D("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 D("SUI token must contain 'suiAddresses'");if((0,qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new D("SUI token must contain 'originTokenAddress'");let o=ue(r.token.originTokenAddress).phantomType,u=new wr;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=Na(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 Yo}from"web3-eth-abi";var Rn=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=yn(o.poolAddress),m=yn(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=w=>{let k=T.find(v=>v.id===w);if(!k||!k.result)throw new Error(`Missing or invalid result for id ${w}`);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=yn(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 v=p.find(M=>M.id===k);if(!v||!v.result)throw new Error(`Missing or invalid result for id ${k}`);return Br.utils.toBigInt(v.result).toString()},T=h(3),S=h(4),w=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:w}}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(),w=p.toString(),k=ke({tokenBalance:S,vUsdBalance:w});return{aValue:o.toString(),dValue:u.toString(),tokenBalance:S,vUsdBalance:w,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 D("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}getContract(r){return this.tronWeb.contract(Cn.abi,r)}getFunctionAbi(r,...a){let o=Cn.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 Yo(o,a)}};var Ir=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o;this.rawTxBuilder=new mr(i,r,this.params,o);let u=a.cachePoolInfoChainSec>0?a.cachePoolInfoChainSec*1e3:20*1e3;this.cache=new Lo({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){K(i),z("amount",i,r.decimals);let o=await this.getPoolInfoFromChain(r,a),{vUsdBalance:u,tokenBalance:m,aValue:p,dValue:h}=o,T=Ka(i,p,h,m,u);return j(T,3).toFixed()}async getAmountToBeWithdrawn(i,r,a,o){K(i),z("amount",i,a.decimals);let u=await this.getPoolInfoFromChain(a,o),m=Ha(i),p=We(m,a.decimals),T=(await this.getUserBalanceInfo(r,a,o)).earned(u)||"0",S=Jo(p).plus(T).toFixed();return j(S,a.decimals).toFixed()}async getUserBalanceInfo(i,r,a){return Kt(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 Kt(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 Kt(s,i,r,a,o){switch(X.getChainProperty(s).chainType){case"EVM":{if(o)return new Bn(o,i);{let u=r.getNodeRpcUrl(s),m=new Qo(u);return m.defaultReturnFormat={number:Ho.STR,bytes:Ko.HEX},new Bn(m,i)}}case"TRX":{let u=r.getNodeRpcUrl(s),m=a.tronJsonRpc;if(o)return new Rn(o,i,m);{let p=new Xo({fullHost:u});return new Rn(p,i,m)}}case"SOLANA":{let u=r.getNodeRpcUrl(s);return new lr(u,i)}case"SRB":return new pr(r,a,i);case"SUI":return new Cr(r.getNodeRpcUrl(s),i)}}g();y();f();g();y();f();import{TronWeb as ec}from"tronweb";import{FMT_BYTES as tc,FMT_NUMBER as nc,Web3 as rc}from"web3";g();y();f();g();y();f();var zo={abi:[{inputs:[{internalType:"string",name:"tokenName_",type:"string"},{internalType:"string",name:"tokenSymbol_",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:!1,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"lpAmount",type:"uint256"}],name:"Deposited",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"token",type:"address"}],name:"DepositedRewards",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[4]",name:"values",type:"uint256[4]"}],name:"MultiTransfer",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:"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:!1,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdrawn",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"NUM_TOKENS",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:"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"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"minVirtualAmount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"depositRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"}],name:"getEstimatedAmountOnDeposit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"getRewardsAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"virtualAmount",type:"uint256"}],name:"getWithdrawProportionAmount",outputs:[{internalType:"uint256[4]",name:"",type:"uint256[4]"}],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:"uint256",name:"",type:"uint256"}],name:"pools",outputs:[{internalType:"contract IPool",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"},{internalType:"contract IPool",name:"pool",type:"address"}],name:"setPool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subBalanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"subDepositRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"subTotalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subTransfer",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"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subTransferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"virtualAmount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"tokens",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],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:"uint256",name:"virtualAmount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Rr=zo;g();y();f();g();y();f();g();y();f();var Et=class{};var vn=class extends Et{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";async balanceOf(r){let a=(await this.getYieldContract(r.token.yieldAddress).methods.balanceOf(r.owner).call()).toString();return j(a,3).toFixed()}async getEstimatedAmountOnDeposit(r){let a=Z(r.amount,r.token.decimals).toFixed(),o=(await this.getYieldContract(r.token.yieldAddress).methods.getEstimatedAmountOnDeposit(a,r.token.yieldId).call()).toString();return j(o,3).toFixed()}async getWithdrawProportionAmount(r){let a=Z(r.amount,3).toFixed();return await this.getYieldContract(r.cydToken.yieldAddress).methods.getWithdrawProportionAmount(r.owner,a).call()}async buildRawTransactionDeposit(r){return Promise.resolve({...this.buildTxParams({owner:r.owner,yieldAddress:r.token.yieldAddress}),data:this.getYieldContract(r.token.yieldAddress).methods.deposit(r.amount,r.token.yieldId,r.minVirtualAmount).encodeABI()})}async buildRawTransactionWithdraw(r){return Promise.resolve({...this.buildTxParams({owner:r.owner,yieldAddress:r.token.yieldAddress}),data:this.getYieldContract(r.token.yieldAddress).methods.withdraw(r.amount).encodeABI()})}buildTxParams(r){return{from:r.owner,to:r.yieldAddress,value:"0"}}getYieldContract(r){return new this.web3.eth.Contract(Rr.abi,r)}};g();y();f();var vr=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o}async approve(i,r){return this.tokenService.buildRawTransactionApprove({...i,spender:i.token.yieldAddress},r)}async deposit(i,r){return K(i.amount),z("amount",i.amount,i.token.decimals),K(i.minVirtualAmount),z("minVirtualAmount",i.minVirtualAmount,3),i.amount=Z(i.amount,i.token.decimals).toFixed(),i.minVirtualAmount=Z(i.minVirtualAmount,3).toFixed(),en(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,i.owner,r).buildRawTransactionDeposit(i)}async withdraw(i,r){return K(i.amount),z("amount",i.amount,3),i.amount=Z(i.amount,3).toFixed(),en(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,i.owner,r).buildRawTransactionWithdraw(i)}};g();y();f();var kn=class extends Et{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async balanceOf(r){let a=(await(await this.getContract(r.token.yieldAddress)).methods.balanceOf(r.owner).call()).toString();return j(a,3).toFixed()}async getEstimatedAmountOnDeposit(r){let a=Z(r.amount,r.token.decimals).toFixed(),o=(await(await this.getContract(r.token.yieldAddress)).methods.getEstimatedAmountOnDeposit(a,r.token.yieldId).call()).toString();return j(o,3).toFixed()}async getWithdrawProportionAmount(r){let a=Z(r.amount,3).toFixed();return(await(await this.getContract(r.cydToken.yieldAddress)).methods.getWithdrawProportionAmount(r.owner,a).call()).toString().split(",")}async buildRawTransactionDeposit(r){let{amount:a,owner:o,token:u,minVirtualAmount:m}=r,p=[{type:"uint256",value:a},{type:"uint256",value:u.yieldId},{type:"uint256",value:m}];return this.buildRawTransaction(r.token.yieldAddress,"deposit(uint256,uint256,uint256)",p,"0",o)}async buildRawTransactionWithdraw(r){let{amount:a,owner:o}=r,u=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.yieldAddress,"withdraw(uint256)",u,"0",o)}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 D("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}getContract(r){return this.tronWeb.contract(Rr.abi,r)}};g();y();f();function qo(s){if(!kr(s))throw new Zn("Token does not support Yield")}function kr(s){return!!s.yieldAddress&&s.yieldId!==void 0}var xr=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o;this.rawTxBuilder=new vr(i,r,a,o)}rawTxBuilder;async getCYDTokens(){let i=[],r=await this.api.getChainDetailsMap("pool");return Object.values(r).forEach(a=>{if(a.yieldAddress){let o=a.tokens.find(m=>m.tokenAddress===a.yieldAddress),u=a.tokens.filter(kr);if(u.length>0){let m=o??{allbridgeChainId:a.allbridgeChainId,apr:"",apr30d:"",apr7d:"",bridgeAddress:a.bridgeAddress,chainId:a.chainId,chainName:a.name,chainSymbol:a.chainSymbol,chainType:a.chainType,confirmations:a.confirmations,decimals:3,feeShare:"",lpRate:"",name:"Core Yield",poolAddress:"",symbol:"CYD",tokenAddress:a.yieldAddress,transferTime:{},txCostAmount:{maxAmount:"0",swap:"0",transfer:"0"},yieldAddress:a.yieldAddress};i.push({...m,yieldAddress:a.yieldAddress,tokens:u})}}}),i}async getAllowance(i,r){return await this.tokenService.getAllowance({...i,spender:i.token.yieldAddress},r)}async checkAllowance(i,r){return this.tokenService.checkAllowance({...i,spender:i.token.yieldAddress},r)}async balanceOf(i,r){return en(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,i.owner,r).balanceOf(i)}async getEstimatedAmountOnDeposit(i,r){return K(i.amount),z("amount",i.amount,i.token.decimals),en(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,i.token.yieldAddress,r).getEstimatedAmountOnDeposit(i)}async getWithdrawAmounts(i,r){K(i.amount),z("amount",i.amount,3);let a=await en(i.cydToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,i.owner,r).getWithdrawProportionAmount(i);return i.cydToken.tokens.filter(o=>a[o.yieldId]!==void 0).map(o=>({amount:j(a[o.yieldId],o.decimals).toFixed(),token:o}))}};function en(s,i,r,a,o){switch(X.getChainProperty(s).chainType){case"EVM":{if(o)return new vn(o,i);{let u=r.getNodeRpcUrl(s),m=new rc(u);return m.defaultReturnFormat={number:nc.STR,bytes:tc.HEX},new vn(m,i)}}case"TRX":{if(o)return new kn(o,i);{let u=r.getNodeRpcUrl(s),m=new ec({fullHost:u});return m.setAddress(a),new kn(m,i)}}case"SOLANA":throw new Ae;case"SRB":throw new Ae;case"SUI":throw new Ae}}g();y();f();import{Big as de}from"big.js";function as(s,i,r){let a=ic(s,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo),o=ac(a.amountIncludingCommissionInSystemPrecision,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:o}}function ss(s,i,r){let a=sc(s,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo),o=oc(a.amountIncludingCommissionInSystemPrecision,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:o}}function ic(s,{feeShare:i,decimals:r},a){let o=de(s),u=o.times(i),m=o.minus(u);return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInSystemPrecision:rs(xt(m,r),a),amountExcludingCommissionInSystemPrecision:rs(xt(o,r),a)}}function rs(s,i){if(s.eq(0))return"0";let r=de(i.tokenBalance).plus(s),a=at(r.toFixed(),i.aValue,i.dValue);return de(i.vUsdBalance).minus(a).round().toFixed()}function ac(s,{feeShare:i,decimals:r},a){if(de(s).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let u=de(s).plus(a.vUsdBalance),m=at(u,a.aValue,a.dValue),p=We(de(a.tokenBalance).minus(m),r),h=de(p).times(i),T=de(p).minus(h).round();return{bridgeFeeInTokenPrecision:h.round().toFixed(),amountIncludingCommissionInTokenPrecision:T.toFixed(),amountExcludingCommissionInTokenPrecision:p.toFixed()}}function sc(s,{feeShare:i,decimals:r},a){let o=de(i).div(de(1).minus(i)),u=de(s).times(o),m=de(s).plus(u);return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInSystemPrecision:is(xt(m,r),a),amountExcludingCommissionInSystemPrecision:is(xt(s,r),a)}}function is(s,i){let r=de(i.tokenBalance).minus(s),a=at(r.toFixed(),i.aValue,i.dValue);return de(a).minus(i.vUsdBalance).round().toFixed()}function oc(s,{feeShare:i,decimals:r},a){if(de(s).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let o=de(a.vUsdBalance).minus(s),u=at(o.toFixed(),a.aValue,a.dValue),m=de(u).minus(a.tokenBalance),p=We(m.toFixed(),r),h=de(i).div(de(1).minus(i)),T=de(p).times(h),S=de(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 os(s,i,r,a,o){let u=it(s,i,r),m=We(u,i.decimals),p=fn(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(We(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 dc from"axios";g();y();f();var cs="3.27.1";g();y();f();function As(s){return Object.entries(s).reduce((i,r)=>{let a=r[0],o=r[1],u=lc(a,o);return u&&(i[a]=u),i},{})}function us(s){let i={};for(let[r,a]of Object.entries(s)){let o=r;for(let u of a.tokens){let m=tn({chainSymbol:o,poolAddress:u.poolAddress}),p=ke(u.poolInfo);i[m]={...u.poolInfo,imbalance:p}}}return i}function cc(s,i){let{name:r,...a}=s,{poolInfo:o,...u}=i;return{...u,...a,chainName:r}}function Ac(s){switch(s){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;case"cctpV2":return 4;case"oft":return 5}}function uc(s){return Object.entries(s).reduce((i,[r,a])=>(i[r]=mc(a),i),{})}function mc(s){return Object.entries(s).reduce((i,[r,a])=>{let o=Ac(r);return o&&a!=null&&(i[o]=a),i},{})}function lc(s,i){let r=X.getChainsProperties()[s];if(!r)return null;let a={...r,allbridgeChainId:i.chainId,bridgeAddress:i.bridgeAddress,oftBridgeAddress:i.oftBridgeAddress,yieldAddress:i.yieldAddress,transferTime:uc(i.transferTime),txCostAmount:i.txCostAmount,confirmations:i.confirmations,suiAddresses:i.suiAddresses};return{...a,tokens:i.tokens.map(o=>cc(a,o))}}function tn(s){return s.chainSymbol+"_"+s.poolAddress}function ms(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 ls(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[tn({chainSymbol:o,poolAddress:u})]=m}return i}var nn=class{api;constructor(i){this.api=dc.create({baseURL:i.coreApiUrl,headers:{Accept:"application/json",...i.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+cs},params:i.coreApiQueryParams})}async getTokenInfo(){let{data:i}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:As(i),poolInfoMap:us(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 Gn("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 ls(a)}};g();y();f();import Fr from"timed-cache";var vi=20*1e3,pc=55*1e3,rn=class{constructor(i){this.apiClient=i;this.tokenInfoCache=new Fr({defaultTtl:pc}),this.receivedTransactionCache=new Fr({defaultTtl:vi}),this.pendingInfoCache=new Fr({defaultTtl:vi}),this.gasBalanceCache=new Fr({defaultTtl:vi})}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 an=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 sn=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:ds(u.tokens,i,this.isStaging)})}return a}async tokens(i){return ds(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 ds(s,i,r){return s.filter(a=>r?!0:a.flags[i]).map(gc)}function gc(s){let{flags:i,...r}=s;return r}g();y();f();import fc from"timed-cache";var yc=55*1e3,on=class{constructor(i){this.client=i;this.poolInfoCache=new ki}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[tn(i)];if(o)return o;throw new D("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(ms(a.chainDetailsMap))}this.poolInfoCache.putAll(r)}cachePut(i,r){this.poolInfoCache.put(tn(i),r)}},ki=class{cache;constructor(){this.cache=new fc({defaultTtl:yc})}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=tn(i);return this.cache.get(r)}};g();y();f();import{Big as Rc}from"big.js";import{TronWeb as vc}from"tronweb";import{Web3 as kc}from"web3";g();y();f();g();y();f();var hc={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"}]},Mr=hc;g();y();f();g();y();f();g();y();f();import{Big as ps}from"big.js";var Ge=class{async checkAllowance(i){let r=await this.getAllowance(i);return ps(r).gte(ps(i.amount))}};var Tc="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",bc="0xdac17f958d2ee523a2206206994597c13d831ec7",Sc=1e5,xn=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()===bc}buildRawTransactionApprove(r){let{tokenAddress:a,spender:o,owner:u,amount:m}=r,h=this.getERC20Contract(a).methods.approve(o,m==null?Tc:cr(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(Mr.abi,r)}};g();y();f();import{AnchorProvider as Pc}from"@project-serum/anchor";import{Connection as wc,PublicKey as Or}from"@solana/web3.js";var Dr=class extends Ge{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";approve(r){throw new Ae}buildRawTransactionApprove(r){throw new Ae}buildAnchorProvider(r){let a=new wc(this.solanaRpcUrl,"confirmed"),o=new Or(r);return new Pc(a,{publicKey:o},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(r){throw new Ae}async getTokenBalance(r){let{account:a,token:o}=r;try{let u=await Qe(new Or(a),new Or(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 Or(r.account))).toString()}};g();y();f();import{Horizon as nI,NotFoundError as Cc}from"@stellar/stellar-sdk";var Wr=class extends Ge{constructor(r,a,o){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=o}chainType="SRB";getAllowance(){throw new Ae}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new D("OriginTokenAddress missing");let[a,o]=r.token.originTokenAddress.split(":"),u=new nI.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),m;try{m=await u.loadAccount(r.account)}catch(T){if(T instanceof Cc)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?Z(h.balance,X.getChainDecimalsByType(X.getChainProperty(r.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(r){let m=(await new nI.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(r.account)).balances.find(p=>p.asset_type==="native");return m?.balance?Z(m.balance,X.getChainDecimalsByType(X.getChainProperty(r.chainSymbol).chainType)).toFixed():"0"}approve(){throw new Ae}buildRawTransactionApprove(){throw new Ae}};g();y();f();import{SuiClient as Bc}from"@mysten/sui/client";var Nr=class extends Ge{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.suiClient=new Bc({url:this.suiRpcUrl})}chainType="SUI";suiClient;approve(r){throw new Ae}buildRawTransactionApprove(r){throw new Ae}getAllowance(r){throw new Ae}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new D("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 Ic="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Fn=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 Ar(this.tronWeb,a)}async buildRawTransactionApprove(r){let{tokenAddress:a,spender:o,owner:u,amount:m}=r,p=m==null?Ic:cr(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(Mr.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 D("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}};var cn=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 K(i.amount),z("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&&(K(r.amount),z("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&&(K(i.amount),z("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,X.getChainDecimalsByType(X.getChainProperty(i.chainSymbol).chainType)).toFixed()}}getChainTokenService(i,r,a){switch(X.getChainProperty(i).chainType){case"EVM":{if(a)return new xn(a,this.api);{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i);return new xn(new kc(o),this.api)}}case"TRX":{if(a)return new Fn(a,this.api);{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i),u=new vc({fullHost:o});return u.setAddress(r),new Fn(u,this.api)}}case"SOLANA":{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i);return new Dr(o,this.api)}case"SRB":return new Wr(this.nodeRpcUrlsConfig,this.params,this.api);case"SUI":return new Nr(this.nodeRpcUrlsConfig.getNodeRpcUrl(i),this.api)}}prepareCheckAllowanceParams(i){return{...i,amount:Z(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:Rc(i.amount).toFixed()}}};var Er=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r;let a=new nn(r),o=new rn(a),u=new an(o),m=new on(u);this.api=new sn(m,r),this.tokenService=new cn(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 xc,PublicKey as Fc,TransactionMessage as Mc}from"@solana/web3.js";var Ur=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r}async addMemoToTx(i,r){if(r.length>28)throw new D("InvalidArgumentException memo cannot be more than 28 characters");let a=new xc(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),o=await Mt(i,a),u=Mc.decompile(i.message,{addressLookupTableAccounts:o}),m=u.instructions[u.instructions.length-1];if(!m?.keys)throw new D("Last instruction or its keys are invalid.");m.keys.push({pubkey:new Fc(P.from(r)),isSigner:!1,isWritable:!1}),i.message=u.compileToV0Message(o)}};g();y();f();import{Asset as Wc,BASE_FEE as Nc,contract as mx,Horizon as gs,Operation as Ec,Operation as Uc,rpc as On,TimeoutInfinite as Gc,TransactionBuilder as xi,TransactionBuilder as fs}from"@stellar/stellar-sdk";g();y();f();import{contract as e}from"@stellar/stellar-sdk";var Oc=e.Spec,Dc=e.Client;var Mn=class extends Dc{constructor(r){super(new Oc(["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 Vc=100,jc=180,Gr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r}async buildChangeTrustLineXdrTx(i){let a=await new gs.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(i.sender),u=await this.getContract(Mn,i.tokenAddress).name();if(Qt(u))throw new D;let m=Ht(u);if(!m)throw new D;let[p,h]=m.split(":");if(p===void 0||h===void 0)throw new D("Invalid token name format. Expected format 'symbol:srbTokenAddress'");let T=new Wc(p,h),S=Uc.changeTrust({asset:T,limit:i.limit});return new fs(a,{fee:Vc.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(S).setTimeout(jc).build().toXDR()}async getBalanceLine(i,r){let o=await this.getContract(Mn,r).name();if(Qt(o))throw new D;let u=Ht(o);if(!u)throw new D;let[m,p]=u.split(":"),h=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new gs.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 gs.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),a=fs.fromXDR(i,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await r.submitTransaction(a)}async simulateAndCheckRestoreTxRequiredSoroban(i,r){let a=new On.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),o=await a.getAccount(r),u=xi.fromXDR(i,this.params.sorobanNetworkPassphrase),m=await a.simulateTransaction(u);if(On.Api.isSimulationRestore(m))return new xi(o,{fee:(+Nc+ +m.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(m.restorePreamble.transactionData.build()).addOperation(Ec.restoreFootprint({})).setTimeout(Gc).build().toXDR()}async sendTransactionSoroban(i){let r=new On.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=xi.fromXDR(i,this.params.sorobanNetworkPassphrase);return r.sendTransaction(a)}async confirmTx(i,r=15){let a=new On.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),o=await Xi(()=>a.getTransaction(i),m=>m.status===On.Api.GetTransactionStatus.NOT_FOUND,r);if(o.length===0)throw new D("No transaction responses found.");let u=o[o.length-1];if(!u)throw new D("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 Vr=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 jr=class{constructor(i){this.service=i;this.srb=new Gr(i.nodeRpcUrlsConfig,i.params),this.sol=new Ur(i.nodeRpcUrlsConfig,i.params),this.sui=new Vr(i.nodeRpcUrlsConfig,i.api),this.evm=new Er(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||{}),Ln=(r=>(r.INT="int",r.FLOAT="float",r))(Ln||{});g();y();f();import{Big as fe}from"big.js";var Dn=class{constructor(i){this.nodeRpcUrls=i}getNodeRpcUrl(i){let r=this.nodeRpcUrls[i];if(r!==void 0)return r;throw new _n(i)}},_r=class{constructor(i,r=Un){this.nodeRpcUrlsConfig=i;X.addChainsProperties(r.additionalChainsProperties);let a=new nn(r),o=new rn(a),u=new an(o),m=new on(u);this.api=new sn(m,r),this.tokenService=new cn(this.api,i,r),this.bridge=new ur(this.api,i,r,this.tokenService),this.pool=new Ir(this.api,i,r,this.tokenService),this.yield=new xr(this.api,i,r,this.tokenService),this.params=r}api;tokenService;params;bridge;pool;yield;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){K(i);let u;r=="float"?(z("amount",i,a.decimals),u=Z(i,a.decimals).toFixed()):u=i;let m=it(u,a,await ge(this.api,a)),p=await ge(this.api,o),h=this.getAmountFromVUsdFormatted(m,o,p),T,S=await this.api.getPendingInfo();for(let w in S[o.chainSymbol]){let k=S[o.chainSymbol];if(!k)throw new D("Cannot find pending info for "+o.chainSymbol);T=k[w]}if(T){let w=sa(T.totalSentAmount,p),k=this.getAmountFromVUsdFormatted(m,o,w),v;return fe(k.int).gt(h.int)?v={min:h,max:k}:v={min:k,max:h},{pendingTxs:T.pendingTxs,pendingAmount:{int:Je(T.totalSentAmount,3,o.decimals).toFixed(0),float:j(T.totalSentAmount,3).toFixed()},estimatedAmount:v}}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){K(i),z("amountFloat",i,r.decimals);let a=Z(i,r.decimals);if(a.eq(0))return 0;let o=it(a,r,await ge(this.api,r)),u=We(o,r.decimals);return ti(a,u)}async calculateFeePercentOnDestinationChain(i,r,a){K(i),z("amountFloat",i,r.decimals);let o=Z(i,r.decimals);if(o.eq(0))return 0;let u=it(o,r,await ge(this.api,r)),m=fn(u,a,await ge(this.api,a)),p=We(u,a.decimals);return ti(p,m)}async getAmountToBeReceivedAndGasFeeOptions(i,r,a,o){return K(i),z("amountToSendFloat",i,r.decimals),{amountToSendFloat:fe(i).toFixed(),amountToBeReceivedFloat:await this.getAmountToBeReceived(i,r,a,o),gasFeeOptions:await this.getGasFeeOptions(r,a,o)}}async getAmountToSendAndGasFeeOptions(i,r,a,o){return K(i),z("amountToBeReceivedFloat",i,a.decimals),{amountToSendFloat:await this.getAmountToSend(i,r,a,o),amountToBeReceivedFloat:fe(i).toFixed(),gasFeeOptions:await this.getGasFeeOptions(r,a,o)}}async getAmountToBeReceived(i,r,a,o){return this.getAmountToBeReceivedCompute(i,r,a,o,async()=>await ge(this.api,r),async()=>await ge(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){K(i),z("amountToSendFloat",i,r.decimals);let m=Z(i,r.decimals),p=it(m,r,o);return this.getAmountFromVUsdFormatted(p,a,u).float}getAmountToBeReceivedComputeCctp(i,r,a,o){K(i),z("amountToSendFloat",i,r.decimals);let u=Z(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(fe(1).minus(r.cctpFeeShare)).round(0,fe.roundUp),p=Je(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(fe(1).minus(r.cctpV2FeeShare)).round(0,fe.roundUp),p=Je(m,r.decimals,a.decimals).round(0);return j(p,a.decimals).toFixed()}}}async getAmountToBeReceivedComputeOft(i,r,a){K(i),z("amountToSendFloat",i,r.decimals);let o=Z(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(fe(1).minus(u)).round(0,fe.roundUp),p=Je(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,()=>ge(this.api,r),()=>ge(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){K(i),z("amountToBeReceivedFloat",i,a.decimals);let m=Z(i,a.decimals),p=ca(m,a,u),h=oa(p,r,o);if(fe(h).lte(0))throw new mt;return j(h,r.decimals).toFixed()}getAmountToSendComputeCctp(i,r,a,o){K(i),z("amountToBeReceivedFloat",i,a.decimals);let u=Z(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(fe(1).minus(r.cctpFeeShare)).round(0,fe.roundDown),p=Je(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(fe(1).minus(r.cctpV2FeeShare)).round(0,fe.roundDown),p=Je(m,a.decimals,r.decimals).round(0);return j(p,r.decimals).toFixed()}}}async getAmountToSendComputeOft(i,r,a){K(i),z("amountToBeReceivedFloat",i,a.decimals);let o=Z(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(fe(1).minus(u)).round(0,fe.roundDown),p=Je(m,a.decimals,r.decimals).round(0);return j(p,r.decimals).toFixed()}async getGasFeeOptions(i,r,a){return ni(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 ua(i)}async getExtraGasMaxLimits(i,r,a){return await ri(i,r,a,this.api)}async getVUsdFromAmount(i,r,a){K(i);let o;r=="float"?(z("amount",i,a.decimals),o=Z(i,a.decimals).toFixed()):o=i;let u=it(o,a,await ge(this.api,a));return{int:u,float:j(u,3).toFixed()}}async getAmountFromVUsd(i,r){return this.getAmountFromVUsdFormatted(i,r,await ge(this.api,r))}getAmountFromVUsdFormatted(i,r,a){K(i);let o=fn(i,r,a);if(fe(o).lt(0))throw new mt;return{int:o,float:j(o,r.decimals).toFixed()}}async swapAndBridgeFeeCalculation(i,r,a){return as(i,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await ge(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await ge(this.api,a)})}async swapAndBridgeFeeCalculationReverse(i,r,a){let o=ss(i,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await ge(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await ge(this.api,a)}),u=o.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if(fe(u).lt(0))throw new mt;return o}async getSendAmountDetails(i,r,a,o){K(i);let u;return r=="float"?(z("amount",i,a.decimals),u=Z(i,a.decimals).toFixed()):u=i,os(u,a,await ge(this.api,a),o,await ge(this.api,o))}};function _c(s){return"solanaRpcUrl"in s}var ys=class{params;bridge;pool;yield;utils;service;constructor(i,r=Un){let a;_c(i)?a=new Dn({SOL:i.solanaRpcUrl,TRX:i.tronRpcUrl}):a=new Dn(i),this.service=new _r(a,r),this.bridge=this.service.bridge,this.pool=this.service.pool,this.yield=this.service.yield,this.utils=new jr(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{Kr as AddressStatus,ys as AllbridgeCoreSdk,Ln as AmountFormat,Vt as AmountNotEnoughError,jn as ArgumentInvalidDecimalsError,Ie as CCTPDoesNotSupportedError,$e as ChainSymbol,re as ChainType,Ds as ErrorCode,Vn as ExtraGasMaxLimitExceededError,Ft as FeePaymentMethod,mt as InsufficientPoolLiquidityError,ut as InvalidAmountError,mn as InvalidGasFeePaymentOptionError,Gn as InvalidMessengerOptionError,jt as InvalidTxError,Te as JupiterError,Ye as Messenger,Ae as MethodNotSupportedError,_n as NodeRpcUrlNotInitializedError,Re as OFTDoesNotSupportedError,D as SdkError,ce as SdkRootError,ii as SolanaAutoTxFee,dn as TimeoutError,$n as TxTooLargeError,ln as VerifyTxError,Zn as YieldDoesNotSupportedError,qo as assertYieldIsSupported,kr as isYieldSupported,Un as mainnet,mA as nodeRpcUrlsDefault,uA as nodeUrlsDefault};
|
|
2
2
|
/*! Bundled license information:
|
|
3
3
|
|
|
4
4
|
@jspm/core/nodelibs/browser/chunk-DtuTasat.js:
|