@allbridge/bridge-core-sdk 3.23.0-beta.1 → 3.23.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -8
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +4 -4
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +4 -4
- package/dist/src/client/core-api/api-client-caching.js +1 -1
- package/dist/src/client/core-api/api-client-caching.js.map +1 -1
- package/dist/src/client/core-api/api-client.js +6 -0
- package/dist/src/client/core-api/api-client.js.map +1 -1
- package/dist/src/client/core-api/core-api-mapper.js +3 -0
- package/dist/src/client/core-api/core-api-mapper.js.map +1 -1
- package/dist/src/client/core-api/core-api.model.d.ts +8 -2
- package/dist/src/client/core-api/core-api.model.js +2 -0
- package/dist/src/client/core-api/core-api.model.js.map +1 -1
- package/dist/src/exceptions/exceptions.d.ts +4 -0
- package/dist/src/exceptions/exceptions.js +8 -1
- package/dist/src/exceptions/exceptions.js.map +1 -1
- package/dist/src/index.d.ts +10 -17
- package/dist/src/index.js +34 -26
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/index.d.ts +1 -0
- package/dist/src/models/index.js.map +1 -1
- package/dist/src/services/bridge/evm/index.d.ts +3 -1
- package/dist/src/services/bridge/evm/index.js +46 -14
- package/dist/src/services/bridge/evm/index.js.map +1 -1
- package/dist/src/services/bridge/index.d.ts +1 -1
- package/dist/src/services/bridge/index.js +26 -19
- package/dist/src/services/bridge/index.js.map +1 -1
- package/dist/src/services/bridge/models/bridge.model.d.ts +4 -0
- package/dist/src/services/bridge/models/bridge.model.js.map +1 -1
- package/dist/src/services/bridge/sol/index.d.ts +2 -2
- package/dist/src/services/bridge/sol/index.js +7 -4
- package/dist/src/services/bridge/sol/index.js.map +1 -1
- package/dist/src/services/bridge/sui/index.js +2 -0
- package/dist/src/services/bridge/sui/index.js.map +1 -1
- package/dist/src/services/bridge/trx/index.d.ts +1 -1
- package/dist/src/services/bridge/trx/index.js +84 -53
- package/dist/src/services/bridge/trx/index.js.map +1 -1
- package/dist/src/services/bridge/utils.d.ts +2 -2
- package/dist/src/services/bridge/utils.js +64 -36
- package/dist/src/services/bridge/utils.js.map +1 -1
- package/dist/src/services/index.d.ts +13 -7
- package/dist/src/services/index.js +129 -48
- package/dist/src/services/index.js.map +1 -1
- package/dist/src/services/models/abi/OftBridge.d.ts +386 -0
- package/dist/src/services/models/abi/OftBridge.js +500 -0
- package/dist/src/services/models/abi/OftBridge.js.map +1 -0
- package/dist/src/tokens-info/tokens-info.model.d.ts +14 -0
- package/dist/src/tokens-info/tokens-info.model.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 +7 -7
package/dist/browser/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var ls=Object.create;var Bi=Object.defineProperty;var ds=Object.getOwnPropertyDescriptor;var ps=Object.getOwnPropertyNames;var gs=Object.getPrototypeOf,fs=Object.prototype.hasOwnProperty;var Ct=(a,i)=>()=>(a&&(i=a(a=0)),i);var Nr=(a,i)=>()=>(i||a((i={exports:{}}).exports,i),i.exports);var ys=(a,i,r,s)=>{if(i&&typeof i=="object"||typeof i=="function")for(let o of ps(i))!fs.call(a,o)&&o!==r&&Bi(a,o,{get:()=>i[o],enumerable:!(s=ds(i,o))||s.enumerable});return a};var Le=(a,i,r)=>(r=a!=null?ls(gs(a)):{},ys(i||!a||!a.__esModule?Bi(r,"default",{value:a,enumerable:!0}):r,a));var g=Ct(()=>{});function hs(a,i){this.fun=a,this.array=i}function Ii(a){var i=Math.floor((Date.now()-Bt.now())*.001),r=Bt.now()*.001,s=Math.floor(r)+i,o=Math.floor(r%1*1e9);return a&&(s=s-a[0],o=o-a[1],o<0&&(s--,o+=Wr)),[s,o]}var Bc,Bt,Dr,Wr,Ri=Ct(()=>{g();y();f();hs.prototype.run=function(){this.fun.apply(null,this.array)};Bc={PATH:"/usr/bin",LANG:typeof navigator<"u"?navigator.language+".UTF-8":void 0,PWD:"/",HOME:"/home",TMP:"/tmp"},Bt={now:typeof performance<"u"?performance.now.bind(performance):void 0,timing:typeof performance<"u"?performance.timing:void 0};Bt.now===void 0&&(Dr=Date.now(),Bt.timing&&Bt.timing.navigationStart&&(Dr=Bt.timing.navigationStart),Bt.now=()=>Date.now()-Dr);Wr=1e9;Ii.bigint=function(a){var i=Ii(a);return typeof BigInt>"u"?i[0]*Wr+i[1]:BigInt(i[0]*Wr)+BigInt(i[1])}});var f=Ct(()=>{Ri()});function Ts(){if(vi)return qt;vi=!0,qt.byteLength=p,qt.toByteArray=b,qt.fromByteArray=x;for(var a=[],i=[],r=typeof Uint8Array<"u"?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,m=s.length;o<m;++o)a[o]=s[o],i[s.charCodeAt(o)]=o;i[45]=62,i[95]=63;function u(B){var I=B.length;if(I%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var M=B.indexOf("=");M===-1&&(M=I);var F=M===I?0:4-M%4;return[M,F]}function p(B){var I=u(B),M=I[0],F=I[1];return(M+F)*3/4-F}function h(B,I,M){return(I+M)*3/4-M}function b(B){var I,M=u(B),F=M[0],W=M[1],D=new r(h(B,F,W)),G=0,Q=W>0?F-4:F,j;for(j=0;j<Q;j+=4)I=i[B.charCodeAt(j)]<<18|i[B.charCodeAt(j+1)]<<12|i[B.charCodeAt(j+2)]<<6|i[B.charCodeAt(j+3)],D[G++]=I>>16&255,D[G++]=I>>8&255,D[G++]=I&255;return W===2&&(I=i[B.charCodeAt(j)]<<2|i[B.charCodeAt(j+1)]>>4,D[G++]=I&255),W===1&&(I=i[B.charCodeAt(j)]<<10|i[B.charCodeAt(j+1)]<<4|i[B.charCodeAt(j+2)]>>2,D[G++]=I>>8&255,D[G++]=I&255),D}function S(B){return a[B>>18&63]+a[B>>12&63]+a[B>>6&63]+a[B&63]}function C(B,I,M){for(var F,W=[],D=I;D<M;D+=3)F=(B[D]<<16&16711680)+(B[D+1]<<8&65280)+(B[D+2]&255),W.push(S(F));return W.join("")}function x(B){for(var I,M=B.length,F=M%3,W=[],D=16383,G=0,Q=M-F;G<Q;G+=D)W.push(C(B,G,G+D>Q?Q:G+D));return F===1?(I=B[M-1],W.push(a[I>>2]+a[I<<4&63]+"==")):F===2&&(I=(B[M-2]<<8)+B[M-1],W.push(a[I>>10]+a[I>>4&63]+a[I<<2&63]+"=")),W.join("")}return qt}function bs(){if(ki)return Bn;ki=!0;return Bn.read=function(a,i,r,s,o){var m,u,p=o*8-s-1,h=(1<<p)-1,b=h>>1,S=-7,C=r?o-1:0,x=r?-1:1,B=a[i+C];for(C+=x,m=B&(1<<-S)-1,B>>=-S,S+=p;S>0;m=m*256+a[i+C],C+=x,S-=8);for(u=m&(1<<-S)-1,m>>=-S,S+=s;S>0;u=u*256+a[i+C],C+=x,S-=8);if(m===0)m=1-b;else{if(m===h)return u?NaN:(B?-1:1)*(1/0);u=u+Math.pow(2,s),m=m-b}return(B?-1:1)*u*Math.pow(2,m-s)},Bn.write=function(a,i,r,s,o,m){var u,p,h,b=m*8-o-1,S=(1<<b)-1,C=S>>1,x=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,B=s?0:m-1,I=s?1:-1,M=i<0||i===0&&1/i<0?1:0;for(i=Math.abs(i),isNaN(i)||i===1/0?(p=isNaN(i)?1:0,u=S):(u=Math.floor(Math.log(i)/Math.LN2),i*(h=Math.pow(2,-u))<1&&(u--,h*=2),u+C>=1?i+=x/h:i+=x*Math.pow(2,1-C),i*h>=2&&(u++,h/=2),u+C>=S?(p=0,u=S):u+C>=1?(p=(i*h-1)*Math.pow(2,o),u=u+C):(p=i*Math.pow(2,C-1)*Math.pow(2,o),u=0));o>=8;a[r+B]=p&255,B+=I,p/=256,o-=8);for(u=u<<o|p,b+=o;b>0;a[r+B]=u&255,B+=I,u/=256,b-=8);a[r+B-I]|=M*128},Bn}function Fi(){if(xi)return It;xi=!0;let a=Ts(),i=bs(),r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;It.Buffer=u,It.SlowBuffer=W,It.INSPECT_MAX_BYTES=50;let s=2147483647;It.kMaxLength=s,u.TYPED_ARRAY_SUPPORT=o(),!u.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(u.prototype,"parent",{enumerable:!0,get:function(){if(u.isBuffer(this))return this.buffer}}),Object.defineProperty(u.prototype,"offset",{enumerable:!0,get:function(){if(u.isBuffer(this))return this.byteOffset}});function m(l){if(l>s)throw new RangeError('The value "'+l+'" is invalid for option "size"');let c=new Uint8Array(l);return Object.setPrototypeOf(c,u.prototype),c}function u(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)}u.poolSize=8192;function p(l,c,A){if(typeof l=="string")return C(l,c);if(ArrayBuffer.isView(l))return B(l);if(l==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof l);if(qe(l,ArrayBuffer)||l&&qe(l.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(qe(l,SharedArrayBuffer)||l&&qe(l.buffer,SharedArrayBuffer)))return I(l,c,A);if(typeof l=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let d=l.valueOf&&l.valueOf();if(d!=null&&d!==l)return u.from(d,c,A);let T=M(l);if(T)return T;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof l[Symbol.toPrimitive]=="function")return u.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)}u.from=function(l,c,A){return p(l,c,A)},Object.setPrototypeOf(u.prototype,Uint8Array.prototype),Object.setPrototypeOf(u,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 b(l,c,A){return h(l),l<=0?m(l):c!==void 0?typeof A=="string"?m(l).fill(c,A):m(l).fill(c):m(l)}u.alloc=function(l,c,A){return b(l,c,A)};function S(l){return h(l),m(l<0?0:F(l)|0)}u.allocUnsafe=function(l){return S(l)},u.allocUnsafeSlow=function(l){return S(l)};function C(l,c){if((typeof c!="string"||c==="")&&(c="utf8"),!u.isEncoding(c))throw new TypeError("Unknown encoding: "+c);let A=D(l,c)|0,d=m(A),T=d.write(l,c);return T!==A&&(d=d.slice(0,T)),d}function x(l){let c=l.length<0?0:F(l.length)|0,A=m(c);for(let d=0;d<c;d+=1)A[d]=l[d]&255;return A}function B(l){if(qe(l,Uint8Array)){let c=new Uint8Array(l);return I(c.buffer,c.byteOffset,c.byteLength)}return x(l)}function I(l,c,A){if(c<0||l.byteLength<c)throw new RangeError('"offset" is outside of buffer bounds');if(l.byteLength<c+(A||0))throw new RangeError('"length" is outside of buffer bounds');let d;return c===void 0&&A===void 0?d=new Uint8Array(l):A===void 0?d=new Uint8Array(l,c):d=new Uint8Array(l,c,A),Object.setPrototypeOf(d,u.prototype),d}function M(l){if(u.isBuffer(l)){let c=F(l.length)|0,A=m(c);return A.length===0||l.copy(A,0,0,c),A}if(l.length!==void 0)return typeof l.length!="number"||Or(l.length)?m(0):x(l);if(l.type==="Buffer"&&Array.isArray(l.data))return x(l.data)}function F(l){if(l>=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return l|0}function W(l){return+l!=l&&(l=0),u.alloc(+l)}u.isBuffer=function(c){return c!=null&&c._isBuffer===!0&&c!==u.prototype},u.compare=function(c,A){if(qe(c,Uint8Array)&&(c=u.from(c,c.offset,c.byteLength)),qe(A,Uint8Array)&&(A=u.from(A,A.offset,A.byteLength)),!u.isBuffer(c)||!u.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,T=A.length;for(let P=0,R=Math.min(d,T);P<R;++P)if(c[P]!==A[P]){d=c[P],T=A[P];break}return d<T?-1:T<d?1:0},u.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}},u.concat=function(c,A){if(!Array.isArray(c))throw new TypeError('"list" argument must be an Array of Buffers');if(c.length===0)return u.alloc(0);let d;if(A===void 0)for(A=0,d=0;d<c.length;++d)A+=c[d].length;let T=u.allocUnsafe(A),P=0;for(d=0;d<c.length;++d){let R=c[d];if(qe(R,Uint8Array))P+R.length>T.length?(u.isBuffer(R)||(R=u.from(R)),R.copy(T,P)):Uint8Array.prototype.set.call(T,R,P);else if(u.isBuffer(R))R.copy(T,P);else throw new TypeError('"list" argument must be an Array of Buffers');P+=R.length}return T};function D(l,c){if(u.isBuffer(l))return l.length;if(ArrayBuffer.isView(l)||qe(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 T=!1;for(;;)switch(c){case"ascii":case"latin1":case"binary":return A;case"utf8":case"utf-8":return Mr(l).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A*2;case"hex":return A>>>1;case"base64":return Ci(l).length;default:if(T)return d?-1:Mr(l).length;c=(""+c).toLowerCase(),T=!0}}u.byteLength=D;function G(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 je(this,c,A);case"utf8":case"utf-8":return ge(this,c,A);case"ascii":return Ce(this,c,A);case"latin1":case"binary":return Ve(this,c,A);case"base64":return Fe(this,c,A);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Oe(this,c,A);default:if(d)throw new TypeError("Unknown encoding: "+l);l=(l+"").toLowerCase(),d=!0}}u.prototype._isBuffer=!0;function Q(l,c,A){let d=l[c];l[c]=l[A],l[A]=d}u.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)Q(this,A,A+1);return this},u.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)Q(this,A,A+3),Q(this,A+1,A+2);return this},u.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)Q(this,A,A+7),Q(this,A+1,A+6),Q(this,A+2,A+5),Q(this,A+3,A+4);return this},u.prototype.toString=function(){let c=this.length;return c===0?"":arguments.length===0?ge(this,0,c):G.apply(this,arguments)},u.prototype.toLocaleString=u.prototype.toString,u.prototype.equals=function(c){if(!u.isBuffer(c))throw new TypeError("Argument must be a Buffer");return this===c?!0:u.compare(this,c)===0},u.prototype.inspect=function(){let c="",A=It.INSPECT_MAX_BYTES;return c=this.toString("hex",0,A).replace(/(.{2})/g,"$1 ").trim(),this.length>A&&(c+=" ... "),"<Buffer "+c+">"},r&&(u.prototype[r]=u.prototype.inspect),u.prototype.compare=function(c,A,d,T,P){if(qe(c,Uint8Array)&&(c=u.from(c,c.offset,c.byteLength)),!u.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),T===void 0&&(T=0),P===void 0&&(P=this.length),A<0||d>c.length||T<0||P>this.length)throw new RangeError("out of range index");if(T>=P&&A>=d)return 0;if(T>=P)return-1;if(A>=d)return 1;if(A>>>=0,d>>>=0,T>>>=0,P>>>=0,this===c)return 0;let R=P-T,_=d-A,ae=Math.min(R,_),te=this.slice(T,P),se=c.slice(A,d);for(let q=0;q<ae;++q)if(te[q]!==se[q]){R=te[q],_=se[q];break}return R<_?-1:_<R?1:0};function j(l,c,A,d,T){if(l.length===0)return-1;if(typeof A=="string"?(d=A,A=0):A>2147483647?A=2147483647:A<-2147483648&&(A=-2147483648),A=+A,Or(A)&&(A=T?0:l.length-1),A<0&&(A=l.length+A),A>=l.length){if(T)return-1;A=l.length-1}else if(A<0)if(T)A=0;else return-1;if(typeof c=="string"&&(c=u.from(c,d)),u.isBuffer(c))return c.length===0?-1:X(l,c,A,d,T);if(typeof c=="number")return c=c&255,typeof Uint8Array.prototype.indexOf=="function"?T?Uint8Array.prototype.indexOf.call(l,c,A):Uint8Array.prototype.lastIndexOf.call(l,c,A):X(l,[c],A,d,T);throw new TypeError("val must be string, number or Buffer")}function X(l,c,A,d,T){let P=1,R=l.length,_=c.length;if(d!==void 0&&(d=String(d).toLowerCase(),d==="ucs2"||d==="ucs-2"||d==="utf16le"||d==="utf-16le")){if(l.length<2||c.length<2)return-1;P=2,R/=2,_/=2,A/=2}function ae(se,q){return P===1?se[q]:se.readUInt16BE(q*P)}let te;if(T){let se=-1;for(te=A;te<R;te++)if(ae(l,te)===ae(c,se===-1?0:te-se)){if(se===-1&&(se=te),te-se+1===_)return se*P}else se!==-1&&(te-=te-se),se=-1}else for(A+_>R&&(A=R-_),te=A;te>=0;te--){let se=!0;for(let q=0;q<_;q++)if(ae(l,te+q)!==ae(c,q)){se=!1;break}if(se)return te}return-1}u.prototype.includes=function(c,A,d){return this.indexOf(c,A,d)!==-1},u.prototype.indexOf=function(c,A,d){return j(this,c,A,d,!0)},u.prototype.lastIndexOf=function(c,A,d){return j(this,c,A,d,!1)};function Pe(l,c,A,d){A=Number(A)||0;let T=l.length-A;d?(d=Number(d),d>T&&(d=T)):d=T;let P=c.length;d>P/2&&(d=P/2);let R;for(R=0;R<d;++R){let _=parseInt(c.substr(R*2,2),16);if(Or(_))return R;l[A+R]=_}return R}function Ae(l,c,A,d){return Cn(Mr(c,l.length-A),l,A,d)}function Ee(l,c,A,d){return Cn(cs(c),l,A,d)}function Ge(l,c,A,d){return Cn(Ci(c),l,A,d)}function Je(l,c,A,d){return Cn(As(c,l.length-A),l,A,d)}u.prototype.write=function(c,A,d,T){if(A===void 0)T="utf8",d=this.length,A=0;else if(d===void 0&&typeof A=="string")T=A,d=this.length,A=0;else if(isFinite(A))A=A>>>0,isFinite(d)?(d=d>>>0,T===void 0&&(T="utf8")):(T=d,d=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let P=this.length-A;if((d===void 0||d>P)&&(d=P),c.length>0&&(d<0||A<0)||A>this.length)throw new RangeError("Attempt to write outside buffer bounds");T||(T="utf8");let R=!1;for(;;)switch(T){case"hex":return Pe(this,c,A,d);case"utf8":case"utf-8":return Ae(this,c,A,d);case"ascii":case"latin1":case"binary":return Ee(this,c,A,d);case"base64":return Ge(this,c,A,d);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Je(this,c,A,d);default:if(R)throw new TypeError("Unknown encoding: "+T);T=(""+T).toLowerCase(),R=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Fe(l,c,A){return c===0&&A===l.length?a.fromByteArray(l):a.fromByteArray(l.slice(c,A))}function ge(l,c,A){A=Math.min(l.length,A);let d=[],T=c;for(;T<A;){let P=l[T],R=null,_=P>239?4:P>223?3:P>191?2:1;if(T+_<=A){let ae,te,se,q;switch(_){case 1:P<128&&(R=P);break;case 2:ae=l[T+1],(ae&192)===128&&(q=(P&31)<<6|ae&63,q>127&&(R=q));break;case 3:ae=l[T+1],te=l[T+2],(ae&192)===128&&(te&192)===128&&(q=(P&15)<<12|(ae&63)<<6|te&63,q>2047&&(q<55296||q>57343)&&(R=q));break;case 4:ae=l[T+1],te=l[T+2],se=l[T+3],(ae&192)===128&&(te&192)===128&&(se&192)===128&&(q=(P&15)<<18|(ae&63)<<12|(te&63)<<6|se&63,q>65535&&q<1114112&&(R=q))}}R===null?(R=65533,_=1):R>65535&&(R-=65536,d.push(R>>>10&1023|55296),R=56320|R&1023),d.push(R),T+=_}return Me(d)}let we=4096;function Me(l){let c=l.length;if(c<=we)return String.fromCharCode.apply(String,l);let A="",d=0;for(;d<c;)A+=String.fromCharCode.apply(String,l.slice(d,d+=we));return A}function Ce(l,c,A){let d="";A=Math.min(l.length,A);for(let T=c;T<A;++T)d+=String.fromCharCode(l[T]&127);return d}function Ve(l,c,A){let d="";A=Math.min(l.length,A);for(let T=c;T<A;++T)d+=String.fromCharCode(l[T]);return d}function je(l,c,A){let d=l.length;(!c||c<0)&&(c=0),(!A||A<0||A>d)&&(A=d);let T="";for(let P=c;P<A;++P)T+=us[l[P]];return T}function Oe(l,c,A){let d=l.slice(c,A),T="";for(let P=0;P<d.length-1;P+=2)T+=String.fromCharCode(d[P]+d[P+1]*256);return T}u.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 T=this.subarray(c,A);return Object.setPrototypeOf(T,u.prototype),T};function U(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")}u.prototype.readUintLE=u.prototype.readUIntLE=function(c,A,d){c=c>>>0,A=A>>>0,d||U(c,A,this.length);let T=this[c],P=1,R=0;for(;++R<A&&(P*=256);)T+=this[c+R]*P;return T},u.prototype.readUintBE=u.prototype.readUIntBE=function(c,A,d){c=c>>>0,A=A>>>0,d||U(c,A,this.length);let T=this[c+--A],P=1;for(;A>0&&(P*=256);)T+=this[c+--A]*P;return T},u.prototype.readUint8=u.prototype.readUInt8=function(c,A){return c=c>>>0,A||U(c,1,this.length),this[c]},u.prototype.readUint16LE=u.prototype.readUInt16LE=function(c,A){return c=c>>>0,A||U(c,2,this.length),this[c]|this[c+1]<<8},u.prototype.readUint16BE=u.prototype.readUInt16BE=function(c,A){return c=c>>>0,A||U(c,2,this.length),this[c]<<8|this[c+1]},u.prototype.readUint32LE=u.prototype.readUInt32LE=function(c,A){return c=c>>>0,A||U(c,4,this.length),(this[c]|this[c+1]<<8|this[c+2]<<16)+this[c+3]*16777216},u.prototype.readUint32BE=u.prototype.readUInt32BE=function(c,A){return c=c>>>0,A||U(c,4,this.length),this[c]*16777216+(this[c+1]<<16|this[c+2]<<8|this[c+3])},u.prototype.readBigUInt64LE=pt(function(c){c=c>>>0,Ut(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&zt(c,this.length-8);let T=A+this[++c]*2**8+this[++c]*2**16+this[++c]*2**24,P=this[++c]+this[++c]*2**8+this[++c]*2**16+d*2**24;return BigInt(T)+(BigInt(P)<<BigInt(32))}),u.prototype.readBigUInt64BE=pt(function(c){c=c>>>0,Ut(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&zt(c,this.length-8);let T=A*2**24+this[++c]*2**16+this[++c]*2**8+this[++c],P=this[++c]*2**24+this[++c]*2**16+this[++c]*2**8+d;return(BigInt(T)<<BigInt(32))+BigInt(P)}),u.prototype.readIntLE=function(c,A,d){c=c>>>0,A=A>>>0,d||U(c,A,this.length);let T=this[c],P=1,R=0;for(;++R<A&&(P*=256);)T+=this[c+R]*P;return P*=128,T>=P&&(T-=Math.pow(2,8*A)),T},u.prototype.readIntBE=function(c,A,d){c=c>>>0,A=A>>>0,d||U(c,A,this.length);let T=A,P=1,R=this[c+--T];for(;T>0&&(P*=256);)R+=this[c+--T]*P;return P*=128,R>=P&&(R-=Math.pow(2,8*A)),R},u.prototype.readInt8=function(c,A){return c=c>>>0,A||U(c,1,this.length),this[c]&128?(255-this[c]+1)*-1:this[c]},u.prototype.readInt16LE=function(c,A){c=c>>>0,A||U(c,2,this.length);let d=this[c]|this[c+1]<<8;return d&32768?d|4294901760:d},u.prototype.readInt16BE=function(c,A){c=c>>>0,A||U(c,2,this.length);let d=this[c+1]|this[c]<<8;return d&32768?d|4294901760:d},u.prototype.readInt32LE=function(c,A){return c=c>>>0,A||U(c,4,this.length),this[c]|this[c+1]<<8|this[c+2]<<16|this[c+3]<<24},u.prototype.readInt32BE=function(c,A){return c=c>>>0,A||U(c,4,this.length),this[c]<<24|this[c+1]<<16|this[c+2]<<8|this[c+3]},u.prototype.readBigInt64LE=pt(function(c){c=c>>>0,Ut(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&zt(c,this.length-8);let T=this[c+4]+this[c+5]*2**8+this[c+6]*2**16+(d<<24);return(BigInt(T)<<BigInt(32))+BigInt(A+this[++c]*2**8+this[++c]*2**16+this[++c]*2**24)}),u.prototype.readBigInt64BE=pt(function(c){c=c>>>0,Ut(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&zt(c,this.length-8);let T=(A<<24)+this[++c]*2**16+this[++c]*2**8+this[++c];return(BigInt(T)<<BigInt(32))+BigInt(this[++c]*2**24+this[++c]*2**16+this[++c]*2**8+d)}),u.prototype.readFloatLE=function(c,A){return c=c>>>0,A||U(c,4,this.length),i.read(this,c,!0,23,4)},u.prototype.readFloatBE=function(c,A){return c=c>>>0,A||U(c,4,this.length),i.read(this,c,!1,23,4)},u.prototype.readDoubleLE=function(c,A){return c=c>>>0,A||U(c,8,this.length),i.read(this,c,!0,52,8)},u.prototype.readDoubleBE=function(c,A){return c=c>>>0,A||U(c,8,this.length),i.read(this,c,!1,52,8)};function le(l,c,A,d,T,P){if(!u.isBuffer(l))throw new TypeError('"buffer" argument must be a Buffer instance');if(c>T||c<P)throw new RangeError('"value" argument is out of bounds');if(A+d>l.length)throw new RangeError("Index out of range")}u.prototype.writeUintLE=u.prototype.writeUIntLE=function(c,A,d,T){if(c=+c,A=A>>>0,d=d>>>0,!T){let _=Math.pow(2,8*d)-1;le(this,c,A,d,_,0)}let P=1,R=0;for(this[A]=c&255;++R<d&&(P*=256);)this[A+R]=c/P&255;return A+d},u.prototype.writeUintBE=u.prototype.writeUIntBE=function(c,A,d,T){if(c=+c,A=A>>>0,d=d>>>0,!T){let _=Math.pow(2,8*d)-1;le(this,c,A,d,_,0)}let P=d-1,R=1;for(this[A+P]=c&255;--P>=0&&(R*=256);)this[A+P]=c/R&255;return A+d},u.prototype.writeUint8=u.prototype.writeUInt8=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,1,255,0),this[A]=c&255,A+1},u.prototype.writeUint16LE=u.prototype.writeUInt16LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,65535,0),this[A]=c&255,this[A+1]=c>>>8,A+2},u.prototype.writeUint16BE=u.prototype.writeUInt16BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,65535,0),this[A]=c>>>8,this[A+1]=c&255,A+2},u.prototype.writeUint32LE=u.prototype.writeUInt32LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,4294967295,0),this[A+3]=c>>>24,this[A+2]=c>>>16,this[A+1]=c>>>8,this[A]=c&255,A+4},u.prototype.writeUint32BE=u.prototype.writeUInt32BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,4294967295,0),this[A]=c>>>24,this[A+1]=c>>>16,this[A+2]=c>>>8,this[A+3]=c&255,A+4};function wn(l,c,A,d,T){wi(c,d,T,l,A,7);let P=Number(c&BigInt(4294967295));l[A++]=P,P=P>>8,l[A++]=P,P=P>>8,l[A++]=P,P=P>>8,l[A++]=P;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 hi(l,c,A,d,T){wi(c,d,T,l,A,7);let P=Number(c&BigInt(4294967295));l[A+7]=P,P=P>>8,l[A+6]=P,P=P>>8,l[A+5]=P,P=P>>8,l[A+4]=P;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}u.prototype.writeBigUInt64LE=pt(function(c,A=0){return wn(this,c,A,BigInt(0),BigInt("0xffffffffffffffff"))}),u.prototype.writeBigUInt64BE=pt(function(c,A=0){return hi(this,c,A,BigInt(0),BigInt("0xffffffffffffffff"))}),u.prototype.writeIntLE=function(c,A,d,T){if(c=+c,A=A>>>0,!T){let ae=Math.pow(2,8*d-1);le(this,c,A,d,ae-1,-ae)}let P=0,R=1,_=0;for(this[A]=c&255;++P<d&&(R*=256);)c<0&&_===0&&this[A+P-1]!==0&&(_=1),this[A+P]=(c/R>>0)-_&255;return A+d},u.prototype.writeIntBE=function(c,A,d,T){if(c=+c,A=A>>>0,!T){let ae=Math.pow(2,8*d-1);le(this,c,A,d,ae-1,-ae)}let P=d-1,R=1,_=0;for(this[A+P]=c&255;--P>=0&&(R*=256);)c<0&&_===0&&this[A+P+1]!==0&&(_=1),this[A+P]=(c/R>>0)-_&255;return A+d},u.prototype.writeInt8=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,1,127,-128),c<0&&(c=255+c+1),this[A]=c&255,A+1},u.prototype.writeInt16LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,32767,-32768),this[A]=c&255,this[A+1]=c>>>8,A+2},u.prototype.writeInt16BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,32767,-32768),this[A]=c>>>8,this[A+1]=c&255,A+2},u.prototype.writeInt32LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,2147483647,-2147483648),this[A]=c&255,this[A+1]=c>>>8,this[A+2]=c>>>16,this[A+3]=c>>>24,A+4},u.prototype.writeInt32BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,2147483647,-2147483648),c<0&&(c=4294967295+c+1),this[A]=c>>>24,this[A+1]=c>>>16,this[A+2]=c>>>8,this[A+3]=c&255,A+4},u.prototype.writeBigInt64LE=pt(function(c,A=0){return wn(this,c,A,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),u.prototype.writeBigInt64BE=pt(function(c,A=0){return hi(this,c,A,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function Ti(l,c,A,d,T,P){if(A+d>l.length)throw new RangeError("Index out of range");if(A<0)throw new RangeError("Index out of range")}function bi(l,c,A,d,T){return c=+c,A=A>>>0,T||Ti(l,c,A,4),i.write(l,c,A,d,23,4),A+4}u.prototype.writeFloatLE=function(c,A,d){return bi(this,c,A,!0,d)},u.prototype.writeFloatBE=function(c,A,d){return bi(this,c,A,!1,d)};function Si(l,c,A,d,T){return c=+c,A=A>>>0,T||Ti(l,c,A,8),i.write(l,c,A,d,52,8),A+8}u.prototype.writeDoubleLE=function(c,A,d){return Si(this,c,A,!0,d)},u.prototype.writeDoubleBE=function(c,A,d){return Si(this,c,A,!1,d)},u.prototype.copy=function(c,A,d,T){if(!u.isBuffer(c))throw new TypeError("argument should be a Buffer");if(d||(d=0),!T&&T!==0&&(T=this.length),A>=c.length&&(A=c.length),A||(A=0),T>0&&T<d&&(T=d),T===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(T<0)throw new RangeError("sourceEnd out of bounds");T>this.length&&(T=this.length),c.length-A<T-d&&(T=c.length-A+d);let P=T-d;return this===c&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(A,d,T):Uint8Array.prototype.set.call(c,this.subarray(d,T),A),P},u.prototype.fill=function(c,A,d,T){if(typeof c=="string"){if(typeof A=="string"?(T=A,A=0,d=this.length):typeof d=="string"&&(T=d,d=this.length),T!==void 0&&typeof T!="string")throw new TypeError("encoding must be a string");if(typeof T=="string"&&!u.isEncoding(T))throw new TypeError("Unknown encoding: "+T);if(c.length===1){let R=c.charCodeAt(0);(T==="utf8"&&R<128||T==="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 P;if(typeof c=="number")for(P=A;P<d;++P)this[P]=c;else{let R=u.isBuffer(c)?c:u.from(c,T),_=R.length;if(_===0)throw new TypeError('The value "'+c+'" is invalid for argument "value"');for(P=0;P<d-A;++P)this[P+A]=R[P%_]}return this};let Wt={};function Fr(l,c,A){Wt[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(T){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:T,writable:!0})}toString(){return`${this.name} [${l}]: ${this.message}`}}}Fr("ERR_BUFFER_OUT_OF_BOUNDS",function(l){return l?`${l} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),Fr("ERR_INVALID_ARG_TYPE",function(l,c){return`The "${l}" argument must be of type number. Received type ${typeof c}`},TypeError),Fr("ERR_OUT_OF_RANGE",function(l,c,A){let d=`The value of "${l}" is out of range.`,T=A;return Number.isInteger(A)&&Math.abs(A)>2**32?T=Pi(String(A)):typeof A=="bigint"&&(T=String(A),(A>BigInt(2)**BigInt(32)||A<-(BigInt(2)**BigInt(32)))&&(T=Pi(T)),T+="n"),d+=` It must be ${c}. Received ${T}`,d},RangeError);function Pi(l){let c="",A=l.length,d=l[0]==="-"?1:0;for(;A>=d+4;A-=3)c=`_${l.slice(A-3,A)}${c}`;return`${l.slice(0,A)}${c}`}function as(l,c,A){Ut(c,"offset"),(l[c]===void 0||l[c+A]===void 0)&&zt(c,l.length-(A+1))}function wi(l,c,A,d,T,P){if(l>A||l<c){let R=typeof c=="bigint"?"n":"",_;throw c===0||c===BigInt(0)?_=`>= 0${R} and < 2${R} ** ${(P+1)*8}${R}`:_=`>= -(2${R} ** ${(P+1)*8-1}${R}) and < 2 ** ${(P+1)*8-1}${R}`,new Wt.ERR_OUT_OF_RANGE("value",_,l)}as(d,T,P)}function Ut(l,c){if(typeof l!="number")throw new Wt.ERR_INVALID_ARG_TYPE(c,"number",l)}function zt(l,c,A){throw Math.floor(l)!==l?(Ut(l,A),new Wt.ERR_OUT_OF_RANGE("offset","an integer",l)):c<0?new Wt.ERR_BUFFER_OUT_OF_BOUNDS:new Wt.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${c}`,l)}let ss=/[^+/0-9A-Za-z-_]/g;function os(l){if(l=l.split("=")[0],l=l.trim().replace(ss,""),l.length<2)return"";for(;l.length%4!==0;)l=l+"=";return l}function Mr(l,c){c=c||1/0;let A,d=l.length,T=null,P=[];for(let R=0;R<d;++R){if(A=l.charCodeAt(R),A>55295&&A<57344){if(!T){if(A>56319){(c-=3)>-1&&P.push(239,191,189);continue}else if(R+1===d){(c-=3)>-1&&P.push(239,191,189);continue}T=A;continue}if(A<56320){(c-=3)>-1&&P.push(239,191,189),T=A;continue}A=(T-55296<<10|A-56320)+65536}else T&&(c-=3)>-1&&P.push(239,191,189);if(T=null,A<128){if((c-=1)<0)break;P.push(A)}else if(A<2048){if((c-=2)<0)break;P.push(A>>6|192,A&63|128)}else if(A<65536){if((c-=3)<0)break;P.push(A>>12|224,A>>6&63|128,A&63|128)}else if(A<1114112){if((c-=4)<0)break;P.push(A>>18|240,A>>12&63|128,A>>6&63|128,A&63|128)}else throw new Error("Invalid code point")}return P}function cs(l){let c=[];for(let A=0;A<l.length;++A)c.push(l.charCodeAt(A)&255);return c}function As(l,c){let A,d,T,P=[];for(let R=0;R<l.length&&!((c-=2)<0);++R)A=l.charCodeAt(R),d=A>>8,T=A%256,P.push(T),P.push(d);return P}function Ci(l){return a.toByteArray(os(l))}function Cn(l,c,A,d){let T;for(T=0;T<d&&!(T+A>=c.length||T>=l.length);++T)c[T+A]=l[T];return T}function qe(l,c){return l instanceof c||l!=null&&l.constructor!=null&&l.constructor.name!=null&&l.constructor.name===c.name}function Or(l){return l!==l}let us=function(){let l="0123456789abcdef",c=new Array(256);for(let A=0;A<16;++A){let d=A*16;for(let T=0;T<16;++T)c[d+T]=l[A]+l[T]}return c}();function pt(l){return typeof BigInt>"u"?ms:l}function ms(){throw new Error("BigInt not supported")}return It}var qt,vi,Bn,ki,It,xi,Mi=Ct(()=>{g();y();f();qt={},vi=!1;Bn={},ki=!1;It={},xi=!1});var Rt,w,Wc,Uc,Oi=Ct(()=>{g();y();f();Mi();Rt=Fi();Rt.Buffer;Rt.SlowBuffer;Rt.INSPECT_MAX_BYTES;Rt.kMaxLength;w=Rt.Buffer,Wc=Rt.INSPECT_MAX_BYTES,Uc=Rt.kMaxLength});var y=Ct(()=>{Oi()});import{bcs as ke}from"@mysten/sui/bcs";function so(a,i=["<",">"]){let[r,s]=i,o=[],m="",u=0;for(let p=0;p<a.length;p++){let h=a[p];if(h===r&&u++,h===s&&u--,u===0&&h===","){o.push(m.trim()),m="";continue}m+=h}return o.push(m.trim()),o}function be(a){if(typeof a!="string")throw new Error(`Illegal type passed as a name of the type: ${a}`);let[i,r]=["<",">"],s=a.indexOf(i),o=Array.from(a).reverse().indexOf(r);if(s===-1&&o===-1)return{typeName:a,typeArgs:[]};if(s===-1||o===-1)throw new Error(`Unclosed generic in name '${a}'`);let m=a.slice(0,s),u=so(a.slice(s+1,a.length-o-1),[i,r]);return{typeName:m,typeArgs:u}}function Ca(a){return!a||typeof a!="object"||Array.isArray(a)?!1:"GasCoin"in a||"Input"in a||"Result"in a||"NestedResult"in a}function V(a,i){return Ca(i)?i:a.object(i)}function _e(a,i,r){if(Ca(i))return V(a,i);function s(b){let{typeName:S,typeArgs:C}=be(b);switch(S){case"bool":return ke.Bool;case"u8":return ke.U8;case"u16":return ke.U16;case"u32":return ke.U32;case"u64":return ke.U64;case"u128":return ke.U128;case"u256":return ke.U256;case"address":return ke.Address;case"0x1::string::String":case"0x1::ascii::String":return ke.String;case"0x2::object::ID":return ke.Address;case"0x1::option::Option":return ke.option(s(C[0]));case"vector":return ke.vector(s(C[0]));default:throw new Error(`invalid primitive type ${b}`)}}function o(b){for(let S of b){if(typeof S>"u"||S===null)return!0;if(Array.isArray(S))return o(S)}return!1}function m(b){for(let S of b){if(!Array.isArray(S)){if(S===null)continue;switch(typeof S){case"string":case"number":case"bigint":case"boolean":continue;default:return!1}}return m(S)}return!0}function u(b){for(let S of b){if(!Array.isArray(S))switch(typeof S){case"string":case"number":case"bigint":case"boolean":return!0;default:continue}return u(S)}return!1}let{typeName:p,typeArgs:h}=be(r);switch(p){case"0x1::option::Option":if(i===null)return a.pure.option("bool",null);if(m([i]))return a.pure(s(r).serialize(i));if(u([i]))throw new Error("mixing primitive and TransactionArgument values is not supported");return a.moveCall({target:"0x1::option::some",typeArguments:[h[0]],arguments:[_e(a,i,h[0])]});case"vector":if(!Array.isArray(i))throw new Error("expected an array for vector type");if(i.length===0)return a.pure(ke.vector(ke.Bool).serialize([]));if(o(i))throw new Error("the provided array contains undefined or null values");if(m(i))return a.pure(s(r).serialize(i));if(u(i))throw new Error("mixing primitive and TransactionArgument values is not supported");return a.makeMoveVec({type:h[0],elements:i});default:return a.pure(s(r).serialize(i))}}function oo(a){let i=a.split("0x").join("");for(let r=0;r<i.length;r++)if(i[r]!=="0")return`0x${i.substring(r)}`;return"0x0"}function E(a){let{typeName:i,typeArgs:r}=be(a);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<${E(r[0])}>`;default:{let s=i.split("::");s[0]=oo(s[0]);let o=s.join("::");return r.length>0?`${o}<${r.map(m=>E(m)).join(",")}>`:o}}}function K(a,...i){return i.length>0?`${a}<${i.join(", ")}>`:a}var fe=Ct(()=>{"use strict";g();y();f()});var ht=Nr((vp,Ba)=>{"use strict";g();y();f();fe();var qr=class a{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return E(a.$PACKAGE_ID)}get PUBLISHED_AT(){return E(a.$PUBLISHED_AT)}get PKG_V1(){return E(a.$PKG_V[1])}setPackageId(i){a.$PACKAGE_ID=i}setPublishedAt(i){a.$PUBLISHED_AT=i}setPkgV(i,r){a.$PKG_V[i]=r}setAddress(i,r){a.$PACKAGE_ID=i,a.$PUBLISHED_AT=i,a.$PKG_V[1]=r||i}},co=new qr;Ba.exports=co});var ri=Nr((Ep,Ma)=>{"use strict";g();y();f();fe();var ni=class a{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return E(a.$PACKAGE_ID)}get PUBLISHED_AT(){return E(a.$PUBLISHED_AT)}get PKG_V1(){return E(a.$PKG_V[1])}setPackageId(i){a.$PACKAGE_ID=i}setPublishedAt(i){a.$PUBLISHED_AT=i}setPkgV(i,r){a.$PKG_V[i]=r}setAddress(i,r){a.$PACKAGE_ID=i,a.$PUBLISHED_AT=i,a.$PKG_V[1]=r||i}},Ao=new ni;Ma.exports=Ao});var si=Nr((Yp,Na)=>{"use strict";g();y();f();fe();var ai=class a{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return E(a.$PACKAGE_ID)}get PUBLISHED_AT(){return E(a.$PUBLISHED_AT)}get PKG_V1(){return E(a.$PKG_V[1])}setPackageId(i){a.$PACKAGE_ID=i}setPublishedAt(i){a.$PUBLISHED_AT=i}setPkgV(i,r){a.$PKG_V[i]=r}setAddress(i,r){a.$PACKAGE_ID=i,a.$PUBLISHED_AT=i,a.$PKG_V[1]=r||i}},uo=new ai;Na.exports=uo});g();y();f();g();y();f();g();y();f();var In={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},$c={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},Jc={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();import{Big as xe}from"big.js";g();y();f();g();y();f();g();y();f();var me=class extends Error{errorCode;constructor(i,r){super(r),this.errorCode=i}},O=class extends me{constructor(i){super("SdkError",i)}},ct=class extends me{constructor(i){super("InvalidAmountError",i)}},Et=class extends me{constructor(i){super("AmountNotEnoughError",i)}},At=class extends me{constructor(i){super("InsufficientPoolLiquidityError",i)}},ye=class extends me{constructor(i){super("JupiterError",i)}},en=class extends me{constructor(i){super("InvalidGasFeePaymentOptionError",i)}},Ni=class extends me{constructor(i){super("InvalidMessengerOptionError",i)}},de=class extends me{constructor(i){super("MethodNotSupportedError",i)}},tn=class extends me{constructor(i){super("VerifyTxError",i)}},Gt=class extends me{constructor(i){super("InvalidTxError",i)}},Rn=class extends me{constructor(i){super("ExtraGasMaxLimitExceededError",i)}},vn=class extends me{constructor(i,r,s){super("ArgumentInvalidDecimalsError",`Argument '${i}' decimals '${r}' cannot be greater than '${s}'`)}},nn=class extends me{constructor(i){super("TimeoutError",i)}},kn=class extends me{constructor(i){super("NodeRpcUrlNotInitializedError",`For chain '${i}' Node RPC URL not initialized`)}},Be=class extends me{constructor(i){super("CCTPDoesNotSupportedError",i)}},xn=class extends me{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},Ss=(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.TX_TOO_LARGE="TxTooLargeError",F))(Ss||{});g();y();f();var Ze=(I=>(I.BSC="BSC",I.ETH="ETH",I.BAS="BAS",I.SOL="SOL",I.TRX="TRX",I.POL="POL",I.ARB="ARB",I.CEL="CEL",I.AVA="AVA",I.SRB="SRB",I.STLR="STLR",I.OPT="OPT",I.SUI="SUI",I.SNC="SNC",I))(Ze||{}),ie=(m=>(m.EVM="EVM",m.SOLANA="SOLANA",m.TRX="TRX",m.SRB="SRB",m.SUI="SUI",m))(ie||{});var Ps={EVM:18,SOLANA:9,TRX:6,SRB:7,SUI:9},ws={BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SNC:{chainSymbol:"SNC",chainId:"0x92",name:"Sonic",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"},SUI:{chainSymbol:"SUI",name:"Sui",chainType:"SUI"}},H=(()=>{let a={...ws};return{addChainsProperties(i){a={...a,...i}},getChainProperty(i){let r=a[i];if(!r)throw new O(`Cannot find chain properties for ${i}`);return r},getChainsProperties(){return a},getChainDecimalsByType(i){return Ps[i]}}})();g();y();f();import ks from"axios";g();y();f();var Di="3.23.0-beta.1";g();y();f();g();y();f();import{Big as N}from"big.js";import Ur from"bn.js";g();y();f();function Er(a,i){return N(100).minus(N(100).times(i).div(a)).toNumber()}function vt(a,i){return et(a,i,3).round(0,N.roundDown)}function Ne(a,i){return et(a,3,i)}function et(a,i,r){let s=N(r).minus(i).toNumber();return N(a).times(rn(s))}function rn(a){return N(10).pow(a)}function z(a,i){return N(a).times(rn(i))}function Y(a,i){let r=N(a);return r.eq(0)?N(0):N(r).div(rn(i))}function Ie(a){return Y(N(a.tokenBalance).minus(a.vUsdBalance).toFixed(),3).div(2).toFixed()}function tt(a,{feeShare:i,decimals:r},s){let o=N(a);if(o.lte(0))return"0";let m=o.times(i),u=o.minus(m),p=vt(u,r),h=N(s.tokenBalance).plus(p),b=nt(h,s.aValue,s.dValue);return N(s.vUsdBalance).minus(b).round(0,N.roundDown).toFixed()}function an(a,{feeShare:i,decimals:r},s){let o=N(a);if(o.lte(0))return N(0).toFixed();let m=o.plus(s.vUsdBalance),u=nt(m,s.aValue,s.dValue),p=Ne(N(s.tokenBalance).minus(u),r),h=N(p).times(i);return N(p).minus(h).round(0,N.roundDown).toFixed()}function Wi(a,i){let r=N(a);if(r.lte(0))return i;let s=r.plus(i.vUsdBalance),o=nt(s,i.aValue,i.dValue);return{aValue:i.aValue,dValue:i.dValue,tokenBalance:o.toFixed(0),vUsdBalance:s.toFixed(0)}}function Ui(a,{feeShare:i,decimals:r},s){if(N(a).lte(0))return N(0);let o=N(s.vUsdBalance).minus(a);if(o.lte(0))throw new At;let m=nt(o,s.aValue,s.dValue),u=N(m).minus(s.tokenBalance),p=Ne(u,r),h=N(i).div(N(1).minus(i)),b=N(p).times(h).round(0,N.roundUp);return N(p).plus(b).round(0,N.roundDown)}function Ei(a,{feeShare:i,decimals:r},s){if(N(a).lte(0))return N(0);let o=N(i).div(N(1).minus(i)),m=N(a).times(o).round(0,N.roundUp),u=N(a).plus(m),p=vt(u,r),h=N(s.tokenBalance).minus(p);if(h.lte(0))throw new At;let b=nt(h,s.aValue,s.dValue);return N(b).minus(s.vUsdBalance).round(0,N.roundDown)}function nt(a,i,r){let s=N(4).times(i).times(N(r).minus(a)).minus(r),o=N(r).pow(3),m=s.pow(2),u=N(a).times(N(a).times(m).plus(N(4).times(i).times(o))).sqrt().round(0,N.roundDown),p=N(8).times(i).times(a),h=s.times(a).plus(u).div(p).round(0,N.roundDown);return h.eq(0)?N(0):h.plus(1)}function Gi(a,i,r,s){let o=new Ur(a),m=new Ur(r),u=new Ur(i);return o.mul(m).shrn(s).sub(u).toString()}function Vi(a){return N(a).gt(0)?`${Number(N(a).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function ji(a,i,r){let s=N(i).times(r),o=N(i).plus(r),m=N(8).times(a).times(s).times(o),u=s.times(N(16).times(a).minus(4)).div(3),p=m.times(m),h=u.times(u).times(u),b=p.plus(h),S=N(b).sqrt(),C=N(Math.cbrt(+m.plus(S).toFixed())),x=N(Math.cbrt(+m.minus(S).toFixed()));return C.plus(x).toFixed()}g();y();f();var Gr=(u=>(u.OK="OK",u.INVALID="INVALID",u.FORBIDDEN="FORBIDDEN",u.UNINITIALIZED="UNINITIALIZED",u.CONTRACT_ADDRESS="CONTRACT_ADDRESS",u.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",u))(Gr||{});var rt=(o=>(o[o.ALLBRIDGE=1]="ALLBRIDGE",o[o.WORMHOLE=2]="WORMHOLE",o[o.CCTP=3]="CCTP",o[o.CCTP_V2=4]="CCTP_V2",o))(rt||{});function Zi(a){return Object.entries(a).reduce((i,r)=>{let s=r[0],o=r[1],m=vs(s,o);return m&&(i[s]=m),i},{})}function _i(a){let i={};for(let[r,s]of Object.entries(a)){let o=r;for(let m of s.tokens){let u=Vt({chainSymbol:o,poolAddress:m.poolAddress}),p=Ie(m.poolInfo);i[u]={...m.poolInfo,imbalance:p}}}return i}function Cs(a,i){let{name:r,...s}=a,{poolInfo:o,...m}=i;return{...m,...s,chainName:r}}function Bs(a){switch(a){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;case"cctpV2":return 4}}function Is(a){return Object.entries(a).reduce((i,[r,s])=>(i[r]=Rs(s),i),{})}function Rs(a){return Object.entries(a).reduce((i,[r,s])=>{let o=Bs(r);return o&&(i[o]=s),i},{})}function vs(a,i){let r=H.getChainsProperties()[a];if(!r)return null;let s={...r,allbridgeChainId:i.chainId,bridgeAddress:i.bridgeAddress,transferTime:Is(i.transferTime),txCostAmount:i.txCostAmount,confirmations:i.confirmations,suiAddresses:i.suiAddresses};return{...s,tokens:i.tokens.map(o=>Cs(s,o))}}function Vt(a){return a.chainSymbol+"_"+a.poolAddress}function $i(a){let i=[];for(let[r,s]of Object.entries(a)){let o=r;for(let m of s.tokens)i.push({chainSymbol:o,poolAddress:m.poolAddress})}return i}function Ji(a){let i={};for(let[r,s]of Object.entries(a)){let o=r;for(let[m,u]of Object.entries(s))u.imbalance=Ie(u),i[Vt({chainSymbol:o,poolAddress:m})]=u}return i}var Fn=class{api;constructor(i){this.api=ks.create({baseURL:i.coreApiUrl,headers:{Accept:"application/json",...i.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+Di},params:i.coreApiQueryParams})}async getTokenInfo(){let{data:i}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:Zi(i),poolInfoMap:_i(i)}}async getPendingInfo(){let{data:i}=await this.api.get("/pending-info");return i}async getGasBalance(i,r){let{data:s}=await this.api.get(`/check/${i}/${r}`);return s}async getTransferStatus(i,r){let{data:s}=await this.api.get(`/chain/${i}/${r}`);return s}async getReceiveTransactionCost(i){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}}async getPoolInfoMap(i){let r=i instanceof Array?i:[i],{data:s}=await this.api.post("/pool-info",{pools:r},{headers:{"Content-Type":"application/json"}});return Ji(s)}};g();y();f();import Mn from"timed-cache";var Vr=20*1e3,xs=55*1e3,On=class{constructor(i){this.apiClient=i;this.tokenInfoCache=new Mn({defaultTtl:xs}),this.receivedTransactionCache=new Mn({defaultTtl:Vr}),this.pendingInfoCache=new Mn({defaultTtl:Vr}),this.gasBalanceCache=new Mn({defaultTtl:Vr})}tokenInfoCache;pendingInfoCache;gasBalanceCache;receivedTransactionCache;getTokenInfo(){let i="TOKEN_INFO_CACHE_KEY",r=this.tokenInfoCache.get(i);if(r)return r;let s=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(i,s),s}async getGasBalance(i,r){let s=`GAS_BALANCE_${i}_${r}`,o=this.gasBalanceCache.get(s);if(o)return o;let m=this.apiClient.getGasBalance(i,r);return this.gasBalanceCache.put(s,m),m}async getPendingInfo(){let i="PENDING_INFO_CACHE_KEY",r=this.pendingInfoCache.get(i);if(r)return r;let s=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(i,s),s}async getReceiveTransactionCost(i){let r=`RECEIVE_TX_COST_${i.sourceChainId}_${i.destinationChainId}_${i.messenger}`,s=this.receivedTransactionCache.get(r);if(s)return s;let o=await this.apiClient.getReceiveTransactionCost(i);return this.receivedTransactionCache.put(r,o),o}async getTransferStatus(i,r){return this.apiClient.getTransferStatus(i,r)}async getPoolInfoMap(i){return this.apiClient.getPoolInfoMap(i)}};g();y();f();var Nn=class{constructor(i){this.apiClient=i}async getChainDetailsMap(){return(await this.apiClient.getTokenInfo()).chainDetailsMap}async tokens(){let i=await this.getChainDetailsMap();return Object.values(i).flatMap(r=>r.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(i,r){return this.apiClient.getGasBalance(i,r)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(i,r){return await this.apiClient.getTransferStatus(i,r)}async getReceiveTransactionCost(i){return await this.apiClient.getReceiveTransactionCost(i)}async getPoolInfoMap(i){return await this.apiClient.getPoolInfoMap(i)}};g();y();f();var Dn=class{constructor(i,r){this.client=i;this.isStaging=r.coreApiQueryParams?.staging==="true"}isStaging;async getChainDetailsMap(i){let r=await this.client.getChainDetailsMap(),s={};for(let o in r){let m=r[o];m&&(s[o]={...m,tokens:Li(m.tokens,i,this.isStaging)})}return s}async tokens(i){return Li(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 Li(a,i,r){return a.filter(s=>r?!0:s.flags[i]).map(Fs)}function Fs(a){let{flags:i,...r}=a;return r}g();y();f();import Ms from"timed-cache";var Os=55*1e3,Wn=class{constructor(i){this.client=i;this.poolInfoCache=new jr}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 s=await this.client.getPoolInfoMap(i);this.poolInfoCache.putAll(s);let o=s[Vt(i)];if(o)return o;throw new O("Cannot find pool info for "+i.poolAddress+" on chain "+i.chainSymbol)}}async refreshPoolInfo(i){let r;if(i)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),r=await this.client.getPoolInfoMap(i);else{let s=await this.client.getChainDetailsMapAndPoolInfoMap();r=await this.client.getPoolInfoMap($i(s.chainDetailsMap))}this.poolInfoCache.putAll(r)}cachePut(i,r){this.poolInfoCache.put(Vt(i),r)}},jr=class{cache;constructor(){this.cache=new Ms({defaultTtl:Os})}putAll(i){for(let[r,s]of Object.entries(i))this.cache.put(r,s)}putAllIfNotExists(i){for(let[r,s]of Object.entries(i))this.cache.get(r)||this.cache.put(r,s)}put(i,r){this.cache.put(i,r)}get(i){let r=Vt(i);return this.cache.get(r)}};g();y();f();g();y();f();g();y();f();import{TronWeb as wo}from"tronweb";import{Web3 as Co}from"web3";g();y();f();import{Big as Xi}from"big.js";async function pe(a,i){return await a.getPoolInfoByKey({chainSymbol:i.chainSymbol,poolAddress:i.poolAddress})}function ee(a){if(Xi(a).lte(0))throw new ct("Amount must be greater than zero")}function ne(a,i,r){let s=Xi(i).toFixed(),[o,m]=s.split(".");if(m&&m.length>r)throw new vn(a,m.length,r)}async function Un(a,i,r){return await Promise.race([a,new Promise((s,o)=>{setTimeout(()=>o(new nn(i)),r)})])}async function Zr(a,i,r,s){if(r<1)throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${r} was received.`);let o=0;for(;;)try{return await Un(a(),i,s)}catch{if(++o>=r)throw new nn(i)}}async function Yi(a,i,r,s=1.5,o=!1){let m=[],u=0,p=await a();if(m.push(p),!i(p))return m;let h=new Date(Date.now()+r*1e3).valueOf(),b=1e3,S=b;for(;Date.now()<h;){let C=m[m.length-1];if(C===void 0||!i(C))break;u++,o&&console.info(`Waiting ${b}ms before trying again (bringing the total wait time to ${S}ms so far, of total ${r*1e3}ms)`),await new Promise(B=>setTimeout(B,b)),b=b*s,new Date(Date.now()+b).valueOf()>h&&(b=h-Date.now(),o&&console.info(`was gonna wait too long; new waitTime: ${b}ms`)),S=b+S;let x=await a(C);m.push(x),o&&i(x)&&console.info(`${u}. Called ${a.name}; ${m.length} prev attempts. Most recent: ${JSON.stringify(m[m.length-1],null,2)}`)}return m}g();y();f();import{Big as Js}from"big.js";g();y();f();var Ns={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=Ns;g();y();f();var Ds={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=Ds;g();y();f();import*as Vn from"@project-serum/anchor";import{PublicKey as ua}from"@solana/web3.js";g();y();f();import*as Te from"@project-serum/anchor";import{PublicKey as Re}from"@solana/web3.js";async function Xe(a,i){return Te.utils.token.associatedAddress({mint:i,owner:a})}async function gt(a){let[i]=await Re.findProgramAddress([Te.utils.bytes.utf8.encode("config")],a);return i}async function Qi(a,i){let[r]=await Re.findProgramAddress([Te.utils.bytes.utf8.encode("lock"),Uint8Array.from(a)],i);return r}async function sn(a,i){let[r]=await Re.findProgramAddress([Te.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([a])],i);return r}async function jt(a){let i=await gt(a),[r]=await Re.findProgramAddress([i.toBuffer()],a);return r}async function zi(a,i){let[r]=await Re.findProgramAddress([a.toBuffer()],i);return r}async function Zt(a,i){let[r]=await Re.findProgramAddress([Te.utils.bytes.utf8.encode("token"),a.toBytes()],i);return r}async function qi(a,i,r){let[s]=await Re.findProgramAddress([Te.utils.bytes.utf8.encode("other_bridge_token"),w.from([a]),i],r);return s}async function _r(a,i){let[r]=await Re.findProgramAddress([Te.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([a])],i);return r}async function $r(a,i){let[r]=await Re.findProgramAddress([Te.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([a])],i);return r}async function ea(a,i){let[r]=await Re.findProgramAddress([Te.utils.bytes.utf8.encode("sent_message"),a],i);return r}async function Jr(a,i,r){let[s]=await Re.findProgramAddress([Te.utils.bytes.utf8.encode("user_deposit"),i.toBytes(),a.toBytes()],r);return s}async function ta(a,i){let[r]=await Re.findProgramAddress([Te.utils.bytes.utf8.encode("cctp_bridge"),a.toBytes()],i);return r}async function na(a,i){let[r]=await Re.findProgramAddress([Te.utils.bytes.utf8.encode("token"),a.toBytes()],i);return r}function ra(a,i){let[r]=Re.findProgramAddressSync([Te.utils.bytes.utf8.encode("lock"),i.toBuffer()],a);return r}function ia(a,i,r,s){let o=kt("message_transmitter",r),m=kt("token_messenger",s),u=kt("__event_authority",s),p=kt("token_minter",s),h=kt("local_token",s,[i]),b=kt("remote_token_messenger",s,[a.toString()]),S=kt("sender_authority",s);return{messageTransmitterAccount:o,tokenMessenger:m,tokenMessengerEventAuthority:u,tokenMinter:p,localToken:h,remoteTokenMessengerKey:b,authorityPda:S}}function kt(a,i,r=[]){let s=[w.from(Te.utils.bytes.utf8.encode(a))];for(let m of r)typeof m=="string"?s.push(w.from(Te.utils.bytes.utf8.encode(m))):Array.isArray(m)?s.push(w.from(Uint8Array.from(m))):w.isBuffer(m)?s.push(w.from(Uint8Array.from(m))):s.push(w.from(Uint8Array.from(m.toBuffer())));return Re.findProgramAddressSync(s,i)[0]}g();y();f();import{AnchorProvider as Ws}from"@project-serum/anchor";import{Connection as Us,PublicKey as Es}from"@solana/web3.js";function ft(a,i){let r=new Us(a,"confirmed"),s=new Es(i);return new Ws(r,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}g();y();f();import{PublicKey as Gs}from"@solana/web3.js";import{Address as Vs}from"@stellar/stellar-sdk";import{Big as ut}from"big.js";import oa from"randombytes";import{utils as aa}from"tronweb";function mt(a,i,r){let s;switch(i){case"EVM":{s=sa(a);break}case"SOLANA":{s=new Gs(a).toBuffer();break}case"TRX":{s=js(a);break}case"SRB":{s=new Vs(a).toBuffer();break}case"SUI":{s=sa(a);break}}switch(r){case"EVM":return"0x"+s.toString("hex");case"SOLANA":return Array.from(s);case"TRX":return s;case"SRB":return s.toJSON().data;case"SUI":return"0x"+s.toString("hex")}}function Ye(a){return a.replace(/^0x/i,"")}function ca(a){return w.from(a.replace(/^0x/i,""),"hex")}function sa(a){let r=ca(a);return w.concat([w.alloc(32-r.length,0),r],32)}function js(a){let i=on(a),r=ca(i);return Zs(r,32)}function on(a){let i=aa.crypto.decodeBase58Address(a);return i?aa.bytes.byteArray2hexStr(i).replace(/^41/,"0x"):""}function Zs(a,i){if(a.length>=i)return a;let r=w.alloc(i,0);return a.copy(r,i-a.length),r}function En(){return oa(32)}function it(){let a=oa(32).readBigInt64BE();return a<0?a*-1n:a}function at(a,i){let r={},s=i.sourceToken;if(r.amount=z(i.amount,s.decimals).toFixed(),r.contractAddress=s.bridgeAddress,r.fromAccountAddress=i.fromAccountAddress,a==="SUI"){if(!s.originTokenAddress)throw new O("SUI sourceToken must contain 'originTokenAddress'");r.fromTokenAddress=s.originTokenAddress}else r.fromTokenAddress=mt(s.tokenAddress,a,a);if(r.toAccountAddress=i.toAccountAddress,a==="SUI"){if(!i.destinationToken.originTokenAddress)throw new O("SUI destinationToken must contain 'originTokenAddress'");r.toTokenAddress=i.destinationToken.originTokenAddress}else r.toTokenAddress=mt(i.destinationToken.tokenAddress,a,a);return r.minimumReceiveAmount=i.minimumReceiveAmount?z(i.minimumReceiveAmount,i.destinationToken.decimals).toFixed():"0",r}async function Ke(a,i,r){let s={};s.fromChainId=i.sourceToken.allbridgeChainId,s.fromChainSymbol=i.sourceToken.chainSymbol;let o=H.getChainProperty(i.destinationToken.chainSymbol).chainType;if(a==="SUI"){if(!i.sourceToken.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");s.fromTokenAddress=i.sourceToken.originTokenAddress}else s.fromTokenAddress=i.sourceToken.tokenAddress;s.toChainId=i.destinationToken.allbridgeChainId,s.toTokenAddress=i.destinationToken.tokenAddress,i.gasFeePaymentMethod==="stablecoin"?s.gasFeePaymentMethod="stablecoin":s.gasFeePaymentMethod="native";let m=i.sourceToken;if(i.messenger===3){if(!m.cctpAddress||!i.destinationToken.cctpAddress)throw new Be("Such route does not support CCTP protocol");s.contractAddress=m.cctpAddress}else if(i.messenger===4){if(!m.cctpV2Address||!i.destinationToken.cctpV2Address)throw new Be("Such route does not support CCTP V2 protocol");s.contractAddress=m.cctpV2Address}else s.contractAddress=m.bridgeAddress;s.messenger=i.messenger,s.fromAccountAddress=i.fromAccountAddress,s.amount=z(i.amount,m.decimals).toFixed();let{fee:u,feeFormat:p}=i;if(!u){let C=(await Lr(s.fromChainId,i.sourceToken.chainType,s.toChainId,m.decimals,s.messenger,r))[s.gasFeePaymentMethod];if(!C)throw new en;u=C.int,p="int"}if(p=="float")switch(s.gasFeePaymentMethod){case"native":s.fee=z(u,H.getChainDecimalsByType(m.chainType)).toFixed(0);break;case"stablecoin":s.fee=z(u,m.decimals).toFixed(0);break}else s.fee=u;let{extraGas:h,extraGasFormat:b}=i;if(h&&+h>0){if(b=="float")switch(s.gasFeePaymentMethod){case"native":s.extraGas=z(h,H.getChainDecimalsByType(m.chainType)).toFixed(0);break;case"stablecoin":s.extraGas=z(h,m.decimals).toFixed(0);break}else s.extraGas=h;await $s(s.extraGas,s.gasFeePaymentMethod,m,i.destinationToken,r)}return a!=="SUI"&&(s.fromTokenAddress=mt(s.fromTokenAddress,a,a)),s.toAccountAddress=mt(i.toAccountAddress,o,a),s.toTokenAddress=mt(s.toTokenAddress,o,a),s.gasFeePaymentMethod=="stablecoin"&&_s(s.amount,m.decimals,s.fee,s.extraGas),s}function _s(a,i,r,s){let o=ut(a).minus(r).minus(s??0);if(o.lte(0))throw new Et(`Amount not enough to pay fee, ${Y(ut(o).minus(1).neg(),i).toFixed()} stables is missing`)}async function Lr(a,i,r,s,o,m){let u=await m.getReceiveTransactionCost({sourceChainId:a,destinationChainId:r,messenger:o}),p={native:{int:u.fee,float:Y(u.fee,H.getChainDecimalsByType(i)).toFixed()}};if(u.sourceNativeTokenPrice){let h=et(new ut(u.fee).mul(u.sourceNativeTokenPrice),H.getChainDecimalsByType(i),s).toFixed(0,ut.roundUp);p.stablecoin={int:h,float:Y(h,s).toFixed()}}return p}async function $s(a,i,r,s,o){let u=(await Xr(r,s,o)).extraGasMax[i];if(!u)throw new en(`Impossible to pay extra gas by '${i}' payment method`);let p=u.int;if(ut(a).gt(p))throw new Rn(`Extra gas ${a} in int format, exceeded limit ${p} for '${i}' payment method`)}async function Xr(a,i,r){let s={},o=await r.getReceiveTransactionCost({sourceChainId:a.allbridgeChainId,destinationChainId:i.allbridgeChainId,messenger:1}),m=i.txCostAmount.maxAmount,u=Y(m,H.getChainDecimalsByType(i.chainType)).toFixed(),p=ut(u).div(o.exchangeRate).toFixed(H.getChainDecimalsByType(a.chainType),ut.roundDown),h=z(p,H.getChainDecimalsByType(a.chainType)).toFixed(0);if(s.native={int:h,float:p},o.sourceNativeTokenPrice){let b=ut(p).mul(o.sourceNativeTokenPrice).toFixed(a.decimals,ut.roundDown);s.stablecoin={int:z(b,a.decimals).toFixed(0),float:b}}return{extraGasMax:s,destinationChain:{gasAmountMax:{int:m,float:u},swap:{int:i.txCostAmount.swap,float:Y(i.txCostAmount.swap,H.getChainDecimalsByType(i.chainType)).toFixed()},transfer:{int:i.txCostAmount.transfer,float:Y(i.txCostAmount.transfer,H.getChainDecimalsByType(i.chainType)).toFixed()}},exchangeRate:o.exchangeRate,sourceNativeTokenPrice:o.sourceNativeTokenPrice}}function Aa(a){return a.sourceToken.chainSymbol!==a.destinationToken.chainSymbol}async function jn(a,i,r,s){let o,m=new ua(i),u=new ua(r),p=await Xe(m,u),h=ft(s,i);Vn.setProvider(h);let b=await Vn.Spl.token(h).account.token.fetchNullable(p);if(b?.authority.equals(m))o=mt(p.toBase58(),"SOLANA",a);else{let S=await h.connection.getTokenAccountsByOwner(m,{mint:u});if(S.value.length===0&&!b)o=mt(p.toBase58(),"SOLANA",a);else if(S.value.length>0){let C=S.value[0];if(!C?.pubkey)throw new O("First token account or its public key is undefined");o=mt(C.pubkey.toBase58(),"SOLANA",a)}else throw new O("Associated account has wrong owner")}return o}g();y();f();g();y();f();var De=class{};var cn=class extends De{constructor(r,s,o){super();this.web3=r;this.api=s;this.nodeRpcUrlsConfig=o}chainType="EVM";async send(r){let s=await this.buildRawTransactionSend(r);return this.sendRawTransaction(s)}async buildRawTransactionSwap(r){let s=at(this.chainType,r);return await this.buildRawTransactionSwapFromParams(s)}async buildRawTransactionSwapFromParams(r){let{amount:s,contractAddress:o,fromAccountAddress:m,fromTokenAddress:u,toAccountAddress:p,toTokenAddress:h,minimumReceiveAmount:b}=r,C=this.getBridgeContract(o).methods.swap(s,u,h,p,b);return Promise.resolve({from:m,to:o,data:C.encodeABI()})}async buildRawTransactionSend(r){let s=await Ke(this.chainType,r,this.api),{amount:o,contractAddress:m,fromAccountAddress:u,fromTokenAddress:p,toChainId:h,toAccountAddress:b,toTokenAddress:S,messenger:C,fee:x,gasFeePaymentMethod:B,extraGas:I}=s,M="0x"+En().toString("hex"),F,W,D=x;if(I&&(D=Js(D).plus(I).toFixed()),C===3||C===4){let G=await this.buildRawTransactionCctpSend(r,s,D);F=G.sendMethod,W=G.value}else{let G=this.getBridgeContract(m);B==="stablecoin"?(F=G.methods.swapAndBridge(p,o,b,h,S,M,C,D),W="0"):(F=G.methods.swapAndBridge(p,o,b,h,S,M,C,0),W=D)}return Promise.resolve({from:u,to:m,value:W,data:F.encodeABI()})}async buildRawTransactionCctpSend(r,s,o){let{amount:m,contractAddress:u,toChainId:p,toAccountAddress:h,gasFeePaymentMethod:b}=s,S=this.getCctpBridgeContract(u),C,x;if(r.destinationToken.chainType==="SOLANA"){let B=await jn(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));b==="stablecoin"?(C=S.methods.bridgeWithWalletAddress(m,B,h,p,o),x="0"):(C=S.methods.bridgeWithWalletAddress(m,B,h,p,0),x=o)}else b==="stablecoin"?(C=S.methods.bridge(m,h,p,o),x="0"):(C=S.methods.bridge(m,h,p,0),x=o);return{sendMethod:C,value:x}}async sendRawTransaction(r){let s=await this.web3.eth.estimateGas(r),o={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:m}=await this.web3.eth.sendTransaction({...r,gas:s,...o});return{txId:m.toString()}}getBridgeContract(r){return new this.web3.eth.Contract(Ki.abi,r)}getCctpBridgeContract(r){return new this.web3.eth.Contract(Hi.abi,r)}};g();y();f();var Zn=class{constructor(i,r,s,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=s;this.tokenService=o}async approve(i,r){let s,o;r?(s=i,o=r):o=i;let m=An(o.token,o.messenger);return this.tokenService.buildRawTransactionApprove({...o,spender:m},s)}async send(i,r){return ee(i.amount),ne("amount",i.amount,i.sourceToken.decimals),Aa(i)?_n(i.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSend(i):_n(i.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSwap(i)}};g();y();f();import{BN as Jt,Program as Hr,Spl as to,web3 as yt}from"@project-serum/anchor";import{Keypair as Pa,PublicKey as re,SystemProgram as no}from"@solana/web3.js";import{Big as He}from"big.js";g();y();f();var un={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 ma={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 Ls}from"@project-serum/anchor";import Xs from"big.js";import{Web3 as $n}from"web3";async function _t(a,i){return await Ls.token(i).account.token.fetch(a)}async function la(a,i,r){let s=await i.account.pool.fetch(r),o=s.decimals,m=Xs(s.feeShareBp.toString()).div(1e4).toFixed(),u={aValue:s.a.toString(),dValue:s.d.toString(),totalLpAmount:s.totalLpAmount.toString(),tokenBalance:s.tokenBalance.toString(),vUsdBalance:s.vUsdBalance.toString(),accRewardPerShareP:s.accRewardPerShareP.toString()};return tt(a,{decimals:o,feeShare:m},u)}function da(a){let i=a.amount,r="0x"+a.recipient.toString("hex"),s=a.sourceChainId,o=a.destinationChainId,m="0x"+a.receiveToken.toString("hex"),u="0x"+a.nonce.toString("hex"),p=1,h="0x"+a.chainBridge.toString("hex"),b=$n.utils.encodePacked({t:"uint256",v:i},{t:"bytes32",v:r},{t:"uint256",v:s},{t:"bytes32",v:m},{t:"uint256",v:u},{t:"uint8",v:p});if(!b)throw new O("message cannot be undefined");let S=$n.utils.keccak256(w.from(b.replace("0x",""),"hex")),C=w.from(S.replace("0x",""),"hex");C[0]=s,C[1]=o;let x=$n.utils.encodePacked({t:"bytes32",v:"0x"+C.toString("hex")},{t:"bytes32",v:h});if(!x)throw new Gt("messageWithSigner cannot be undefined");let B=$n.utils.keccak256(w.from(x.replace("0x",""),"hex")),I=w.from(B.replace("0x",""),"hex");return I[0]=C[0],I[1]=C[1],I}g();y();f();import{ComputeBudgetInstruction as ga,ComputeBudgetProgram as Jn,Connection as fa,TransactionMessage as Ys}from"@solana/web3.js";import{Big as Ks}from"big.js";g();y();f();import{AddressLookupTableAccount as pa}from"@solana/web3.js";async function Ft(a,i){return await Promise.all(a.message.addressTableLookups.map(async r=>new pa({key:r.accountKey,state:pa.deserialize(await i.getAccountInfo(r.accountKey).then(s=>{if(!s)throw new O("Cannot get AccountInfo");return s.data}))})))}g();y();f();g();y();f();var Yr="AUTO";async function $t(a,i,r){let s=new fa(r,"confirmed"),o=(await s.simulateTransaction(a)).value.unitsConsumed;await ha(a.instructions,o,i,s)}async function ya(a,i,r){let s=new fa(r,"confirmed"),o=await Ft(a,s),m=Ys.decompile(a.message,{addressLookupTableAccounts:o});if(a.serialize().length>1232)throw new xn;await ha(m.instructions,769230,i,s),a.message=m.compileToV0Message(o)}async function ha(a,i,r,s){if(i>0){let o=Hs(i,a);if(r?.solana){let m=r.solana;if(m===Yr)await Kr(a,s);else if("pricePerUnitInMicroLamports"in m)await Kr(a,s,m.pricePerUnitInMicroLamports);else{let u=Ks(m.extraFeeInLamports).div(o).mul(rn(6)).toFixed(0);await Kr(a,s,u)}}}}function Hs(a,i){let r=i.findIndex(m=>m.programId.equals(Jn.programId)&&ga.decodeInstructionType(m)==="SetComputeUnitLimit"),s=Number((a*1.3).toFixed(0)),o=Jn.setComputeUnitLimit({units:s});return r>=0?i[r]=o:i.push(o),s.toString()}async function Kr(a,i,r){let s=a.findIndex(u=>u.programId.equals(Jn.programId)&&ga.decodeInstructionType(u)==="SetComputeUnitPrice"),o=BigInt(r||await Qs(i)),m=Jn.setComputeUnitPrice({microLamports:o});return s>=0?a[s]=m:a.push(m),o.toString()}async function Qs(a){let i=await a.getRecentPrioritizationFees(),r=0;for(let s of i)r+=s.prioritizationFee;return(r/i.length).toFixed(0)}g();y();f();import{NATIVE_MINT as zs}from"@solana/spl-token";import{Connection as qs,TransactionMessage as Ta,VersionedTransaction as eo}from"@solana/web3.js";import ba,{AxiosError as Sa}from"axios";var Ln=class{connection;jupiterUrl;apiKeyHeader;maxAccounts;constructor(i,r){this.connection=new qs(i),this.jupiterUrl=r.jupiterUrl.replace(/\/$/,""),this.apiKeyHeader=r.jupiterApiKeyHeader,this.maxAccounts=r.jupiterMaxAccounts}async getJupiterSwapTx(i,r,s,o){let m;try{let C=o?"ExactOut":"ExactIn",x=`${this.jupiterUrl}/quote?inputMint=${r}&outputMint=${zs.toString()}&amount=${s}&swapMode=${C}&slippageBps=100&onlyDirectRoutes=true`;this.maxAccounts&&(x+=`&maxAccounts=${this.maxAccounts}`),m=await ba.get(x,{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(C){throw C instanceof Sa&&C.response&&C.response.data&&C.response.data.error?new ye(C.response.data.error):new ye("Cannot get route")}let u;if(o&&m?.data?.inAmount)u=m.data.inAmount;else if(o)throw new ye("Cannot get inAmount");let p;try{p=await ba.post(`${this.jupiterUrl}/swap`,{quoteResponse:m.data,userPublicKey:i,wrapAndUnwrapSol:!0},{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(C){throw C instanceof Sa&&C.response&&C.response.data&&C.response.data.error?new ye(C.response.data.error):new ye("Cannot get swap transaction")}let h;if(p?.data?.swapTransaction)h=p.data.swapTransaction;else throw new ye("Cannot get swap transaction");let b=w.from(h,"base64"),S=eo.deserialize(b);return o?{tx:S,amountIn:u}:{tx:S}}async amendJupiterWithSdkTx(i,r){try{let s=await Ft(i,this.connection),o=await Ft(r,this.connection),m=Ta.decompile(i.message,{addressLookupTableAccounts:s}),u=Ta.decompile(r.message,{addressLookupTableAccounts:o});if(u.instructions.shift(),m.instructions.push(...u.instructions),s.push(...o),i.message=m.compileToV0Message(s),r.message.header.numRequiredSignatures===2&&i.signatures.length===1){let p=r.signatures[0];if(!p)throw new O("Signature is undefined");i.signatures.push(p)}return i}catch(s){throw s instanceof Error&&s.message?new ye(`Some error occurred during creation final swap and bridge transaction. ${s.message}`):new ye("Some error occurred during creation final swap and bridge transaction")}}};var Qr=1e6,wa=1.1,Xn=class extends De{constructor(r,s,o){super();this.solanaRpcUrl=r;this.params=s;this.api=o;this.jupiterService=new Ln(r,s.jupiterParams)}chainType="SOLANA";jupiterService;async buildRawTransactionSwap(r){let s=at(this.chainType,r);return await this.buildSwapTransaction(s,r.sourceToken.poolAddress,r.destinationToken.poolAddress,r.txFeeParams)}async buildSwapTransaction(r,s,o,m){let{fromAccountAddress:u,amount:p,contractAddress:h,fromTokenAddress:b,toTokenAddress:S,toAccountAddress:C,minimumReceiveAmount:x}=r,B=u,I=h,M=b,F=S,W=o,D=C,G=new re(B),Q=ft(this.solanaRpcUrl,G.toString()),j=new Hr(un,I,Q),X=await jt(j.programId),Pe=await gt(j.programId),Ae=new re(M),Ee=await Zt(Ae,j.programId),Ge=new re(s),Je=await Xe(G,Ae),Fe=new re(D),ge=new re(F),we=await Zt(ge,j.programId),Me=new re(W),Ce=await Xe(Fe,ge),Ve=[yt.ComputeBudgetProgram.setComputeUnitLimit({units:Qr})];try{await _t(Ce,Q)}catch{let wn=await to.associatedToken(Q).methods.create().accounts({mint:ge,owner:Fe,associatedAccount:Ce}).instruction();Ve.push(wn)}let je=await j.methods.swap(new Jt(p),new Jt(x||0)).accounts({payer:G,config:Pe,bridgeAuthority:X,user:G,sendBridgeToken:Ee,sendMint:Ae,sendPool:Ge,sendUserToken:Je,receiveBridgeToken:we,receiveMint:ge,receivePool:Me,receiveUserToken:Ce}).preInstructions(Ve).transaction(),Oe=Q.connection;return je.recentBlockhash=(await Oe.getLatestBlockhash()).blockhash,je.feePayer=G,await $t(je,m,this.solanaRpcUrl),await this.convertToVersionedTransaction(je,Oe)}async buildRawTransactionSend(r){let s=await Ke(this.chainType,r,this.api),o=this.addPoolAddress(r,s),m=o.gasFeePaymentMethod=="stablecoin",u;if(m)try{let{tx:b,solTxSendUpdatedParams:S}=await this.processJup(o,r,!0);u=b,o={...o,...S}}catch{try{let{tx:S,solTxSendUpdatedParams:C}=await this.processJup(o,r,!1);u=S,o={...o,...C}}catch(S){throw S instanceof me?S:S instanceof Error&&S.message?new ye(`Some error occurred during creation Jupiter swap transaction. ${S.message}`):new ye("Some error occurred during creation Jupiter swap transaction")}}let p,h;switch(s.messenger){case 1:{let b=await this.prepareSwapAndBridgeData(o);p=await this.buildSwapAndBridgeAllbridgeTransaction(b);break}case 2:{let b=await this.prepareSwapAndBridgeData(o),{transaction:S,messageAccount:C}=await this.buildSwapAndBridgeWormholeTransaction(b);p=S,h=C;break}case 3:case 4:{let b=await this.prepareSwapAndBridgeCctpData(o),{transaction:S,messageSentEventDataKeypair:C}=await this.buildSwapAndBridgeCctpTransaction(r.destinationToken.chainSymbol,b);p=S,h=C;break}}if(m){if(!u)throw new ye("Swap tx is absent");p=await this.jupiterService.amendJupiterWithSdkTx(u,p)}return await ya(p,r.txFeeParams,this.solanaRpcUrl),h&&p.sign([h]),p}async processJup(r,s,o){let{fee:m,extraGas:u,gasFeePaymentMethod:p}=await this.convertStableCoinFeeAndExtraGasToNativeCurrency(s.sourceToken.decimals,r),h=o?He(m):He(r.fee);u&&(h=h.plus(u)),o||(h=h.mul(wa));let{tx:b,amountIn:S}=await this.jupiterService.getJupiterSwapTx(s.fromAccountAddress,s.sourceToken.tokenAddress,h.toFixed(0),o),C;if(o){if(!S)throw new ye("Cannot get inAmount");C=He(r.amount).minus(He(S).mul(wa)).toFixed(0)}else C=He(r.amount).minus(h).toFixed(0);if(He(C).lte(0))throw new Et(`Amount not enough to pay fee, ${Y(He(C).minus(1).neg(),s.sourceToken.decimals).toFixed()} stables is missing`);return{tx:b,solTxSendUpdatedParams:{amount:C,fee:m,extraGas:u,gasFeePaymentMethod:p}}}addPoolAddress(r,s){return{...s,poolAddress:r.sourceToken.poolAddress}}async convertStableCoinFeeAndExtraGasToNativeCurrency(r,s){if(s.gasFeePaymentMethod=="stablecoin"){let o=(await this.api.getReceiveTransactionCost({sourceChainId:s.fromChainId,destinationChainId:s.toChainId,messenger:s.messenger})).sourceNativeTokenPrice,m=He(s.fee).div(o).mul(He(10).pow(H.getChainDecimalsByType("SOLANA")-r)).toFixed(0),u;return s.extraGas&&(u=He(s.extraGas).div(o).mul(He(10).pow(H.getChainDecimalsByType("SOLANA")-r)).toFixed(0)),{fee:m,extraGas:u,gasFeePaymentMethod:"native"}}return{fee:s.fee,extraGas:s.extraGas,gasFeePaymentMethod:"native"}}getExtraGasInstruction(r,s,o){return yt.SystemProgram.transfer({fromPubkey:s,toPubkey:o,lamports:+r})}async prepareSwapAndBridgeData(r){let{amount:s,contractAddress:o,fromChainId:m,fromAccountAddress:u,fromTokenAddress:p,toChainId:h,toAccountAddress:b,toTokenAddress:S,poolAddress:C,extraGas:x}=r,B=p,I=u,M=h,F=S,W=b,D=o,G=m,Q=ft(this.solanaRpcUrl,I),j=new Hr(un,D,Q),X=Array.from(En()),Pe=new re(C),Ae=await la(s,j,Pe),Ee=await Qi(X,j.programId),Ge=await jt(j.programId),Je=await Xe(new re(I),new re(B)),Fe=await Zt(new re(B),j.programId),ge=await _r(M,j.programId),we=await qi(M,w.from(F),j.programId),Me=await gt(j.programId),Ce=await j.account.config.fetch(Me),Ve=await sn(M,Ce.gasOracleProgramId),je=await sn(G,Ce.gasOracleProgramId),Oe=da({amount:Ae,recipient:w.from(W),nonce:w.from(X),receiveToken:w.from(F),destinationChainId:M,sourceChainId:G,chainBridge:(await jt(j.programId)).toBuffer()}),U={};return U.bridge=j,U.amount=new Jt(s),U.vusdAmount=new Jt(Ae),U.nonce=X,U.recipient=Array.from(W),U.receiveToken=Array.from(F),U.poolAccount=Pe,U.lockAccount=Ee,U.bridgeAuthority=Ge,U.userToken=Je,U.bridgeTokenAccount=Fe,U.chainBridgeAccount=ge,U.otherBridgeTokenAccount=we,U.userAccount=new re(I),U.destinationChainId=M,U.mint=new re(B),U.config=Me,U.configAccountInfo=Ce,U.gasPrice=Ve,U.thisGasPrice=je,U.message=Oe,x&&(U.extraGasInstruction=this.getExtraGasInstruction(x,U.userAccount,Me)),U}async buildSwapAndBridgeAllbridgeTransaction(r){let{bridge:s,vusdAmount:o,nonce:m,recipient:u,receiveToken:p,poolAccount:h,lockAccount:b,bridgeAuthority:S,userToken:C,bridgeTokenAccount:x,chainBridgeAccount:B,otherBridgeTokenAccount:I,userAccount:M,destinationChainId:F,mint:W,config:D,configAccountInfo:G,gasPrice:Q,thisGasPrice:j,message:X,extraGasInstruction:Pe}=r,Ae=G.allbridgeMessengerProgramId,Ee=await $r(F,Ae),Ge=await gt(Ae),Je=await ea(X,Ae),Fe=[];Pe&&Fe.push(Pe);let ge=await s.methods.swapAndBridge({vusdAmount:o,nonce:m,destinationChainId:F,recipient:u,receiveToken:p}).accounts({mint:W,user:M,config:D,lock:b,pool:h,gasPrice:Q,thisGasPrice:j,bridgeAuthority:S,userToken:C,bridgeToken:x,chainBridge:B,messenger:Ae,messengerGasUsage:Ee,messengerConfig:Ge,sentMessageAccount:Je,otherBridgeToken:I}).preInstructions([yt.ComputeBudgetProgram.setComputeUnitLimit({units:Qr})]).postInstructions(Fe).transaction(),we=ft(this.solanaRpcUrl,M.toString()).connection;return ge.recentBlockhash=(await we.getLatestBlockhash()).blockhash,ge.feePayer=M,await this.convertToVersionedTransaction(ge,we)}async convertToVersionedTransaction(r,s){let o=await s.getAddressLookupTable(new re(this.params.solanaLookUpTable)).then(u=>u.value);if(!o)throw new O("Cannot find allbridgeLookupTableAccount");let m=new yt.TransactionMessage({payerKey:r.feePayer,recentBlockhash:r.recentBlockhash,instructions:r.instructions}).compileToV0Message([o]);return new yt.VersionedTransaction(m)}async buildSwapAndBridgeWormholeTransaction(r){let{bridge:s,vusdAmount:o,nonce:m,recipient:u,receiveToken:p,poolAccount:h,lockAccount:b,bridgeAuthority:S,userToken:C,bridgeTokenAccount:x,chainBridgeAccount:B,otherBridgeTokenAccount:I,userAccount:M,destinationChainId:F,mint:W,config:D,configAccountInfo:G,gasPrice:Q,thisGasPrice:j,message:X,extraGasInstruction:Pe}=r,Ae=this.params.wormholeMessengerProgramId,[Ee]=re.findProgramAddressSync([w.from("Bridge")],new re(Ae)),[Ge]=re.findProgramAddressSync([w.from("fee_collector")],new re(Ae)),[Je]=re.findProgramAddressSync([w.from("Sequence"),S.toBuffer()],new re(Ae)),Fe=await $r(F,G.wormholeMessengerProgramId),ge=await gt(G.wormholeMessengerProgramId),we=Pa.generate(),Me=ft(this.solanaRpcUrl,M.toString()),Ce=await Me.connection.getAccountInfo(Ee);if(Ce==null)throw new O("Cannot fetch wormhole bridge account info");let Ve=new Jt(Ce.data.slice(16,24),"le").toString(),je=no.transfer({fromPubkey:M,toPubkey:Ge,lamports:+Ve}),Oe=[];Pe&&Oe.push(Pe);let U={mint:W,user:M,config:D,lock:b,pool:h,gasPrice:Q,thisGasPrice:j,bridgeAuthority:S,userToken:C,bridgeToken:x,chainBridge:B,otherBridgeToken:I,messengerGasUsage:Fe,wormholeProgram:Ae,bridge:Ee,message:we.publicKey,wormholeMessenger:G.wormholeMessengerProgramId,sequence:Je,feeCollector:Ge,wormholeMessengerConfig:ge,clock:yt.SYSVAR_CLOCK_PUBKEY},le=await s.methods.swapAndBridgeWormhole({vusdAmount:o,nonce:m,destinationChainId:F,recipient:u,receiveToken:p}).accounts(U).preInstructions([yt.ComputeBudgetProgram.setComputeUnitLimit({units:Qr}),je]).postInstructions(Oe).signers([we]).transaction();return le.recentBlockhash=(await Me.connection.getLatestBlockhash()).blockhash,le.feePayer=M,{transaction:await this.convertToVersionedTransaction(le,Me.connection),messageAccount:we}}async prepareSwapAndBridgeCctpData(r){let{contractAddress:s,amount:o,fromAccountAddress:m,fromTokenAddress:u,toChainId:p,toAccountAddress:h,toTokenAddress:b,extraGas:S}=r,C=s;if(!C)throw new Be("Such route does not support CCTP protocol");let x=4,B=m,I=b,M=h,F=ft(this.solanaRpcUrl,B),W=new Hr(ma,C,F),D=new re(u),G=await ta(D,W.programId),Q=new re(B),j=await W.account.cctpBridge.fetch(G),X={};return X.cctpBridge=W,X.cctpBridgeAccount=G,X.cctpAddressAccount=new re(C),X.amount=new Jt(o),X.recipient=Array.from(M),X.receiveToken=Array.from(I),X.userToken=await Xe(Q,D),X.bridgeAuthority=await zi(G,W.programId),X.bridgeTokenAccount=await na(D,W.programId),X.chainBridgeAccount=await _r(p,W.programId),X.userAccount=Q,X.destinationChainId=p,X.mint=D,X.gasPrice=await sn(p,j.gasOracleProgramId),X.thisGasPrice=await sn(x,j.gasOracleProgramId),X.provider=F,S&&(X.extraGasInstruction=this.getExtraGasInstruction(S,X.userAccount,G)),X}async buildSwapAndBridgeCctpTransaction(r,s){let{cctpBridge:o,cctpBridgeAccount:m,amount:u,recipient:p,receiveToken:h,bridgeAuthority:b,userToken:S,bridgeTokenAccount:C,chainBridgeAccount:x,userAccount:B,destinationChainId:I,mint:M,gasPrice:F,thisGasPrice:W,extraGasInstruction:D,provider:G}=s,Q=this.params.cctpParams.cctpDomains[r],j=this.params.cctpParams.cctpTransmitterProgramId,X=this.params.cctpParams.cctpTokenMessengerMinter;if(Q==null||!j||!X)throw new O("CCTP is not configured");let Pe=new re(j),Ae=new re(X),{messageTransmitterAccount:Ee,tokenMessenger:Ge,tokenMessengerEventAuthority:Je,tokenMinter:Fe,localToken:ge,remoteTokenMessengerKey:we,authorityPda:Me}=ia(Q,M,Pe,Ae),Ce=[];D&&Ce.push(D);let Ve=Pa.generate(),je=ra(o.programId,Ve.publicKey),Oe=await o.methods.bridge({amount:u,destinationChainId:I,recipient:p,receiveToken:h}).accounts({mint:M,user:B,cctpBridge:m,messageSentEventData:Ve.publicKey,lock:je,cctpMessenger:Ae,messageTransmitterProgram:Pe,messageTransmitterAccount:Ee,tokenMessenger:Ge,tokenMinter:Fe,localToken:ge,remoteTokenMessengerKey:we,authorityPda:Me,eventAuthority:Je,bridgeToken:C,gasPrice:F,thisGasPrice:W,chainBridge:x,userToken:S,bridgeAuthority:b}).preInstructions([yt.ComputeBudgetProgram.setComputeUnitLimit({units:2e6})]).postInstructions(Ce).transaction(),U=G.connection;return Oe.recentBlockhash=(await U.getLatestBlockhash()).blockhash,Oe.feePayer=B,{transaction:await this.convertToVersionedTransaction(Oe,U),messageSentEventDataKeypair:Ve}}send(r){throw new de}};g();y();f();import{Address as zr,contract as QR}from"@stellar/stellar-sdk";import{Big as ao}from"big.js";g();y();f();import{contract as n}from"@stellar/stellar-sdk";var ro=n.Spec,io=n.Client;var mn=class extends io{constructor(r){super(new ro(["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 Yn=class extends De{constructor(r,s,o){super();this.nodeRpcUrlsConfig=r;this.params=s;this.api=o}chainType="SRB";async buildRawTransactionSend(r){let s=await Ke(this.chainType,r,this.api);return await this.buildRawTransactionSendFromParams(s)}async buildRawTransactionSendFromParams(r){let{amount:s,contractAddress:o,fromAccountAddress:m,fromTokenAddress:u,toChainId:p,toAccountAddress:h,toTokenAddress:b,fee:S,gasFeePaymentMethod:C,extraGas:x}=r,B=S;x&&(B=ao(B).plus(x).toFixed());let I=this.getContract(mn,o,m),M;return C==="stablecoin"?M=await I.swap_and_bridge({sender:m,token:zr.contract(w.from(u)).toString(),amount:BigInt(s),recipient:w.from(h),destination_chain_id:+p,receive_token:w.from(b),nonce:it(),gas_amount:BigInt(0),fee_token_amount:BigInt(B)}):M=await I.swap_and_bridge({sender:m,token:zr.contract(w.from(u)).toString(),amount:BigInt(s),recipient:w.from(h),destination_chain_id:+p,receive_token:w.from(b),nonce:it(),gas_amount:BigInt(B),fee_token_amount:BigInt(0)}),M.toXDR()}async buildRawTransactionSwap(r){let s=at(this.chainType,r);return await this.buildRawTransactionSwapFromParams(s)}async buildRawTransactionSwapFromParams(r){let{amount:s,contractAddress:o,fromAccountAddress:m,fromTokenAddress:u,toAccountAddress:p,toTokenAddress:h,minimumReceiveAmount:b}=r;return(await this.getContract(mn,o,m).swap({sender:m,amount:BigInt(s),token:zr.contract(w.from(u)).toBuffer(),receive_token:w.from(h),recipient:p,receive_amount_min:BigInt(b)})).toXDR()}send(r){throw new de}getContract(r,s,o){let m={publicKey:o,contractId:s,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new r(m)}};g();y();f();import{SuiClient as To}from"@mysten/sui/client";import{coinWithBalance as ce,Transaction as er}from"@mysten/sui/transactions";import{SUI_CLOCK_OBJECT_ID as Ea}from"@mysten/sui/utils";import{Big as ui}from"big.js";var mi=Le(ht());g();y();f();var lt=Le(ht());fe();function Ia(a,i,r){return a.moveCall({target:`${lt.PUBLISHED_AT}::bridge_interface::swap`,typeArguments:i,arguments:[V(a,r.bridge),V(a,r.coin),_e(a,r.receiveAmountMin,"u64")]})}function Ra(a,i,r){return a.moveCall({target:`${lt.PUBLISHED_AT}::bridge_interface::deposit`,typeArguments:[i],arguments:[V(a,r.bridge),V(a,r.userDeposit),V(a,r.coin)]})}function va(a,i,r){return a.moveCall({target:`${lt.PUBLISHED_AT}::bridge_interface::withdraw`,typeArguments:[i],arguments:[V(a,r.bridge),V(a,r.userDeposit),_e(a,r.amountLp,"u64")]})}function ka(a,i,r){return a.moveCall({target:`${lt.PUBLISHED_AT}::bridge_interface::claim_reward`,typeArguments:[i],arguments:[V(a,r.bridge),V(a,r.userDeposit)]})}function xa(a,i,r){return a.moveCall({target:`${lt.PUBLISHED_AT}::bridge_interface::pool`,typeArguments:[i],arguments:[V(a,r)]})}function ei(a,i,r){return a.moveCall({target:`${lt.PUBLISHED_AT}::bridge_interface::swap_and_bridge_wormhole`,typeArguments:[i],arguments:[V(a,r.bridge),V(a,r.messenger),V(a,r.wormholeState),V(a,r.theClock),V(a,r.gasOracle),V(a,r.amount),V(a,r.recipient),_e(a,r.destinationChainId,"u8"),V(a,r.receiveToken),_e(a,r.nonce,"u256"),V(a,r.feeSuiCoin),V(a,r.feeTokenCoin)]})}function Fa(a,i){return a.moveCall({target:`${lt.PUBLISHED_AT}::bridge_interface::new_user_deposit`,typeArguments:[i],arguments:[]})}function ti(a,i,r){return a.moveCall({target:`${lt.PUBLISHED_AT}::bridge_interface::swap_and_bridge`,typeArguments:[i],arguments:[V(a,r.bridge),V(a,r.messenger),V(a,r.gasOracle),V(a,r.amount),V(a,r.recipient),_e(a,r.destinationChainId,"u8"),V(a,r.receiveToken),_e(a,r.nonce,"u256"),V(a,r.feeSuiCoin),V(a,r.feeTokenCoin)]})}var Ga=Le(ri());g();y();f();var Oa=Le(ri());fe();function ii(a,i,r){return a.moveCall({target:`${Oa.PUBLISHED_AT}::cctp_bridge_interface::bridge`,typeArguments:[i],arguments:[V(a,r.cctpBridge),V(a,r.gasOracle),V(a,r.tokenMessengerMinterState),V(a,r.messageTransmitterState),V(a,r.treasury),V(a,r.denyList),V(a,r.amount),V(a,r.feeSuiCoin),V(a,r.feeTokenCoin),_e(a,r.destinationChainId,"u8"),V(a,r.recipient),V(a,r.recipientWalletAddress)]})}var Va=Le(si());g();y();f();var Ua=Le(si());g();y();f();g();y();f();fe();import{bcs as Tt}from"@mysten/sui/bcs";import{fromHEX as lo,toHEX as po}from"@mysten/sui/utils";g();y();f();import{bcs as mo}from"@mysten/sui/bcs";fe();var oi=class a{__VectorClass=!0;static $typeName="vector";static $numTypeParams=1;static $isPhantom=[!1];$typeName="vector";$fullTypeName;$typeArgs;$isPhantom=[!1];elements;constructor(i,r){this.$fullTypeName=K(this.$typeName,...i),this.$typeArgs=i,this.elements=r}static reified(i){return{typeName:a.$typeName,fullTypeName:K(a.$typeName,Z(i)),typeArgs:[Z(i)],isPhantom:a.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>a.fromFields(i,r),fromFieldsWithTypes:r=>a.fromFieldsWithTypes(i,r),fromBcs:r=>a.fromBcs(i,r),bcs:a.bcs(ln(i)),fromJSONField:r=>a.fromJSONField(i,r),fromJSON:r=>a.fromJSON(i,r),new:r=>new a([Z(i)],r),kind:"VectorClassReified"}}static get r(){return a.reified}static get bcs(){return mo.vector}static fromFields(i,r){return a.reified(i).new(r.map(s=>L(i,s)))}static fromFieldsWithTypes(i,r){return a.reified(i).new(r.map(s=>$(i,s)))}static fromBcs(i,r){return a.fromFields(i,a.bcs(ln(i)).parse(r))}toJSONField(){return this.elements.map(i=>Mt(this.$typeArgs[0],i))}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,elements:this.toJSONField()}}static fromJSONField(i,r){return a.reified(i).new(r.map(s=>J(i,s)))}static fromJSON(i,r){if(r.$typeName!==a.$typeName)throw new Error("not a vector json object");return a.fromJSONField(i,r.elements)}};function Lt(a){return oi.r(a)}function oe(a){return typeof a=="string"?{phantomType:a,kind:"PhantomReified"}:{phantomType:a.fullTypeName,kind:"PhantomReified"}}var go=Tt.bytes(32).transform({input:a=>lo(a),output:a=>po(a)});function ln(a){switch(a){case"bool":return Tt.bool();case"u8":return Tt.u8();case"u16":return Tt.u16();case"u32":return Tt.u32();case"u64":return Tt.u64();case"u128":return Tt.u128();case"u256":return Tt.u256();case"address":return go;default:return a.bcs}}function Z(a){switch(a){case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"bool":case"address":return a}switch(a.kind){case"PhantomReified":return a.phantomType;case"StructClassReified":return a.fullTypeName;case"VectorClassReified":return a.fullTypeName}throw new Error("unreachable")}function L(a,i){switch(a){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(a.kind==="VectorClassReified")return a.fromFields(i).elements;switch(a.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:a.fromFields(i).vec[0];default:return a.fromFields(i)}}function $(a,i){switch(a){case"bool":case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return BigInt(i);case"address":return i}if(a.kind==="VectorClassReified")return a.fromFieldsWithTypes(i).elements;switch(a.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 a.fromFields({value:BigInt(i)});case"0x1::option::Option":return i===null?null:$(a.reifiedTypeArgs[0],i);default:return a.fromFieldsWithTypes(i)}}function Qe(a,i,r){if(r.length!==i.length)throw new Error(`provided item has mismatching number of type argments ${a} (expected ${r.length}, got ${i.length}))`);for(let s=0;s<i.length;s++)if(E(i[s])!==E(Z(r[s])))throw new Error(`provided item has mismatching type argments ${a} (expected ${Z(r[s])}, got ${i[s]}))`)}function st(a,i){let{typeArgs:r}=be(a.type);Qe(a.type,r,i)}function Mt(a,i){let{typeName:r,typeArgs:s}=be(a);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=>Mt(s[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:Mt(s[0],i);default:return i.toJSONField()}}function J(a,i){switch(a){case"bool":case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return BigInt(i);case"address":return i}if(a.kind==="VectorClassReified")return a.fromJSONField(i).elements;switch(a.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:J(a.reifiedTypeArgs[0],i);default:return a.fromJSONField(i)}}fe();g();y();f();var Kn="0x1";import{bcs as Wg}from"@mysten/sui/bcs";import{fromB64 as Eg}from"@mysten/sui/utils";g();y();f();fe();import{bcs as ci}from"@mysten/sui/bcs";import{fromB64 as fo}from"@mysten/sui/utils";function Hn(a){return a=E(a),a===`${Kn}::string::String`}var Qn=class a{__StructClass=!0;static get $typeName(){return`${Kn}::string::String`}static $numTypeParams=0;static $isPhantom=[];$typeName=a.$typeName;$fullTypeName;$typeArgs;$isPhantom=a.$isPhantom;bytes;constructor(i,r){this.$fullTypeName=K(a.$typeName,...i),this.$typeArgs=i,this.bytes=r.bytes}static reified(){return{typeName:a.$typeName,fullTypeName:K(a.$typeName),typeArgs:[],isPhantom:a.$isPhantom,reifiedTypeArgs:[],fromFields:i=>a.fromFields(i),fromFieldsWithTypes:i=>a.fromFieldsWithTypes(i),fromBcs:i=>a.fromBcs(i),bcs:a.bcs,fromJSONField:i=>a.fromJSONField(i),fromJSON:i=>a.fromJSON(i),fromSuiParsedData:i=>a.fromSuiParsedData(i),fromSuiObjectData:i=>a.fromSuiObjectData(i),fetch:async(i,r)=>a.fetch(i,r),new:i=>new a([],i),kind:"StructClassReified"}}static get r(){return a.reified()}static phantom(){return oe(a.reified())}static get p(){return a.phantom()}static get bcs(){return ci.struct("String",{bytes:ci.vector(ci.u8())})}static fromFields(i){return a.reified().new({bytes:L(Lt("u8"),i.bytes)})}static fromFieldsWithTypes(i){if(!Hn(i.type))throw new Error("not a String type");return a.reified().new({bytes:$(Lt("u8"),i.fields.bytes)})}static fromBcs(i){return a.fromFields(a.bcs.parse(i))}toJSONField(){return{bytes:Mt("vector<u8>",this.bytes)}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i){return a.reified().new({bytes:J(Lt("u8"),i.bytes)})}static fromJSON(i){if(i.$typeName!==a.$typeName)throw new Error("not a WithTwoGenerics json object");return a.fromJSONField(i)}static fromSuiParsedData(i){if(i.dataType!=="moveObject")throw new Error("not an object");if(!Hn(i.type))throw new Error(`object at ${i.fields.id} is not a String object`);return a.fromFieldsWithTypes(i)}static fromSuiObjectData(i){if(i.bcs){if(i.bcs.dataType!=="moveObject"||!Hn(i.bcs.type))throw new Error("object at is not a String object");return a.fromBcs(fo(i.bcs.bcsBytes))}if(i.content)return a.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 s=await i.getObject({id:r,options:{showBcs:!0}});if(s.error)throw new Error(`error fetching String object at id ${r}: ${s.error.code}`);if(s.data?.bcs?.dataType!=="moveObject"||!Hn(s.data.bcs.type))throw new Error(`object at id ${r} is not a String object`);return a.fromSuiObjectData(s.data)}};fe();g();y();f();fe();g();y();f();var bt="0x2";import{bcs as Ai}from"@mysten/sui/bcs";import{fromB64 as Wa,fromHEX as yo,toHEX as ho}from"@mysten/sui/utils";function zn(a){return a=E(a),a===`${bt}::object::ID`}var Ot=class a{__StructClass=!0;static get $typeName(){return`${bt}::object::ID`}static $numTypeParams=0;static $isPhantom=[];$typeName=a.$typeName;$fullTypeName;$typeArgs;$isPhantom=a.$isPhantom;bytes;constructor(i,r){this.$fullTypeName=K(a.$typeName,...i),this.$typeArgs=i,this.bytes=r.bytes}static reified(){return{typeName:a.$typeName,fullTypeName:K(a.$typeName),typeArgs:[],isPhantom:a.$isPhantom,reifiedTypeArgs:[],fromFields:i=>a.fromFields(i),fromFieldsWithTypes:i=>a.fromFieldsWithTypes(i),fromBcs:i=>a.fromBcs(i),bcs:a.bcs,fromJSONField:i=>a.fromJSONField(i),fromJSON:i=>a.fromJSON(i),fromSuiParsedData:i=>a.fromSuiParsedData(i),fromSuiObjectData:i=>a.fromSuiObjectData(i),fetch:async(i,r)=>a.fetch(i,r),new:i=>new a([],i),kind:"StructClassReified"}}static get r(){return a.reified()}static phantom(){return oe(a.reified())}static get p(){return a.phantom()}static get bcs(){return Ai.struct("ID",{bytes:Ai.bytes(32).transform({input:i=>yo(i),output:i=>ho(i)})})}static fromFields(i){return a.reified().new({bytes:L("address",i.bytes)})}static fromFieldsWithTypes(i){if(!zn(i.type))throw new Error("not a ID type");return a.reified().new({bytes:$("address",i.fields.bytes)})}static fromBcs(i){return a.fromFields(a.bcs.parse(i))}toJSONField(){return{bytes:this.bytes}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i){return a.reified().new({bytes:J("address",i.bytes)})}static fromJSON(i){if(i.$typeName!==a.$typeName)throw new Error("not a WithTwoGenerics json object");return a.fromJSONField(i)}static fromSuiParsedData(i){if(i.dataType!=="moveObject")throw new Error("not an object");if(!zn(i.type))throw new Error(`object at ${i.fields.id} is not a ID object`);return a.fromFieldsWithTypes(i)}static fromSuiObjectData(i){if(i.bcs){if(i.bcs.dataType!=="moveObject"||!zn(i.bcs.type))throw new Error("object at is not a ID object");return a.fromBcs(Wa(i.bcs.bcsBytes))}if(i.content)return a.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 s=await i.getObject({id:r,options:{showBcs:!0}});if(s.error)throw new Error(`error fetching ID object at id ${r}: ${s.error.code}`);if(s.data?.bcs?.dataType!=="moveObject"||!zn(s.data.bcs.type))throw new Error(`object at id ${r} is not a ID object`);return a.fromSuiObjectData(s.data)}};function qn(a){return a=E(a),a===`${bt}::object::UID`}var $e=class a{__StructClass=!0;static get $typeName(){return`${bt}::object::UID`}static $numTypeParams=0;static $isPhantom=[];$typeName=a.$typeName;$fullTypeName;$typeArgs;$isPhantom=a.$isPhantom;id;constructor(i,r){this.$fullTypeName=K(a.$typeName,...i),this.$typeArgs=i,this.id=r.id}static reified(){return{typeName:a.$typeName,fullTypeName:K(a.$typeName),typeArgs:[],isPhantom:a.$isPhantom,reifiedTypeArgs:[],fromFields:i=>a.fromFields(i),fromFieldsWithTypes:i=>a.fromFieldsWithTypes(i),fromBcs:i=>a.fromBcs(i),bcs:a.bcs,fromJSONField:i=>a.fromJSONField(i),fromJSON:i=>a.fromJSON(i),fromSuiParsedData:i=>a.fromSuiParsedData(i),fromSuiObjectData:i=>a.fromSuiObjectData(i),fetch:async(i,r)=>a.fetch(i,r),new:i=>new a([],i),kind:"StructClassReified"}}static get r(){return a.reified()}static phantom(){return oe(a.reified())}static get p(){return a.phantom()}static get bcs(){return Ai.struct("UID",{id:Ot.bcs})}static fromFields(i){return a.reified().new({id:L(Ot.reified(),i.id)})}static fromFieldsWithTypes(i){if(!qn(i.type))throw new Error("not a UID type");return a.reified().new({id:$(Ot.reified(),i.fields.id)})}static fromBcs(i){return a.fromFields(a.bcs.parse(i))}toJSONField(){return{id:this.id}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i){return a.reified().new({id:J(Ot.reified(),i.id)})}static fromJSON(i){if(i.$typeName!==a.$typeName)throw new Error("not a WithTwoGenerics json object");return a.fromJSONField(i)}static fromSuiParsedData(i){if(i.dataType!=="moveObject")throw new Error("not an object");if(!qn(i.type))throw new Error(`object at ${i.fields.id} is not a UID object`);return a.fromFieldsWithTypes(i)}static fromSuiObjectData(i){if(i.bcs){if(i.bcs.dataType!=="moveObject"||!qn(i.bcs.type))throw new Error("object at is not a UID object");return a.fromBcs(Wa(i.bcs.bcsBytes))}if(i.content)return a.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 s=await i.getObject({id:r,options:{showBcs:!0}});if(s.error)throw new Error(`error fetching UID object at id ${r}: ${s.error.code}`);if(s.data?.bcs?.dataType!=="moveObject"||!qn(s.data.bcs.type))throw new Error(`object at id ${r} is not a UID object`);return a.fromSuiObjectData(s.data)}};function ze(a,i){return a.moveCall({target:`${Ua.PUBLISHED_AT}::bytes32::from_hex`,arguments:[_e(a,i,`${Qn.$typeName}`)]})}g();y();f();async function ot(a,i,r=[]){let s=await a(i),o=r.concat(s.data);return s.hasNextPage&&s.nextCursor?ot(a,s.nextCursor,o):o}var tr=class extends De{constructor(r,s){super();this.nodeRpcUrlsConfig=r;this.api=s;this.client=new To({url:r.getNodeRpcUrl(this.chainSymbol)})}chainType="SUI";chainSymbol="SUI";client;send(){throw new O("Method send not implemented.")}async buildRawTransactionSwap(r){let s=r.sourceToken.suiAddresses;if(!s)throw new O("SUI token must contain 'suiAddresses'");(0,mi.setAddress)(s.bridgeAddress,s.bridgeAddressOrigin);let o=at(this.chainType,r);return await this.buildRawTransactionSwapFromParams(o,s)}async buildRawTransactionSwapFromParams(r,s){let{amount:o,fromAccountAddress:m,fromTokenAddress:u,toTokenAddress:p,minimumReceiveAmount:h}=r,b=new er;b.setSender(m);let S={bridge:s.bridgeObjectAddress,coin:ce({balance:BigInt(o),type:u}),receiveAmountMin:BigInt(h)},C=Ia(b,[u,p],S),x=await ot(B=>this.client.getCoins({owner:r.toAccountAddress,coinType:p,cursor:B}));return x.length===0||!x[0]?b.transferObjects([C],r.toAccountAddress):b.mergeCoins(x[0].coinObjectId,[C]),await b.toJSON({client:this.client})}async buildRawTransactionSend(r){let s=await Ke(this.chainType,r,this.api),{messenger:o}=s,m=r.sourceToken.suiAddresses;if(!m)throw new O("SUI token must contain 'suiAddresses'");switch((0,mi.setAddress)(m.bridgeAddress,m.bridgeAddressOrigin),(0,Va.setAddress)(m.utilsAddress),o){case 1:return this.buildRawTransactionAllbridgeSend(s,m);case 2:return this.buildRawTransactionWormholeSend(s,m);case 3:case 4:return this.buildRawTransactionCctpSend(r,s,m)}}async buildRawTransactionAllbridgeSend(r,s){let{amount:o,fromAccountAddress:m,fromTokenAddress:u,toChainId:p,toAccountAddress:h,toTokenAddress:b,fee:S,gasFeePaymentMethod:C,extraGas:x}=r,B=S;x&&(B=ui(B).plus(x).toFixed());let I=new er;if(I.setSender(m),C==="stablecoin"){let M=BigInt(o)-BigInt(B),F={bridge:s.bridgeObjectAddress,messenger:s.allbridgeMessengerObjectAddress,amount:ce({balance:M,type:u}),destinationChainId:p,nonce:it(),recipient:ze(I,Ye(h)),receiveToken:ze(I,Ye(b)),gasOracle:s.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(B),type:u}),feeSuiCoin:ce({balance:BigInt(0),useGasCoin:!1})};ti(I,u,F)}else{let M=B==="0"?ce({balance:BigInt(B),useGasCoin:!1}):ce({balance:BigInt(B)}),F={bridge:s.bridgeObjectAddress,messenger:s.allbridgeMessengerObjectAddress,amount:ce({balance:BigInt(o),type:u}),destinationChainId:p,nonce:it(),recipient:ze(I,Ye(h)),receiveToken:ze(I,Ye(b)),gasOracle:s.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(0),type:u}),feeSuiCoin:M};ti(I,u,F)}return await I.toJSON({client:this.client})}async buildRawTransactionWormholeSend(r,s){let{amount:o,fromAccountAddress:m,fromTokenAddress:u,toChainId:p,toAccountAddress:h,toTokenAddress:b,fee:S,gasFeePaymentMethod:C,extraGas:x}=r,B=S;x&&(B=ui(B).plus(x).toFixed());let I=new er;if(I.setSender(m),C==="stablecoin"){let M=BigInt(o)-BigInt(B),F={bridge:s.bridgeObjectAddress,messenger:s.wormholeMessengerObjectAddress,wormholeState:s.wormholeStateObjectAddress,theClock:Ea,amount:ce({balance:M,type:u}),destinationChainId:p,nonce:it(),recipient:ze(I,Ye(h)),receiveToken:ze(I,Ye(b)),gasOracle:s.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(B),type:u}),feeSuiCoin:ce({balance:BigInt(0),useGasCoin:!1})};ei(I,u,F)}else{let M=B==="0"?ce({balance:BigInt(B),useGasCoin:!1}):ce({balance:BigInt(B)}),F={bridge:s.bridgeObjectAddress,messenger:s.wormholeMessengerObjectAddress,wormholeState:s.wormholeStateObjectAddress,theClock:Ea,amount:ce({balance:BigInt(o),type:u}),destinationChainId:p,nonce:it(),recipient:ze(I,Ye(h)),receiveToken:ze(I,Ye(b)),gasOracle:s.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(0),type:u}),feeSuiCoin:M};ei(I,u,F)}return await I.toJSON({client:this.client})}async buildRawTransactionCctpSend(r,s,o){let{amount:m,fromAccountAddress:u,fromTokenAddress:p,toChainId:h,toAccountAddress:b,fee:S,gasFeePaymentMethod:C,extraGas:x}=s;(0,Ga.setAddress)(o.cctpAddress,o.cctpAddressOrigin);let B=S;x&&(B=ui(B).plus(x).toFixed());let I=new er;I.setSender(u);let M=ze(I,Ye(b)),F;if(r.destinationToken.chainType==="SOLANA"){let W=await jn(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));F=ze(I,Ye(W))}else F=M;if(C==="stablecoin"){let W=BigInt(m)-BigInt(B),D={cctpBridge:o.cctpObjectAddress,tokenMessengerMinterState:o.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:o.cctpMessageTransmitterStateObjectAddress,treasury:o.cctpTreasuryObjectAddress,denyList:o.cctpDenyListObjectAddress,amount:ce({balance:W,type:p}),destinationChainId:h,recipient:F,recipientWalletAddress:M,gasOracle:o.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(B),type:p}),feeSuiCoin:ce({balance:BigInt(0),useGasCoin:!1})};ii(I,p,D)}else{let W=B==="0"?ce({balance:BigInt(B),useGasCoin:!1}):ce({balance:BigInt(B)}),D={cctpBridge:o.cctpObjectAddress,tokenMessengerMinterState:o.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:o.cctpMessageTransmitterStateObjectAddress,treasury:o.cctpTreasuryObjectAddress,denyList:o.cctpDenyListObjectAddress,amount:ce({balance:BigInt(m),type:p}),destinationChainId:h,recipient:F,recipientWalletAddress:M,gasOracle:o.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(0),type:p}),feeSuiCoin:W};ii(I,p,D)}return await I.toJSON({client:this.client})}};g();y();f();import{Big as Po}from"big.js";g();y();f();g();y();f();import bo from"bn.js";function nr(a){return"0x"+new bo(a).toString("hex")}function ja(a){return new Promise(i=>setTimeout(()=>i(),a))}async function rr(a,i){let r=await a.trx.sign(i);if(!r.signature)throw new Gt("Transaction was not signed properly");let o=(await a.trx.sendRawTransaction(r)).transaction.txID;return await So(a,o),{txId:o}}async function So(a,i,r=1e4){let s=Date.now();for(;;){if(Date.now()-s>r)throw new tn("Transaction not found");let o=await a.trx.getUnconfirmedTransactionInfo(i);if(!o?.receipt){await ja(2e3);continue}if(o.receipt.result==="SUCCESS")return o;throw new tn(`Transaction status is ${o.receipt.result}`)}}var dn=class extends De{constructor(r,s){super();this.tronWeb=r;this.api=s}chainType="TRX";async send(r){let s=await Ke(this.chainType,r,this.api),o=await this.buildRawTransactionSendFromParams(s);return await rr(this.tronWeb,o)}async buildRawTransactionSwap(r){let s=at(this.chainType,r);return await this.buildRawTransactionSwapFromParams(s)}async buildRawTransactionSwapFromParams(r){let{amount:s,contractAddress:o,fromAccountAddress:m,fromTokenAddress:u,toAccountAddress:p,toTokenAddress:h,minimumReceiveAmount:b}=r,S=[{type:"uint256",value:s},{type:"bytes32",value:u},{type:"bytes32",value:h},{type:"address",value:p},{type:"uint256",value:b}];return this.buildRawTransaction(o,"swap(uint256,bytes32,bytes32,address,uint256)",S,"0",m)}async buildRawTransactionSend(r){let s=await Ke(this.chainType,r,this.api);return this.buildRawTransactionSendFromParams(s)}async buildRawTransactionSendFromParams(r){let{amount:s,contractAddress:o,fromAccountAddress:m,fromTokenAddress:u,toChainId:p,toAccountAddress:h,toTokenAddress:b,messenger:S,fee:C,gasFeePaymentMethod:x,extraGas:B}=r,I=C;B&&(I=Po(I).plus(B).toFixed());let M=it().toString(),F,W,D;return S==3||S==4?(x==="stablecoin"?(F=[{type:"uint256",value:s},{type:"bytes32",value:h},{type:"uint256",value:p},{type:"uint256",value:I}],W="0"):(F=[{type:"uint256",value:s},{type:"bytes32",value:h},{type:"uint256",value:p},{type:"uint256",value:0}],W=I),D="bridge(uint256,bytes32,uint256,uint256)"):(x==="stablecoin"?(F=[{type:"bytes32",value:u},{type:"uint256",value:s},{type:"bytes32",value:h},{type:"uint256",value:p},{type:"bytes32",value:b},{type:"uint256",value:M},{type:"uint8",value:S},{type:"uint256",value:I}],W="0"):(F=[{type:"bytes32",value:u},{type:"uint256",value:s},{type:"bytes32",value:h},{type:"uint256",value:p},{type:"bytes32",value:b},{type:"uint256",value:M},{type:"uint8",value:S},{type:"uint256",value:0}],W=I),D="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)"),this.buildRawTransaction(o,D,F,W,m)}async buildRawTransaction(r,s,o,m,u){let p=await this.tronWeb.transactionBuilder.triggerSmartContract(r,s,{callValue:+m},o,u);if(!p?.result?.result)throw new O("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}};var ir=class{constructor(i,r,s,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=s;this.tokenService=o;this.rawTxBuilder=new Zn(i,r,s,o)}rawTxBuilder;async getAllowance(i,r){let s,o;r?(s=i,o=r):o=i;let m=An(o.token,o.messenger);return await this.tokenService.getAllowance({...o,spender:m},s)}async checkAllowance(i,r){let s,o;r?(s=i,o=r):o=i;let m=An(o.token,o.messenger);return this.tokenService.checkAllowance({...o,spender:m},s)}async approve(i,r){let s=An(r.token,r.messenger);return this.tokenService.approve(i,{...r,spender:s})}async send(i,r){return ee(r.amount),ne("amount",r.amount,r.sourceToken.decimals),_n(r.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).send(r)}};function An(a,i){if(i&&i==3){if(a.cctpAddress)return a.cctpAddress;throw new Be("Such route does not support CCTP protocol")}else if(i&&i==4){if(a.cctpV2Address)return a.cctpV2Address;throw new Be("Such route does not support CCTP V2 protocol")}else return a.bridgeAddress}function _n(a,i,r,s,o){switch(H.getChainProperty(a).chainType){case"EVM":{if(o)return new cn(o,i,r);{let m=r.getNodeRpcUrl(a);return new cn(new Co(m),i,r)}}case"TRX":{if(o)return new dn(o,i);{let m=r.getNodeRpcUrl(a);return new dn(new wo({fullHost:m,solidityNode:m,eventServer:m}),i)}}case"SOLANA":return new Xn(r.getNodeRpcUrl("SOL"),{wormholeMessengerProgramId:s.wormholeMessengerProgramId,solanaLookUpTable:s.solanaLookUpTable,cctpParams:s.cctpParams,jupiterParams:{jupiterUrl:s.jupiterUrl,jupiterApiKeyHeader:s.jupiterApiKeyHeader,jupiterMaxAccounts:s.jupiterMaxAccounts}},i);case"SRB":return new Yn(r,s,i);case"SUI":return new tr(r,i)}}g();y();f();import{Big as Zo}from"big.js";import _o from"timed-cache";import{TronWeb as $o}from"tronweb";import{FMT_BYTES as Jo,FMT_NUMBER as Lo,Web3 as Xo}from"web3";g();y();f();import{Big as dt}from"big.js";function Za(a,i,r,s,o){let m=z(a,3),u=dt(m),p=dt(r),h=dt(s).plus(o),b,S;if(p.eq(0)||h.eq(0)){let x=u.div(2);b=dt(s).plus(x),S=dt(o).plus(x)}else b=dt(s).plus(u.mul(s).div(h)),S=dt(o).plus(u.mul(o).div(h));return dt(ji(i,b.toFixed(),S.toFixed())).minus(p).toFixed()}function _a(a){let i=z(a,3);return dt(i).round().toFixed()}g();y();f();import{Web3 as St}from"web3";g();y();f();var Bo={abi:[{inputs:[{internalType:"address",name:"_router",type:"address"},{internalType:"uint256",name:"_a",type:"uint256"},{internalType:"contract ERC20",name:"_token",type:"address"},{internalType:"uint16",name:"_feeShareBP",type:"uint16"},{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"},{internalType:"string",name:"lpName",type:"string"},{internalType:"string",name:"lpSymbol",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"RewardsClaimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedFromVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedToVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"a",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"accRewardPerShareP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adjustTotalLpAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"adminFeeAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"balanceRatioMinBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canDeposit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canWithdraw",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"claimAdminFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"claimRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"d",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"feeShareBP",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"x",type:"uint256"}],name:"getY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"pendingReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"reserves",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"router",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_adminFeeShareBP",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"}],name:"setBalanceRatioMinBP",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"_feeShareBP",type:"uint16"}],name:"setFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_router",type:"address"}],name:"setRouter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapFromVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapToVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"token",outputs:[{internalType:"contract ERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"userRewardDebt",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"vUsdBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amountLp",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},pn=Bo;g();y();f();g();y();f();var ve=class{lpAmount;rewardDebt;constructor(i){this.lpAmount=i.lpAmount,this.rewardDebt=i.rewardDebt}get userLiquidity(){return Y(this.lpAmount,3).toFixed()}earned(i,r){let s=Gi(this.lpAmount,this.rewardDebt,i.accRewardPerShareP,i.p);return r?Y(s,r).toFixed():s}};g();y();f();var We=class{};var gn=class extends We{constructor(r,s){super();this.web3=r;this.api=s}chainType="EVM";P=52;async getUserBalanceInfo(r,s){let o;try{o=await Un(this.getUserBalanceInfoByBatch(r,s),`Cannot get UserBalanceInfo for ${s.name} on ${s.chainSymbol}`,5e3)}catch{o=await Zr(()=>this.getUserBalanceInfoPerProperty(r,s),`Cannot get UserBalanceInfo for ${s.name} on ${s.chainSymbol}`,5,2e3)}return o}async getPoolInfoFromChain(r){let s;try{s=await Un(this.getPoolInfoByBatch(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5e3)}catch{s=await Zr(()=>this.getPoolInfoPerProperty(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5,2e3)}return s}async getUserBalanceInfoByBatch(r,s){let o=new this.web3.eth.BatchRequest,m=this.getPoolContract(s.poolAddress),u=m.methods.userRewardDebt(r).encodeABI(),p=m.methods.balanceOf(r).encodeABI();o.add({method:"eth_call",params:[{to:s.poolAddress,data:u},"latest"]}),o.add({method:"eth_call",params:[{to:s.poolAddress,data:p},"latest"]});let[h,b]=await o.execute();if(h&&b&&!h.error&&!b.error)return new ve({lpAmount:St.utils.toBigInt(b.result).toString(),rewardDebt:St.utils.toBigInt(h.result).toString()});throw new Error("Batched failed")}async getUserBalanceInfoPerProperty(r,s){let o=(await this.getPoolContract(s.poolAddress).methods.userRewardDebt(r).call()).toString(),m=(await this.getPoolContract(s.poolAddress).methods.balanceOf(r).call()).toString();return new ve({lpAmount:m,rewardDebt:o})}async getPoolInfoByBatch(r){let s=new this.web3.eth.BatchRequest,o=this.getPoolContract(r.poolAddress),m=o.methods.a().encodeABI(),u=o.methods.d().encodeABI(),p=o.methods.tokenBalance().encodeABI(),h=o.methods.vUsdBalance().encodeABI(),b=o.methods.totalSupply().encodeABI(),S=o.methods.accRewardPerShareP().encodeABI();s.add({method:"eth_call",params:[{to:r.poolAddress,data:m},"latest"]}),s.add({method:"eth_call",params:[{to:r.poolAddress,data:u},"latest"]}),s.add({method:"eth_call",params:[{to:r.poolAddress,data:p},"latest"]}),s.add({method:"eth_call",params:[{to:r.poolAddress,data:h},"latest"]}),s.add({method:"eth_call",params:[{to:r.poolAddress,data:b},"latest"]}),s.add({method:"eth_call",params:[{to:r.poolAddress,data:S},"latest"]});let[C,x,B,I,M,F]=await s.execute();if(C&&x&&B&&I&&M&&F&&!C.error&&!x.error&&!B.error&&!I.error&&!M.error&&!F.error){let W=St.utils.toBigInt(B.result).toString(),D=St.utils.toBigInt(I.result).toString(),G=Ie({tokenBalance:W,vUsdBalance:D});return{aValue:St.utils.toBigInt(C.result).toString(),dValue:St.utils.toBigInt(x.result).toString(),tokenBalance:W,vUsdBalance:D,totalLpAmount:St.utils.toBigInt(M.result).toString(),accRewardPerShareP:St.utils.toBigInt(F.result).toString(),p:this.P,imbalance:G}}throw new Error("Batched failed")}async getPoolInfoPerProperty(r){let s=this.getPoolContract(r.poolAddress),o=(await s.methods.a().call()).toString(),m=(await s.methods.d().call()).toString(),u=(await s.methods.tokenBalance().call()).toString(),p=(await s.methods.vUsdBalance().call()).toString(),h=(await s.methods.totalSupply().call()).toString(),b=(await s.methods.accRewardPerShareP().call()).toString(),S=Ie({tokenBalance:u,vUsdBalance:p});return{aValue:o,dValue:m,tokenBalance:u,vUsdBalance:p,totalLpAmount:h,accRewardPerShareP:b,p:this.P,imbalance:S}}async buildRawTransactionDeposit(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.deposit(r.amount).encodeABI()})}async buildRawTransactionWithdraw(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.withdraw(r.amount).encodeABI()})}async buildRawTransactionClaimRewards(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.claimRewards().encodeABI()})}buildTxParams(r){return{from:r.accountAddress,to:r.token.poolAddress,value:"0"}}getPoolContract(r){return new this.web3.eth.Contract(pn.abi,r)}};g();y();f();var ar=class{constructor(i,r,s,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=s;this.tokenService=o}async approve(i,r){if(r){let s=i,o=r;return this.tokenService.buildRawTransactionApprove({...o,spender:o.token.poolAddress},s)}else{let s=i;return this.tokenService.buildRawTransactionApprove({...s,spender:s.token.poolAddress})}}async deposit(i,r){return ee(i.amount),ne("amount",i.amount,i.token.decimals),i.amount=z(i.amount,i.token.decimals).toFixed(),Xt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionDeposit(i)}async withdraw(i,r){return ee(i.amount),ne("amount",i.amount,i.token.decimals),i.amount=z(i.amount,3).toFixed(),Xt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionWithdraw(i)}async claimRewards(i,r){return Xt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionClaimRewards(i)}};g();y();f();import{AnchorProvider as Io,BN as $a,Program as Ro,Spl as vo,web3 as ko}from"@project-serum/anchor";import{Connection as xo,PublicKey as Pt}from"@solana/web3.js";var sr=class extends We{constructor(r,s){super();this.solanaRpcUrl=r;this.api=s}chainType="SOLANA";P=48;async getUserBalanceInfo(r,s){let o=this.buildAnchorProvider(r),m=this.getBridge(s.bridgeAddress,o),u=new Pt(s.poolAddress),p=await m.account.pool.fetch(u);try{let h=await Jr(new Pt(r),p.mint,m.programId),{lpAmount:b,rewardDebt:S}=await m.account.userDeposit.fetch(h);return new ve({lpAmount:b.toString(),rewardDebt:S.toString()})}catch{return new ve({lpAmount:"0",rewardDebt:"0"})}}async getPoolInfoFromChain(r){let s=this.buildAnchorProvider(r.bridgeAddress),o=await this.getBridge(r.bridgeAddress,s).account.pool.fetch(r.poolAddress),m=o.vUsdBalance.toString(),u=o.tokenBalance.toString(),p=Ie({tokenBalance:u,vUsdBalance:m});return{dValue:o.d.toString(),aValue:o.a.toString(),totalLpAmount:o.totalLpAmount.toString(),vUsdBalance:m,tokenBalance:u,accRewardPerShareP:o.accRewardPerShareP.toString(),p:this.P,imbalance:p}}async buildRawTransactionDeposit(r){let{bridge:s,accounts:o,preInstructions:m}=await this.prepareDataForTransaction(r),u=await s.methods.deposit(new $a(r.amount)).accounts(o).preInstructions(m).transaction();return u.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,u.feePayer=new Pt(r.accountAddress),await $t(u,r.txFeeParams,this.solanaRpcUrl),u}async buildRawTransactionWithdraw(r){let{bridge:s,accounts:o,preInstructions:m}=await this.prepareDataForTransaction(r),u=await s.methods.withdraw(new $a(r.amount)).accounts(o).preInstructions(m).transaction();return u.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,u.feePayer=new Pt(r.accountAddress),await $t(u,r.txFeeParams,this.solanaRpcUrl),u}async buildRawTransactionClaimRewards(r){let{bridge:s,accounts:o,preInstructions:m}=await this.prepareDataForTransaction(r),u=await s.methods.claimRewards().accounts(o).preInstructions(m).transaction();return u.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,u.feePayer=new Pt(r.accountAddress),await $t(u,r.txFeeParams,this.solanaRpcUrl),u}async prepareDataForTransaction(r){let s=this.buildAnchorProvider(r.accountAddress),o=this.getBridge(r.token.bridgeAddress,s),{accounts:m,preInstructions:u}=await this._getLPTransactionData(o,r.token.poolAddress,r.accountAddress,s);return{bridge:o,accounts:m,preInstructions:u}}getBridge(r,s){return new Ro(un,r,s)}buildAnchorProvider(r){let s=new xo(this.solanaRpcUrl,"confirmed"),o=new Pt(r);return new Io(s,{publicKey:o},{preflightCommitment:"confirmed",commitment:"confirmed"})}async _getLPTransactionData(r,s,o,m){let u=new Pt(o),p=await gt(r.programId),h=await jt(r.programId),b=new Pt(s),C=(await r.account.pool.fetch(b)).mint,x=await Xe(u,C),B=await Zt(C,r.programId),I=await Jr(u,C,r.programId),M=[ko.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await _t(x,m)}catch{let G=await vo.associatedToken(m).methods.create().accounts({mint:C,owner:u,associatedAccount:x}).instruction();M.push(G)}try{await r.account.userDeposit.fetch(I)}catch{let D=await r.methods.initDepositAccount().accounts({mint:C,user:u,userDeposit:I}).instruction();M.push(D)}return{accounts:{mint:C,user:u,config:p,pool:b,bridgeAuthority:h,userDeposit:I,userToken:x,bridgeToken:B},preInstructions:M}}};g();y();f();import{contract as zR}from"@stellar/stellar-sdk";g();y();f();import{contract as t}from"@stellar/stellar-sdk";var Fo=t.Spec,Mo=t.Client;var or=class extends Mo{constructor(r){super(new Fo(["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 yT,rpc as Oo}from"@stellar/stellar-sdk";var Ja=Oo.Api;function Yt(a){let{simulation:i,options:r}=a;if(!i)throw new Error("Soroban assembled transaction does not have simulation");if(Ja.isSimulationSuccess(i))return i.result==null?void 0:r.parseResultXdr(i.result.retval);throw new Error(i.error)}function Kt(a){let{simulation:i}=a;if(!i)throw new Error("Soroban assembled transaction does not have simulation");return Ja.isSimulationError(i)}var cr=class extends We{constructor(r,s,o){super();this.nodeRpcUrlsConfig=r;this.params=s;this.api=o}chainType="SRB";P=48;async getUserBalanceInfo(r,s){let m=await this.getContract(s.poolAddress).get_user_deposit({user:r});if(Kt(m))throw new O;let u=Yt(m);if(!u)throw new O;let p=u.unwrap();return new ve({lpAmount:p.lp_amount.toString(),rewardDebt:p.reward_debt.toString()})}async getPoolInfoFromChain(r){let o=await this.getContract(r.poolAddress).get_pool();if(Kt(o))throw new O;let m=Yt(o);if(!m)throw new O;let u=m.unwrap();return{aValue:u.a.toString(),accRewardPerShareP:u.acc_reward_per_share_p.toString(),dValue:u.d.toString(),tokenBalance:u.token_balance.toString(),p:this.P,totalLpAmount:u.total_lp_amount.toString(),vUsdBalance:u.v_usd_balance.toString(),imbalance:Ie({tokenBalance:u.token_balance.toString(),vUsdBalance:u.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,s){let o={publicKey:s,contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new or(o)}};g();y();f();import{SuiClient as Vo}from"@mysten/sui/client";import{Transaction as yr}from"@mysten/sui/transactions";var Qt=Le(ht());g();y();f();fe();g();y();f();fe();import{bcs as La}from"@mysten/sui/bcs";import{fromB64 as No}from"@mysten/sui/utils";function Ar(a){return a=E(a),a.startsWith(`${bt}::balance::Balance<`)}var Se=class a{__StructClass=!0;static get $typeName(){return`${bt}::balance::Balance`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=a.$typeName;$fullTypeName;$typeArgs;$isPhantom=a.$isPhantom;value;constructor(i,r){this.$fullTypeName=K(a.$typeName,...i),this.$typeArgs=i,this.value=r.value}static reified(i){return{typeName:a.$typeName,fullTypeName:K(a.$typeName,Z(i)),typeArgs:[Z(i)],isPhantom:a.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>a.fromFields(i,r),fromFieldsWithTypes:r=>a.fromFieldsWithTypes(i,r),fromBcs:r=>a.fromBcs(i,r),bcs:a.bcs,fromJSONField:r=>a.fromJSONField(i,r),fromJSON:r=>a.fromJSON(i,r),fromSuiParsedData:r=>a.fromSuiParsedData(i,r),fromSuiObjectData:r=>a.fromSuiObjectData(i,r),fetch:async(r,s)=>a.fetch(r,i,s),new:r=>new a([Z(i)],r),kind:"StructClassReified"}}static get r(){return a.reified}static phantom(i){return oe(a.reified(i))}static get p(){return a.phantom}static get bcs(){return La.struct("Balance",{value:La.u64()})}static fromFields(i,r){return a.reified(i).new({value:L("u64",r.value)})}static fromFieldsWithTypes(i,r){if(!Ar(r.type))throw new Error("not a Balance type");return st(r,[i]),a.reified(i).new({value:$("u64",r.fields.value)})}static fromBcs(i,r){return a.fromFields(i,a.bcs.parse(r))}toJSONField(){return{value:this.value.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return a.reified(i).new({value:J("u64",r.value)})}static fromJSON(i,r){if(r.$typeName!==a.$typeName)throw new Error("not a WithTwoGenerics json object");return Qe(K(a.$typeName,Z(i)),r.$typeArgs,[i]),a.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Ar(r.type))throw new Error(`object at ${r.fields.id} is not a Balance object`);return a.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Ar(r.bcs.type))throw new Error("object at is not a Balance object");let s=be(r.bcs.type).typeArgs;if(s.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${s.length}'`);let o=E(s[0]),m=E(Z(i));if(o!==E(Z(i)))throw new Error(`type argument mismatch: expected '${m}' but got '${o}'`);return a.fromBcs(i,No(r.bcs.bcsBytes))}if(r.content)return a.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,s){let o=await i.getObject({id:s,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching Balance object at id ${s}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!Ar(o.data.bcs.type))throw new Error(`object at id ${s} is not a Balance object`);return a.fromSuiObjectData(r,o.data)}};var pi=Le(ht());g();y();f();fe();var li=Le(ht());import{bcs as ur}from"@mysten/sui/bcs";import{fromB64 as Do}from"@mysten/sui/utils";function mr(a){return a=E(a),a.startsWith(`${li.PKG_V1}::pool_rewards::PoolRewards<`)}var Nt=class a{__StructClass=!0;static get $typeName(){return`${li.PKG_V1}::pool_rewards::PoolRewards`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=a.$typeName;$fullTypeName;$typeArgs;$isPhantom=a.$isPhantom;accRewardPerShareP;adminFeeShareBp;adminFee;rewards;lpSupply;constructor(i,r){this.$fullTypeName=K(a.$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:a.$typeName,fullTypeName:K(a.$typeName,Z(i)),typeArgs:[Z(i)],isPhantom:a.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>a.fromFields(i,r),fromFieldsWithTypes:r=>a.fromFieldsWithTypes(i,r),fromBcs:r=>a.fromBcs(i,r),bcs:a.bcs,fromJSONField:r=>a.fromJSONField(i,r),fromJSON:r=>a.fromJSON(i,r),fromSuiParsedData:r=>a.fromSuiParsedData(i,r),fromSuiObjectData:r=>a.fromSuiObjectData(i,r),fetch:async(r,s)=>a.fetch(r,i,s),new:r=>new a([Z(i)],r),kind:"StructClassReified"}}static get r(){return a.reified}static phantom(i){return oe(a.reified(i))}static get p(){return a.phantom}static get bcs(){return ur.struct("PoolRewards",{acc_reward_per_share_p:ur.u128(),admin_fee_share_bp:ur.u64(),admin_fee:Se.bcs,rewards:Se.bcs,lp_supply:ur.u64()})}static fromFields(i,r){return a.reified(i).new({accRewardPerShareP:L("u128",r.acc_reward_per_share_p),adminFeeShareBp:L("u64",r.admin_fee_share_bp),adminFee:L(Se.reified(i),r.admin_fee),rewards:L(Se.reified(i),r.rewards),lpSupply:L("u64",r.lp_supply)})}static fromFieldsWithTypes(i,r){if(!mr(r.type))throw new Error("not a PoolRewards type");return st(r,[i]),a.reified(i).new({accRewardPerShareP:$("u128",r.fields.acc_reward_per_share_p),adminFeeShareBp:$("u64",r.fields.admin_fee_share_bp),adminFee:$(Se.reified(i),r.fields.admin_fee),rewards:$(Se.reified(i),r.fields.rewards),lpSupply:$("u64",r.fields.lp_supply)})}static fromBcs(i,r){return a.fromFields(i,a.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 a.reified(i).new({accRewardPerShareP:J("u128",r.accRewardPerShareP),adminFeeShareBp:J("u64",r.adminFeeShareBp),adminFee:J(Se.reified(i),r.adminFee),rewards:J(Se.reified(i),r.rewards),lpSupply:J("u64",r.lpSupply)})}static fromJSON(i,r){if(r.$typeName!==a.$typeName)throw new Error("not a WithTwoGenerics json object");return Qe(K(a.$typeName,Z(i)),r.$typeArgs,[i]),a.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!mr(r.type))throw new Error(`object at ${r.fields.id} is not a PoolRewards object`);return a.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!mr(r.bcs.type))throw new Error("object at is not a PoolRewards object");let s=be(r.bcs.type).typeArgs;if(s.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${s.length}'`);let o=E(s[0]),m=E(Z(i));if(o!==E(Z(i)))throw new Error(`type argument mismatch: expected '${m}' but got '${o}'`);return a.fromBcs(i,Do(r.bcs.bcsBytes))}if(r.content)return a.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,s){let o=await i.getObject({id:s,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching PoolRewards object at id ${s}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!mr(o.data.bcs.type))throw new Error(`object at id ${s} is not a PoolRewards object`);return a.fromSuiObjectData(r,o.data)}};g();y();f();fe();var di=Le(ht());import{bcs as Ht}from"@mysten/sui/bcs";import{fromB64 as Wo}from"@mysten/sui/utils";function lr(a){return a=E(a),a.startsWith(`${di.PKG_V1}::pool_state::PoolState<`)}var Dt=class a{__StructClass=!0;static get $typeName(){return`${di.PKG_V1}::pool_state::PoolState`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=a.$typeName;$fullTypeName;$typeArgs;$isPhantom=a.$isPhantom;tokenBalance;vusdBalance;d;a;balanceRatioMinBp;constructor(i,r){this.$fullTypeName=K(a.$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:a.$typeName,fullTypeName:K(a.$typeName,Z(i)),typeArgs:[Z(i)],isPhantom:a.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>a.fromFields(i,r),fromFieldsWithTypes:r=>a.fromFieldsWithTypes(i,r),fromBcs:r=>a.fromBcs(i,r),bcs:a.bcs,fromJSONField:r=>a.fromJSONField(i,r),fromJSON:r=>a.fromJSON(i,r),fromSuiParsedData:r=>a.fromSuiParsedData(i,r),fromSuiObjectData:r=>a.fromSuiObjectData(i,r),fetch:async(r,s)=>a.fetch(r,i,s),new:r=>new a([Z(i)],r),kind:"StructClassReified"}}static get r(){return a.reified}static phantom(i){return oe(a.reified(i))}static get p(){return a.phantom}static get bcs(){return Ht.struct("PoolState",{token_balance:Ht.u64(),vusd_balance:Ht.u64(),d:Ht.u64(),a:Ht.u64(),balance_ratio_min_bp:Ht.u64()})}static fromFields(i,r){return a.reified(i).new({tokenBalance:L("u64",r.token_balance),vusdBalance:L("u64",r.vusd_balance),d:L("u64",r.d),a:L("u64",r.a),balanceRatioMinBp:L("u64",r.balance_ratio_min_bp)})}static fromFieldsWithTypes(i,r){if(!lr(r.type))throw new Error("not a PoolState type");return st(r,[i]),a.reified(i).new({tokenBalance:$("u64",r.fields.token_balance),vusdBalance:$("u64",r.fields.vusd_balance),d:$("u64",r.fields.d),a:$("u64",r.fields.a),balanceRatioMinBp:$("u64",r.fields.balance_ratio_min_bp)})}static fromBcs(i,r){return a.fromFields(i,a.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 a.reified(i).new({tokenBalance:J("u64",r.tokenBalance),vusdBalance:J("u64",r.vusdBalance),d:J("u64",r.d),a:J("u64",r.a),balanceRatioMinBp:J("u64",r.balanceRatioMinBp)})}static fromJSON(i,r){if(r.$typeName!==a.$typeName)throw new Error("not a WithTwoGenerics json object");return Qe(K(a.$typeName,Z(i)),r.$typeArgs,[i]),a.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!lr(r.type))throw new Error(`object at ${r.fields.id} is not a PoolState object`);return a.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!lr(r.bcs.type))throw new Error("object at is not a PoolState object");let s=be(r.bcs.type).typeArgs;if(s.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${s.length}'`);let o=E(s[0]),m=E(Z(i));if(o!==E(Z(i)))throw new Error(`type argument mismatch: expected '${m}' but got '${o}'`);return a.fromBcs(i,Wo(r.bcs.bcsBytes))}if(r.content)return a.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,s){let o=await i.getObject({id:s,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching PoolState object at id ${s}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!lr(o.data.bcs.type))throw new Error(`object at id ${s} is not a PoolState object`);return a.fromSuiObjectData(r,o.data)}};import{bcs as fn}from"@mysten/sui/bcs";import{fromB64 as Uo}from"@mysten/sui/utils";function dr(a){return a=E(a),a.startsWith(`${pi.PKG_V1}::pool::Pool<`)}var pr=class a{__StructClass=!0;static get $typeName(){return`${pi.PKG_V1}::pool::Pool`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=a.$typeName;$fullTypeName;$typeArgs;$isPhantom=a.$isPhantom;id;state;rewards;feeShareBp;canDeposit;canWithdraw;decimals;balance;constructor(i,r){this.$fullTypeName=K(a.$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:a.$typeName,fullTypeName:K(a.$typeName,Z(i)),typeArgs:[Z(i)],isPhantom:a.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>a.fromFields(i,r),fromFieldsWithTypes:r=>a.fromFieldsWithTypes(i,r),fromBcs:r=>a.fromBcs(i,r),bcs:a.bcs,fromJSONField:r=>a.fromJSONField(i,r),fromJSON:r=>a.fromJSON(i,r),fromSuiParsedData:r=>a.fromSuiParsedData(i,r),fromSuiObjectData:r=>a.fromSuiObjectData(i,r),fetch:async(r,s)=>a.fetch(r,i,s),new:r=>new a([Z(i)],r),kind:"StructClassReified"}}static get r(){return a.reified}static phantom(i){return oe(a.reified(i))}static get p(){return a.phantom}static get bcs(){return fn.struct("Pool",{id:$e.bcs,state:Dt.bcs,rewards:Nt.bcs,fee_share_bp:fn.u64(),can_deposit:fn.bool(),can_withdraw:fn.bool(),decimals:fn.u8(),balance:Se.bcs})}static fromFields(i,r){return a.reified(i).new({id:L($e.reified(),r.id),state:L(Dt.reified(i),r.state),rewards:L(Nt.reified(i),r.rewards),feeShareBp:L("u64",r.fee_share_bp),canDeposit:L("bool",r.can_deposit),canWithdraw:L("bool",r.can_withdraw),decimals:L("u8",r.decimals),balance:L(Se.reified(i),r.balance)})}static fromFieldsWithTypes(i,r){if(!dr(r.type))throw new Error("not a Pool type");return st(r,[i]),a.reified(i).new({id:$($e.reified(),r.fields.id),state:$(Dt.reified(i),r.fields.state),rewards:$(Nt.reified(i),r.fields.rewards),feeShareBp:$("u64",r.fields.fee_share_bp),canDeposit:$("bool",r.fields.can_deposit),canWithdraw:$("bool",r.fields.can_withdraw),decimals:$("u8",r.fields.decimals),balance:$(Se.reified(i),r.fields.balance)})}static fromBcs(i,r){return a.fromFields(i,a.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 a.reified(i).new({id:J($e.reified(),r.id),state:J(Dt.reified(i),r.state),rewards:J(Nt.reified(i),r.rewards),feeShareBp:J("u64",r.feeShareBp),canDeposit:J("bool",r.canDeposit),canWithdraw:J("bool",r.canWithdraw),decimals:J("u8",r.decimals),balance:J(Se.reified(i),r.balance)})}static fromJSON(i,r){if(r.$typeName!==a.$typeName)throw new Error("not a WithTwoGenerics json object");return Qe(K(a.$typeName,Z(i)),r.$typeArgs,[i]),a.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!dr(r.type))throw new Error(`object at ${r.fields.id} is not a Pool object`);return a.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!dr(r.bcs.type))throw new Error("object at is not a Pool object");let s=be(r.bcs.type).typeArgs;if(s.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${s.length}'`);let o=E(s[0]),m=E(Z(i));if(o!==E(Z(i)))throw new Error(`type argument mismatch: expected '${m}' but got '${o}'`);return a.fromBcs(i,Uo(r.bcs.bcsBytes))}if(r.content)return a.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,s){let o=await i.getObject({id:s,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching Pool object at id ${s}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!dr(o.data.bcs.type))throw new Error(`object at id ${s} is not a Pool object`);return a.fromSuiObjectData(r,o.data)}};g();y();f();fe();var fi=Le(ht());import{bcs as gi}from"@mysten/sui/bcs";import{fromB64 as Eo}from"@mysten/sui/utils";function gr(a){return a=E(a),a.startsWith(`${fi.PKG_V1}::user_deposit::UserDeposit<`)}var fr=class a{__StructClass=!0;static get $typeName(){return`${fi.PKG_V1}::user_deposit::UserDeposit`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=a.$typeName;$fullTypeName;$typeArgs;$isPhantom=a.$isPhantom;id;lpAmount;rewardDebt;constructor(i,r){this.$fullTypeName=K(a.$typeName,...i),this.$typeArgs=i,this.id=r.id,this.lpAmount=r.lpAmount,this.rewardDebt=r.rewardDebt}static reified(i){return{typeName:a.$typeName,fullTypeName:K(a.$typeName,Z(i)),typeArgs:[Z(i)],isPhantom:a.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>a.fromFields(i,r),fromFieldsWithTypes:r=>a.fromFieldsWithTypes(i,r),fromBcs:r=>a.fromBcs(i,r),bcs:a.bcs,fromJSONField:r=>a.fromJSONField(i,r),fromJSON:r=>a.fromJSON(i,r),fromSuiParsedData:r=>a.fromSuiParsedData(i,r),fromSuiObjectData:r=>a.fromSuiObjectData(i,r),fetch:async(r,s)=>a.fetch(r,i,s),new:r=>new a([Z(i)],r),kind:"StructClassReified"}}static get r(){return a.reified}static phantom(i){return oe(a.reified(i))}static get p(){return a.phantom}static get bcs(){return gi.struct("UserDeposit",{id:$e.bcs,lp_amount:gi.u64(),reward_debt:gi.u64()})}static fromFields(i,r){return a.reified(i).new({id:L($e.reified(),r.id),lpAmount:L("u64",r.lp_amount),rewardDebt:L("u64",r.reward_debt)})}static fromFieldsWithTypes(i,r){if(!gr(r.type))throw new Error("not a UserDeposit type");return st(r,[i]),a.reified(i).new({id:$($e.reified(),r.fields.id),lpAmount:$("u64",r.fields.lp_amount),rewardDebt:$("u64",r.fields.reward_debt)})}static fromBcs(i,r){return a.fromFields(i,a.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 a.reified(i).new({id:J($e.reified(),r.id),lpAmount:J("u64",r.lpAmount),rewardDebt:J("u64",r.rewardDebt)})}static fromJSON(i,r){if(r.$typeName!==a.$typeName)throw new Error("not a WithTwoGenerics json object");return Qe(K(a.$typeName,Z(i)),r.$typeArgs,[i]),a.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 UserDeposit object`);return a.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 UserDeposit object");let s=be(r.bcs.type).typeArgs;if(s.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${s.length}'`);let o=E(s[0]),m=E(Z(i));if(o!==E(Z(i)))throw new Error(`type argument mismatch: expected '${m}' but got '${o}'`);return a.fromBcs(i,Eo(r.bcs.bcsBytes))}if(r.content)return a.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,s){let o=await i.getObject({id:s,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching UserDeposit object at id ${s}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!gr(o.data.bcs.type))throw new Error(`object at id ${s} is not a UserDeposit object`);return a.fromSuiObjectData(r,o.data)}};g();y();f();function Ya(a,i,r){if(i.length===0||!i[0])return[];let s=i[0],o=a.reduce((p,h)=>p+BigInt(h),BigInt(0)),m=BigInt(s.balance),u=[];for(let p of i.slice(1)){if(m>o)return Xa(r,s,u,a);m+=BigInt(p.balance),u.push(p)}return m>=o?Xa(r,s,u,a):[]}function Xa(a,i,r,s){let o=s.map(m=>a.pure.u64(m));return r.length>0&&a.mergeCoins(i.coinObjectId,r.map(m=>m.coinObjectId)),a.splitCoins(i.coinObjectId,o)}g();y();f();var Go="0x0000000000000000000000000000000000000000000000000000000000000000";async function Ka(a,i,r){let s=await a.devInspectTransactionBlock({sender:Go,transactionBlock:i});if(s.effects.status.status!=="success")throw new Error(`inspectionResult failed. ${JSON.stringify(s,null,2)}`);let o=s.results?.pop()?.returnValues?.pop();if(!o)throw new Error(`Something with inspectionResult went wrong. ${JSON.stringify(s,null,2)}`);let[m,u]=o;return typeof r=="object"?r.fromBcs(Uint8Array.from(m)).toJSONField():ln(r).parse(Uint8Array.from(m))}var hr=class extends We{constructor(r,s){super();this.suiRpcUrl=r;this.api=s;this.client=new Vo({url:r})}chainType="SUI";client;async getUserBalanceInfo(r,s){if(!s.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=s.suiAddresses;if(!o)throw new O("SUI token must contain 'suiAddresses'");(0,Qt.setAddress)(o.bridgeAddress,o.bridgeAddressOrigin);let u=(await this.fetchDeposits(r,s.originTokenAddress)).reduce((p,h)=>{if(h.data)return p.lpAmount+=BigInt(h.data.content.fields.lp_amount),p.rewardDebt+=BigInt(h.data.content.fields.reward_debt),p;throw new O("Deposits fetch failed")},{lpAmount:BigInt(0),rewardDebt:BigInt(0)});return new ve({lpAmount:u.lpAmount.toString(),rewardDebt:u.rewardDebt.toString()})}async fetchDeposits(r,s){return await ot(o=>this.client.getOwnedObjects({owner:r,filter:{StructType:fr.phantom(oe(s)).phantomType},options:{showContent:!0},cursor:o}))}async getPoolInfoFromChain(r){let s=r.suiAddresses;if(!s)throw new O("SUI token must contain 'suiAddresses'");if((0,Qt.setAddress)(s.bridgeAddress,s.bridgeAddressOrigin),!r.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=48,m=new yr;xa(m,r.originTokenAddress,s.bridgeObjectAddress);let u=await Ka(this.client,m,pr.reified(oe(r.originTokenAddress))),p=u.state.tokenBalance,h=u.state.vusdBalance,b=Ie({tokenBalance:p,vUsdBalance:h});return{dValue:u.state.d,aValue:u.state.a,totalLpAmount:u.rewards.lpSupply,vUsdBalance:h,tokenBalance:p,accRewardPerShareP:u.rewards.accRewardPerShareP,p:o,imbalance:b}}async buildRawTransactionDeposit(r){let s=r.token.suiAddresses;if(!s)throw new O("SUI token must contain 'suiAddresses'");if((0,Qt.setAddress)(s.bridgeAddress,s.bridgeAddressOrigin),!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=await ot(C=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:C}));if(o.length===0||!o[0])throw new ct("No coins to deposit");let m=o[0],u=new yr;u.setSender(r.accountAddress);let{depositObj:p,isNewDeposit:h}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,u),[b]=Ya([r.amount],o,u);if(!b)throw new ct("No coins to deposit");if(!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let S=Ra(u,r.token.originTokenAddress,{bridge:s.bridgeObjectAddress,userDeposit:p,coin:b});return u.mergeCoins(m.coinObjectId,[S]),h&&u.transferObjects([p],r.accountAddress),await u.toJSON({client:this.client})}async getDepositObject(r,s,o){let m=await this.fetchDeposits(r,s);if(m.length===0||!m[0]){let u=oe(s).phantomType;return{depositObj:Fa(o,u),isNewDeposit:!0}}else{if(m[0].data?.objectId)return{depositObj:m[0].data.objectId,isNewDeposit:!1};throw new O("Something went wrong while deposit")}}async buildRawTransactionWithdraw(r){let s=r.token.suiAddresses;if(!s)throw new O("SUI token must contain 'suiAddresses'");if((0,Qt.setAddress)(s.bridgeAddress,s.bridgeAddressOrigin),!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=oe(r.token.originTokenAddress).phantomType,m=new yr;m.setSender(r.accountAddress);let{depositObj:u,isNewDeposit:p}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,m);if(p)throw new ct("No deposit found");let h=va(m,o,{bridge:s.bridgeObjectAddress,userDeposit:u,amountLp:BigInt(r.amount)}),b=await ot(S=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:S}));if(!h[0]||!h[1])throw new O("No rewards found");return b[0]?m.mergeCoins(b[0].coinObjectId,[h[0],h[1]]):(m.mergeCoins(h[0],[h[1]]),m.transferObjects([h[0]],r.accountAddress)),await m.toJSON({client:this.client})}async buildRawTransactionClaimRewards(r){let s=r.token.suiAddresses;if(!s)throw new O("SUI token must contain 'suiAddresses'");if((0,Qt.setAddress)(s.bridgeAddress,s.bridgeAddressOrigin),!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=oe(r.token.originTokenAddress).phantomType,m=new yr;m.setSender(r.accountAddress);let{depositObj:u,isNewDeposit:p}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,m);if(p)throw new ct("No deposit found");let h=ka(m,o,{bridge:s.bridgeObjectAddress,userDeposit:u}),b=await ot(S=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:S}));return b[0]?m.mergeCoins(b[0].coinObjectId,[h]):m.transferObjects([h],r.accountAddress),await m.toJSON({client:this.client})}};g();y();f();import{Web3 as Tr}from"web3";import{encodeFunctionCall as jo}from"web3-eth-abi";var yn=class extends We{constructor(r,s,o){super();this.tronWeb=r;this.api=s;this.tronJsonRpc=o}chainType="TRX";P=52;async getUserBalanceInfo(r,s){let o;if(this.tronJsonRpc)try{o=await this.getUserBalanceInfoByBatch(this.tronJsonRpc,r,s)}catch{o=await this.getUserBalanceInfoPerProperty(r,s)}else o=await this.getUserBalanceInfoPerProperty(r,s);return o}async getUserBalanceInfoByBatch(r,s,o){let m=on(o.poolAddress),u=on(s),p=[{jsonrpc:"2.0",id:1,method:"eth_call",params:[{to:m,data:this.getFunctionAbi("userRewardDebt",u)},"latest"]},{jsonrpc:"2.0",id:2,method:"eth_call",params:[{to:m,data:this.getFunctionAbi("balanceOf",u)},"latest"]}],b=await(await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(p)})).json();if(Array.isArray(b)&&b.length===2){let S=C=>{let x=b.find(B=>B.id===C);if(!x||!x.result)throw new Error(`Missing or invalid result for id ${C}`);return Tr.utils.toBigInt(x.result).toString()};return new ve({lpAmount:Tr.utils.toBigInt(S(2)).toString(),rewardDebt:Tr.utils.toBigInt(S(1)).toString()})}throw new Error("Batched HTTP call failed")}async getUserBalanceInfoPerProperty(r,s){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(r);let o=this.getContract(s.poolAddress),m=(await o.methods.userRewardDebt(r).call()).toString(),u=(await o.methods.balanceOf(r).call()).toString();return new ve({lpAmount:u,rewardDebt:m})}async getPoolInfoFromChain(r){let s;if(this.tronJsonRpc)try{s=await this.getPoolInfoByBatch(this.tronJsonRpc,r)}catch{s=await this.getPoolInfoPerProperty(r)}else s=await this.getPoolInfoPerProperty(r);return s}async getPoolInfoByBatch(r,s){let o=on(s.poolAddress),m=[{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(m)})).json();if(Array.isArray(p)&&p.length===6){let h=x=>{let B=p.find(I=>I.id===x);if(!B||!B.result)throw new Error(`Missing or invalid result for id ${x}`);return Tr.utils.toBigInt(B.result).toString()},b=h(3),S=h(4),C=Ie({tokenBalance:b,vUsdBalance:S});return{aValue:h(1),dValue:h(2),tokenBalance:b,vUsdBalance:S,totalLpAmount:h(5),accRewardPerShareP:h(6),p:this.P,imbalance:C}}throw new Error("Batched pool info call failed")}async getPoolInfoPerProperty(r){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(r.poolAddress);let s=this.getContract(r.poolAddress),[o,m,u,p,h,b]=await Promise.all([s.methods.a().call(),s.methods.d().call(),s.methods.tokenBalance().call(),s.methods.vUsdBalance().call(),s.methods.totalSupply().call(),s.methods.accRewardPerShareP().call()]),S=u.toString(),C=p.toString(),x=Ie({tokenBalance:S,vUsdBalance:C});return{aValue:o.toString(),dValue:m.toString(),tokenBalance:S,vUsdBalance:C,totalLpAmount:h.toString(),accRewardPerShareP:b.toString(),p:this.P,imbalance:x}}buildRawTransactionDeposit(r){let{amount:s,accountAddress:o}=r,m=[{type:"uint256",value:s}];return this.buildRawTransaction(r.token.poolAddress,"deposit(uint256)",m,"0",o)}buildRawTransactionWithdraw(r){let{amount:s,accountAddress:o}=r,m=[{type:"uint256",value:s}];return this.buildRawTransaction(r.token.poolAddress,"withdraw(uint256)",m,"0",o)}buildRawTransactionClaimRewards(r){let{accountAddress:s}=r,o=[];return this.buildRawTransaction(r.token.poolAddress,"claimRewards()",o,"0",s)}async buildRawTransaction(r,s,o,m,u){let p=await this.tronWeb.transactionBuilder.triggerSmartContract(r,s,{callValue:+m},o,u);if(!p?.result?.result)throw new O("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}getContract(r){return this.tronWeb.contract(pn.abi,r)}getFunctionAbi(r,...s){let o=pn.abi.find(m=>m.type==="function"&&"name"in m&&m.name===r);if(!o)throw new Error(`${r} method not found in Pool ABI`);return jo(o,s)}};var br=class{constructor(i,r,s,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=s;this.tokenService=o;this.rawTxBuilder=new ar(i,r,this.params,o);let m=s.cachePoolInfoChainSec>0?s.cachePoolInfoChainSec*1e3:20*1e3;this.cache=new _o({defaultTtl:m})}rawTxBuilder;cache;async getAllowance(i,r){if(r){let s=i,o=r;return await this.tokenService.getAllowance({...o,spender:o.token.poolAddress},s)}else{let s=i;return await this.tokenService.getAllowance({...s,spender:s.token.poolAddress})}}async checkAllowance(i,r){if(r){let s=i,o=r;return this.tokenService.checkAllowance({...o,spender:o.token.poolAddress},s)}else{let s=i;return this.tokenService.checkAllowance({...s,spender:s.token.poolAddress})}}async approve(i,r){return this.tokenService.approve(i,{...r,spender:r.token.poolAddress})}async getAmountToBeDeposited(i,r,s){ee(i),ne("amount",i,r.decimals);let o=await this.getPoolInfoFromChain(r,s),{vUsdBalance:m,tokenBalance:u,aValue:p,dValue:h}=o,b=Za(i,p,h,u,m);return Y(b,3).toFixed()}async getAmountToBeWithdrawn(i,r,s,o){ee(i),ne("amount",i,s.decimals);let m=await this.getPoolInfoFromChain(s,o),u=_a(i),p=Ne(u,s.decimals),b=(await this.getUserBalanceInfo(r,s,o)).earned(m)||"0",S=Zo(p).plus(b).toFixed();return Y(S,s.decimals).toFixed()}async getUserBalanceInfo(i,r,s){return Xt(r.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,s).getUserBalanceInfo(i,r)}async getPoolInfoFromChain(i,r){let s={chainSymbol:i.chainSymbol,poolAddress:i.poolAddress},o=this.cache.get(s);if(o)return o;{let m=await Xt(i.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).getPoolInfoFromChain(i);return this.cache.put(s,m),this.api.cachePut({chainSymbol:i.chainSymbol,poolAddress:i.poolAddress},m),m}}};function Xt(a,i,r,s,o){switch(H.getChainProperty(a).chainType){case"EVM":{if(o)return new gn(o,i);{let m=r.getNodeRpcUrl(a),u=new Xo(m);return u.defaultReturnFormat={number:Lo.STR,bytes:Jo.HEX},new gn(u,i)}}case"TRX":{let m=r.getNodeRpcUrl(a),u=s.tronJsonRpc;if(o)return new yn(o,i,u);{let p=new $o({fullHost:m});return new yn(p,i,u)}}case"SOLANA":{let m=r.getNodeRpcUrl(a);return new sr(m,i)}case"SRB":return new cr(r,s,i);case"SUI":return new hr(r.getNodeRpcUrl(a),i)}}g();y();f();g();y();f();import{Big as ue}from"big.js";function za(a,i,r){let s=Yo(a,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo),o=Ko(s.amountIncludingCommissionInSystemPrecision,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo);return{swapToVUsdCalcResult:s,swapFromVUsdCalcResult:o}}function qa(a,i,r){let s=Ho(a,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo),o=Qo(s.amountIncludingCommissionInSystemPrecision,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo);return{swapToVUsdCalcResult:s,swapFromVUsdCalcResult:o}}function Yo(a,{feeShare:i,decimals:r},s){let o=ue(a),m=o.times(i),u=o.minus(m);return{bridgeFeeInTokenPrecision:m.round().toFixed(),amountIncludingCommissionInSystemPrecision:Ha(vt(u,r),s),amountExcludingCommissionInSystemPrecision:Ha(vt(o,r),s)}}function Ha(a,i){if(a.eq(0))return"0";let r=ue(i.tokenBalance).plus(a),s=nt(r.toFixed(),i.aValue,i.dValue);return ue(i.vUsdBalance).minus(s).round().toFixed()}function Ko(a,{feeShare:i,decimals:r},s){if(ue(a).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let m=ue(a).plus(s.vUsdBalance),u=nt(m,s.aValue,s.dValue),p=Ne(ue(s.tokenBalance).minus(u),r),h=ue(p).times(i),b=ue(p).minus(h).round();return{bridgeFeeInTokenPrecision:h.round().toFixed(),amountIncludingCommissionInTokenPrecision:b.toFixed(),amountExcludingCommissionInTokenPrecision:p.toFixed()}}function Ho(a,{feeShare:i,decimals:r},s){let o=ue(i).div(ue(1).minus(i)),m=ue(a).times(o),u=ue(a).plus(m);return{bridgeFeeInTokenPrecision:m.round().toFixed(),amountIncludingCommissionInSystemPrecision:Qa(vt(u,r),s),amountExcludingCommissionInSystemPrecision:Qa(vt(a,r),s)}}function Qa(a,i){let r=ue(i.tokenBalance).minus(a),s=nt(r.toFixed(),i.aValue,i.dValue);return ue(s).minus(i.vUsdBalance).round().toFixed()}function Qo(a,{feeShare:i,decimals:r},s){if(ue(a).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let o=ue(s.vUsdBalance).minus(a),m=nt(o.toFixed(),s.aValue,s.dValue),u=ue(m).minus(s.tokenBalance),p=Ne(u.toFixed(),r),h=ue(i).div(ue(1).minus(i)),b=ue(p).times(h),S=ue(p).plus(b);return{bridgeFeeInTokenPrecision:b.round().toFixed(),amountIncludingCommissionInTokenPrecision:S.round().toFixed(),amountExcludingCommissionInTokenPrecision:p.toFixed()}}g();y();f();import{Big as wt}from"big.js";function es(a,i,r,s,o){let m=tt(a,i,r),u=Ne(m,i.decimals),p=an(m,s,o),h=wt(a).times(i.feeShare),b=wt(p).div(wt(1).minus(s.feeShare)).minus(p);return{sourceLPSwap:{fee:Y(h,i.decimals).neg().round(i.decimals,wt.roundUp).toFixed(),swap:Y(wt(a).minus(u).minus(h),i.decimals).neg().round(i.decimals,wt.roundUp).toFixed()},destLPSwap:{fee:Y(b,s.decimals).neg().round(s.decimals,wt.roundUp).toFixed(),swap:Y(Ne(m,s.decimals).minus(p).minus(b),s.decimals).neg().round(s.decimals,wt.roundUp).toFixed()}}}g();y();f();g();y();f();g();y();f();import{Connection as zo,PublicKey as qo,TransactionMessage as ec}from"@solana/web3.js";var Sr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r}async addMemoToTx(i,r){if(r.length>28)throw new O("InvalidArgumentException memo cannot be more than 28 characters");let s=new zo(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),o=await Ft(i,s),m=ec.decompile(i.message,{addressLookupTableAccounts:o}),u=m.instructions[m.instructions.length-1];if(!u?.keys)throw new O("Last instruction or its keys are invalid.");u.keys.push({pubkey:new qo(w.from(r)),isSigner:!1,isWritable:!1}),i.message=m.compileToV0Message(o)}};g();y();f();import{Asset as rc,BASE_FEE as ic,contract as qR,Horizon as ts,Operation as ac,Operation as sc,rpc as Tn,TimeoutInfinite as oc,TransactionBuilder as yi,TransactionBuilder as ns}from"@stellar/stellar-sdk";g();y();f();import{contract as e}from"@stellar/stellar-sdk";var tc=e.Spec,nc=e.Client;var hn=class extends nc{constructor(r){super(new tc(["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 cc=100,Ac=180,Pr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r}async buildChangeTrustLineXdrTx(i){let s=await new ts.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(i.sender),m=await this.getContract(hn,i.tokenAddress).name();if(Kt(m))throw new O;let u=Yt(m);if(!u)throw new O;let[p,h]=u.split(":");if(p===void 0||h===void 0)throw new O("Invalid token name format. Expected format 'symbol:srbTokenAddress'");let b=new rc(p,h),S=sc.changeTrust({asset:b,limit:i.limit});return new ns(s,{fee:cc.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(S).setTimeout(Ac).build().toXDR()}async getBalanceLine(i,r){let o=await this.getContract(hn,r).name();if(Kt(o))throw new O;let m=Yt(o);if(!m)throw new O;let[u,p]=m.split(":"),h=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new ts.Server(h).loadAccount(i)).balances.find(x=>(x.asset_type==="credit_alphanum4"||x.asset_type==="credit_alphanum12")&&x.asset_code==u&&x.asset_issuer==p)}async submitTransactionStellar(i){let r=new ts.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),s=ns.fromXDR(i,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await r.submitTransaction(s)}async simulateAndCheckRestoreTxRequiredSoroban(i,r){let s=new Tn.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),o=await s.getAccount(r),m=yi.fromXDR(i,this.params.sorobanNetworkPassphrase),u=await s.simulateTransaction(m);if(Tn.Api.isSimulationRestore(u))return new yi(o,{fee:(+ic+ +u.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(u.restorePreamble.transactionData.build()).addOperation(ac.restoreFootprint({})).setTimeout(oc).build().toXDR()}async sendTransactionSoroban(i){let r=new Tn.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=yi.fromXDR(i,this.params.sorobanNetworkPassphrase);return r.sendTransaction(s)}async confirmTx(i,r=15){let s=new Tn.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),o=await Yi(()=>s.getTransaction(i),u=>u.status===Tn.Api.GetTransactionStatus.NOT_FOUND,r);if(o.length===0)throw new O("No transaction responses found.");let m=o[o.length-1];if(!m)throw new O("Unexpected error: last response is undefined.");return m}getContract(i,r){let s={contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new i(s)}};var wr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.srb=new Pr(i,r),this.sol=new Sr(i,r)}srb;sol};g();y();f();var xt=(r=>(r.WITH_NATIVE_CURRENCY="native",r.WITH_STABLECOIN="stablecoin",r))(xt||{}),Gn=(r=>(r.INT="int",r.FLOAT="float",r))(Gn||{});g();y();f();import{Big as Tc}from"big.js";import{TronWeb as bc}from"tronweb";import{Web3 as Sc}from"web3";g();y();f();g();y();f();var uc={abi:[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}]},Cr=uc;g();y();f();g();y();f();g();y();f();import{Big as rs}from"big.js";var Ue=class{async checkAllowance(i){let r=await this.getAllowance(i);return rs(r).gte(rs(i.amount))}};var mc="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",lc="0xdac17f958d2ee523a2206206994597c13d831ec7",dc=1e5,bn=class extends Ue{constructor(r,s){super();this.web3=r;this.api=s}chainType="EVM";getAllowance(r){let s=r.token.tokenAddress,o=r.owner,m=r.spender;return this.getAllowanceByTokenAddress(s,o,m)}getAllowanceByTokenAddress(r,s,o){return this.getERC20Contract(r).methods.allowance(s,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 m=await this.buildRawTransactionApprove({...r,amount:"0"});await this.sendRawTransaction(m,r.chainSymbol)}let s=await this.buildRawTransactionApprove(r);return await this.sendRawTransaction(s,r.chainSymbol)}isUsdt(r){return r.toLowerCase()===lc}buildRawTransactionApprove(r){let{tokenAddress:s,spender:o,owner:m,amount:u}=r,h=this.getERC20Contract(s).methods.approve(o,u==null?mc:nr(u));return Promise.resolve({from:m,to:s,value:"0",data:h.encodeABI()})}async sendRawTransaction(r,s){let o=r,m={maxPriorityFeePerGas:void 0,maxFeePerGas:void 0};s==="POL"?o.gas=dc:o.gas=await this.web3.eth.estimateGas(r);let{transactionHash:u}=await this.web3.eth.sendTransaction({...o,...m});return{txId:u.toString()}}getERC20Contract(r){return new this.web3.eth.Contract(Cr.abi,r)}};g();y();f();import{AnchorProvider as pc}from"@project-serum/anchor";import{Connection as gc,PublicKey as Br}from"@solana/web3.js";var Ir=class extends Ue{constructor(r,s){super();this.solanaRpcUrl=r;this.api=s}chainType="SOLANA";approve(r){throw new de}buildRawTransactionApprove(r){throw new de}buildAnchorProvider(r){let s=new gc(this.solanaRpcUrl,"confirmed"),o=new Br(r);return new pc(s,{publicKey:o},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(r){throw new de}async getTokenBalance(r){let{account:s,token:o}=r;try{let m=await Xe(new Br(s),new Br(o.tokenAddress));return(await _t(m,this.buildAnchorProvider(s))).amount.toString()}catch(m){if(m instanceof Error)return m.message.startsWith("Account does not exist"),"0";throw m}}async getNativeTokenBalance(r){return(await this.buildAnchorProvider(r.account).connection.getBalance(new Br(r.account))).toString()}};g();y();f();import{Horizon as XB,NotFoundError as fc}from"@stellar/stellar-sdk";var Rr=class extends Ue{constructor(r,s,o){super();this.nodeRpcUrlsConfig=r;this.params=s;this.api=o}chainType="SRB";getAllowance(){throw new de}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new O("OriginTokenAddress missing");let[s,o]=r.token.originTokenAddress.split(":"),m=new XB.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),u;try{u=await m.loadAccount(r.account)}catch(b){if(b instanceof fc)return"0";throw b}let h=u.balances.find(b=>(b.asset_type==="credit_alphanum4"||b.asset_type==="credit_alphanum12")&&b.asset_code==s&&b.asset_issuer==o);return h?.balance?z(h.balance,H.getChainDecimalsByType(H.getChainProperty(r.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(r){let u=(await new XB.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(r.account)).balances.find(p=>p.asset_type==="native");return u?.balance?z(u.balance,H.getChainDecimalsByType(H.getChainProperty(r.chainSymbol).chainType)).toFixed():"0"}approve(){throw new de}buildRawTransactionApprove(){throw new de}};g();y();f();import{SuiClient as yc}from"@mysten/sui/client";var vr=class extends Ue{constructor(r,s){super();this.suiRpcUrl=r;this.api=s;this.suiClient=new yc({url:this.suiRpcUrl})}chainType="SUI";suiClient;approve(r){throw new de}buildRawTransactionApprove(r){throw new de}getAllowance(r){throw new de}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");return(await this.suiClient.getBalance({owner:r.account,coinType:r.token.originTokenAddress})).totalBalance}async getNativeTokenBalance(r){let s=await ot(o=>this.suiClient.getCoins({owner:r.account,cursor:o}));return s.length===0?"0":s.reduce((o,m)=>o+BigInt(m.balance),BigInt(0)).toString()}};g();y();f();var hc="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Sn=class extends Ue{constructor(r,s){super();this.tronWeb=r;this.api=s}chainType="TRX";async getAllowance(r){let{token:{tokenAddress:s},owner:o}=r;return(await(await this.getContract(s)).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 s=await this.buildRawTransactionApprove(r);return await rr(this.tronWeb,s)}async buildRawTransactionApprove(r){let{tokenAddress:s,spender:o,owner:m,amount:u}=r,p=u==null?hc:nr(u),h=[{type:"address",value:o},{type:"uint256",value:p}];return this.buildRawTransaction(s,"approve(address,uint256)",h,"0",m)}getContract(r){return this.tronWeb.contract(Cr.abi,r)}async buildRawTransaction(r,s,o,m,u){let p=await this.tronWeb.transactionBuilder.triggerSmartContract(r,s,{callValue:+m},o,u);if(!p?.result?.result)throw new O("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}};var kr=class{constructor(i,r,s){this.api=i;this.nodeRpcUrlsConfig=r;this.params=s}async getAllowance(i,r){let s=await this.getChainTokenService(i.token.chainSymbol,i.owner,r).getAllowance(i);return Y(s,i.token.decimals).toFixed()}async checkAllowance(i,r){return ee(i.amount),ne("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&&(ee(r.amount),ne("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&&(ee(i.amount),ne("amount",i.amount,i.token.decimals)),this.getChainTokenService(i.token.chainSymbol,i.owner,r).buildRawTransactionApprove(this.prepareApproveParams(i))}async getTokenBalance(i,r){let s=await this.getChainTokenService(i.token.chainSymbol,i.account,r).getTokenBalance(i);return i.token.decimals?Y(s,i.token.decimals).toFixed():s}async getNativeTokenBalance(i,r){let s=await this.getChainTokenService(i.chainSymbol,i.account,r).getNativeTokenBalance(i);return{int:s,float:Y(s,H.getChainDecimalsByType(H.getChainProperty(i.chainSymbol).chainType)).toFixed()}}getChainTokenService(i,r,s){switch(H.getChainProperty(i).chainType){case"EVM":{if(s)return new bn(s,this.api);{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i);return new bn(new Sc(o),this.api)}}case"TRX":{if(s)return new Sn(s,this.api);{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i),m=new bc({fullHost:o});return m.setAddress(r),new Sn(m,this.api)}}case"SOLANA":{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i);return new Ir(o,this.api)}case"SRB":return new Rr(this.nodeRpcUrlsConfig,this.params,this.api);case"SUI":return new vr(this.nodeRpcUrlsConfig.getNodeRpcUrl(i),this.api)}}prepareCheckAllowanceParams(i){return{...i,amount: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:Tc(i.amount).toFixed()}}};var Pn=class{constructor(i){this.nodeRpcUrls=i}getNodeRpcUrl(i){let r=this.nodeRpcUrls[i];if(r!==void 0)return r;throw new kn(i)}},xr=class{api;tokenService;params;bridge;pool;constructor(i,r=In){H.addChainsProperties(r.additionalChainsProperties);let s=new Fn(r),o=new On(s),m=new Nn(o),u=new Wn(m);this.api=new Dn(u,r),this.tokenService=new kr(this.api,i,r),this.bridge=new ir(this.api,i,r,this.tokenService),this.pool=new br(this.api,i,r,this.tokenService),this.params=r}async chainDetailsMap(i){return this.api.getChainDetailsMap(i)}async tokens(i){return this.api.tokens(i)}async tokensByChain(i,r){let o=(await this.api.getChainDetailsMap(r))[i];return o?o.tokens:[]}async getTransferStatus(i,r){return this.api.getTransferStatus(i,r)}async getGasBalance(i,r){return this.api.getGasBalance(i,r)}async checkAddress(){return new Promise(i=>{i({status:"OK",gasBalance:null})})}async getPendingStatusInfo(i,r,s,o){ee(i);let m;r=="float"?(ne("amount",i,s.decimals),m=z(i,s.decimals).toFixed()):m=i;let u=tt(m,s,await pe(this.api,s)),p=await pe(this.api,o),h=this.getAmountFromVUsdFormatted(u,o,p),b,S=await this.api.getPendingInfo();for(let C in S[o.chainSymbol]){let x=S[o.chainSymbol];if(!x)throw new O("Cannot find pending info for "+o.chainSymbol);b=x[C]}if(b){let C=Wi(b.totalSentAmount,p),x=this.getAmountFromVUsdFormatted(u,o,C),B;return xe(x.int).gt(h.int)?B={min:h,max:x}:B={min:x,max:h},{pendingTxs:b.pendingTxs,pendingAmount:{int:et(b.totalSentAmount,3,o.decimals).toFixed(0),float:Y(b.totalSentAmount,3).toFixed()},estimatedAmount:B}}return{pendingTxs:0,pendingAmount:{int:"0",float:"0"},estimatedAmount:{min:h,max:h}}}async getTokenBalance(i,r){return this.tokenService.getTokenBalance(i,r)}async getNativeTokenBalance(i,r){return this.tokenService.getNativeTokenBalance(i,r)}async calculateFeePercentOnSourceChain(i,r){ee(i),ne("amountFloat",i,r.decimals);let s=z(i,r.decimals);if(s.eq(0))return 0;let o=tt(s,r,await pe(this.api,r)),m=Ne(o,r.decimals);return Er(s,m)}async calculateFeePercentOnDestinationChain(i,r,s){ee(i),ne("amountFloat",i,r.decimals);let o=z(i,r.decimals);if(o.eq(0))return 0;let m=tt(o,r,await pe(this.api,r)),u=an(m,s,await pe(this.api,s)),p=Ne(m,s.decimals);return Er(p,u)}async getAmountToBeReceivedAndGasFeeOptions(i,r,s,o){return ee(i),ne("amountToSendFloat",i,r.decimals),{amountToSendFloat:xe(i).toFixed(),amountToBeReceivedFloat:await this.getAmountToBeReceived(i,r,s,o),gasFeeOptions:await this.getGasFeeOptions(r,s,o)}}async getAmountToSendAndGasFeeOptions(i,r,s,o){return ee(i),ne("amountToBeReceivedFloat",i,s.decimals),{amountToSendFloat:await this.getAmountToSend(i,r,s,o),amountToBeReceivedFloat:xe(i).toFixed(),gasFeeOptions:await this.getGasFeeOptions(r,s,o)}}async getAmountToBeReceived(i,r,s,o){let m=await pe(this.api,r),u=await pe(this.api,s);return this.getAmountToBeReceivedFromPools(i,r,s,m,u,o)}async getAmountToBeReceivedFromChain(i,r,s,o,m,u){let p=await this.pool.getPoolInfoFromChain(r,m),h=await this.pool.getPoolInfoFromChain(s,u);return this.getAmountToBeReceivedFromPools(i,r,s,p,h,o)}getAmountToBeReceivedFromPools(i,r,s,o,m,u){ee(i),ne("amountToSendFloat",i,r.decimals);let p=z(i,r.decimals);if(u&&u==3){if(!r.cctpAddress||!s.cctpAddress||!r.cctpFeeShare)throw new Be("Such route does not support CCTP protocol");let b=p.mul(xe(1).minus(r.cctpFeeShare)).round(0,xe.roundUp),S=et(b,r.decimals,s.decimals).round(0);return Y(S,s.decimals).toFixed()}if(u&&u==4){if(!r.cctpV2Address||!s.cctpV2Address||!r.cctpV2FeeShare)throw new Be("Such route does not support CCTP V2 protocol");let b=p.mul(xe(1).minus(r.cctpV2FeeShare)).round(0,xe.roundUp),S=et(b,r.decimals,s.decimals).round(0);return Y(S,s.decimals).toFixed()}let h=tt(p,r,o);return this.getAmountFromVUsdFormatted(h,s,m).float}async getAmountToSend(i,r,s,o){let m=await pe(this.api,r),u=await pe(this.api,s);return this.getAmountToSendFromPools(i,r,s,m,u,o)}async getAmountToSendFromChain(i,r,s,o,m,u){let p=await this.pool.getPoolInfoFromChain(r,m),h=await this.pool.getPoolInfoFromChain(s,u);return this.getAmountToSendFromPools(i,r,s,p,h,o)}getAmountToSendFromPools(i,r,s,o,m,u){ee(i),ne("amountToBeReceivedFloat",i,s.decimals);let p=z(i,s.decimals);if(u&&u==3){if(!r.cctpAddress||!s.cctpAddress||!r.cctpFeeShare)throw new Be("Such route does not support CCTP protocol");let S=p.div(xe(1).minus(r.cctpFeeShare)).round(0,xe.roundDown),C=et(S,s.decimals,r.decimals).round(0);return Y(C,r.decimals).toFixed()}if(u&&u==4){if(!r.cctpV2Address||!s.cctpV2Address||!r.cctpV2FeeShare)throw new Be("Such route does not support CCTP V2 protocol");let S=p.div(xe(1).minus(r.cctpV2FeeShare)).round(0,xe.roundDown),C=et(S,s.decimals,r.decimals).round(0);return Y(C,r.decimals).toFixed()}let h=Ei(p,s,m),b=Ui(h,r,o);if(xe(b).lte(0))throw new At;return Y(b,r.decimals).toFixed()}async getGasFeeOptions(i,r,s){return Lr(i.allbridgeChainId,i.chainType,r.allbridgeChainId,i.decimals,s,this.api)}getAverageTransferTime(i,r,s){return i.transferTime?.[r.chainSymbol]?.[s]??null}async getPoolInfoByToken(i){return await this.api.getPoolInfoByKey({chainSymbol:i.chainSymbol,poolAddress:i.poolAddress})}async refreshPoolInfo(i){if(i){let s=(i instanceof Array?i:[i]).map(o=>({chainSymbol:o.chainSymbol,poolAddress:o.poolAddress}));return this.api.refreshPoolInfo(s)}return this.api.refreshPoolInfo()}aprInPercents(i){return Vi(i)}async getExtraGasMaxLimits(i,r){return await Xr(i,r,this.api)}async getVUsdFromAmount(i,r,s){ee(i);let o;r=="float"?(ne("amount",i,s.decimals),o=z(i,s.decimals).toFixed()):o=i;let m=tt(o,s,await pe(this.api,s));return{int:m,float:Y(m,3).toFixed()}}async getAmountFromVUsd(i,r){return this.getAmountFromVUsdFormatted(i,r,await pe(this.api,r))}getAmountFromVUsdFormatted(i,r,s){ee(i);let o=an(i,r,s);if(xe(o).lt(0))throw new At;return{int:o,float:Y(o,r.decimals).toFixed()}}async swapAndBridgeFeeCalculation(i,r,s){return za(i,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await pe(this.api,r)},{decimals:s.decimals,feeShare:s.feeShare,poolInfo:await pe(this.api,s)})}async swapAndBridgeFeeCalculationReverse(i,r,s){let o=qa(i,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await pe(this.api,r)},{decimals:s.decimals,feeShare:s.feeShare,poolInfo:await pe(this.api,s)}),m=o.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if(xe(m).lt(0))throw new At;return o}async getSendAmountDetails(i,r,s,o){ee(i);let m;return r=="float"?(ne("amount",i,s.decimals),m=z(i,s.decimals).toFixed()):m=i,es(m,s,await pe(this.api,s),o,await pe(this.api,o))}};function Pc(a){return"solanaRpcUrl"in a}var is=class{params;bridge;pool;utils;service;constructor(i,r=In){let s;Pc(i)?s=new Pn({SOL:i.solanaRpcUrl,TRX:i.tronRpcUrl}):s=new Pn(i),this.service=new xr(s,r),this.bridge=this.service.bridge,this.pool=this.service.pool,this.utils=new wr(s,r),this.params=r}async chainDetailsMap(i="swap"){return this.service.chainDetailsMap(i)}async tokens(i="swap"){return this.service.tokens(i)}async tokensByChain(i,r="swap"){return this.service.tokensByChain(i,r)}async getTransferStatus(i,r){return this.service.getTransferStatus(i,r)}async getGasBalance(i,r){return this.service.getGasBalance(i,r)}async checkAddress(i,r,s){return await this.service.checkAddress()}async getPendingStatusInfo(i,r,s,o){return this.service.getPendingStatusInfo(i,r,s,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,s){return this.service.calculateFeePercentOnDestinationChain(i,r,s)}async getAmountToBeReceivedAndGasFeeOptions(i,r,s,o){return this.service.getAmountToBeReceivedAndGasFeeOptions(i,r,s,o)}async getAmountToSendAndGasFeeOptions(i,r,s,o){return this.service.getAmountToSendAndGasFeeOptions(i,r,s,o)}async getAmountToBeReceived(i,r,s,o){return this.service.getAmountToBeReceived(i,r,s,o)}async getAmountToBeReceivedFromChain(i,r,s,o,m,u){return this.service.getAmountToBeReceivedFromChain(i,r,s,o,m,u)}getAmountToBeReceivedFromPools(i,r,s,o,m,u){return this.service.getAmountToBeReceivedFromPools(i,r,s,o,m,u)}async getAmountToSend(i,r,s,o){return this.service.getAmountToSend(i,r,s,o)}async getAmountToSendFromChain(i,r,s,o,m,u){return this.service.getAmountToSendFromChain(i,r,s,o,m,u)}getAmountToSendFromPools(i,r,s,o,m,u){return this.service.getAmountToSendFromPools(i,r,s,o,m,u)}async getGasFeeOptions(i,r,s){return this.service.getGasFeeOptions(i,r,s)}getAverageTransferTime(i,r,s){return this.service.getAverageTransferTime(i,r,s)}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){return this.service.getExtraGasMaxLimits(i,r)}async getVUsdFromAmount(i,r,s){return this.service.getVUsdFromAmount(i,r,s)}async getAmountFromVUsd(i,r){return this.service.getAmountFromVUsd(i,r)}async swapAndBridgeFeeCalculation(i,r,s){return this.service.swapAndBridgeFeeCalculation(i,r,s)}async swapAndBridgeFeeCalculationReverse(i,r,s){return this.service.swapAndBridgeFeeCalculationReverse(i,r,s)}async getSendAmountDetails(i,r,s,o){return this.service.getSendAmountDetails(i,r,s,o)}};export{Gr as AddressStatus,is as AllbridgeCoreSdk,Gn as AmountFormat,Et as AmountNotEnoughError,vn as ArgumentInvalidDecimalsError,Be as CCTPDoesNotSupportedError,Ze as ChainSymbol,ie as ChainType,Ss as ErrorCode,Rn as ExtraGasMaxLimitExceededError,xt as FeePaymentMethod,At as InsufficientPoolLiquidityError,ct as InvalidAmountError,en as InvalidGasFeePaymentOptionError,Ni as InvalidMessengerOptionError,Gt as InvalidTxError,ye as JupiterError,rt as Messenger,de as MethodNotSupportedError,kn as NodeRpcUrlNotInitializedError,O as SdkError,me as SdkRootError,Yr as SolanaAutoTxFee,nn as TimeoutError,xn as TxTooLargeError,tn as VerifyTxError,In as mainnet,Jc as nodeRpcUrlsDefault,$c as nodeUrlsDefault};
|
|
1
|
+
var ps=Object.create;var Ri=Object.defineProperty;var gs=Object.getOwnPropertyDescriptor;var fs=Object.getOwnPropertyNames;var ys=Object.getPrototypeOf,hs=Object.prototype.hasOwnProperty;var Bt=(s,i)=>()=>(s&&(i=s(s=0)),i);var Wr=(s,i)=>()=>(i||s((i={exports:{}}).exports,i),i.exports);var Ts=(s,i,r,a)=>{if(i&&typeof i=="object"||typeof i=="function")for(let o of fs(i))!hs.call(s,o)&&o!==r&&Ri(s,o,{get:()=>i[o],enumerable:!(a=gs(i,o))||a.enumerable});return s};var He=(s,i,r)=>(r=s!=null?ps(ys(s)):{},Ts(i||!s||!s.__esModule?Ri(r,"default",{value:s,enumerable:!0}):r,s));var g=Bt(()=>{});function bs(s,i){this.fun=s,this.array=i}function vi(s){var i=Math.floor((Date.now()-It.now())*.001),r=It.now()*.001,a=Math.floor(r)+i,o=Math.floor(r%1*1e9);return s&&(a=a-s[0],o=o-s[1],o<0&&(a--,o+=Gr)),[a,o]}var vc,It,Er,Gr,xi=Bt(()=>{g();y();f();bs.prototype.run=function(){this.fun.apply(null,this.array)};vc={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&&(Er=Date.now(),It.timing&&It.timing.navigationStart&&(Er=It.timing.navigationStart),It.now=()=>Date.now()-Er);Gr=1e9;vi.bigint=function(s){var i=vi(s);return typeof BigInt>"u"?i[0]*Gr+i[1]:BigInt(i[0]*Gr)+BigInt(i[1])}});var f=Bt(()=>{xi()});function Ss(){if(ki)return en;ki=!0,en.byteLength=p,en.toByteArray=b,en.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(B){var I=B.length;if(I%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var F=B.indexOf("=");F===-1&&(F=I);var D=F===I?0:4-F%4;return[F,D]}function p(B){var I=m(B),F=I[0],D=I[1];return(F+D)*3/4-D}function h(B,I,F){return(I+F)*3/4-F}function b(B){var I,F=m(B),D=F[0],O=F[1],W=new r(h(B,D,O)),E=0,V=O>0?D-4:D,Z;for(Z=0;Z<V;Z+=4)I=i[B.charCodeAt(Z)]<<18|i[B.charCodeAt(Z+1)]<<12|i[B.charCodeAt(Z+2)]<<6|i[B.charCodeAt(Z+3)],W[E++]=I>>16&255,W[E++]=I>>8&255,W[E++]=I&255;return O===2&&(I=i[B.charCodeAt(Z)]<<2|i[B.charCodeAt(Z+1)]>>4,W[E++]=I&255),O===1&&(I=i[B.charCodeAt(Z)]<<10|i[B.charCodeAt(Z+1)]<<4|i[B.charCodeAt(Z+2)]>>2,W[E++]=I>>8&255,W[E++]=I&255),W}function S(B){return s[B>>18&63]+s[B>>12&63]+s[B>>6&63]+s[B&63]}function w(B,I,F){for(var D,O=[],W=I;W<F;W+=3)D=(B[W]<<16&16711680)+(B[W+1]<<8&65280)+(B[W+2]&255),O.push(S(D));return O.join("")}function k(B){for(var I,F=B.length,D=F%3,O=[],W=16383,E=0,V=F-D;E<V;E+=W)O.push(w(B,E,E+W>V?V:E+W));return D===1?(I=B[F-1],O.push(s[I>>2]+s[I<<4&63]+"==")):D===2&&(I=(B[F-2]<<8)+B[F-1],O.push(s[I>>10]+s[I>>4&63]+s[I<<2&63]+"=")),O.join("")}return en}function Ps(){if(Fi)return In;Fi=!0;return In.read=function(s,i,r,a,o){var u,m,p=o*8-a-1,h=(1<<p)-1,b=h>>1,S=-7,w=r?o-1:0,k=r?-1:1,B=s[i+w];for(w+=k,u=B&(1<<-S)-1,B>>=-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-b;else{if(u===h)return m?NaN:(B?-1:1)*(1/0);m=m+Math.pow(2,a),u=u-b}return(B?-1:1)*m*Math.pow(2,u-a)},In.write=function(s,i,r,a,o,u){var m,p,h,b=u*8-o-1,S=(1<<b)-1,w=S>>1,k=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,B=a?0:u-1,I=a?1:-1,F=i<0||i===0&&1/i<0?1:0;for(i=Math.abs(i),isNaN(i)||i===1/0?(p=isNaN(i)?1:0,m=S):(m=Math.floor(Math.log(i)/Math.LN2),i*(h=Math.pow(2,-m))<1&&(m--,h*=2),m+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+B]=p&255,B+=I,p/=256,o-=8);for(m=m<<o|p,b+=o;b>0;s[r+B]=m&255,B+=I,m/=256,b-=8);s[r+B-I]|=F*128},In}function Oi(){if(Mi)return Rt;Mi=!0;let s=Ss(),i=Ps(),r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Rt.Buffer=m,Rt.SlowBuffer=O,Rt.INSPECT_MAX_BYTES=50;let a=2147483647;Rt.kMaxLength=a,m.TYPED_ARRAY_SUPPORT=o(),!m.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function o(){try{let l=new Uint8Array(1),c={foo:function(){return 42}};return Object.setPrototypeOf(c,Uint8Array.prototype),Object.setPrototypeOf(l,c),l.foo()===42}catch{return!1}}Object.defineProperty(m.prototype,"parent",{enumerable:!0,get:function(){if(m.isBuffer(this))return this.buffer}}),Object.defineProperty(m.prototype,"offset",{enumerable:!0,get:function(){if(m.isBuffer(this))return this.byteOffset}});function u(l){if(l>a)throw new RangeError('The value "'+l+'" is invalid for option "size"');let c=new Uint8Array(l);return Object.setPrototypeOf(c,m.prototype),c}function m(l,c,A){if(typeof l=="number"){if(typeof c=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return S(l)}return p(l,c,A)}m.poolSize=8192;function p(l,c,A){if(typeof l=="string")return w(l,c);if(ArrayBuffer.isView(l))return B(l);if(l==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof l);if(rt(l,ArrayBuffer)||l&&rt(l.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(rt(l,SharedArrayBuffer)||l&&rt(l.buffer,SharedArrayBuffer)))return I(l,c,A);if(typeof l=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let d=l.valueOf&&l.valueOf();if(d!=null&&d!==l)return m.from(d,c,A);let T=F(l);if(T)return T;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 b(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 b(l,c,A)};function S(l){return h(l),u(l<0?0:D(l)|0)}m.allocUnsafe=function(l){return S(l)},m.allocUnsafeSlow=function(l){return S(l)};function w(l,c){if((typeof c!="string"||c==="")&&(c="utf8"),!m.isEncoding(c))throw new TypeError("Unknown encoding: "+c);let A=W(l,c)|0,d=u(A),T=d.write(l,c);return T!==A&&(d=d.slice(0,T)),d}function k(l){let c=l.length<0?0:D(l.length)|0,A=u(c);for(let d=0;d<c;d+=1)A[d]=l[d]&255;return A}function B(l){if(rt(l,Uint8Array)){let c=new Uint8Array(l);return I(c.buffer,c.byteOffset,c.byteLength)}return k(l)}function I(l,c,A){if(c<0||l.byteLength<c)throw new RangeError('"offset" is outside of buffer bounds');if(l.byteLength<c+(A||0))throw new RangeError('"length" is outside of buffer bounds');let d;return c===void 0&&A===void 0?d=new Uint8Array(l):A===void 0?d=new Uint8Array(l,c):d=new Uint8Array(l,c,A),Object.setPrototypeOf(d,m.prototype),d}function F(l){if(m.isBuffer(l)){let c=D(l.length)|0,A=u(c);return A.length===0||l.copy(A,0,0,c),A}if(l.length!==void 0)return typeof l.length!="number"||Nr(l.length)?u(0):k(l);if(l.type==="Buffer"&&Array.isArray(l.data))return k(l.data)}function D(l){if(l>=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return l|0}function O(l){return+l!=l&&(l=0),m.alloc(+l)}m.isBuffer=function(c){return c!=null&&c._isBuffer===!0&&c!==m.prototype},m.compare=function(c,A){if(rt(c,Uint8Array)&&(c=m.from(c,c.offset,c.byteLength)),rt(A,Uint8Array)&&(A=m.from(A,A.offset,A.byteLength)),!m.isBuffer(c)||!m.isBuffer(A))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(c===A)return 0;let d=c.length,T=A.length;for(let P=0,R=Math.min(d,T);P<R;++P)if(c[P]!==A[P]){d=c[P],T=A[P];break}return d<T?-1:T<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 T=m.allocUnsafe(A),P=0;for(d=0;d<c.length;++d){let R=c[d];if(rt(R,Uint8Array))P+R.length>T.length?(m.isBuffer(R)||(R=m.from(R)),R.copy(T,P)):Uint8Array.prototype.set.call(T,R,P);else if(m.isBuffer(R))R.copy(T,P);else throw new TypeError('"list" argument must be an Array of Buffers');P+=R.length}return T};function W(l,c){if(m.isBuffer(l))return l.length;if(ArrayBuffer.isView(l)||rt(l,ArrayBuffer))return l.byteLength;if(typeof l!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof l);let A=l.length,d=arguments.length>2&&arguments[2]===!0;if(!d&&A===0)return 0;let T=!1;for(;;)switch(c){case"ascii":case"latin1":case"binary":return A;case"utf8":case"utf-8":return Dr(l).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A*2;case"hex":return A>>>1;case"base64":return Ii(l).length;default:if(T)return d?-1:Dr(l).length;c=(""+c).toLowerCase(),T=!0}}m.byteLength=W;function E(l,c,A){let d=!1;if((c===void 0||c<0)&&(c=0),c>this.length||((A===void 0||A>this.length)&&(A=this.length),A<=0)||(A>>>=0,c>>>=0,A<=c))return"";for(l||(l="utf8");;)switch(l){case"hex":return _e(this,c,A);case"utf8":case"utf-8":return fe(this,c,A);case"ascii":return Be(this,c,A);case"latin1":case"binary":return Ze(this,c,A);case"base64":return Me(this,c,A);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return De(this,c,A);default:if(d)throw new TypeError("Unknown encoding: "+l);l=(l+"").toLowerCase(),d=!0}}m.prototype._isBuffer=!0;function V(l,c,A){let d=l[c];l[c]=l[A],l[A]=d}m.prototype.swap16=function(){let c=this.length;if(c%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let A=0;A<c;A+=2)V(this,A,A+1);return this},m.prototype.swap32=function(){let c=this.length;if(c%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let A=0;A<c;A+=4)V(this,A,A+3),V(this,A+1,A+2);return this},m.prototype.swap64=function(){let c=this.length;if(c%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let A=0;A<c;A+=8)V(this,A,A+7),V(this,A+1,A+6),V(this,A+2,A+5),V(this,A+3,A+4);return this},m.prototype.toString=function(){let c=this.length;return c===0?"":arguments.length===0?fe(this,0,c):E.apply(this,arguments)},m.prototype.toLocaleString=m.prototype.toString,m.prototype.equals=function(c){if(!m.isBuffer(c))throw new TypeError("Argument must be a Buffer");return this===c?!0:m.compare(this,c)===0},m.prototype.inspect=function(){let c="",A=Rt.INSPECT_MAX_BYTES;return c=this.toString("hex",0,A).replace(/(.{2})/g,"$1 ").trim(),this.length>A&&(c+=" ... "),"<Buffer "+c+">"},r&&(m.prototype[r]=m.prototype.inspect),m.prototype.compare=function(c,A,d,T,P){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),T===void 0&&(T=0),P===void 0&&(P=this.length),A<0||d>c.length||T<0||P>this.length)throw new RangeError("out of range index");if(T>=P&&A>=d)return 0;if(T>=P)return-1;if(A>=d)return 1;if(A>>>=0,d>>>=0,T>>>=0,P>>>=0,this===c)return 0;let R=P-T,$=d-A,ae=Math.min(R,$),ne=this.slice(T,P),se=c.slice(A,d);for(let te=0;te<ae;++te)if(ne[te]!==se[te]){R=ne[te],$=se[te];break}return R<$?-1:$<R?1:0};function Z(l,c,A,d,T){if(l.length===0)return-1;if(typeof A=="string"?(d=A,A=0):A>2147483647?A=2147483647:A<-2147483648&&(A=-2147483648),A=+A,Nr(A)&&(A=T?0:l.length-1),A<0&&(A=l.length+A),A>=l.length){if(T)return-1;A=l.length-1}else if(A<0)if(T)A=0;else return-1;if(typeof c=="string"&&(c=m.from(c,d)),m.isBuffer(c))return c.length===0?-1:K(l,c,A,d,T);if(typeof c=="number")return c=c&255,typeof Uint8Array.prototype.indexOf=="function"?T?Uint8Array.prototype.indexOf.call(l,c,A):Uint8Array.prototype.lastIndexOf.call(l,c,A):K(l,[c],A,d,T);throw new TypeError("val must be string, number or Buffer")}function K(l,c,A,d,T){let P=1,R=l.length,$=c.length;if(d!==void 0&&(d=String(d).toLowerCase(),d==="ucs2"||d==="ucs-2"||d==="utf16le"||d==="utf-16le")){if(l.length<2||c.length<2)return-1;P=2,R/=2,$/=2,A/=2}function ae(se,te){return P===1?se[te]:se.readUInt16BE(te*P)}let ne;if(T){let se=-1;for(ne=A;ne<R;ne++)if(ae(l,ne)===ae(c,se===-1?0:ne-se)){if(se===-1&&(se=ne),ne-se+1===$)return se*P}else se!==-1&&(ne-=ne-se),se=-1}else for(A+$>R&&(A=R-$),ne=A;ne>=0;ne--){let se=!0;for(let te=0;te<$;te++)if(ae(l,ne+te)!==ae(c,te)){se=!1;break}if(se)return ne}return-1}m.prototype.includes=function(c,A,d){return this.indexOf(c,A,d)!==-1},m.prototype.indexOf=function(c,A,d){return Z(this,c,A,d,!0)},m.prototype.lastIndexOf=function(c,A,d){return Z(this,c,A,d,!1)};function we(l,c,A,d){A=Number(A)||0;let T=l.length-A;d?(d=Number(d),d>T&&(d=T)):d=T;let P=c.length;d>P/2&&(d=P/2);let R;for(R=0;R<d;++R){let $=parseInt(c.substr(R*2,2),16);if(Nr($))return R;l[A+R]=$}return R}function Ae(l,c,A,d){return Bn(Dr(c,l.length-A),l,A,d)}function Ve(l,c,A,d){return Bn(us(c),l,A,d)}function je(l,c,A,d){return Bn(Ii(c),l,A,d)}function Ke(l,c,A,d){return Bn(ms(c,l.length-A),l,A,d)}m.prototype.write=function(c,A,d,T){if(A===void 0)T="utf8",d=this.length,A=0;else if(d===void 0&&typeof A=="string")T=A,d=this.length,A=0;else if(isFinite(A))A=A>>>0,isFinite(d)?(d=d>>>0,T===void 0&&(T="utf8")):(T=d,d=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let P=this.length-A;if((d===void 0||d>P)&&(d=P),c.length>0&&(d<0||A<0)||A>this.length)throw new RangeError("Attempt to write outside buffer bounds");T||(T="utf8");let R=!1;for(;;)switch(T){case"hex":return we(this,c,A,d);case"utf8":case"utf-8":return Ae(this,c,A,d);case"ascii":case"latin1":case"binary":return Ve(this,c,A,d);case"base64":return je(this,c,A,d);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ke(this,c,A,d);default:if(R)throw new TypeError("Unknown encoding: "+T);T=(""+T).toLowerCase(),R=!0}},m.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Me(l,c,A){return c===0&&A===l.length?s.fromByteArray(l):s.fromByteArray(l.slice(c,A))}function fe(l,c,A){A=Math.min(l.length,A);let d=[],T=c;for(;T<A;){let P=l[T],R=null,$=P>239?4:P>223?3:P>191?2:1;if(T+$<=A){let ae,ne,se,te;switch($){case 1:P<128&&(R=P);break;case 2:ae=l[T+1],(ae&192)===128&&(te=(P&31)<<6|ae&63,te>127&&(R=te));break;case 3:ae=l[T+1],ne=l[T+2],(ae&192)===128&&(ne&192)===128&&(te=(P&15)<<12|(ae&63)<<6|ne&63,te>2047&&(te<55296||te>57343)&&(R=te));break;case 4:ae=l[T+1],ne=l[T+2],se=l[T+3],(ae&192)===128&&(ne&192)===128&&(se&192)===128&&(te=(P&15)<<18|(ae&63)<<12|(ne&63)<<6|se&63,te>65535&&te<1114112&&(R=te))}}R===null?(R=65533,$=1):R>65535&&(R-=65536,d.push(R>>>10&1023|55296),R=56320|R&1023),d.push(R),T+=$}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 T=c;T<A;++T)d+=String.fromCharCode(l[T]&127);return d}function Ze(l,c,A){let d="";A=Math.min(l.length,A);for(let T=c;T<A;++T)d+=String.fromCharCode(l[T]);return d}function _e(l,c,A){let d=l.length;(!c||c<0)&&(c=0),(!A||A<0||A>d)&&(A=d);let T="";for(let P=c;P<A;++P)T+=ls[l[P]];return T}function De(l,c,A){let d=l.slice(c,A),T="";for(let P=0;P<d.length-1;P+=2)T+=String.fromCharCode(d[P]+d[P+1]*256);return T}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 T=this.subarray(c,A);return Object.setPrototypeOf(T,m.prototype),T};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 T=this[c],P=1,R=0;for(;++R<A&&(P*=256);)T+=this[c+R]*P;return T},m.prototype.readUintBE=m.prototype.readUIntBE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let T=this[c+--A],P=1;for(;A>0&&(P*=256);)T+=this[c+--A]*P;return T},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)&&qt(c,this.length-8);let T=A+this[++c]*2**8+this[++c]*2**16+this[++c]*2**24,P=this[++c]+this[++c]*2**8+this[++c]*2**16+d*2**24;return BigInt(T)+(BigInt(P)<<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)&&qt(c,this.length-8);let T=A*2**24+this[++c]*2**16+this[++c]*2**8+this[++c],P=this[++c]*2**24+this[++c]*2**16+this[++c]*2**8+d;return(BigInt(T)<<BigInt(32))+BigInt(P)}),m.prototype.readIntLE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let T=this[c],P=1,R=0;for(;++R<A&&(P*=256);)T+=this[c+R]*P;return P*=128,T>=P&&(T-=Math.pow(2,8*A)),T},m.prototype.readIntBE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let T=A,P=1,R=this[c+--T];for(;T>0&&(P*=256);)R+=this[c+--T]*P;return P*=128,R>=P&&(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)&&qt(c,this.length-8);let T=this[c+4]+this[c+5]*2**8+this[c+6]*2**16+(d<<24);return(BigInt(T)<<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)&&qt(c,this.length-8);let T=(A<<24)+this[++c]*2**16+this[++c]*2**8+this[++c];return(BigInt(T)<<BigInt(32))+BigInt(this[++c]*2**24+this[++c]*2**16+this[++c]*2**8+d)}),m.prototype.readFloatLE=function(c,A){return c=c>>>0,A||G(c,4,this.length),i.read(this,c,!0,23,4)},m.prototype.readFloatBE=function(c,A){return c=c>>>0,A||G(c,4,this.length),i.read(this,c,!1,23,4)},m.prototype.readDoubleLE=function(c,A){return c=c>>>0,A||G(c,8,this.length),i.read(this,c,!0,52,8)},m.prototype.readDoubleBE=function(c,A){return c=c>>>0,A||G(c,8,this.length),i.read(this,c,!1,52,8)};function le(l,c,A,d,T,P){if(!m.isBuffer(l))throw new TypeError('"buffer" argument must be a Buffer instance');if(c>T||c<P)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,T){if(c=+c,A=A>>>0,d=d>>>0,!T){let $=Math.pow(2,8*d)-1;le(this,c,A,d,$,0)}let P=1,R=0;for(this[A]=c&255;++R<d&&(P*=256);)this[A+R]=c/P&255;return A+d},m.prototype.writeUintBE=m.prototype.writeUIntBE=function(c,A,d,T){if(c=+c,A=A>>>0,d=d>>>0,!T){let $=Math.pow(2,8*d)-1;le(this,c,A,d,$,0)}let P=d-1,R=1;for(this[A+P]=c&255;--P>=0&&(R*=256);)this[A+P]=c/R&255;return A+d},m.prototype.writeUint8=m.prototype.writeUInt8=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,1,255,0),this[A]=c&255,A+1},m.prototype.writeUint16LE=m.prototype.writeUInt16LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,65535,0),this[A]=c&255,this[A+1]=c>>>8,A+2},m.prototype.writeUint16BE=m.prototype.writeUInt16BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,65535,0),this[A]=c>>>8,this[A+1]=c&255,A+2},m.prototype.writeUint32LE=m.prototype.writeUInt32LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,4294967295,0),this[A+3]=c>>>24,this[A+2]=c>>>16,this[A+1]=c>>>8,this[A]=c&255,A+4},m.prototype.writeUint32BE=m.prototype.writeUInt32BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,4294967295,0),this[A]=c>>>24,this[A+1]=c>>>16,this[A+2]=c>>>8,this[A+3]=c&255,A+4};function Cn(l,c,A,d,T){Bi(c,d,T,l,A,7);let P=Number(c&BigInt(4294967295));l[A++]=P,P=P>>8,l[A++]=P,P=P>>8,l[A++]=P,P=P>>8,l[A++]=P;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 bi(l,c,A,d,T){Bi(c,d,T,l,A,7);let P=Number(c&BigInt(4294967295));l[A+7]=P,P=P>>8,l[A+6]=P,P=P>>8,l[A+5]=P,P=P>>8,l[A+4]=P;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 Cn(this,c,A,BigInt(0),BigInt("0xffffffffffffffff"))}),m.prototype.writeBigUInt64BE=gt(function(c,A=0){return bi(this,c,A,BigInt(0),BigInt("0xffffffffffffffff"))}),m.prototype.writeIntLE=function(c,A,d,T){if(c=+c,A=A>>>0,!T){let ae=Math.pow(2,8*d-1);le(this,c,A,d,ae-1,-ae)}let P=0,R=1,$=0;for(this[A]=c&255;++P<d&&(R*=256);)c<0&&$===0&&this[A+P-1]!==0&&($=1),this[A+P]=(c/R>>0)-$&255;return A+d},m.prototype.writeIntBE=function(c,A,d,T){if(c=+c,A=A>>>0,!T){let ae=Math.pow(2,8*d-1);le(this,c,A,d,ae-1,-ae)}let P=d-1,R=1,$=0;for(this[A+P]=c&255;--P>=0&&(R*=256);)c<0&&$===0&&this[A+P+1]!==0&&($=1),this[A+P]=(c/R>>0)-$&255;return A+d},m.prototype.writeInt8=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,1,127,-128),c<0&&(c=255+c+1),this[A]=c&255,A+1},m.prototype.writeInt16LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,32767,-32768),this[A]=c&255,this[A+1]=c>>>8,A+2},m.prototype.writeInt16BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,32767,-32768),this[A]=c>>>8,this[A+1]=c&255,A+2},m.prototype.writeInt32LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,2147483647,-2147483648),this[A]=c&255,this[A+1]=c>>>8,this[A+2]=c>>>16,this[A+3]=c>>>24,A+4},m.prototype.writeInt32BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,2147483647,-2147483648),c<0&&(c=4294967295+c+1),this[A]=c>>>24,this[A+1]=c>>>16,this[A+2]=c>>>8,this[A+3]=c&255,A+4},m.prototype.writeBigInt64LE=gt(function(c,A=0){return Cn(this,c,A,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),m.prototype.writeBigInt64BE=gt(function(c,A=0){return bi(this,c,A,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function Si(l,c,A,d,T,P){if(A+d>l.length)throw new RangeError("Index out of range");if(A<0)throw new RangeError("Index out of range")}function Pi(l,c,A,d,T){return c=+c,A=A>>>0,T||Si(l,c,A,4),i.write(l,c,A,d,23,4),A+4}m.prototype.writeFloatLE=function(c,A,d){return Pi(this,c,A,!0,d)},m.prototype.writeFloatBE=function(c,A,d){return Pi(this,c,A,!1,d)};function wi(l,c,A,d,T){return c=+c,A=A>>>0,T||Si(l,c,A,8),i.write(l,c,A,d,52,8),A+8}m.prototype.writeDoubleLE=function(c,A,d){return wi(this,c,A,!0,d)},m.prototype.writeDoubleBE=function(c,A,d){return wi(this,c,A,!1,d)},m.prototype.copy=function(c,A,d,T){if(!m.isBuffer(c))throw new TypeError("argument should be a Buffer");if(d||(d=0),!T&&T!==0&&(T=this.length),A>=c.length&&(A=c.length),A||(A=0),T>0&&T<d&&(T=d),T===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(T<0)throw new RangeError("sourceEnd out of bounds");T>this.length&&(T=this.length),c.length-A<T-d&&(T=c.length-A+d);let P=T-d;return this===c&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(A,d,T):Uint8Array.prototype.set.call(c,this.subarray(d,T),A),P},m.prototype.fill=function(c,A,d,T){if(typeof c=="string"){if(typeof A=="string"?(T=A,A=0,d=this.length):typeof d=="string"&&(T=d,d=this.length),T!==void 0&&typeof T!="string")throw new TypeError("encoding must be a string");if(typeof T=="string"&&!m.isEncoding(T))throw new TypeError("Unknown encoding: "+T);if(c.length===1){let R=c.charCodeAt(0);(T==="utf8"&&R<128||T==="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 P;if(typeof c=="number")for(P=A;P<d;++P)this[P]=c;else{let R=m.isBuffer(c)?c:m.from(c,T),$=R.length;if($===0)throw new TypeError('The value "'+c+'" is invalid for argument "value"');for(P=0;P<d-A;++P)this[P+A]=R[P%$]}return this};let Et={};function Or(l,c,A){Et[l]=class extends A{constructor(){super(),Object.defineProperty(this,"message",{value:c.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${l}]`,this.stack,delete this.name}get code(){return l}set code(T){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:T,writable:!0})}toString(){return`${this.name} [${l}]: ${this.message}`}}}Or("ERR_BUFFER_OUT_OF_BOUNDS",function(l){return l?`${l} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),Or("ERR_INVALID_ARG_TYPE",function(l,c){return`The "${l}" argument must be of type number. Received type ${typeof c}`},TypeError),Or("ERR_OUT_OF_RANGE",function(l,c,A){let d=`The value of "${l}" is out of range.`,T=A;return Number.isInteger(A)&&Math.abs(A)>2**32?T=Ci(String(A)):typeof A=="bigint"&&(T=String(A),(A>BigInt(2)**BigInt(32)||A<-(BigInt(2)**BigInt(32)))&&(T=Ci(T)),T+="n"),d+=` It must be ${c}. Received ${T}`,d},RangeError);function Ci(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 os(l,c,A){Gt(c,"offset"),(l[c]===void 0||l[c+A]===void 0)&&qt(c,l.length-(A+1))}function Bi(l,c,A,d,T,P){if(l>A||l<c){let R=typeof c=="bigint"?"n":"",$;throw c===0||c===BigInt(0)?$=`>= 0${R} and < 2${R} ** ${(P+1)*8}${R}`:$=`>= -(2${R} ** ${(P+1)*8-1}${R}) and < 2 ** ${(P+1)*8-1}${R}`,new Et.ERR_OUT_OF_RANGE("value",$,l)}os(d,T,P)}function Gt(l,c){if(typeof l!="number")throw new Et.ERR_INVALID_ARG_TYPE(c,"number",l)}function qt(l,c,A){throw Math.floor(l)!==l?(Gt(l,A),new Et.ERR_OUT_OF_RANGE("offset","an integer",l)):c<0?new Et.ERR_BUFFER_OUT_OF_BOUNDS:new Et.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${c}`,l)}let cs=/[^+/0-9A-Za-z-_]/g;function As(l){if(l=l.split("=")[0],l=l.trim().replace(cs,""),l.length<2)return"";for(;l.length%4!==0;)l=l+"=";return l}function Dr(l,c){c=c||1/0;let A,d=l.length,T=null,P=[];for(let R=0;R<d;++R){if(A=l.charCodeAt(R),A>55295&&A<57344){if(!T){if(A>56319){(c-=3)>-1&&P.push(239,191,189);continue}else if(R+1===d){(c-=3)>-1&&P.push(239,191,189);continue}T=A;continue}if(A<56320){(c-=3)>-1&&P.push(239,191,189),T=A;continue}A=(T-55296<<10|A-56320)+65536}else T&&(c-=3)>-1&&P.push(239,191,189);if(T=null,A<128){if((c-=1)<0)break;P.push(A)}else if(A<2048){if((c-=2)<0)break;P.push(A>>6|192,A&63|128)}else if(A<65536){if((c-=3)<0)break;P.push(A>>12|224,A>>6&63|128,A&63|128)}else if(A<1114112){if((c-=4)<0)break;P.push(A>>18|240,A>>12&63|128,A>>6&63|128,A&63|128)}else throw new Error("Invalid code point")}return P}function us(l){let c=[];for(let A=0;A<l.length;++A)c.push(l.charCodeAt(A)&255);return c}function ms(l,c){let A,d,T,P=[];for(let R=0;R<l.length&&!((c-=2)<0);++R)A=l.charCodeAt(R),d=A>>8,T=A%256,P.push(T),P.push(d);return P}function Ii(l){return s.toByteArray(As(l))}function Bn(l,c,A,d){let T;for(T=0;T<d&&!(T+A>=c.length||T>=l.length);++T)c[T+A]=l[T];return T}function rt(l,c){return l instanceof c||l!=null&&l.constructor!=null&&l.constructor.name!=null&&l.constructor.name===c.name}function Nr(l){return l!==l}let ls=function(){let l="0123456789abcdef",c=new Array(256);for(let A=0;A<16;++A){let d=A*16;for(let T=0;T<16;++T)c[d+T]=l[A]+l[T]}return c}();function gt(l){return typeof BigInt>"u"?ds:l}function ds(){throw new Error("BigInt not supported")}return Rt}var en,ki,In,Fi,Rt,Mi,Di=Bt(()=>{g();y();f();en={},ki=!1;In={},Fi=!1;Rt={},Mi=!1});var vt,C,Uc,Vc,Ni=Bt(()=>{g();y();f();Di();vt=Oi();vt.Buffer;vt.SlowBuffer;vt.INSPECT_MAX_BYTES;vt.kMaxLength;C=vt.Buffer,Uc=vt.INSPECT_MAX_BYTES,Vc=vt.kMaxLength});var y=Bt(()=>{Ni()});import{bcs as Fe}from"@mysten/sui/bcs";function qs(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=qs(s.slice(a+1,s.length-o-1),[i,r]);return{typeName:u,typeArgs:m}}function ba(s){return!s||typeof s!="object"||Array.isArray(s)?!1:"GasCoin"in s||"Input"in s||"Result"in s||"NestedResult"in s}function j(s,i){return ba(i)?i:s.object(i)}function Xe(s,i,r){if(ba(i))return j(s,i);function a(b){let{typeName:S,typeArgs:w}=Se(b);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 ${b}`)}}function o(b){for(let S of b){if(typeof S>"u"||S===null)return!0;if(Array.isArray(S))return o(S)}return!1}function u(b){for(let S of b){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(b){for(let S of b){if(!Array.isArray(S))switch(typeof S){case"string":case"number":case"bigint":case"boolean":return!0;default:continue}return m(S)}return!1}let{typeName:p,typeArgs:h}=Se(r);switch(p){case"0x1::option::Option":if(i===null)return s.pure.option("bool",null);if(u([i]))return s.pure(a(r).serialize(i));if(m([i]))throw new Error("mixing primitive and TransactionArgument values is not supported");return s.moveCall({target:"0x1::option::some",typeArguments:[h[0]],arguments:[Xe(s,i,h[0])]});case"vector":if(!Array.isArray(i))throw new Error("expected an array for vector type");if(i.length===0)return s.pure(Fe.vector(Fe.Bool).serialize([]));if(o(i))throw new Error("the provided array contains undefined or null values");if(u(i))return s.pure(a(r).serialize(i));if(m(i))throw new Error("mixing primitive and TransactionArgument values is not supported");return s.makeMoveVec({type:h[0],elements:i});default:return s.pure(a(r).serialize(i))}}function eo(s){let i=s.split("0x").join("");for(let r=0;r<i.length;r++)if(i[r]!=="0")return`0x${i.substring(r)}`;return"0x0"}function U(s){let{typeName:i,typeArgs:r}=Se(s);switch(i){case"bool":case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"address":case"signer":return i;case"vector":return`vector<${U(r[0])}>`;default:{let a=i.split("::");a[0]=eo(a[0]);let o=a.join("::");return r.length>0?`${o}<${r.map(u=>U(u)).join(",")}>`:o}}}function z(s,...i){return i.length>0?`${s}<${i.join(", ")}>`:s}var ye=Bt(()=>{"use strict";g();y();f()});var Tt=Wr((Jd,Sa)=>{"use strict";g();y();f();ye();var qr=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return U(s.$PACKAGE_ID)}get PUBLISHED_AT(){return U(s.$PUBLISHED_AT)}get PKG_V1(){return U(s.$PKG_V[1])}setPackageId(i){s.$PACKAGE_ID=i}setPublishedAt(i){s.$PUBLISHED_AT=i}setPkgV(i,r){s.$PKG_V[i]=r}setAddress(i,r){s.$PACKAGE_ID=i,s.$PUBLISHED_AT=i,s.$PKG_V[1]=r||i}},to=new qr;Sa.exports=to});var ri=Wr((tp,va)=>{"use strict";g();y();f();ye();var ni=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return U(s.$PACKAGE_ID)}get PUBLISHED_AT(){return U(s.$PUBLISHED_AT)}get PKG_V1(){return U(s.$PKG_V[1])}setPackageId(i){s.$PACKAGE_ID=i}setPublishedAt(i){s.$PUBLISHED_AT=i}setPkgV(i,r){s.$PKG_V[i]=r}setAddress(i,r){s.$PACKAGE_ID=i,s.$PUBLISHED_AT=i,s.$PKG_V[1]=r||i}},no=new ni;va.exports=no});var si=Wr((mp,ka)=>{"use strict";g();y();f();ye();var ai=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return U(s.$PACKAGE_ID)}get PUBLISHED_AT(){return U(s.$PUBLISHED_AT)}get PKG_V1(){return U(s.$PKG_V[1])}setPackageId(i){s.$PACKAGE_ID=i}setPublishedAt(i){s.$PUBLISHED_AT=i}setPkgV(i,r){s.$PKG_V[i]=r}setAddress(i,r){s.$PACKAGE_ID=i,s.$PUBLISHED_AT=i,s.$PKG_V[1]=r||i}},ro=new ai;ka.exports=ro});g();y();f();g();y();f();g();y();f();var Rn={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},Xc={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},Yc={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 fo}from"tronweb";import{Web3 as yo}from"web3";g();y();f();g();y();f();g();y();f();var ue=class extends Error{errorCode;constructor(i,r){super(r),this.errorCode=i}},M=class extends ue{constructor(i){super("SdkError",i)}},ut=class extends ue{constructor(i){super("InvalidAmountError",i)}},Ut=class extends ue{constructor(i){super("AmountNotEnoughError",i)}},mt=class extends ue{constructor(i){super("InsufficientPoolLiquidityError",i)}},he=class extends ue{constructor(i){super("JupiterError",i)}},tn=class extends ue{constructor(i){super("InvalidGasFeePaymentOptionError",i)}},vn=class extends ue{constructor(i){super("InvalidMessengerOptionError",i)}},de=class extends ue{constructor(i){super("MethodNotSupportedError",i)}},nn=class extends ue{constructor(i){super("VerifyTxError",i)}},Vt=class extends ue{constructor(i){super("InvalidTxError",i)}},xn=class extends ue{constructor(i){super("ExtraGasMaxLimitExceededError",i)}},kn=class extends ue{constructor(i,r,a){super("ArgumentInvalidDecimalsError",`Argument '${i}' decimals '${r}' cannot be greater than '${a}'`)}},rn=class extends ue{constructor(i){super("TimeoutError",i)}},Fn=class extends ue{constructor(i){super("NodeRpcUrlNotInitializedError",`For chain '${i}' Node RPC URL not initialized`)}},Ie=class extends ue{constructor(i){super("CCTPDoesNotSupportedError",i)}},Re=class extends ue{constructor(i){super("OFTDoesNotSupportedError",i)}},Mn=class extends ue{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},ws=(O=>(O.SDK_ERROR="SdkError",O.INVALID_AMOUNT_ERROR="InvalidAmountError",O.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",O.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",O.JUPITER_ERROR="JupiterError",O.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",O.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",O.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",O.VERIFY_TX_ERROR="VerifyTxError",O.INVALID_TX_ERROR="InvalidTxError",O.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",O.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",O.TIMEOUT_ERROR="TimeoutError",O.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",O.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",O.OFT_DOES_NOT_SUPPORTED_ERROR="OFTDoesNotSupportedError",O.TX_TOO_LARGE="TxTooLargeError",O))(ws||{});g();y();f();var $e=(I=>(I.BSC="BSC",I.ETH="ETH",I.BAS="BAS",I.SOL="SOL",I.TRX="TRX",I.POL="POL",I.ARB="ARB",I.CEL="CEL",I.AVA="AVA",I.SRB="SRB",I.STLR="STLR",I.OPT="OPT",I.SUI="SUI",I.SNC="SNC",I))($e||{}),ie=(u=>(u.EVM="EVM",u.SOLANA="SOLANA",u.TRX="TRX",u.SRB="SRB",u.SUI="SUI",u))(ie||{});var Cs={EVM:18,SOLANA:9,TRX:6,SRB:7,SUI:9},Bs={BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SNC:{chainSymbol:"SNC",chainId:"0x92",name:"Sonic",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"},SUI:{chainSymbol:"SUI",name:"Sui",chainType:"SUI"}},H=(()=>{let s={...Bs};return{addChainsProperties(i){s={...s,...i}},getChainProperty(i){let r=s[i];if(!r)throw new M(`Cannot find chain properties for ${i}`);return r},getChainsProperties(){return s},getChainDecimalsByType(i){return Cs[i]}}})();g();y();f();var Ur=(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))(Ur||{});var Je=(u=>(u[u.ALLBRIDGE=1]="ALLBRIDGE",u[u.WORMHOLE=2]="WORMHOLE",u[u.CCTP=3]="CCTP",u[u.CCTP_V2=4]="CCTP_V2",u[u.OFT=5]="OFT",u))(Je||{});g();y();f();import{Big as Wi}from"big.js";async function pe(s,i){return await s.getPoolInfoByKey({chainSymbol:i.chainSymbol,poolAddress:i.poolAddress})}function q(s){if(Wi(s).lte(0))throw new ut("Amount must be greater than zero")}function ee(s,i,r){let a=Wi(i).toFixed(),[o,u]=a.split(".");if(u&&u.length>r)throw new kn(s,u.length,r)}async function On(s,i,r){return await Promise.race([s,new Promise((a,o)=>{setTimeout(()=>o(new rn(i)),r)})])}async function Vr(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 On(s(),i,a)}catch{if(++o>=r)throw new rn(i)}}async function Ei(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(),b=1e3,S=b;for(;Date.now()<h;){let w=u[u.length-1];if(w===void 0||!i(w))break;m++,o&&console.info(`Waiting ${b}ms before trying again (bringing the total wait time to ${S}ms so far, of total ${r*1e3}ms)`),await new Promise(B=>setTimeout(B,b)),b=b*a,new Date(Date.now()+b).valueOf()>h&&(b=h-Date.now(),o&&console.info(`was gonna wait too long; new waitTime: ${b}ms`)),S=b+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 Gs}from"big.js";g();y();f();var Is={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"}]},Gi=Is;g();y();f();var Rs={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"}]},Ui=Rs;g();y();f();var vs={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"}]},Vi=vs;g();y();f();import*as Wn from"@project-serum/anchor";import{PublicKey as sa}from"@solana/web3.js";g();y();f();import*as Te from"@project-serum/anchor";import{PublicKey as ve}from"@solana/web3.js";async function Qe(s,i){return Te.utils.token.associatedAddress({mint:i,owner:s})}async function ft(s){let[i]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("config")],s);return i}async function ji(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("lock"),Uint8Array.from(s)],i);return r}async function an(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([s])],i);return r}async function jt(s){let i=await ft(s),[r]=await ve.findProgramAddress([i.toBuffer()],s);return r}async function Zi(s,i){let[r]=await ve.findProgramAddress([s.toBuffer()],i);return r}async function Zt(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("token"),s.toBytes()],i);return r}async function _i(s,i,r){let[a]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("other_bridge_token"),C.from([s]),i],r);return a}async function jr(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([s])],i);return r}async function Zr(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([s])],i);return r}async function $i(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("sent_message"),s],i);return r}async function _r(s,i,r){let[a]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("user_deposit"),i.toBytes(),s.toBytes()],r);return a}async function Ji(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("cctp_bridge"),s.toBytes()],i);return r}async function Li(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("token"),s.toBytes()],i);return r}function Xi(s,i){let[r]=ve.findProgramAddressSync([Te.utils.bytes.utf8.encode("lock"),i.toBuffer()],s);return r}function Yi(s,i,r,a){let o=xt("message_transmitter",r),u=xt("token_messenger",a),m=xt("__event_authority",a),p=xt("token_minter",a),h=xt("local_token",a,[i]),b=xt("remote_token_messenger",a,[s.toString()]),S=xt("sender_authority",a);return{messageTransmitterAccount:o,tokenMessenger:u,tokenMessengerEventAuthority:m,tokenMinter:p,localToken:h,remoteTokenMessengerKey:b,authorityPda:S}}function xt(s,i,r=[]){let a=[C.from(Te.utils.bytes.utf8.encode(s))];for(let u of r)typeof u=="string"?a.push(C.from(Te.utils.bytes.utf8.encode(u))):Array.isArray(u)?a.push(C.from(Uint8Array.from(u))):C.isBuffer(u)?a.push(C.from(Uint8Array.from(u))):a.push(C.from(Uint8Array.from(u.toBuffer())));return ve.findProgramAddressSync(a,i)[0]}g();y();f();import{AnchorProvider as xs}from"@project-serum/anchor";import{Connection as ks,PublicKey as Fs}from"@solana/web3.js";function yt(s,i){let r=new ks(s,"confirmed"),a=new Fs(i);return new xs(r,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}g();y();f();import{PublicKey as Ms}from"@solana/web3.js";import{Address as Os}from"@stellar/stellar-sdk";import{Big as We}from"big.js";import ra from"randombytes";import{utils as ta}from"tronweb";g();y();f();import{Big as N}from"big.js";import $r from"bn.js";g();y();f();function Jr(s,i){return N(100).minus(N(100).times(i).div(s)).toNumber()}function kt(s,i){return Le(s,i,3).round(0,N.roundDown)}function Ne(s,i){return Le(s,3,i)}function Le(s,i,r){let a=N(r).minus(i).toNumber();return N(s).times(sn(a))}function sn(s){return N(10).pow(s)}function Q(s,i){return N(s).times(sn(i))}function J(s,i){let r=N(s);return r.eq(0)?N(0):N(r).div(sn(i))}function xe(s){return J(N(s.tokenBalance).minus(s.vUsdBalance).toFixed(),3).div(2).toFixed()}function it(s,{feeShare:i,decimals:r},a){let o=N(s);if(o.lte(0))return"0";let u=o.times(i),m=o.minus(u),p=kt(m,r),h=N(a.tokenBalance).plus(p),b=at(h,a.aValue,a.dValue);return N(a.vUsdBalance).minus(b).round(0,N.roundDown).toFixed()}function on(s,{feeShare:i,decimals:r},a){let o=N(s);if(o.lte(0))return N(0).toFixed();let u=o.plus(a.vUsdBalance),m=at(u,a.aValue,a.dValue),p=Ne(N(a.tokenBalance).minus(m),r),h=N(p).times(i);return N(p).minus(h).round(0,N.roundDown).toFixed()}function Ki(s,i){let r=N(s);if(r.lte(0))return i;let a=r.plus(i.vUsdBalance),o=at(a,i.aValue,i.dValue);return{aValue:i.aValue,dValue:i.dValue,tokenBalance:o.toFixed(0),vUsdBalance:a.toFixed(0)}}function Hi(s,{feeShare:i,decimals:r},a){if(N(s).lte(0))return N(0);let o=N(a.vUsdBalance).minus(s);if(o.lte(0))throw new mt;let u=at(o,a.aValue,a.dValue),m=N(u).minus(a.tokenBalance),p=Ne(m,r),h=N(i).div(N(1).minus(i)),b=N(p).times(h).round(0,N.roundUp);return N(p).plus(b).round(0,N.roundDown)}function Qi(s,{feeShare:i,decimals:r},a){if(N(s).lte(0))return N(0);let o=N(i).div(N(1).minus(i)),u=N(s).times(o).round(0,N.roundUp),m=N(s).plus(u),p=kt(m,r),h=N(a.tokenBalance).minus(p);if(h.lte(0))throw new mt;let b=at(h,a.aValue,a.dValue);return N(b).minus(a.vUsdBalance).round(0,N.roundDown)}function at(s,i,r){let a=N(4).times(i).times(N(r).minus(s)).minus(r),o=N(r).pow(3),u=a.pow(2),m=N(s).times(N(s).times(u).plus(N(4).times(i).times(o))).sqrt().round(0,N.roundDown),p=N(8).times(i).times(s),h=a.times(s).plus(m).div(p).round(0,N.roundDown);return h.eq(0)?N(0):h.plus(1)}function zi(s,i,r,a){let o=new $r(s),u=new $r(r),m=new $r(i);return o.mul(u).shrn(a).sub(m).toString()}function qi(s){return N(s).gt(0)?`${Number(N(s).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function ea(s,i,r){let a=N(i).times(r),o=N(i).plus(r),u=N(8).times(s).times(a).times(o),m=a.times(N(16).times(s).minus(4)).div(3),p=u.times(u),h=m.times(m).times(m),b=p.plus(h),S=N(b).sqrt(),w=N(Math.cbrt(+u.plus(S).toFixed())),k=N(Math.cbrt(+u.minus(S).toFixed()));return w.plus(k).toFixed()}function lt(s,i,r){let a;switch(i){case"EVM":{a=na(s);break}case"SOLANA":{a=new Ms(s).toBuffer();break}case"TRX":{a=Ds(s);break}case"SRB":{a=new Os(s).toBuffer();break}case"SUI":{a=na(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 ia(s){return C.from(s.replace(/^0x/i,""),"hex")}function na(s){let r=ia(s);return C.concat([C.alloc(32-r.length,0),r],32)}function Ds(s){let i=cn(s),r=ia(i);return Ns(r,32)}function cn(s){let i=ta.crypto.decodeBase58Address(s);return i?ta.bytes.byteArray2hexStr(i).replace(/^41/,"0x"):""}function Ns(s,i){if(s.length>=i)return s;let r=C.alloc(i,0);return s.copy(r,i-s.length),r}function Dn(){return ra(32)}function st(){let s=ra(32).readBigInt64BE();return s<0?s*-1n:s}function ot(s,i){let r={},a=i.sourceToken;if(r.amount=Q(i.amount,a.decimals).toFixed(),r.contractAddress=a.bridgeAddress,r.fromAccountAddress=i.fromAccountAddress,s==="SUI"){if(!a.originTokenAddress)throw new M("SUI sourceToken must contain 'originTokenAddress'");r.fromTokenAddress=a.originTokenAddress}else r.fromTokenAddress=lt(a.tokenAddress,s,s);if(r.toAccountAddress=i.toAccountAddress,s==="SUI"){if(!i.destinationToken.originTokenAddress)throw new M("SUI destinationToken must contain 'originTokenAddress'");r.toTokenAddress=i.destinationToken.originTokenAddress}else r.toTokenAddress=lt(i.destinationToken.tokenAddress,s,s);return r.minimumReceiveAmount=i.minimumReceiveAmount?Q(i.minimumReceiveAmount,i.destinationToken.decimals).toFixed():"0",r}async function qe(s,i,r){let a={};a.fromChainId=i.sourceToken.allbridgeChainId,a.fromChainSymbol=i.sourceToken.chainSymbol;let o=H.getChainProperty(i.destinationToken.chainSymbol).chainType;if(s==="SUI"){if(!i.sourceToken.originTokenAddress)throw new M("SUI token must contain 'originTokenAddress'");a.fromTokenAddress=i.sourceToken.originTokenAddress}else a.fromTokenAddress=i.sourceToken.tokenAddress;a.toChainId=i.destinationToken.allbridgeChainId,a.toTokenAddress=i.destinationToken.tokenAddress,i.gasFeePaymentMethod==="stablecoin"?a.gasFeePaymentMethod="stablecoin":a.gasFeePaymentMethod="native";let u=i.sourceToken;switch(i.messenger){case 3:if(!u.cctpAddress||!i.destinationToken.cctpAddress)throw new Ie("Such route does not support CCTP protocol");a.contractAddress=u.cctpAddress;break;case 4:if(!u.cctpV2Address||!i.destinationToken.cctpV2Address)throw new Ie("Such route does not support CCTP V2 protocol");a.contractAddress=u.cctpV2Address;break;case 5:if(!u.oftBridgeAddress||!i.destinationToken.oftBridgeAddress||u.oftId!==i.destinationToken.oftId)throw new Re("Such route does not support OFT protocol");a.contractAddress=u.oftBridgeAddress;break;case 1:case 2:a.contractAddress=u.bridgeAddress;break}a.messenger=i.messenger,a.fromAccountAddress=i.fromAccountAddress,a.amount=Q(i.amount,u.decimals).toFixed();let{fee:m,feeFormat:p}=i;if(!m){let w=(await Lr(i.sourceToken,a.toChainId,a.messenger,r))[a.gasFeePaymentMethod];if(!w)throw new tn;m=w.int,p="int"}if(p=="float")switch(a.gasFeePaymentMethod){case"native":a.fee=Q(m,H.getChainDecimalsByType(u.chainType)).toFixed(0);break;case"stablecoin":a.fee=Q(m,u.decimals).toFixed(0);break}else a.fee=m;let{extraGas:h,extraGasFormat:b}=i;if(h&&+h>0){let S=await Xr(u,i.destinationToken,a.messenger,r),w,k;switch(a.gasFeePaymentMethod){case"native":w=H.getChainDecimalsByType(u.chainType),k=We(S.exchangeRate);break;case"stablecoin":w=u.decimals,k=We(S.exchangeRate).div(S.sourceNativeTokenPrice);break}switch(b??"int"){case"float":{a.extraGas=Q(h,w).toFixed(0);let B=k.mul(h);a.extraGasDest=Q(B,H.getChainDecimalsByType(i.destinationToken.chainType)).toFixed(0,We.roundDown);break}case"int":{a.extraGas=h;let B=J(a.extraGas,H.getChainDecimalsByType(u.chainType)),I=k.mul(B);a.extraGasDest=Q(I,H.getChainDecimalsByType(i.destinationToken.chainType)).toFixed(0,We.roundDown);break}}Es(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"&&Ws(a.amount,u.decimals,a.fee,a.extraGas),a}function Ws(s,i,r,a){let o=We(s).minus(r).minus(a??0);if(o.lte(0))throw new Ut(`Amount not enough to pay fee, ${J(We(o).minus(1).neg(),i).toFixed()} stables is missing`)}async function Lr(s,i,r,a){let o=await a.getReceiveTransactionCost({sourceChainId:s.allbridgeChainId,destinationChainId:i,messenger:r,sourceToken:s.tokenAddress}),u={native:{int:o.fee,float:J(o.fee,H.getChainDecimalsByType(s.chainType)).toFixed()},adminFeeShareWithExtras:o.adminFeeShareWithExtras};if(o.sourceNativeTokenPrice){let m=Le(new We(o.fee).mul(o.sourceNativeTokenPrice),H.getChainDecimalsByType(s.chainType),s.decimals).toFixed(0,We.roundUp);u.stablecoin={int:m,float:J(m,s.decimals).toFixed()}}return u}function Es(s,i,r){let a=r.extraGasMax[i];if(!a)throw new tn(`Impossible to pay extra gas by '${i}' payment method`);let o=a.int;if(We(s).gt(o))throw new xn(`Extra gas ${s} in int format, exceeded limit ${o} for '${i}' payment method`)}async function Xr(s,i,r,a){let o={},u=await a.getReceiveTransactionCost({sourceChainId:s.allbridgeChainId,destinationChainId:i.allbridgeChainId,messenger:r,sourceToken:s.tokenAddress}),m=i.txCostAmount.maxAmount,p=J(m,H.getChainDecimalsByType(i.chainType)).toFixed(),h=We(p).div(u.exchangeRate).toFixed(H.getChainDecimalsByType(s.chainType),We.roundDown),b=Q(h,H.getChainDecimalsByType(s.chainType)).toFixed(0);if(o.native={int:b,float:h},u.sourceNativeTokenPrice){let S=We(h).mul(u.sourceNativeTokenPrice).toFixed(s.decimals,We.roundDown);o.stablecoin={int:Q(S,s.decimals).toFixed(0),float:S}}return{extraGasMax:o,destinationChain:{gasAmountMax:{int:m,float:p},swap:{int:i.txCostAmount.swap,float:J(i.txCostAmount.swap,H.getChainDecimalsByType(i.chainType)).toFixed()},transfer:{int:i.txCostAmount.transfer,float:J(i.txCostAmount.transfer,H.getChainDecimalsByType(i.chainType)).toFixed()}},exchangeRate:u.exchangeRate,sourceNativeTokenPrice:u.sourceNativeTokenPrice}}function aa(s){return s.sourceToken.chainSymbol!==s.destinationToken.chainSymbol}async function En(s,i,r,a){let o,u=new sa(i),m=new sa(r),p=await Qe(u,m),h=yt(a,i);Wn.setProvider(h);let b=await Wn.Spl.token(h).account.token.fetchNullable(p);if(b?.authority.equals(u))o=lt(p.toBase58(),"SOLANA",s);else{let S=await h.connection.getTokenAccountsByOwner(u,{mint:m});if(S.value.length===0&&!b)o=lt(p.toBase58(),"SOLANA",s);else if(S.value.length>0){let w=S.value[0];if(!w?.pubkey)throw new M("First token account or its public key is undefined");o=lt(w.pubkey.toBase58(),"SOLANA",s)}else throw new M("Associated account has wrong owner")}return o}g();y();f();g();y();f();var Ee=class{};var An=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:b}=r,w=this.getBridgeContract(o).methods.swap(a,m,h,p,b);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:b,toTokenAddress:S,messenger:w,fee:k,gasFeePaymentMethod:B,extraGas:I,extraGasDest:F}=a,D="0x"+Dn().toString("hex"),O,W,E=k;switch(I&&(E=Gs(E).plus(I).toFixed()),w){case 3:case 4:{let V=await this.buildRawTransactionCctpSend(r,a,E);O=V.sendMethod,W=V.value;break}case 5:{let V=this.buildRawTransactionOftSend(r,a,E,F);O=V.sendMethod,W=V.value;break}case 1:case 2:{let V=this.getBridgeContract(u);B==="stablecoin"?(O=V.methods.swapAndBridge(p,o,b,h,S,D,w,E),W="0"):(O=V.methods.swapAndBridge(p,o,b,h,S,D,w,0),W=E)}break}return Promise.resolve({from:m,to:u,value:W,data:O.encodeABI()})}async buildRawTransactionCctpSend(r,a,o){let{amount:u,contractAddress:m,toChainId:p,toAccountAddress:h,gasFeePaymentMethod:b}=a,S=this.getCctpBridgeContract(m),w,k;if(r.destinationToken.chainType==="SOLANA"){let B=await En(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));b==="stablecoin"?(w=S.methods.bridgeWithWalletAddress(u,B,h,p,o),k="0"):(w=S.methods.bridgeWithWalletAddress(u,B,h,p,0),k=o)}else b==="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:b,gasFeePaymentMethod:S}=a,w=this.getOftBridgeContract(p),k,B;return S==="stablecoin"?(k=w.methods.bridge(r.sourceToken.tokenAddress,m,b,h,o,u??"0","10"),B="0"):(k=w.methods.bridge(r.sourceToken.tokenAddress,m,b,h,0,u??"0","10"),B=o),{sendMethod:k,value:B}}async sendRawTransaction(r){let a=await this.web3.eth.estimateGas(r),o={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:u}=await this.web3.eth.sendTransaction({...r,gas:a,...o});return{txId:u.toString()}}getBridgeContract(r){return new this.web3.eth.Contract(Gi.abi,r)}getCctpBridgeContract(r){return new this.web3.eth.Contract(Ui.abi,r)}getOftBridgeContract(r){return new this.web3.eth.Contract(Vi.abi,r)}};g();y();f();var Gn=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=un(o.token,o.messenger);return this.tokenService.buildRawTransactionApprove({...o,spender:u},a)}async send(i,r){return q(i.amount),ee("amount",i.amount,i.sourceToken.decimals),aa(i)?Un(i.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSend(i):Un(i.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSwap(i)}};g();y();f();import{BN as Jt,Program as Hr,Spl as Ys,web3 as ht}from"@project-serum/anchor";import{Keypair as ha,PublicKey as re,SystemProgram as Ks}from"@solana/web3.js";import{Big as et}from"big.js";g();y();f();var mn={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 oa={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 Us}from"@project-serum/anchor";import Vs from"big.js";import{Web3 as Vn}from"web3";async function _t(s,i){return await Us.token(i).account.token.fetch(s)}async function ca(s,i,r){let a=await i.account.pool.fetch(r),o=a.decimals,u=Vs(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 Aa(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"),b=Vn.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(!b)throw new M("message cannot be undefined");let S=Vn.utils.keccak256(C.from(b.replace("0x",""),"hex")),w=C.from(S.replace("0x",""),"hex");w[0]=a,w[1]=o;let k=Vn.utils.encodePacked({t:"bytes32",v:"0x"+w.toString("hex")},{t:"bytes32",v:h});if(!k)throw new Vt("messageWithSigner cannot be undefined");let B=Vn.utils.keccak256(C.from(k.replace("0x",""),"hex")),I=C.from(B.replace("0x",""),"hex");return I[0]=w[0],I[1]=w[1],I}g();y();f();import{ComputeBudgetInstruction as ma,ComputeBudgetProgram as jn,Connection as la,TransactionMessage as js}from"@solana/web3.js";import{Big as Zs}from"big.js";g();y();f();import{AddressLookupTableAccount as ua}from"@solana/web3.js";async function Mt(s,i){return await Promise.all(s.message.addressTableLookups.map(async r=>new ua({key:r.accountKey,state:ua.deserialize(await i.getAccountInfo(r.accountKey).then(a=>{if(!a)throw new M("Cannot get AccountInfo");return a.data}))})))}g();y();f();g();y();f();var Yr="AUTO";async function $t(s,i,r){let a=new la(r,"confirmed"),o=(await a.simulateTransaction(s)).value.unitsConsumed;await pa(s.instructions,o,i,a)}async function da(s,i,r){let a=new la(r,"confirmed"),o=await Mt(s,a),u=js.decompile(s.message,{addressLookupTableAccounts:o});if(s.serialize().length>1232)throw new Mn;await pa(u.instructions,769230,i,a),s.message=u.compileToV0Message(o)}async function pa(s,i,r,a){if(i>0){let o=_s(i,s);if(r?.solana){let u=r.solana;if(u===Yr)await Kr(s,a);else if("pricePerUnitInMicroLamports"in u)await Kr(s,a,u.pricePerUnitInMicroLamports);else{let m=Zs(u.extraFeeInLamports).div(o).mul(sn(6)).toFixed(0);await Kr(s,a,m)}}}}function _s(s,i){let r=i.findIndex(u=>u.programId.equals(jn.programId)&&ma.decodeInstructionType(u)==="SetComputeUnitLimit"),a=Number((s*1.3).toFixed(0)),o=jn.setComputeUnitLimit({units:a});return r>=0?i[r]=o:i.push(o),a.toString()}async function Kr(s,i,r){let a=s.findIndex(m=>m.programId.equals(jn.programId)&&ma.decodeInstructionType(m)==="SetComputeUnitPrice"),o=BigInt(r||await $s(i)),u=jn.setComputeUnitPrice({microLamports:o});return a>=0?s[a]=u:s.push(u),o.toString()}async function $s(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 Js}from"@solana/spl-token";import{Connection as Ls,TransactionMessage as ga,VersionedTransaction as Xs}from"@solana/web3.js";import fa,{AxiosError as ya}from"axios";var Zn=class{connection;jupiterUrl;apiKeyHeader;maxAccounts;constructor(i,r){this.connection=new Ls(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=${Js.toString()}&amount=${a}&swapMode=${w}&slippageBps=100&onlyDirectRoutes=true`;this.maxAccounts&&(k+=`&maxAccounts=${this.maxAccounts}`),u=await fa.get(k,{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(w){throw w instanceof ya&&w.response&&w.response.data&&w.response.data.error?new he(w.response.data.error):new he("Cannot get route")}let m;if(o&&u?.data?.inAmount)m=u.data.inAmount;else if(o)throw new he("Cannot get inAmount");let p;try{p=await fa.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 ya&&w.response&&w.response.data&&w.response.data.error?new he(w.response.data.error):new he("Cannot get swap transaction")}let h;if(p?.data?.swapTransaction)h=p.data.swapTransaction;else throw new he("Cannot get swap transaction");let b=C.from(h,"base64"),S=Xs.deserialize(b);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=ga.decompile(i.message,{addressLookupTableAccounts:a}),m=ga.decompile(r.message,{addressLookupTableAccounts:o});if(m.instructions.shift(),u.instructions.push(...m.instructions),a.push(...o),i.message=u.compileToV0Message(a),r.message.header.numRequiredSignatures===2&&i.signatures.length===1){let p=r.signatures[0];if(!p)throw new M("Signature is undefined");i.signatures.push(p)}return i}catch(a){throw a instanceof Error&&a.message?new he(`Some error occurred during creation final swap and bridge transaction. ${a.message}`):new he("Some error occurred during creation final swap and bridge transaction")}}};var Qr=1e6,Ta=1.1,_n=class extends Ee{constructor(r,a,o){super();this.solanaRpcUrl=r;this.params=a;this.api=o;this.jupiterService=new Zn(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:b,toTokenAddress:S,toAccountAddress:w,minimumReceiveAmount:k}=r,B=m,I=h,F=b,D=S,O=o,W=w,E=new re(B),V=yt(this.solanaRpcUrl,E.toString()),Z=new Hr(mn,I,V),K=await jt(Z.programId),we=await ft(Z.programId),Ae=new re(F),Ve=await Zt(Ae,Z.programId),je=new re(a),Ke=await Qe(E,Ae),Me=new re(W),fe=new re(D),Ce=await Zt(fe,Z.programId),Oe=new re(O),Be=await Qe(Me,fe),Ze=[ht.ComputeBudgetProgram.setComputeUnitLimit({units:Qr})];try{await _t(Be,V)}catch{let Cn=await Ys.associatedToken(V).methods.create().accounts({mint:fe,owner:Me,associatedAccount:Be}).instruction();Ze.push(Cn)}let _e=await Z.methods.swap(new Jt(p),new Jt(k||0)).accounts({payer:E,config:we,bridgeAuthority:K,user:E,sendBridgeToken:Ve,sendMint:Ae,sendPool:je,sendUserToken:Ke,receiveBridgeToken:Ce,receiveMint:fe,receivePool:Oe,receiveUserToken:Be}).preInstructions(Ze).transaction(),De=V.connection;return _e.recentBlockhash=(await De.getLatestBlockhash()).blockhash,_e.feePayer=E,await $t(_e,u,this.solanaRpcUrl),await this.convertToVersionedTransaction(_e,De)}async buildRawTransactionSend(r){let a=await qe(this.chainType,r,this.api),o=this.addPoolAddress(r,a),u=o.gasFeePaymentMethod=="stablecoin",m;if(u)try{let{tx:b,solTxSendUpdatedParams:S}=await this.processJup(o,r,!0);m=b,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 ue?S:S instanceof Error&&S.message?new he(`Some error occurred during creation Jupiter swap transaction. ${S.message}`):new he("Some error occurred during creation Jupiter swap transaction")}}let p,h;switch(a.messenger){case 1:{let b=await this.prepareSwapAndBridgeData(o);p=await this.buildSwapAndBridgeAllbridgeTransaction(b);break}case 2:{let b=await this.prepareSwapAndBridgeData(o),{transaction:S,messageAccount:w}=await this.buildSwapAndBridgeWormholeTransaction(b);p=S,h=w;break}case 3:case 4:{let b=await this.prepareSwapAndBridgeCctpData(o),{transaction:S,messageSentEventDataKeypair:w}=await this.buildSwapAndBridgeCctpTransaction(r.destinationToken.chainSymbol,b);p=S,h=w;break}case 5:throw new Re("Messenger OFT is not supported yet.")}if(u){if(!m)throw new he("Swap tx is absent");p=await this.jupiterService.amendJupiterWithSdkTx(m,p)}return await da(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(Ta));let{tx:b,amountIn:S}=await this.jupiterService.getJupiterSwapTx(a.fromAccountAddress,a.sourceToken.tokenAddress,h.toFixed(0),o),w;if(o){if(!S)throw new he("Cannot get inAmount");w=et(r.amount).minus(et(S).mul(Ta)).toFixed(0)}else w=et(r.amount).minus(h).toFixed(0);if(et(w).lte(0))throw new Ut(`Amount not enough to pay fee, ${J(et(w).minus(1).neg(),a.sourceToken.decimals).toFixed()} stables is missing`);return{tx:b,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(H.getChainDecimalsByType("SOLANA")-r.decimals)).toFixed(0),m;return a.extraGas&&(m=et(a.extraGas).div(o).mul(et(10).pow(H.getChainDecimalsByType("SOLANA")-r.decimals)).toFixed(0)),{fee:u,extraGas:m,gasFeePaymentMethod:"native"}}return{fee:a.fee,extraGas:a.extraGas,gasFeePaymentMethod:"native"}}getExtraGasInstruction(r,a,o){return ht.SystemProgram.transfer({fromPubkey:a,toPubkey:o,lamports:+r})}async prepareSwapAndBridgeData(r){let{amount:a,contractAddress:o,fromChainId:u,fromAccountAddress:m,fromTokenAddress:p,toChainId:h,toAccountAddress:b,toTokenAddress:S,poolAddress:w,extraGas:k}=r,B=p,I=m,F=h,D=S,O=b,W=o,E=u,V=yt(this.solanaRpcUrl,I),Z=new Hr(mn,W,V),K=Array.from(Dn()),we=new re(w),Ae=await ca(a,Z,we),Ve=await ji(K,Z.programId),je=await jt(Z.programId),Ke=await Qe(new re(I),new re(B)),Me=await Zt(new re(B),Z.programId),fe=await jr(F,Z.programId),Ce=await _i(F,C.from(D),Z.programId),Oe=await ft(Z.programId),Be=await Z.account.config.fetch(Oe),Ze=await an(F,Be.gasOracleProgramId),_e=await an(E,Be.gasOracleProgramId),De=Aa({amount:Ae,recipient:C.from(O),nonce:C.from(K),receiveToken:C.from(D),destinationChainId:F,sourceChainId:E,chainBridge:(await jt(Z.programId)).toBuffer()}),G={};return G.bridge=Z,G.amount=new Jt(a),G.vusdAmount=new Jt(Ae),G.nonce=K,G.recipient=Array.from(O),G.receiveToken=Array.from(D),G.poolAccount=we,G.lockAccount=Ve,G.bridgeAuthority=je,G.userToken=Ke,G.bridgeTokenAccount=Me,G.chainBridgeAccount=fe,G.otherBridgeTokenAccount=Ce,G.userAccount=new re(I),G.destinationChainId=F,G.mint=new re(B),G.config=Oe,G.configAccountInfo=Be,G.gasPrice=Ze,G.thisGasPrice=_e,G.message=De,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:b,bridgeAuthority:S,userToken:w,bridgeTokenAccount:k,chainBridgeAccount:B,otherBridgeTokenAccount:I,userAccount:F,destinationChainId:D,mint:O,config:W,configAccountInfo:E,gasPrice:V,thisGasPrice:Z,message:K,extraGasInstruction:we}=r,Ae=E.allbridgeMessengerProgramId,Ve=await Zr(D,Ae),je=await ft(Ae),Ke=await $i(K,Ae),Me=[];we&&Me.push(we);let fe=await a.methods.swapAndBridge({vusdAmount:o,nonce:u,destinationChainId:D,recipient:m,receiveToken:p}).accounts({mint:O,user:F,config:W,lock:b,pool:h,gasPrice:V,thisGasPrice:Z,bridgeAuthority:S,userToken:w,bridgeToken:k,chainBridge:B,messenger:Ae,messengerGasUsage:Ve,messengerConfig:je,sentMessageAccount:Ke,otherBridgeToken:I}).preInstructions([ht.ComputeBudgetProgram.setComputeUnitLimit({units:Qr})]).postInstructions(Me).transaction(),Ce=yt(this.solanaRpcUrl,F.toString()).connection;return fe.recentBlockhash=(await Ce.getLatestBlockhash()).blockhash,fe.feePayer=F,await this.convertToVersionedTransaction(fe,Ce)}async convertToVersionedTransaction(r,a){let o=await a.getAddressLookupTable(new re(this.params.solanaLookUpTable)).then(m=>m.value);if(!o)throw new M("Cannot find allbridgeLookupTableAccount");let u=new ht.TransactionMessage({payerKey:r.feePayer,recentBlockhash:r.recentBlockhash,instructions:r.instructions}).compileToV0Message([o]);return new ht.VersionedTransaction(u)}async buildSwapAndBridgeWormholeTransaction(r){let{bridge:a,vusdAmount:o,nonce:u,recipient:m,receiveToken:p,poolAccount:h,lockAccount:b,bridgeAuthority:S,userToken:w,bridgeTokenAccount:k,chainBridgeAccount:B,otherBridgeTokenAccount:I,userAccount:F,destinationChainId:D,mint:O,config:W,configAccountInfo:E,gasPrice:V,thisGasPrice:Z,message:K,extraGasInstruction:we}=r,Ae=this.params.wormholeMessengerProgramId,[Ve]=re.findProgramAddressSync([C.from("Bridge")],new re(Ae)),[je]=re.findProgramAddressSync([C.from("fee_collector")],new re(Ae)),[Ke]=re.findProgramAddressSync([C.from("Sequence"),S.toBuffer()],new re(Ae)),Me=await Zr(D,E.wormholeMessengerProgramId),fe=await ft(E.wormholeMessengerProgramId),Ce=ha.generate(),Oe=yt(this.solanaRpcUrl,F.toString()),Be=await Oe.connection.getAccountInfo(Ve);if(Be==null)throw new M("Cannot fetch wormhole bridge account info");let Ze=new Jt(Be.data.slice(16,24),"le").toString(),_e=Ks.transfer({fromPubkey:F,toPubkey:je,lamports:+Ze}),De=[];we&&De.push(we);let G={mint:O,user:F,config:W,lock:b,pool:h,gasPrice:V,thisGasPrice:Z,bridgeAuthority:S,userToken:w,bridgeToken:k,chainBridge:B,otherBridgeToken:I,messengerGasUsage:Me,wormholeProgram:Ae,bridge:Ve,message:Ce.publicKey,wormholeMessenger:E.wormholeMessengerProgramId,sequence:Ke,feeCollector:je,wormholeMessengerConfig:fe,clock:ht.SYSVAR_CLOCK_PUBKEY},le=await a.methods.swapAndBridgeWormhole({vusdAmount:o,nonce:u,destinationChainId:D,recipient:m,receiveToken:p}).accounts(G).preInstructions([ht.ComputeBudgetProgram.setComputeUnitLimit({units:Qr}),_e]).postInstructions(De).signers([Ce]).transaction();return le.recentBlockhash=(await Oe.connection.getLatestBlockhash()).blockhash,le.feePayer=F,{transaction:await this.convertToVersionedTransaction(le,Oe.connection),messageAccount:Ce}}async prepareSwapAndBridgeCctpData(r){let{contractAddress:a,amount:o,fromAccountAddress:u,fromTokenAddress:m,toChainId:p,toAccountAddress:h,toTokenAddress:b,extraGas:S}=r,w=a;if(!w)throw new Ie("Such route does not support CCTP protocol");let k=4,B=u,I=b,F=h,D=yt(this.solanaRpcUrl,B),O=new Hr(oa,w,D),W=new re(m),E=await Ji(W,O.programId),V=new re(B),Z=await O.account.cctpBridge.fetch(E),K={};return K.cctpBridge=O,K.cctpBridgeAccount=E,K.cctpAddressAccount=new re(w),K.amount=new Jt(o),K.recipient=Array.from(F),K.receiveToken=Array.from(I),K.userToken=await Qe(V,W),K.bridgeAuthority=await Zi(E,O.programId),K.bridgeTokenAccount=await Li(W,O.programId),K.chainBridgeAccount=await jr(p,O.programId),K.userAccount=V,K.destinationChainId=p,K.mint=W,K.gasPrice=await an(p,Z.gasOracleProgramId),K.thisGasPrice=await an(k,Z.gasOracleProgramId),K.provider=D,S&&(K.extraGasInstruction=this.getExtraGasInstruction(S,K.userAccount,E)),K}async buildSwapAndBridgeCctpTransaction(r,a){let{cctpBridge:o,cctpBridgeAccount:u,amount:m,recipient:p,receiveToken:h,bridgeAuthority:b,userToken:S,bridgeTokenAccount:w,chainBridgeAccount:k,userAccount:B,destinationChainId:I,mint:F,gasPrice:D,thisGasPrice:O,extraGasInstruction:W,provider:E}=a,V=this.params.cctpParams.cctpDomains[r],Z=this.params.cctpParams.cctpTransmitterProgramId,K=this.params.cctpParams.cctpTokenMessengerMinter;if(V==null||!Z||!K)throw new M("CCTP is not configured");let we=new re(Z),Ae=new re(K),{messageTransmitterAccount:Ve,tokenMessenger:je,tokenMessengerEventAuthority:Ke,tokenMinter:Me,localToken:fe,remoteTokenMessengerKey:Ce,authorityPda:Oe}=Yi(V,F,we,Ae),Be=[];W&&Be.push(W);let Ze=ha.generate(),_e=Xi(o.programId,Ze.publicKey),De=await o.methods.bridge({amount:m,destinationChainId:I,recipient:p,receiveToken:h}).accounts({mint:F,user:B,cctpBridge:u,messageSentEventData:Ze.publicKey,lock:_e,cctpMessenger:Ae,messageTransmitterProgram:we,messageTransmitterAccount:Ve,tokenMessenger:je,tokenMinter:Me,localToken:fe,remoteTokenMessengerKey:Ce,authorityPda:Oe,eventAuthority:Ke,bridgeToken:w,gasPrice:D,thisGasPrice:O,chainBridge:k,userToken:S,bridgeAuthority:b}).preInstructions([ht.ComputeBudgetProgram.setComputeUnitLimit({units:2e6})]).postInstructions(Be).transaction(),G=E.connection;return De.recentBlockhash=(await G.getLatestBlockhash()).blockhash,De.feePayer=B,{transaction:await this.convertToVersionedTransaction(De,G),messageSentEventDataKeypair:Ze}}send(r){throw new de}};g();y();f();import{Address as zr,contract as Nv}from"@stellar/stellar-sdk";import{Big as zs}from"big.js";g();y();f();import{contract as n}from"@stellar/stellar-sdk";var Hs=n.Spec,Qs=n.Client;var ln=class extends Qs{constructor(r){super(new Hs(["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 $n=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:b,fee:S,gasFeePaymentMethod:w,extraGas:k}=r,B=S;k&&(B=zs(B).plus(k).toFixed());let I=this.getContract(ln,o,u),F;return w==="stablecoin"?F=await I.swap_and_bridge({sender:u,token:zr.contract(C.from(m)).toString(),amount:BigInt(a),recipient:C.from(h),destination_chain_id:+p,receive_token:C.from(b),nonce:st(),gas_amount:BigInt(0),fee_token_amount:BigInt(B)}):F=await I.swap_and_bridge({sender:u,token:zr.contract(C.from(m)).toString(),amount:BigInt(a),recipient:C.from(h),destination_chain_id:+p,receive_token:C.from(b),nonce:st(),gas_amount:BigInt(B),fee_token_amount:BigInt(0)}),F.toXDR()}async buildRawTransactionSwap(r){let a=ot(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:o,fromAccountAddress:u,fromTokenAddress:m,toAccountAddress:p,toTokenAddress:h,minimumReceiveAmount:b}=r;return(await this.getContract(ln,o,u).swap({sender:u,amount:BigInt(a),token:zr.contract(C.from(m)).toBuffer(),receive_token:C.from(h),recipient:p,receive_amount_min:BigInt(b)})).toXDR()}send(r){throw new de}getContract(r,a,o){let u={publicKey:o,contractId:a,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new r(u)}};g();y();f();import{SuiClient as mo}from"@mysten/sui/client";import{coinWithBalance as ce,Transaction as Hn}from"@mysten/sui/transactions";import{SUI_CLOCK_OBJECT_ID as Da}from"@mysten/sui/utils";import{Big as ui}from"big.js";var mi=He(Tt());g();y();f();var dt=He(Tt());ye();function Pa(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap`,typeArguments:i,arguments:[j(s,r.bridge),j(s,r.coin),Xe(s,r.receiveAmountMin,"u64")]})}function wa(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::deposit`,typeArguments:[i],arguments:[j(s,r.bridge),j(s,r.userDeposit),j(s,r.coin)]})}function Ca(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::withdraw`,typeArguments:[i],arguments:[j(s,r.bridge),j(s,r.userDeposit),Xe(s,r.amountLp,"u64")]})}function Ba(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::claim_reward`,typeArguments:[i],arguments:[j(s,r.bridge),j(s,r.userDeposit)]})}function Ia(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::pool`,typeArguments:[i],arguments:[j(s,r)]})}function ei(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap_and_bridge_wormhole`,typeArguments:[i],arguments:[j(s,r.bridge),j(s,r.messenger),j(s,r.wormholeState),j(s,r.theClock),j(s,r.gasOracle),j(s,r.amount),j(s,r.recipient),Xe(s,r.destinationChainId,"u8"),j(s,r.receiveToken),Xe(s,r.nonce,"u256"),j(s,r.feeSuiCoin),j(s,r.feeTokenCoin)]})}function Ra(s,i){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::new_user_deposit`,typeArguments:[i],arguments:[]})}function ti(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap_and_bridge`,typeArguments:[i],arguments:[j(s,r.bridge),j(s,r.messenger),j(s,r.gasOracle),j(s,r.amount),j(s,r.recipient),Xe(s,r.destinationChainId,"u8"),j(s,r.receiveToken),Xe(s,r.nonce,"u256"),j(s,r.feeSuiCoin),j(s,r.feeTokenCoin)]})}var Na=He(ri());g();y();f();var xa=He(ri());ye();function ii(s,i,r){return s.moveCall({target:`${xa.PUBLISHED_AT}::cctp_bridge_interface::bridge`,typeArguments:[i],arguments:[j(s,r.cctpBridge),j(s,r.gasOracle),j(s,r.tokenMessengerMinterState),j(s,r.messageTransmitterState),j(s,r.treasury),j(s,r.denyList),j(s,r.amount),j(s,r.feeSuiCoin),j(s,r.feeTokenCoin),Xe(s,r.destinationChainId,"u8"),j(s,r.recipient),j(s,r.recipientWalletAddress)]})}var Wa=He(si());g();y();f();var Oa=He(si());g();y();f();g();y();f();ye();import{bcs as bt}from"@mysten/sui/bcs";import{fromHEX as ao,toHEX as so}from"@mysten/sui/utils";g();y();f();import{bcs as io}from"@mysten/sui/bcs";ye();var oi=class s{__VectorClass=!0;static $typeName="vector";static $numTypeParams=1;static $isPhantom=[!1];$typeName="vector";$fullTypeName;$typeArgs;$isPhantom=[!1];elements;constructor(i,r){this.$fullTypeName=z(this.$typeName,...i),this.$typeArgs=i,this.elements=r}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs(dn(i)),fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),new:r=>new s([_(i)],r),kind:"VectorClassReified"}}static get r(){return s.reified}static get bcs(){return io.vector}static fromFields(i,r){return s.reified(i).new(r.map(a=>Y(i,a)))}static fromFieldsWithTypes(i,r){return s.reified(i).new(r.map(a=>L(i,a)))}static fromBcs(i,r){return s.fromFields(i,s.bcs(dn(i)).parse(r))}toJSONField(){return this.elements.map(i=>Ot(this.$typeArgs[0],i))}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,elements:this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new(r.map(a=>X(i,a)))}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a vector json object");return s.fromJSONField(i,r.elements)}};function Lt(s){return oi.r(s)}function oe(s){return typeof s=="string"?{phantomType:s,kind:"PhantomReified"}:{phantomType:s.fullTypeName,kind:"PhantomReified"}}var oo=bt.bytes(32).transform({input:s=>ao(s),output:s=>so(s)});function dn(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 oo;default:return s.bcs}}function _(s){switch(s){case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"bool":case"address":return s}switch(s.kind){case"PhantomReified":return s.phantomType;case"StructClassReified":return s.fullTypeName;case"VectorClassReified":return s.fullTypeName}throw new Error("unreachable")}function Y(s,i){switch(s){case"bool":case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return BigInt(i);case"address":return`0x${i}`}if(s.kind==="VectorClassReified")return s.fromFields(i).elements;switch(s.typeName){case"0x1::string::String":case"0x1::ascii::String":return new TextDecoder().decode(Uint8Array.from(i.bytes)).toString();case"0x2::url::Url":return new TextDecoder().decode(Uint8Array.from(i.url.bytes)).toString();case"0x2::object::ID":return`0x${i.bytes}`;case"0x2::object::UID":return`0x${i.id.bytes}`;case"0x1::option::Option":return i.vec.length===0?null:s.fromFields(i).vec[0];default:return s.fromFields(i)}}function L(s,i){switch(s){case"bool":case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return BigInt(i);case"address":return i}if(s.kind==="VectorClassReified")return s.fromFieldsWithTypes(i).elements;switch(s.typeName){case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":return i;case"0x2::object::UID":return i.id;case"0x2::balance::Balance":return s.fromFields({value:BigInt(i)});case"0x1::option::Option":return i===null?null:L(s.reifiedTypeArgs[0],i);default:return s.fromFieldsWithTypes(i)}}function tt(s,i,r){if(r.length!==i.length)throw new Error(`provided item has mismatching number of type argments ${s} (expected ${r.length}, got ${i.length}))`);for(let a=0;a<i.length;a++)if(U(i[a])!==U(_(r[a])))throw new Error(`provided item has mismatching type argments ${s} (expected ${_(r[a])}, got ${i[a]}))`)}function ct(s,i){let{typeArgs:r}=Se(s.type);tt(s.type,r,i)}function Ot(s,i){let{typeName:r,typeArgs:a}=Se(s);switch(r){case"bool":return i;case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return i.toString();case"address":case"signer":return i;case"vector":return i.map(o=>Ot(a[0],o));case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":case"0x2::object::UID":return i;case"0x1::option::Option":return i===null?null:Ot(a[0],i);default:return i.toJSONField()}}function X(s,i){switch(s){case"bool":case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return BigInt(i);case"address":return i}if(s.kind==="VectorClassReified")return s.fromJSONField(i).elements;switch(s.typeName){case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":case"0x2::object::UID":return i;case"0x1::option::Option":return i===null?null:X(s.reifiedTypeArgs[0],i);default:return s.fromJSONField(i)}}ye();g();y();f();var Jn="0x1";import{bcs as qp}from"@mysten/sui/bcs";import{fromB64 as tg}from"@mysten/sui/utils";g();y();f();ye();import{bcs as ci}from"@mysten/sui/bcs";import{fromB64 as co}from"@mysten/sui/utils";function Ln(s){return s=U(s),s===`${Jn}::string::String`}var Xn=class s{__StructClass=!0;static get $typeName(){return`${Jn}::string::String`}static $numTypeParams=0;static $isPhantom=[];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;bytes;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.bytes=r.bytes}static reified(){return{typeName:s.$typeName,fullTypeName:z(s.$typeName),typeArgs:[],isPhantom:s.$isPhantom,reifiedTypeArgs:[],fromFields:i=>s.fromFields(i),fromFieldsWithTypes:i=>s.fromFieldsWithTypes(i),fromBcs:i=>s.fromBcs(i),bcs:s.bcs,fromJSONField:i=>s.fromJSONField(i),fromJSON:i=>s.fromJSON(i),fromSuiParsedData:i=>s.fromSuiParsedData(i),fromSuiObjectData:i=>s.fromSuiObjectData(i),fetch:async(i,r)=>s.fetch(i,r),new:i=>new s([],i),kind:"StructClassReified"}}static get r(){return s.reified()}static phantom(){return oe(s.reified())}static get p(){return s.phantom()}static get bcs(){return ci.struct("String",{bytes:ci.vector(ci.u8())})}static fromFields(i){return s.reified().new({bytes:Y(Lt("u8"),i.bytes)})}static fromFieldsWithTypes(i){if(!Ln(i.type))throw new Error("not a String type");return s.reified().new({bytes:L(Lt("u8"),i.fields.bytes)})}static fromBcs(i){return s.fromFields(s.bcs.parse(i))}toJSONField(){return{bytes:Ot("vector<u8>",this.bytes)}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i){return s.reified().new({bytes:X(Lt("u8"),i.bytes)})}static fromJSON(i){if(i.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return s.fromJSONField(i)}static fromSuiParsedData(i){if(i.dataType!=="moveObject")throw new Error("not an object");if(!Ln(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"||!Ln(i.bcs.type))throw new Error("object at is not a String object");return s.fromBcs(co(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"||!Ln(a.data.bcs.type))throw new Error(`object at id ${r} is not a String object`);return s.fromSuiObjectData(a.data)}};ye();g();y();f();ye();g();y();f();var St="0x2";import{bcs as Ai}from"@mysten/sui/bcs";import{fromB64 as Ma,fromHEX as Ao,toHEX as uo}from"@mysten/sui/utils";function Yn(s){return s=U(s),s===`${St}::object::ID`}var Dt=class s{__StructClass=!0;static get $typeName(){return`${St}::object::ID`}static $numTypeParams=0;static $isPhantom=[];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;bytes;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.bytes=r.bytes}static reified(){return{typeName:s.$typeName,fullTypeName:z(s.$typeName),typeArgs:[],isPhantom:s.$isPhantom,reifiedTypeArgs:[],fromFields:i=>s.fromFields(i),fromFieldsWithTypes:i=>s.fromFieldsWithTypes(i),fromBcs:i=>s.fromBcs(i),bcs:s.bcs,fromJSONField:i=>s.fromJSONField(i),fromJSON:i=>s.fromJSON(i),fromSuiParsedData:i=>s.fromSuiParsedData(i),fromSuiObjectData:i=>s.fromSuiObjectData(i),fetch:async(i,r)=>s.fetch(i,r),new:i=>new s([],i),kind:"StructClassReified"}}static get r(){return s.reified()}static phantom(){return oe(s.reified())}static get p(){return s.phantom()}static get bcs(){return Ai.struct("ID",{bytes:Ai.bytes(32).transform({input:i=>Ao(i),output:i=>uo(i)})})}static fromFields(i){return s.reified().new({bytes:Y("address",i.bytes)})}static fromFieldsWithTypes(i){if(!Yn(i.type))throw new Error("not a ID type");return s.reified().new({bytes:L("address",i.fields.bytes)})}static fromBcs(i){return s.fromFields(s.bcs.parse(i))}toJSONField(){return{bytes:this.bytes}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i){return s.reified().new({bytes:X("address",i.bytes)})}static fromJSON(i){if(i.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return s.fromJSONField(i)}static fromSuiParsedData(i){if(i.dataType!=="moveObject")throw new Error("not an object");if(!Yn(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"||!Yn(i.bcs.type))throw new Error("object at is not a ID object");return s.fromBcs(Ma(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"||!Yn(a.data.bcs.type))throw new Error(`object at id ${r} is not a ID object`);return s.fromSuiObjectData(a.data)}};function Kn(s){return s=U(s),s===`${St}::object::UID`}var Ye=class s{__StructClass=!0;static get $typeName(){return`${St}::object::UID`}static $numTypeParams=0;static $isPhantom=[];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;id;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.id=r.id}static reified(){return{typeName:s.$typeName,fullTypeName:z(s.$typeName),typeArgs:[],isPhantom:s.$isPhantom,reifiedTypeArgs:[],fromFields:i=>s.fromFields(i),fromFieldsWithTypes:i=>s.fromFieldsWithTypes(i),fromBcs:i=>s.fromBcs(i),bcs:s.bcs,fromJSONField:i=>s.fromJSONField(i),fromJSON:i=>s.fromJSON(i),fromSuiParsedData:i=>s.fromSuiParsedData(i),fromSuiObjectData:i=>s.fromSuiObjectData(i),fetch:async(i,r)=>s.fetch(i,r),new:i=>new s([],i),kind:"StructClassReified"}}static get r(){return s.reified()}static phantom(){return oe(s.reified())}static get p(){return s.phantom()}static get bcs(){return Ai.struct("UID",{id:Dt.bcs})}static fromFields(i){return s.reified().new({id:Y(Dt.reified(),i.id)})}static fromFieldsWithTypes(i){if(!Kn(i.type))throw new Error("not a UID type");return s.reified().new({id:L(Dt.reified(),i.fields.id)})}static fromBcs(i){return s.fromFields(s.bcs.parse(i))}toJSONField(){return{id:this.id}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i){return s.reified().new({id:X(Dt.reified(),i.id)})}static fromJSON(i){if(i.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return s.fromJSONField(i)}static fromSuiParsedData(i){if(i.dataType!=="moveObject")throw new Error("not an object");if(!Kn(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"||!Kn(i.bcs.type))throw new Error("object at is not a UID object");return s.fromBcs(Ma(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"||!Kn(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:`${Oa.PUBLISHED_AT}::bytes32::from_hex`,arguments:[Xe(s,i,`${Xn.$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 Qn=class extends Ee{constructor(r,a){super();this.nodeRpcUrlsConfig=r;this.api=a;this.client=new mo({url:r.getNodeRpcUrl(this.chainSymbol)})}chainType="SUI";chainSymbol="SUI";client;send(){throw new M("Method send not implemented.")}async buildRawTransactionSwap(r){let a=r.sourceToken.suiAddresses;if(!a)throw new M("SUI token must contain 'suiAddresses'");(0,mi.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,b=new Hn;b.setSender(u);let S={bridge:a.bridgeObjectAddress,coin:ce({balance:BigInt(o),type:m}),receiveAmountMin:BigInt(h)},w=Pa(b,[m,p],S),k=await At(B=>this.client.getCoins({owner:r.toAccountAddress,coinType:p,cursor:B}));return k.length===0||!k[0]?b.transferObjects([w],r.toAccountAddress):b.mergeCoins(k[0].coinObjectId,[w]),await b.toJSON({client:this.client})}async buildRawTransactionSend(r){let a=await qe(this.chainType,r,this.api),{messenger:o}=a,u=r.sourceToken.suiAddresses;if(!u)throw new M("SUI token must contain 'suiAddresses'");switch((0,mi.setAddress)(u.bridgeAddress,u.bridgeAddressOrigin),(0,Wa.setAddress)(u.utilsAddress),o){case 1:return this.buildRawTransactionAllbridgeSend(a,u);case 2:return this.buildRawTransactionWormholeSend(a,u);case 3:case 4:return this.buildRawTransactionCctpSend(r,a,u);case 5:throw new Re("Messenger OFT is not supported yet.")}}async buildRawTransactionAllbridgeSend(r,a){let{amount:o,fromAccountAddress:u,fromTokenAddress:m,toChainId:p,toAccountAddress:h,toTokenAddress:b,fee:S,gasFeePaymentMethod:w,extraGas:k}=r,B=S;k&&(B=ui(B).plus(k).toFixed());let I=new Hn;if(I.setSender(u),w==="stablecoin"){let F=BigInt(o)-BigInt(B),D={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:ce({balance:F,type:m}),destinationChainId:p,nonce:st(),recipient:nt(I,ze(h)),receiveToken:nt(I,ze(b)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(B),type:m}),feeSuiCoin:ce({balance:BigInt(0),useGasCoin:!1})};ti(I,m,D)}else{let F=B==="0"?ce({balance:BigInt(B),useGasCoin:!1}):ce({balance:BigInt(B)}),D={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:ce({balance:BigInt(o),type:m}),destinationChainId:p,nonce:st(),recipient:nt(I,ze(h)),receiveToken:nt(I,ze(b)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(0),type:m}),feeSuiCoin:F};ti(I,m,D)}return await I.toJSON({client:this.client})}async buildRawTransactionWormholeSend(r,a){let{amount:o,fromAccountAddress:u,fromTokenAddress:m,toChainId:p,toAccountAddress:h,toTokenAddress:b,fee:S,gasFeePaymentMethod:w,extraGas:k}=r,B=S;k&&(B=ui(B).plus(k).toFixed());let I=new Hn;if(I.setSender(u),w==="stablecoin"){let F=BigInt(o)-BigInt(B),D={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:Da,amount:ce({balance:F,type:m}),destinationChainId:p,nonce:st(),recipient:nt(I,ze(h)),receiveToken:nt(I,ze(b)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(B),type:m}),feeSuiCoin:ce({balance:BigInt(0),useGasCoin:!1})};ei(I,m,D)}else{let F=B==="0"?ce({balance:BigInt(B),useGasCoin:!1}):ce({balance:BigInt(B)}),D={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:Da,amount:ce({balance:BigInt(o),type:m}),destinationChainId:p,nonce:st(),recipient:nt(I,ze(h)),receiveToken:nt(I,ze(b)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(0),type:m}),feeSuiCoin:F};ei(I,m,D)}return await I.toJSON({client:this.client})}async buildRawTransactionCctpSend(r,a,o){let{amount:u,fromAccountAddress:m,fromTokenAddress:p,toChainId:h,toAccountAddress:b,fee:S,gasFeePaymentMethod:w,extraGas:k}=a;(0,Na.setAddress)(o.cctpAddress,o.cctpAddressOrigin);let B=S;k&&(B=ui(B).plus(k).toFixed());let I=new Hn;I.setSender(m);let F=nt(I,ze(b)),D;if(r.destinationToken.chainType==="SOLANA"){let O=await En(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));D=nt(I,ze(O))}else D=F;if(w==="stablecoin"){let O=BigInt(u)-BigInt(B),W={cctpBridge:o.cctpObjectAddress,tokenMessengerMinterState:o.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:o.cctpMessageTransmitterStateObjectAddress,treasury:o.cctpTreasuryObjectAddress,denyList:o.cctpDenyListObjectAddress,amount:ce({balance:O,type:p}),destinationChainId:h,recipient:D,recipientWalletAddress:F,gasOracle:o.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(B),type:p}),feeSuiCoin:ce({balance:BigInt(0),useGasCoin:!1})};ii(I,p,W)}else{let O=B==="0"?ce({balance:BigInt(B),useGasCoin:!1}):ce({balance:BigInt(B)}),W={cctpBridge:o.cctpObjectAddress,tokenMessengerMinterState:o.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:o.cctpMessageTransmitterStateObjectAddress,treasury:o.cctpTreasuryObjectAddress,denyList:o.cctpDenyListObjectAddress,amount:ce({balance:BigInt(u),type:p}),destinationChainId:h,recipient:D,recipientWalletAddress:F,gasOracle:o.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(0),type:p}),feeSuiCoin:O};ii(I,p,W)}return await I.toJSON({client:this.client})}};g();y();f();import{Big as go}from"big.js";g();y();f();g();y();f();import lo from"bn.js";function zn(s){return"0x"+new lo(s).toString("hex")}function Ea(s){return new Promise(i=>setTimeout(()=>i(),s))}async function qn(s,i){let r=await s.trx.sign(i);if(!r.signature)throw new Vt("Transaction was not signed properly");let o=(await s.trx.sendRawTransaction(r)).transaction.txID;return await po(s,o),{txId:o}}async function po(s,i,r=1e4){let a=Date.now();for(;;){if(Date.now()-a>r)throw new nn("Transaction not found");let o=await s.trx.getUnconfirmedTransactionInfo(i);if(!o?.receipt){await Ea(2e3);continue}if(o.receipt.result==="SUCCESS")return o;throw new nn(`Transaction status is ${o.receipt.result}`)}}var pn=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 qn(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:b}=r,S=[{type:"uint256",value:a},{type:"bytes32",value:m},{type:"bytes32",value:h},{type:"address",value:p},{type:"uint256",value:b}];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:b,toTokenAddress:S,messenger:w,fee:k,gasFeePaymentMethod:B,extraGas:I,extraGasDest:F}=a,D=k;I&&(D=go(D).plus(I).toFixed());let O=st().toString(),W,E,V;switch(w){case 3:case 4:B==="stablecoin"?(W=[{type:"uint256",value:o},{type:"bytes32",value:b},{type:"uint256",value:h},{type:"uint256",value:D}],E="0"):(W=[{type:"uint256",value:o},{type:"bytes32",value:b},{type:"uint256",value:h},{type:"uint256",value:0}],E=D),V="bridge(uint256,bytes32,uint256,uint256)";break;case 5:B==="stablecoin"?(W=[{type:"address",value:r.sourceToken.tokenAddress},{type:"uint256",value:o},{type:"bytes32",value:b},{type:"uint256",value:h},{type:"uint256",value:D},{type:"uint256",value:F??"0"},{type:"uint256",value:"10"}],E="0"):(W=[{type:"address",value:r.sourceToken.tokenAddress},{type:"uint256",value:o},{type:"bytes32",value:b},{type:"uint256",value:h},{type:"uint256",value:0},{type:"uint256",value:F??"0"},{type:"uint256",value:"10"}],E=D),V="bridge(address,uint256,bytes32,uint256,uint256,uint256,uint256)";break;case 1:case 2:B==="stablecoin"?(W=[{type:"bytes32",value:p},{type:"uint256",value:o},{type:"bytes32",value:b},{type:"uint256",value:h},{type:"bytes32",value:S},{type:"uint256",value:O},{type:"uint8",value:w},{type:"uint256",value:D}],E="0"):(W=[{type:"bytes32",value:p},{type:"uint256",value:o},{type:"bytes32",value:b},{type:"uint256",value:h},{type:"bytes32",value:S},{type:"uint256",value:O},{type:"uint8",value:w},{type:"uint256",value:0}],E=D),V="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)";break}return this.buildRawTransaction(u,V,W,E,m)}async buildRawTransaction(r,a,o,u,m){let p=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+u},o,m);if(!p?.result?.result)throw new M("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}};var er=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o;this.rawTxBuilder=new Gn(i,r,a,o)}rawTxBuilder;async getAllowance(i,r){let a,o;r?(a=i,o=r):o=i;let u=un(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=un(o.token,o.messenger);return this.tokenService.checkAllowance({...o,spender:u},a)}async approve(i,r){let a=un(r.token,r.messenger);return this.tokenService.approve(i,{...r,spender:a})}async send(i,r){return q(r.amount),ee("amount",r.amount,r.sourceToken.decimals),Un(r.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).send(r)}};function un(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 Un(s,i,r,a,o){switch(H.getChainProperty(s).chainType){case"EVM":{if(o)return new An(o,i,r);{let u=r.getNodeRpcUrl(s);return new An(new yo(u),i,r)}}case"TRX":{if(o)return new pn(o,i);{let u=r.getNodeRpcUrl(s);return new pn(new fo({fullHost:u,solidityNode:u,eventServer:u}),i)}}case"SOLANA":return new _n(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 $n(r,a,i);case"SUI":return new Qn(r,i)}}g();y();f();import{Big as No}from"big.js";import Wo from"timed-cache";import{TronWeb as Eo}from"tronweb";import{FMT_BYTES as Go,FMT_NUMBER as Uo,Web3 as Vo}from"web3";g();y();f();import{Big as pt}from"big.js";function Ga(s,i,r,a,o){let u=Q(s,3),m=pt(u),p=pt(r),h=pt(a).plus(o),b,S;if(p.eq(0)||h.eq(0)){let k=m.div(2);b=pt(a).plus(k),S=pt(o).plus(k)}else b=pt(a).plus(m.mul(a).div(h)),S=pt(o).plus(m.mul(o).div(h));return pt(ea(i,b.toFixed(),S.toFixed())).minus(p).toFixed()}function Ua(s){let i=Q(s,3);return pt(i).round().toFixed()}g();y();f();import{Web3 as Pt}from"web3";g();y();f();var ho={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"}]},gn=ho;g();y();f();g();y();f();var ke=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=zi(this.lpAmount,this.rewardDebt,i.accRewardPerShareP,i.p);return r?J(a,r).toFixed():a}};g();y();f();var Ge=class{};var fn=class extends Ge{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";P=52;async getUserBalanceInfo(r,a){let o;try{o=await On(this.getUserBalanceInfoByBatch(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5e3)}catch{o=await Vr(()=>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 On(this.getPoolInfoByBatch(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5e3)}catch{a=await Vr(()=>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,b]=await o.execute();if(h&&b&&!h.error&&!b.error)return new ke({lpAmount:Pt.utils.toBigInt(b.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 ke({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(),b=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:b},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:S},"latest"]});let[w,k,B,I,F,D]=await a.execute();if(w&&k&&B&&I&&F&&D&&!w.error&&!k.error&&!B.error&&!I.error&&!F.error&&!D.error){let O=Pt.utils.toBigInt(B.result).toString(),W=Pt.utils.toBigInt(I.result).toString(),E=xe({tokenBalance:O,vUsdBalance:W});return{aValue:Pt.utils.toBigInt(w.result).toString(),dValue:Pt.utils.toBigInt(k.result).toString(),tokenBalance:O,vUsdBalance:W,totalLpAmount:Pt.utils.toBigInt(F.result).toString(),accRewardPerShareP:Pt.utils.toBigInt(D.result).toString(),p:this.P,imbalance:E}}throw new Error("Batched failed")}async getPoolInfoPerProperty(r){let a=this.getPoolContract(r.poolAddress),o=(await a.methods.a().call()).toString(),u=(await a.methods.d().call()).toString(),m=(await a.methods.tokenBalance().call()).toString(),p=(await a.methods.vUsdBalance().call()).toString(),h=(await a.methods.totalSupply().call()).toString(),b=(await a.methods.accRewardPerShareP().call()).toString(),S=xe({tokenBalance:m,vUsdBalance:p});return{aValue:o,dValue:u,tokenBalance:m,vUsdBalance:p,totalLpAmount:h,accRewardPerShareP:b,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(gn.abi,r)}};g();y();f();var tr=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o}async approve(i,r){if(r){let a=i,o=r;return this.tokenService.buildRawTransactionApprove({...o,spender:o.token.poolAddress},a)}else{let a=i;return this.tokenService.buildRawTransactionApprove({...a,spender:a.token.poolAddress})}}async deposit(i,r){return q(i.amount),ee("amount",i.amount,i.token.decimals),i.amount=Q(i.amount,i.token.decimals).toFixed(),Xt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionDeposit(i)}async withdraw(i,r){return q(i.amount),ee("amount",i.amount,i.token.decimals),i.amount=Q(i.amount,3).toFixed(),Xt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionWithdraw(i)}async claimRewards(i,r){return Xt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionClaimRewards(i)}};g();y();f();import{AnchorProvider as To,BN as Va,Program as bo,Spl as So,web3 as Po}from"@project-serum/anchor";import{Connection as wo,PublicKey as wt}from"@solana/web3.js";var nr=class extends Ge{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";P=48;async getUserBalanceInfo(r,a){let o=this.buildAnchorProvider(r),u=this.getBridge(a.bridgeAddress,o),m=new wt(a.poolAddress),p=await u.account.pool.fetch(m);try{let h=await _r(new wt(r),p.mint,u.programId),{lpAmount:b,rewardDebt:S}=await u.account.userDeposit.fetch(h);return new ke({lpAmount:b.toString(),rewardDebt:S.toString()})}catch{return new ke({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=xe({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 Va(r.amount)).accounts(o).preInstructions(u).transaction();return m.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,m.feePayer=new wt(r.accountAddress),await $t(m,r.txFeeParams,this.solanaRpcUrl),m}async buildRawTransactionWithdraw(r){let{bridge:a,accounts:o,preInstructions:u}=await this.prepareDataForTransaction(r),m=await a.methods.withdraw(new Va(r.amount)).accounts(o).preInstructions(u).transaction();return m.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,m.feePayer=new wt(r.accountAddress),await $t(m,r.txFeeParams,this.solanaRpcUrl),m}async buildRawTransactionClaimRewards(r){let{bridge:a,accounts:o,preInstructions:u}=await this.prepareDataForTransaction(r),m=await a.methods.claimRewards().accounts(o).preInstructions(u).transaction();return m.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,m.feePayer=new wt(r.accountAddress),await $t(m,r.txFeeParams,this.solanaRpcUrl),m}async prepareDataForTransaction(r){let a=this.buildAnchorProvider(r.accountAddress),o=this.getBridge(r.token.bridgeAddress,a),{accounts:u,preInstructions:m}=await this._getLPTransactionData(o,r.token.poolAddress,r.accountAddress,a);return{bridge:o,accounts:u,preInstructions:m}}getBridge(r,a){return new bo(mn,r,a)}buildAnchorProvider(r){let a=new wo(this.solanaRpcUrl,"confirmed"),o=new wt(r);return new To(a,{publicKey:o},{preflightCommitment:"confirmed",commitment:"confirmed"})}async _getLPTransactionData(r,a,o,u){let m=new wt(o),p=await ft(r.programId),h=await jt(r.programId),b=new wt(a),w=(await r.account.pool.fetch(b)).mint,k=await Qe(m,w),B=await Zt(w,r.programId),I=await _r(m,w,r.programId),F=[Po.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await _t(k,u)}catch{let E=await So.associatedToken(u).methods.create().accounts({mint:w,owner:m,associatedAccount:k}).instruction();F.push(E)}try{await r.account.userDeposit.fetch(I)}catch{let W=await r.methods.initDepositAccount().accounts({mint:w,user:m,userDeposit:I}).instruction();F.push(W)}return{accounts:{mint:w,user:m,config:p,pool:b,bridgeAuthority:h,userDeposit:I,userToken:k,bridgeToken:B},preInstructions:F}}};g();y();f();import{contract as Wv}from"@stellar/stellar-sdk";g();y();f();import{contract as t}from"@stellar/stellar-sdk";var Co=t.Spec,Bo=t.Client;var rr=class extends Bo{constructor(r){super(new Co(["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 Dh,rpc as Io}from"@stellar/stellar-sdk";var ja=Io.Api;function Yt(s){let{simulation:i,options:r}=s;if(!i)throw new Error("Soroban assembled transaction does not have simulation");if(ja.isSimulationSuccess(i))return i.result==null?void 0:r.parseResultXdr(i.result.retval);throw new Error(i.error)}function Kt(s){let{simulation:i}=s;if(!i)throw new Error("Soroban assembled transaction does not have simulation");return ja.isSimulationError(i)}var ir=class extends Ge{constructor(r,a,o){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=o}chainType="SRB";P=48;async getUserBalanceInfo(r,a){let u=await this.getContract(a.poolAddress).get_user_deposit({user:r});if(Kt(u))throw new M;let m=Yt(u);if(!m)throw new M;let p=m.unwrap();return new ke({lpAmount:p.lp_amount.toString(),rewardDebt:p.reward_debt.toString()})}async getPoolInfoFromChain(r){let o=await this.getContract(r.poolAddress).get_pool();if(Kt(o))throw new M;let u=Yt(o);if(!u)throw new M;let m=u.unwrap();return{aValue:m.a.toString(),accRewardPerShareP:m.acc_reward_per_share_p.toString(),dValue:m.d.toString(),tokenBalance:m.token_balance.toString(),p:this.P,totalLpAmount:m.total_lp_amount.toString(),vUsdBalance:m.v_usd_balance.toString(),imbalance:xe({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 rr(o)}};g();y();f();import{SuiClient as Oo}from"@mysten/sui/client";import{Transaction as dr}from"@mysten/sui/transactions";var Qt=He(Tt());g();y();f();ye();g();y();f();ye();import{bcs as Za}from"@mysten/sui/bcs";import{fromB64 as Ro}from"@mysten/sui/utils";function ar(s){return s=U(s),s.startsWith(`${St}::balance::Balance<`)}var Pe=class s{__StructClass=!0;static get $typeName(){return`${St}::balance::Balance`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;value;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.value=r.value}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return Za.struct("Balance",{value:Za.u64()})}static fromFields(i,r){return s.reified(i).new({value:Y("u64",r.value)})}static fromFieldsWithTypes(i,r){if(!ar(r.type))throw new Error("not a Balance type");return ct(r,[i]),s.reified(i).new({value:L("u64",r.fields.value)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{value:this.value.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({value:X("u64",r.value)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(z(s.$typeName,_(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!ar(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"||!ar(r.bcs.type))throw new Error("object at is not a Balance object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=U(a[0]),u=U(_(i));if(o!==U(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Ro(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"||!ar(o.data.bcs.type))throw new Error(`object at id ${a} is not a Balance object`);return s.fromSuiObjectData(r,o.data)}};var pi=He(Tt());g();y();f();ye();var li=He(Tt());import{bcs as sr}from"@mysten/sui/bcs";import{fromB64 as vo}from"@mysten/sui/utils";function or(s){return s=U(s),s.startsWith(`${li.PKG_V1}::pool_rewards::PoolRewards<`)}var Nt=class s{__StructClass=!0;static get $typeName(){return`${li.PKG_V1}::pool_rewards::PoolRewards`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;accRewardPerShareP;adminFeeShareBp;adminFee;rewards;lpSupply;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.accRewardPerShareP=r.accRewardPerShareP,this.adminFeeShareBp=r.adminFeeShareBp,this.adminFee=r.adminFee,this.rewards=r.rewards,this.lpSupply=r.lpSupply}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return sr.struct("PoolRewards",{acc_reward_per_share_p:sr.u128(),admin_fee_share_bp:sr.u64(),admin_fee:Pe.bcs,rewards:Pe.bcs,lp_supply:sr.u64()})}static fromFields(i,r){return s.reified(i).new({accRewardPerShareP:Y("u128",r.acc_reward_per_share_p),adminFeeShareBp:Y("u64",r.admin_fee_share_bp),adminFee:Y(Pe.reified(i),r.admin_fee),rewards:Y(Pe.reified(i),r.rewards),lpSupply:Y("u64",r.lp_supply)})}static fromFieldsWithTypes(i,r){if(!or(r.type))throw new Error("not a PoolRewards type");return ct(r,[i]),s.reified(i).new({accRewardPerShareP:L("u128",r.fields.acc_reward_per_share_p),adminFeeShareBp:L("u64",r.fields.admin_fee_share_bp),adminFee:L(Pe.reified(i),r.fields.admin_fee),rewards:L(Pe.reified(i),r.fields.rewards),lpSupply:L("u64",r.fields.lp_supply)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{accRewardPerShareP:this.accRewardPerShareP.toString(),adminFeeShareBp:this.adminFeeShareBp.toString(),adminFee:this.adminFee.toJSONField(),rewards:this.rewards.toJSONField(),lpSupply:this.lpSupply.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({accRewardPerShareP:X("u128",r.accRewardPerShareP),adminFeeShareBp:X("u64",r.adminFeeShareBp),adminFee:X(Pe.reified(i),r.adminFee),rewards:X(Pe.reified(i),r.rewards),lpSupply:X("u64",r.lpSupply)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(z(s.$typeName,_(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!or(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"||!or(r.bcs.type))throw new Error("object at is not a PoolRewards object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=U(a[0]),u=U(_(i));if(o!==U(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,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 PoolRewards object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!or(o.data.bcs.type))throw new Error(`object at id ${a} is not a PoolRewards object`);return s.fromSuiObjectData(r,o.data)}};g();y();f();ye();var di=He(Tt());import{bcs as Ht}from"@mysten/sui/bcs";import{fromB64 as xo}from"@mysten/sui/utils";function cr(s){return s=U(s),s.startsWith(`${di.PKG_V1}::pool_state::PoolState<`)}var Wt=class s{__StructClass=!0;static get $typeName(){return`${di.PKG_V1}::pool_state::PoolState`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;tokenBalance;vusdBalance;d;a;balanceRatioMinBp;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.tokenBalance=r.tokenBalance,this.vusdBalance=r.vusdBalance,this.d=r.d,this.a=r.a,this.balanceRatioMinBp=r.balanceRatioMinBp}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return Ht.struct("PoolState",{token_balance:Ht.u64(),vusd_balance:Ht.u64(),d:Ht.u64(),a:Ht.u64(),balance_ratio_min_bp:Ht.u64()})}static fromFields(i,r){return s.reified(i).new({tokenBalance:Y("u64",r.token_balance),vusdBalance:Y("u64",r.vusd_balance),d:Y("u64",r.d),a:Y("u64",r.a),balanceRatioMinBp:Y("u64",r.balance_ratio_min_bp)})}static fromFieldsWithTypes(i,r){if(!cr(r.type))throw new Error("not a PoolState type");return ct(r,[i]),s.reified(i).new({tokenBalance:L("u64",r.fields.token_balance),vusdBalance:L("u64",r.fields.vusd_balance),d:L("u64",r.fields.d),a:L("u64",r.fields.a),balanceRatioMinBp:L("u64",r.fields.balance_ratio_min_bp)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{tokenBalance:this.tokenBalance.toString(),vusdBalance:this.vusdBalance.toString(),d:this.d.toString(),a:this.a.toString(),balanceRatioMinBp:this.balanceRatioMinBp.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({tokenBalance:X("u64",r.tokenBalance),vusdBalance:X("u64",r.vusdBalance),d:X("u64",r.d),a:X("u64",r.a),balanceRatioMinBp:X("u64",r.balanceRatioMinBp)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(z(s.$typeName,_(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!cr(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"||!cr(r.bcs.type))throw new Error("object at is not a PoolState object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=U(a[0]),u=U(_(i));if(o!==U(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,xo(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching PoolState object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!cr(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 yn}from"@mysten/sui/bcs";import{fromB64 as ko}from"@mysten/sui/utils";function Ar(s){return s=U(s),s.startsWith(`${pi.PKG_V1}::pool::Pool<`)}var ur=class s{__StructClass=!0;static get $typeName(){return`${pi.PKG_V1}::pool::Pool`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;id;state;rewards;feeShareBp;canDeposit;canWithdraw;decimals;balance;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.id=r.id,this.state=r.state,this.rewards=r.rewards,this.feeShareBp=r.feeShareBp,this.canDeposit=r.canDeposit,this.canWithdraw=r.canWithdraw,this.decimals=r.decimals,this.balance=r.balance}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return yn.struct("Pool",{id:Ye.bcs,state:Wt.bcs,rewards:Nt.bcs,fee_share_bp:yn.u64(),can_deposit:yn.bool(),can_withdraw:yn.bool(),decimals:yn.u8(),balance:Pe.bcs})}static fromFields(i,r){return s.reified(i).new({id:Y(Ye.reified(),r.id),state:Y(Wt.reified(i),r.state),rewards:Y(Nt.reified(i),r.rewards),feeShareBp:Y("u64",r.fee_share_bp),canDeposit:Y("bool",r.can_deposit),canWithdraw:Y("bool",r.can_withdraw),decimals:Y("u8",r.decimals),balance:Y(Pe.reified(i),r.balance)})}static fromFieldsWithTypes(i,r){if(!Ar(r.type))throw new Error("not a Pool type");return ct(r,[i]),s.reified(i).new({id:L(Ye.reified(),r.fields.id),state:L(Wt.reified(i),r.fields.state),rewards:L(Nt.reified(i),r.fields.rewards),feeShareBp:L("u64",r.fields.fee_share_bp),canDeposit:L("bool",r.fields.can_deposit),canWithdraw:L("bool",r.fields.can_withdraw),decimals:L("u8",r.fields.decimals),balance:L(Pe.reified(i),r.fields.balance)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{id:this.id,state:this.state.toJSONField(),rewards:this.rewards.toJSONField(),feeShareBp:this.feeShareBp.toString(),canDeposit:this.canDeposit,canWithdraw:this.canWithdraw,decimals:this.decimals,balance:this.balance.toJSONField()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({id:X(Ye.reified(),r.id),state:X(Wt.reified(i),r.state),rewards:X(Nt.reified(i),r.rewards),feeShareBp:X("u64",r.feeShareBp),canDeposit:X("bool",r.canDeposit),canWithdraw:X("bool",r.canWithdraw),decimals:X("u8",r.decimals),balance:X(Pe.reified(i),r.balance)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(z(s.$typeName,_(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Ar(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"||!Ar(r.bcs.type))throw new Error("object at is not a Pool object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=U(a[0]),u=U(_(i));if(o!==U(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,ko(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching Pool object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!Ar(o.data.bcs.type))throw new Error(`object at id ${a} is not a Pool object`);return s.fromSuiObjectData(r,o.data)}};g();y();f();ye();var fi=He(Tt());import{bcs as gi}from"@mysten/sui/bcs";import{fromB64 as Fo}from"@mysten/sui/utils";function mr(s){return s=U(s),s.startsWith(`${fi.PKG_V1}::user_deposit::UserDeposit<`)}var lr=class s{__StructClass=!0;static get $typeName(){return`${fi.PKG_V1}::user_deposit::UserDeposit`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;id;lpAmount;rewardDebt;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.id=r.id,this.lpAmount=r.lpAmount,this.rewardDebt=r.rewardDebt}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return gi.struct("UserDeposit",{id:Ye.bcs,lp_amount:gi.u64(),reward_debt:gi.u64()})}static fromFields(i,r){return s.reified(i).new({id:Y(Ye.reified(),r.id),lpAmount:Y("u64",r.lp_amount),rewardDebt:Y("u64",r.reward_debt)})}static fromFieldsWithTypes(i,r){if(!mr(r.type))throw new Error("not a UserDeposit type");return ct(r,[i]),s.reified(i).new({id:L(Ye.reified(),r.fields.id),lpAmount:L("u64",r.fields.lp_amount),rewardDebt:L("u64",r.fields.reward_debt)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{id:this.id,lpAmount:this.lpAmount.toString(),rewardDebt:this.rewardDebt.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({id:X(Ye.reified(),r.id),lpAmount:X("u64",r.lpAmount),rewardDebt:X("u64",r.rewardDebt)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(z(s.$typeName,_(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!mr(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"||!mr(r.bcs.type))throw new Error("object at is not a UserDeposit object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=U(a[0]),u=U(_(i));if(o!==U(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Fo(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching UserDeposit object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!mr(o.data.bcs.type))throw new Error(`object at id ${a} is not a UserDeposit object`);return s.fromSuiObjectData(r,o.data)}};g();y();f();function $a(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 _a(r,a,m,s);u+=BigInt(p.balance),m.push(p)}return u>=o?_a(r,a,m,s):[]}function _a(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 Mo="0x0000000000000000000000000000000000000000000000000000000000000000";async function Ja(s,i,r){let a=await s.devInspectTransactionBlock({sender:Mo,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():dn(r).parse(Uint8Array.from(u))}var pr=class extends Ge{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.client=new Oo({url:r})}chainType="SUI";client;async getUserBalanceInfo(r,a){if(!a.originTokenAddress)throw new M("SUI token must contain 'originTokenAddress'");let o=a.suiAddresses;if(!o)throw new M("SUI token must contain 'suiAddresses'");(0,Qt.setAddress)(o.bridgeAddress,o.bridgeAddressOrigin);let m=(await this.fetchDeposits(r,a.originTokenAddress)).reduce((p,h)=>{if(h.data)return p.lpAmount+=BigInt(h.data.content.fields.lp_amount),p.rewardDebt+=BigInt(h.data.content.fields.reward_debt),p;throw new M("Deposits fetch failed")},{lpAmount:BigInt(0),rewardDebt:BigInt(0)});return new ke({lpAmount:m.lpAmount.toString(),rewardDebt:m.rewardDebt.toString()})}async fetchDeposits(r,a){return await At(o=>this.client.getOwnedObjects({owner:r,filter:{StructType:lr.phantom(oe(a)).phantomType},options:{showContent:!0},cursor:o}))}async getPoolInfoFromChain(r){let a=r.suiAddresses;if(!a)throw new M("SUI token must contain 'suiAddresses'");if((0,Qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.originTokenAddress)throw new M("SUI token must contain 'originTokenAddress'");let o=48,u=new dr;Ia(u,r.originTokenAddress,a.bridgeObjectAddress);let m=await Ja(this.client,u,ur.reified(oe(r.originTokenAddress))),p=m.state.tokenBalance,h=m.state.vusdBalance,b=xe({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:b}}async buildRawTransactionDeposit(r){let a=r.token.suiAddresses;if(!a)throw new M("SUI token must contain 'suiAddresses'");if((0,Qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new M("SUI token must contain 'originTokenAddress'");let o=await At(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 dr;m.setSender(r.accountAddress);let{depositObj:p,isNewDeposit:h}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,m),[b]=$a([r.amount],o,m);if(!b)throw new ut("No coins to deposit");if(!r.token.originTokenAddress)throw new M("SUI token must contain 'originTokenAddress'");let S=wa(m,r.token.originTokenAddress,{bridge:a.bridgeObjectAddress,userDeposit:p,coin:b});return m.mergeCoins(u.coinObjectId,[S]),h&&m.transferObjects([p],r.accountAddress),await m.toJSON({client:this.client})}async getDepositObject(r,a,o){let u=await this.fetchDeposits(r,a);if(u.length===0||!u[0]){let m=oe(a).phantomType;return{depositObj:Ra(o,m),isNewDeposit:!0}}else{if(u[0].data?.objectId)return{depositObj:u[0].data.objectId,isNewDeposit:!1};throw new M("Something went wrong while deposit")}}async buildRawTransactionWithdraw(r){let a=r.token.suiAddresses;if(!a)throw new M("SUI token must contain 'suiAddresses'");if((0,Qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new M("SUI token must contain 'originTokenAddress'");let o=oe(r.token.originTokenAddress).phantomType,u=new dr;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=Ca(u,o,{bridge:a.bridgeObjectAddress,userDeposit:m,amountLp:BigInt(r.amount)}),b=await At(S=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:S}));if(!h[0]||!h[1])throw new M("No rewards found");return b[0]?u.mergeCoins(b[0].coinObjectId,[h[0],h[1]]):(u.mergeCoins(h[0],[h[1]]),u.transferObjects([h[0]],r.accountAddress)),await u.toJSON({client:this.client})}async buildRawTransactionClaimRewards(r){let a=r.token.suiAddresses;if(!a)throw new M("SUI token must contain 'suiAddresses'");if((0,Qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new M("SUI token must contain 'originTokenAddress'");let o=oe(r.token.originTokenAddress).phantomType,u=new dr;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=Ba(u,o,{bridge:a.bridgeObjectAddress,userDeposit:m}),b=await At(S=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:S}));return b[0]?u.mergeCoins(b[0].coinObjectId,[h]):u.transferObjects([h],r.accountAddress),await u.toJSON({client:this.client})}};g();y();f();import{Web3 as gr}from"web3";import{encodeFunctionCall as Do}from"web3-eth-abi";var hn=class extends Ge{constructor(r,a,o){super();this.tronWeb=r;this.api=a;this.tronJsonRpc=o}chainType="TRX";P=52;async getUserBalanceInfo(r,a){let o;if(this.tronJsonRpc)try{o=await this.getUserBalanceInfoByBatch(this.tronJsonRpc,r,a)}catch{o=await this.getUserBalanceInfoPerProperty(r,a)}else o=await this.getUserBalanceInfoPerProperty(r,a);return o}async getUserBalanceInfoByBatch(r,a,o){let u=cn(o.poolAddress),m=cn(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"]}],b=await(await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(p)})).json();if(Array.isArray(b)&&b.length===2){let S=w=>{let k=b.find(B=>B.id===w);if(!k||!k.result)throw new Error(`Missing or invalid result for id ${w}`);return gr.utils.toBigInt(k.result).toString()};return new ke({lpAmount:gr.utils.toBigInt(S(2)).toString(),rewardDebt:gr.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 ke({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=cn(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 B=p.find(I=>I.id===k);if(!B||!B.result)throw new Error(`Missing or invalid result for id ${k}`);return gr.utils.toBigInt(B.result).toString()},b=h(3),S=h(4),w=xe({tokenBalance:b,vUsdBalance:S});return{aValue:h(1),dValue:h(2),tokenBalance:b,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,b]=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=xe({tokenBalance:S,vUsdBalance:w});return{aValue:o.toString(),dValue:u.toString(),tokenBalance:S,vUsdBalance:w,totalLpAmount:h.toString(),accRewardPerShareP:b.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 M("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}getContract(r){return this.tronWeb.contract(gn.abi,r)}getFunctionAbi(r,...a){let o=gn.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 Do(o,a)}};var fr=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o;this.rawTxBuilder=new tr(i,r,this.params,o);let u=a.cachePoolInfoChainSec>0?a.cachePoolInfoChainSec*1e3:20*1e3;this.cache=new Wo({defaultTtl:u})}rawTxBuilder;cache;async getAllowance(i,r){if(r){let a=i,o=r;return await this.tokenService.getAllowance({...o,spender:o.token.poolAddress},a)}else{let a=i;return await this.tokenService.getAllowance({...a,spender:a.token.poolAddress})}}async checkAllowance(i,r){if(r){let a=i,o=r;return this.tokenService.checkAllowance({...o,spender:o.token.poolAddress},a)}else{let a=i;return this.tokenService.checkAllowance({...a,spender:a.token.poolAddress})}}async approve(i,r){return this.tokenService.approve(i,{...r,spender:r.token.poolAddress})}async getAmountToBeDeposited(i,r,a){q(i),ee("amount",i,r.decimals);let o=await this.getPoolInfoFromChain(r,a),{vUsdBalance:u,tokenBalance:m,aValue:p,dValue:h}=o,b=Ga(i,p,h,m,u);return J(b,3).toFixed()}async getAmountToBeWithdrawn(i,r,a,o){q(i),ee("amount",i,a.decimals);let u=await this.getPoolInfoFromChain(a,o),m=Ua(i),p=Ne(m,a.decimals),b=(await this.getUserBalanceInfo(r,a,o)).earned(u)||"0",S=No(p).plus(b).toFixed();return J(S,a.decimals).toFixed()}async getUserBalanceInfo(i,r,a){return Xt(r.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,a).getUserBalanceInfo(i,r)}async getPoolInfoFromChain(i,r){let a={chainSymbol:i.chainSymbol,poolAddress:i.poolAddress},o=this.cache.get(a);if(o)return o;{let u=await Xt(i.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).getPoolInfoFromChain(i);return this.cache.put(a,u),this.api.cachePut({chainSymbol:i.chainSymbol,poolAddress:i.poolAddress},u),u}}};function Xt(s,i,r,a,o){switch(H.getChainProperty(s).chainType){case"EVM":{if(o)return new fn(o,i);{let u=r.getNodeRpcUrl(s),m=new Vo(u);return m.defaultReturnFormat={number:Uo.STR,bytes:Go.HEX},new fn(m,i)}}case"TRX":{let u=r.getNodeRpcUrl(s),m=a.tronJsonRpc;if(o)return new hn(o,i,m);{let p=new Eo({fullHost:u});return new hn(p,i,m)}}case"SOLANA":{let u=r.getNodeRpcUrl(s);return new nr(u,i)}case"SRB":return new ir(r,a,i);case"SUI":return new pr(r.getNodeRpcUrl(s),i)}}g();y();f();g();y();f();import{Big as me}from"big.js";function Ya(s,i,r){let a=jo(s,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo),o=Zo(a.amountIncludingCommissionInSystemPrecision,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:o}}function Ka(s,i,r){let a=_o(s,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo),o=$o(a.amountIncludingCommissionInSystemPrecision,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:o}}function jo(s,{feeShare:i,decimals:r},a){let o=me(s),u=o.times(i),m=o.minus(u);return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInSystemPrecision:La(kt(m,r),a),amountExcludingCommissionInSystemPrecision:La(kt(o,r),a)}}function La(s,i){if(s.eq(0))return"0";let r=me(i.tokenBalance).plus(s),a=at(r.toFixed(),i.aValue,i.dValue);return me(i.vUsdBalance).minus(a).round().toFixed()}function Zo(s,{feeShare:i,decimals:r},a){if(me(s).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let u=me(s).plus(a.vUsdBalance),m=at(u,a.aValue,a.dValue),p=Ne(me(a.tokenBalance).minus(m),r),h=me(p).times(i),b=me(p).minus(h).round();return{bridgeFeeInTokenPrecision:h.round().toFixed(),amountIncludingCommissionInTokenPrecision:b.toFixed(),amountExcludingCommissionInTokenPrecision:p.toFixed()}}function _o(s,{feeShare:i,decimals:r},a){let o=me(i).div(me(1).minus(i)),u=me(s).times(o),m=me(s).plus(u);return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInSystemPrecision:Xa(kt(m,r),a),amountExcludingCommissionInSystemPrecision:Xa(kt(s,r),a)}}function Xa(s,i){let r=me(i.tokenBalance).minus(s),a=at(r.toFixed(),i.aValue,i.dValue);return me(a).minus(i.vUsdBalance).round().toFixed()}function $o(s,{feeShare:i,decimals:r},a){if(me(s).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let o=me(a.vUsdBalance).minus(s),u=at(o.toFixed(),a.aValue,a.dValue),m=me(u).minus(a.tokenBalance),p=Ne(m.toFixed(),r),h=me(i).div(me(1).minus(i)),b=me(p).times(h),S=me(p).plus(b);return{bridgeFeeInTokenPrecision:b.round().toFixed(),amountIncludingCommissionInTokenPrecision:S.round().toFixed(),amountExcludingCommissionInTokenPrecision:p.toFixed()}}g();y();f();import{Big as Ct}from"big.js";function Ha(s,i,r,a,o){let u=it(s,i,r),m=Ne(u,i.decimals),p=on(u,a,o),h=Ct(s).times(i.feeShare),b=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(b,a.decimals).neg().round(a.decimals,Ct.roundUp).toFixed(),swap:J(Ne(u,a.decimals).minus(p).minus(b),a.decimals).neg().round(a.decimals,Ct.roundUp).toFixed()}}}g();y();f();g();y();f();g();y();f();import{Connection as Jo,PublicKey as Lo,TransactionMessage as Xo}from"@solana/web3.js";var yr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r}async addMemoToTx(i,r){if(r.length>28)throw new M("InvalidArgumentException memo cannot be more than 28 characters");let a=new Jo(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),o=await Mt(i,a),u=Xo.decompile(i.message,{addressLookupTableAccounts:o}),m=u.instructions[u.instructions.length-1];if(!m?.keys)throw new M("Last instruction or its keys are invalid.");m.keys.push({pubkey:new Lo(C.from(r)),isSigner:!1,isWritable:!1}),i.message=u.compileToV0Message(o)}};g();y();f();import{Asset as Ho,BASE_FEE as Qo,contract as Ev,Horizon as Qa,Operation as zo,Operation as qo,rpc as bn,TimeoutInfinite as ec,TransactionBuilder as yi,TransactionBuilder as za}from"@stellar/stellar-sdk";g();y();f();import{contract as e}from"@stellar/stellar-sdk";var Yo=e.Spec,Ko=e.Client;var Tn=class extends Ko{constructor(r){super(new Yo(["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 tc=100,nc=180,hr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r}async buildChangeTrustLineXdrTx(i){let a=await new Qa.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(i.sender),u=await this.getContract(Tn,i.tokenAddress).name();if(Kt(u))throw new M;let m=Yt(u);if(!m)throw new M;let[p,h]=m.split(":");if(p===void 0||h===void 0)throw new M("Invalid token name format. Expected format 'symbol:srbTokenAddress'");let b=new Ho(p,h),S=qo.changeTrust({asset:b,limit:i.limit});return new za(a,{fee:tc.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(S).setTimeout(nc).build().toXDR()}async getBalanceLine(i,r){let o=await this.getContract(Tn,r).name();if(Kt(o))throw new M;let u=Yt(o);if(!u)throw new M;let[m,p]=u.split(":"),h=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new Qa.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 Qa.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),a=za.fromXDR(i,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await r.submitTransaction(a)}async simulateAndCheckRestoreTxRequiredSoroban(i,r){let a=new bn.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),o=await a.getAccount(r),u=yi.fromXDR(i,this.params.sorobanNetworkPassphrase),m=await a.simulateTransaction(u);if(bn.Api.isSimulationRestore(m))return new yi(o,{fee:(+Qo+ +m.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(m.restorePreamble.transactionData.build()).addOperation(zo.restoreFootprint({})).setTimeout(ec).build().toXDR()}async sendTransactionSoroban(i){let r=new bn.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=yi.fromXDR(i,this.params.sorobanNetworkPassphrase);return r.sendTransaction(a)}async confirmTx(i,r=15){let a=new bn.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),o=await Ei(()=>a.getTransaction(i),m=>m.status===bn.Api.GetTransactionStatus.NOT_FOUND,r);if(o.length===0)throw new M("No transaction responses found.");let u=o[o.length-1];if(!u)throw new M("Unexpected error: last response is undefined.");return u}getContract(i,r){let a={contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new i(a)}};var Tr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.srb=new hr(i,r),this.sol=new yr(i,r)}srb;sol};g();y();f();var Ft=(r=>(r.WITH_NATIVE_CURRENCY="native",r.WITH_STABLECOIN="stablecoin",r))(Ft||{}),Nn=(r=>(r.INT="int",r.FLOAT="float",r))(Nn||{});g();y();f();import{Big as ge}from"big.js";g();y();f();import cc from"axios";g();y();f();var qa="3.23.0-beta.2";g();y();f();function es(s){return Object.entries(s).reduce((i,r)=>{let a=r[0],o=r[1],u=oc(a,o);return u&&(i[a]=u),i},{})}function ts(s){let i={};for(let[r,a]of Object.entries(s)){let o=r;for(let u of a.tokens){let m=zt({chainSymbol:o,poolAddress:u.poolAddress}),p=xe(u.poolInfo);i[m]={...u.poolInfo,imbalance:p}}}return i}function rc(s,i){let{name:r,...a}=s,{poolInfo:o,...u}=i;return{...u,...a,chainName:r}}function ic(s){switch(s){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;case"cctpV2":return 4;case"oft":return 5}}function ac(s){return Object.entries(s).reduce((i,[r,a])=>(i[r]=sc(a),i),{})}function sc(s){return Object.entries(s).reduce((i,[r,a])=>{let o=ic(r);return o&&(i[o]=a),i},{})}function oc(s,i){let r=H.getChainsProperties()[s];if(!r)return null;let a={...r,allbridgeChainId:i.chainId,bridgeAddress:i.bridgeAddress,oftBridgeAddress:i.oftBridgeAddress,transferTime:ac(i.transferTime),txCostAmount:i.txCostAmount,confirmations:i.confirmations,suiAddresses:i.suiAddresses};return{...a,tokens:i.tokens.map(o=>rc(a,o))}}function zt(s){return s.chainSymbol+"_"+s.poolAddress}function ns(s){let i=[];for(let[r,a]of Object.entries(s)){let o=r;for(let u of a.tokens)i.push({chainSymbol:o,poolAddress:u.poolAddress})}return i}function rs(s){let i={};for(let[r,a]of Object.entries(s)){let o=r;for(let[u,m]of Object.entries(a))m.imbalance=xe(m),i[zt({chainSymbol:o,poolAddress:u})]=m}return i}var br=class{api;constructor(i){this.api=cc.create({baseURL:i.coreApiUrl,headers:{Accept:"application/json",...i.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+qa},params:i.coreApiQueryParams})}async getTokenInfo(){let{data:i}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:es(i),poolInfoMap:ts(i)}}async getPendingInfo(){let{data:i}=await this.api.get("/pending-info");return i}async getGasBalance(i,r){let{data:a}=await this.api.get(`/check/${i}/${r}`);return a}async getTransferStatus(i,r){let{data:a}=await this.api.get(`/chain/${i}/${r}`);return a}async getReceiveTransactionCost(i){if(i.messenger===5&&!i.sourceToken)throw new vn("For OFT sourceToken required");let{data:r}=await this.api.post("/receive-fee",i,{headers:{"Content-Type":"application/json"}});return{exchangeRate:r.exchangeRate,fee:r.fee,sourceNativeTokenPrice:r.sourceNativeTokenPrice,adminFeeShareWithExtras:r.adminFeeShareWithExtras}}async getPoolInfoMap(i){let r=i instanceof Array?i:[i],{data:a}=await this.api.post("/pool-info",{pools:r},{headers:{"Content-Type":"application/json"}});return rs(a)}};g();y();f();import Sr from"timed-cache";var hi=20*1e3,Ac=55*1e3,Pr=class{constructor(i){this.apiClient=i;this.tokenInfoCache=new Sr({defaultTtl:Ac}),this.receivedTransactionCache=new Sr({defaultTtl:hi}),this.pendingInfoCache=new Sr({defaultTtl:hi}),this.gasBalanceCache=new Sr({defaultTtl:hi})}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 wr=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 Cr=class{constructor(i,r){this.client=i;this.isStaging=r.coreApiQueryParams?.staging==="true"}isStaging;async getChainDetailsMap(i){let r=await this.client.getChainDetailsMap(),a={};for(let o in r){let u=r[o];u&&(a[o]={...u,tokens:is(u.tokens,i,this.isStaging)})}return a}async tokens(i){return is(await this.client.tokens(),i,this.isStaging)}async getPendingInfo(){return this.client.getPendingInfo()}async getGasBalance(i,r){return this.client.getGasBalance(i,r)}async getTransferStatus(i,r){return await this.client.getTransferStatus(i,r)}async getReceiveTransactionCost(i){return await this.client.getReceiveTransactionCost(i)}cachePut(i,r){return this.client.cachePut(i,r)}getPoolInfoByKey(i){return this.client.getPoolInfoByKey(i)}refreshPoolInfo(i){return this.client.refreshPoolInfo(i)}};function is(s,i,r){return s.filter(a=>r?!0:a.flags[i]).map(uc)}function uc(s){let{flags:i,...r}=s;return r}g();y();f();import mc from"timed-cache";var lc=55*1e3,Br=class{constructor(i){this.client=i;this.poolInfoCache=new Ti}poolInfoCache;async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(i,r){return this.client.getTransferStatus(i,r)}getReceiveTransactionCost(i){return this.client.getReceiveTransactionCost(i)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(i,r){return this.client.getGasBalance(i,r)}async getPoolInfoByKey(i){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let r=this.poolInfoCache.get(i);if(r)return r;{let a=await this.client.getPoolInfoMap(i);this.poolInfoCache.putAll(a);let o=a[zt(i)];if(o)return o;throw new M("Cannot find pool info for "+i.poolAddress+" on chain "+i.chainSymbol)}}async refreshPoolInfo(i){let r;if(i)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),r=await this.client.getPoolInfoMap(i);else{let a=await this.client.getChainDetailsMapAndPoolInfoMap();r=await this.client.getPoolInfoMap(ns(a.chainDetailsMap))}this.poolInfoCache.putAll(r)}cachePut(i,r){this.poolInfoCache.put(zt(i),r)}},Ti=class{cache;constructor(){this.cache=new mc({defaultTtl:lc})}putAll(i){for(let[r,a]of Object.entries(i))this.cache.put(r,a)}putAllIfNotExists(i){for(let[r,a]of Object.entries(i))this.cache.get(r)||this.cache.put(r,a)}put(i,r){this.cache.put(i,r)}get(i){let r=zt(i);return this.cache.get(r)}};g();y();f();import{Big as Pc}from"big.js";import{TronWeb as wc}from"tronweb";import{Web3 as Cc}from"web3";g();y();f();g();y();f();var dc={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"}]},Ir=dc;g();y();f();g();y();f();g();y();f();import{Big as as}from"big.js";var Ue=class{async checkAllowance(i){let r=await this.getAllowance(i);return as(r).gte(as(i.amount))}};var pc="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",gc="0xdac17f958d2ee523a2206206994597c13d831ec7",fc=1e5,Sn=class extends Ue{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";getAllowance(r){let a=r.token.tokenAddress,o=r.owner,u=r.spender;return this.getAllowanceByTokenAddress(a,o,u)}getAllowanceByTokenAddress(r,a,o){return this.getERC20Contract(r).methods.allowance(a,o).call()}async getTokenBalance(r){return await this.getERC20Contract(r.token.tokenAddress).methods.balanceOf(r.account).call()}async getNativeTokenBalance(r){return(await this.web3.eth.getBalance(r.account)).toString()}async approve(r){if(this.isUsdt(r.tokenAddress)&&await this.getAllowanceByTokenAddress(r.tokenAddress,r.owner,r.spender)!=="0"){let u=await this.buildRawTransactionApprove({...r,amount:"0"});await this.sendRawTransaction(u,r.chainSymbol)}let a=await this.buildRawTransactionApprove(r);return await this.sendRawTransaction(a,r.chainSymbol)}isUsdt(r){return r.toLowerCase()===gc}buildRawTransactionApprove(r){let{tokenAddress:a,spender:o,owner:u,amount:m}=r,h=this.getERC20Contract(a).methods.approve(o,m==null?pc:zn(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=fc: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(Ir.abi,r)}};g();y();f();import{AnchorProvider as yc}from"@project-serum/anchor";import{Connection as hc,PublicKey as Rr}from"@solana/web3.js";var vr=class extends Ue{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";approve(r){throw new de}buildRawTransactionApprove(r){throw new de}buildAnchorProvider(r){let a=new hc(this.solanaRpcUrl,"confirmed"),o=new Rr(r);return new yc(a,{publicKey:o},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(r){throw new de}async getTokenBalance(r){let{account:a,token:o}=r;try{let u=await Qe(new Rr(a),new Rr(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 Rr(r.account))).toString()}};g();y();f();import{Horizon as mI,NotFoundError as Tc}from"@stellar/stellar-sdk";var xr=class extends Ue{constructor(r,a,o){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=o}chainType="SRB";getAllowance(){throw new de}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new M("OriginTokenAddress missing");let[a,o]=r.token.originTokenAddress.split(":"),u=new mI.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),m;try{m=await u.loadAccount(r.account)}catch(b){if(b instanceof Tc)return"0";throw b}let h=m.balances.find(b=>(b.asset_type==="credit_alphanum4"||b.asset_type==="credit_alphanum12")&&b.asset_code==a&&b.asset_issuer==o);return h?.balance?Q(h.balance,H.getChainDecimalsByType(H.getChainProperty(r.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(r){let m=(await new mI.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(r.account)).balances.find(p=>p.asset_type==="native");return m?.balance?Q(m.balance,H.getChainDecimalsByType(H.getChainProperty(r.chainSymbol).chainType)).toFixed():"0"}approve(){throw new de}buildRawTransactionApprove(){throw new de}};g();y();f();import{SuiClient as bc}from"@mysten/sui/client";var kr=class extends Ue{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.suiClient=new bc({url:this.suiRpcUrl})}chainType="SUI";suiClient;approve(r){throw new de}buildRawTransactionApprove(r){throw new de}getAllowance(r){throw new de}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new M("SUI token must contain 'originTokenAddress'");return(await this.suiClient.getBalance({owner:r.account,coinType:r.token.originTokenAddress})).totalBalance}async getNativeTokenBalance(r){let a=await At(o=>this.suiClient.getCoins({owner:r.account,cursor:o}));return a.length===0?"0":a.reduce((o,u)=>o+BigInt(u.balance),BigInt(0)).toString()}};g();y();f();var Sc="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Pn=class extends Ue{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async getAllowance(r){let{token:{tokenAddress:a},owner:o}=r;return(await(await this.getContract(a)).methods.allowance(o,r.spender).call()).toString()}async getTokenBalance(r){return(await(await this.getContract(r.token.tokenAddress)).balanceOf(r.account).call()).toString()}async getNativeTokenBalance(r){return(await this.tronWeb.trx.getBalance(r.account)).toString()}async approve(r){let a=await this.buildRawTransactionApprove(r);return await qn(this.tronWeb,a)}async buildRawTransactionApprove(r){let{tokenAddress:a,spender:o,owner:u,amount:m}=r,p=m==null?Sc:zn(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(Ir.abi,r)}async buildRawTransaction(r,a,o,u,m){let p=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+u},o,m);if(!p?.result?.result)throw new M("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}};var Fr=class{constructor(i,r,a){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a}async getAllowance(i,r){let a=await this.getChainTokenService(i.token.chainSymbol,i.owner,r).getAllowance(i);return J(a,i.token.decimals).toFixed()}async checkAllowance(i,r){return q(i.amount),ee("amount",i.amount,i.token.decimals),this.getChainTokenService(i.token.chainSymbol,i.owner,r).checkAllowance(this.prepareCheckAllowanceParams(i))}async approve(i,r){return r.amount&&(q(r.amount),ee("amount",r.amount,r.token.decimals)),this.getChainTokenService(r.token.chainSymbol,r.owner,i).approve(this.prepareApproveParams(r))}async buildRawTransactionApprove(i,r){return i.amount&&(q(i.amount),ee("amount",i.amount,i.token.decimals)),this.getChainTokenService(i.token.chainSymbol,i.owner,r).buildRawTransactionApprove(this.prepareApproveParams(i))}async getTokenBalance(i,r){let a=await this.getChainTokenService(i.token.chainSymbol,i.account,r).getTokenBalance(i);return i.token.decimals?J(a,i.token.decimals).toFixed():a}async getNativeTokenBalance(i,r){let a=await this.getChainTokenService(i.chainSymbol,i.account,r).getNativeTokenBalance(i);return{int:a,float:J(a,H.getChainDecimalsByType(H.getChainProperty(i.chainSymbol).chainType)).toFixed()}}getChainTokenService(i,r,a){switch(H.getChainProperty(i).chainType){case"EVM":{if(a)return new Sn(a,this.api);{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i);return new Sn(new Cc(o),this.api)}}case"TRX":{if(a)return new Pn(a,this.api);{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i),u=new wc({fullHost:o});return u.setAddress(r),new Pn(u,this.api)}}case"SOLANA":{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i);return new vr(o,this.api)}case"SRB":return new xr(this.nodeRpcUrlsConfig,this.params,this.api);case"SUI":return new kr(this.nodeRpcUrlsConfig.getNodeRpcUrl(i),this.api)}}prepareCheckAllowanceParams(i){return{...i,amount:Q(i.amount,i.token.decimals)}}prepareApproveParams(i){return{tokenAddress:i.token.tokenAddress,owner:i.owner,spender:i.spender,chainSymbol:i.token.chainSymbol,amount:i.amount==null?void 0:Pc(i.amount).toFixed()}}};var wn=class{constructor(i){this.nodeRpcUrls=i}getNodeRpcUrl(i){let r=this.nodeRpcUrls[i];if(r!==void 0)return r;throw new Fn(i)}},Mr=class{api;tokenService;params;bridge;pool;constructor(i,r=Rn){H.addChainsProperties(r.additionalChainsProperties);let a=new br(r),o=new Pr(a),u=new wr(o),m=new Br(u);this.api=new Cr(m,r),this.tokenService=new Fr(this.api,i,r),this.bridge=new er(this.api,i,r,this.tokenService),this.pool=new fr(this.api,i,r,this.tokenService),this.params=r}async chainDetailsMap(i){return this.api.getChainDetailsMap(i)}async tokens(i){return this.api.tokens(i)}async tokensByChain(i,r){let o=(await this.api.getChainDetailsMap(r))[i];return o?o.tokens:[]}async getTransferStatus(i,r){return this.api.getTransferStatus(i,r)}async getGasBalance(i,r){return this.api.getGasBalance(i,r)}async checkAddress(){return new Promise(i=>{i({status:"OK",gasBalance:null})})}async getPendingStatusInfo(i,r,a,o){q(i);let u;r=="float"?(ee("amount",i,a.decimals),u=Q(i,a.decimals).toFixed()):u=i;let m=it(u,a,await pe(this.api,a)),p=await pe(this.api,o),h=this.getAmountFromVUsdFormatted(m,o,p),b,S=await this.api.getPendingInfo();for(let w in S[o.chainSymbol]){let k=S[o.chainSymbol];if(!k)throw new M("Cannot find pending info for "+o.chainSymbol);b=k[w]}if(b){let w=Ki(b.totalSentAmount,p),k=this.getAmountFromVUsdFormatted(m,o,w),B;return ge(k.int).gt(h.int)?B={min:h,max:k}:B={min:k,max:h},{pendingTxs:b.pendingTxs,pendingAmount:{int:Le(b.totalSentAmount,3,o.decimals).toFixed(0),float:J(b.totalSentAmount,3).toFixed()},estimatedAmount:B}}return{pendingTxs:0,pendingAmount:{int:"0",float:"0"},estimatedAmount:{min:h,max:h}}}async getTokenBalance(i,r){return this.tokenService.getTokenBalance(i,r)}async getNativeTokenBalance(i,r){return this.tokenService.getNativeTokenBalance(i,r)}async calculateFeePercentOnSourceChain(i,r){q(i),ee("amountFloat",i,r.decimals);let a=Q(i,r.decimals);if(a.eq(0))return 0;let o=it(a,r,await pe(this.api,r)),u=Ne(o,r.decimals);return Jr(a,u)}async calculateFeePercentOnDestinationChain(i,r,a){q(i),ee("amountFloat",i,r.decimals);let o=Q(i,r.decimals);if(o.eq(0))return 0;let u=it(o,r,await pe(this.api,r)),m=on(u,a,await pe(this.api,a)),p=Ne(u,a.decimals);return Jr(p,m)}async getAmountToBeReceivedAndGasFeeOptions(i,r,a,o){return q(i),ee("amountToSendFloat",i,r.decimals),{amountToSendFloat:ge(i).toFixed(),amountToBeReceivedFloat:await this.getAmountToBeReceived(i,r,a,o),gasFeeOptions:await this.getGasFeeOptions(r,a,o)}}async getAmountToSendAndGasFeeOptions(i,r,a,o){return q(i),ee("amountToBeReceivedFloat",i,a.decimals),{amountToSendFloat:await this.getAmountToSend(i,r,a,o),amountToBeReceivedFloat:ge(i).toFixed(),gasFeeOptions:await this.getGasFeeOptions(r,a,o)}}async getAmountToBeReceived(i,r,a,o){return this.getAmountToBeReceivedCompute(i,r,a,o,async()=>await pe(this.api,r),async()=>await pe(this.api,a))}async getAmountToBeReceivedFromChain(i,r,a,o,u,m){return this.getAmountToBeReceivedCompute(i,r,a,o,async()=>await this.pool.getPoolInfoFromChain(r,u),async()=>await this.pool.getPoolInfoFromChain(a,m))}async getAmountToBeReceivedCompute(i,r,a,o=1,u,m){switch(o){case 1:case 2:return this.getAmountToBeReceivedComputeWithPools(i,r,a,await u(),await m());case 3:case 4:return this.getAmountToBeReceivedComputeCctp(i,r,a,o);case 5:return this.getAmountToBeReceivedComputeOft(i,r,a)}}getAmountToBeReceivedComputeWithPools(i,r,a,o,u){q(i),ee("amountToSendFloat",i,r.decimals);let m=Q(i,r.decimals),p=it(m,r,o);return this.getAmountFromVUsdFormatted(p,a,u).float}getAmountToBeReceivedComputeCctp(i,r,a,o){q(i),ee("amountToSendFloat",i,r.decimals);let u=Q(i,r.decimals);switch(o){case 3:{if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new Ie("Such route does not support CCTP protocol");let m=u.mul(ge(1).minus(r.cctpFeeShare)).round(0,ge.roundUp),p=Le(m,r.decimals,a.decimals).round(0);return J(p,a.decimals).toFixed()}case 4:{if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new Ie("Such route does not support CCTP V2 protocol");let m=u.mul(ge(1).minus(r.cctpV2FeeShare)).round(0,ge.roundUp),p=Le(m,r.decimals,a.decimals).round(0);return J(p,a.decimals).toFixed()}}}async getAmountToBeReceivedComputeOft(i,r,a){q(i),ee("amountToSendFloat",i,r.decimals);let o=Q(i,r.decimals);if(!r.oftBridgeAddress||!a.oftBridgeAddress||r.oftId!==a.oftId)throw new Re("Such route does not support OFT protocol");let{adminFeeShareWithExtras:u}=await this.api.getReceiveTransactionCost({sourceChainId:r.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:5,sourceToken:r.tokenAddress});if(!u)throw new Re("Such route does not support OFT protocol");let m=o.mul(ge(1).minus(u)).round(0,ge.roundUp),p=Le(m,r.decimals,a.decimals).round(0);return J(p,a.decimals).toFixed()}async getAmountToSend(i,r,a,o){return this.getAmountToSendCompute(i,r,a,o,()=>pe(this.api,r),()=>pe(this.api,a))}async getAmountToSendFromChain(i,r,a,o,u,m){return this.getAmountToSendCompute(i,r,a,o,()=>this.pool.getPoolInfoFromChain(r,u),()=>this.pool.getPoolInfoFromChain(a,m))}async getAmountToSendCompute(i,r,a,o=1,u,m){switch(o){case 1:case 2:return this.getAmountToSendComputeWithPools(i,r,a,await u(),await m());case 3:case 4:return this.getAmountToSendComputeCctp(i,r,a,o);case 5:return this.getAmountToSendComputeOft(i,r,a)}}getAmountToSendComputeWithPools(i,r,a,o,u){q(i),ee("amountToBeReceivedFloat",i,a.decimals);let m=Q(i,a.decimals),p=Qi(m,a,u),h=Hi(p,r,o);if(ge(h).lte(0))throw new mt;return J(h,r.decimals).toFixed()}getAmountToSendComputeCctp(i,r,a,o){q(i),ee("amountToBeReceivedFloat",i,a.decimals);let u=Q(i,a.decimals);switch(o){case 3:{if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new Ie("Such route does not support CCTP protocol");let m=u.div(ge(1).minus(r.cctpFeeShare)).round(0,ge.roundDown),p=Le(m,a.decimals,r.decimals).round(0);return J(p,r.decimals).toFixed()}case 4:{if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new Ie("Such route does not support CCTP V2 protocol");let m=u.div(ge(1).minus(r.cctpV2FeeShare)).round(0,ge.roundDown),p=Le(m,a.decimals,r.decimals).round(0);return J(p,r.decimals).toFixed()}}}async getAmountToSendComputeOft(i,r,a){q(i),ee("amountToBeReceivedFloat",i,a.decimals);let o=Q(i,a.decimals);if(!r.oftId||!a.oftId||!r.oftBridgeAddress||r.oftId!==a.oftId)throw new Re("Such route does not support OFT protocol");let{adminFeeShareWithExtras:u}=await this.api.getReceiveTransactionCost({sourceChainId:r.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:5,sourceToken:r.tokenAddress});if(!u)throw new Re("Such route does not support OFT protocol");let m=o.div(ge(1).minus(u)).round(0,ge.roundDown),p=Le(m,a.decimals,r.decimals).round(0);return J(p,r.decimals).toFixed()}async getGasFeeOptions(i,r,a){return Lr(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 qi(i)}async getExtraGasMaxLimits(i,r,a){return await Xr(i,r,a,this.api)}async getVUsdFromAmount(i,r,a){q(i);let o;r=="float"?(ee("amount",i,a.decimals),o=Q(i,a.decimals).toFixed()):o=i;let u=it(o,a,await pe(this.api,a));return{int:u,float:J(u,3).toFixed()}}async getAmountFromVUsd(i,r){return this.getAmountFromVUsdFormatted(i,r,await pe(this.api,r))}getAmountFromVUsdFormatted(i,r,a){q(i);let o=on(i,r,a);if(ge(o).lt(0))throw new mt;return{int:o,float:J(o,r.decimals).toFixed()}}async swapAndBridgeFeeCalculation(i,r,a){return Ya(i,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await pe(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await pe(this.api,a)})}async swapAndBridgeFeeCalculationReverse(i,r,a){let o=Ka(i,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await pe(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await pe(this.api,a)}),u=o.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if(ge(u).lt(0))throw new mt;return o}async getSendAmountDetails(i,r,a,o){q(i);let u;return r=="float"?(ee("amount",i,a.decimals),u=Q(i,a.decimals).toFixed()):u=i,Ha(u,a,await pe(this.api,a),o,await pe(this.api,o))}};function Bc(s){return"solanaRpcUrl"in s}var ss=class{params;bridge;pool;utils;service;constructor(i,r=Rn){let a;Bc(i)?a=new wn({SOL:i.solanaRpcUrl,TRX:i.tronRpcUrl}):a=new wn(i),this.service=new Mr(a,r),this.bridge=this.service.bridge,this.pool=this.service.pool,this.utils=new Tr(a,r),this.params=r}async chainDetailsMap(i="swap"){return this.service.chainDetailsMap(i)}async tokens(i="swap"){return this.service.tokens(i)}async tokensByChain(i,r="swap"){return this.service.tokensByChain(i,r)}async getTransferStatus(i,r){return this.service.getTransferStatus(i,r)}async getGasBalance(i,r){return this.service.getGasBalance(i,r)}async checkAddress(i,r,a){return await this.service.checkAddress()}async getPendingStatusInfo(i,r,a,o){return this.service.getPendingStatusInfo(i,r,a,o)}async getTokenBalance(i,r){return this.service.getTokenBalance(i,r)}async getNativeTokenBalance(i,r){return this.service.getNativeTokenBalance(i,r)}async calculateFeePercentOnSourceChain(i,r){return this.service.calculateFeePercentOnSourceChain(i,r)}async calculateFeePercentOnDestinationChain(i,r,a){return this.service.calculateFeePercentOnDestinationChain(i,r,a)}async getAmountToBeReceivedAndGasFeeOptions(i,r,a,o){return this.service.getAmountToBeReceivedAndGasFeeOptions(i,r,a,o)}async getAmountToSendAndGasFeeOptions(i,r,a,o){return this.service.getAmountToSendAndGasFeeOptions(i,r,a,o)}async getAmountToBeReceived(i,r,a,o=1){return this.service.getAmountToBeReceived(i,r,a,o)}async getAmountToBeReceivedFromChain(i,r,a,o=1,u,m){return this.service.getAmountToBeReceivedFromChain(i,r,a,o,u,m)}getAmountToBeReceivedFromPools(i,r,a,o,u,m=1){switch(m){case 1:case 2:return this.service.getAmountToBeReceivedComputeWithPools(i,r,a,o,u);case 3:case 4:return this.service.getAmountToBeReceivedComputeCctp(i,r,a,m)}}async getAmountToSend(i,r,a,o=1){return this.service.getAmountToSend(i,r,a,o)}async getAmountToSendFromChain(i,r,a,o=1,u,m){return this.service.getAmountToSendFromChain(i,r,a,o,u,m)}getAmountToSendFromPools(i,r,a,o,u,m=1){switch(m){case 1:case 2:return this.service.getAmountToSendComputeWithPools(i,r,a,o,u);case 3:case 4:return this.service.getAmountToSendComputeCctp(i,r,a,m)}}async getGasFeeOptions(i,r,a){return this.service.getGasFeeOptions(i,r,a)}getAverageTransferTime(i,r,a){return this.service.getAverageTransferTime(i,r,a)}async getPoolInfoByToken(i){return this.service.getPoolInfoByToken(i)}async refreshPoolInfo(i){return this.service.refreshPoolInfo(i)}aprInPercents(i){return this.service.aprInPercents(i)}async getExtraGasMaxLimits(i,r,a=1){return this.service.getExtraGasMaxLimits(i,r,a)}async getVUsdFromAmount(i,r,a){return this.service.getVUsdFromAmount(i,r,a)}async getAmountFromVUsd(i,r){return this.service.getAmountFromVUsd(i,r)}async swapAndBridgeFeeCalculation(i,r,a){return this.service.swapAndBridgeFeeCalculation(i,r,a)}async swapAndBridgeFeeCalculationReverse(i,r,a){return this.service.swapAndBridgeFeeCalculationReverse(i,r,a)}async getSendAmountDetails(i,r,a,o){return this.service.getSendAmountDetails(i,r,a,o)}};export{Ur as AddressStatus,ss as AllbridgeCoreSdk,Nn as AmountFormat,Ut as AmountNotEnoughError,kn as ArgumentInvalidDecimalsError,Ie as CCTPDoesNotSupportedError,$e as ChainSymbol,ie as ChainType,ws as ErrorCode,xn as ExtraGasMaxLimitExceededError,Ft as FeePaymentMethod,mt as InsufficientPoolLiquidityError,ut as InvalidAmountError,tn as InvalidGasFeePaymentOptionError,vn as InvalidMessengerOptionError,Vt as InvalidTxError,he as JupiterError,Je as Messenger,de as MethodNotSupportedError,Fn as NodeRpcUrlNotInitializedError,Re as OFTDoesNotSupportedError,M as SdkError,ue as SdkRootError,Yr as SolanaAutoTxFee,rn as TimeoutError,Mn as TxTooLargeError,nn as VerifyTxError,Rn as mainnet,Yc as nodeRpcUrlsDefault,Xc as nodeUrlsDefault};
|
|
2
2
|
/*! Bundled license information:
|
|
3
3
|
|
|
4
4
|
@jspm/core/nodelibs/browser/chunk-DtuTasat.js:
|