@allbridge/bridge-core-sdk 3.24.0 → 3.25.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +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/core-api-mapper.js +2 -1
- package/dist/src/client/core-api/core-api-mapper.js.map +1 -1
- package/dist/src/client/core-api/core-api.model.d.ts +6 -1
- 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 +2 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/index.d.ts +4 -0
- package/dist/src/models/index.js +4 -1
- package/dist/src/models/index.js.map +1 -1
- package/dist/src/services/index.d.ts +2 -0
- package/dist/src/services/index.js +3 -0
- package/dist/src/services/index.js.map +1 -1
- package/dist/src/services/models/abi/PortfolioToken.d.ts +589 -0
- package/dist/src/services/models/abi/PortfolioToken.js +770 -0
- package/dist/src/services/models/abi/PortfolioToken.js.map +1 -0
- package/dist/src/services/yield/evm/index.d.ts +24 -0
- package/dist/src/services/yield/evm/index.js +64 -0
- package/dist/src/services/yield/evm/index.js.map +1 -0
- package/dist/src/services/yield/index.d.ts +65 -0
- package/dist/src/services/yield/index.js +133 -0
- package/dist/src/services/yield/index.js.map +1 -0
- package/dist/src/services/yield/models/index.d.ts +2 -0
- package/dist/src/services/yield/models/index.js +21 -0
- package/dist/src/services/yield/models/index.js.map +1 -0
- package/dist/src/services/yield/models/yield.d.ts +13 -0
- package/dist/src/services/yield/models/yield.js +7 -0
- package/dist/src/services/yield/models/yield.js.map +1 -0
- package/dist/src/services/yield/models/yield.model.d.ts +94 -0
- package/dist/src/services/yield/models/yield.model.js +3 -0
- package/dist/src/services/yield/models/yield.model.js.map +1 -0
- package/dist/src/services/yield/raw-yield-transaction-builder.d.ts +36 -0
- package/dist/src/services/yield/raw-yield-transaction-builder.js +42 -0
- package/dist/src/services/yield/raw-yield-transaction-builder.js.map +1 -0
- package/dist/src/services/yield/trx/index.d.ts +18 -0
- package/dist/src/services/yield/trx/index.js +70 -0
- package/dist/src/services/yield/trx/index.js.map +1 -0
- package/dist/src/services/yield/validations.d.ts +15 -0
- package/dist/src/services/yield/validations.js +25 -0
- package/dist/src/services/yield/validations.js.map +1 -0
- package/dist/src/tokens-info/tokens-info.model.d.ts +8 -6
- 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 +1 -1
package/dist/browser/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var fs=Object.create;var ki=Object.defineProperty;var ys=Object.getOwnPropertyDescriptor;var hs=Object.getOwnPropertyNames;var Ts=Object.getPrototypeOf,bs=Object.prototype.hasOwnProperty;var Bt=(s,i)=>()=>(s&&(i=s(s=0)),i);var Er=(s,i)=>()=>(i||s((i={exports:{}}).exports,i),i.exports);var Ss=(s,i,r,a)=>{if(i&&typeof i=="object"||typeof i=="function")for(let o of hs(i))!bs.call(s,o)&&o!==r&&ki(s,o,{get:()=>i[o],enumerable:!(a=ys(i,o))||a.enumerable});return s};var He=(s,i,r)=>(r=s!=null?fs(Ts(s)):{},Ss(i||!s||!s.__esModule?ki(r,"default",{value:s,enumerable:!0}):r,s));var g=Bt(()=>{});function Ps(s,i){this.fun=s,this.array=i}function xi(s){var i=Math.floor((Date.now()-It.now())*.001),r=It.now()*.001,a=Math.floor(r)+i,o=Math.floor(r%1*1e9);return s&&(a=a-s[0],o=o-s[1],o<0&&(a--,o+=Gr)),[a,o]}var xc,It,Ur,Gr,Fi=Bt(()=>{g();y();f();Ps.prototype.run=function(){this.fun.apply(null,this.array)};xc={PATH:"/usr/bin",LANG:typeof navigator<"u"?navigator.language+".UTF-8":void 0,PWD:"/",HOME:"/home",TMP:"/tmp"},It={now:typeof performance<"u"?performance.now.bind(performance):void 0,timing:typeof performance<"u"?performance.timing:void 0};It.now===void 0&&(Ur=Date.now(),It.timing&&It.timing.navigationStart&&(Ur=It.timing.navigationStart),It.now=()=>Date.now()-Ur);Gr=1e9;xi.bigint=function(s){var i=xi(s);return typeof BigInt>"u"?i[0]*Gr+i[1]:BigInt(i[0]*Gr)+BigInt(i[1])}});var f=Bt(()=>{Fi()});function ws(){if(Mi)return cn;Mi=!0,cn.byteLength=p,cn.toByteArray=T,cn.fromByteArray=x;for(var s=[],i=[],r=typeof Uint8Array<"u"?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,u=a.length;o<u;++o)s[o]=a[o],i[a.charCodeAt(o)]=o;i[45]=62,i[95]=63;function m(I){var F=I.length;if(F%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var v=I.indexOf("=");v===-1&&(v=F);var N=v===F?0:4-v%4;return[v,N]}function p(I){var F=m(I),v=F[0],N=F[1];return(v+N)*3/4-N}function h(I,F,v){return(F+v)*3/4-v}function T(I){var F,v=m(I),N=v[0],M=v[1],D=new r(h(I,N,M)),W=0,U=M>0?N-4:N,j;for(j=0;j<U;j+=4)F=i[I.charCodeAt(j)]<<18|i[I.charCodeAt(j+1)]<<12|i[I.charCodeAt(j+2)]<<6|i[I.charCodeAt(j+3)],D[W++]=F>>16&255,D[W++]=F>>8&255,D[W++]=F&255;return M===2&&(F=i[I.charCodeAt(j)]<<2|i[I.charCodeAt(j+1)]>>4,D[W++]=F&255),M===1&&(F=i[I.charCodeAt(j)]<<10|i[I.charCodeAt(j+1)]<<4|i[I.charCodeAt(j+2)]>>2,D[W++]=F>>8&255,D[W++]=F&255),D}function S(I){return s[I>>18&63]+s[I>>12&63]+s[I>>6&63]+s[I&63]}function P(I,F,v){for(var N,M=[],D=F;D<v;D+=3)N=(I[D]<<16&16711680)+(I[D+1]<<8&65280)+(I[D+2]&255),M.push(S(N));return M.join("")}function x(I){for(var F,v=I.length,N=v%3,M=[],D=16383,W=0,U=v-N;W<U;W+=D)M.push(P(I,W,W+D>U?U:W+D));return N===1?(F=I[v-1],M.push(s[F>>2]+s[F<<4&63]+"==")):N===2&&(F=(I[v-2]<<8)+I[v-1],M.push(s[F>>10]+s[F>>4&63]+s[F<<2&63]+"=")),M.join("")}return cn}function Cs(){if(Oi)return On;Oi=!0;return On.read=function(s,i,r,a,o){var u,m,p=o*8-a-1,h=(1<<p)-1,T=h>>1,S=-7,P=r?o-1:0,x=r?-1:1,I=s[i+P];for(P+=x,u=I&(1<<-S)-1,I>>=-S,S+=p;S>0;u=u*256+s[i+P],P+=x,S-=8);for(m=u&(1<<-S)-1,u>>=-S,S+=a;S>0;m=m*256+s[i+P],P+=x,S-=8);if(u===0)u=1-T;else{if(u===h)return m?NaN:(I?-1:1)*(1/0);m=m+Math.pow(2,a),u=u-T}return(I?-1:1)*m*Math.pow(2,u-a)},On.write=function(s,i,r,a,o,u){var m,p,h,T=u*8-o-1,S=(1<<T)-1,P=S>>1,x=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,I=a?0:u-1,F=a?1:-1,v=i<0||i===0&&1/i<0?1:0;for(i=Math.abs(i),isNaN(i)||i===1/0?(p=isNaN(i)?1:0,m=S):(m=Math.floor(Math.log(i)/Math.LN2),i*(h=Math.pow(2,-m))<1&&(m--,h*=2),m+P>=1?i+=x/h:i+=x*Math.pow(2,1-P),i*h>=2&&(m++,h/=2),m+P>=S?(p=0,m=S):m+P>=1?(p=(i*h-1)*Math.pow(2,o),m=m+P):(p=i*Math.pow(2,P-1)*Math.pow(2,o),m=0));o>=8;s[r+I]=p&255,I+=F,p/=256,o-=8);for(m=m<<o|p,T+=o;T>0;s[r+I]=m&255,I+=F,m/=256,T-=8);s[r+I-F]|=v*128},On}function Ni(){if(Di)return Rt;Di=!0;let s=ws(),i=Cs(),r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Rt.Buffer=m,Rt.SlowBuffer=M,Rt.INSPECT_MAX_BYTES=50;let a=2147483647;Rt.kMaxLength=a,m.TYPED_ARRAY_SUPPORT=o(),!m.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function o(){try{let l=new Uint8Array(1),c={foo:function(){return 42}};return Object.setPrototypeOf(c,Uint8Array.prototype),Object.setPrototypeOf(l,c),l.foo()===42}catch{return!1}}Object.defineProperty(m.prototype,"parent",{enumerable:!0,get:function(){if(m.isBuffer(this))return this.buffer}}),Object.defineProperty(m.prototype,"offset",{enumerable:!0,get:function(){if(m.isBuffer(this))return this.byteOffset}});function u(l){if(l>a)throw new RangeError('The value "'+l+'" is invalid for option "size"');let c=new Uint8Array(l);return Object.setPrototypeOf(c,m.prototype),c}function m(l,c,A){if(typeof l=="number"){if(typeof c=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return S(l)}return p(l,c,A)}m.poolSize=8192;function p(l,c,A){if(typeof l=="string")return P(l,c);if(ArrayBuffer.isView(l))return I(l);if(l==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof l);if(rt(l,ArrayBuffer)||l&&rt(l.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(rt(l,SharedArrayBuffer)||l&&rt(l.buffer,SharedArrayBuffer)))return F(l,c,A);if(typeof l=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let d=l.valueOf&&l.valueOf();if(d!=null&&d!==l)return m.from(d,c,A);let b=v(l);if(b)return b;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof l[Symbol.toPrimitive]=="function")return m.from(l[Symbol.toPrimitive]("string"),c,A);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof l)}m.from=function(l,c,A){return p(l,c,A)},Object.setPrototypeOf(m.prototype,Uint8Array.prototype),Object.setPrototypeOf(m,Uint8Array);function h(l){if(typeof l!="number")throw new TypeError('"size" argument must be of type number');if(l<0)throw new RangeError('The value "'+l+'" is invalid for option "size"')}function T(l,c,A){return h(l),l<=0?u(l):c!==void 0?typeof A=="string"?u(l).fill(c,A):u(l).fill(c):u(l)}m.alloc=function(l,c,A){return T(l,c,A)};function S(l){return h(l),u(l<0?0:N(l)|0)}m.allocUnsafe=function(l){return S(l)},m.allocUnsafeSlow=function(l){return S(l)};function P(l,c){if((typeof c!="string"||c==="")&&(c="utf8"),!m.isEncoding(c))throw new TypeError("Unknown encoding: "+c);let A=D(l,c)|0,d=u(A),b=d.write(l,c);return b!==A&&(d=d.slice(0,b)),d}function x(l){let c=l.length<0?0:N(l.length)|0,A=u(c);for(let d=0;d<c;d+=1)A[d]=l[d]&255;return A}function I(l){if(rt(l,Uint8Array)){let c=new Uint8Array(l);return F(c.buffer,c.byteOffset,c.byteLength)}return x(l)}function F(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 v(l){if(m.isBuffer(l)){let c=N(l.length)|0,A=u(c);return A.length===0||l.copy(A,0,0,c),A}if(l.length!==void 0)return typeof l.length!="number"||Wr(l.length)?u(0):x(l);if(l.type==="Buffer"&&Array.isArray(l.data))return x(l.data)}function N(l){if(l>=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return l|0}function M(l){return+l!=l&&(l=0),m.alloc(+l)}m.isBuffer=function(c){return c!=null&&c._isBuffer===!0&&c!==m.prototype},m.compare=function(c,A){if(rt(c,Uint8Array)&&(c=m.from(c,c.offset,c.byteLength)),rt(A,Uint8Array)&&(A=m.from(A,A.offset,A.byteLength)),!m.isBuffer(c)||!m.isBuffer(A))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(c===A)return 0;let d=c.length,b=A.length;for(let w=0,B=Math.min(d,b);w<B;++w)if(c[w]!==A[w]){d=c[w],b=A[w];break}return d<b?-1:b<d?1:0},m.isEncoding=function(c){switch(String(c).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},m.concat=function(c,A){if(!Array.isArray(c))throw new TypeError('"list" argument must be an Array of Buffers');if(c.length===0)return m.alloc(0);let d;if(A===void 0)for(A=0,d=0;d<c.length;++d)A+=c[d].length;let b=m.allocUnsafe(A),w=0;for(d=0;d<c.length;++d){let B=c[d];if(rt(B,Uint8Array))w+B.length>b.length?(m.isBuffer(B)||(B=m.from(B)),B.copy(b,w)):Uint8Array.prototype.set.call(b,B,w);else if(m.isBuffer(B))B.copy(b,w);else throw new TypeError('"list" argument must be an Array of Buffers');w+=B.length}return b};function D(l,c){if(m.isBuffer(l))return l.length;if(ArrayBuffer.isView(l)||rt(l,ArrayBuffer))return l.byteLength;if(typeof l!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof l);let A=l.length,d=arguments.length>2&&arguments[2]===!0;if(!d&&A===0)return 0;let b=!1;for(;;)switch(c){case"ascii":case"latin1":case"binary":return A;case"utf8":case"utf-8":return Nr(l).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A*2;case"hex":return A>>>1;case"base64":return vi(l).length;default:if(b)return d?-1:Nr(l).length;c=(""+c).toLowerCase(),b=!0}}m.byteLength=D;function W(l,c,A){let d=!1;if((c===void 0||c<0)&&(c=0),c>this.length||((A===void 0||A>this.length)&&(A=this.length),A<=0)||(A>>>=0,c>>>=0,A<=c))return"";for(l||(l="utf8");;)switch(l){case"hex":return _e(this,c,A);case"utf8":case"utf-8":return 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 U(l,c,A){let d=l[c];l[c]=l[A],l[A]=d}m.prototype.swap16=function(){let c=this.length;if(c%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let A=0;A<c;A+=2)U(this,A,A+1);return this},m.prototype.swap32=function(){let c=this.length;if(c%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let A=0;A<c;A+=4)U(this,A,A+3),U(this,A+1,A+2);return this},m.prototype.swap64=function(){let c=this.length;if(c%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let A=0;A<c;A+=8)U(this,A,A+7),U(this,A+1,A+6),U(this,A+2,A+5),U(this,A+3,A+4);return this},m.prototype.toString=function(){let c=this.length;return c===0?"":arguments.length===0?fe(this,0,c):W.apply(this,arguments)},m.prototype.toLocaleString=m.prototype.toString,m.prototype.equals=function(c){if(!m.isBuffer(c))throw new TypeError("Argument must be a Buffer");return this===c?!0:m.compare(this,c)===0},m.prototype.inspect=function(){let c="",A=Rt.INSPECT_MAX_BYTES;return c=this.toString("hex",0,A).replace(/(.{2})/g,"$1 ").trim(),this.length>A&&(c+=" ... "),"<Buffer "+c+">"},r&&(m.prototype[r]=m.prototype.inspect),m.prototype.compare=function(c,A,d,b,w){if(rt(c,Uint8Array)&&(c=m.from(c,c.offset,c.byteLength)),!m.isBuffer(c))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof c);if(A===void 0&&(A=0),d===void 0&&(d=c?c.length:0),b===void 0&&(b=0),w===void 0&&(w=this.length),A<0||d>c.length||b<0||w>this.length)throw new RangeError("out of range index");if(b>=w&&A>=d)return 0;if(b>=w)return-1;if(A>=d)return 1;if(A>>>=0,d>>>=0,b>>>=0,w>>>=0,this===c)return 0;let B=w-b,$=d-A,ae=Math.min(B,$),ne=this.slice(b,w),se=c.slice(A,d);for(let te=0;te<ae;++te)if(ne[te]!==se[te]){B=ne[te],$=se[te];break}return B<$?-1:$<B?1:0};function j(l,c,A,d,b){if(l.length===0)return-1;if(typeof A=="string"?(d=A,A=0):A>2147483647?A=2147483647:A<-2147483648&&(A=-2147483648),A=+A,Wr(A)&&(A=b?0:l.length-1),A<0&&(A=l.length+A),A>=l.length){if(b)return-1;A=l.length-1}else if(A<0)if(b)A=0;else return-1;if(typeof c=="string"&&(c=m.from(c,d)),m.isBuffer(c))return c.length===0?-1:L(l,c,A,d,b);if(typeof c=="number")return c=c&255,typeof Uint8Array.prototype.indexOf=="function"?b?Uint8Array.prototype.indexOf.call(l,c,A):Uint8Array.prototype.lastIndexOf.call(l,c,A):L(l,[c],A,d,b);throw new TypeError("val must be string, number or Buffer")}function L(l,c,A,d,b){let w=1,B=l.length,$=c.length;if(d!==void 0&&(d=String(d).toLowerCase(),d==="ucs2"||d==="ucs-2"||d==="utf16le"||d==="utf-16le")){if(l.length<2||c.length<2)return-1;w=2,B/=2,$/=2,A/=2}function ae(se,te){return w===1?se[te]:se.readUInt16BE(te*w)}let ne;if(b){let se=-1;for(ne=A;ne<B;ne++)if(ae(l,ne)===ae(c,se===-1?0:ne-se)){if(se===-1&&(se=ne),ne-se+1===$)return se*w}else se!==-1&&(ne-=ne-se),se=-1}else for(A+$>B&&(A=B-$),ne=A;ne>=0;ne--){let se=!0;for(let te=0;te<$;te++)if(ae(l,ne+te)!==ae(c,te)){se=!1;break}if(se)return ne}return-1}m.prototype.includes=function(c,A,d){return this.indexOf(c,A,d)!==-1},m.prototype.indexOf=function(c,A,d){return j(this,c,A,d,!0)},m.prototype.lastIndexOf=function(c,A,d){return j(this,c,A,d,!1)};function we(l,c,A,d){A=Number(A)||0;let b=l.length-A;d?(d=Number(d),d>b&&(d=b)):d=b;let w=c.length;d>w/2&&(d=w/2);let B;for(B=0;B<d;++B){let $=parseInt(c.substr(B*2,2),16);if(Wr($))return B;l[A+B]=$}return B}function Ae(l,c,A,d){return Mn(Nr(c,l.length-A),l,A,d)}function Ve(l,c,A,d){return Mn(ls(c),l,A,d)}function je(l,c,A,d){return Mn(vi(c),l,A,d)}function Ke(l,c,A,d){return Mn(ds(c,l.length-A),l,A,d)}m.prototype.write=function(c,A,d,b){if(A===void 0)b="utf8",d=this.length,A=0;else if(d===void 0&&typeof A=="string")b=A,d=this.length,A=0;else if(isFinite(A))A=A>>>0,isFinite(d)?(d=d>>>0,b===void 0&&(b="utf8")):(b=d,d=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let w=this.length-A;if((d===void 0||d>w)&&(d=w),c.length>0&&(d<0||A<0)||A>this.length)throw new RangeError("Attempt to write outside buffer bounds");b||(b="utf8");let B=!1;for(;;)switch(b){case"hex":return 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(B)throw new TypeError("Unknown encoding: "+b);b=(""+b).toLowerCase(),B=!0}},m.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Me(l,c,A){return c===0&&A===l.length?s.fromByteArray(l):s.fromByteArray(l.slice(c,A))}function fe(l,c,A){A=Math.min(l.length,A);let d=[],b=c;for(;b<A;){let w=l[b],B=null,$=w>239?4:w>223?3:w>191?2:1;if(b+$<=A){let ae,ne,se,te;switch($){case 1:w<128&&(B=w);break;case 2:ae=l[b+1],(ae&192)===128&&(te=(w&31)<<6|ae&63,te>127&&(B=te));break;case 3:ae=l[b+1],ne=l[b+2],(ae&192)===128&&(ne&192)===128&&(te=(w&15)<<12|(ae&63)<<6|ne&63,te>2047&&(te<55296||te>57343)&&(B=te));break;case 4:ae=l[b+1],ne=l[b+2],se=l[b+3],(ae&192)===128&&(ne&192)===128&&(se&192)===128&&(te=(w&15)<<18|(ae&63)<<12|(ne&63)<<6|se&63,te>65535&&te<1114112&&(B=te))}}B===null?(B=65533,$=1):B>65535&&(B-=65536,d.push(B>>>10&1023|55296),B=56320|B&1023),d.push(B),b+=$}return Oe(d)}let Ce=4096;function Oe(l){let c=l.length;if(c<=Ce)return String.fromCharCode.apply(String,l);let A="",d=0;for(;d<c;)A+=String.fromCharCode.apply(String,l.slice(d,d+=Ce));return A}function Be(l,c,A){let d="";A=Math.min(l.length,A);for(let b=c;b<A;++b)d+=String.fromCharCode(l[b]&127);return d}function Ze(l,c,A){let d="";A=Math.min(l.length,A);for(let b=c;b<A;++b)d+=String.fromCharCode(l[b]);return d}function _e(l,c,A){let d=l.length;(!c||c<0)&&(c=0),(!A||A<0||A>d)&&(A=d);let b="";for(let w=c;w<A;++w)b+=ps[l[w]];return b}function De(l,c,A){let d=l.slice(c,A),b="";for(let w=0;w<d.length-1;w+=2)b+=String.fromCharCode(d[w]+d[w+1]*256);return b}m.prototype.slice=function(c,A){let d=this.length;c=~~c,A=A===void 0?d:~~A,c<0?(c+=d,c<0&&(c=0)):c>d&&(c=d),A<0?(A+=d,A<0&&(A=0)):A>d&&(A=d),A<c&&(A=c);let b=this.subarray(c,A);return Object.setPrototypeOf(b,m.prototype),b};function G(l,c,A){if(l%1!==0||l<0)throw new RangeError("offset is not uint");if(l+c>A)throw new RangeError("Trying to access beyond buffer length")}m.prototype.readUintLE=m.prototype.readUIntLE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let b=this[c],w=1,B=0;for(;++B<A&&(w*=256);)b+=this[c+B]*w;return b},m.prototype.readUintBE=m.prototype.readUIntBE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let b=this[c+--A],w=1;for(;A>0&&(w*=256);)b+=this[c+--A]*w;return b},m.prototype.readUint8=m.prototype.readUInt8=function(c,A){return c=c>>>0,A||G(c,1,this.length),this[c]},m.prototype.readUint16LE=m.prototype.readUInt16LE=function(c,A){return c=c>>>0,A||G(c,2,this.length),this[c]|this[c+1]<<8},m.prototype.readUint16BE=m.prototype.readUInt16BE=function(c,A){return c=c>>>0,A||G(c,2,this.length),this[c]<<8|this[c+1]},m.prototype.readUint32LE=m.prototype.readUInt32LE=function(c,A){return c=c>>>0,A||G(c,4,this.length),(this[c]|this[c+1]<<8|this[c+2]<<16)+this[c+3]*16777216},m.prototype.readUint32BE=m.prototype.readUInt32BE=function(c,A){return c=c>>>0,A||G(c,4,this.length),this[c]*16777216+(this[c+1]<<16|this[c+2]<<8|this[c+3])},m.prototype.readBigUInt64LE=gt(function(c){c=c>>>0,Ut(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&on(c,this.length-8);let b=A+this[++c]*2**8+this[++c]*2**16+this[++c]*2**24,w=this[++c]+this[++c]*2**8+this[++c]*2**16+d*2**24;return BigInt(b)+(BigInt(w)<<BigInt(32))}),m.prototype.readBigUInt64BE=gt(function(c){c=c>>>0,Ut(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&on(c,this.length-8);let b=A*2**24+this[++c]*2**16+this[++c]*2**8+this[++c],w=this[++c]*2**24+this[++c]*2**16+this[++c]*2**8+d;return(BigInt(b)<<BigInt(32))+BigInt(w)}),m.prototype.readIntLE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let b=this[c],w=1,B=0;for(;++B<A&&(w*=256);)b+=this[c+B]*w;return w*=128,b>=w&&(b-=Math.pow(2,8*A)),b},m.prototype.readIntBE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let b=A,w=1,B=this[c+--b];for(;b>0&&(w*=256);)B+=this[c+--b]*w;return w*=128,B>=w&&(B-=Math.pow(2,8*A)),B},m.prototype.readInt8=function(c,A){return c=c>>>0,A||G(c,1,this.length),this[c]&128?(255-this[c]+1)*-1:this[c]},m.prototype.readInt16LE=function(c,A){c=c>>>0,A||G(c,2,this.length);let d=this[c]|this[c+1]<<8;return d&32768?d|4294901760:d},m.prototype.readInt16BE=function(c,A){c=c>>>0,A||G(c,2,this.length);let d=this[c+1]|this[c]<<8;return d&32768?d|4294901760:d},m.prototype.readInt32LE=function(c,A){return c=c>>>0,A||G(c,4,this.length),this[c]|this[c+1]<<8|this[c+2]<<16|this[c+3]<<24},m.prototype.readInt32BE=function(c,A){return c=c>>>0,A||G(c,4,this.length),this[c]<<24|this[c+1]<<16|this[c+2]<<8|this[c+3]},m.prototype.readBigInt64LE=gt(function(c){c=c>>>0,Ut(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&on(c,this.length-8);let b=this[c+4]+this[c+5]*2**8+this[c+6]*2**16+(d<<24);return(BigInt(b)<<BigInt(32))+BigInt(A+this[++c]*2**8+this[++c]*2**16+this[++c]*2**24)}),m.prototype.readBigInt64BE=gt(function(c){c=c>>>0,Ut(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&on(c,this.length-8);let b=(A<<24)+this[++c]*2**16+this[++c]*2**8+this[++c];return(BigInt(b)<<BigInt(32))+BigInt(this[++c]*2**24+this[++c]*2**16+this[++c]*2**8+d)}),m.prototype.readFloatLE=function(c,A){return c=c>>>0,A||G(c,4,this.length),i.read(this,c,!0,23,4)},m.prototype.readFloatBE=function(c,A){return c=c>>>0,A||G(c,4,this.length),i.read(this,c,!1,23,4)},m.prototype.readDoubleLE=function(c,A){return c=c>>>0,A||G(c,8,this.length),i.read(this,c,!0,52,8)},m.prototype.readDoubleBE=function(c,A){return c=c>>>0,A||G(c,8,this.length),i.read(this,c,!1,52,8)};function le(l,c,A,d,b,w){if(!m.isBuffer(l))throw new TypeError('"buffer" argument must be a Buffer instance');if(c>b||c<w)throw new RangeError('"value" argument is out of bounds');if(A+d>l.length)throw new RangeError("Index out of range")}m.prototype.writeUintLE=m.prototype.writeUIntLE=function(c,A,d,b){if(c=+c,A=A>>>0,d=d>>>0,!b){let $=Math.pow(2,8*d)-1;le(this,c,A,d,$,0)}let w=1,B=0;for(this[A]=c&255;++B<d&&(w*=256);)this[A+B]=c/w&255;return A+d},m.prototype.writeUintBE=m.prototype.writeUIntBE=function(c,A,d,b){if(c=+c,A=A>>>0,d=d>>>0,!b){let $=Math.pow(2,8*d)-1;le(this,c,A,d,$,0)}let w=d-1,B=1;for(this[A+w]=c&255;--w>=0&&(B*=256);)this[A+w]=c/B&255;return A+d},m.prototype.writeUint8=m.prototype.writeUInt8=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,1,255,0),this[A]=c&255,A+1},m.prototype.writeUint16LE=m.prototype.writeUInt16LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,65535,0),this[A]=c&255,this[A+1]=c>>>8,A+2},m.prototype.writeUint16BE=m.prototype.writeUInt16BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,65535,0),this[A]=c>>>8,this[A+1]=c&255,A+2},m.prototype.writeUint32LE=m.prototype.writeUInt32LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,4294967295,0),this[A+3]=c>>>24,this[A+2]=c>>>16,this[A+1]=c>>>8,this[A]=c&255,A+4},m.prototype.writeUint32BE=m.prototype.writeUInt32BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,4294967295,0),this[A]=c>>>24,this[A+1]=c>>>16,this[A+2]=c>>>8,this[A+3]=c&255,A+4};function Fn(l,c,A,d,b){Ri(c,d,b,l,A,7);let w=Number(c&BigInt(4294967295));l[A++]=w,w=w>>8,l[A++]=w,w=w>>8,l[A++]=w,w=w>>8,l[A++]=w;let B=Number(c>>BigInt(32)&BigInt(4294967295));return l[A++]=B,B=B>>8,l[A++]=B,B=B>>8,l[A++]=B,B=B>>8,l[A++]=B,A}function Pi(l,c,A,d,b){Ri(c,d,b,l,A,7);let w=Number(c&BigInt(4294967295));l[A+7]=w,w=w>>8,l[A+6]=w,w=w>>8,l[A+5]=w,w=w>>8,l[A+4]=w;let B=Number(c>>BigInt(32)&BigInt(4294967295));return l[A+3]=B,B=B>>8,l[A+2]=B,B=B>>8,l[A+1]=B,B=B>>8,l[A]=B,A+8}m.prototype.writeBigUInt64LE=gt(function(c,A=0){return Fn(this,c,A,BigInt(0),BigInt("0xffffffffffffffff"))}),m.prototype.writeBigUInt64BE=gt(function(c,A=0){return Pi(this,c,A,BigInt(0),BigInt("0xffffffffffffffff"))}),m.prototype.writeIntLE=function(c,A,d,b){if(c=+c,A=A>>>0,!b){let ae=Math.pow(2,8*d-1);le(this,c,A,d,ae-1,-ae)}let w=0,B=1,$=0;for(this[A]=c&255;++w<d&&(B*=256);)c<0&&$===0&&this[A+w-1]!==0&&($=1),this[A+w]=(c/B>>0)-$&255;return A+d},m.prototype.writeIntBE=function(c,A,d,b){if(c=+c,A=A>>>0,!b){let ae=Math.pow(2,8*d-1);le(this,c,A,d,ae-1,-ae)}let w=d-1,B=1,$=0;for(this[A+w]=c&255;--w>=0&&(B*=256);)c<0&&$===0&&this[A+w+1]!==0&&($=1),this[A+w]=(c/B>>0)-$&255;return A+d},m.prototype.writeInt8=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,1,127,-128),c<0&&(c=255+c+1),this[A]=c&255,A+1},m.prototype.writeInt16LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,32767,-32768),this[A]=c&255,this[A+1]=c>>>8,A+2},m.prototype.writeInt16BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,2,32767,-32768),this[A]=c>>>8,this[A+1]=c&255,A+2},m.prototype.writeInt32LE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,2147483647,-2147483648),this[A]=c&255,this[A+1]=c>>>8,this[A+2]=c>>>16,this[A+3]=c>>>24,A+4},m.prototype.writeInt32BE=function(c,A,d){return c=+c,A=A>>>0,d||le(this,c,A,4,2147483647,-2147483648),c<0&&(c=4294967295+c+1),this[A]=c>>>24,this[A+1]=c>>>16,this[A+2]=c>>>8,this[A+3]=c&255,A+4},m.prototype.writeBigInt64LE=gt(function(c,A=0){return Fn(this,c,A,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),m.prototype.writeBigInt64BE=gt(function(c,A=0){return Pi(this,c,A,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function wi(l,c,A,d,b,w){if(A+d>l.length)throw new RangeError("Index out of range");if(A<0)throw new RangeError("Index out of range")}function Ci(l,c,A,d,b){return c=+c,A=A>>>0,b||wi(l,c,A,4),i.write(l,c,A,d,23,4),A+4}m.prototype.writeFloatLE=function(c,A,d){return Ci(this,c,A,!0,d)},m.prototype.writeFloatBE=function(c,A,d){return Ci(this,c,A,!1,d)};function Bi(l,c,A,d,b){return c=+c,A=A>>>0,b||wi(l,c,A,8),i.write(l,c,A,d,52,8),A+8}m.prototype.writeDoubleLE=function(c,A,d){return Bi(this,c,A,!0,d)},m.prototype.writeDoubleBE=function(c,A,d){return Bi(this,c,A,!1,d)},m.prototype.copy=function(c,A,d,b){if(!m.isBuffer(c))throw new TypeError("argument should be a Buffer");if(d||(d=0),!b&&b!==0&&(b=this.length),A>=c.length&&(A=c.length),A||(A=0),b>0&&b<d&&(b=d),b===d||c.length===0||this.length===0)return 0;if(A<0)throw new RangeError("targetStart out of bounds");if(d<0||d>=this.length)throw new RangeError("Index out of range");if(b<0)throw new RangeError("sourceEnd out of bounds");b>this.length&&(b=this.length),c.length-A<b-d&&(b=c.length-A+d);let w=b-d;return this===c&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(A,d,b):Uint8Array.prototype.set.call(c,this.subarray(d,b),A),w},m.prototype.fill=function(c,A,d,b){if(typeof c=="string"){if(typeof A=="string"?(b=A,A=0,d=this.length):typeof d=="string"&&(b=d,d=this.length),b!==void 0&&typeof b!="string")throw new TypeError("encoding must be a string");if(typeof b=="string"&&!m.isEncoding(b))throw new TypeError("Unknown encoding: "+b);if(c.length===1){let B=c.charCodeAt(0);(b==="utf8"&&B<128||b==="latin1")&&(c=B)}}else typeof c=="number"?c=c&255:typeof c=="boolean"&&(c=Number(c));if(A<0||this.length<A||this.length<d)throw new RangeError("Out of range index");if(d<=A)return this;A=A>>>0,d=d===void 0?this.length:d>>>0,c||(c=0);let w;if(typeof c=="number")for(w=A;w<d;++w)this[w]=c;else{let B=m.isBuffer(c)?c:m.from(c,b),$=B.length;if($===0)throw new TypeError('The value "'+c+'" is invalid for argument "value"');for(w=0;w<d-A;++w)this[w+A]=B[w%$]}return this};let Et={};function Dr(l,c,A){Et[l]=class extends A{constructor(){super(),Object.defineProperty(this,"message",{value:c.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${l}]`,this.stack,delete this.name}get code(){return l}set code(b){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:b,writable:!0})}toString(){return`${this.name} [${l}]: ${this.message}`}}}Dr("ERR_BUFFER_OUT_OF_BOUNDS",function(l){return l?`${l} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),Dr("ERR_INVALID_ARG_TYPE",function(l,c){return`The "${l}" argument must be of type number. Received type ${typeof c}`},TypeError),Dr("ERR_OUT_OF_RANGE",function(l,c,A){let d=`The value of "${l}" is out of range.`,b=A;return Number.isInteger(A)&&Math.abs(A)>2**32?b=Ii(String(A)):typeof A=="bigint"&&(b=String(A),(A>BigInt(2)**BigInt(32)||A<-(BigInt(2)**BigInt(32)))&&(b=Ii(b)),b+="n"),d+=` It must be ${c}. Received ${b}`,d},RangeError);function Ii(l){let c="",A=l.length,d=l[0]==="-"?1:0;for(;A>=d+4;A-=3)c=`_${l.slice(A-3,A)}${c}`;return`${l.slice(0,A)}${c}`}function As(l,c,A){Ut(c,"offset"),(l[c]===void 0||l[c+A]===void 0)&&on(c,l.length-(A+1))}function Ri(l,c,A,d,b,w){if(l>A||l<c){let B=typeof c=="bigint"?"n":"",$;throw c===0||c===BigInt(0)?$=`>= 0${B} and < 2${B} ** ${(w+1)*8}${B}`:$=`>= -(2${B} ** ${(w+1)*8-1}${B}) and < 2 ** ${(w+1)*8-1}${B}`,new Et.ERR_OUT_OF_RANGE("value",$,l)}As(d,b,w)}function Ut(l,c){if(typeof l!="number")throw new Et.ERR_INVALID_ARG_TYPE(c,"number",l)}function on(l,c,A){throw Math.floor(l)!==l?(Ut(l,A),new Et.ERR_OUT_OF_RANGE("offset","an integer",l)):c<0?new Et.ERR_BUFFER_OUT_OF_BOUNDS:new Et.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${c}`,l)}let us=/[^+/0-9A-Za-z-_]/g;function ms(l){if(l=l.split("=")[0],l=l.trim().replace(us,""),l.length<2)return"";for(;l.length%4!==0;)l=l+"=";return l}function Nr(l,c){c=c||1/0;let A,d=l.length,b=null,w=[];for(let B=0;B<d;++B){if(A=l.charCodeAt(B),A>55295&&A<57344){if(!b){if(A>56319){(c-=3)>-1&&w.push(239,191,189);continue}else if(B+1===d){(c-=3)>-1&&w.push(239,191,189);continue}b=A;continue}if(A<56320){(c-=3)>-1&&w.push(239,191,189),b=A;continue}A=(b-55296<<10|A-56320)+65536}else b&&(c-=3)>-1&&w.push(239,191,189);if(b=null,A<128){if((c-=1)<0)break;w.push(A)}else if(A<2048){if((c-=2)<0)break;w.push(A>>6|192,A&63|128)}else if(A<65536){if((c-=3)<0)break;w.push(A>>12|224,A>>6&63|128,A&63|128)}else if(A<1114112){if((c-=4)<0)break;w.push(A>>18|240,A>>12&63|128,A>>6&63|128,A&63|128)}else throw new Error("Invalid code point")}return w}function ls(l){let c=[];for(let A=0;A<l.length;++A)c.push(l.charCodeAt(A)&255);return c}function ds(l,c){let A,d,b,w=[];for(let B=0;B<l.length&&!((c-=2)<0);++B)A=l.charCodeAt(B),d=A>>8,b=A%256,w.push(b),w.push(d);return w}function vi(l){return s.toByteArray(ms(l))}function Mn(l,c,A,d){let b;for(b=0;b<d&&!(b+A>=c.length||b>=l.length);++b)c[b+A]=l[b];return b}function rt(l,c){return l instanceof c||l!=null&&l.constructor!=null&&l.constructor.name!=null&&l.constructor.name===c.name}function Wr(l){return l!==l}let ps=function(){let l="0123456789abcdef",c=new Array(256);for(let A=0;A<16;++A){let d=A*16;for(let b=0;b<16;++b)c[d+b]=l[A]+l[b]}return c}();function gt(l){return typeof BigInt>"u"?gs:l}function gs(){throw new Error("BigInt not supported")}return Rt}var cn,Mi,On,Oi,Rt,Di,Wi=Bt(()=>{g();y();f();cn={},Mi=!1;On={},Oi=!1;Rt={},Di=!1});var vt,C,jc,Zc,Ei=Bt(()=>{g();y();f();Wi();vt=Ni();vt.Buffer;vt.SlowBuffer;vt.INSPECT_MAX_BYTES;vt.kMaxLength;C=vt.Buffer,jc=vt.INSPECT_MAX_BYTES,Zc=vt.kMaxLength});var y=Bt(()=>{Ei()});import{bcs as Fe}from"@mysten/sui/bcs";function to(s,i=["<",">"]){let[r,a]=i,o=[],u="",m=0;for(let p=0;p<s.length;p++){let h=s[p];if(h===r&&m++,h===a&&m--,m===0&&h===","){o.push(u.trim()),u="";continue}u+=h}return o.push(u.trim()),o}function Se(s){if(typeof s!="string")throw new Error(`Illegal type passed as a name of the type: ${s}`);let[i,r]=["<",">"],a=s.indexOf(i),o=Array.from(s).reverse().indexOf(r);if(a===-1&&o===-1)return{typeName:s,typeArgs:[]};if(a===-1||o===-1)throw new Error(`Unclosed generic in name '${s}'`);let u=s.slice(0,a),m=to(s.slice(a+1,s.length-o-1),[i,r]);return{typeName:u,typeArgs:m}}function Pa(s){return!s||typeof s!="object"||Array.isArray(s)?!1:"GasCoin"in s||"Input"in s||"Result"in s||"NestedResult"in s}function Z(s,i){return Pa(i)?i:s.object(i)}function Xe(s,i,r){if(Pa(i))return Z(s,i);function a(T){let{typeName:S,typeArgs:P}=Se(T);switch(S){case"bool":return Fe.Bool;case"u8":return Fe.U8;case"u16":return Fe.U16;case"u32":return Fe.U32;case"u64":return Fe.U64;case"u128":return Fe.U128;case"u256":return Fe.U256;case"address":return Fe.Address;case"0x1::string::String":case"0x1::ascii::String":return Fe.String;case"0x2::object::ID":return Fe.Address;case"0x1::option::Option":return Fe.option(a(P[0]));case"vector":return Fe.vector(a(P[0]));default:throw new Error(`invalid primitive type ${T}`)}}function o(T){for(let S of T){if(typeof S>"u"||S===null)return!0;if(Array.isArray(S))return o(S)}return!1}function u(T){for(let S of T){if(!Array.isArray(S)){if(S===null)continue;switch(typeof S){case"string":case"number":case"bigint":case"boolean":continue;default:return!1}}return u(S)}return!0}function m(T){for(let S of T){if(!Array.isArray(S))switch(typeof S){case"string":case"number":case"bigint":case"boolean":return!0;default:continue}return m(S)}return!1}let{typeName:p,typeArgs:h}=Se(r);switch(p){case"0x1::option::Option":if(i===null)return s.pure.option("bool",null);if(u([i]))return s.pure(a(r).serialize(i));if(m([i]))throw new Error("mixing primitive and TransactionArgument values is not supported");return s.moveCall({target:"0x1::option::some",typeArguments:[h[0]],arguments:[Xe(s,i,h[0])]});case"vector":if(!Array.isArray(i))throw new Error("expected an array for vector type");if(i.length===0)return s.pure(Fe.vector(Fe.Bool).serialize([]));if(o(i))throw new Error("the provided array contains undefined or null values");if(u(i))return s.pure(a(r).serialize(i));if(m(i))throw new Error("mixing primitive and TransactionArgument values is not supported");return s.makeMoveVec({type:h[0],elements:i});default:return s.pure(a(r).serialize(i))}}function no(s){let i=s.split("0x").join("");for(let r=0;r<i.length;r++)if(i[r]!=="0")return`0x${i.substring(r)}`;return"0x0"}function V(s){let{typeName:i,typeArgs:r}=Se(s);switch(i){case"bool":case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"address":case"signer":return i;case"vector":return`vector<${V(r[0])}>`;default:{let a=i.split("::");a[0]=no(a[0]);let o=a.join("::");return r.length>0?`${o}<${r.map(u=>V(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=Er((Xd,wa)=>{"use strict";g();y();f();ye();var ei=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return V(s.$PACKAGE_ID)}get PUBLISHED_AT(){return V(s.$PUBLISHED_AT)}get PKG_V1(){return V(s.$PKG_V[1])}setPackageId(i){s.$PACKAGE_ID=i}setPublishedAt(i){s.$PUBLISHED_AT=i}setPkgV(i,r){s.$PKG_V[i]=r}setAddress(i,r){s.$PACKAGE_ID=i,s.$PUBLISHED_AT=i,s.$PKG_V[1]=r||i}},ro=new ei;wa.exports=ro});var ii=Er((rp,xa)=>{"use strict";g();y();f();ye();var ri=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return V(s.$PACKAGE_ID)}get PUBLISHED_AT(){return V(s.$PUBLISHED_AT)}get PKG_V1(){return V(s.$PKG_V[1])}setPackageId(i){s.$PACKAGE_ID=i}setPublishedAt(i){s.$PUBLISHED_AT=i}setPkgV(i,r){s.$PKG_V[i]=r}setAddress(i,r){s.$PACKAGE_ID=i,s.$PUBLISHED_AT=i,s.$PKG_V[1]=r||i}},io=new ri;xa.exports=io});var oi=Er((dp,Ma)=>{"use strict";g();y();f();ye();var si=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return V(s.$PACKAGE_ID)}get PUBLISHED_AT(){return V(s.$PUBLISHED_AT)}get PKG_V1(){return V(s.$PKG_V[1])}setPackageId(i){s.$PACKAGE_ID=i}setPublishedAt(i){s.$PUBLISHED_AT=i}setPkgV(i,r){s.$PKG_V[i]=r}setAddress(i,r){s.$PACKAGE_ID=i,s.$PUBLISHED_AT=i,s.$PKG_V[1]=r||i}},ao=new si;Ma.exports=ao});g();y();f();g();y();f();g();y();f();var Dn={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"https://lite-api.jup.ag/swap/v1",wormholeMessengerProgramId:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",solanaLookUpTable:"2JcBAEVnAwVo4u8d61iqgHPrzZuugur7cVTjWubsVLHj",sorobanNetworkPassphrase:"Public Global Stellar Network ; September 2015",tronJsonRpc:"https://api.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{ETH:0,AVA:1,OPT:2,ARB:3,SOL:5,BAS:6,POL:7,SUI:8}},cachePoolInfoChainSec:20},Kc={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},Hc={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org",SUI:"https://fullnode.mainnet.sui.io"};g();y();f();g();y();f();g();y();f();import{TronWeb as ho}from"tronweb";import{Web3 as To}from"web3";g();y();f();g();y();f();g();y();f();var ue=class extends Error{errorCode;constructor(i,r){super(r),this.errorCode=i}},O=class extends ue{constructor(i){super("SdkError",i)}},ut=class extends ue{constructor(i){super("InvalidAmountError",i)}},Gt=class extends ue{constructor(i){super("AmountNotEnoughError",i)}},mt=class extends ue{constructor(i){super("InsufficientPoolLiquidityError",i)}},he=class extends ue{constructor(i){super("JupiterError",i)}},An=class extends ue{constructor(i){super("InvalidGasFeePaymentOptionError",i)}},Nn=class extends ue{constructor(i){super("InvalidMessengerOptionError",i)}},de=class extends ue{constructor(i){super("MethodNotSupportedError",i)}},un=class extends ue{constructor(i){super("VerifyTxError",i)}},Vt=class extends ue{constructor(i){super("InvalidTxError",i)}},Wn=class extends ue{constructor(i){super("ExtraGasMaxLimitExceededError",i)}},En=class extends ue{constructor(i,r,a){super("ArgumentInvalidDecimalsError",`Argument '${i}' decimals '${r}' cannot be greater than '${a}'`)}},mn=class extends ue{constructor(i){super("TimeoutError",i)}},Un=class extends ue{constructor(i){super("NodeRpcUrlNotInitializedError",`For chain '${i}' Node RPC URL not initialized`)}},Ie=class extends ue{constructor(i){super("CCTPDoesNotSupportedError",i)}},Re=class extends ue{constructor(i){super("OFTDoesNotSupportedError",i)}},Gn=class extends ue{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},Bs=(M=>(M.SDK_ERROR="SdkError",M.INVALID_AMOUNT_ERROR="InvalidAmountError",M.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",M.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",M.JUPITER_ERROR="JupiterError",M.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",M.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",M.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",M.VERIFY_TX_ERROR="VerifyTxError",M.INVALID_TX_ERROR="InvalidTxError",M.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",M.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",M.TIMEOUT_ERROR="TimeoutError",M.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",M.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",M.OFT_DOES_NOT_SUPPORTED_ERROR="OFTDoesNotSupportedError",M.TX_TOO_LARGE="TxTooLargeError",M))(Bs||{});g();y();f();var $e=(v=>(v.BSC="BSC",v.ETH="ETH",v.BAS="BAS",v.SOL="SOL",v.TRX="TRX",v.POL="POL",v.ARB="ARB",v.CEL="CEL",v.AVA="AVA",v.SRB="SRB",v.STLR="STLR",v.OPT="OPT",v.SUI="SUI",v.SNC="SNC",v.UNI="UNI",v))($e||{}),ie=(u=>(u.EVM="EVM",u.SOLANA="SOLANA",u.TRX="TRX",u.SRB="SRB",u.SUI="SUI",u))(ie||{});var Is={EVM:18,SOLANA:9,TRX:6,SRB:7,SUI:9},Rs={BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SNC:{chainSymbol:"SNC",chainId:"0x92",name:"Sonic",chainType:"EVM"},UNI:{chainSymbol:"UNI",chainId:"0x82",name:"Unichain",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"},SUI:{chainSymbol:"SUI",name:"Sui",chainType:"SUI"}},H=(()=>{let s={...Rs};return{addChainsProperties(i){s={...s,...i}},getChainProperty(i){let r=s[i];if(!r)throw new O(`Cannot find chain properties for ${i}`);return r},getChainsProperties(){return s},getChainDecimalsByType(i){return Is[i]}}})();g();y();f();var Vr=(m=>(m.OK="OK",m.INVALID="INVALID",m.FORBIDDEN="FORBIDDEN",m.UNINITIALIZED="UNINITIALIZED",m.CONTRACT_ADDRESS="CONTRACT_ADDRESS",m.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",m))(Vr||{});var Je=(u=>(u[u.ALLBRIDGE=1]="ALLBRIDGE",u[u.WORMHOLE=2]="WORMHOLE",u[u.CCTP=3]="CCTP",u[u.CCTP_V2=4]="CCTP_V2",u[u.OFT=5]="OFT",u))(Je||{});g();y();f();import{Big as Ui}from"big.js";async function pe(s,i){return await s.getPoolInfoByKey({chainSymbol:i.chainSymbol,poolAddress:i.poolAddress})}function q(s){if(Ui(s).lte(0))throw new ut("Amount must be greater than zero")}function ee(s,i,r){let a=Ui(i).toFixed(),[o,u]=a.split(".");if(u&&u.length>r)throw new En(s,u.length,r)}async function Vn(s,i,r){return await Promise.race([s,new Promise((a,o)=>{setTimeout(()=>o(new mn(i)),r)})])}async function jr(s,i,r,a){if(r<1)throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${r} was received.`);let o=0;for(;;)try{return await Vn(s(),i,a)}catch{if(++o>=r)throw new mn(i)}}async function Gi(s,i,r,a=1.5,o=!1){let u=[],m=0,p=await s();if(u.push(p),!i(p))return u;let h=new Date(Date.now()+r*1e3).valueOf(),T=1e3,S=T;for(;Date.now()<h;){let P=u[u.length-1];if(P===void 0||!i(P))break;m++,o&&console.info(`Waiting ${T}ms before trying again (bringing the total wait time to ${S}ms so far, of total ${r*1e3}ms)`),await new Promise(I=>setTimeout(I,T)),T=T*a,new Date(Date.now()+T).valueOf()>h&&(T=h-Date.now(),o&&console.info(`was gonna wait too long; new waitTime: ${T}ms`)),S=T+S;let x=await s(P);u.push(x),o&&i(x)&&console.info(`${m}. Called ${s.name}; ${u.length} prev attempts. Most recent: ${JSON.stringify(u[u.length-1],null,2)}`)}return u}g();y();f();import{Big as Vs}from"big.js";g();y();f();var vs={abi:[{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"uint256",name:"_chainPrecision",type:"uint256"},{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"},{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"},{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"gas",type:"uint256"}],name:"BridgingFeeFromTokens",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"bridgeTransactionCost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"messageTransactionCost",type:"uint256"}],name:"ReceiveFee",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Received",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes32",name:"sendToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"sendAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receiveAmount",type:"uint256"}],name:"Swapped",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{indexed:!1,internalType:"bytes32",name:"message",type:"bytes32"}],name:"TokensReceived",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"addBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract Pool",name:"pool",type:"address"},{internalType:"bytes32",name:"token",type:"bytes32"}],name:"addPool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"canSwap",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"address",name:"tokenAddress",type:"address"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageGasUsage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"hasReceivedMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"}],name:"hasSentMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"hashMessage",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"otherBridgeTokens",outputs:[{internalType:"bool",name:"isSupported",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"otherBridges",outputs:[{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"tokenId",type:"bytes32"}],name:"pools",outputs:[{internalType:"contract Pool",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"processedMessages",outputs:[{internalType:"uint256",name:"isProcessed",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],name:"registerBridge",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"removeBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"sentMessages",outputs:[{internalType:"uint256",name:"isSent",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"}],name:"setAllbridgeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_rebalancer",type:"address"}],name:"setRebalancer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"}],name:"setWormholeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"feeTokenAmount",type:"uint256"}],name:"swapAndBridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"withdrawBridgingFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGasTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Vi=vs;g();y();f();var ks={abi:[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"address",name:"cctpMessenger_",type:"address"},{internalType:"address",name:"cctpTransmitter_",type:"address"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedExtraGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"RecipientReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"}],name:"TokensSentExtras",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridgeWithWalletAddress",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"changeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getDomainByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint64",name:"nonce",type:"uint64"}],name:"isMessageProcessed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bytes",name:"message",type:"bytes"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"domain",type:"uint32"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},ji=ks;g();y();f();var xs={abi:[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[{internalType:"uint16",name:"optionType",type:"uint16"}],name:"InvalidOptionType",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"address",name:"tokenAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFeeWithExtraGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"extraGasDestinationToken",type:"uint256"}],name:"OftTokensSent",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{internalType:"address",name:"oft_",type:"address"}],name:"addToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress",type:"address"}],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"feeShare",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"},{internalType:"uint256",name:"extraGasInDestinationToken",type:"uint256"},{internalType:"uint256",name:"slippageBP",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress_",type:"address"},{internalType:"uint256",name:"destinationChainId_",type:"uint256"},{internalType:"uint128",name:"extraGasAmount_",type:"uint128"}],name:"extraGasPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getEidByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress",type:"address"}],name:"oftAddress",outputs:[{internalType:"address",name:"oftAddress",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"eid_",type:"uint32"},{internalType:"uint128",name:"lzGasLimit_",type:"uint128"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress_",type:"address"},{internalType:"uint256",name:"destinationChainId_",type:"uint256"}],name:"relayerFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"oft_",type:"address"}],name:"removeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress_",type:"address"},{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint128",name:"lzGasLimit_",type:"uint128"}],name:"setLzGasLimit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"maxExtraGas_",type:"uint256"}],name:"setMaxExtraGas",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token_",type:"address"}],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount_",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Zi=xs;g();y();f();import*as _n from"@project-serum/anchor";import{PublicKey as ca}from"@solana/web3.js";g();y();f();import*as Te from"@project-serum/anchor";import{PublicKey as ve}from"@solana/web3.js";async function Qe(s,i){return Te.utils.token.associatedAddress({mint:i,owner:s})}async function ft(s){let[i]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("config")],s);return i}async function _i(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("lock"),Uint8Array.from(s)],i);return r}async function ln(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([s])],i);return r}async function jt(s){let i=await ft(s),[r]=await ve.findProgramAddress([i.toBuffer()],s);return r}async function $i(s,i){let[r]=await ve.findProgramAddress([s.toBuffer()],i);return r}async function Zt(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("token"),s.toBytes()],i);return r}async function Ji(s,i,r){let[a]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("other_bridge_token"),C.from([s]),i],r);return a}async function Zr(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([s])],i);return r}async function _r(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([s])],i);return r}async function Li(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("sent_message"),s],i);return r}async function $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 Xi(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("cctp_bridge"),s.toBytes()],i);return r}async function Yi(s,i){let[r]=await ve.findProgramAddress([Te.utils.bytes.utf8.encode("token"),s.toBytes()],i);return r}function Ki(s,i){let[r]=ve.findProgramAddressSync([Te.utils.bytes.utf8.encode("lock"),i.toBuffer()],s);return r}function Hi(s,i,r,a){let o=kt("message_transmitter",r),u=kt("token_messenger",a),m=kt("__event_authority",a),p=kt("token_minter",a),h=kt("local_token",a,[i]),T=kt("remote_token_messenger",a,[s.toString()]),S=kt("sender_authority",a);return{messageTransmitterAccount:o,tokenMessenger:u,tokenMessengerEventAuthority:m,tokenMinter:p,localToken:h,remoteTokenMessengerKey:T,authorityPda:S}}function kt(s,i,r=[]){let a=[C.from(Te.utils.bytes.utf8.encode(s))];for(let u of r)typeof u=="string"?a.push(C.from(Te.utils.bytes.utf8.encode(u))):Array.isArray(u)?a.push(C.from(Uint8Array.from(u))):C.isBuffer(u)?a.push(C.from(Uint8Array.from(u))):a.push(C.from(Uint8Array.from(u.toBuffer())));return ve.findProgramAddressSync(a,i)[0]}g();y();f();import{AnchorProvider as Fs}from"@project-serum/anchor";import{Connection as Ms,PublicKey as Os}from"@solana/web3.js";function yt(s,i){let r=new Ms(s,"confirmed"),a=new Os(i);return new Fs(r,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}g();y();f();import{PublicKey as Ds}from"@solana/web3.js";import{Address as Ns}from"@stellar/stellar-sdk";import{Big as We}from"big.js";import aa from"randombytes";import{utils as ra}from"tronweb";g();y();f();import{Big as E}from"big.js";import Jr from"bn.js";g();y();f();function Lr(s,i){return E(100).minus(E(100).times(i).div(s)).toNumber()}function xt(s,i){return Le(s,i,3).round(0,E.roundDown)}function Ne(s,i){return Le(s,3,i)}function Le(s,i,r){let a=E(r).minus(i).toNumber();return E(s).times(dn(a))}function dn(s){return E(10).pow(s)}function Q(s,i){return E(s).times(dn(i))}function J(s,i){let r=E(s);return r.eq(0)?E(0):E(r).div(dn(i))}function ke(s){return J(E(s.tokenBalance).minus(s.vUsdBalance).toFixed(),3).div(2).toFixed()}function it(s,{feeShare:i,decimals:r},a){let o=E(s);if(o.lte(0))return"0";let u=o.times(i),m=o.minus(u),p=xt(m,r),h=E(a.tokenBalance).plus(p),T=at(h,a.aValue,a.dValue);return E(a.vUsdBalance).minus(T).round(0,E.roundDown).toFixed()}function pn(s,{feeShare:i,decimals:r},a){let o=E(s);if(o.lte(0))return E(0).toFixed();let u=o.plus(a.vUsdBalance),m=at(u,a.aValue,a.dValue),p=Ne(E(a.tokenBalance).minus(m),r),h=E(p).times(i);return E(p).minus(h).round(0,E.roundDown).toFixed()}function Qi(s,i){let r=E(s);if(r.lte(0))return i;let a=r.plus(i.vUsdBalance),o=at(a,i.aValue,i.dValue);return{aValue:i.aValue,dValue:i.dValue,tokenBalance:o.toFixed(0),vUsdBalance:a.toFixed(0)}}function zi(s,{feeShare:i,decimals:r},a){if(E(s).lte(0))return E(0);let o=E(a.vUsdBalance).minus(s);if(o.lte(0))throw new mt;let u=at(o,a.aValue,a.dValue),m=E(u).minus(a.tokenBalance),p=Ne(m,r),h=E(i).div(E(1).minus(i)),T=E(p).times(h).round(0,E.roundUp);return E(p).plus(T).round(0,E.roundDown)}function qi(s,{feeShare:i,decimals:r},a){if(E(s).lte(0))return E(0);let o=E(i).div(E(1).minus(i)),u=E(s).times(o).round(0,E.roundUp),m=E(s).plus(u),p=xt(m,r),h=E(a.tokenBalance).minus(p);if(h.lte(0))throw new mt;let T=at(h,a.aValue,a.dValue);return E(T).minus(a.vUsdBalance).round(0,E.roundDown)}function at(s,i,r){let a=E(4).times(i).times(E(r).minus(s)).minus(r),o=E(r).pow(3),u=a.pow(2),m=E(s).times(E(s).times(u).plus(E(4).times(i).times(o))).sqrt().round(0,E.roundDown),p=E(8).times(i).times(s),h=a.times(s).plus(m).div(p).round(0,E.roundDown);return h.eq(0)?E(0):h.plus(1)}function ea(s,i,r,a){let o=new Jr(s),u=new Jr(r),m=new Jr(i);return o.mul(u).shrn(a).sub(m).toString()}function ta(s){return E(s).gt(0)?`${Number(E(s).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function na(s,i,r){let a=E(i).times(r),o=E(i).plus(r),u=E(8).times(s).times(a).times(o),m=a.times(E(16).times(s).minus(4)).div(3),p=u.times(u),h=m.times(m).times(m),T=p.plus(h),S=E(T).sqrt(),P=E(Math.cbrt(+u.plus(S).toFixed())),x=E(Math.cbrt(+u.minus(S).toFixed()));return P.plus(x).toFixed()}function lt(s,i,r){let a;switch(i){case"EVM":{a=ia(s);break}case"SOLANA":{a=new Ds(s).toBuffer();break}case"TRX":{a=Ws(s);break}case"SRB":{a=new Ns(s).toBuffer();break}case"SUI":{a=ia(s);break}}switch(r){case"EVM":return"0x"+a.toString("hex");case"SOLANA":return Array.from(a);case"TRX":return a;case"SRB":return a.toJSON().data;case"SUI":return"0x"+a.toString("hex")}}function ze(s){return s.replace(/^0x/i,"")}function sa(s){return C.from(s.replace(/^0x/i,""),"hex")}function ia(s){let r=sa(s);return C.concat([C.alloc(32-r.length,0),r],32)}function Ws(s){let i=gn(s),r=sa(i);return Es(r,32)}function gn(s){let i=ra.crypto.decodeBase58Address(s);return i?ra.bytes.byteArray2hexStr(i).replace(/^41/,"0x"):""}function Es(s,i){if(s.length>=i)return s;let r=C.alloc(i,0);return s.copy(r,i-s.length),r}function jn(){return aa(32)}function st(){let s=aa(32).readBigInt64BE();return s<0?s*-1n:s}function ot(s,i){let r={},a=i.sourceToken;if(r.amount=Q(i.amount,a.decimals).toFixed(),r.contractAddress=a.bridgeAddress,r.fromAccountAddress=i.fromAccountAddress,s==="SUI"){if(!a.originTokenAddress)throw new O("SUI sourceToken must contain 'originTokenAddress'");r.fromTokenAddress=a.originTokenAddress}else r.fromTokenAddress=lt(a.tokenAddress,s,s);if(r.toAccountAddress=i.toAccountAddress,s==="SUI"){if(!i.destinationToken.originTokenAddress)throw new O("SUI destinationToken must contain 'originTokenAddress'");r.toTokenAddress=i.destinationToken.originTokenAddress}else r.toTokenAddress=lt(i.destinationToken.tokenAddress,s,s);return r.minimumReceiveAmount=i.minimumReceiveAmount?Q(i.minimumReceiveAmount,i.destinationToken.decimals).toFixed():"0",r}async function qe(s,i,r){let a={};a.fromChainId=i.sourceToken.allbridgeChainId,a.fromChainSymbol=i.sourceToken.chainSymbol;let o=H.getChainProperty(i.destinationToken.chainSymbol).chainType;if(s==="SUI"){if(!i.sourceToken.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");a.fromTokenAddress=i.sourceToken.originTokenAddress}else a.fromTokenAddress=i.sourceToken.tokenAddress;a.toChainId=i.destinationToken.allbridgeChainId,a.toTokenAddress=i.destinationToken.tokenAddress,i.gasFeePaymentMethod==="stablecoin"?a.gasFeePaymentMethod="stablecoin":a.gasFeePaymentMethod="native";let u=i.sourceToken;switch(i.messenger){case 3:if(!u.cctpAddress||!i.destinationToken.cctpAddress)throw new Ie("Such route does not support CCTP protocol");a.contractAddress=u.cctpAddress;break;case 4:if(!u.cctpV2Address||!i.destinationToken.cctpV2Address)throw new Ie("Such route does not support CCTP V2 protocol");a.contractAddress=u.cctpV2Address;break;case 5:if(!u.oftBridgeAddress||!i.destinationToken.oftBridgeAddress||u.oftId!==i.destinationToken.oftId)throw new Re("Such route does not support OFT protocol");a.contractAddress=u.oftBridgeAddress;break;case 1:case 2:a.contractAddress=u.bridgeAddress;break}a.messenger=i.messenger,a.fromAccountAddress=i.fromAccountAddress,a.amount=Q(i.amount,u.decimals).toFixed();let{fee:m,feeFormat:p}=i;if(!m){let P=(await Xr(i.sourceToken,a.toChainId,a.messenger,r))[a.gasFeePaymentMethod];if(!P)throw new An;m=P.int,p="int"}if(p=="float")switch(a.gasFeePaymentMethod){case"native":a.fee=Q(m,H.getChainDecimalsByType(u.chainType)).toFixed(0);break;case"stablecoin":a.fee=Q(m,u.decimals).toFixed(0);break}else a.fee=m;let{extraGas:h,extraGasFormat:T}=i;if(h&&+h>0){let S=await Yr(u,i.destinationToken,a.messenger,r),P,x;switch(a.gasFeePaymentMethod){case"native":P=H.getChainDecimalsByType(u.chainType),x=We(S.exchangeRate);break;case"stablecoin":P=u.decimals,x=We(S.exchangeRate).div(S.sourceNativeTokenPrice);break}switch(T??"int"){case"float":{a.extraGas=Q(h,P).toFixed(0);let I=x.mul(h);a.extraGasDest=Q(I,H.getChainDecimalsByType(i.destinationToken.chainType)).toFixed(0,We.roundDown);break}case"int":{a.extraGas=h;let I=J(a.extraGas,H.getChainDecimalsByType(u.chainType)),F=x.mul(I);a.extraGasDest=Q(F,H.getChainDecimalsByType(i.destinationToken.chainType)).toFixed(0,We.roundDown);break}}Gs(a.extraGas,a.gasFeePaymentMethod,S)}return s!=="SUI"&&(a.fromTokenAddress=lt(a.fromTokenAddress,s,s)),a.toAccountAddress=lt(i.toAccountAddress,o,s),a.toTokenAddress=lt(a.toTokenAddress,o,s),a.gasFeePaymentMethod=="stablecoin"&&Us(a.amount,u.decimals,a.fee,a.extraGas),a}function Us(s,i,r,a){let o=We(s).minus(r).minus(a??0);if(o.lte(0))throw new Gt(`Amount not enough to pay fee, ${J(We(o).minus(1).neg(),i).toFixed()} stables is missing`)}async function Xr(s,i,r,a){let o=await a.getReceiveTransactionCost({sourceChainId:s.allbridgeChainId,destinationChainId:i,messenger:r,sourceToken:s.tokenAddress}),u={native:{int:o.fee,float:J(o.fee,H.getChainDecimalsByType(s.chainType)).toFixed()},adminFeeShareWithExtras:o.adminFeeShareWithExtras};if(o.sourceNativeTokenPrice){let m=Le(new We(o.fee).mul(o.sourceNativeTokenPrice),H.getChainDecimalsByType(s.chainType),s.decimals).toFixed(0,We.roundUp);u.stablecoin={int:m,float:J(m,s.decimals).toFixed()}}return u}function Gs(s,i,r){let a=r.extraGasMax[i];if(!a)throw new An(`Impossible to pay extra gas by '${i}' payment method`);let o=a.int;if(We(s).gt(o))throw new Wn(`Extra gas ${s} in int format, exceeded limit ${o} for '${i}' payment method`)}async function Yr(s,i,r,a){let o={},u=await a.getReceiveTransactionCost({sourceChainId:s.allbridgeChainId,destinationChainId:i.allbridgeChainId,messenger:r,sourceToken:s.tokenAddress}),m=i.txCostAmount.maxAmount,p=J(m,H.getChainDecimalsByType(i.chainType)).toFixed(),h=We(p).div(u.exchangeRate).toFixed(H.getChainDecimalsByType(s.chainType),We.roundDown),T=Q(h,H.getChainDecimalsByType(s.chainType)).toFixed(0);if(o.native={int:T,float:h},u.sourceNativeTokenPrice){let S=We(h).mul(u.sourceNativeTokenPrice).toFixed(s.decimals,We.roundDown);o.stablecoin={int:Q(S,s.decimals).toFixed(0),float:S}}return{extraGasMax:o,destinationChain:{gasAmountMax:{int:m,float:p},swap:{int:i.txCostAmount.swap,float:J(i.txCostAmount.swap,H.getChainDecimalsByType(i.chainType)).toFixed()},transfer:{int:i.txCostAmount.transfer,float:J(i.txCostAmount.transfer,H.getChainDecimalsByType(i.chainType)).toFixed()}},exchangeRate:u.exchangeRate,sourceNativeTokenPrice:u.sourceNativeTokenPrice}}function oa(s){return s.sourceToken.chainSymbol!==s.destinationToken.chainSymbol}async function $n(s,i,r,a){let o,u=new ca(i),m=new ca(r),p=await Qe(u,m),h=yt(a,i);_n.setProvider(h);let T=await _n.Spl.token(h).account.token.fetchNullable(p);if(T?.authority.equals(u))o=lt(p.toBase58(),"SOLANA",s);else{let S=await h.connection.getTokenAccountsByOwner(u,{mint:m});if(S.value.length===0&&!T)o=lt(p.toBase58(),"SOLANA",s);else if(S.value.length>0){let P=S.value[0];if(!P?.pubkey)throw new O("First token account or its public key is undefined");o=lt(P.pubkey.toBase58(),"SOLANA",s)}else throw new O("Associated account has wrong owner")}return o}g();y();f();g();y();f();var Ee=class{};var fn=class extends Ee{constructor(r,a,o){super();this.web3=r;this.api=a;this.nodeRpcUrlsConfig=o}chainType="EVM";async send(r){let a=await this.buildRawTransactionSend(r);return this.sendRawTransaction(a)}async buildRawTransactionSwap(r){let a=ot(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:o,fromAccountAddress:u,fromTokenAddress:m,toAccountAddress:p,toTokenAddress:h,minimumReceiveAmount:T}=r,P=this.getBridgeContract(o).methods.swap(a,m,h,p,T);return Promise.resolve({from:u,to:o,data:P.encodeABI()})}async buildRawTransactionSend(r){let a=await qe(this.chainType,r,this.api),{amount:o,contractAddress:u,fromAccountAddress:m,fromTokenAddress:p,toChainId:h,toAccountAddress:T,toTokenAddress:S,messenger:P,fee:x,gasFeePaymentMethod:I,extraGas:F,extraGasDest:v}=a,N="0x"+jn().toString("hex"),M,D,W=x;switch(F&&(W=Vs(W).plus(F).toFixed()),P){case 3:case 4:{let U=await this.buildRawTransactionCctpSend(r,a,W);M=U.sendMethod,D=U.value;break}case 5:{let U=this.buildRawTransactionOftSend(r,a,W,v);M=U.sendMethod,D=U.value;break}case 1:case 2:{let U=this.getBridgeContract(u);I==="stablecoin"?(M=U.methods.swapAndBridge(p,o,T,h,S,N,P,W),D="0"):(M=U.methods.swapAndBridge(p,o,T,h,S,N,P,0),D=W)}break}return Promise.resolve({from:m,to:u,value:D,data:M.encodeABI()})}async buildRawTransactionCctpSend(r,a,o){let{amount:u,contractAddress:m,toChainId:p,toAccountAddress:h,gasFeePaymentMethod:T}=a,S=this.getCctpBridgeContract(m),P,x;if(r.destinationToken.chainType==="SOLANA"){let I=await $n(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));T==="stablecoin"?(P=S.methods.bridgeWithWalletAddress(u,I,h,p,o),x="0"):(P=S.methods.bridgeWithWalletAddress(u,I,h,p,0),x=o)}else T==="stablecoin"?(P=S.methods.bridge(u,h,p,o),x="0"):(P=S.methods.bridge(u,h,p,0),x=o);return{sendMethod:P,value:x}}buildRawTransactionOftSend(r,a,o,u){let{amount:m,contractAddress:p,toChainId:h,toAccountAddress:T,gasFeePaymentMethod:S}=a,P=this.getOftBridgeContract(p),x,I;return S==="stablecoin"?(x=P.methods.bridge(r.sourceToken.tokenAddress,m,T,h,o,u??"0","10"),I="0"):(x=P.methods.bridge(r.sourceToken.tokenAddress,m,T,h,0,u??"0","10"),I=o),{sendMethod:x,value:I}}async sendRawTransaction(r){let a=await this.web3.eth.estimateGas(r),o={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:u}=await this.web3.eth.sendTransaction({...r,gas:a,...o});return{txId:u.toString()}}getBridgeContract(r){return new this.web3.eth.Contract(Vi.abi,r)}getCctpBridgeContract(r){return new this.web3.eth.Contract(ji.abi,r)}getOftBridgeContract(r){return new this.web3.eth.Contract(Zi.abi,r)}};g();y();f();var Jn=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o}async approve(i,r){let a,o;r?(a=i,o=r):o=i;let u=yn(o.token,o.messenger);return this.tokenService.buildRawTransactionApprove({...o,spender:u},a)}async send(i,r){return q(i.amount),ee("amount",i.amount,i.sourceToken.decimals),oa(i)?Ln(i.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSend(i):Ln(i.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSwap(i)}};g();y();f();import{BN as Jt,Program as Qr,Spl as Hs,web3 as ht}from"@project-serum/anchor";import{Keypair as ba,PublicKey as re,SystemProgram as Qs}from"@solana/web3.js";import{Big as et}from"big.js";g();y();f();var hn={version:"0.1.0",name:"bridge",instructions:[{name:"initialize",accounts:[{name:"admin",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializePool",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"token",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializePoolArgs"}}]},{name:"initDepositAccount",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"deposit",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdraw",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amountLp",type:"u64"}]},{name:"swapAndBridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"messenger",isMut:!1,isSigner:!1},{name:"messengerConfig",isMut:!0,isSigner:!1},{name:"sentMessageAccount",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swapAndBridgeWormhole",accounts:[{name:"user",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"wormholeMessenger",isMut:!1,isSigner:!1},{name:"wormholeMessengerConfig",isMut:!0,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"bridge",isMut:!0,isSigner:!1},{name:"message",isMut:!0,isSigner:!0},{name:"sequence",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swap",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"sendMint",isMut:!1,isSigner:!1},{name:"receiveMint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"sendPool",isMut:!0,isSigner:!1},{name:"receivePool",isMut:!0,isSigner:!1},{name:"sendBridgeToken",isMut:!0,isSigner:!1},{name:"receiveBridgeToken",isMut:!0,isSigner:!1},{name:"sendUserToken",isMut:!0,isSigner:!1},{name:"receiveUserToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"},{name:"receiveAmountMin",type:"u64"}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"receiveAndSwap",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"receiveAndSwapWormhole",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"claimRewards",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAdmin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAdmin",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"startBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"stopBridge",accounts:[{name:"stopAuthority",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"setRebalancer",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"rebalancer",isMut:!1,isSigner:!1}],args:[]},{name:"setStopAuthority",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAuthority",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"setAllbridgeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setWormholeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setPoolFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setBalanceRatioMin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"balanceRatioMinBp",type:"u16"}]},{name:"setPoolAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"addOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"removeOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"adjustTotalLpAmount",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"chainBridge",type:{kind:"struct",fields:[{name:"address",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"config",type:{kind:"struct",fields:[{name:"admin",type:"publicKey"},{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"rebalancer",type:"publicKey"},{name:"stopAuthority",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"canSwap",type:"bool"},{name:"canDeposit",type:"bool"},{name:"canWithdraw",type:"bool"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"sentTokenAddress",type:"publicKey"},{name:"amount",type:"u64"},{name:"vusdAmount",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"nonce",type:{array:["u8",32]}},{name:"messenger",type:{defined:"Messenger"}},{name:"slot",type:"u64"},{name:"fee",type:"u64"}]}},{name:"otherBridgeToken",type:{kind:"struct",fields:[]}},{name:"pool",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"a",type:"u64"},{name:"d",type:"u64"},{name:"tokenBalance",type:"u64"},{name:"vUsdBalance",type:"u64"},{name:"reserves",type:"u64"},{name:"decimals",type:"u8"},{name:"totalLpAmount",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"accRewardPerShareP",type:"u128"},{name:"adminFeeAmount",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"unlock",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"fee",type:"u64"},{name:"vUsdAmount",type:"u64"},{name:"slot",type:"u64"}]}},{name:"userDeposit",type:{kind:"struct",fields:[{name:"userAddress",type:"publicKey"},{name:"mint",type:"publicKey"},{name:"lpAmount",type:"u64"},{name:"rewardDebt",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"}]}},{name:"InitializePoolArgs",type:{kind:"struct",fields:[{name:"a",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"vusdAmount",type:"u64"}]}},{name:"UnlockArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"recipient",type:"publicKey"},{name:"sourceChainId",type:"u8"},{name:"receiveToken",type:"publicKey"},{name:"messenger",type:{defined:"Messenger"}},{name:"hash",type:{array:["u8",32]}},{name:"receiveAmountMin",type:"u64"}]}},{name:"RewardError",type:{kind:"enum",variants:[{name:"FeeTooHigh"}]}},{name:"Messenger",type:{kind:"enum",variants:[{name:"None"},{name:"Allbridge"},{name:"Wormhole"}]}},{name:"ActionType",type:{kind:"enum",variants:[{name:"Deposit"},{name:"Withdraw"},{name:"Swap"}]}}],errors:[{code:6e3,name:"AccountAlreadyInitialized",msg:"This account has already been initialized"},{code:6001,name:"AdminAuthorityInvalid",msg:"This instruction requires admin authority"},{code:6002,name:"InvalidSignature",msg:"Provided signature has wrong signer or message"},{code:6003,name:"InvalidHash",msg:"Wrong unlock message hash"},{code:6004,name:"PoolOverflow",msg:"PoolInfo overflow"},{code:6005,name:"ReservesExhausted",msg:"Reserves exhausted"},{code:6006,name:"ZeroAmount",msg:"Zero amount"},{code:6007,name:"ZeroChanges",msg:"Zero changes"},{code:6008,name:"HighVusdAmount",msg:"vUSD amount is too high"},{code:6009,name:"BalanceRatioExceeded",msg:"Balance ratio exceeded"},{code:6010,name:"InsufficientReceivedAmount",msg:"Received insufficient amount"},{code:6011,name:"ForbiddenAction",msg:"ForbiddenAction"},{code:6012,name:"ValueTooHigh",msg:"Value is too high"}]};g();y();f();var Aa={version:"0.1.0",name:"cctp_bridge",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"bridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"cctpMessenger",isMut:!1,isSigner:!1},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"messageTransmitterAccount",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"remoteTokenMessengerKey",isMut:!1,isSigner:!1},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"setAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setCctpTokenMessengerMinter",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]}],accounts:[{name:"cctpBridge",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"admin",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"adminFeeShareBp",type:"u64"},{name:"adminFeeAmount",type:"u64"}]}},{name:"chainBridge",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"amount",type:"u64"},{name:"adminFee",type:"u64"},{name:"relayerFee",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"slot",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"amount",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"gasOracleProgramId",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"}]}}],errors:[{code:6e3,name:"ValueTooHigh",msg:"Value is too high"}]};g();y();f();import{Spl as js}from"@project-serum/anchor";import Zs from"big.js";import{Web3 as Xn}from"web3";async function _t(s,i){return await js.token(i).account.token.fetch(s)}async function ua(s,i,r){let a=await i.account.pool.fetch(r),o=a.decimals,u=Zs(a.feeShareBp.toString()).div(1e4).toFixed(),m={aValue:a.a.toString(),dValue:a.d.toString(),totalLpAmount:a.totalLpAmount.toString(),tokenBalance:a.tokenBalance.toString(),vUsdBalance:a.vUsdBalance.toString(),accRewardPerShareP:a.accRewardPerShareP.toString()};return it(s,{decimals:o,feeShare:u},m)}function ma(s){let i=s.amount,r="0x"+s.recipient.toString("hex"),a=s.sourceChainId,o=s.destinationChainId,u="0x"+s.receiveToken.toString("hex"),m="0x"+s.nonce.toString("hex"),p=1,h="0x"+s.chainBridge.toString("hex"),T=Xn.utils.encodePacked({t:"uint256",v:i},{t:"bytes32",v:r},{t:"uint256",v:a},{t:"bytes32",v:u},{t:"uint256",v:m},{t:"uint8",v:p});if(!T)throw new O("message cannot be undefined");let S=Xn.utils.keccak256(C.from(T.replace("0x",""),"hex")),P=C.from(S.replace("0x",""),"hex");P[0]=a,P[1]=o;let x=Xn.utils.encodePacked({t:"bytes32",v:"0x"+P.toString("hex")},{t:"bytes32",v:h});if(!x)throw new Vt("messageWithSigner cannot be undefined");let I=Xn.utils.keccak256(C.from(x.replace("0x",""),"hex")),F=C.from(I.replace("0x",""),"hex");return F[0]=P[0],F[1]=P[1],F}g();y();f();import{ComputeBudgetInstruction as da,ComputeBudgetProgram as Yn,Connection as pa,TransactionMessage as _s}from"@solana/web3.js";import{Big as $s}from"big.js";g();y();f();import{AddressLookupTableAccount as la}from"@solana/web3.js";async function Mt(s,i){return await Promise.all(s.message.addressTableLookups.map(async r=>new la({key:r.accountKey,state:la.deserialize(await i.getAccountInfo(r.accountKey).then(a=>{if(!a)throw new O("Cannot get AccountInfo");return a.data}))})))}g();y();f();g();y();f();var Kr="AUTO";async function $t(s,i,r){let a=new pa(r,"confirmed"),o=(await a.simulateTransaction(s)).value.unitsConsumed;await fa(s.instructions,o,i,a)}async function ga(s,i,r){let a=new pa(r,"confirmed"),o=await Mt(s,a),u=_s.decompile(s.message,{addressLookupTableAccounts:o});if(s.serialize().length>1232)throw new Gn;await fa(u.instructions,769230,i,a),s.message=u.compileToV0Message(o)}async function fa(s,i,r,a){if(i>0){let o=Js(i,s);if(r?.solana){let u=r.solana;if(u===Kr)await Hr(s,a);else if("pricePerUnitInMicroLamports"in u)await Hr(s,a,u.pricePerUnitInMicroLamports);else{let m=$s(u.extraFeeInLamports).div(o).mul(dn(6)).toFixed(0);await Hr(s,a,m)}}}}function Js(s,i){let r=i.findIndex(u=>u.programId.equals(Yn.programId)&&da.decodeInstructionType(u)==="SetComputeUnitLimit"),a=Number((s*1.3).toFixed(0)),o=Yn.setComputeUnitLimit({units:a});return r>=0?i[r]=o:i.push(o),a.toString()}async function Hr(s,i,r){let a=s.findIndex(m=>m.programId.equals(Yn.programId)&&da.decodeInstructionType(m)==="SetComputeUnitPrice"),o=BigInt(r||await Ls(i)),u=Yn.setComputeUnitPrice({microLamports:o});return a>=0?s[a]=u:s.push(u),o.toString()}async function Ls(s){let i=await s.getRecentPrioritizationFees(),r=0;for(let a of i)r+=a.prioritizationFee;return(r/i.length).toFixed(0)}g();y();f();import{NATIVE_MINT as Xs}from"@solana/spl-token";import{Connection as Ys,TransactionMessage as ya,VersionedTransaction as Ks}from"@solana/web3.js";import ha,{AxiosError as Ta}from"axios";var Kn=class{connection;jupiterUrl;apiKeyHeader;maxAccounts;constructor(i,r){this.connection=new Ys(i),this.jupiterUrl=r.jupiterUrl.replace(/\/$/,""),this.apiKeyHeader=r.jupiterApiKeyHeader,this.maxAccounts=r.jupiterMaxAccounts}async getJupiterSwapTx(i,r,a,o){let u;try{let P=o?"ExactOut":"ExactIn",x=`${this.jupiterUrl}/quote?inputMint=${r}&outputMint=${Xs.toString()}&amount=${a}&swapMode=${P}&slippageBps=100&onlyDirectRoutes=true`;this.maxAccounts&&(x+=`&maxAccounts=${this.maxAccounts}`),u=await ha.get(x,{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(P){throw P instanceof Ta&&P.response&&P.response.data&&P.response.data.error?new he(P.response.data.error):new he("Cannot get route")}let m;if(o&&u?.data?.inAmount)m=u.data.inAmount;else if(o)throw new he("Cannot get inAmount");let p;try{p=await ha.post(`${this.jupiterUrl}/swap`,{quoteResponse:u.data,userPublicKey:i,wrapAndUnwrapSol:!0},{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(P){throw P instanceof Ta&&P.response&&P.response.data&&P.response.data.error?new he(P.response.data.error):new he("Cannot get swap transaction")}let h;if(p?.data?.swapTransaction)h=p.data.swapTransaction;else throw new he("Cannot get swap transaction");let T=C.from(h,"base64"),S=Ks.deserialize(T);return o?{tx:S,amountIn:m}:{tx:S}}async amendJupiterWithSdkTx(i,r){try{let a=await Mt(i,this.connection),o=await Mt(r,this.connection),u=ya.decompile(i.message,{addressLookupTableAccounts:a}),m=ya.decompile(r.message,{addressLookupTableAccounts:o});if(m.instructions.shift(),u.instructions.push(...m.instructions),a.push(...o),i.message=u.compileToV0Message(a),r.message.header.numRequiredSignatures===2&&i.signatures.length===1){let p=r.signatures[0];if(!p)throw new O("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 zr=1e6,Sa=1.1,Hn=class extends Ee{constructor(r,a,o){super();this.solanaRpcUrl=r;this.params=a;this.api=o;this.jupiterService=new Kn(r,a.jupiterParams)}chainType="SOLANA";jupiterService;async buildRawTransactionSwap(r){let a=ot(this.chainType,r);return await this.buildSwapTransaction(a,r.sourceToken.poolAddress,r.destinationToken.poolAddress,r.txFeeParams)}async buildSwapTransaction(r,a,o,u){let{fromAccountAddress:m,amount:p,contractAddress:h,fromTokenAddress:T,toTokenAddress:S,toAccountAddress:P,minimumReceiveAmount:x}=r,I=m,F=h,v=T,N=S,M=o,D=P,W=new re(I),U=yt(this.solanaRpcUrl,W.toString()),j=new Qr(hn,F,U),L=await jt(j.programId),we=await ft(j.programId),Ae=new re(v),Ve=await Zt(Ae,j.programId),je=new re(a),Ke=await Qe(W,Ae),Me=new re(D),fe=new re(N),Ce=await Zt(fe,j.programId),Oe=new re(M),Be=await Qe(Me,fe),Ze=[ht.ComputeBudgetProgram.setComputeUnitLimit({units:zr})];try{await _t(Be,U)}catch{let Fn=await Hs.associatedToken(U).methods.create().accounts({mint:fe,owner:Me,associatedAccount:Be}).instruction();Ze.push(Fn)}let _e=await j.methods.swap(new Jt(p),new Jt(x||0)).accounts({payer:W,config:we,bridgeAuthority:L,user:W,sendBridgeToken:Ve,sendMint:Ae,sendPool:je,sendUserToken:Ke,receiveBridgeToken:Ce,receiveMint:fe,receivePool:Oe,receiveUserToken:Be}).preInstructions(Ze).transaction(),De=U.connection;return _e.recentBlockhash=(await De.getLatestBlockhash()).blockhash,_e.feePayer=W,await $t(_e,u,this.solanaRpcUrl),await this.convertToVersionedTransaction(_e,De)}async buildRawTransactionSend(r){let a=await qe(this.chainType,r,this.api),o=this.addPoolAddress(r,a),u=o.gasFeePaymentMethod=="stablecoin",m;if(u)try{let{tx:T,solTxSendUpdatedParams:S}=await this.processJup(o,r,!0);m=T,o={...o,...S}}catch{try{let{tx:S,solTxSendUpdatedParams:P}=await this.processJup(o,r,!1);m=S,o={...o,...P}}catch(S){throw S instanceof ue?S:S instanceof Error&&S.message?new he(`Some error occurred during creation Jupiter swap transaction. ${S.message}`):new he("Some error occurred during creation Jupiter swap transaction")}}let p,h;switch(a.messenger){case 1:{let T=await this.prepareSwapAndBridgeData(o);p=await this.buildSwapAndBridgeAllbridgeTransaction(T);break}case 2:{let T=await this.prepareSwapAndBridgeData(o),{transaction:S,messageAccount:P}=await this.buildSwapAndBridgeWormholeTransaction(T);p=S,h=P;break}case 3:case 4:{let T=await this.prepareSwapAndBridgeCctpData(o),{transaction:S,messageSentEventDataKeypair:P}=await this.buildSwapAndBridgeCctpTransaction(r.destinationToken.chainSymbol,T);p=S,h=P;break}case 5:throw new Re("Messenger OFT is not supported yet.")}if(u){if(!m)throw new he("Swap tx is absent");p=await this.jupiterService.amendJupiterWithSdkTx(m,p)}return await ga(p,r.txFeeParams,this.solanaRpcUrl),h&&p.sign([h]),p}async processJup(r,a,o){let{fee:u,extraGas:m,gasFeePaymentMethod:p}=await this.convertStableCoinFeeAndExtraGasToNativeCurrency(a.sourceToken,r),h=o?et(u):et(r.fee);m&&(h=h.plus(m)),o||(h=h.mul(Sa));let{tx:T,amountIn:S}=await this.jupiterService.getJupiterSwapTx(a.fromAccountAddress,a.sourceToken.tokenAddress,h.toFixed(0),o),P;if(o){if(!S)throw new he("Cannot get inAmount");P=et(r.amount).minus(et(S).mul(Sa)).toFixed(0)}else P=et(r.amount).minus(h).toFixed(0);if(et(P).lte(0))throw new Gt(`Amount not enough to pay fee, ${J(et(P).minus(1).neg(),a.sourceToken.decimals).toFixed()} stables is missing`);return{tx:T,solTxSendUpdatedParams:{amount:P,fee:u,extraGas:m,gasFeePaymentMethod:p}}}addPoolAddress(r,a){return{...a,poolAddress:r.sourceToken.poolAddress}}async convertStableCoinFeeAndExtraGasToNativeCurrency(r,a){if(a.gasFeePaymentMethod=="stablecoin"){let o=(await this.api.getReceiveTransactionCost({sourceChainId:a.fromChainId,destinationChainId:a.toChainId,messenger:a.messenger,sourceToken:r.tokenAddress})).sourceNativeTokenPrice,u=et(a.fee).div(o).mul(et(10).pow(H.getChainDecimalsByType("SOLANA")-r.decimals)).toFixed(0),m;return a.extraGas&&(m=et(a.extraGas).div(o).mul(et(10).pow(H.getChainDecimalsByType("SOLANA")-r.decimals)).toFixed(0)),{fee:u,extraGas:m,gasFeePaymentMethod:"native"}}return{fee:a.fee,extraGas:a.extraGas,gasFeePaymentMethod:"native"}}getExtraGasInstruction(r,a,o){return ht.SystemProgram.transfer({fromPubkey:a,toPubkey:o,lamports:+r})}async prepareSwapAndBridgeData(r){let{amount:a,contractAddress:o,fromChainId:u,fromAccountAddress:m,fromTokenAddress:p,toChainId:h,toAccountAddress:T,toTokenAddress:S,poolAddress:P,extraGas:x}=r,I=p,F=m,v=h,N=S,M=T,D=o,W=u,U=yt(this.solanaRpcUrl,F),j=new Qr(hn,D,U),L=Array.from(jn()),we=new re(P),Ae=await ua(a,j,we),Ve=await _i(L,j.programId),je=await jt(j.programId),Ke=await Qe(new re(F),new re(I)),Me=await Zt(new re(I),j.programId),fe=await Zr(v,j.programId),Ce=await Ji(v,C.from(N),j.programId),Oe=await ft(j.programId),Be=await j.account.config.fetch(Oe),Ze=await ln(v,Be.gasOracleProgramId),_e=await ln(W,Be.gasOracleProgramId),De=ma({amount:Ae,recipient:C.from(M),nonce:C.from(L),receiveToken:C.from(N),destinationChainId:v,sourceChainId:W,chainBridge:(await jt(j.programId)).toBuffer()}),G={};return G.bridge=j,G.amount=new Jt(a),G.vusdAmount=new Jt(Ae),G.nonce=L,G.recipient=Array.from(M),G.receiveToken=Array.from(N),G.poolAccount=we,G.lockAccount=Ve,G.bridgeAuthority=je,G.userToken=Ke,G.bridgeTokenAccount=Me,G.chainBridgeAccount=fe,G.otherBridgeTokenAccount=Ce,G.userAccount=new re(F),G.destinationChainId=v,G.mint=new re(I),G.config=Oe,G.configAccountInfo=Be,G.gasPrice=Ze,G.thisGasPrice=_e,G.message=De,x&&(G.extraGasInstruction=this.getExtraGasInstruction(x,G.userAccount,Oe)),G}async buildSwapAndBridgeAllbridgeTransaction(r){let{bridge:a,vusdAmount:o,nonce:u,recipient:m,receiveToken:p,poolAccount:h,lockAccount:T,bridgeAuthority:S,userToken:P,bridgeTokenAccount:x,chainBridgeAccount:I,otherBridgeTokenAccount:F,userAccount:v,destinationChainId:N,mint:M,config:D,configAccountInfo:W,gasPrice:U,thisGasPrice:j,message:L,extraGasInstruction:we}=r,Ae=W.allbridgeMessengerProgramId,Ve=await _r(N,Ae),je=await ft(Ae),Ke=await Li(L,Ae),Me=[];we&&Me.push(we);let fe=await a.methods.swapAndBridge({vusdAmount:o,nonce:u,destinationChainId:N,recipient:m,receiveToken:p}).accounts({mint:M,user:v,config:D,lock:T,pool:h,gasPrice:U,thisGasPrice:j,bridgeAuthority:S,userToken:P,bridgeToken:x,chainBridge:I,messenger:Ae,messengerGasUsage:Ve,messengerConfig:je,sentMessageAccount:Ke,otherBridgeToken:F}).preInstructions([ht.ComputeBudgetProgram.setComputeUnitLimit({units:zr})]).postInstructions(Me).transaction(),Ce=yt(this.solanaRpcUrl,v.toString()).connection;return fe.recentBlockhash=(await Ce.getLatestBlockhash()).blockhash,fe.feePayer=v,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 O("Cannot find allbridgeLookupTableAccount");let u=new ht.TransactionMessage({payerKey:r.feePayer,recentBlockhash:r.recentBlockhash,instructions:r.instructions}).compileToV0Message([o]);return new ht.VersionedTransaction(u)}async buildSwapAndBridgeWormholeTransaction(r){let{bridge:a,vusdAmount:o,nonce:u,recipient:m,receiveToken:p,poolAccount:h,lockAccount:T,bridgeAuthority:S,userToken:P,bridgeTokenAccount:x,chainBridgeAccount:I,otherBridgeTokenAccount:F,userAccount:v,destinationChainId:N,mint:M,config:D,configAccountInfo:W,gasPrice:U,thisGasPrice:j,message:L,extraGasInstruction:we}=r,Ae=this.params.wormholeMessengerProgramId,[Ve]=re.findProgramAddressSync([C.from("Bridge")],new re(Ae)),[je]=re.findProgramAddressSync([C.from("fee_collector")],new re(Ae)),[Ke]=re.findProgramAddressSync([C.from("Sequence"),S.toBuffer()],new re(Ae)),Me=await _r(N,W.wormholeMessengerProgramId),fe=await ft(W.wormholeMessengerProgramId),Ce=ba.generate(),Oe=yt(this.solanaRpcUrl,v.toString()),Be=await Oe.connection.getAccountInfo(Ve);if(Be==null)throw new O("Cannot fetch wormhole bridge account info");let Ze=new Jt(Be.data.slice(16,24),"le").toString(),_e=Qs.transfer({fromPubkey:v,toPubkey:je,lamports:+Ze}),De=[];we&&De.push(we);let G={mint:M,user:v,config:D,lock:T,pool:h,gasPrice:U,thisGasPrice:j,bridgeAuthority:S,userToken:P,bridgeToken:x,chainBridge:I,otherBridgeToken:F,messengerGasUsage:Me,wormholeProgram:Ae,bridge:Ve,message:Ce.publicKey,wormholeMessenger:W.wormholeMessengerProgramId,sequence:Ke,feeCollector:je,wormholeMessengerConfig:fe,clock:ht.SYSVAR_CLOCK_PUBKEY},le=await a.methods.swapAndBridgeWormhole({vusdAmount:o,nonce:u,destinationChainId:N,recipient:m,receiveToken:p}).accounts(G).preInstructions([ht.ComputeBudgetProgram.setComputeUnitLimit({units:zr}),_e]).postInstructions(De).signers([Ce]).transaction();return le.recentBlockhash=(await Oe.connection.getLatestBlockhash()).blockhash,le.feePayer=v,{transaction:await this.convertToVersionedTransaction(le,Oe.connection),messageAccount:Ce}}async prepareSwapAndBridgeCctpData(r){let{contractAddress:a,amount:o,fromAccountAddress:u,fromTokenAddress:m,toChainId:p,toAccountAddress:h,toTokenAddress:T,extraGas:S}=r,P=a;if(!P)throw new Ie("Such route does not support CCTP protocol");let x=4,I=u,F=T,v=h,N=yt(this.solanaRpcUrl,I),M=new Qr(Aa,P,N),D=new re(m),W=await Xi(D,M.programId),U=new re(I),j=await M.account.cctpBridge.fetch(W),L={};return L.cctpBridge=M,L.cctpBridgeAccount=W,L.cctpAddressAccount=new re(P),L.amount=new Jt(o),L.recipient=Array.from(v),L.receiveToken=Array.from(F),L.userToken=await Qe(U,D),L.bridgeAuthority=await $i(W,M.programId),L.bridgeTokenAccount=await Yi(D,M.programId),L.chainBridgeAccount=await Zr(p,M.programId),L.userAccount=U,L.destinationChainId=p,L.mint=D,L.gasPrice=await ln(p,j.gasOracleProgramId),L.thisGasPrice=await ln(x,j.gasOracleProgramId),L.provider=N,S&&(L.extraGasInstruction=this.getExtraGasInstruction(S,L.userAccount,W)),L}async buildSwapAndBridgeCctpTransaction(r,a){let{cctpBridge:o,cctpBridgeAccount:u,amount:m,recipient:p,receiveToken:h,bridgeAuthority:T,userToken:S,bridgeTokenAccount:P,chainBridgeAccount:x,userAccount:I,destinationChainId:F,mint:v,gasPrice:N,thisGasPrice:M,extraGasInstruction:D,provider:W}=a,U=this.params.cctpParams.cctpDomains[r],j=this.params.cctpParams.cctpTransmitterProgramId,L=this.params.cctpParams.cctpTokenMessengerMinter;if(U==null||!j||!L)throw new O("CCTP is not configured");let we=new re(j),Ae=new re(L),{messageTransmitterAccount:Ve,tokenMessenger:je,tokenMessengerEventAuthority:Ke,tokenMinter:Me,localToken:fe,remoteTokenMessengerKey:Ce,authorityPda:Oe}=Hi(U,v,we,Ae),Be=[];D&&Be.push(D);let Ze=ba.generate(),_e=Ki(o.programId,Ze.publicKey),De=await o.methods.bridge({amount:m,destinationChainId:F,recipient:p,receiveToken:h}).accounts({mint:v,user:I,cctpBridge:u,messageSentEventData:Ze.publicKey,lock:_e,cctpMessenger:Ae,messageTransmitterProgram:we,messageTransmitterAccount:Ve,tokenMessenger:je,tokenMinter:Me,localToken:fe,remoteTokenMessengerKey:Ce,authorityPda:Oe,eventAuthority:Ke,bridgeToken:P,gasPrice:N,thisGasPrice:M,chainBridge:x,userToken:S,bridgeAuthority:T}).preInstructions([ht.ComputeBudgetProgram.setComputeUnitLimit({units:2e6})]).postInstructions(Be).transaction(),G=W.connection;return De.recentBlockhash=(await G.getLatestBlockhash()).blockhash,De.feePayer=I,{transaction:await this.convertToVersionedTransaction(De,G),messageSentEventDataKeypair:Ze}}send(r){throw new de}};g();y();f();import{Address as qr,contract as ik}from"@stellar/stellar-sdk";import{Big as eo}from"big.js";g();y();f();import{contract as n}from"@stellar/stellar-sdk";var zs=n.Spec,qs=n.Client;var Tn=class extends qs{constructor(r){super(new zs(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAApnYXNfb3JhY2xlAAAAAAATAAAAAAAAAAxuYXRpdmVfdG9rZW4AAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9hbmRfYnJpZGdlAAAAAAkAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACXJlY2lwaWVudAAAAAAAA+4AAAAgAAAAAAAAABRkZXN0aW5hdGlvbl9jaGFpbl9pZAAAAAQAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAFbm9uY2UAAAAAAAAMAAAAAAAAAApnYXNfYW1vdW50AAAAAAAKAAAAAAAAABBmZWVfdG9rZW5fYW1vdW50AAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOcmVjZWl2ZV90b2tlbnMAAAAAAAgAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAA9zb3VyY2VfY2hhaW5faWQAAAAABAAAAAAAAAANcmVjZWl2ZV90b2tlbgAAAAAAA+4AAAAgAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAAAAAAJZXh0cmFfZ2FzAAAAAAAD6AAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAEc3dhcAAAAAYAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAA+4AAAAgAAAAAAAAAA1yZWNlaXZlX3Rva2VuAAAAAAAD7gAAACAAAAAAAAAACXJlY2lwaWVudAAAAAAAABMAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAJc3RvcF9zd2FwAAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc3RhcnRfc3dhcAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X2dhc19vcmFjbGUAAAAAAAEAAAAAAAAAC25ld19hZGRyZXNzAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X3JlYmFsYW5jZXIAAAAAAAEAAAAAAAAACnJlYmFsYW5jZXIAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X21lc3NlbmdlcgAAAAAAAAEAAAAAAAAACW1lc3NlbmdlcgAAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X2dhc191c2FnZQAAAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAJZ2FzX3VzYWdlAAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAPcmVnaXN0ZXJfYnJpZGdlAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAOYnJpZGdlX2FkZHJlc3MAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAQYWRkX2JyaWRnZV90b2tlbgAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAANdG9rZW5fYWRkcmVzcwAAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATcmVtb3ZlX2JyaWRnZV90b2tlbgAAAAACAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAIYWRkX3Bvb2wAAAACAAAAAAAAAARwb29sAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATd2l0aGRyYXdfZ2FzX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAfd2l0aGRyYXdfYnJpZGdpbmdfZmVlX2luX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAVaGFzX3Byb2Nlc3NlZF9tZXNzYWdlAAAAAAAAAQAAAAAAAAAHbWVzc2FnZQAAAAPuAAAAIAAAAAEAAAPpAAAAAQAAAAM=","AAAAAAAAAAAAAAAUaGFzX3JlY2VpdmVkX21lc3NhZ2UAAAABAAAAAAAAAAdtZXNzYWdlAAAAA+4AAAAgAAAAAQAAA+kAAAABAAAAAw==","AAAAAAAAAAAAAAAQZ2V0X3Bvb2xfYWRkcmVzcwAAAAEAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAKZ2V0X2NvbmZpZwAAAAAAAAAAAAEAAAPpAAAH0AAAAAZCcmlkZ2UAAAAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAUZ2V0X3RyYW5zYWN0aW9uX2Nvc3QAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAANZ2V0X2dhc191c2FnZQAAAAAAAAEAAAAAAAAACGNoYWluX2lkAAAABAAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAOZ2V0X2dhc19vcmFjbGUAAAAAAAAAAAABAAAD6QAAABMAAAAD","AAAAAAAAAAAAAAASZ2V0X2Fub3RoZXJfYnJpZGdlAAAAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAB9AAAAANQW5vdGhlckJyaWRnZQAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAB1N3YXBwZWQAAAAABgAAAAAAAAAOcmVjZWl2ZV9hbW91bnQAAAAAAAoAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAAEwAAAAAAAAALc2VuZF9hbW91bnQAAAAACgAAAAAAAAAKc2VuZF90b2tlbgAAAAAD7gAAACAAAAAAAAAABnNlbmRlcgAAAAAAEw==","AAAAAQAAAAAAAAAAAAAAClRva2Vuc1NlbnQAAAAAAAUAAAAAAAAABmFtb3VudAAAAAAACgAAAAAAAAAUZGVzdGluYXRpb25fY2hhaW5faWQAAAAEAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAADlRva2Vuc1JlY2VpdmVkAAAAAAAEAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAB21lc3NhZ2UAAAAD7gAAACAAAAAAAAAABW5vbmNlAAAAAAAADAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAAClJlY2VpdmVGZWUAAAAAAAMAAAAAAAAAF2JyaWRnZV90cmFuc2FjdGlvbl9jb3N0AAAAAAoAAAAAAAAACWV4dHJhX2dhcwAAAAAAAAoAAAAAAAAAGG1lc3NhZ2VfdHJhbnNhY3Rpb25fY29zdAAAAAo=","AAAAAQAAAAAAAAAAAAAAFUJyaWRnaW5nRmVlRnJvbVRva2VucwAAAAAAAAIAAAAAAAAAEGZlZV90b2tlbl9hbW91bnQAAAAKAAAAAAAAAANnYXMAAAAACg==","AAAAAQAAAAAAAAAAAAAADUFub3RoZXJCcmlkZ2UAAAAAAAACAAAAAAAAAAdhZGRyZXNzAAAAA+4AAAAgAAAAAAAAAAZ0b2tlbnMAAAAAA+wAAAPuAAAAIAAAAAE=","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAABgAAAGBwcmVjb21wdXRlZCB2YWx1ZXMgb2YgdGhlIHNjYWxpbmcgZmFjdG9yIHJlcXVpcmVkIGZvciBwYXlpbmcgdGhlIGJyaWRnaW5nIGZlZSB3aXRoIHN0YWJsZSB0b2tlbnMAAAAeYnJpZGdpbmdfZmVlX2NvbnZlcnNpb25fZmFjdG9yAAAAAAPsAAAAEwAAAAoAAAAAAAAACGNhbl9zd2FwAAAAAQAAAGxwcmVjb21wdXRlZCB2YWx1ZXMgdG8gZGl2aWRlIGJ5IHRvIGNoYW5nZSB0aGUgcHJlY2lzaW9uIGZyb20gdGhlIEdhcyBPcmFjbGUgcHJlY2lzaW9uIHRvIHRoZSB0b2tlbiBwcmVjaXNpb24AAAAWZnJvbV9nYXNfb3JhY2xlX2ZhY3RvcgAAAAAD7AAAABMAAAAKAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAAVwb29scwAAAAAAA+wAAAPuAAAAIAAAABMAAAAAAAAACnJlYmFsYW5jZXIAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAwAAAAEAAAAAAAAAC090aGVyQnJpZGdlAAAAAAEAAAAEAAAAAQAAAAAAAAALU2VudE1lc3NhZ2UAAAAAAQAAA+4AAAAgAAAAAQAAAAAAAAAPUmVjZWl2ZWRNZXNzYWdlAAAAAAEAAAPuAAAAIA==","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),r);this.options=r}fromJSON={initialize:this.txFromJSON,swap_and_bridge:this.txFromJSON,receive_tokens:this.txFromJSON,swap:this.txFromJSON,stop_swap:this.txFromJSON,start_swap:this.txFromJSON,set_gas_oracle:this.txFromJSON,set_stop_authority:this.txFromJSON,set_rebalancer:this.txFromJSON,set_messenger:this.txFromJSON,set_gas_usage:this.txFromJSON,register_bridge:this.txFromJSON,add_bridge_token:this.txFromJSON,remove_bridge_token:this.txFromJSON,add_pool:this.txFromJSON,withdraw_gas_tokens:this.txFromJSON,withdraw_bridging_fee_in_tokens:this.txFromJSON,has_processed_message:this.txFromJSON,has_received_message:this.txFromJSON,get_pool_address:this.txFromJSON,get_config:this.txFromJSON,get_stop_authority:this.txFromJSON,get_transaction_cost:this.txFromJSON,get_gas_usage:this.txFromJSON,get_admin:this.txFromJSON,get_gas_oracle:this.txFromJSON,get_another_bridge:this.txFromJSON,set_admin:this.txFromJSON,upgrade:this.txFromJSON}};var Qn=class extends Ee{constructor(r,a,o){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=o}chainType="SRB";async buildRawTransactionSend(r){let a=await qe(this.chainType,r,this.api);return await this.buildRawTransactionSendFromParams(a)}async buildRawTransactionSendFromParams(r){let{amount:a,contractAddress:o,fromAccountAddress:u,fromTokenAddress:m,toChainId:p,toAccountAddress:h,toTokenAddress:T,fee:S,gasFeePaymentMethod:P,extraGas:x}=r,I=S;x&&(I=eo(I).plus(x).toFixed());let F=this.getContract(Tn,o,u),v;return P==="stablecoin"?v=await F.swap_and_bridge({sender:u,token:qr.contract(C.from(m)).toString(),amount:BigInt(a),recipient:C.from(h),destination_chain_id:+p,receive_token:C.from(T),nonce:st(),gas_amount:BigInt(0),fee_token_amount:BigInt(I)}):v=await F.swap_and_bridge({sender:u,token:qr.contract(C.from(m)).toString(),amount:BigInt(a),recipient:C.from(h),destination_chain_id:+p,receive_token:C.from(T),nonce:st(),gas_amount:BigInt(I),fee_token_amount:BigInt(0)}),v.toXDR()}async buildRawTransactionSwap(r){let a=ot(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:o,fromAccountAddress:u,fromTokenAddress:m,toAccountAddress:p,toTokenAddress:h,minimumReceiveAmount:T}=r;return(await this.getContract(Tn,o,u).swap({sender:u,amount:BigInt(a),token:qr.contract(C.from(m)).toBuffer(),receive_token:C.from(h),recipient:p,receive_amount_min:BigInt(T)})).toXDR()}send(r){throw new de}getContract(r,a,o){let u={publicKey:o,contractId:a,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new r(u)}};g();y();f();import{SuiClient as po}from"@mysten/sui/client";import{coinWithBalance as ce,Transaction as mi}from"@mysten/sui/transactions";import{SUI_CLOCK_OBJECT_ID as Wa}from"@mysten/sui/utils";import{Big as li}from"big.js";var di=He(Tt());g();y();f();var dt=He(Tt());ye();function Ca(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap`,typeArguments:i,arguments:[Z(s,r.bridge),Z(s,r.coin),Xe(s,r.receiveAmountMin,"u64")]})}function Ba(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::deposit`,typeArguments:[i],arguments:[Z(s,r.bridge),Z(s,r.userDeposit),Z(s,r.coin)]})}function Ia(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::withdraw`,typeArguments:[i],arguments:[Z(s,r.bridge),Z(s,r.userDeposit),Xe(s,r.amountLp,"u64")]})}function Ra(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::claim_reward`,typeArguments:[i],arguments:[Z(s,r.bridge),Z(s,r.userDeposit)]})}function va(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::pool`,typeArguments:[i],arguments:[Z(s,r)]})}function ti(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap_and_bridge_wormhole`,typeArguments:[i],arguments:[Z(s,r.bridge),Z(s,r.messenger),Z(s,r.wormholeState),Z(s,r.theClock),Z(s,r.gasOracle),Z(s,r.amount),Z(s,r.recipient),Xe(s,r.destinationChainId,"u8"),Z(s,r.receiveToken),Xe(s,r.nonce,"u256"),Z(s,r.feeSuiCoin),Z(s,r.feeTokenCoin)]})}function ka(s,i){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::new_user_deposit`,typeArguments:[i],arguments:[]})}function ni(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap_and_bridge`,typeArguments:[i],arguments:[Z(s,r.bridge),Z(s,r.messenger),Z(s,r.gasOracle),Z(s,r.amount),Z(s,r.recipient),Xe(s,r.destinationChainId,"u8"),Z(s,r.receiveToken),Xe(s,r.nonce,"u256"),Z(s,r.feeSuiCoin),Z(s,r.feeTokenCoin)]})}var Ea=He(ii());g();y();f();var Fa=He(ii());ye();function ai(s,i,r){return s.moveCall({target:`${Fa.PUBLISHED_AT}::cctp_bridge_interface::bridge`,typeArguments:[i],arguments:[Z(s,r.cctpBridge),Z(s,r.gasOracle),Z(s,r.tokenMessengerMinterState),Z(s,r.messageTransmitterState),Z(s,r.treasury),Z(s,r.denyList),Z(s,r.amount),Z(s,r.feeSuiCoin),Z(s,r.feeTokenCoin),Xe(s,r.destinationChainId,"u8"),Z(s,r.recipient),Z(s,r.recipientWalletAddress)]})}var Ua=He(oi());g();y();f();var Na=He(oi());g();y();f();g();y();f();ye();import{bcs as bt}from"@mysten/sui/bcs";import{fromHEX as oo,toHEX as co}from"@mysten/sui/utils";g();y();f();import{bcs as so}from"@mysten/sui/bcs";ye();var ci=class s{__VectorClass=!0;static $typeName="vector";static $numTypeParams=1;static $isPhantom=[!1];$typeName="vector";$fullTypeName;$typeArgs;$isPhantom=[!1];elements;constructor(i,r){this.$fullTypeName=z(this.$typeName,...i),this.$typeArgs=i,this.elements=r}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs(bn(i)),fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),new:r=>new s([_(i)],r),kind:"VectorClassReified"}}static get r(){return s.reified}static get bcs(){return so.vector}static fromFields(i,r){return s.reified(i).new(r.map(a=>K(i,a)))}static fromFieldsWithTypes(i,r){return s.reified(i).new(r.map(a=>X(i,a)))}static fromBcs(i,r){return s.fromFields(i,s.bcs(bn(i)).parse(r))}toJSONField(){return this.elements.map(i=>Ot(this.$typeArgs[0],i))}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,elements:this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new(r.map(a=>Y(i,a)))}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a vector json object");return s.fromJSONField(i,r.elements)}};function Lt(s){return ci.r(s)}function oe(s){return typeof s=="string"?{phantomType:s,kind:"PhantomReified"}:{phantomType:s.fullTypeName,kind:"PhantomReified"}}var Ao=bt.bytes(32).transform({input:s=>oo(s),output:s=>co(s)});function bn(s){switch(s){case"bool":return bt.bool();case"u8":return bt.u8();case"u16":return bt.u16();case"u32":return bt.u32();case"u64":return bt.u64();case"u128":return bt.u128();case"u256":return bt.u256();case"address":return Ao;default:return s.bcs}}function _(s){switch(s){case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"bool":case"address":return s}switch(s.kind){case"PhantomReified":return s.phantomType;case"StructClassReified":return s.fullTypeName;case"VectorClassReified":return s.fullTypeName}throw new Error("unreachable")}function K(s,i){switch(s){case"bool":case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return BigInt(i);case"address":return`0x${i}`}if(s.kind==="VectorClassReified")return s.fromFields(i).elements;switch(s.typeName){case"0x1::string::String":case"0x1::ascii::String":return new TextDecoder().decode(Uint8Array.from(i.bytes)).toString();case"0x2::url::Url":return new TextDecoder().decode(Uint8Array.from(i.url.bytes)).toString();case"0x2::object::ID":return`0x${i.bytes}`;case"0x2::object::UID":return`0x${i.id.bytes}`;case"0x1::option::Option":return i.vec.length===0?null:s.fromFields(i).vec[0];default:return s.fromFields(i)}}function X(s,i){switch(s){case"bool":case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return BigInt(i);case"address":return i}if(s.kind==="VectorClassReified")return s.fromFieldsWithTypes(i).elements;switch(s.typeName){case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":return i;case"0x2::object::UID":return i.id;case"0x2::balance::Balance":return s.fromFields({value:BigInt(i)});case"0x1::option::Option":return i===null?null:X(s.reifiedTypeArgs[0],i);default:return s.fromFieldsWithTypes(i)}}function tt(s,i,r){if(r.length!==i.length)throw new Error(`provided item has mismatching number of type argments ${s} (expected ${r.length}, got ${i.length}))`);for(let a=0;a<i.length;a++)if(V(i[a])!==V(_(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 Y(s,i){switch(s){case"bool":case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return BigInt(i);case"address":return i}if(s.kind==="VectorClassReified")return s.fromJSONField(i).elements;switch(s.typeName){case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":case"0x2::object::UID":return i;case"0x1::option::Option":return i===null?null:Y(s.reifiedTypeArgs[0],i);default:return s.fromJSONField(i)}}ye();g();y();f();var zn="0x1";import{bcs as tg}from"@mysten/sui/bcs";import{fromB64 as rg}from"@mysten/sui/utils";g();y();f();ye();import{bcs as Ai}from"@mysten/sui/bcs";import{fromB64 as uo}from"@mysten/sui/utils";function qn(s){return s=V(s),s===`${zn}::string::String`}var er=class s{__StructClass=!0;static get $typeName(){return`${zn}::string::String`}static $numTypeParams=0;static $isPhantom=[];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;bytes;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.bytes=r.bytes}static reified(){return{typeName:s.$typeName,fullTypeName:z(s.$typeName),typeArgs:[],isPhantom:s.$isPhantom,reifiedTypeArgs:[],fromFields:i=>s.fromFields(i),fromFieldsWithTypes:i=>s.fromFieldsWithTypes(i),fromBcs:i=>s.fromBcs(i),bcs:s.bcs,fromJSONField:i=>s.fromJSONField(i),fromJSON:i=>s.fromJSON(i),fromSuiParsedData:i=>s.fromSuiParsedData(i),fromSuiObjectData:i=>s.fromSuiObjectData(i),fetch:async(i,r)=>s.fetch(i,r),new:i=>new s([],i),kind:"StructClassReified"}}static get r(){return s.reified()}static phantom(){return oe(s.reified())}static get p(){return s.phantom()}static get bcs(){return Ai.struct("String",{bytes:Ai.vector(Ai.u8())})}static fromFields(i){return s.reified().new({bytes:K(Lt("u8"),i.bytes)})}static fromFieldsWithTypes(i){if(!qn(i.type))throw new Error("not a String type");return s.reified().new({bytes:X(Lt("u8"),i.fields.bytes)})}static fromBcs(i){return s.fromFields(s.bcs.parse(i))}toJSONField(){return{bytes:Ot("vector<u8>",this.bytes)}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i){return s.reified().new({bytes:Y(Lt("u8"),i.bytes)})}static fromJSON(i){if(i.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return s.fromJSONField(i)}static fromSuiParsedData(i){if(i.dataType!=="moveObject")throw new Error("not an object");if(!qn(i.type))throw new Error(`object at ${i.fields.id} is not a String object`);return s.fromFieldsWithTypes(i)}static fromSuiObjectData(i){if(i.bcs){if(i.bcs.dataType!=="moveObject"||!qn(i.bcs.type))throw new Error("object at is not a String object");return s.fromBcs(uo(i.bcs.bcsBytes))}if(i.content)return s.fromSuiParsedData(i.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r){let a=await i.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching String object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!qn(a.data.bcs.type))throw new Error(`object at id ${r} is not a String object`);return s.fromSuiObjectData(a.data)}};ye();g();y();f();ye();g();y();f();var St="0x2";import{bcs as ui}from"@mysten/sui/bcs";import{fromB64 as Da,fromHEX as mo,toHEX as lo}from"@mysten/sui/utils";function tr(s){return s=V(s),s===`${St}::object::ID`}var Dt=class s{__StructClass=!0;static get $typeName(){return`${St}::object::ID`}static $numTypeParams=0;static $isPhantom=[];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;bytes;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.bytes=r.bytes}static reified(){return{typeName:s.$typeName,fullTypeName:z(s.$typeName),typeArgs:[],isPhantom:s.$isPhantom,reifiedTypeArgs:[],fromFields:i=>s.fromFields(i),fromFieldsWithTypes:i=>s.fromFieldsWithTypes(i),fromBcs:i=>s.fromBcs(i),bcs:s.bcs,fromJSONField:i=>s.fromJSONField(i),fromJSON:i=>s.fromJSON(i),fromSuiParsedData:i=>s.fromSuiParsedData(i),fromSuiObjectData:i=>s.fromSuiObjectData(i),fetch:async(i,r)=>s.fetch(i,r),new:i=>new s([],i),kind:"StructClassReified"}}static get r(){return s.reified()}static phantom(){return oe(s.reified())}static get p(){return s.phantom()}static get bcs(){return ui.struct("ID",{bytes:ui.bytes(32).transform({input:i=>mo(i),output:i=>lo(i)})})}static fromFields(i){return s.reified().new({bytes:K("address",i.bytes)})}static fromFieldsWithTypes(i){if(!tr(i.type))throw new Error("not a ID type");return s.reified().new({bytes:X("address",i.fields.bytes)})}static fromBcs(i){return s.fromFields(s.bcs.parse(i))}toJSONField(){return{bytes:this.bytes}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i){return s.reified().new({bytes:Y("address",i.bytes)})}static fromJSON(i){if(i.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return s.fromJSONField(i)}static fromSuiParsedData(i){if(i.dataType!=="moveObject")throw new Error("not an object");if(!tr(i.type))throw new Error(`object at ${i.fields.id} is not a ID object`);return s.fromFieldsWithTypes(i)}static fromSuiObjectData(i){if(i.bcs){if(i.bcs.dataType!=="moveObject"||!tr(i.bcs.type))throw new Error("object at is not a ID object");return s.fromBcs(Da(i.bcs.bcsBytes))}if(i.content)return s.fromSuiParsedData(i.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r){let a=await i.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching ID object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!tr(a.data.bcs.type))throw new Error(`object at id ${r} is not a ID object`);return s.fromSuiObjectData(a.data)}};function nr(s){return s=V(s),s===`${St}::object::UID`}var Ye=class s{__StructClass=!0;static get $typeName(){return`${St}::object::UID`}static $numTypeParams=0;static $isPhantom=[];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;id;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.id=r.id}static reified(){return{typeName:s.$typeName,fullTypeName:z(s.$typeName),typeArgs:[],isPhantom:s.$isPhantom,reifiedTypeArgs:[],fromFields:i=>s.fromFields(i),fromFieldsWithTypes:i=>s.fromFieldsWithTypes(i),fromBcs:i=>s.fromBcs(i),bcs:s.bcs,fromJSONField:i=>s.fromJSONField(i),fromJSON:i=>s.fromJSON(i),fromSuiParsedData:i=>s.fromSuiParsedData(i),fromSuiObjectData:i=>s.fromSuiObjectData(i),fetch:async(i,r)=>s.fetch(i,r),new:i=>new s([],i),kind:"StructClassReified"}}static get r(){return s.reified()}static phantom(){return oe(s.reified())}static get p(){return s.phantom()}static get bcs(){return ui.struct("UID",{id:Dt.bcs})}static fromFields(i){return s.reified().new({id:K(Dt.reified(),i.id)})}static fromFieldsWithTypes(i){if(!nr(i.type))throw new Error("not a UID type");return s.reified().new({id:X(Dt.reified(),i.fields.id)})}static fromBcs(i){return s.fromFields(s.bcs.parse(i))}toJSONField(){return{id:this.id}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i){return s.reified().new({id:Y(Dt.reified(),i.id)})}static fromJSON(i){if(i.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return s.fromJSONField(i)}static fromSuiParsedData(i){if(i.dataType!=="moveObject")throw new Error("not an object");if(!nr(i.type))throw new Error(`object at ${i.fields.id} is not a UID object`);return s.fromFieldsWithTypes(i)}static fromSuiObjectData(i){if(i.bcs){if(i.bcs.dataType!=="moveObject"||!nr(i.bcs.type))throw new Error("object at is not a UID object");return s.fromBcs(Da(i.bcs.bcsBytes))}if(i.content)return s.fromSuiParsedData(i.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r){let a=await i.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching UID object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!nr(a.data.bcs.type))throw new Error(`object at id ${r} is not a UID object`);return s.fromSuiObjectData(a.data)}};function nt(s,i){return s.moveCall({target:`${Na.PUBLISHED_AT}::bytes32::from_hex`,arguments:[Xe(s,i,`${er.$typeName}`)]})}g();y();f();async function At(s,i,r=[]){let a=await s(i),o=r.concat(a.data);return a.hasNextPage&&a.nextCursor?At(s,a.nextCursor,o):o}var Xt=class extends Ee{constructor(r,a){super();this.nodeRpcUrlsConfig=r;this.api=a;this.client=new po({url:r.getNodeRpcUrl(this.chainSymbol)})}chainType="SUI";chainSymbol="SUI";client;send(){throw new O("Method send not implemented.")}async buildRawTransactionSwap(r){let a=r.sourceToken.suiAddresses;if(!a)throw new O("SUI token must contain 'suiAddresses'");(0,di.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin);let o=ot(this.chainType,r);return await this.buildRawTransactionSwapFromParams(o,a)}async buildRawTransactionSwapFromParams(r,a){let{amount:o,fromAccountAddress:u,fromTokenAddress:m,toTokenAddress:p,minimumReceiveAmount:h}=r,T=new mi;T.setSender(u);let S={bridge:a.bridgeObjectAddress,coin:ce({balance:BigInt(o),type:m}),receiveAmountMin:BigInt(h)},P=Ca(T,[m,p],S),x=await At(I=>this.client.getCoins({owner:r.toAccountAddress,coinType:p,cursor:I}));return x.length===0||!x[0]?T.transferObjects([P],r.toAccountAddress):T.mergeCoins(x[0].coinObjectId,[P]),await T.toJSON({client:this.client})}async buildRawTransactionSendFromCustomTx(r,a,o){let u=mi.from(r);return this.buildRawTransactionSendFromTx(o,u,a)}async buildRawTransactionSend(r){return this.buildRawTransactionSendFromTx(r,new mi)}async buildRawTransactionSendFromTx(r,a,o){let u=await qe(this.chainType,r,this.api),{messenger:m}=u,p=r.sourceToken.suiAddresses;if(!p)throw new O("SUI token must contain 'suiAddresses'");switch((0,di.setAddress)(p.bridgeAddress,p.bridgeAddressOrigin),(0,Ua.setAddress)(p.utilsAddress),m){case 1:return this.buildRawTransactionAllbridgeSend(u,p,a,o);case 2:return this.buildRawTransactionWormholeSend(u,p,a,o);case 3:case 4:return this.buildRawTransactionCctpSend(r,u,p,a,o);case 5:throw new Re("Messenger OFT is not supported yet.")}}async buildRawTransactionAllbridgeSend(r,a,o,u){let{amount:m,fromAccountAddress:p,fromTokenAddress:h,toChainId:T,toAccountAddress:S,toTokenAddress:P,fee:x,gasFeePaymentMethod:I,extraGas:F}=r,v=x;if(F&&(v=li(v).plus(F).toFixed()),o.setSender(p),I==="stablecoin"){let N=BigInt(m)-BigInt(v),M,D;if(u){let[U]=o.splitCoins(u,[v]);M=u,D=U}else M=ce({balance:N,type:h}),D=ce({balance:BigInt(v),type:h});let W={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:M,destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(P)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:D,feeSuiCoin:ce({balance:BigInt(0),useGasCoin:!1})};ni(o,h,W)}else{let N=v==="0"?ce({balance:BigInt(v),useGasCoin:!1}):ce({balance:BigInt(v)}),M={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:u??ce({balance:BigInt(m),type:h}),destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(P)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(0),type:h}),feeSuiCoin:N};ni(o,h,M)}return await o.toJSON({client:this.client})}async buildRawTransactionWormholeSend(r,a,o,u){let{amount:m,fromAccountAddress:p,fromTokenAddress:h,toChainId:T,toAccountAddress:S,toTokenAddress:P,fee:x,gasFeePaymentMethod:I,extraGas:F}=r,v=x;if(F&&(v=li(v).plus(F).toFixed()),o.setSender(p),I==="stablecoin"){let N=BigInt(m)-BigInt(v),M,D;if(u){let[U]=o.splitCoins(u,[v]);M=u,D=U}else M=ce({balance:N,type:h}),D=ce({balance:BigInt(v),type:h});let W={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:Wa,amount:M,destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(P)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:D,feeSuiCoin:ce({balance:BigInt(0),useGasCoin:!1})};ti(o,h,W)}else{let N=v==="0"?ce({balance:BigInt(v),useGasCoin:!1}):ce({balance:BigInt(v)}),M={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:Wa,amount:u??ce({balance:BigInt(m),type:h}),destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(P)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(0),type:h}),feeSuiCoin:N};ti(o,h,M)}return await o.toJSON({client:this.client})}async buildRawTransactionCctpSend(r,a,o,u,m){let{amount:p,fromAccountAddress:h,fromTokenAddress:T,toChainId:S,toAccountAddress:P,fee:x,gasFeePaymentMethod:I,extraGas:F}=a;(0,Ea.setAddress)(o.cctpAddress,o.cctpAddressOrigin);let v=x;F&&(v=li(v).plus(F).toFixed()),u.setSender(h);let N=nt(u,ze(P)),M;if(r.destinationToken.chainType==="SOLANA"){let D=await $n(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));M=nt(u,ze(D))}else M=N;if(I==="stablecoin"){let D=BigInt(p)-BigInt(v),W,U;if(m){let[L]=u.splitCoins(m,[v]);W=m,U=L}else W=ce({balance:D,type:T}),U=ce({balance:BigInt(v),type:T});let j={cctpBridge:o.cctpObjectAddress,tokenMessengerMinterState:o.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:o.cctpMessageTransmitterStateObjectAddress,treasury:o.cctpTreasuryObjectAddress,denyList:o.cctpDenyListObjectAddress,amount:W,destinationChainId:S,recipient:M,recipientWalletAddress:N,gasOracle:o.gasOracleObjectAddress,feeTokenCoin:U,feeSuiCoin:ce({balance:BigInt(0),useGasCoin:!1})};ai(u,T,j)}else{let D=v==="0"?ce({balance:BigInt(v),useGasCoin:!1}):ce({balance:BigInt(v)}),W={cctpBridge:o.cctpObjectAddress,tokenMessengerMinterState:o.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:o.cctpMessageTransmitterStateObjectAddress,treasury:o.cctpTreasuryObjectAddress,denyList:o.cctpDenyListObjectAddress,amount:m??ce({balance:BigInt(p),type:T}),destinationChainId:S,recipient:M,recipientWalletAddress:N,gasOracle:o.gasOracleObjectAddress,feeTokenCoin:ce({balance:BigInt(0),type:T}),feeSuiCoin:D};ai(u,T,W)}return await u.toJSON({client:this.client})}};g();y();f();import{Big as yo}from"big.js";g();y();f();g();y();f();import go from"bn.js";function rr(s){return"0x"+new go(s).toString("hex")}function Ga(s){return new Promise(i=>setTimeout(()=>i(),s))}async function ir(s,i){let r=await s.trx.sign(i);if(!r.signature)throw new Vt("Transaction was not signed properly");let o=(await s.trx.sendRawTransaction(r)).transaction.txID;return await fo(s,o),{txId:o}}async function fo(s,i,r=1e4){let a=Date.now();for(;;){if(Date.now()-a>r)throw new un("Transaction not found");let o=await s.trx.getUnconfirmedTransactionInfo(i);if(!o?.receipt){await Ga(2e3);continue}if(o.receipt.result==="SUCCESS")return o;throw new un(`Transaction status is ${o.receipt.result}`)}}var Sn=class extends Ee{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async send(r){let a=await qe(this.chainType,r,this.api),o=await this.buildRawTransactionSendFromParams(r,a);return await ir(this.tronWeb,o)}async buildRawTransactionSwap(r){let a=ot(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:o,fromAccountAddress:u,fromTokenAddress:m,toAccountAddress:p,toTokenAddress:h,minimumReceiveAmount:T}=r,S=[{type:"uint256",value:a},{type:"bytes32",value:m},{type:"bytes32",value:h},{type:"address",value:p},{type:"uint256",value:T}];return this.buildRawTransaction(o,"swap(uint256,bytes32,bytes32,address,uint256)",S,"0",u)}async buildRawTransactionSend(r){let a=await qe(this.chainType,r,this.api);return this.buildRawTransactionSendFromParams(r,a)}async buildRawTransactionSendFromParams(r,a){let{amount:o,contractAddress:u,fromAccountAddress:m,fromTokenAddress:p,toChainId:h,toAccountAddress:T,toTokenAddress:S,messenger:P,fee:x,gasFeePaymentMethod:I,extraGas:F,extraGasDest:v}=a,N=x;F&&(N=yo(N).plus(F).toFixed());let M=st().toString(),D,W,U;switch(P){case 3:case 4:I==="stablecoin"?(D=[{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:N}],W="0"):(D=[{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:0}],W=N),U="bridge(uint256,bytes32,uint256,uint256)";break;case 5:I==="stablecoin"?(D=[{type:"address",value:r.sourceToken.tokenAddress},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:N},{type:"uint256",value:v??"0"},{type:"uint256",value:"10"}],W="0"):(D=[{type:"address",value:r.sourceToken.tokenAddress},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:0},{type:"uint256",value:v??"0"},{type:"uint256",value:"10"}],W=N),U="bridge(address,uint256,bytes32,uint256,uint256,uint256,uint256)";break;case 1:case 2:I==="stablecoin"?(D=[{type:"bytes32",value:p},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"bytes32",value:S},{type:"uint256",value:M},{type:"uint8",value:P},{type:"uint256",value:N}],W="0"):(D=[{type:"bytes32",value:p},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"bytes32",value:S},{type:"uint256",value:M},{type:"uint8",value:P},{type:"uint256",value:0}],W=N),U="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)";break}return this.buildRawTransaction(u,U,D,W,m)}async buildRawTransaction(r,a,o,u,m){let p=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+u},o,m);if(!p?.result?.result)throw new O("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}};var ar=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o;this.rawTxBuilder=new Jn(i,r,a,o)}rawTxBuilder;async getAllowance(i,r){let a,o;r?(a=i,o=r):o=i;let u=yn(o.token,o.messenger);return await this.tokenService.getAllowance({...o,spender:u},a)}async checkAllowance(i,r){let a,o;r?(a=i,o=r):o=i;let u=yn(o.token,o.messenger);return this.tokenService.checkAllowance({...o,spender:u},a)}async approve(i,r){let a=yn(r.token,r.messenger);return this.tokenService.approve(i,{...r,spender:a})}async send(i,r){return q(r.amount),ee("amount",r.amount,r.sourceToken.decimals),Ln(r.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).send(r)}};function yn(s,i=1){switch(i){case 3:if(s.cctpAddress)return s.cctpAddress;throw new Ie("Such route does not support CCTP protocol");case 4:if(s.cctpV2Address)return s.cctpV2Address;throw new Ie("Such route does not support CCTP V2 protocol");case 5:if(s.oftBridgeAddress)return s.oftBridgeAddress;throw new Re("Such route does not support OFT protocol");case 1:case 2:return s.bridgeAddress}}function Ln(s,i,r,a,o){switch(H.getChainProperty(s).chainType){case"EVM":{if(o)return new fn(o,i,r);{let u=r.getNodeRpcUrl(s);return new fn(new To(u),i,r)}}case"TRX":{if(o)return new Sn(o,i);{let u=r.getNodeRpcUrl(s);return new Sn(new ho({fullHost:u,solidityNode:u,eventServer:u}),i)}}case"SOLANA":return new Hn(r.getNodeRpcUrl("SOL"),{wormholeMessengerProgramId:a.wormholeMessengerProgramId,solanaLookUpTable:a.solanaLookUpTable,cctpParams:a.cctpParams,jupiterParams:{jupiterUrl:a.jupiterUrl,jupiterApiKeyHeader:a.jupiterApiKeyHeader,jupiterMaxAccounts:a.jupiterMaxAccounts}},i);case"SRB":return new Qn(r,a,i);case"SUI":return new Xt(r,i)}}g();y();f();import{Big as Eo}from"big.js";import Uo from"timed-cache";import{TronWeb as Go}from"tronweb";import{FMT_BYTES as Vo,FMT_NUMBER as jo,Web3 as Zo}from"web3";g();y();f();import{Big as pt}from"big.js";function Va(s,i,r,a,o){let u=Q(s,3),m=pt(u),p=pt(r),h=pt(a).plus(o),T,S;if(p.eq(0)||h.eq(0)){let x=m.div(2);T=pt(a).plus(x),S=pt(o).plus(x)}else T=pt(a).plus(m.mul(a).div(h)),S=pt(o).plus(m.mul(o).div(h));return pt(na(i,T.toFixed(),S.toFixed())).minus(p).toFixed()}function ja(s){let i=Q(s,3);return pt(i).round().toFixed()}g();y();f();import{Web3 as Pt}from"web3";g();y();f();var bo={abi:[{inputs:[{internalType:"address",name:"_router",type:"address"},{internalType:"uint256",name:"_a",type:"uint256"},{internalType:"contract ERC20",name:"_token",type:"address"},{internalType:"uint16",name:"_feeShareBP",type:"uint16"},{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"},{internalType:"string",name:"lpName",type:"string"},{internalType:"string",name:"lpSymbol",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"RewardsClaimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedFromVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedToVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"a",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"accRewardPerShareP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adjustTotalLpAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"adminFeeAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"balanceRatioMinBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canDeposit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canWithdraw",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"claimAdminFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"claimRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"d",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"feeShareBP",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"x",type:"uint256"}],name:"getY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"pendingReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"reserves",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"router",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_adminFeeShareBP",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"}],name:"setBalanceRatioMinBP",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"_feeShareBP",type:"uint16"}],name:"setFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_router",type:"address"}],name:"setRouter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapFromVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapToVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"token",outputs:[{internalType:"contract ERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"userRewardDebt",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"vUsdBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amountLp",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Pn=bo;g();y();f();g();y();f();var xe=class{lpAmount;rewardDebt;constructor(i){this.lpAmount=i.lpAmount,this.rewardDebt=i.rewardDebt}get userLiquidity(){return J(this.lpAmount,3).toFixed()}earned(i,r){let a=ea(this.lpAmount,this.rewardDebt,i.accRewardPerShareP,i.p);return r?J(a,r).toFixed():a}};g();y();f();var Ue=class{};var wn=class extends Ue{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";P=52;async getUserBalanceInfo(r,a){let o;try{o=await Vn(this.getUserBalanceInfoByBatch(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5e3)}catch{o=await jr(()=>this.getUserBalanceInfoPerProperty(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5,2e3)}return o}async getPoolInfoFromChain(r){let a;try{a=await Vn(this.getPoolInfoByBatch(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5e3)}catch{a=await jr(()=>this.getPoolInfoPerProperty(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5,2e3)}return a}async getUserBalanceInfoByBatch(r,a){let o=new this.web3.eth.BatchRequest,u=this.getPoolContract(a.poolAddress),m=u.methods.userRewardDebt(r).encodeABI(),p=u.methods.balanceOf(r).encodeABI();o.add({method:"eth_call",params:[{to:a.poolAddress,data:m},"latest"]}),o.add({method:"eth_call",params:[{to:a.poolAddress,data:p},"latest"]});let[h,T]=await o.execute();if(h&&T&&!h.error&&!T.error)return new xe({lpAmount:Pt.utils.toBigInt(T.result).toString(),rewardDebt:Pt.utils.toBigInt(h.result).toString()});throw new Error("Batched failed")}async getUserBalanceInfoPerProperty(r,a){let o=(await this.getPoolContract(a.poolAddress).methods.userRewardDebt(r).call()).toString(),u=(await this.getPoolContract(a.poolAddress).methods.balanceOf(r).call()).toString();return new xe({lpAmount:u,rewardDebt:o})}async getPoolInfoByBatch(r){let a=new this.web3.eth.BatchRequest,o=this.getPoolContract(r.poolAddress),u=o.methods.a().encodeABI(),m=o.methods.d().encodeABI(),p=o.methods.tokenBalance().encodeABI(),h=o.methods.vUsdBalance().encodeABI(),T=o.methods.totalSupply().encodeABI(),S=o.methods.accRewardPerShareP().encodeABI();a.add({method:"eth_call",params:[{to:r.poolAddress,data:u},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:m},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:p},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:h},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:T},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:S},"latest"]});let[P,x,I,F,v,N]=await a.execute();if(P&&x&&I&&F&&v&&N&&!P.error&&!x.error&&!I.error&&!F.error&&!v.error&&!N.error){let M=Pt.utils.toBigInt(I.result).toString(),D=Pt.utils.toBigInt(F.result).toString(),W=ke({tokenBalance:M,vUsdBalance:D});return{aValue:Pt.utils.toBigInt(P.result).toString(),dValue:Pt.utils.toBigInt(x.result).toString(),tokenBalance:M,vUsdBalance:D,totalLpAmount:Pt.utils.toBigInt(v.result).toString(),accRewardPerShareP:Pt.utils.toBigInt(N.result).toString(),p:this.P,imbalance:W}}throw new Error("Batched failed")}async getPoolInfoPerProperty(r){let a=this.getPoolContract(r.poolAddress),o=(await a.methods.a().call()).toString(),u=(await a.methods.d().call()).toString(),m=(await a.methods.tokenBalance().call()).toString(),p=(await a.methods.vUsdBalance().call()).toString(),h=(await a.methods.totalSupply().call()).toString(),T=(await a.methods.accRewardPerShareP().call()).toString(),S=ke({tokenBalance:m,vUsdBalance:p});return{aValue:o,dValue:u,tokenBalance:m,vUsdBalance:p,totalLpAmount:h,accRewardPerShareP:T,p:this.P,imbalance:S}}async buildRawTransactionDeposit(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.deposit(r.amount).encodeABI()})}async buildRawTransactionWithdraw(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.withdraw(r.amount).encodeABI()})}async buildRawTransactionClaimRewards(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.claimRewards().encodeABI()})}buildTxParams(r){return{from:r.accountAddress,to:r.token.poolAddress,value:"0"}}getPoolContract(r){return new this.web3.eth.Contract(Pn.abi,r)}};g();y();f();var sr=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o}async approve(i,r){if(r){let a=i,o=r;return this.tokenService.buildRawTransactionApprove({...o,spender:o.token.poolAddress},a)}else{let a=i;return this.tokenService.buildRawTransactionApprove({...a,spender:a.token.poolAddress})}}async deposit(i,r){return q(i.amount),ee("amount",i.amount,i.token.decimals),i.amount=Q(i.amount,i.token.decimals).toFixed(),Yt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionDeposit(i)}async withdraw(i,r){return q(i.amount),ee("amount",i.amount,i.token.decimals),i.amount=Q(i.amount,3).toFixed(),Yt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionWithdraw(i)}async claimRewards(i,r){return Yt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionClaimRewards(i)}};g();y();f();import{AnchorProvider as So,BN as Za,Program as Po,Spl as wo,web3 as Co}from"@project-serum/anchor";import{Connection as Bo,PublicKey as wt}from"@solana/web3.js";var or=class extends Ue{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";P=48;async getUserBalanceInfo(r,a){let o=this.buildAnchorProvider(r),u=this.getBridge(a.bridgeAddress,o),m=new wt(a.poolAddress),p=await u.account.pool.fetch(m);try{let h=await $r(new wt(r),p.mint,u.programId),{lpAmount:T,rewardDebt:S}=await u.account.userDeposit.fetch(h);return new xe({lpAmount:T.toString(),rewardDebt:S.toString()})}catch{return new xe({lpAmount:"0",rewardDebt:"0"})}}async getPoolInfoFromChain(r){let a=this.buildAnchorProvider(r.bridgeAddress),o=await this.getBridge(r.bridgeAddress,a).account.pool.fetch(r.poolAddress),u=o.vUsdBalance.toString(),m=o.tokenBalance.toString(),p=ke({tokenBalance:m,vUsdBalance:u});return{dValue:o.d.toString(),aValue:o.a.toString(),totalLpAmount:o.totalLpAmount.toString(),vUsdBalance:u,tokenBalance:m,accRewardPerShareP:o.accRewardPerShareP.toString(),p:this.P,imbalance:p}}async buildRawTransactionDeposit(r){let{bridge:a,accounts:o,preInstructions:u}=await this.prepareDataForTransaction(r),m=await a.methods.deposit(new Za(r.amount)).accounts(o).preInstructions(u).transaction();return m.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,m.feePayer=new wt(r.accountAddress),await $t(m,r.txFeeParams,this.solanaRpcUrl),m}async buildRawTransactionWithdraw(r){let{bridge:a,accounts:o,preInstructions:u}=await this.prepareDataForTransaction(r),m=await a.methods.withdraw(new Za(r.amount)).accounts(o).preInstructions(u).transaction();return m.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,m.feePayer=new wt(r.accountAddress),await $t(m,r.txFeeParams,this.solanaRpcUrl),m}async buildRawTransactionClaimRewards(r){let{bridge:a,accounts:o,preInstructions:u}=await this.prepareDataForTransaction(r),m=await a.methods.claimRewards().accounts(o).preInstructions(u).transaction();return m.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,m.feePayer=new wt(r.accountAddress),await $t(m,r.txFeeParams,this.solanaRpcUrl),m}async prepareDataForTransaction(r){let a=this.buildAnchorProvider(r.accountAddress),o=this.getBridge(r.token.bridgeAddress,a),{accounts:u,preInstructions:m}=await this._getLPTransactionData(o,r.token.poolAddress,r.accountAddress,a);return{bridge:o,accounts:u,preInstructions:m}}getBridge(r,a){return new Po(hn,r,a)}buildAnchorProvider(r){let a=new Bo(this.solanaRpcUrl,"confirmed"),o=new wt(r);return new So(a,{publicKey:o},{preflightCommitment:"confirmed",commitment:"confirmed"})}async _getLPTransactionData(r,a,o,u){let m=new wt(o),p=await ft(r.programId),h=await jt(r.programId),T=new wt(a),P=(await r.account.pool.fetch(T)).mint,x=await Qe(m,P),I=await Zt(P,r.programId),F=await $r(m,P,r.programId),v=[Co.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await _t(x,u)}catch{let W=await wo.associatedToken(u).methods.create().accounts({mint:P,owner:m,associatedAccount:x}).instruction();v.push(W)}try{await r.account.userDeposit.fetch(F)}catch{let D=await r.methods.initDepositAccount().accounts({mint:P,user:m,userDeposit:F}).instruction();v.push(D)}return{accounts:{mint:P,user:m,config:p,pool:T,bridgeAuthority:h,userDeposit:F,userToken:x,bridgeToken:I},preInstructions:v}}};g();y();f();import{contract as ak}from"@stellar/stellar-sdk";g();y();f();import{contract as t}from"@stellar/stellar-sdk";var Io=t.Spec,Ro=t.Client;var cr=class extends Ro{constructor(r){super(new Io(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABwAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAZicmlkZ2UAAAAAABMAAAAAAAAAAWEAAAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAADGZlZV9zaGFyZV9icAAAAAoAAAAAAAAAFGJhbGFuY2VfcmF0aW9fbWluX2JwAAAACgAAAAAAAAASYWRtaW5fZmVlX3NoYXJlX2JwAAAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAHZGVwb3NpdAAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAId2l0aGRyYXcAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAACWFtb3VudF9scAAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3dhcF90b192X3VzZAAAAAAAAAMAAAAAAAAABHVzZXIAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9mcm9tX3ZfdXNkAAAAAAQAAAAAAAAABHVzZXIAAAATAAAAAAAAAAt2dXNkX2Ftb3VudAAAAAAKAAAAAAAAABJyZWNlaXZlX2Ftb3VudF9taW4AAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAANY2xhaW1fcmV3YXJkcwAAAAAAAAEAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAdgYWRtaW5gAAAAAA1zZXRfZmVlX3NoYXJlAAAAAAAAAQAAAAAAAAAMZmVlX3NoYXJlX2JwAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAWYWRqdXN0X3RvdGFsX2xwX2Ftb3VudAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAYc2V0X2JhbGFuY2VfcmF0aW9fbWluX2JwAAAAAQAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAMc3RvcF9kZXBvc2l0AAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAANc3RhcnRfZGVwb3NpdAAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3RvcF93aXRoZHJhdwAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAOc3RhcnRfd2l0aGRyYXcAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc2V0X2JyaWRnZQAAAAAAAQAAAAAAAAAGYnJpZGdlAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAATc2V0X2FkbWluX2ZlZV9zaGFyZQAAAAABAAAAAAAAABJhZG1pbl9mZWVfc2hhcmVfYnAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAPY2xhaW1fYWRtaW5fZmVlAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAZgdmlld2AAAAAAAA5wZW5kaW5nX3Jld2FyZAAAAAAAAQAAAAAAAAAEdXNlcgAAABMAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAAIZ2V0X3Bvb2wAAAAAAAAAAQAAA+kAAAfQAAAABFBvb2wAAAAD","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAKZ2V0X2JyaWRnZQAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAQZ2V0X3VzZXJfZGVwb3NpdAAAAAEAAAAAAAAABHVzZXIAAAATAAAAAQAAA+kAAAfQAAAAC1VzZXJEZXBvc2l0AAAAAAM=","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAD1N3YXBwZWRGcm9tVlVzZAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAAC3Z1c2RfYW1vdW50AAAAAAo=","AAAAAQAAAAAAAAAAAAAADVN3YXBwZWRUb1ZVc2QAAAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAALdnVzZF9hbW91bnQAAAAACg==","AAAAAQAAAAAAAAAAAAAAB0RlcG9zaXQAAAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAACFdpdGhkcmF3AAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAADlJld2FyZHNDbGFpbWVkAAAAAAACAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAABHVzZXIAAAAT","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAQAAAAEAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAEAAAAT","AAAAAQAAAAAAAAAAAAAABFBvb2wAAAAPAAAAAAAAAAFhAAAAAAAACgAAAAAAAAAWYWNjX3Jld2FyZF9wZXJfc2hhcmVfcAAAAAAACgAAAAAAAAAQYWRtaW5fZmVlX2Ftb3VudAAAAAoAAAAAAAAAEmFkbWluX2ZlZV9zaGFyZV9icAAAAAAACgAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAAAAAAtjYW5fZGVwb3NpdAAAAAABAAAAAAAAAAxjYW5fd2l0aGRyYXcAAAABAAAAAAAAAAFkAAAAAAAACgAAAAAAAAAIZGVjaW1hbHMAAAAEAAAAAAAAAAxmZWVfc2hhcmVfYnAAAAAKAAAAAAAAAAhyZXNlcnZlcwAAAAoAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAANdG9rZW5fYmFsYW5jZQAAAAAAAAoAAAAAAAAAD3RvdGFsX2xwX2Ftb3VudAAAAAAKAAAAAAAAAA12X3VzZF9iYWxhbmNlAAAAAAAACg==","AAAAAQAAAAAAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAIAAAAAAAAACWxwX2Ftb3VudAAAAAAAAAoAAAAAAAAAC3Jld2FyZF9kZWJ0AAAAAAo=","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),r);this.options=r}fromJSON={initialize:this.txFromJSON,deposit:this.txFromJSON,withdraw:this.txFromJSON,swap_to_v_usd:this.txFromJSON,swap_from_v_usd:this.txFromJSON,claim_rewards:this.txFromJSON,set_fee_share:this.txFromJSON,adjust_total_lp_amount:this.txFromJSON,set_balance_ratio_min_bp:this.txFromJSON,stop_deposit:this.txFromJSON,start_deposit:this.txFromJSON,stop_withdraw:this.txFromJSON,start_withdraw:this.txFromJSON,set_stop_authority:this.txFromJSON,set_bridge:this.txFromJSON,set_admin:this.txFromJSON,set_admin_fee_share:this.txFromJSON,claim_admin_fee:this.txFromJSON,pending_reward:this.txFromJSON,get_pool:this.txFromJSON,get_admin:this.txFromJSON,get_stop_authority:this.txFromJSON,get_bridge:this.txFromJSON,get_user_deposit:this.txFromJSON,upgrade:this.txFromJSON}};g();y();f();import{contract as Wh,rpc as vo}from"@stellar/stellar-sdk";var _a=vo.Api;function Kt(s){let{simulation:i,options:r}=s;if(!i)throw new Error("Soroban assembled transaction does not have simulation");if(_a.isSimulationSuccess(i))return i.result==null?void 0:r.parseResultXdr(i.result.retval);throw new Error(i.error)}function Ht(s){let{simulation:i}=s;if(!i)throw new Error("Soroban assembled transaction does not have simulation");return _a.isSimulationError(i)}var Ar=class extends Ue{constructor(r,a,o){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=o}chainType="SRB";P=48;async getUserBalanceInfo(r,a){let u=await this.getContract(a.poolAddress).get_user_deposit({user:r});if(Ht(u))throw new O;let m=Kt(u);if(!m)throw new O;let p=m.unwrap();return new xe({lpAmount:p.lp_amount.toString(),rewardDebt:p.reward_debt.toString()})}async getPoolInfoFromChain(r){let o=await this.getContract(r.poolAddress).get_pool();if(Ht(o))throw new O;let u=Kt(o);if(!u)throw new O;let m=u.unwrap();return{aValue:m.a.toString(),accRewardPerShareP:m.acc_reward_per_share_p.toString(),dValue:m.d.toString(),tokenBalance:m.token_balance.toString(),p:this.P,totalLpAmount:m.total_lp_amount.toString(),vUsdBalance:m.v_usd_balance.toString(),imbalance:ke({tokenBalance:m.token_balance.toString(),vUsdBalance:m.v_usd_balance.toString()})}}async buildRawTransactionDeposit(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).deposit({sender:r.accountAddress,amount:BigInt(r.amount)})).toXDR()}async buildRawTransactionWithdraw(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).withdraw({sender:r.accountAddress,amount_lp:BigInt(r.amount)})).toXDR()}async buildRawTransactionClaimRewards(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).claim_rewards({sender:r.accountAddress})).toXDR()}getContract(r,a){let o={publicKey:a,contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new cr(o)}};g();y();f();import{SuiClient as No}from"@mysten/sui/client";import{Transaction as hr}from"@mysten/sui/transactions";var zt=He(Tt());g();y();f();ye();g();y();f();ye();import{bcs as $a}from"@mysten/sui/bcs";import{fromB64 as ko}from"@mysten/sui/utils";function ur(s){return s=V(s),s.startsWith(`${St}::balance::Balance<`)}var Pe=class s{__StructClass=!0;static get $typeName(){return`${St}::balance::Balance`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;value;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.value=r.value}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return $a.struct("Balance",{value:$a.u64()})}static fromFields(i,r){return s.reified(i).new({value:K("u64",r.value)})}static fromFieldsWithTypes(i,r){if(!ur(r.type))throw new Error("not a Balance type");return ct(r,[i]),s.reified(i).new({value:X("u64",r.fields.value)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{value:this.value.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({value:Y("u64",r.value)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(z(s.$typeName,_(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!ur(r.type))throw new Error(`object at ${r.fields.id} is not a Balance object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!ur(r.bcs.type))throw new Error("object at is not a Balance object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=V(a[0]),u=V(_(i));if(o!==V(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,ko(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching Balance object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!ur(o.data.bcs.type))throw new Error(`object at id ${a} is not a Balance object`);return s.fromSuiObjectData(r,o.data)}};var fi=He(Tt());g();y();f();ye();var pi=He(Tt());import{bcs as mr}from"@mysten/sui/bcs";import{fromB64 as xo}from"@mysten/sui/utils";function lr(s){return s=V(s),s.startsWith(`${pi.PKG_V1}::pool_rewards::PoolRewards<`)}var Nt=class s{__StructClass=!0;static get $typeName(){return`${pi.PKG_V1}::pool_rewards::PoolRewards`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;accRewardPerShareP;adminFeeShareBp;adminFee;rewards;lpSupply;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.accRewardPerShareP=r.accRewardPerShareP,this.adminFeeShareBp=r.adminFeeShareBp,this.adminFee=r.adminFee,this.rewards=r.rewards,this.lpSupply=r.lpSupply}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return mr.struct("PoolRewards",{acc_reward_per_share_p:mr.u128(),admin_fee_share_bp:mr.u64(),admin_fee:Pe.bcs,rewards:Pe.bcs,lp_supply:mr.u64()})}static fromFields(i,r){return s.reified(i).new({accRewardPerShareP:K("u128",r.acc_reward_per_share_p),adminFeeShareBp:K("u64",r.admin_fee_share_bp),adminFee:K(Pe.reified(i),r.admin_fee),rewards:K(Pe.reified(i),r.rewards),lpSupply:K("u64",r.lp_supply)})}static fromFieldsWithTypes(i,r){if(!lr(r.type))throw new Error("not a PoolRewards type");return ct(r,[i]),s.reified(i).new({accRewardPerShareP:X("u128",r.fields.acc_reward_per_share_p),adminFeeShareBp:X("u64",r.fields.admin_fee_share_bp),adminFee:X(Pe.reified(i),r.fields.admin_fee),rewards:X(Pe.reified(i),r.fields.rewards),lpSupply:X("u64",r.fields.lp_supply)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{accRewardPerShareP:this.accRewardPerShareP.toString(),adminFeeShareBp:this.adminFeeShareBp.toString(),adminFee:this.adminFee.toJSONField(),rewards:this.rewards.toJSONField(),lpSupply:this.lpSupply.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({accRewardPerShareP:Y("u128",r.accRewardPerShareP),adminFeeShareBp:Y("u64",r.adminFeeShareBp),adminFee:Y(Pe.reified(i),r.adminFee),rewards:Y(Pe.reified(i),r.rewards),lpSupply:Y("u64",r.lpSupply)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(z(s.$typeName,_(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!lr(r.type))throw new Error(`object at ${r.fields.id} is not a PoolRewards object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!lr(r.bcs.type))throw new Error("object at is not a PoolRewards object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=V(a[0]),u=V(_(i));if(o!==V(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,xo(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching PoolRewards object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!lr(o.data.bcs.type))throw new Error(`object at id ${a} is not a PoolRewards object`);return s.fromSuiObjectData(r,o.data)}};g();y();f();ye();var gi=He(Tt());import{bcs as Qt}from"@mysten/sui/bcs";import{fromB64 as Fo}from"@mysten/sui/utils";function dr(s){return s=V(s),s.startsWith(`${gi.PKG_V1}::pool_state::PoolState<`)}var Wt=class s{__StructClass=!0;static get $typeName(){return`${gi.PKG_V1}::pool_state::PoolState`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;tokenBalance;vusdBalance;d;a;balanceRatioMinBp;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.tokenBalance=r.tokenBalance,this.vusdBalance=r.vusdBalance,this.d=r.d,this.a=r.a,this.balanceRatioMinBp=r.balanceRatioMinBp}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return Qt.struct("PoolState",{token_balance:Qt.u64(),vusd_balance:Qt.u64(),d:Qt.u64(),a:Qt.u64(),balance_ratio_min_bp:Qt.u64()})}static fromFields(i,r){return s.reified(i).new({tokenBalance:K("u64",r.token_balance),vusdBalance:K("u64",r.vusd_balance),d:K("u64",r.d),a:K("u64",r.a),balanceRatioMinBp:K("u64",r.balance_ratio_min_bp)})}static fromFieldsWithTypes(i,r){if(!dr(r.type))throw new Error("not a PoolState type");return ct(r,[i]),s.reified(i).new({tokenBalance:X("u64",r.fields.token_balance),vusdBalance:X("u64",r.fields.vusd_balance),d:X("u64",r.fields.d),a:X("u64",r.fields.a),balanceRatioMinBp:X("u64",r.fields.balance_ratio_min_bp)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{tokenBalance:this.tokenBalance.toString(),vusdBalance:this.vusdBalance.toString(),d:this.d.toString(),a:this.a.toString(),balanceRatioMinBp:this.balanceRatioMinBp.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({tokenBalance:Y("u64",r.tokenBalance),vusdBalance:Y("u64",r.vusdBalance),d:Y("u64",r.d),a:Y("u64",r.a),balanceRatioMinBp:Y("u64",r.balanceRatioMinBp)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(z(s.$typeName,_(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!dr(r.type))throw new Error(`object at ${r.fields.id} is not a PoolState object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!dr(r.bcs.type))throw new Error("object at is not a PoolState object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=V(a[0]),u=V(_(i));if(o!==V(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Fo(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching PoolState object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!dr(o.data.bcs.type))throw new Error(`object at id ${a} is not a PoolState object`);return s.fromSuiObjectData(r,o.data)}};import{bcs as Cn}from"@mysten/sui/bcs";import{fromB64 as Mo}from"@mysten/sui/utils";function pr(s){return s=V(s),s.startsWith(`${fi.PKG_V1}::pool::Pool<`)}var gr=class s{__StructClass=!0;static get $typeName(){return`${fi.PKG_V1}::pool::Pool`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;id;state;rewards;feeShareBp;canDeposit;canWithdraw;decimals;balance;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.id=r.id,this.state=r.state,this.rewards=r.rewards,this.feeShareBp=r.feeShareBp,this.canDeposit=r.canDeposit,this.canWithdraw=r.canWithdraw,this.decimals=r.decimals,this.balance=r.balance}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return Cn.struct("Pool",{id:Ye.bcs,state:Wt.bcs,rewards:Nt.bcs,fee_share_bp:Cn.u64(),can_deposit:Cn.bool(),can_withdraw:Cn.bool(),decimals:Cn.u8(),balance:Pe.bcs})}static fromFields(i,r){return s.reified(i).new({id:K(Ye.reified(),r.id),state:K(Wt.reified(i),r.state),rewards:K(Nt.reified(i),r.rewards),feeShareBp:K("u64",r.fee_share_bp),canDeposit:K("bool",r.can_deposit),canWithdraw:K("bool",r.can_withdraw),decimals:K("u8",r.decimals),balance:K(Pe.reified(i),r.balance)})}static fromFieldsWithTypes(i,r){if(!pr(r.type))throw new Error("not a Pool type");return ct(r,[i]),s.reified(i).new({id:X(Ye.reified(),r.fields.id),state:X(Wt.reified(i),r.fields.state),rewards:X(Nt.reified(i),r.fields.rewards),feeShareBp:X("u64",r.fields.fee_share_bp),canDeposit:X("bool",r.fields.can_deposit),canWithdraw:X("bool",r.fields.can_withdraw),decimals:X("u8",r.fields.decimals),balance:X(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:Y(Ye.reified(),r.id),state:Y(Wt.reified(i),r.state),rewards:Y(Nt.reified(i),r.rewards),feeShareBp:Y("u64",r.feeShareBp),canDeposit:Y("bool",r.canDeposit),canWithdraw:Y("bool",r.canWithdraw),decimals:Y("u8",r.decimals),balance:Y(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(!pr(r.type))throw new Error(`object at ${r.fields.id} is not a Pool object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!pr(r.bcs.type))throw new Error("object at is not a Pool object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=V(a[0]),u=V(_(i));if(o!==V(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Mo(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching Pool object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!pr(o.data.bcs.type))throw new Error(`object at id ${a} is not a Pool object`);return s.fromSuiObjectData(r,o.data)}};g();y();f();ye();var hi=He(Tt());import{bcs as yi}from"@mysten/sui/bcs";import{fromB64 as Oo}from"@mysten/sui/utils";function fr(s){return s=V(s),s.startsWith(`${hi.PKG_V1}::user_deposit::UserDeposit<`)}var yr=class s{__StructClass=!0;static get $typeName(){return`${hi.PKG_V1}::user_deposit::UserDeposit`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;id;lpAmount;rewardDebt;constructor(i,r){this.$fullTypeName=z(s.$typeName,...i),this.$typeArgs=i,this.id=r.id,this.lpAmount=r.lpAmount,this.rewardDebt=r.rewardDebt}static reified(i){return{typeName:s.$typeName,fullTypeName:z(s.$typeName,_(i)),typeArgs:[_(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([_(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return oe(s.reified(i))}static get p(){return s.phantom}static get bcs(){return yi.struct("UserDeposit",{id:Ye.bcs,lp_amount:yi.u64(),reward_debt:yi.u64()})}static fromFields(i,r){return s.reified(i).new({id:K(Ye.reified(),r.id),lpAmount:K("u64",r.lp_amount),rewardDebt:K("u64",r.reward_debt)})}static fromFieldsWithTypes(i,r){if(!fr(r.type))throw new Error("not a UserDeposit type");return ct(r,[i]),s.reified(i).new({id:X(Ye.reified(),r.fields.id),lpAmount:X("u64",r.fields.lp_amount),rewardDebt:X("u64",r.fields.reward_debt)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{id:this.id,lpAmount:this.lpAmount.toString(),rewardDebt:this.rewardDebt.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({id:Y(Ye.reified(),r.id),lpAmount:Y("u64",r.lpAmount),rewardDebt:Y("u64",r.rewardDebt)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(z(s.$typeName,_(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!fr(r.type))throw new Error(`object at ${r.fields.id} is not a UserDeposit object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!fr(r.bcs.type))throw new Error("object at is not a UserDeposit object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=V(a[0]),u=V(_(i));if(o!==V(_(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Oo(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching UserDeposit object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!fr(o.data.bcs.type))throw new Error(`object at id ${a} is not a UserDeposit object`);return s.fromSuiObjectData(r,o.data)}};g();y();f();function La(s,i,r){if(i.length===0||!i[0])return[];let a=i[0],o=s.reduce((p,h)=>p+BigInt(h),BigInt(0)),u=BigInt(a.balance),m=[];for(let p of i.slice(1)){if(u>o)return Ja(r,a,m,s);u+=BigInt(p.balance),m.push(p)}return u>=o?Ja(r,a,m,s):[]}function Ja(s,i,r,a){let o=a.map(u=>s.pure.u64(u));return r.length>0&&s.mergeCoins(i.coinObjectId,r.map(u=>u.coinObjectId)),s.splitCoins(i.coinObjectId,o)}g();y();f();var Do="0x0000000000000000000000000000000000000000000000000000000000000000";async function Xa(s,i,r){let a=await s.devInspectTransactionBlock({sender:Do,transactionBlock:i});if(a.effects.status.status!=="success")throw new Error(`inspectionResult failed. ${JSON.stringify(a,null,2)}`);let o=a.results?.pop()?.returnValues?.pop();if(!o)throw new Error(`Something with inspectionResult went wrong. ${JSON.stringify(a,null,2)}`);let[u,m]=o;return typeof r=="object"?r.fromBcs(Uint8Array.from(u)).toJSONField():bn(r).parse(Uint8Array.from(u))}var Tr=class extends Ue{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.client=new No({url:r})}chainType="SUI";client;async getUserBalanceInfo(r,a){if(!a.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=a.suiAddresses;if(!o)throw new O("SUI token must contain 'suiAddresses'");(0,zt.setAddress)(o.bridgeAddress,o.bridgeAddressOrigin);let m=(await this.fetchDeposits(r,a.originTokenAddress)).reduce((p,h)=>{if(h.data)return p.lpAmount+=BigInt(h.data.content.fields.lp_amount),p.rewardDebt+=BigInt(h.data.content.fields.reward_debt),p;throw new O("Deposits fetch failed")},{lpAmount:BigInt(0),rewardDebt:BigInt(0)});return new xe({lpAmount:m.lpAmount.toString(),rewardDebt:m.rewardDebt.toString()})}async fetchDeposits(r,a){return await At(o=>this.client.getOwnedObjects({owner:r,filter:{StructType:yr.phantom(oe(a)).phantomType},options:{showContent:!0},cursor:o}))}async getPoolInfoFromChain(r){let a=r.suiAddresses;if(!a)throw new O("SUI token must contain 'suiAddresses'");if((0,zt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=48,u=new hr;va(u,r.originTokenAddress,a.bridgeObjectAddress);let m=await Xa(this.client,u,gr.reified(oe(r.originTokenAddress))),p=m.state.tokenBalance,h=m.state.vusdBalance,T=ke({tokenBalance:p,vUsdBalance:h});return{dValue:m.state.d,aValue:m.state.a,totalLpAmount:m.rewards.lpSupply,vUsdBalance:h,tokenBalance:p,accRewardPerShareP:m.rewards.accRewardPerShareP,p:o,imbalance:T}}async buildRawTransactionDeposit(r){let a=r.token.suiAddresses;if(!a)throw new O("SUI token must contain 'suiAddresses'");if((0,zt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=await At(P=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:P}));if(o.length===0||!o[0])throw new ut("No coins to deposit");let u=o[0],m=new hr;m.setSender(r.accountAddress);let{depositObj:p,isNewDeposit:h}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,m),[T]=La([r.amount],o,m);if(!T)throw new ut("No coins to deposit");if(!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let S=Ba(m,r.token.originTokenAddress,{bridge:a.bridgeObjectAddress,userDeposit:p,coin:T});return m.mergeCoins(u.coinObjectId,[S]),h&&m.transferObjects([p],r.accountAddress),await m.toJSON({client:this.client})}async getDepositObject(r,a,o){let u=await this.fetchDeposits(r,a);if(u.length===0||!u[0]){let m=oe(a).phantomType;return{depositObj:ka(o,m),isNewDeposit:!0}}else{if(u[0].data?.objectId)return{depositObj:u[0].data.objectId,isNewDeposit:!1};throw new O("Something went wrong while deposit")}}async buildRawTransactionWithdraw(r){let a=r.token.suiAddresses;if(!a)throw new O("SUI token must contain 'suiAddresses'");if((0,zt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=oe(r.token.originTokenAddress).phantomType,u=new hr;u.setSender(r.accountAddress);let{depositObj:m,isNewDeposit:p}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,u);if(p)throw new ut("No deposit found");let h=Ia(u,o,{bridge:a.bridgeObjectAddress,userDeposit:m,amountLp:BigInt(r.amount)}),T=await At(S=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:S}));if(!h[0]||!h[1])throw new O("No rewards found");return T[0]?u.mergeCoins(T[0].coinObjectId,[h[0],h[1]]):(u.mergeCoins(h[0],[h[1]]),u.transferObjects([h[0]],r.accountAddress)),await u.toJSON({client:this.client})}async buildRawTransactionClaimRewards(r){let a=r.token.suiAddresses;if(!a)throw new O("SUI token must contain 'suiAddresses'");if((0,zt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=oe(r.token.originTokenAddress).phantomType,u=new hr;u.setSender(r.accountAddress);let{depositObj:m,isNewDeposit:p}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,u);if(p)throw new ut("No deposit found");let h=Ra(u,o,{bridge:a.bridgeObjectAddress,userDeposit:m}),T=await At(S=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:S}));return T[0]?u.mergeCoins(T[0].coinObjectId,[h]):u.transferObjects([h],r.accountAddress),await u.toJSON({client:this.client})}};g();y();f();import{Web3 as br}from"web3";import{encodeFunctionCall as Wo}from"web3-eth-abi";var Bn=class extends Ue{constructor(r,a,o){super();this.tronWeb=r;this.api=a;this.tronJsonRpc=o}chainType="TRX";P=52;async getUserBalanceInfo(r,a){let o;if(this.tronJsonRpc)try{o=await this.getUserBalanceInfoByBatch(this.tronJsonRpc,r,a)}catch{o=await this.getUserBalanceInfoPerProperty(r,a)}else o=await this.getUserBalanceInfoPerProperty(r,a);return o}async getUserBalanceInfoByBatch(r,a,o){let u=gn(o.poolAddress),m=gn(a),p=[{jsonrpc:"2.0",id:1,method:"eth_call",params:[{to:u,data:this.getFunctionAbi("userRewardDebt",m)},"latest"]},{jsonrpc:"2.0",id:2,method:"eth_call",params:[{to:u,data:this.getFunctionAbi("balanceOf",m)},"latest"]}],T=await(await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(p)})).json();if(Array.isArray(T)&&T.length===2){let S=P=>{let x=T.find(I=>I.id===P);if(!x||!x.result)throw new Error(`Missing or invalid result for id ${P}`);return br.utils.toBigInt(x.result).toString()};return new xe({lpAmount:br.utils.toBigInt(S(2)).toString(),rewardDebt:br.utils.toBigInt(S(1)).toString()})}throw new Error("Batched HTTP call failed")}async getUserBalanceInfoPerProperty(r,a){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(r);let o=this.getContract(a.poolAddress),u=(await o.methods.userRewardDebt(r).call()).toString(),m=(await o.methods.balanceOf(r).call()).toString();return new xe({lpAmount:m,rewardDebt:u})}async getPoolInfoFromChain(r){let a;if(this.tronJsonRpc)try{a=await this.getPoolInfoByBatch(this.tronJsonRpc,r)}catch{a=await this.getPoolInfoPerProperty(r)}else a=await this.getPoolInfoPerProperty(r);return a}async getPoolInfoByBatch(r,a){let o=gn(a.poolAddress),u=[{jsonrpc:"2.0",id:1,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("a")},"latest"]},{jsonrpc:"2.0",id:2,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("d")},"latest"]},{jsonrpc:"2.0",id:3,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("tokenBalance")},"latest"]},{jsonrpc:"2.0",id:4,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("vUsdBalance")},"latest"]},{jsonrpc:"2.0",id:5,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("totalSupply")},"latest"]},{jsonrpc:"2.0",id:6,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("accRewardPerShareP")},"latest"]}],p=await(await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)})).json();if(Array.isArray(p)&&p.length===6){let h=x=>{let I=p.find(F=>F.id===x);if(!I||!I.result)throw new Error(`Missing or invalid result for id ${x}`);return br.utils.toBigInt(I.result).toString()},T=h(3),S=h(4),P=ke({tokenBalance:T,vUsdBalance:S});return{aValue:h(1),dValue:h(2),tokenBalance:T,vUsdBalance:S,totalLpAmount:h(5),accRewardPerShareP:h(6),p:this.P,imbalance:P}}throw new Error("Batched pool info call failed")}async getPoolInfoPerProperty(r){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(r.poolAddress);let a=this.getContract(r.poolAddress),[o,u,m,p,h,T]=await Promise.all([a.methods.a().call(),a.methods.d().call(),a.methods.tokenBalance().call(),a.methods.vUsdBalance().call(),a.methods.totalSupply().call(),a.methods.accRewardPerShareP().call()]),S=m.toString(),P=p.toString(),x=ke({tokenBalance:S,vUsdBalance:P});return{aValue:o.toString(),dValue:u.toString(),tokenBalance:S,vUsdBalance:P,totalLpAmount:h.toString(),accRewardPerShareP:T.toString(),p:this.P,imbalance:x}}buildRawTransactionDeposit(r){let{amount:a,accountAddress:o}=r,u=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.poolAddress,"deposit(uint256)",u,"0",o)}buildRawTransactionWithdraw(r){let{amount:a,accountAddress:o}=r,u=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.poolAddress,"withdraw(uint256)",u,"0",o)}buildRawTransactionClaimRewards(r){let{accountAddress:a}=r,o=[];return this.buildRawTransaction(r.token.poolAddress,"claimRewards()",o,"0",a)}async buildRawTransaction(r,a,o,u,m){let p=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+u},o,m);if(!p?.result?.result)throw new O("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}getContract(r){return this.tronWeb.contract(Pn.abi,r)}getFunctionAbi(r,...a){let o=Pn.abi.find(u=>u.type==="function"&&"name"in u&&u.name===r);if(!o)throw new Error(`${r} method not found in Pool ABI`);return Wo(o,a)}};var Sr=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o;this.rawTxBuilder=new sr(i,r,this.params,o);let u=a.cachePoolInfoChainSec>0?a.cachePoolInfoChainSec*1e3:20*1e3;this.cache=new Uo({defaultTtl:u})}rawTxBuilder;cache;async getAllowance(i,r){if(r){let a=i,o=r;return await this.tokenService.getAllowance({...o,spender:o.token.poolAddress},a)}else{let a=i;return await this.tokenService.getAllowance({...a,spender:a.token.poolAddress})}}async checkAllowance(i,r){if(r){let a=i,o=r;return this.tokenService.checkAllowance({...o,spender:o.token.poolAddress},a)}else{let a=i;return this.tokenService.checkAllowance({...a,spender:a.token.poolAddress})}}async approve(i,r){return this.tokenService.approve(i,{...r,spender:r.token.poolAddress})}async getAmountToBeDeposited(i,r,a){q(i),ee("amount",i,r.decimals);let o=await this.getPoolInfoFromChain(r,a),{vUsdBalance:u,tokenBalance:m,aValue:p,dValue:h}=o,T=Va(i,p,h,m,u);return J(T,3).toFixed()}async getAmountToBeWithdrawn(i,r,a,o){q(i),ee("amount",i,a.decimals);let u=await this.getPoolInfoFromChain(a,o),m=ja(i),p=Ne(m,a.decimals),T=(await this.getUserBalanceInfo(r,a,o)).earned(u)||"0",S=Eo(p).plus(T).toFixed();return J(S,a.decimals).toFixed()}async getUserBalanceInfo(i,r,a){return Yt(r.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,a).getUserBalanceInfo(i,r)}async getPoolInfoFromChain(i,r){let a={chainSymbol:i.chainSymbol,poolAddress:i.poolAddress},o=this.cache.get(a);if(o)return o;{let u=await Yt(i.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).getPoolInfoFromChain(i);return this.cache.put(a,u),this.api.cachePut({chainSymbol:i.chainSymbol,poolAddress:i.poolAddress},u),u}}};function Yt(s,i,r,a,o){switch(H.getChainProperty(s).chainType){case"EVM":{if(o)return new wn(o,i);{let u=r.getNodeRpcUrl(s),m=new Zo(u);return m.defaultReturnFormat={number:jo.STR,bytes:Vo.HEX},new wn(m,i)}}case"TRX":{let u=r.getNodeRpcUrl(s),m=a.tronJsonRpc;if(o)return new Bn(o,i,m);{let p=new Go({fullHost:u});return new Bn(p,i,m)}}case"SOLANA":{let u=r.getNodeRpcUrl(s);return new or(u,i)}case"SRB":return new Ar(r,a,i);case"SUI":return new Tr(r.getNodeRpcUrl(s),i)}}g();y();f();g();y();f();import{Big as me}from"big.js";function Ha(s,i,r){let a=_o(s,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo),o=$o(a.amountIncludingCommissionInSystemPrecision,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:o}}function Qa(s,i,r){let a=Jo(s,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo),o=Lo(a.amountIncludingCommissionInSystemPrecision,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:o}}function _o(s,{feeShare:i,decimals:r},a){let o=me(s),u=o.times(i),m=o.minus(u);return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInSystemPrecision:Ya(xt(m,r),a),amountExcludingCommissionInSystemPrecision:Ya(xt(o,r),a)}}function Ya(s,i){if(s.eq(0))return"0";let r=me(i.tokenBalance).plus(s),a=at(r.toFixed(),i.aValue,i.dValue);return me(i.vUsdBalance).minus(a).round().toFixed()}function $o(s,{feeShare:i,decimals:r},a){if(me(s).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let u=me(s).plus(a.vUsdBalance),m=at(u,a.aValue,a.dValue),p=Ne(me(a.tokenBalance).minus(m),r),h=me(p).times(i),T=me(p).minus(h).round();return{bridgeFeeInTokenPrecision:h.round().toFixed(),amountIncludingCommissionInTokenPrecision:T.toFixed(),amountExcludingCommissionInTokenPrecision:p.toFixed()}}function Jo(s,{feeShare:i,decimals:r},a){let o=me(i).div(me(1).minus(i)),u=me(s).times(o),m=me(s).plus(u);return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInSystemPrecision:Ka(xt(m,r),a),amountExcludingCommissionInSystemPrecision:Ka(xt(s,r),a)}}function Ka(s,i){let r=me(i.tokenBalance).minus(s),a=at(r.toFixed(),i.aValue,i.dValue);return me(a).minus(i.vUsdBalance).round().toFixed()}function Lo(s,{feeShare:i,decimals:r},a){if(me(s).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let o=me(a.vUsdBalance).minus(s),u=at(o.toFixed(),a.aValue,a.dValue),m=me(u).minus(a.tokenBalance),p=Ne(m.toFixed(),r),h=me(i).div(me(1).minus(i)),T=me(p).times(h),S=me(p).plus(T);return{bridgeFeeInTokenPrecision:T.round().toFixed(),amountIncludingCommissionInTokenPrecision:S.round().toFixed(),amountExcludingCommissionInTokenPrecision:p.toFixed()}}g();y();f();import{Big as Ct}from"big.js";function za(s,i,r,a,o){let u=it(s,i,r),m=Ne(u,i.decimals),p=pn(u,a,o),h=Ct(s).times(i.feeShare),T=Ct(p).div(Ct(1).minus(a.feeShare)).minus(p);return{sourceLPSwap:{fee:J(h,i.decimals).neg().round(i.decimals,Ct.roundUp).toFixed(),swap:J(Ct(s).minus(m).minus(h),i.decimals).neg().round(i.decimals,Ct.roundUp).toFixed()},destLPSwap:{fee:J(T,a.decimals).neg().round(a.decimals,Ct.roundUp).toFixed(),swap:J(Ne(u,a.decimals).minus(p).minus(T),a.decimals).neg().round(a.decimals,Ct.roundUp).toFixed()}}}g();y();f();g();y();f();g();y();f();g();y();f();import zo from"axios";g();y();f();var qa="3.24.0";g();y();f();function es(s){return Object.entries(s).reduce((i,r)=>{let a=r[0],o=r[1],u=Qo(a,o);return u&&(i[a]=u),i},{})}function ts(s){let i={};for(let[r,a]of Object.entries(s)){let o=r;for(let u of a.tokens){let m=qt({chainSymbol:o,poolAddress:u.poolAddress}),p=ke(u.poolInfo);i[m]={...u.poolInfo,imbalance:p}}}return i}function Xo(s,i){let{name:r,...a}=s,{poolInfo:o,...u}=i;return{...u,...a,chainName:r}}function Yo(s){switch(s){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;case"cctpV2":return 4;case"oft":return 5}}function Ko(s){return Object.entries(s).reduce((i,[r,a])=>(i[r]=Ho(a),i),{})}function Ho(s){return Object.entries(s).reduce((i,[r,a])=>{let o=Yo(r);return o&&(i[o]=a),i},{})}function Qo(s,i){let r=H.getChainsProperties()[s];if(!r)return null;let a={...r,allbridgeChainId:i.chainId,bridgeAddress:i.bridgeAddress,oftBridgeAddress:i.oftBridgeAddress,transferTime:Ko(i.transferTime),txCostAmount:i.txCostAmount,confirmations:i.confirmations,suiAddresses:i.suiAddresses};return{...a,tokens:i.tokens.map(o=>Xo(a,o))}}function qt(s){return s.chainSymbol+"_"+s.poolAddress}function ns(s){let i=[];for(let[r,a]of Object.entries(s)){let o=r;for(let u of a.tokens)i.push({chainSymbol:o,poolAddress:u.poolAddress})}return i}function rs(s){let i={};for(let[r,a]of Object.entries(s)){let o=r;for(let[u,m]of Object.entries(a))m.imbalance=ke(m),i[qt({chainSymbol:o,poolAddress:u})]=m}return i}var en=class{api;constructor(i){this.api=zo.create({baseURL:i.coreApiUrl,headers:{Accept:"application/json",...i.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+qa},params:i.coreApiQueryParams})}async getTokenInfo(){let{data:i}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:es(i),poolInfoMap:ts(i)}}async getPendingInfo(){let{data:i}=await this.api.get("/pending-info");return i}async getGasBalance(i,r){let{data:a}=await this.api.get(`/check/${i}/${r}`);return a}async getTransferStatus(i,r){let{data:a}=await this.api.get(`/chain/${i}/${r}`);return a}async getReceiveTransactionCost(i){if(i.messenger===5&&!i.sourceToken)throw new Nn("For OFT sourceToken required");let{data:r}=await this.api.post("/receive-fee",i,{headers:{"Content-Type":"application/json"}});return{exchangeRate:r.exchangeRate,fee:r.fee,sourceNativeTokenPrice:r.sourceNativeTokenPrice,adminFeeShareWithExtras:r.adminFeeShareWithExtras}}async getPoolInfoMap(i){let r=i instanceof Array?i:[i],{data:a}=await this.api.post("/pool-info",{pools:r},{headers:{"Content-Type":"application/json"}});return rs(a)}};g();y();f();import Pr from"timed-cache";var Ti=20*1e3,qo=55*1e3,tn=class{constructor(i){this.apiClient=i;this.tokenInfoCache=new Pr({defaultTtl:qo}),this.receivedTransactionCache=new Pr({defaultTtl:Ti}),this.pendingInfoCache=new Pr({defaultTtl:Ti}),this.gasBalanceCache=new Pr({defaultTtl:Ti})}tokenInfoCache;pendingInfoCache;gasBalanceCache;receivedTransactionCache;getTokenInfo(){let i="TOKEN_INFO_CACHE_KEY",r=this.tokenInfoCache.get(i);if(r)return r;let a=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(i,a),a}async getGasBalance(i,r){let a=`GAS_BALANCE_${i}_${r}`,o=this.gasBalanceCache.get(a);if(o)return o;let u=this.apiClient.getGasBalance(i,r);return this.gasBalanceCache.put(a,u),u}async getPendingInfo(){let i="PENDING_INFO_CACHE_KEY",r=this.pendingInfoCache.get(i);if(r)return r;let a=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(i,a),a}async getReceiveTransactionCost(i){let r=`RECEIVE_TX_COST_${i.sourceChainId}_${i.destinationChainId}_${i.messenger}${i.sourceToken?"_"+i.sourceToken:""}`,a=this.receivedTransactionCache.get(r);if(a)return a;let o=await this.apiClient.getReceiveTransactionCost(i);return this.receivedTransactionCache.put(r,o),o}async getTransferStatus(i,r){return this.apiClient.getTransferStatus(i,r)}async getPoolInfoMap(i){return this.apiClient.getPoolInfoMap(i)}};g();y();f();var nn=class{constructor(i){this.apiClient=i}async getChainDetailsMap(){return(await this.apiClient.getTokenInfo()).chainDetailsMap}async tokens(){let i=await this.getChainDetailsMap();return Object.values(i).flatMap(r=>r.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(i,r){return this.apiClient.getGasBalance(i,r)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(i,r){return await this.apiClient.getTransferStatus(i,r)}async getReceiveTransactionCost(i){return await this.apiClient.getReceiveTransactionCost(i)}async getPoolInfoMap(i){return await this.apiClient.getPoolInfoMap(i)}};g();y();f();var rn=class{constructor(i,r){this.client=i;this.isStaging=r.coreApiQueryParams?.staging==="true"}isStaging;async getChainDetailsMap(i){let r=await this.client.getChainDetailsMap(),a={};for(let o in r){let u=r[o];u&&(a[o]={...u,tokens:is(u.tokens,i,this.isStaging)})}return a}async tokens(i){return is(await this.client.tokens(),i,this.isStaging)}async getPendingInfo(){return this.client.getPendingInfo()}async getGasBalance(i,r){return this.client.getGasBalance(i,r)}async getTransferStatus(i,r){return await this.client.getTransferStatus(i,r)}async getReceiveTransactionCost(i){return await this.client.getReceiveTransactionCost(i)}cachePut(i,r){return this.client.cachePut(i,r)}getPoolInfoByKey(i){return this.client.getPoolInfoByKey(i)}refreshPoolInfo(i){return this.client.refreshPoolInfo(i)}};function is(s,i,r){return s.filter(a=>r?!0:a.flags[i]).map(ec)}function ec(s){let{flags:i,...r}=s;return r}g();y();f();import tc from"timed-cache";var nc=55*1e3,an=class{constructor(i){this.client=i;this.poolInfoCache=new bi}poolInfoCache;async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(i,r){return this.client.getTransferStatus(i,r)}getReceiveTransactionCost(i){return this.client.getReceiveTransactionCost(i)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(i,r){return this.client.getGasBalance(i,r)}async getPoolInfoByKey(i){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let r=this.poolInfoCache.get(i);if(r)return r;{let a=await this.client.getPoolInfoMap(i);this.poolInfoCache.putAll(a);let o=a[qt(i)];if(o)return o;throw new O("Cannot find pool info for "+i.poolAddress+" on chain "+i.chainSymbol)}}async refreshPoolInfo(i){let r;if(i)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),r=await this.client.getPoolInfoMap(i);else{let a=await this.client.getChainDetailsMapAndPoolInfoMap();r=await this.client.getPoolInfoMap(ns(a.chainDetailsMap))}this.poolInfoCache.putAll(r)}cachePut(i,r){this.poolInfoCache.put(qt(i),r)}},bi=class{cache;constructor(){this.cache=new tc({defaultTtl:nc})}putAll(i){for(let[r,a]of Object.entries(i))this.cache.put(r,a)}putAllIfNotExists(i){for(let[r,a]of Object.entries(i))this.cache.get(r)||this.cache.put(r,a)}put(i,r){this.cache.put(i,r)}get(i){let r=qt(i);return this.cache.get(r)}};g();y();f();import{Big as lc}from"big.js";import{TronWeb as dc}from"tronweb";import{Web3 as pc}from"web3";g();y();f();g();y();f();var rc={abi:[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}]},wr=rc;g();y();f();g();y();f();g();y();f();import{Big as as}from"big.js";var Ge=class{async checkAllowance(i){let r=await this.getAllowance(i);return as(r).gte(as(i.amount))}};var ic="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",ac="0xdac17f958d2ee523a2206206994597c13d831ec7",sc=1e5,In=class extends Ge{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";getAllowance(r){let a=r.token.tokenAddress,o=r.owner,u=r.spender;return this.getAllowanceByTokenAddress(a,o,u)}getAllowanceByTokenAddress(r,a,o){return this.getERC20Contract(r).methods.allowance(a,o).call()}async getTokenBalance(r){return await this.getERC20Contract(r.token.tokenAddress).methods.balanceOf(r.account).call()}async getNativeTokenBalance(r){return(await this.web3.eth.getBalance(r.account)).toString()}async approve(r){if(this.isUsdt(r.tokenAddress)&&await this.getAllowanceByTokenAddress(r.tokenAddress,r.owner,r.spender)!=="0"){let u=await this.buildRawTransactionApprove({...r,amount:"0"});await this.sendRawTransaction(u,r.chainSymbol)}let a=await this.buildRawTransactionApprove(r);return await this.sendRawTransaction(a,r.chainSymbol)}isUsdt(r){return r.toLowerCase()===ac}buildRawTransactionApprove(r){let{tokenAddress:a,spender:o,owner:u,amount:m}=r,h=this.getERC20Contract(a).methods.approve(o,m==null?ic:rr(m));return Promise.resolve({from:u,to:a,value:"0",data:h.encodeABI()})}async sendRawTransaction(r,a){let o=r,u={maxPriorityFeePerGas:void 0,maxFeePerGas:void 0};a==="POL"?o.gas=sc:o.gas=await this.web3.eth.estimateGas(r);let{transactionHash:m}=await this.web3.eth.sendTransaction({...o,...u});return{txId:m.toString()}}getERC20Contract(r){return new this.web3.eth.Contract(wr.abi,r)}};g();y();f();import{AnchorProvider as oc}from"@project-serum/anchor";import{Connection as cc,PublicKey as Cr}from"@solana/web3.js";var Br=class extends Ge{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";approve(r){throw new de}buildRawTransactionApprove(r){throw new de}buildAnchorProvider(r){let a=new cc(this.solanaRpcUrl,"confirmed"),o=new Cr(r);return new oc(a,{publicKey:o},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(r){throw new de}async getTokenBalance(r){let{account:a,token:o}=r;try{let u=await Qe(new Cr(a),new Cr(o.tokenAddress));return(await _t(u,this.buildAnchorProvider(a))).amount.toString()}catch(u){if(u instanceof Error)return u.message.startsWith("Account does not exist"),"0";throw u}}async getNativeTokenBalance(r){return(await this.buildAnchorProvider(r.account).connection.getBalance(new Cr(r.account))).toString()}};g();y();f();import{Horizon as fC,NotFoundError as Ac}from"@stellar/stellar-sdk";var Ir=class extends Ge{constructor(r,a,o){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=o}chainType="SRB";getAllowance(){throw new de}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new O("OriginTokenAddress missing");let[a,o]=r.token.originTokenAddress.split(":"),u=new fC.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),m;try{m=await u.loadAccount(r.account)}catch(T){if(T instanceof Ac)return"0";throw T}let h=m.balances.find(T=>(T.asset_type==="credit_alphanum4"||T.asset_type==="credit_alphanum12")&&T.asset_code==a&&T.asset_issuer==o);return h?.balance?Q(h.balance,H.getChainDecimalsByType(H.getChainProperty(r.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(r){let m=(await new fC.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(r.account)).balances.find(p=>p.asset_type==="native");return m?.balance?Q(m.balance,H.getChainDecimalsByType(H.getChainProperty(r.chainSymbol).chainType)).toFixed():"0"}approve(){throw new de}buildRawTransactionApprove(){throw new de}};g();y();f();import{SuiClient as uc}from"@mysten/sui/client";var Rr=class extends Ge{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.suiClient=new uc({url:this.suiRpcUrl})}chainType="SUI";suiClient;approve(r){throw new de}buildRawTransactionApprove(r){throw new de}getAllowance(r){throw new de}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");return(await this.suiClient.getBalance({owner:r.account,coinType:r.token.originTokenAddress})).totalBalance}async getNativeTokenBalance(r){let a=await At(o=>this.suiClient.getCoins({owner:r.account,cursor:o}));return a.length===0?"0":a.reduce((o,u)=>o+BigInt(u.balance),BigInt(0)).toString()}};g();y();f();var mc="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Rn=class extends Ge{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async getAllowance(r){let{token:{tokenAddress:a},owner:o}=r;return(await(await this.getContract(a)).methods.allowance(o,r.spender).call()).toString()}async getTokenBalance(r){return(await(await this.getContract(r.token.tokenAddress)).balanceOf(r.account).call()).toString()}async getNativeTokenBalance(r){return(await this.tronWeb.trx.getBalance(r.account)).toString()}async approve(r){let a=await this.buildRawTransactionApprove(r);return await ir(this.tronWeb,a)}async buildRawTransactionApprove(r){let{tokenAddress:a,spender:o,owner:u,amount:m}=r,p=m==null?mc:rr(m),h=[{type:"address",value:o},{type:"uint256",value:p}];return this.buildRawTransaction(a,"approve(address,uint256)",h,"0",u)}getContract(r){return this.tronWeb.contract(wr.abi,r)}async buildRawTransaction(r,a,o,u,m){let p=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+u},o,m);if(!p?.result?.result)throw new O("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}};var sn=class{constructor(i,r,a){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a}async getAllowance(i,r){let a=await this.getChainTokenService(i.token.chainSymbol,i.owner,r).getAllowance(i);return J(a,i.token.decimals).toFixed()}async checkAllowance(i,r){return q(i.amount),ee("amount",i.amount,i.token.decimals),this.getChainTokenService(i.token.chainSymbol,i.owner,r).checkAllowance(this.prepareCheckAllowanceParams(i))}async approve(i,r){return r.amount&&(q(r.amount),ee("amount",r.amount,r.token.decimals)),this.getChainTokenService(r.token.chainSymbol,r.owner,i).approve(this.prepareApproveParams(r))}async buildRawTransactionApprove(i,r){return i.amount&&(q(i.amount),ee("amount",i.amount,i.token.decimals)),this.getChainTokenService(i.token.chainSymbol,i.owner,r).buildRawTransactionApprove(this.prepareApproveParams(i))}async getTokenBalance(i,r){let a=await this.getChainTokenService(i.token.chainSymbol,i.account,r).getTokenBalance(i);return i.token.decimals?J(a,i.token.decimals).toFixed():a}async getNativeTokenBalance(i,r){let a=await this.getChainTokenService(i.chainSymbol,i.account,r).getNativeTokenBalance(i);return{int:a,float:J(a,H.getChainDecimalsByType(H.getChainProperty(i.chainSymbol).chainType)).toFixed()}}getChainTokenService(i,r,a){switch(H.getChainProperty(i).chainType){case"EVM":{if(a)return new In(a,this.api);{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i);return new In(new pc(o),this.api)}}case"TRX":{if(a)return new Rn(a,this.api);{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i),u=new dc({fullHost:o});return u.setAddress(r),new Rn(u,this.api)}}case"SOLANA":{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i);return new Br(o,this.api)}case"SRB":return new Ir(this.nodeRpcUrlsConfig,this.params,this.api);case"SUI":return new Rr(this.nodeRpcUrlsConfig.getNodeRpcUrl(i),this.api)}}prepareCheckAllowanceParams(i){return{...i,amount:Q(i.amount,i.token.decimals)}}prepareApproveParams(i){return{tokenAddress:i.token.tokenAddress,owner:i.owner,spender:i.spender,chainSymbol:i.token.chainSymbol,amount:i.amount==null?void 0:lc(i.amount).toFixed()}}};var vr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r;let a=new en(r),o=new tn(a),u=new nn(o),m=new an(u);this.api=new rn(m,r),this.tokenService=new sn(this.api,i,r)}api;tokenService;buildRawTransactionApprove(i,r){return this.tokenService.buildRawTransactionApprove(i,r)}checkAllowance(i,r){return this.tokenService.checkAllowance(i,r)}getAllowance(i,r){return this.tokenService.getAllowance(i,r)}};g();y();f();import{Connection as gc,PublicKey as fc,TransactionMessage as yc}from"@solana/web3.js";var kr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r}async addMemoToTx(i,r){if(r.length>28)throw new O("InvalidArgumentException memo cannot be more than 28 characters");let a=new gc(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),o=await Mt(i,a),u=yc.decompile(i.message,{addressLookupTableAccounts:o}),m=u.instructions[u.instructions.length-1];if(!m?.keys)throw new O("Last instruction or its keys are invalid.");m.keys.push({pubkey:new fc(C.from(r)),isSigner:!1,isWritable:!1}),i.message=u.compileToV0Message(o)}};g();y();f();import{Asset as bc,BASE_FEE as Sc,contract as sk,Horizon as ss,Operation as Pc,Operation as wc,rpc as kn,TimeoutInfinite as Cc,TransactionBuilder as Si,TransactionBuilder as os}from"@stellar/stellar-sdk";g();y();f();import{contract as e}from"@stellar/stellar-sdk";var hc=e.Spec,Tc=e.Client;var vn=class extends Tc{constructor(r){super(new hc(["AAAAAAAAAYlSZXR1cm5zIHRoZSBhbGxvd2FuY2UgZm9yIGBzcGVuZGVyYCB0byB0cmFuc2ZlciBmcm9tIGBmcm9tYC4KClRoZSBhbW91bnQgcmV0dXJuZWQgaXMgdGhlIGFtb3VudCB0aGF0IHNwZW5kZXIgaXMgYWxsb3dlZCB0byB0cmFuc2ZlcgpvdXQgb2YgZnJvbSdzIGJhbGFuY2UuIFdoZW4gdGhlIHNwZW5kZXIgdHJhbnNmZXJzIGFtb3VudHMsIHRoZSBhbGxvd2FuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQgdHJhbnNmZXJlZC4KCiMgQXJndW1lbnRzCgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHRvIGJlIGRyYXduIGZyb20uCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3Mgc3BlbmRpbmcgdGhlIHRva2VucyBoZWxkIGJ5IGBmcm9tYC4AAAAAAAAJYWxsb3dhbmNlAAAAAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAEAAAAL","AAAAAAAAAIlSZXR1cm5zIHRydWUgaWYgYGlkYCBpcyBhdXRob3JpemVkIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBmb3Igd2hpY2ggdG9rZW4gYXV0aG9yaXphdGlvbiBpcyBiZWluZyBjaGVja2VkLgAAAAAAAAphdXRob3JpemVkAAAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAB","AAAAAAAAA55TZXQgdGhlIGFsbG93YW5jZSBieSBgYW1vdW50YCBmb3IgYHNwZW5kZXJgIHRvIHRyYW5zZmVyL2J1cm4gZnJvbQpgZnJvbWAuCgpUaGUgYW1vdW50IHNldCBpcyB0aGUgYW1vdW50IHRoYXQgc3BlbmRlciBpcyBhcHByb3ZlZCB0byB0cmFuc2ZlciBvdXQgb2YKZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byB0cmFuc2ZlciBhbW91bnRzLCBhbmQKd2hlbiBhbiBhbW91bnQgaXMgdHJhbnNmZXJyZWQgdGhlIGFsbG93YW5jZSB3aWxsIGJlIHJlZHVjZWQgYnkgdGhlCmFtb3VudCB0cmFuc2ZlcmVkLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgdG8gYmUgZHJhd24gZnJvbS4KKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBiZWluZyBhdXRob3JpemVkIHRvIHNwZW5kIHRoZSB0b2tlbnMgaGVsZCBieQpgZnJvbWAuCiogYGFtb3VudGAgLSBUaGUgdG9rZW5zIHRvIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGBzcGVuZGVyYC4KKiBgZXhwaXJhdGlvbl9sZWRnZXJgIC0gVGhlIGxlZGdlciBudW1iZXIgd2hlcmUgdGhpcyBhbGxvd2FuY2UgZXhwaXJlcy4gQ2Fubm90CmJlIGxlc3MgdGhhbiB0aGUgY3VycmVudCBsZWRnZXIgbnVtYmVyIHVubGVzcyB0aGUgYW1vdW50IGlzIGJlaW5nIHNldCB0byAwLgpBbiBleHBpcmVkIGVudHJ5ICh3aGVyZSBleHBpcmF0aW9uX2xlZGdlciA8IHRoZSBjdXJyZW50IGxlZGdlciBudW1iZXIpCnNob3VsZCBiZSB0cmVhdGVkIGFzIGEgMCBhbW91bnQgYWxsb3dhbmNlLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImFwcHJvdmUiLCBmcm9tOiBBZGRyZXNzLApzcGVuZGVyOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6IGkxMjgsIGV4cGlyYXRpb25fbGVkZ2VyOiB1MzJdYAAAAAAAB2FwcHJvdmUAAAAABAAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAAAAABFleHBpcmF0aW9uX2xlZGdlcgAAAAAAAAQAAAAA","AAAAAAAAAJhSZXR1cm5zIHRoZSBiYWxhbmNlIG9mIGBpZGAuCgojIEFyZ3VtZW50cwoKKiBgaWRgIC0gVGhlIGFkZHJlc3MgZm9yIHdoaWNoIGEgYmFsYW5jZSBpcyBiZWluZyBxdWVyaWVkLiBJZiB0aGUKYWRkcmVzcyBoYXMgbm8gZXhpc3RpbmcgYmFsYW5jZSwgcmV0dXJucyAwLgAAAAdiYWxhbmNlAAAAAAEAAAAAAAAAAmlkAAAAAAATAAAAAQAAAAs=","AAAAAAAAAWRCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLgoKUmVkdWNlcyBmcm9tJ3MgYmFsYW5jZSBieSB0aGUgYW1vdW50LCB3aXRob3V0IHRyYW5zZmVycmluZyB0aGUgYmFsYW5jZQp0byBhbm90aGVyIGhvbGRlcidzIGJhbGFuY2UuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIG9mIHRva2VucyB3aGljaCB3aWxsIGJlCmJ1cm5lZCBmcm9tLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgYnVybmVkLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImJ1cm4iLCBmcm9tOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6CmkxMjhdYAAAAARidXJuAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAtxCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSBvZiBgc3BlbmRlcmAuCgpSZWR1Y2VzIGZyb20ncyBiYWxhbmNlIGJ5IHRoZSBhbW91bnQsIHdpdGhvdXQgdHJhbnNmZXJyaW5nIHRoZSBiYWxhbmNlCnRvIGFub3RoZXIgaG9sZGVyJ3MgYmFsYW5jZS4KClRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byBidXJuIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZSwgaWYKdGhlIGFtb3VudCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGFsbG93YW5jZSB0aGF0IHRoZSBzcGVuZGVyIGhhcwpvbiB0aGUgZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyJ3MgYWxsb3dhbmNlIG9uIGZyb20ncyBiYWxhbmNlIHdpbGwgYmUKcmVkdWNlZCBieSB0aGUgYW1vdW50LgoKIyBBcmd1bWVudHMKCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3MgYXV0aG9yaXppbmcgdGhlIGJ1cm4sIGFuZCBoYXZpbmcgaXRzIGFsbG93YW5jZQpjb25zdW1lZCBkdXJpbmcgdGhlIGJ1cm4uCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQpidXJuZWQgZnJvbS4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIGJ1cm5lZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJidXJuIiwgZnJvbTogQWRkcmVzc10sIGRhdGEgPSBbYW1vdW50OgppMTI4XWAAAAAJYnVybl9mcm9tAAAAAAAAAwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAVNDbGF3YmFjayBgYW1vdW50YCBmcm9tIGBmcm9tYCBhY2NvdW50LiBgYW1vdW50YCBpcyBidXJuZWQgaW4gdGhlCmNsYXdiYWNrIHByb2Nlc3MuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIGZyb20gd2hpY2ggdGhlIGNsYXdiYWNrIHdpbGwKdGFrZSB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSBjbGF3ZWQgYmFjay4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJjbGF3YmFjayIsIGFkbWluOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAACGNsYXdiYWNrAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAIBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdXNlZCB0byByZXByZXNlbnQgYW1vdW50cyBvZiB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAhkZWNpbWFscwAAAAAAAAABAAAABA==","AAAAAAAAAPVNaW50cyBgYW1vdW50YCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgbWludGVkIHRva2Vucy4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIG1pbnRlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJtaW50IiwgYWRtaW46IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwgZGF0YQo9IFthbW91bnQ6IGkxMjhdYAAAAAAAAARtaW50AAAAAgAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAFlSZXR1cm5zIHRoZSBuYW1lIGZvciB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAAAAARuYW1lAAAAAAAAAAEAAAAQ","AAAAAAAAAQxTZXRzIHRoZSBhZG1pbmlzdHJhdG9yIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyBgbmV3X2FkbWluYC4KCiMgQXJndW1lbnRzCgoqIGBuZXdfYWRtaW5gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCBoZW5jZWZvcnRoIGJlIHRoZSBhZG1pbmlzdHJhdG9yCm9mIHRoaXMgdG9rZW4gY29udHJhY3QuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2FkbWluIiwgYWRtaW46IEFkZHJlc3NdLCBkYXRhID0KW25ld19hZG1pbjogQWRkcmVzc11gAAAACXNldF9hZG1pbgAAAAAAAAEAAAAAAAAACW5ld19hZG1pbgAAAAAAABMAAAAA","AAAAAAAAAEZSZXR1cm5zIHRoZSBhZG1pbiBvZiB0aGUgY29udHJhY3QuCgojIFBhbmljcwoKSWYgdGhlIGFkbWluIGlzIG5vdCBzZXQuAAAAAAAFYWRtaW4AAAAAAAAAAAAAAQAAABM=","AAAAAAAAAVBTZXRzIHdoZXRoZXIgdGhlIGFjY291bnQgaXMgYXV0aG9yaXplZCB0byB1c2UgaXRzIGJhbGFuY2UuIElmCmBhdXRob3JpemVkYCBpcyB0cnVlLCBgaWRgIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBiZWluZyAoZGUtKWF1dGhvcml6ZWQuCiogYGF1dGhvcml6ZWAgLSBXaGV0aGVyIG9yIG5vdCBgaWRgIGNhbiB1c2UgaXRzIGJhbGFuY2UuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2F1dGhvcml6ZWQiLCBpZDogQWRkcmVzc10sIGRhdGEgPQpbYXV0aG9yaXplOiBib29sXWAAAAAOc2V0X2F1dGhvcml6ZWQAAAAAAAIAAAAAAAAAAmlkAAAAAAATAAAAAAAAAAlhdXRob3JpemUAAAAAAAABAAAAAA==","AAAAAAAAAFtSZXR1cm5zIHRoZSBzeW1ib2wgZm9yIHRoaXMgdG9rZW4uCgojIFBhbmljcwoKSWYgdGhlIGNvbnRyYWN0IGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuAAAAAAZzeW1ib2wAAAAAAAAAAAABAAAAEA==","AAAAAAAAAWRUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQp3aXRoZHJhd24gZnJvbS4KKiBgdG9gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCByZWNlaXZlIHRoZSB0cmFuc2ZlcnJlZCB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSB0cmFuc2ZlcnJlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJ0cmFuc2ZlciIsIGZyb206IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwKZGF0YSA9IFthbW91bnQ6IGkxMjhdYAAAAAh0cmFuc2ZlcgAAAAMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAzNUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSB0aGF0CmBzcGVuZGVyYCBoYXMgb24gYGZyb21gJ3MgYmFsYW5jZS4gQXV0aG9yaXplZCBieSBzcGVuZGVyCihgc3BlbmRlci5yZXF1aXJlX2F1dGgoKWApLgoKVGhlIHNwZW5kZXIgd2lsbCBiZSBhbGxvd2VkIHRvIHRyYW5zZmVyIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZQppZiB0aGUgYW1vdW50IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgYWxsb3dhbmNlIHRoYXQgdGhlIHNwZW5kZXIKaGFzIG9uIHRoZSBmcm9tJ3MgYmFsYW5jZS4gVGhlIHNwZW5kZXIncyBhbGxvd2FuY2Ugb24gZnJvbSdzIGJhbGFuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQuCgojIEFyZ3VtZW50cwoKKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBhdXRob3JpemluZyB0aGUgdHJhbnNmZXIsIGFuZCBoYXZpbmcgaXRzCmFsbG93YW5jZSBjb25zdW1lZCBkdXJpbmcgdGhlIHRyYW5zZmVyLgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHdoaWNoIHdpbGwgYmUKd2l0aGRyYXduIGZyb20uCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgdHJhbnNmZXJyZWQgdG9rZW5zLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgdHJhbnNmZXJyZWQuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsidHJhbnNmZXIiLCBmcm9tOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAADXRyYW5zZmVyX2Zyb20AAAAAAAAEAAAAAAAAAAdzcGVuZGVyAAAAABMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA=="]),r);this.options=r}fromJSON={allowance:this.txFromJSON,authorized:this.txFromJSON,approve:this.txFromJSON,balance:this.txFromJSON,burn:this.txFromJSON,burn_from:this.txFromJSON,clawback:this.txFromJSON,decimals:this.txFromJSON,mint:this.txFromJSON,name:this.txFromJSON,set_admin:this.txFromJSON,admin:this.txFromJSON,set_authorized:this.txFromJSON,symbol:this.txFromJSON,transfer:this.txFromJSON,transfer_from:this.txFromJSON}};var Bc=100,Ic=180,xr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r}async buildChangeTrustLineXdrTx(i){let a=await new ss.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(i.sender),u=await this.getContract(vn,i.tokenAddress).name();if(Ht(u))throw new O;let m=Kt(u);if(!m)throw new O;let[p,h]=m.split(":");if(p===void 0||h===void 0)throw new O("Invalid token name format. Expected format 'symbol:srbTokenAddress'");let T=new bc(p,h),S=wc.changeTrust({asset:T,limit:i.limit});return new os(a,{fee:Bc.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(S).setTimeout(Ic).build().toXDR()}async getBalanceLine(i,r){let o=await this.getContract(vn,r).name();if(Ht(o))throw new O;let u=Kt(o);if(!u)throw new O;let[m,p]=u.split(":"),h=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new ss.Server(h).loadAccount(i)).balances.find(x=>(x.asset_type==="credit_alphanum4"||x.asset_type==="credit_alphanum12")&&x.asset_code==m&&x.asset_issuer==p)}async submitTransactionStellar(i){let r=new ss.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),a=os.fromXDR(i,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await r.submitTransaction(a)}async simulateAndCheckRestoreTxRequiredSoroban(i,r){let a=new kn.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),o=await a.getAccount(r),u=Si.fromXDR(i,this.params.sorobanNetworkPassphrase),m=await a.simulateTransaction(u);if(kn.Api.isSimulationRestore(m))return new Si(o,{fee:(+Sc+ +m.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(m.restorePreamble.transactionData.build()).addOperation(Pc.restoreFootprint({})).setTimeout(Cc).build().toXDR()}async sendTransactionSoroban(i){let r=new kn.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=Si.fromXDR(i,this.params.sorobanNetworkPassphrase);return r.sendTransaction(a)}async confirmTx(i,r=15){let a=new kn.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),o=await Gi(()=>a.getTransaction(i),m=>m.status===kn.Api.GetTransactionStatus.NOT_FOUND,r);if(o.length===0)throw new O("No transaction responses found.");let u=o[o.length-1];if(!u)throw new O("Unexpected error: last response is undefined.");return u}getContract(i,r){let a={contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new i(a)}};g();y();f();var Fr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.api=r}_suiBridgeService;async buildSendTxFromCustomTx(i,r,a){return this.suiBridgeService.buildRawTransactionSendFromCustomTx(i,r,a)}get suiBridgeService(){return this._suiBridgeService||(this._suiBridgeService=new Xt(this.nodeRpcUrlsConfig,this.api)),this._suiBridgeService}};var Mr=class{constructor(i){this.service=i;this.srb=new xr(i.nodeRpcUrlsConfig,i.params),this.sol=new kr(i.nodeRpcUrlsConfig,i.params),this.sui=new Fr(i.nodeRpcUrlsConfig,i.api),this.evm=new vr(i.nodeRpcUrlsConfig,i.params)}srb;sol;sui;evm};g();y();f();var Ft=(r=>(r.WITH_NATIVE_CURRENCY="native",r.WITH_STABLECOIN="stablecoin",r))(Ft||{}),Zn=(r=>(r.INT="int",r.FLOAT="float",r))(Zn||{});g();y();f();import{Big as ge}from"big.js";var xn=class{constructor(i){this.nodeRpcUrls=i}getNodeRpcUrl(i){let r=this.nodeRpcUrls[i];if(r!==void 0)return r;throw new Un(i)}},Or=class{constructor(i,r=Dn){this.nodeRpcUrlsConfig=i;H.addChainsProperties(r.additionalChainsProperties);let a=new en(r),o=new tn(a),u=new nn(o),m=new an(u);this.api=new rn(m,r),this.tokenService=new sn(this.api,i,r),this.bridge=new ar(this.api,i,r,this.tokenService),this.pool=new Sr(this.api,i,r,this.tokenService),this.params=r}api;tokenService;params;bridge;pool;async chainDetailsMap(i){return this.api.getChainDetailsMap(i)}async tokens(i){return this.api.tokens(i)}async tokensByChain(i,r){let o=(await this.api.getChainDetailsMap(r))[i];return o?o.tokens:[]}async getTransferStatus(i,r){return this.api.getTransferStatus(i,r)}async getGasBalance(i,r){return this.api.getGasBalance(i,r)}async checkAddress(){return new Promise(i=>{i({status:"OK",gasBalance:null})})}async getPendingStatusInfo(i,r,a,o){q(i);let u;r=="float"?(ee("amount",i,a.decimals),u=Q(i,a.decimals).toFixed()):u=i;let m=it(u,a,await pe(this.api,a)),p=await pe(this.api,o),h=this.getAmountFromVUsdFormatted(m,o,p),T,S=await this.api.getPendingInfo();for(let P in S[o.chainSymbol]){let x=S[o.chainSymbol];if(!x)throw new O("Cannot find pending info for "+o.chainSymbol);T=x[P]}if(T){let P=Qi(T.totalSentAmount,p),x=this.getAmountFromVUsdFormatted(m,o,P),I;return ge(x.int).gt(h.int)?I={min:h,max:x}:I={min:x,max:h},{pendingTxs:T.pendingTxs,pendingAmount:{int:Le(T.totalSentAmount,3,o.decimals).toFixed(0),float:J(T.totalSentAmount,3).toFixed()},estimatedAmount:I}}return{pendingTxs:0,pendingAmount:{int:"0",float:"0"},estimatedAmount:{min:h,max:h}}}async getTokenBalance(i,r){return this.tokenService.getTokenBalance(i,r)}async getNativeTokenBalance(i,r){return this.tokenService.getNativeTokenBalance(i,r)}async calculateFeePercentOnSourceChain(i,r){q(i),ee("amountFloat",i,r.decimals);let a=Q(i,r.decimals);if(a.eq(0))return 0;let o=it(a,r,await pe(this.api,r)),u=Ne(o,r.decimals);return Lr(a,u)}async calculateFeePercentOnDestinationChain(i,r,a){q(i),ee("amountFloat",i,r.decimals);let o=Q(i,r.decimals);if(o.eq(0))return 0;let u=it(o,r,await pe(this.api,r)),m=pn(u,a,await pe(this.api,a)),p=Ne(u,a.decimals);return Lr(p,m)}async getAmountToBeReceivedAndGasFeeOptions(i,r,a,o){return q(i),ee("amountToSendFloat",i,r.decimals),{amountToSendFloat:ge(i).toFixed(),amountToBeReceivedFloat:await this.getAmountToBeReceived(i,r,a,o),gasFeeOptions:await this.getGasFeeOptions(r,a,o)}}async getAmountToSendAndGasFeeOptions(i,r,a,o){return q(i),ee("amountToBeReceivedFloat",i,a.decimals),{amountToSendFloat:await this.getAmountToSend(i,r,a,o),amountToBeReceivedFloat:ge(i).toFixed(),gasFeeOptions:await this.getGasFeeOptions(r,a,o)}}async getAmountToBeReceived(i,r,a,o){return this.getAmountToBeReceivedCompute(i,r,a,o,async()=>await pe(this.api,r),async()=>await pe(this.api,a))}async getAmountToBeReceivedFromChain(i,r,a,o,u,m){return this.getAmountToBeReceivedCompute(i,r,a,o,async()=>await this.pool.getPoolInfoFromChain(r,u),async()=>await this.pool.getPoolInfoFromChain(a,m))}async getAmountToBeReceivedCompute(i,r,a,o=1,u,m){switch(o){case 1:case 2:return this.getAmountToBeReceivedComputeWithPools(i,r,a,await u(),await m());case 3:case 4:return this.getAmountToBeReceivedComputeCctp(i,r,a,o);case 5:return this.getAmountToBeReceivedComputeOft(i,r,a)}}getAmountToBeReceivedComputeWithPools(i,r,a,o,u){q(i),ee("amountToSendFloat",i,r.decimals);let m=Q(i,r.decimals),p=it(m,r,o);return this.getAmountFromVUsdFormatted(p,a,u).float}getAmountToBeReceivedComputeCctp(i,r,a,o){q(i),ee("amountToSendFloat",i,r.decimals);let u=Q(i,r.decimals);switch(o){case 3:{if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new Ie("Such route does not support CCTP protocol");let m=u.mul(ge(1).minus(r.cctpFeeShare)).round(0,ge.roundUp),p=Le(m,r.decimals,a.decimals).round(0);return J(p,a.decimals).toFixed()}case 4:{if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new Ie("Such route does not support CCTP V2 protocol");let m=u.mul(ge(1).minus(r.cctpV2FeeShare)).round(0,ge.roundUp),p=Le(m,r.decimals,a.decimals).round(0);return J(p,a.decimals).toFixed()}}}async getAmountToBeReceivedComputeOft(i,r,a){q(i),ee("amountToSendFloat",i,r.decimals);let o=Q(i,r.decimals);if(!r.oftBridgeAddress||!a.oftBridgeAddress||r.oftId!==a.oftId)throw new Re("Such route does not support OFT protocol");let{adminFeeShareWithExtras:u}=await this.api.getReceiveTransactionCost({sourceChainId:r.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:5,sourceToken:r.tokenAddress});if(!u)throw new Re("Such route does not support OFT protocol");let m=o.mul(ge(1).minus(u)).round(0,ge.roundUp),p=Le(m,r.decimals,a.decimals).round(0);return J(p,a.decimals).toFixed()}async getAmountToSend(i,r,a,o){return this.getAmountToSendCompute(i,r,a,o,()=>pe(this.api,r),()=>pe(this.api,a))}async getAmountToSendFromChain(i,r,a,o,u,m){return this.getAmountToSendCompute(i,r,a,o,()=>this.pool.getPoolInfoFromChain(r,u),()=>this.pool.getPoolInfoFromChain(a,m))}async getAmountToSendCompute(i,r,a,o=1,u,m){switch(o){case 1:case 2:return this.getAmountToSendComputeWithPools(i,r,a,await u(),await m());case 3:case 4:return this.getAmountToSendComputeCctp(i,r,a,o);case 5:return this.getAmountToSendComputeOft(i,r,a)}}getAmountToSendComputeWithPools(i,r,a,o,u){q(i),ee("amountToBeReceivedFloat",i,a.decimals);let m=Q(i,a.decimals),p=qi(m,a,u),h=zi(p,r,o);if(ge(h).lte(0))throw new mt;return J(h,r.decimals).toFixed()}getAmountToSendComputeCctp(i,r,a,o){q(i),ee("amountToBeReceivedFloat",i,a.decimals);let u=Q(i,a.decimals);switch(o){case 3:{if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new Ie("Such route does not support CCTP protocol");let m=u.div(ge(1).minus(r.cctpFeeShare)).round(0,ge.roundDown),p=Le(m,a.decimals,r.decimals).round(0);return J(p,r.decimals).toFixed()}case 4:{if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new Ie("Such route does not support CCTP V2 protocol");let m=u.div(ge(1).minus(r.cctpV2FeeShare)).round(0,ge.roundDown),p=Le(m,a.decimals,r.decimals).round(0);return J(p,r.decimals).toFixed()}}}async getAmountToSendComputeOft(i,r,a){q(i),ee("amountToBeReceivedFloat",i,a.decimals);let o=Q(i,a.decimals);if(!r.oftId||!a.oftId||!r.oftBridgeAddress||r.oftId!==a.oftId)throw new Re("Such route does not support OFT protocol");let{adminFeeShareWithExtras:u}=await this.api.getReceiveTransactionCost({sourceChainId:r.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:5,sourceToken:r.tokenAddress});if(!u)throw new Re("Such route does not support OFT protocol");let m=o.div(ge(1).minus(u)).round(0,ge.roundDown),p=Le(m,a.decimals,r.decimals).round(0);return J(p,r.decimals).toFixed()}async getGasFeeOptions(i,r,a){return Xr(i,r.allbridgeChainId,a,this.api)}getAverageTransferTime(i,r,a){return i.transferTime?.[r.chainSymbol]?.[a]??null}async getPoolInfoByToken(i){return await this.api.getPoolInfoByKey({chainSymbol:i.chainSymbol,poolAddress:i.poolAddress})}async refreshPoolInfo(i){if(i){let a=(i instanceof Array?i:[i]).map(o=>({chainSymbol:o.chainSymbol,poolAddress:o.poolAddress}));return this.api.refreshPoolInfo(a)}return this.api.refreshPoolInfo()}aprInPercents(i){return ta(i)}async getExtraGasMaxLimits(i,r,a){return await Yr(i,r,a,this.api)}async getVUsdFromAmount(i,r,a){q(i);let o;r=="float"?(ee("amount",i,a.decimals),o=Q(i,a.decimals).toFixed()):o=i;let u=it(o,a,await pe(this.api,a));return{int:u,float:J(u,3).toFixed()}}async getAmountFromVUsd(i,r){return this.getAmountFromVUsdFormatted(i,r,await pe(this.api,r))}getAmountFromVUsdFormatted(i,r,a){q(i);let o=pn(i,r,a);if(ge(o).lt(0))throw new mt;return{int:o,float:J(o,r.decimals).toFixed()}}async swapAndBridgeFeeCalculation(i,r,a){return Ha(i,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await pe(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await pe(this.api,a)})}async swapAndBridgeFeeCalculationReverse(i,r,a){let o=Qa(i,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await pe(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await pe(this.api,a)}),u=o.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if(ge(u).lt(0))throw new mt;return o}async getSendAmountDetails(i,r,a,o){q(i);let u;return r=="float"?(ee("amount",i,a.decimals),u=Q(i,a.decimals).toFixed()):u=i,za(u,a,await pe(this.api,a),o,await pe(this.api,o))}};function Rc(s){return"solanaRpcUrl"in s}var cs=class{params;bridge;pool;utils;service;constructor(i,r=Dn){let a;Rc(i)?a=new xn({SOL:i.solanaRpcUrl,TRX:i.tronRpcUrl}):a=new xn(i),this.service=new Or(a,r),this.bridge=this.service.bridge,this.pool=this.service.pool,this.utils=new Mr(this.service),this.params=r}async chainDetailsMap(i="swap"){return this.service.chainDetailsMap(i)}async tokens(i="swap"){return this.service.tokens(i)}async tokensByChain(i,r="swap"){return this.service.tokensByChain(i,r)}async getTransferStatus(i,r){return this.service.getTransferStatus(i,r)}async getGasBalance(i,r){return this.service.getGasBalance(i,r)}async checkAddress(i,r,a){return await this.service.checkAddress()}async getPendingStatusInfo(i,r,a,o){return this.service.getPendingStatusInfo(i,r,a,o)}async getTokenBalance(i,r){return this.service.getTokenBalance(i,r)}async getNativeTokenBalance(i,r){return this.service.getNativeTokenBalance(i,r)}async calculateFeePercentOnSourceChain(i,r){return this.service.calculateFeePercentOnSourceChain(i,r)}async calculateFeePercentOnDestinationChain(i,r,a){return this.service.calculateFeePercentOnDestinationChain(i,r,a)}async getAmountToBeReceivedAndGasFeeOptions(i,r,a,o){return this.service.getAmountToBeReceivedAndGasFeeOptions(i,r,a,o)}async getAmountToSendAndGasFeeOptions(i,r,a,o){return this.service.getAmountToSendAndGasFeeOptions(i,r,a,o)}async getAmountToBeReceived(i,r,a,o=1){return this.service.getAmountToBeReceived(i,r,a,o)}async getAmountToBeReceivedFromChain(i,r,a,o=1,u,m){return this.service.getAmountToBeReceivedFromChain(i,r,a,o,u,m)}getAmountToBeReceivedFromPools(i,r,a,o,u,m=1){switch(m){case 1:case 2:return this.service.getAmountToBeReceivedComputeWithPools(i,r,a,o,u);case 3:case 4:return this.service.getAmountToBeReceivedComputeCctp(i,r,a,m)}}async getAmountToSend(i,r,a,o=1){return this.service.getAmountToSend(i,r,a,o)}async getAmountToSendFromChain(i,r,a,o=1,u,m){return this.service.getAmountToSendFromChain(i,r,a,o,u,m)}getAmountToSendFromPools(i,r,a,o,u,m=1){switch(m){case 1:case 2:return this.service.getAmountToSendComputeWithPools(i,r,a,o,u);case 3:case 4:return this.service.getAmountToSendComputeCctp(i,r,a,m)}}async getGasFeeOptions(i,r,a){return this.service.getGasFeeOptions(i,r,a)}getAverageTransferTime(i,r,a){return this.service.getAverageTransferTime(i,r,a)}async getPoolInfoByToken(i){return this.service.getPoolInfoByToken(i)}async refreshPoolInfo(i){return this.service.refreshPoolInfo(i)}aprInPercents(i){return this.service.aprInPercents(i)}async getExtraGasMaxLimits(i,r,a=1){return this.service.getExtraGasMaxLimits(i,r,a)}async getVUsdFromAmount(i,r,a){return this.service.getVUsdFromAmount(i,r,a)}async getAmountFromVUsd(i,r){return this.service.getAmountFromVUsd(i,r)}async swapAndBridgeFeeCalculation(i,r,a){return this.service.swapAndBridgeFeeCalculation(i,r,a)}async swapAndBridgeFeeCalculationReverse(i,r,a){return this.service.swapAndBridgeFeeCalculationReverse(i,r,a)}async getSendAmountDetails(i,r,a,o){return this.service.getSendAmountDetails(i,r,a,o)}};export{Vr as AddressStatus,cs as AllbridgeCoreSdk,Zn as AmountFormat,Gt as AmountNotEnoughError,En as ArgumentInvalidDecimalsError,Ie as CCTPDoesNotSupportedError,$e as ChainSymbol,ie as ChainType,Bs as ErrorCode,Wn as ExtraGasMaxLimitExceededError,Ft as FeePaymentMethod,mt as InsufficientPoolLiquidityError,ut as InvalidAmountError,An as InvalidGasFeePaymentOptionError,Nn as InvalidMessengerOptionError,Vt as InvalidTxError,he as JupiterError,Je as Messenger,de as MethodNotSupportedError,Un as NodeRpcUrlNotInitializedError,Re as OFTDoesNotSupportedError,O as SdkError,ue as SdkRootError,Kr as SolanaAutoTxFee,mn as TimeoutError,Gn as TxTooLargeError,un as VerifyTxError,Dn as mainnet,Hc as nodeRpcUrlsDefault,Kc as nodeUrlsDefault};
|
|
1
|
+
var Bs=Object.create;var Ui=Object.defineProperty;var Is=Object.getOwnPropertyDescriptor;var Rs=Object.getOwnPropertyNames;var vs=Object.getPrototypeOf,ks=Object.prototype.hasOwnProperty;var Bt=(s,i)=>()=>(s&&(i=s(s=0)),i);var Jr=(s,i)=>()=>(i||s((i={exports:{}}).exports,i),i.exports);var xs=(s,i,r,a)=>{if(i&&typeof i=="object"||typeof i=="function")for(let o of Rs(i))!ks.call(s,o)&&o!==r&&Ui(s,o,{get:()=>i[o],enumerable:!(a=Is(i,o))||a.enumerable});return s};var He=(s,i,r)=>(r=s!=null?Bs(vs(s)):{},xs(i||!s||!s.__esModule?Ui(r,"default",{value:s,enumerable:!0}):r,s));var g=Bt(()=>{});function Fs(s,i){this.fun=s,this.array=i}function Gi(s){var i=Math.floor((Date.now()-It.now())*.001),r=It.now()*.001,a=Math.floor(r)+i,o=Math.floor(r%1*1e9);return s&&(a=a-s[0],o=o-s[1],o<0&&(a--,o+=Xr)),[a,o]}var Yc,It,Lr,Xr,Vi=Bt(()=>{g();y();f();Fs.prototype.run=function(){this.fun.apply(null,this.array)};Yc={PATH:"/usr/bin",LANG:typeof navigator<"u"?navigator.language+".UTF-8":void 0,PWD:"/",HOME:"/home",TMP:"/tmp"},It={now:typeof performance<"u"?performance.now.bind(performance):void 0,timing:typeof performance<"u"?performance.timing:void 0};It.now===void 0&&(Lr=Date.now(),It.timing&&It.timing.navigationStart&&(Lr=It.timing.navigationStart),It.now=()=>Date.now()-Lr);Xr=1e9;Gi.bigint=function(s){var i=Gi(s);return typeof BigInt>"u"?i[0]*Xr+i[1]:BigInt(i[0]*Xr)+BigInt(i[1])}});var f=Bt(()=>{Vi()});function Ms(){if(ji)return un;ji=!0,un.byteLength=p,un.toByteArray=T,un.fromByteArray=x;for(var s=[],i=[],r=typeof Uint8Array<"u"?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,u=a.length;o<u;++o)s[o]=a[o],i[a.charCodeAt(o)]=o;i[45]=62,i[95]=63;function m(v){var M=v.length;if(M%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var k=v.indexOf("=");k===-1&&(k=M);var D=k===M?0:4-k%4;return[k,D]}function p(v){var M=m(v),k=M[0],D=M[1];return(k+D)*3/4-D}function h(v,M,k){return(M+k)*3/4-k}function T(v){var M,k=m(v),D=k[0],N=k[1],F=new r(h(v,D,N)),W=0,U=N>0?D-4:D,_;for(_=0;_<U;_+=4)M=i[v.charCodeAt(_)]<<18|i[v.charCodeAt(_+1)]<<12|i[v.charCodeAt(_+2)]<<6|i[v.charCodeAt(_+3)],F[W++]=M>>16&255,F[W++]=M>>8&255,F[W++]=M&255;return N===2&&(M=i[v.charCodeAt(_)]<<2|i[v.charCodeAt(_+1)]>>4,F[W++]=M&255),N===1&&(M=i[v.charCodeAt(_)]<<10|i[v.charCodeAt(_+1)]<<4|i[v.charCodeAt(_+2)]>>2,F[W++]=M>>8&255,F[W++]=M&255),F}function S(v){return s[v>>18&63]+s[v>>12&63]+s[v>>6&63]+s[v&63]}function w(v,M,k){for(var D,N=[],F=M;F<k;F+=3)D=(v[F]<<16&16711680)+(v[F+1]<<8&65280)+(v[F+2]&255),N.push(S(D));return N.join("")}function x(v){for(var M,k=v.length,D=k%3,N=[],F=16383,W=0,U=k-D;W<U;W+=F)N.push(w(v,W,W+F>U?U:W+F));return D===1?(M=v[k-1],N.push(s[M>>2]+s[M<<4&63]+"==")):D===2&&(M=(v[k-2]<<8)+v[k-1],N.push(s[M>>10]+s[M>>4&63]+s[M<<2&63]+"=")),N.join("")}return un}function Os(){if(_i)return En;_i=!0;return En.read=function(s,i,r,a,o){var u,m,p=o*8-a-1,h=(1<<p)-1,T=h>>1,S=-7,w=r?o-1:0,x=r?-1:1,v=s[i+w];for(w+=x,u=v&(1<<-S)-1,v>>=-S,S+=p;S>0;u=u*256+s[i+w],w+=x,S-=8);for(m=u&(1<<-S)-1,u>>=-S,S+=a;S>0;m=m*256+s[i+w],w+=x,S-=8);if(u===0)u=1-T;else{if(u===h)return m?NaN:(v?-1:1)*(1/0);m=m+Math.pow(2,a),u=u-T}return(v?-1:1)*m*Math.pow(2,u-a)},En.write=function(s,i,r,a,o,u){var m,p,h,T=u*8-o-1,S=(1<<T)-1,w=S>>1,x=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,v=a?0:u-1,M=a?1:-1,k=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+=x/h:i+=x*Math.pow(2,1-w),i*h>=2&&(m++,h/=2),m+w>=S?(p=0,m=S):m+w>=1?(p=(i*h-1)*Math.pow(2,o),m=m+w):(p=i*Math.pow(2,w-1)*Math.pow(2,o),m=0));o>=8;s[r+v]=p&255,v+=M,p/=256,o-=8);for(m=m<<o|p,T+=o;T>0;s[r+v]=m&255,v+=M,m/=256,T-=8);s[r+v-M]|=k*128},En}function $i(){if(Zi)return Rt;Zi=!0;let s=Ms(),i=Os(),r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Rt.Buffer=m,Rt.SlowBuffer=N,Rt.INSPECT_MAX_BYTES=50;let a=2147483647;Rt.kMaxLength=a,m.TYPED_ARRAY_SUPPORT=o(),!m.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function o(){try{let l=new Uint8Array(1),c={foo:function(){return 42}};return Object.setPrototypeOf(c,Uint8Array.prototype),Object.setPrototypeOf(l,c),l.foo()===42}catch{return!1}}Object.defineProperty(m.prototype,"parent",{enumerable:!0,get:function(){if(m.isBuffer(this))return this.buffer}}),Object.defineProperty(m.prototype,"offset",{enumerable:!0,get:function(){if(m.isBuffer(this))return this.byteOffset}});function u(l){if(l>a)throw new RangeError('The value "'+l+'" is invalid for option "size"');let c=new Uint8Array(l);return Object.setPrototypeOf(c,m.prototype),c}function m(l,c,A){if(typeof l=="number"){if(typeof c=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return S(l)}return p(l,c,A)}m.poolSize=8192;function p(l,c,A){if(typeof l=="string")return w(l,c);if(ArrayBuffer.isView(l))return v(l);if(l==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof l);if(rt(l,ArrayBuffer)||l&&rt(l.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(rt(l,SharedArrayBuffer)||l&&rt(l.buffer,SharedArrayBuffer)))return M(l,c,A);if(typeof l=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let d=l.valueOf&&l.valueOf();if(d!=null&&d!==l)return m.from(d,c,A);let b=k(l);if(b)return b;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof l[Symbol.toPrimitive]=="function")return m.from(l[Symbol.toPrimitive]("string"),c,A);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof l)}m.from=function(l,c,A){return p(l,c,A)},Object.setPrototypeOf(m.prototype,Uint8Array.prototype),Object.setPrototypeOf(m,Uint8Array);function h(l){if(typeof l!="number")throw new TypeError('"size" argument must be of type number');if(l<0)throw new RangeError('The value "'+l+'" is invalid for option "size"')}function T(l,c,A){return h(l),l<=0?u(l):c!==void 0?typeof A=="string"?u(l).fill(c,A):u(l).fill(c):u(l)}m.alloc=function(l,c,A){return T(l,c,A)};function S(l){return h(l),u(l<0?0:D(l)|0)}m.allocUnsafe=function(l){return S(l)},m.allocUnsafeSlow=function(l){return S(l)};function w(l,c){if((typeof c!="string"||c==="")&&(c="utf8"),!m.isEncoding(c))throw new TypeError("Unknown encoding: "+c);let A=F(l,c)|0,d=u(A),b=d.write(l,c);return b!==A&&(d=d.slice(0,b)),d}function x(l){let c=l.length<0?0:D(l.length)|0,A=u(c);for(let d=0;d<c;d+=1)A[d]=l[d]&255;return A}function v(l){if(rt(l,Uint8Array)){let c=new Uint8Array(l);return M(c.buffer,c.byteOffset,c.byteLength)}return x(l)}function M(l,c,A){if(c<0||l.byteLength<c)throw new RangeError('"offset" is outside of buffer bounds');if(l.byteLength<c+(A||0))throw new RangeError('"length" is outside of buffer bounds');let d;return c===void 0&&A===void 0?d=new Uint8Array(l):A===void 0?d=new Uint8Array(l,c):d=new Uint8Array(l,c,A),Object.setPrototypeOf(d,m.prototype),d}function k(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"||Yr(l.length)?u(0):x(l);if(l.type==="Buffer"&&Array.isArray(l.data))return x(l.data)}function D(l){if(l>=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return l|0}function N(l){return+l!=l&&(l=0),m.alloc(+l)}m.isBuffer=function(c){return c!=null&&c._isBuffer===!0&&c!==m.prototype},m.compare=function(c,A){if(rt(c,Uint8Array)&&(c=m.from(c,c.offset,c.byteLength)),rt(A,Uint8Array)&&(A=m.from(A,A.offset,A.byteLength)),!m.isBuffer(c)||!m.isBuffer(A))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(c===A)return 0;let d=c.length,b=A.length;for(let C=0,R=Math.min(d,b);C<R;++C)if(c[C]!==A[C]){d=c[C],b=A[C];break}return d<b?-1:b<d?1:0},m.isEncoding=function(c){switch(String(c).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},m.concat=function(c,A){if(!Array.isArray(c))throw new TypeError('"list" argument must be an Array of Buffers');if(c.length===0)return m.alloc(0);let d;if(A===void 0)for(A=0,d=0;d<c.length;++d)A+=c[d].length;let b=m.allocUnsafe(A),C=0;for(d=0;d<c.length;++d){let R=c[d];if(rt(R,Uint8Array))C+R.length>b.length?(m.isBuffer(R)||(R=m.from(R)),R.copy(b,C)):Uint8Array.prototype.set.call(b,R,C);else if(m.isBuffer(R))R.copy(b,C);else throw new TypeError('"list" argument must be an Array of Buffers');C+=R.length}return b};function F(l,c){if(m.isBuffer(l))return l.length;if(ArrayBuffer.isView(l)||rt(l,ArrayBuffer))return l.byteLength;if(typeof l!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof l);let A=l.length,d=arguments.length>2&&arguments[2]===!0;if(!d&&A===0)return 0;let b=!1;for(;;)switch(c){case"ascii":case"latin1":case"binary":return A;case"utf8":case"utf-8":return $r(l).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A*2;case"hex":return A>>>1;case"base64":return Ei(l).length;default:if(b)return d?-1:$r(l).length;c=(""+c).toLowerCase(),b=!0}}m.byteLength=F;function W(l,c,A){let d=!1;if((c===void 0||c<0)&&(c=0),c>this.length||((A===void 0||A>this.length)&&(A=this.length),A<=0)||(A>>>=0,c>>>=0,A<=c))return"";for(l||(l="utf8");;)switch(l){case"hex":return Ze(this,c,A);case"utf8":case"utf-8":return ye(this,c,A);case"ascii":return Be(this,c,A);case"latin1":case"binary":return _e(this,c,A);case"base64":return Me(this,c,A);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return De(this,c,A);default:if(d)throw new TypeError("Unknown encoding: "+l);l=(l+"").toLowerCase(),d=!0}}m.prototype._isBuffer=!0;function U(l,c,A){let d=l[c];l[c]=l[A],l[A]=d}m.prototype.swap16=function(){let c=this.length;if(c%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let A=0;A<c;A+=2)U(this,A,A+1);return this},m.prototype.swap32=function(){let c=this.length;if(c%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let A=0;A<c;A+=4)U(this,A,A+3),U(this,A+1,A+2);return this},m.prototype.swap64=function(){let c=this.length;if(c%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let A=0;A<c;A+=8)U(this,A,A+7),U(this,A+1,A+6),U(this,A+2,A+5),U(this,A+3,A+4);return this},m.prototype.toString=function(){let c=this.length;return c===0?"":arguments.length===0?ye(this,0,c):W.apply(this,arguments)},m.prototype.toLocaleString=m.prototype.toString,m.prototype.equals=function(c){if(!m.isBuffer(c))throw new TypeError("Argument must be a Buffer");return this===c?!0:m.compare(this,c)===0},m.prototype.inspect=function(){let c="",A=Rt.INSPECT_MAX_BYTES;return c=this.toString("hex",0,A).replace(/(.{2})/g,"$1 ").trim(),this.length>A&&(c+=" ... "),"<Buffer "+c+">"},r&&(m.prototype[r]=m.prototype.inspect),m.prototype.compare=function(c,A,d,b,C){if(rt(c,Uint8Array)&&(c=m.from(c,c.offset,c.byteLength)),!m.isBuffer(c))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof c);if(A===void 0&&(A=0),d===void 0&&(d=c?c.length:0),b===void 0&&(b=0),C===void 0&&(C=this.length),A<0||d>c.length||b<0||C>this.length)throw new RangeError("out of range index");if(b>=C&&A>=d)return 0;if(b>=C)return-1;if(A>=d)return 1;if(A>>>=0,d>>>=0,b>>>=0,C>>>=0,this===c)return 0;let R=C-b,J=d-A,se=Math.min(R,J),ie=this.slice(b,C),oe=c.slice(A,d);for(let ne=0;ne<se;++ne)if(ie[ne]!==oe[ne]){R=ie[ne],J=oe[ne];break}return R<J?-1:J<R?1:0};function _(l,c,A,d,b){if(l.length===0)return-1;if(typeof A=="string"?(d=A,A=0):A>2147483647?A=2147483647:A<-2147483648&&(A=-2147483648),A=+A,Yr(A)&&(A=b?0:l.length-1),A<0&&(A=l.length+A),A>=l.length){if(b)return-1;A=l.length-1}else if(A<0)if(b)A=0;else return-1;if(typeof c=="string"&&(c=m.from(c,d)),m.isBuffer(c))return c.length===0?-1:L(l,c,A,d,b);if(typeof c=="number")return c=c&255,typeof Uint8Array.prototype.indexOf=="function"?b?Uint8Array.prototype.indexOf.call(l,c,A):Uint8Array.prototype.lastIndexOf.call(l,c,A):L(l,[c],A,d,b);throw new TypeError("val must be string, number or Buffer")}function L(l,c,A,d,b){let C=1,R=l.length,J=c.length;if(d!==void 0&&(d=String(d).toLowerCase(),d==="ucs2"||d==="ucs-2"||d==="utf16le"||d==="utf-16le")){if(l.length<2||c.length<2)return-1;C=2,R/=2,J/=2,A/=2}function se(oe,ne){return C===1?oe[ne]:oe.readUInt16BE(ne*C)}let ie;if(b){let oe=-1;for(ie=A;ie<R;ie++)if(se(l,ie)===se(c,oe===-1?0:ie-oe)){if(oe===-1&&(oe=ie),ie-oe+1===J)return oe*C}else oe!==-1&&(ie-=ie-oe),oe=-1}else for(A+J>R&&(A=R-J),ie=A;ie>=0;ie--){let oe=!0;for(let ne=0;ne<J;ne++)if(se(l,ie+ne)!==se(c,ne)){oe=!1;break}if(oe)return ie}return-1}m.prototype.includes=function(c,A,d){return this.indexOf(c,A,d)!==-1},m.prototype.indexOf=function(c,A,d){return _(this,c,A,d,!0)},m.prototype.lastIndexOf=function(c,A,d){return _(this,c,A,d,!1)};function we(l,c,A,d){A=Number(A)||0;let b=l.length-A;d?(d=Number(d),d>b&&(d=b)):d=b;let C=c.length;d>C/2&&(d=C/2);let R;for(R=0;R<d;++R){let J=parseInt(c.substr(R*2,2),16);if(Yr(J))return R;l[A+R]=J}return R}function le(l,c,A,d){return Nn($r(c,l.length-A),l,A,d)}function Ve(l,c,A,d){return Nn(Ss(c),l,A,d)}function je(l,c,A,d){return Nn(Ei(c),l,A,d)}function Ke(l,c,A,d){return Nn(Ps(c,l.length-A),l,A,d)}m.prototype.write=function(c,A,d,b){if(A===void 0)b="utf8",d=this.length,A=0;else if(d===void 0&&typeof A=="string")b=A,d=this.length,A=0;else if(isFinite(A))A=A>>>0,isFinite(d)?(d=d>>>0,b===void 0&&(b="utf8")):(b=d,d=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let C=this.length-A;if((d===void 0||d>C)&&(d=C),c.length>0&&(d<0||A<0)||A>this.length)throw new RangeError("Attempt to write outside buffer bounds");b||(b="utf8");let R=!1;for(;;)switch(b){case"hex":return we(this,c,A,d);case"utf8":case"utf-8":return le(this,c,A,d);case"ascii":case"latin1":case"binary":return Ve(this,c,A,d);case"base64":return je(this,c,A,d);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ke(this,c,A,d);default:if(R)throw new TypeError("Unknown encoding: "+b);b=(""+b).toLowerCase(),R=!0}},m.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Me(l,c,A){return c===0&&A===l.length?s.fromByteArray(l):s.fromByteArray(l.slice(c,A))}function ye(l,c,A){A=Math.min(l.length,A);let d=[],b=c;for(;b<A;){let C=l[b],R=null,J=C>239?4:C>223?3:C>191?2:1;if(b+J<=A){let se,ie,oe,ne;switch(J){case 1:C<128&&(R=C);break;case 2:se=l[b+1],(se&192)===128&&(ne=(C&31)<<6|se&63,ne>127&&(R=ne));break;case 3:se=l[b+1],ie=l[b+2],(se&192)===128&&(ie&192)===128&&(ne=(C&15)<<12|(se&63)<<6|ie&63,ne>2047&&(ne<55296||ne>57343)&&(R=ne));break;case 4:se=l[b+1],ie=l[b+2],oe=l[b+3],(se&192)===128&&(ie&192)===128&&(oe&192)===128&&(ne=(C&15)<<18|(se&63)<<12|(ie&63)<<6|oe&63,ne>65535&&ne<1114112&&(R=ne))}}R===null?(R=65533,J=1):R>65535&&(R-=65536,d.push(R>>>10&1023|55296),R=56320|R&1023),d.push(R),b+=J}return Oe(d)}let Ce=4096;function Oe(l){let c=l.length;if(c<=Ce)return String.fromCharCode.apply(String,l);let A="",d=0;for(;d<c;)A+=String.fromCharCode.apply(String,l.slice(d,d+=Ce));return A}function Be(l,c,A){let d="";A=Math.min(l.length,A);for(let b=c;b<A;++b)d+=String.fromCharCode(l[b]&127);return d}function _e(l,c,A){let d="";A=Math.min(l.length,A);for(let b=c;b<A;++b)d+=String.fromCharCode(l[b]);return d}function Ze(l,c,A){let d=l.length;(!c||c<0)&&(c=0),(!A||A<0||A>d)&&(A=d);let b="";for(let C=c;C<A;++C)b+=ws[l[C]];return b}function De(l,c,A){let d=l.slice(c,A),b="";for(let C=0;C<d.length-1;C+=2)b+=String.fromCharCode(d[C]+d[C+1]*256);return b}m.prototype.slice=function(c,A){let d=this.length;c=~~c,A=A===void 0?d:~~A,c<0?(c+=d,c<0&&(c=0)):c>d&&(c=d),A<0?(A+=d,A<0&&(A=0)):A>d&&(A=d),A<c&&(A=c);let b=this.subarray(c,A);return Object.setPrototypeOf(b,m.prototype),b};function G(l,c,A){if(l%1!==0||l<0)throw new RangeError("offset is not uint");if(l+c>A)throw new RangeError("Trying to access beyond buffer length")}m.prototype.readUintLE=m.prototype.readUIntLE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let b=this[c],C=1,R=0;for(;++R<A&&(C*=256);)b+=this[c+R]*C;return b},m.prototype.readUintBE=m.prototype.readUIntBE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let b=this[c+--A],C=1;for(;A>0&&(C*=256);)b+=this[c+--A]*C;return b},m.prototype.readUint8=m.prototype.readUInt8=function(c,A){return c=c>>>0,A||G(c,1,this.length),this[c]},m.prototype.readUint16LE=m.prototype.readUInt16LE=function(c,A){return c=c>>>0,A||G(c,2,this.length),this[c]|this[c+1]<<8},m.prototype.readUint16BE=m.prototype.readUInt16BE=function(c,A){return c=c>>>0,A||G(c,2,this.length),this[c]<<8|this[c+1]},m.prototype.readUint32LE=m.prototype.readUInt32LE=function(c,A){return c=c>>>0,A||G(c,4,this.length),(this[c]|this[c+1]<<8|this[c+2]<<16)+this[c+3]*16777216},m.prototype.readUint32BE=m.prototype.readUInt32BE=function(c,A){return c=c>>>0,A||G(c,4,this.length),this[c]*16777216+(this[c+1]<<16|this[c+2]<<8|this[c+3])},m.prototype.readBigUInt64LE=gt(function(c){c=c>>>0,Gt(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&An(c,this.length-8);let b=A+this[++c]*2**8+this[++c]*2**16+this[++c]*2**24,C=this[++c]+this[++c]*2**8+this[++c]*2**16+d*2**24;return BigInt(b)+(BigInt(C)<<BigInt(32))}),m.prototype.readBigUInt64BE=gt(function(c){c=c>>>0,Gt(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&An(c,this.length-8);let b=A*2**24+this[++c]*2**16+this[++c]*2**8+this[++c],C=this[++c]*2**24+this[++c]*2**16+this[++c]*2**8+d;return(BigInt(b)<<BigInt(32))+BigInt(C)}),m.prototype.readIntLE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let b=this[c],C=1,R=0;for(;++R<A&&(C*=256);)b+=this[c+R]*C;return C*=128,b>=C&&(b-=Math.pow(2,8*A)),b},m.prototype.readIntBE=function(c,A,d){c=c>>>0,A=A>>>0,d||G(c,A,this.length);let b=A,C=1,R=this[c+--b];for(;b>0&&(C*=256);)R+=this[c+--b]*C;return C*=128,R>=C&&(R-=Math.pow(2,8*A)),R},m.prototype.readInt8=function(c,A){return c=c>>>0,A||G(c,1,this.length),this[c]&128?(255-this[c]+1)*-1:this[c]},m.prototype.readInt16LE=function(c,A){c=c>>>0,A||G(c,2,this.length);let d=this[c]|this[c+1]<<8;return d&32768?d|4294901760:d},m.prototype.readInt16BE=function(c,A){c=c>>>0,A||G(c,2,this.length);let d=this[c+1]|this[c]<<8;return d&32768?d|4294901760:d},m.prototype.readInt32LE=function(c,A){return c=c>>>0,A||G(c,4,this.length),this[c]|this[c+1]<<8|this[c+2]<<16|this[c+3]<<24},m.prototype.readInt32BE=function(c,A){return c=c>>>0,A||G(c,4,this.length),this[c]<<24|this[c+1]<<16|this[c+2]<<8|this[c+3]},m.prototype.readBigInt64LE=gt(function(c){c=c>>>0,Gt(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&An(c,this.length-8);let b=this[c+4]+this[c+5]*2**8+this[c+6]*2**16+(d<<24);return(BigInt(b)<<BigInt(32))+BigInt(A+this[++c]*2**8+this[++c]*2**16+this[++c]*2**24)}),m.prototype.readBigInt64BE=gt(function(c){c=c>>>0,Gt(c,"offset");let A=this[c],d=this[c+7];(A===void 0||d===void 0)&&An(c,this.length-8);let b=(A<<24)+this[++c]*2**16+this[++c]*2**8+this[++c];return(BigInt(b)<<BigInt(32))+BigInt(this[++c]*2**24+this[++c]*2**16+this[++c]*2**8+d)}),m.prototype.readFloatLE=function(c,A){return c=c>>>0,A||G(c,4,this.length),i.read(this,c,!0,23,4)},m.prototype.readFloatBE=function(c,A){return c=c>>>0,A||G(c,4,this.length),i.read(this,c,!1,23,4)},m.prototype.readDoubleLE=function(c,A){return c=c>>>0,A||G(c,8,this.length),i.read(this,c,!0,52,8)},m.prototype.readDoubleBE=function(c,A){return c=c>>>0,A||G(c,8,this.length),i.read(this,c,!1,52,8)};function pe(l,c,A,d,b,C){if(!m.isBuffer(l))throw new TypeError('"buffer" argument must be a Buffer instance');if(c>b||c<C)throw new RangeError('"value" argument is out of bounds');if(A+d>l.length)throw new RangeError("Index out of range")}m.prototype.writeUintLE=m.prototype.writeUIntLE=function(c,A,d,b){if(c=+c,A=A>>>0,d=d>>>0,!b){let J=Math.pow(2,8*d)-1;pe(this,c,A,d,J,0)}let C=1,R=0;for(this[A]=c&255;++R<d&&(C*=256);)this[A+R]=c/C&255;return A+d},m.prototype.writeUintBE=m.prototype.writeUIntBE=function(c,A,d,b){if(c=+c,A=A>>>0,d=d>>>0,!b){let J=Math.pow(2,8*d)-1;pe(this,c,A,d,J,0)}let C=d-1,R=1;for(this[A+C]=c&255;--C>=0&&(R*=256);)this[A+C]=c/R&255;return A+d},m.prototype.writeUint8=m.prototype.writeUInt8=function(c,A,d){return c=+c,A=A>>>0,d||pe(this,c,A,1,255,0),this[A]=c&255,A+1},m.prototype.writeUint16LE=m.prototype.writeUInt16LE=function(c,A,d){return c=+c,A=A>>>0,d||pe(this,c,A,2,65535,0),this[A]=c&255,this[A+1]=c>>>8,A+2},m.prototype.writeUint16BE=m.prototype.writeUInt16BE=function(c,A,d){return c=+c,A=A>>>0,d||pe(this,c,A,2,65535,0),this[A]=c>>>8,this[A+1]=c&255,A+2},m.prototype.writeUint32LE=m.prototype.writeUInt32LE=function(c,A,d){return c=+c,A=A>>>0,d||pe(this,c,A,4,4294967295,0),this[A+3]=c>>>24,this[A+2]=c>>>16,this[A+1]=c>>>8,this[A]=c&255,A+4},m.prototype.writeUint32BE=m.prototype.writeUInt32BE=function(c,A,d){return c=+c,A=A>>>0,d||pe(this,c,A,4,4294967295,0),this[A]=c>>>24,this[A+1]=c>>>16,this[A+2]=c>>>8,this[A+3]=c&255,A+4};function Wn(l,c,A,d,b){Ni(c,d,b,l,A,7);let C=Number(c&BigInt(4294967295));l[A++]=C,C=C>>8,l[A++]=C,C=C>>8,l[A++]=C,C=C>>8,l[A++]=C;let R=Number(c>>BigInt(32)&BigInt(4294967295));return l[A++]=R,R=R>>8,l[A++]=R,R=R>>8,l[A++]=R,R=R>>8,l[A++]=R,A}function Fi(l,c,A,d,b){Ni(c,d,b,l,A,7);let C=Number(c&BigInt(4294967295));l[A+7]=C,C=C>>8,l[A+6]=C,C=C>>8,l[A+5]=C,C=C>>8,l[A+4]=C;let R=Number(c>>BigInt(32)&BigInt(4294967295));return l[A+3]=R,R=R>>8,l[A+2]=R,R=R>>8,l[A+1]=R,R=R>>8,l[A]=R,A+8}m.prototype.writeBigUInt64LE=gt(function(c,A=0){return Wn(this,c,A,BigInt(0),BigInt("0xffffffffffffffff"))}),m.prototype.writeBigUInt64BE=gt(function(c,A=0){return Fi(this,c,A,BigInt(0),BigInt("0xffffffffffffffff"))}),m.prototype.writeIntLE=function(c,A,d,b){if(c=+c,A=A>>>0,!b){let se=Math.pow(2,8*d-1);pe(this,c,A,d,se-1,-se)}let C=0,R=1,J=0;for(this[A]=c&255;++C<d&&(R*=256);)c<0&&J===0&&this[A+C-1]!==0&&(J=1),this[A+C]=(c/R>>0)-J&255;return A+d},m.prototype.writeIntBE=function(c,A,d,b){if(c=+c,A=A>>>0,!b){let se=Math.pow(2,8*d-1);pe(this,c,A,d,se-1,-se)}let C=d-1,R=1,J=0;for(this[A+C]=c&255;--C>=0&&(R*=256);)c<0&&J===0&&this[A+C+1]!==0&&(J=1),this[A+C]=(c/R>>0)-J&255;return A+d},m.prototype.writeInt8=function(c,A,d){return c=+c,A=A>>>0,d||pe(this,c,A,1,127,-128),c<0&&(c=255+c+1),this[A]=c&255,A+1},m.prototype.writeInt16LE=function(c,A,d){return c=+c,A=A>>>0,d||pe(this,c,A,2,32767,-32768),this[A]=c&255,this[A+1]=c>>>8,A+2},m.prototype.writeInt16BE=function(c,A,d){return c=+c,A=A>>>0,d||pe(this,c,A,2,32767,-32768),this[A]=c>>>8,this[A+1]=c&255,A+2},m.prototype.writeInt32LE=function(c,A,d){return c=+c,A=A>>>0,d||pe(this,c,A,4,2147483647,-2147483648),this[A]=c&255,this[A+1]=c>>>8,this[A+2]=c>>>16,this[A+3]=c>>>24,A+4},m.prototype.writeInt32BE=function(c,A,d){return c=+c,A=A>>>0,d||pe(this,c,A,4,2147483647,-2147483648),c<0&&(c=4294967295+c+1),this[A]=c>>>24,this[A+1]=c>>>16,this[A+2]=c>>>8,this[A+3]=c&255,A+4},m.prototype.writeBigInt64LE=gt(function(c,A=0){return Wn(this,c,A,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),m.prototype.writeBigInt64BE=gt(function(c,A=0){return Fi(this,c,A,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function Mi(l,c,A,d,b,C){if(A+d>l.length)throw new RangeError("Index out of range");if(A<0)throw new RangeError("Index out of range")}function Oi(l,c,A,d,b){return c=+c,A=A>>>0,b||Mi(l,c,A,4),i.write(l,c,A,d,23,4),A+4}m.prototype.writeFloatLE=function(c,A,d){return Oi(this,c,A,!0,d)},m.prototype.writeFloatBE=function(c,A,d){return Oi(this,c,A,!1,d)};function Di(l,c,A,d,b){return c=+c,A=A>>>0,b||Mi(l,c,A,8),i.write(l,c,A,d,52,8),A+8}m.prototype.writeDoubleLE=function(c,A,d){return Di(this,c,A,!0,d)},m.prototype.writeDoubleBE=function(c,A,d){return Di(this,c,A,!1,d)},m.prototype.copy=function(c,A,d,b){if(!m.isBuffer(c))throw new TypeError("argument should be a Buffer");if(d||(d=0),!b&&b!==0&&(b=this.length),A>=c.length&&(A=c.length),A||(A=0),b>0&&b<d&&(b=d),b===d||c.length===0||this.length===0)return 0;if(A<0)throw new RangeError("targetStart out of bounds");if(d<0||d>=this.length)throw new RangeError("Index out of range");if(b<0)throw new RangeError("sourceEnd out of bounds");b>this.length&&(b=this.length),c.length-A<b-d&&(b=c.length-A+d);let C=b-d;return this===c&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(A,d,b):Uint8Array.prototype.set.call(c,this.subarray(d,b),A),C},m.prototype.fill=function(c,A,d,b){if(typeof c=="string"){if(typeof A=="string"?(b=A,A=0,d=this.length):typeof d=="string"&&(b=d,d=this.length),b!==void 0&&typeof b!="string")throw new TypeError("encoding must be a string");if(typeof b=="string"&&!m.isEncoding(b))throw new TypeError("Unknown encoding: "+b);if(c.length===1){let R=c.charCodeAt(0);(b==="utf8"&&R<128||b==="latin1")&&(c=R)}}else typeof c=="number"?c=c&255:typeof c=="boolean"&&(c=Number(c));if(A<0||this.length<A||this.length<d)throw new RangeError("Out of range index");if(d<=A)return this;A=A>>>0,d=d===void 0?this.length:d>>>0,c||(c=0);let C;if(typeof c=="number")for(C=A;C<d;++C)this[C]=c;else{let R=m.isBuffer(c)?c:m.from(c,b),J=R.length;if(J===0)throw new TypeError('The value "'+c+'" is invalid for argument "value"');for(C=0;C<d-A;++C)this[C+A]=R[C%J]}return this};let Ut={};function Zr(l,c,A){Ut[l]=class extends A{constructor(){super(),Object.defineProperty(this,"message",{value:c.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${l}]`,this.stack,delete this.name}get code(){return l}set code(b){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:b,writable:!0})}toString(){return`${this.name} [${l}]: ${this.message}`}}}Zr("ERR_BUFFER_OUT_OF_BOUNDS",function(l){return l?`${l} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),Zr("ERR_INVALID_ARG_TYPE",function(l,c){return`The "${l}" argument must be of type number. Received type ${typeof c}`},TypeError),Zr("ERR_OUT_OF_RANGE",function(l,c,A){let d=`The value of "${l}" is out of range.`,b=A;return Number.isInteger(A)&&Math.abs(A)>2**32?b=Wi(String(A)):typeof A=="bigint"&&(b=String(A),(A>BigInt(2)**BigInt(32)||A<-(BigInt(2)**BigInt(32)))&&(b=Wi(b)),b+="n"),d+=` It must be ${c}. Received ${b}`,d},RangeError);function Wi(l){let c="",A=l.length,d=l[0]==="-"?1:0;for(;A>=d+4;A-=3)c=`_${l.slice(A-3,A)}${c}`;return`${l.slice(0,A)}${c}`}function hs(l,c,A){Gt(c,"offset"),(l[c]===void 0||l[c+A]===void 0)&&An(c,l.length-(A+1))}function Ni(l,c,A,d,b,C){if(l>A||l<c){let R=typeof c=="bigint"?"n":"",J;throw c===0||c===BigInt(0)?J=`>= 0${R} and < 2${R} ** ${(C+1)*8}${R}`:J=`>= -(2${R} ** ${(C+1)*8-1}${R}) and < 2 ** ${(C+1)*8-1}${R}`,new Ut.ERR_OUT_OF_RANGE("value",J,l)}hs(d,b,C)}function Gt(l,c){if(typeof l!="number")throw new Ut.ERR_INVALID_ARG_TYPE(c,"number",l)}function An(l,c,A){throw Math.floor(l)!==l?(Gt(l,A),new Ut.ERR_OUT_OF_RANGE("offset","an integer",l)):c<0?new Ut.ERR_BUFFER_OUT_OF_BOUNDS:new Ut.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${c}`,l)}let Ts=/[^+/0-9A-Za-z-_]/g;function bs(l){if(l=l.split("=")[0],l=l.trim().replace(Ts,""),l.length<2)return"";for(;l.length%4!==0;)l=l+"=";return l}function $r(l,c){c=c||1/0;let A,d=l.length,b=null,C=[];for(let R=0;R<d;++R){if(A=l.charCodeAt(R),A>55295&&A<57344){if(!b){if(A>56319){(c-=3)>-1&&C.push(239,191,189);continue}else if(R+1===d){(c-=3)>-1&&C.push(239,191,189);continue}b=A;continue}if(A<56320){(c-=3)>-1&&C.push(239,191,189),b=A;continue}A=(b-55296<<10|A-56320)+65536}else b&&(c-=3)>-1&&C.push(239,191,189);if(b=null,A<128){if((c-=1)<0)break;C.push(A)}else if(A<2048){if((c-=2)<0)break;C.push(A>>6|192,A&63|128)}else if(A<65536){if((c-=3)<0)break;C.push(A>>12|224,A>>6&63|128,A&63|128)}else if(A<1114112){if((c-=4)<0)break;C.push(A>>18|240,A>>12&63|128,A>>6&63|128,A&63|128)}else throw new Error("Invalid code point")}return C}function Ss(l){let c=[];for(let A=0;A<l.length;++A)c.push(l.charCodeAt(A)&255);return c}function Ps(l,c){let A,d,b,C=[];for(let R=0;R<l.length&&!((c-=2)<0);++R)A=l.charCodeAt(R),d=A>>8,b=A%256,C.push(b),C.push(d);return C}function Ei(l){return s.toByteArray(bs(l))}function Nn(l,c,A,d){let b;for(b=0;b<d&&!(b+A>=c.length||b>=l.length);++b)c[b+A]=l[b];return b}function rt(l,c){return l instanceof c||l!=null&&l.constructor!=null&&l.constructor.name!=null&&l.constructor.name===c.name}function Yr(l){return l!==l}let ws=function(){let l="0123456789abcdef",c=new Array(256);for(let A=0;A<16;++A){let d=A*16;for(let b=0;b<16;++b)c[d+b]=l[A]+l[b]}return c}();function gt(l){return typeof BigInt>"u"?Cs:l}function Cs(){throw new Error("BigInt not supported")}return Rt}var un,ji,En,_i,Rt,Zi,Yi=Bt(()=>{g();y();f();un={},ji=!1;En={},_i=!1;Rt={},Zi=!1});var vt,P,nA,rA,Ji=Bt(()=>{g();y();f();Yi();vt=$i();vt.Buffer;vt.SlowBuffer;vt.INSPECT_MAX_BYTES;vt.kMaxLength;P=vt.Buffer,nA=vt.INSPECT_MAX_BYTES,rA=vt.kMaxLength});var y=Bt(()=>{Ji()});import{bcs as Fe}from"@mysten/sui/bcs";function uo(s,i=["<",">"]){let[r,a]=i,o=[],u="",m=0;for(let p=0;p<s.length;p++){let h=s[p];if(h===r&&m++,h===a&&m--,m===0&&h===","){o.push(u.trim()),u="";continue}u+=h}return o.push(u.trim()),o}function Se(s){if(typeof s!="string")throw new Error(`Illegal type passed as a name of the type: ${s}`);let[i,r]=["<",">"],a=s.indexOf(i),o=Array.from(s).reverse().indexOf(r);if(a===-1&&o===-1)return{typeName:s,typeArgs:[]};if(a===-1||o===-1)throw new Error(`Unclosed generic in name '${s}'`);let u=s.slice(0,a),m=uo(s.slice(a+1,s.length-o-1),[i,r]);return{typeName:u,typeArgs:m}}function Fa(s){return!s||typeof s!="object"||Array.isArray(s)?!1:"GasCoin"in s||"Input"in s||"Result"in s||"NestedResult"in s}function $(s,i){return Fa(i)?i:s.object(i)}function Le(s,i,r){if(Fa(i))return $(s,i);function a(T){let{typeName:S,typeArgs:w}=Se(T);switch(S){case"bool":return Fe.Bool;case"u8":return Fe.U8;case"u16":return Fe.U16;case"u32":return Fe.U32;case"u64":return Fe.U64;case"u128":return Fe.U128;case"u256":return Fe.U256;case"address":return Fe.Address;case"0x1::string::String":case"0x1::ascii::String":return Fe.String;case"0x2::object::ID":return Fe.Address;case"0x1::option::Option":return Fe.option(a(w[0]));case"vector":return Fe.vector(a(w[0]));default:throw new Error(`invalid primitive type ${T}`)}}function o(T){for(let S of T){if(typeof S>"u"||S===null)return!0;if(Array.isArray(S))return o(S)}return!1}function u(T){for(let S of T){if(!Array.isArray(S)){if(S===null)continue;switch(typeof S){case"string":case"number":case"bigint":case"boolean":continue;default:return!1}}return u(S)}return!0}function m(T){for(let S of T){if(!Array.isArray(S))switch(typeof S){case"string":case"number":case"bigint":case"boolean":return!0;default:continue}return m(S)}return!1}let{typeName:p,typeArgs:h}=Se(r);switch(p){case"0x1::option::Option":if(i===null)return s.pure.option("bool",null);if(u([i]))return s.pure(a(r).serialize(i));if(m([i]))throw new Error("mixing primitive and TransactionArgument values is not supported");return s.moveCall({target:"0x1::option::some",typeArguments:[h[0]],arguments:[Le(s,i,h[0])]});case"vector":if(!Array.isArray(i))throw new Error("expected an array for vector type");if(i.length===0)return s.pure(Fe.vector(Fe.Bool).serialize([]));if(o(i))throw new Error("the provided array contains undefined or null values");if(u(i))return s.pure(a(r).serialize(i));if(m(i))throw new Error("mixing primitive and TransactionArgument values is not supported");return s.makeMoveVec({type:h[0],elements:i});default:return s.pure(a(r).serialize(i))}}function mo(s){let i=s.split("0x").join("");for(let r=0;r<i.length;r++)if(i[r]!=="0")return`0x${i.substring(r)}`;return"0x0"}function V(s){let{typeName:i,typeArgs:r}=Se(s);switch(i){case"bool":case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"address":case"signer":return i;case"vector":return`vector<${V(r[0])}>`;default:{let a=i.split("::");a[0]=mo(a[0]);let o=a.join("::");return r.length>0?`${o}<${r.map(u=>V(u)).join(",")}>`:o}}}function ee(s,...i){return i.length>0?`${s}<${i.join(", ")}>`:s}var he=Bt(()=>{"use strict";g();y();f()});var Tt=Jr((cp,Ma)=>{"use strict";g();y();f();he();var Ai=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return V(s.$PACKAGE_ID)}get PUBLISHED_AT(){return V(s.$PUBLISHED_AT)}get PKG_V1(){return V(s.$PKG_V[1])}setPackageId(i){s.$PACKAGE_ID=i}setPublishedAt(i){s.$PUBLISHED_AT=i}setPkgV(i,r){s.$PKG_V[i]=r}setAddress(i,r){s.$PACKAGE_ID=i,s.$PUBLISHED_AT=i,s.$PKG_V[1]=r||i}},lo=new Ai;Ma.exports=lo});var di=Jr((hp,Ga)=>{"use strict";g();y();f();he();var li=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return V(s.$PACKAGE_ID)}get PUBLISHED_AT(){return V(s.$PUBLISHED_AT)}get PKG_V1(){return V(s.$PKG_V[1])}setPackageId(i){s.$PACKAGE_ID=i}setPublishedAt(i){s.$PUBLISHED_AT=i}setPkgV(i,r){s.$PKG_V[i]=r}setAddress(i,r){s.$PACKAGE_ID=i,s.$PUBLISHED_AT=i,s.$PKG_V[1]=r||i}},po=new li;Ga.exports=po});var fi=Jr((vp,ja)=>{"use strict";g();y();f();he();var gi=class s{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return V(s.$PACKAGE_ID)}get PUBLISHED_AT(){return V(s.$PUBLISHED_AT)}get PKG_V1(){return V(s.$PKG_V[1])}setPackageId(i){s.$PACKAGE_ID=i}setPublishedAt(i){s.$PUBLISHED_AT=i}setPkgV(i,r){s.$PKG_V[i]=r}setAddress(i,r){s.$PACKAGE_ID=i,s.$PUBLISHED_AT=i,s.$PKG_V[1]=r||i}},go=new gi;ja.exports=go});g();y();f();g();y();f();g();y();f();var Un={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"https://lite-api.jup.ag/swap/v1",wormholeMessengerProgramId:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",solanaLookUpTable:"2JcBAEVnAwVo4u8d61iqgHPrzZuugur7cVTjWubsVLHj",sorobanNetworkPassphrase:"Public Global Stellar Network ; September 2015",tronJsonRpc:"https://api.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{ETH:0,AVA:1,OPT:2,ARB:3,SOL:5,BAS:6,POL:7,SUI:8}},cachePoolInfoChainSec:20},uA={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},mA={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org",SUI:"https://fullnode.mainnet.sui.io"};g();y();f();g();y();f();g();y();f();import{TronWeb as Ro}from"tronweb";import{Web3 as vo}from"web3";g();y();f();g();y();f();g();y();f();var ce=class extends Error{errorCode;constructor(i,r){super(r),this.errorCode=i}},O=class extends ce{constructor(i){super("SdkError",i)}},ut=class extends ce{constructor(i){super("InvalidAmountError",i)}},Vt=class extends ce{constructor(i){super("AmountNotEnoughError",i)}},mt=class extends ce{constructor(i){super("InsufficientPoolLiquidityError",i)}},Te=class extends ce{constructor(i){super("JupiterError",i)}},mn=class extends ce{constructor(i){super("InvalidGasFeePaymentOptionError",i)}},Gn=class extends ce{constructor(i){super("InvalidMessengerOptionError",i)}},Ae=class extends ce{constructor(i){super("MethodNotSupportedError",i)}},ln=class extends ce{constructor(i){super("VerifyTxError",i)}},jt=class extends ce{constructor(i){super("InvalidTxError",i)}},Vn=class extends ce{constructor(i){super("ExtraGasMaxLimitExceededError",i)}},jn=class extends ce{constructor(i,r,a){super("ArgumentInvalidDecimalsError",`Argument '${i}' decimals '${r}' cannot be greater than '${a}'`)}},dn=class extends ce{constructor(i){super("TimeoutError",i)}},_n=class extends ce{constructor(i){super("NodeRpcUrlNotInitializedError",`For chain '${i}' Node RPC URL not initialized`)}},Ie=class extends ce{constructor(i){super("CCTPDoesNotSupportedError",i)}},Re=class extends ce{constructor(i){super("OFTDoesNotSupportedError",i)}},Zn=class extends ce{constructor(i){super("YieldDoesNotSupportedError",i)}},$n=class extends ce{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},Ds=(F=>(F.SDK_ERROR="SdkError",F.INVALID_AMOUNT_ERROR="InvalidAmountError",F.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",F.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",F.JUPITER_ERROR="JupiterError",F.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",F.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",F.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",F.VERIFY_TX_ERROR="VerifyTxError",F.INVALID_TX_ERROR="InvalidTxError",F.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",F.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",F.TIMEOUT_ERROR="TimeoutError",F.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",F.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",F.OFT_DOES_NOT_SUPPORTED_ERROR="OFTDoesNotSupportedError",F.YIELD_DOES_NOT_SUPPORTED_ERROR="YieldDoesNotSupportedError",F.TX_TOO_LARGE="TxTooLargeError",F))(Ds||{});g();y();f();var $e=(k=>(k.BSC="BSC",k.ETH="ETH",k.BAS="BAS",k.SOL="SOL",k.TRX="TRX",k.POL="POL",k.ARB="ARB",k.CEL="CEL",k.AVA="AVA",k.SRB="SRB",k.STLR="STLR",k.OPT="OPT",k.SUI="SUI",k.SNC="SNC",k.UNI="UNI",k))($e||{}),re=(u=>(u.EVM="EVM",u.SOLANA="SOLANA",u.TRX="TRX",u.SRB="SRB",u.SUI="SUI",u))(re||{});var Ws={EVM:18,SOLANA:9,TRX:6,SRB:7,SUI:9},Ns={BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SNC:{chainSymbol:"SNC",chainId:"0x92",name:"Sonic",chainType:"EVM"},UNI:{chainSymbol:"UNI",chainId:"0x82",name:"Unichain",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"},SUI:{chainSymbol:"SUI",name:"Sui",chainType:"SUI"}},X=(()=>{let s={...Ns};return{addChainsProperties(i){s={...s,...i}},getChainProperty(i){let r=s[i];if(!r)throw new O(`Cannot find chain properties for ${i}`);return r},getChainsProperties(){return s},getChainDecimalsByType(i){return Ws[i]}}})();g();y();f();var Kr=(m=>(m.OK="OK",m.INVALID="INVALID",m.FORBIDDEN="FORBIDDEN",m.UNINITIALIZED="UNINITIALIZED",m.CONTRACT_ADDRESS="CONTRACT_ADDRESS",m.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",m))(Kr||{});var Ye=(u=>(u[u.ALLBRIDGE=1]="ALLBRIDGE",u[u.WORMHOLE=2]="WORMHOLE",u[u.CCTP=3]="CCTP",u[u.CCTP_V2=4]="CCTP_V2",u[u.OFT=5]="OFT",u))(Ye||{});g();y();f();import{Big as Li}from"big.js";async function ge(s,i){return await s.getPoolInfoByKey({chainSymbol:i.chainSymbol,poolAddress:i.poolAddress})}function K(s){if(Li(s).lte(0))throw new ut("Amount must be greater than zero")}function z(s,i,r){let a=Li(i).toFixed(),[o,u]=a.split(".");if(u&&u.length>r)throw new jn(s,u.length,r)}async function Yn(s,i,r){return await Promise.race([s,new Promise((a,o)=>{setTimeout(()=>o(new dn(i)),r)})])}async function Hr(s,i,r,a){if(r<1)throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${r} was received.`);let o=0;for(;;)try{return await Yn(s(),i,a)}catch{if(++o>=r)throw new dn(i)}}async function Xi(s,i,r,a=1.5,o=!1){let u=[],m=0,p=await s();if(u.push(p),!i(p))return u;let h=new Date(Date.now()+r*1e3).valueOf(),T=1e3,S=T;for(;Date.now()<h;){let w=u[u.length-1];if(w===void 0||!i(w))break;m++,o&&console.info(`Waiting ${T}ms before trying again (bringing the total wait time to ${S}ms so far, of total ${r*1e3}ms)`),await new Promise(v=>setTimeout(v,T)),T=T*a,new Date(Date.now()+T).valueOf()>h&&(T=h-Date.now(),o&&console.info(`was gonna wait too long; new waitTime: ${T}ms`)),S=T+S;let x=await s(w);u.push(x),o&&i(x)&&console.info(`${m}. Called ${s.name}; ${u.length} prev attempts. Most recent: ${JSON.stringify(u[u.length-1],null,2)}`)}return u}g();y();f();import{Big as Ks}from"big.js";g();y();f();var Es={abi:[{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"uint256",name:"_chainPrecision",type:"uint256"},{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"},{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"},{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"gas",type:"uint256"}],name:"BridgingFeeFromTokens",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"bridgeTransactionCost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"messageTransactionCost",type:"uint256"}],name:"ReceiveFee",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Received",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes32",name:"sendToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"sendAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receiveAmount",type:"uint256"}],name:"Swapped",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{indexed:!1,internalType:"bytes32",name:"message",type:"bytes32"}],name:"TokensReceived",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"addBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract Pool",name:"pool",type:"address"},{internalType:"bytes32",name:"token",type:"bytes32"}],name:"addPool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"canSwap",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"address",name:"tokenAddress",type:"address"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageGasUsage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"hasReceivedMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"}],name:"hasSentMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"hashMessage",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"otherBridgeTokens",outputs:[{internalType:"bool",name:"isSupported",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"otherBridges",outputs:[{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"tokenId",type:"bytes32"}],name:"pools",outputs:[{internalType:"contract Pool",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"processedMessages",outputs:[{internalType:"uint256",name:"isProcessed",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],name:"registerBridge",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"removeBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"sentMessages",outputs:[{internalType:"uint256",name:"isSent",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"}],name:"setAllbridgeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_rebalancer",type:"address"}],name:"setRebalancer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"}],name:"setWormholeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"feeTokenAmount",type:"uint256"}],name:"swapAndBridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"withdrawBridgingFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGasTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Ki=Es;g();y();f();var Us={abi:[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"address",name:"cctpMessenger_",type:"address"},{internalType:"address",name:"cctpTransmitter_",type:"address"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedExtraGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"RecipientReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"}],name:"TokensSentExtras",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridgeWithWalletAddress",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"changeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getDomainByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint64",name:"nonce",type:"uint64"}],name:"isMessageProcessed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bytes",name:"message",type:"bytes"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"domain",type:"uint32"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Hi=Us;g();y();f();var Gs={abi:[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[{internalType:"uint16",name:"optionType",type:"uint16"}],name:"InvalidOptionType",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"address",name:"tokenAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFeeWithExtraGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"extraGasDestinationToken",type:"uint256"}],name:"OftTokensSent",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{internalType:"address",name:"oft_",type:"address"}],name:"addToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress",type:"address"}],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"feeShare",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"},{internalType:"uint256",name:"extraGasInDestinationToken",type:"uint256"},{internalType:"uint256",name:"slippageBP",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress_",type:"address"},{internalType:"uint256",name:"destinationChainId_",type:"uint256"},{internalType:"uint128",name:"extraGasAmount_",type:"uint128"}],name:"extraGasPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getEidByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress",type:"address"}],name:"oftAddress",outputs:[{internalType:"address",name:"oftAddress",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"eid_",type:"uint32"},{internalType:"uint128",name:"lzGasLimit_",type:"uint128"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress_",type:"address"},{internalType:"uint256",name:"destinationChainId_",type:"uint256"}],name:"relayerFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"oft_",type:"address"}],name:"removeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress_",type:"address"},{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint128",name:"lzGasLimit_",type:"uint128"}],name:"setLzGasLimit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"maxExtraGas_",type:"uint256"}],name:"setMaxExtraGas",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token_",type:"address"}],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount_",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Qi=Gs;g();y();f();import*as Xn from"@project-serum/anchor";import{PublicKey as ya}from"@solana/web3.js";g();y();f();import*as be from"@project-serum/anchor";import{PublicKey as ve}from"@solana/web3.js";async function Qe(s,i){return be.utils.token.associatedAddress({mint:i,owner:s})}async function ft(s){let[i]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("config")],s);return i}async function zi(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("lock"),Uint8Array.from(s)],i);return r}async function pn(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([s])],i);return r}async function _t(s){let i=await ft(s),[r]=await ve.findProgramAddress([i.toBuffer()],s);return r}async function qi(s,i){let[r]=await ve.findProgramAddress([s.toBuffer()],i);return r}async function Zt(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("token"),s.toBytes()],i);return r}async function ea(s,i,r){let[a]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("other_bridge_token"),P.from([s]),i],r);return a}async function Qr(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([s])],i);return r}async function zr(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([s])],i);return r}async function ta(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("sent_message"),s],i);return r}async function qr(s,i,r){let[a]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("user_deposit"),i.toBytes(),s.toBytes()],r);return a}async function na(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("cctp_bridge"),s.toBytes()],i);return r}async function ra(s,i){let[r]=await ve.findProgramAddress([be.utils.bytes.utf8.encode("token"),s.toBytes()],i);return r}function ia(s,i){let[r]=ve.findProgramAddressSync([be.utils.bytes.utf8.encode("lock"),i.toBuffer()],s);return r}function aa(s,i,r,a){let o=kt("message_transmitter",r),u=kt("token_messenger",a),m=kt("__event_authority",a),p=kt("token_minter",a),h=kt("local_token",a,[i]),T=kt("remote_token_messenger",a,[s.toString()]),S=kt("sender_authority",a);return{messageTransmitterAccount:o,tokenMessenger:u,tokenMessengerEventAuthority:m,tokenMinter:p,localToken:h,remoteTokenMessengerKey:T,authorityPda:S}}function kt(s,i,r=[]){let a=[P.from(be.utils.bytes.utf8.encode(s))];for(let u of r)typeof u=="string"?a.push(P.from(be.utils.bytes.utf8.encode(u))):Array.isArray(u)?a.push(P.from(Uint8Array.from(u))):P.isBuffer(u)?a.push(P.from(Uint8Array.from(u))):a.push(P.from(Uint8Array.from(u.toBuffer())));return ve.findProgramAddressSync(a,i)[0]}g();y();f();import{AnchorProvider as Vs}from"@project-serum/anchor";import{Connection as js,PublicKey as _s}from"@solana/web3.js";function yt(s,i){let r=new js(s,"confirmed"),a=new _s(i);return new Vs(r,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}g();y();f();import{PublicKey as Zs}from"@solana/web3.js";import{Address as $s}from"@stellar/stellar-sdk";import{Big as Ne}from"big.js";import pa from"randombytes";import{utils as la}from"tronweb";g();y();f();import{Big as E}from"big.js";import ei from"bn.js";g();y();f();function ti(s,i){return E(100).minus(E(100).times(i).div(s)).toNumber()}function xt(s,i){return Je(s,i,3).round(0,E.roundDown)}function We(s,i){return Je(s,3,i)}function Je(s,i,r){let a=E(r).minus(i).toNumber();return E(s).times(gn(a))}function gn(s){return E(10).pow(s)}function Z(s,i){return E(s).times(gn(i))}function j(s,i){let r=E(s);return r.eq(0)?E(0):E(r).div(gn(i))}function ke(s){return j(E(s.tokenBalance).minus(s.vUsdBalance).toFixed(),3).div(2).toFixed()}function it(s,{feeShare:i,decimals:r},a){let o=E(s);if(o.lte(0))return"0";let u=o.times(i),m=o.minus(u),p=xt(m,r),h=E(a.tokenBalance).plus(p),T=at(h,a.aValue,a.dValue);return E(a.vUsdBalance).minus(T).round(0,E.roundDown).toFixed()}function fn(s,{feeShare:i,decimals:r},a){let o=E(s);if(o.lte(0))return E(0).toFixed();let u=o.plus(a.vUsdBalance),m=at(u,a.aValue,a.dValue),p=We(E(a.tokenBalance).minus(m),r),h=E(p).times(i);return E(p).minus(h).round(0,E.roundDown).toFixed()}function sa(s,i){let r=E(s);if(r.lte(0))return i;let a=r.plus(i.vUsdBalance),o=at(a,i.aValue,i.dValue);return{aValue:i.aValue,dValue:i.dValue,tokenBalance:o.toFixed(0),vUsdBalance:a.toFixed(0)}}function oa(s,{feeShare:i,decimals:r},a){if(E(s).lte(0))return E(0);let o=E(a.vUsdBalance).minus(s);if(o.lte(0))throw new mt;let u=at(o,a.aValue,a.dValue),m=E(u).minus(a.tokenBalance),p=We(m,r),h=E(i).div(E(1).minus(i)),T=E(p).times(h).round(0,E.roundUp);return E(p).plus(T).round(0,E.roundDown)}function ca(s,{feeShare:i,decimals:r},a){if(E(s).lte(0))return E(0);let o=E(i).div(E(1).minus(i)),u=E(s).times(o).round(0,E.roundUp),m=E(s).plus(u),p=xt(m,r),h=E(a.tokenBalance).minus(p);if(h.lte(0))throw new mt;let T=at(h,a.aValue,a.dValue);return E(T).minus(a.vUsdBalance).round(0,E.roundDown)}function at(s,i,r){let a=E(4).times(i).times(E(r).minus(s)).minus(r),o=E(r).pow(3),u=a.pow(2),m=E(s).times(E(s).times(u).plus(E(4).times(i).times(o))).sqrt().round(0,E.roundDown),p=E(8).times(i).times(s),h=a.times(s).plus(m).div(p).round(0,E.roundDown);return h.eq(0)?E(0):h.plus(1)}function Aa(s,i,r,a){let o=new ei(s),u=new ei(r),m=new ei(i);return o.mul(u).shrn(a).sub(m).toString()}function ua(s){return E(s).gt(0)?`${Number(E(s).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function ma(s,i,r){let a=E(i).times(r),o=E(i).plus(r),u=E(8).times(s).times(a).times(o),m=a.times(E(16).times(s).minus(4)).div(3),p=u.times(u),h=m.times(m).times(m),T=p.plus(h),S=E(T).sqrt(),w=E(Math.cbrt(+u.plus(S).toFixed())),x=E(Math.cbrt(+u.minus(S).toFixed()));return w.plus(x).toFixed()}function lt(s,i,r){let a;switch(i){case"EVM":{a=da(s);break}case"SOLANA":{a=new Zs(s).toBuffer();break}case"TRX":{a=Ys(s);break}case"SRB":{a=new $s(s).toBuffer();break}case"SUI":{a=da(s);break}}switch(r){case"EVM":return"0x"+a.toString("hex");case"SOLANA":return Array.from(a);case"TRX":return a;case"SRB":return a.toJSON().data;case"SUI":return"0x"+a.toString("hex")}}function ze(s){return s.replace(/^0x/i,"")}function ga(s){return P.from(s.replace(/^0x/i,""),"hex")}function da(s){let r=ga(s);return P.concat([P.alloc(32-r.length,0),r],32)}function Ys(s){let i=yn(s),r=ga(i);return Js(r,32)}function yn(s){let i=la.crypto.decodeBase58Address(s);return i?la.bytes.byteArray2hexStr(i).replace(/^41/,"0x"):""}function Js(s,i){if(s.length>=i)return s;let r=P.alloc(i,0);return s.copy(r,i-s.length),r}function Jn(){return pa(32)}function st(){let s=pa(32).readBigInt64BE();return s<0?s*-1n:s}function ot(s,i){let r={},a=i.sourceToken;if(r.amount=Z(i.amount,a.decimals).toFixed(),r.contractAddress=a.bridgeAddress,r.fromAccountAddress=i.fromAccountAddress,s==="SUI"){if(!a.originTokenAddress)throw new O("SUI sourceToken must contain 'originTokenAddress'");r.fromTokenAddress=a.originTokenAddress}else r.fromTokenAddress=lt(a.tokenAddress,s,s);if(r.toAccountAddress=i.toAccountAddress,s==="SUI"){if(!i.destinationToken.originTokenAddress)throw new O("SUI destinationToken must contain 'originTokenAddress'");r.toTokenAddress=i.destinationToken.originTokenAddress}else r.toTokenAddress=lt(i.destinationToken.tokenAddress,s,s);return r.minimumReceiveAmount=i.minimumReceiveAmount?Z(i.minimumReceiveAmount,i.destinationToken.decimals).toFixed():"0",r}async function qe(s,i,r){let a={};a.fromChainId=i.sourceToken.allbridgeChainId,a.fromChainSymbol=i.sourceToken.chainSymbol;let o=X.getChainProperty(i.destinationToken.chainSymbol).chainType;if(s==="SUI"){if(!i.sourceToken.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");a.fromTokenAddress=i.sourceToken.originTokenAddress}else a.fromTokenAddress=i.sourceToken.tokenAddress;a.toChainId=i.destinationToken.allbridgeChainId,a.toTokenAddress=i.destinationToken.tokenAddress,i.gasFeePaymentMethod==="stablecoin"?a.gasFeePaymentMethod="stablecoin":a.gasFeePaymentMethod="native";let u=i.sourceToken;switch(i.messenger){case 3:if(!u.cctpAddress||!i.destinationToken.cctpAddress)throw new Ie("Such route does not support CCTP protocol");a.contractAddress=u.cctpAddress;break;case 4:if(!u.cctpV2Address||!i.destinationToken.cctpV2Address)throw new Ie("Such route does not support CCTP V2 protocol");a.contractAddress=u.cctpV2Address;break;case 5:if(!u.oftBridgeAddress||!i.destinationToken.oftBridgeAddress||u.oftId!==i.destinationToken.oftId)throw new Re("Such route does not support OFT protocol");a.contractAddress=u.oftBridgeAddress;break;case 1:case 2:a.contractAddress=u.bridgeAddress;break}a.messenger=i.messenger,a.fromAccountAddress=i.fromAccountAddress,a.amount=Z(i.amount,u.decimals).toFixed();let{fee:m,feeFormat:p}=i;if(!m){let w=(await ni(i.sourceToken,a.toChainId,a.messenger,r))[a.gasFeePaymentMethod];if(!w)throw new mn;m=w.int,p="int"}if(p=="float")switch(a.gasFeePaymentMethod){case"native":a.fee=Z(m,X.getChainDecimalsByType(u.chainType)).toFixed(0);break;case"stablecoin":a.fee=Z(m,u.decimals).toFixed(0);break}else a.fee=m;let{extraGas:h,extraGasFormat:T}=i;if(h&&+h>0){let S=await ri(u,i.destinationToken,a.messenger,r),w,x;switch(a.gasFeePaymentMethod){case"native":w=X.getChainDecimalsByType(u.chainType),x=Ne(S.exchangeRate);break;case"stablecoin":w=u.decimals,x=Ne(S.exchangeRate).div(S.sourceNativeTokenPrice);break}switch(T??"int"){case"float":{a.extraGas=Z(h,w).toFixed(0);let v=x.mul(h);a.extraGasDest=Z(v,X.getChainDecimalsByType(i.destinationToken.chainType)).toFixed(0,Ne.roundDown);break}case"int":{a.extraGas=h;let v=j(a.extraGas,X.getChainDecimalsByType(u.chainType)),M=x.mul(v);a.extraGasDest=Z(M,X.getChainDecimalsByType(i.destinationToken.chainType)).toFixed(0,Ne.roundDown);break}}Xs(a.extraGas,a.gasFeePaymentMethod,S)}return s!=="SUI"&&(a.fromTokenAddress=lt(a.fromTokenAddress,s,s)),a.toAccountAddress=lt(i.toAccountAddress,o,s),a.toTokenAddress=lt(a.toTokenAddress,o,s),a.gasFeePaymentMethod=="stablecoin"&&Ls(a.amount,u.decimals,a.fee,a.extraGas),a}function Ls(s,i,r,a){let o=Ne(s).minus(r).minus(a??0);if(o.lte(0))throw new Vt(`Amount not enough to pay fee, ${j(Ne(o).minus(1).neg(),i).toFixed()} stables is missing`)}async function ni(s,i,r,a){let o=await a.getReceiveTransactionCost({sourceChainId:s.allbridgeChainId,destinationChainId:i,messenger:r,sourceToken:s.tokenAddress}),u={native:{int:o.fee,float:j(o.fee,X.getChainDecimalsByType(s.chainType)).toFixed()},adminFeeShareWithExtras:o.adminFeeShareWithExtras};if(o.sourceNativeTokenPrice){let m=Je(new Ne(o.fee).mul(o.sourceNativeTokenPrice),X.getChainDecimalsByType(s.chainType),s.decimals).toFixed(0,Ne.roundUp);u.stablecoin={int:m,float:j(m,s.decimals).toFixed()}}return u}function Xs(s,i,r){let a=r.extraGasMax[i];if(!a)throw new mn(`Impossible to pay extra gas by '${i}' payment method`);let o=a.int;if(Ne(s).gt(o))throw new Vn(`Extra gas ${s} in int format, exceeded limit ${o} for '${i}' payment method`)}async function ri(s,i,r,a){let o={},u=await a.getReceiveTransactionCost({sourceChainId:s.allbridgeChainId,destinationChainId:i.allbridgeChainId,messenger:r,sourceToken:s.tokenAddress}),m=i.txCostAmount.maxAmount,p=j(m,X.getChainDecimalsByType(i.chainType)).toFixed(),h=Ne(p).div(u.exchangeRate).toFixed(X.getChainDecimalsByType(s.chainType),Ne.roundDown),T=Z(h,X.getChainDecimalsByType(s.chainType)).toFixed(0);if(o.native={int:T,float:h},u.sourceNativeTokenPrice){let S=Ne(h).mul(u.sourceNativeTokenPrice).toFixed(s.decimals,Ne.roundDown);o.stablecoin={int:Z(S,s.decimals).toFixed(0),float:S}}return{extraGasMax:o,destinationChain:{gasAmountMax:{int:m,float:p},swap:{int:i.txCostAmount.swap,float:j(i.txCostAmount.swap,X.getChainDecimalsByType(i.chainType)).toFixed()},transfer:{int:i.txCostAmount.transfer,float:j(i.txCostAmount.transfer,X.getChainDecimalsByType(i.chainType)).toFixed()}},exchangeRate:u.exchangeRate,sourceNativeTokenPrice:u.sourceNativeTokenPrice}}function fa(s){return s.sourceToken.chainSymbol!==s.destinationToken.chainSymbol}async function Kn(s,i,r,a){let o,u=new ya(i),m=new ya(r),p=await Qe(u,m),h=yt(a,i);Xn.setProvider(h);let T=await Xn.Spl.token(h).account.token.fetchNullable(p);if(T?.authority.equals(u))o=lt(p.toBase58(),"SOLANA",s);else{let S=await h.connection.getTokenAccountsByOwner(u,{mint:m});if(S.value.length===0&&!T)o=lt(p.toBase58(),"SOLANA",s);else if(S.value.length>0){let w=S.value[0];if(!w?.pubkey)throw new O("First token account or its public key is undefined");o=lt(w.pubkey.toBase58(),"SOLANA",s)}else throw new O("Associated account has wrong owner")}return o}g();y();f();g();y();f();var Ee=class{};var hn=class extends Ee{constructor(r,a,o){super();this.web3=r;this.api=a;this.nodeRpcUrlsConfig=o}chainType="EVM";async send(r){let a=await this.buildRawTransactionSend(r);return this.sendRawTransaction(a)}async buildRawTransactionSwap(r){let a=ot(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:o,fromAccountAddress:u,fromTokenAddress:m,toAccountAddress:p,toTokenAddress:h,minimumReceiveAmount:T}=r,w=this.getBridgeContract(o).methods.swap(a,m,h,p,T);return Promise.resolve({from:u,to:o,data:w.encodeABI()})}async buildRawTransactionSend(r){let a=await qe(this.chainType,r,this.api),{amount:o,contractAddress:u,fromAccountAddress:m,fromTokenAddress:p,toChainId:h,toAccountAddress:T,toTokenAddress:S,messenger:w,fee:x,gasFeePaymentMethod:v,extraGas:M,extraGasDest:k}=a,D="0x"+Jn().toString("hex"),N,F,W=x;switch(M&&(W=Ks(W).plus(M).toFixed()),w){case 3:case 4:{let U=await this.buildRawTransactionCctpSend(r,a,W);N=U.sendMethod,F=U.value;break}case 5:{let U=this.buildRawTransactionOftSend(r,a,W,k);N=U.sendMethod,F=U.value;break}case 1:case 2:{let U=this.getBridgeContract(u);v==="stablecoin"?(N=U.methods.swapAndBridge(p,o,T,h,S,D,w,W),F="0"):(N=U.methods.swapAndBridge(p,o,T,h,S,D,w,0),F=W)}break}return Promise.resolve({from:m,to:u,value:F,data:N.encodeABI()})}async buildRawTransactionCctpSend(r,a,o){let{amount:u,contractAddress:m,toChainId:p,toAccountAddress:h,gasFeePaymentMethod:T}=a,S=this.getCctpBridgeContract(m),w,x;if(r.destinationToken.chainType==="SOLANA"){let v=await Kn(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));T==="stablecoin"?(w=S.methods.bridgeWithWalletAddress(u,v,h,p,o),x="0"):(w=S.methods.bridgeWithWalletAddress(u,v,h,p,0),x=o)}else T==="stablecoin"?(w=S.methods.bridge(u,h,p,o),x="0"):(w=S.methods.bridge(u,h,p,0),x=o);return{sendMethod:w,value:x}}buildRawTransactionOftSend(r,a,o,u){let{amount:m,contractAddress:p,toChainId:h,toAccountAddress:T,gasFeePaymentMethod:S}=a,w=this.getOftBridgeContract(p),x,v;return S==="stablecoin"?(x=w.methods.bridge(r.sourceToken.tokenAddress,m,T,h,o,u??"0","10"),v="0"):(x=w.methods.bridge(r.sourceToken.tokenAddress,m,T,h,0,u??"0","10"),v=o),{sendMethod:x,value:v}}async sendRawTransaction(r){let a=await this.web3.eth.estimateGas(r),o={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:u}=await this.web3.eth.sendTransaction({...r,gas:a,...o});return{txId:u.toString()}}getBridgeContract(r){return new this.web3.eth.Contract(Ki.abi,r)}getCctpBridgeContract(r){return new this.web3.eth.Contract(Hi.abi,r)}getOftBridgeContract(r){return new this.web3.eth.Contract(Qi.abi,r)}};g();y();f();var Hn=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o}async approve(i,r){let a,o;r?(a=i,o=r):o=i;let u=Tn(o.token,o.messenger);return this.tokenService.buildRawTransactionApprove({...o,spender:u},a)}async send(i,r){return K(i.amount),z("amount",i.amount,i.sourceToken.decimals),fa(i)?Qn(i.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSend(i):Qn(i.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSwap(i)}};g();y();f();import{BN as Jt,Program as si,Spl as ao,web3 as ht}from"@project-serum/anchor";import{Keypair as ka,PublicKey as ae,SystemProgram as so}from"@solana/web3.js";import{Big as et}from"big.js";g();y();f();var bn={version:"0.1.0",name:"bridge",instructions:[{name:"initialize",accounts:[{name:"admin",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializePool",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"token",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializePoolArgs"}}]},{name:"initDepositAccount",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"deposit",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdraw",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amountLp",type:"u64"}]},{name:"swapAndBridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"messenger",isMut:!1,isSigner:!1},{name:"messengerConfig",isMut:!0,isSigner:!1},{name:"sentMessageAccount",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swapAndBridgeWormhole",accounts:[{name:"user",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"wormholeMessenger",isMut:!1,isSigner:!1},{name:"wormholeMessengerConfig",isMut:!0,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"bridge",isMut:!0,isSigner:!1},{name:"message",isMut:!0,isSigner:!0},{name:"sequence",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swap",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"sendMint",isMut:!1,isSigner:!1},{name:"receiveMint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"sendPool",isMut:!0,isSigner:!1},{name:"receivePool",isMut:!0,isSigner:!1},{name:"sendBridgeToken",isMut:!0,isSigner:!1},{name:"receiveBridgeToken",isMut:!0,isSigner:!1},{name:"sendUserToken",isMut:!0,isSigner:!1},{name:"receiveUserToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"},{name:"receiveAmountMin",type:"u64"}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"receiveAndSwap",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"receiveAndSwapWormhole",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"claimRewards",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAdmin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAdmin",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"startBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"stopBridge",accounts:[{name:"stopAuthority",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"setRebalancer",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"rebalancer",isMut:!1,isSigner:!1}],args:[]},{name:"setStopAuthority",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAuthority",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"setAllbridgeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setWormholeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setPoolFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setBalanceRatioMin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"balanceRatioMinBp",type:"u16"}]},{name:"setPoolAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"addOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"removeOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"adjustTotalLpAmount",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"chainBridge",type:{kind:"struct",fields:[{name:"address",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"config",type:{kind:"struct",fields:[{name:"admin",type:"publicKey"},{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"rebalancer",type:"publicKey"},{name:"stopAuthority",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"canSwap",type:"bool"},{name:"canDeposit",type:"bool"},{name:"canWithdraw",type:"bool"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"sentTokenAddress",type:"publicKey"},{name:"amount",type:"u64"},{name:"vusdAmount",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"nonce",type:{array:["u8",32]}},{name:"messenger",type:{defined:"Messenger"}},{name:"slot",type:"u64"},{name:"fee",type:"u64"}]}},{name:"otherBridgeToken",type:{kind:"struct",fields:[]}},{name:"pool",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"a",type:"u64"},{name:"d",type:"u64"},{name:"tokenBalance",type:"u64"},{name:"vUsdBalance",type:"u64"},{name:"reserves",type:"u64"},{name:"decimals",type:"u8"},{name:"totalLpAmount",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"accRewardPerShareP",type:"u128"},{name:"adminFeeAmount",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"unlock",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"fee",type:"u64"},{name:"vUsdAmount",type:"u64"},{name:"slot",type:"u64"}]}},{name:"userDeposit",type:{kind:"struct",fields:[{name:"userAddress",type:"publicKey"},{name:"mint",type:"publicKey"},{name:"lpAmount",type:"u64"},{name:"rewardDebt",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"}]}},{name:"InitializePoolArgs",type:{kind:"struct",fields:[{name:"a",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"vusdAmount",type:"u64"}]}},{name:"UnlockArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"recipient",type:"publicKey"},{name:"sourceChainId",type:"u8"},{name:"receiveToken",type:"publicKey"},{name:"messenger",type:{defined:"Messenger"}},{name:"hash",type:{array:["u8",32]}},{name:"receiveAmountMin",type:"u64"}]}},{name:"RewardError",type:{kind:"enum",variants:[{name:"FeeTooHigh"}]}},{name:"Messenger",type:{kind:"enum",variants:[{name:"None"},{name:"Allbridge"},{name:"Wormhole"}]}},{name:"ActionType",type:{kind:"enum",variants:[{name:"Deposit"},{name:"Withdraw"},{name:"Swap"}]}}],errors:[{code:6e3,name:"AccountAlreadyInitialized",msg:"This account has already been initialized"},{code:6001,name:"AdminAuthorityInvalid",msg:"This instruction requires admin authority"},{code:6002,name:"InvalidSignature",msg:"Provided signature has wrong signer or message"},{code:6003,name:"InvalidHash",msg:"Wrong unlock message hash"},{code:6004,name:"PoolOverflow",msg:"PoolInfo overflow"},{code:6005,name:"ReservesExhausted",msg:"Reserves exhausted"},{code:6006,name:"ZeroAmount",msg:"Zero amount"},{code:6007,name:"ZeroChanges",msg:"Zero changes"},{code:6008,name:"HighVusdAmount",msg:"vUSD amount is too high"},{code:6009,name:"BalanceRatioExceeded",msg:"Balance ratio exceeded"},{code:6010,name:"InsufficientReceivedAmount",msg:"Received insufficient amount"},{code:6011,name:"ForbiddenAction",msg:"ForbiddenAction"},{code:6012,name:"ValueTooHigh",msg:"Value is too high"}]};g();y();f();var ha={version:"0.1.0",name:"cctp_bridge",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"bridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"cctpMessenger",isMut:!1,isSigner:!1},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"messageTransmitterAccount",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"remoteTokenMessengerKey",isMut:!1,isSigner:!1},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"setAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setCctpTokenMessengerMinter",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]}],accounts:[{name:"cctpBridge",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"admin",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"adminFeeShareBp",type:"u64"},{name:"adminFeeAmount",type:"u64"}]}},{name:"chainBridge",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"amount",type:"u64"},{name:"adminFee",type:"u64"},{name:"relayerFee",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"slot",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"amount",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"gasOracleProgramId",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"}]}}],errors:[{code:6e3,name:"ValueTooHigh",msg:"Value is too high"}]};g();y();f();import{Spl as Hs}from"@project-serum/anchor";import Qs from"big.js";import{Web3 as zn}from"web3";async function $t(s,i){return await Hs.token(i).account.token.fetch(s)}async function Ta(s,i,r){let a=await i.account.pool.fetch(r),o=a.decimals,u=Qs(a.feeShareBp.toString()).div(1e4).toFixed(),m={aValue:a.a.toString(),dValue:a.d.toString(),totalLpAmount:a.totalLpAmount.toString(),tokenBalance:a.tokenBalance.toString(),vUsdBalance:a.vUsdBalance.toString(),accRewardPerShareP:a.accRewardPerShareP.toString()};return it(s,{decimals:o,feeShare:u},m)}function ba(s){let i=s.amount,r="0x"+s.recipient.toString("hex"),a=s.sourceChainId,o=s.destinationChainId,u="0x"+s.receiveToken.toString("hex"),m="0x"+s.nonce.toString("hex"),p=1,h="0x"+s.chainBridge.toString("hex"),T=zn.utils.encodePacked({t:"uint256",v:i},{t:"bytes32",v:r},{t:"uint256",v:a},{t:"bytes32",v:u},{t:"uint256",v:m},{t:"uint8",v:p});if(!T)throw new O("message cannot be undefined");let S=zn.utils.keccak256(P.from(T.replace("0x",""),"hex")),w=P.from(S.replace("0x",""),"hex");w[0]=a,w[1]=o;let x=zn.utils.encodePacked({t:"bytes32",v:"0x"+w.toString("hex")},{t:"bytes32",v:h});if(!x)throw new jt("messageWithSigner cannot be undefined");let v=zn.utils.keccak256(P.from(x.replace("0x",""),"hex")),M=P.from(v.replace("0x",""),"hex");return M[0]=w[0],M[1]=w[1],M}g();y();f();import{ComputeBudgetInstruction as Pa,ComputeBudgetProgram as qn,Connection as wa,TransactionMessage as zs}from"@solana/web3.js";import{Big as qs}from"big.js";g();y();f();import{AddressLookupTableAccount as Sa}from"@solana/web3.js";async function Mt(s,i){return await Promise.all(s.message.addressTableLookups.map(async r=>new Sa({key:r.accountKey,state:Sa.deserialize(await i.getAccountInfo(r.accountKey).then(a=>{if(!a)throw new O("Cannot get AccountInfo");return a.data}))})))}g();y();f();g();y();f();var ii="AUTO";async function Yt(s,i,r){let a=new wa(r,"confirmed"),o=(await a.simulateTransaction(s)).value.unitsConsumed;await Ba(s.instructions,o,i,a)}async function Ca(s,i,r){let a=new wa(r,"confirmed"),o=await Mt(s,a),u=zs.decompile(s.message,{addressLookupTableAccounts:o});if(s.serialize().length>1232)throw new $n;await Ba(u.instructions,769230,i,a),s.message=u.compileToV0Message(o)}async function Ba(s,i,r,a){if(i>0){let o=eo(i,s);if(r?.solana){let u=r.solana;if(u===ii)await ai(s,a);else if("pricePerUnitInMicroLamports"in u)await ai(s,a,u.pricePerUnitInMicroLamports);else{let m=qs(u.extraFeeInLamports).div(o).mul(gn(6)).toFixed(0);await ai(s,a,m)}}}}function eo(s,i){let r=i.findIndex(u=>u.programId.equals(qn.programId)&&Pa.decodeInstructionType(u)==="SetComputeUnitLimit"),a=Number((s*1.3).toFixed(0)),o=qn.setComputeUnitLimit({units:a});return r>=0?i[r]=o:i.push(o),a.toString()}async function ai(s,i,r){let a=s.findIndex(m=>m.programId.equals(qn.programId)&&Pa.decodeInstructionType(m)==="SetComputeUnitPrice"),o=BigInt(r||await to(i)),u=qn.setComputeUnitPrice({microLamports:o});return a>=0?s[a]=u:s.push(u),o.toString()}async function to(s){let i=await s.getRecentPrioritizationFees(),r=0;for(let a of i)r+=a.prioritizationFee;return(r/i.length).toFixed(0)}g();y();f();import{NATIVE_MINT as no}from"@solana/spl-token";import{Connection as ro,TransactionMessage as Ia,VersionedTransaction as io}from"@solana/web3.js";import Ra,{AxiosError as va}from"axios";var er=class{connection;jupiterUrl;apiKeyHeader;maxAccounts;constructor(i,r){this.connection=new ro(i),this.jupiterUrl=r.jupiterUrl.replace(/\/$/,""),this.apiKeyHeader=r.jupiterApiKeyHeader,this.maxAccounts=r.jupiterMaxAccounts}async getJupiterSwapTx(i,r,a,o){let u;try{let w=o?"ExactOut":"ExactIn",x=`${this.jupiterUrl}/quote?inputMint=${r}&outputMint=${no.toString()}&amount=${a}&swapMode=${w}&slippageBps=100&onlyDirectRoutes=true`;this.maxAccounts&&(x+=`&maxAccounts=${this.maxAccounts}`),u=await Ra.get(x,{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(w){throw w instanceof va&&w.response&&w.response.data&&w.response.data.error?new Te(w.response.data.error):new Te("Cannot get route")}let m;if(o&&u?.data?.inAmount)m=u.data.inAmount;else if(o)throw new Te("Cannot get inAmount");let p;try{p=await Ra.post(`${this.jupiterUrl}/swap`,{quoteResponse:u.data,userPublicKey:i,wrapAndUnwrapSol:!0},{headers:this.apiKeyHeader?{"x-api-key":this.apiKeyHeader}:void 0})}catch(w){throw w instanceof va&&w.response&&w.response.data&&w.response.data.error?new Te(w.response.data.error):new Te("Cannot get swap transaction")}let h;if(p?.data?.swapTransaction)h=p.data.swapTransaction;else throw new Te("Cannot get swap transaction");let T=P.from(h,"base64"),S=io.deserialize(T);return o?{tx:S,amountIn:m}:{tx:S}}async amendJupiterWithSdkTx(i,r){try{let a=await Mt(i,this.connection),o=await Mt(r,this.connection),u=Ia.decompile(i.message,{addressLookupTableAccounts:a}),m=Ia.decompile(r.message,{addressLookupTableAccounts:o});if(m.instructions.shift(),u.instructions.push(...m.instructions),a.push(...o),i.message=u.compileToV0Message(a),r.message.header.numRequiredSignatures===2&&i.signatures.length===1){let p=r.signatures[0];if(!p)throw new O("Signature is undefined");i.signatures.push(p)}return i}catch(a){throw a instanceof Error&&a.message?new Te(`Some error occurred during creation final swap and bridge transaction. ${a.message}`):new Te("Some error occurred during creation final swap and bridge transaction")}}};var oi=1e6,xa=1.1,tr=class extends Ee{constructor(r,a,o){super();this.solanaRpcUrl=r;this.params=a;this.api=o;this.jupiterService=new er(r,a.jupiterParams)}chainType="SOLANA";jupiterService;async buildRawTransactionSwap(r){let a=ot(this.chainType,r);return await this.buildSwapTransaction(a,r.sourceToken.poolAddress,r.destinationToken.poolAddress,r.txFeeParams)}async buildSwapTransaction(r,a,o,u){let{fromAccountAddress:m,amount:p,contractAddress:h,fromTokenAddress:T,toTokenAddress:S,toAccountAddress:w,minimumReceiveAmount:x}=r,v=m,M=h,k=T,D=S,N=o,F=w,W=new ae(v),U=yt(this.solanaRpcUrl,W.toString()),_=new si(bn,M,U),L=await _t(_.programId),we=await ft(_.programId),le=new ae(k),Ve=await Zt(le,_.programId),je=new ae(a),Ke=await Qe(W,le),Me=new ae(F),ye=new ae(D),Ce=await Zt(ye,_.programId),Oe=new ae(N),Be=await Qe(Me,ye),_e=[ht.ComputeBudgetProgram.setComputeUnitLimit({units:oi})];try{await $t(Be,U)}catch{let Wn=await ao.associatedToken(U).methods.create().accounts({mint:ye,owner:Me,associatedAccount:Be}).instruction();_e.push(Wn)}let Ze=await _.methods.swap(new Jt(p),new Jt(x||0)).accounts({payer:W,config:we,bridgeAuthority:L,user:W,sendBridgeToken:Ve,sendMint:le,sendPool:je,sendUserToken:Ke,receiveBridgeToken:Ce,receiveMint:ye,receivePool:Oe,receiveUserToken:Be}).preInstructions(_e).transaction(),De=U.connection;return Ze.recentBlockhash=(await De.getLatestBlockhash()).blockhash,Ze.feePayer=W,await Yt(Ze,u,this.solanaRpcUrl),await this.convertToVersionedTransaction(Ze,De)}async buildRawTransactionSend(r){let a=await qe(this.chainType,r,this.api),o=this.addPoolAddress(r,a),u=o.gasFeePaymentMethod=="stablecoin",m;if(u)try{let{tx:T,solTxSendUpdatedParams:S}=await this.processJup(o,r,!0);m=T,o={...o,...S}}catch{try{let{tx:S,solTxSendUpdatedParams:w}=await this.processJup(o,r,!1);m=S,o={...o,...w}}catch(S){throw S instanceof ce?S:S instanceof Error&&S.message?new Te(`Some error occurred during creation Jupiter swap transaction. ${S.message}`):new Te("Some error occurred during creation Jupiter swap transaction")}}let p,h;switch(a.messenger){case 1:{let T=await this.prepareSwapAndBridgeData(o);p=await this.buildSwapAndBridgeAllbridgeTransaction(T);break}case 2:{let T=await this.prepareSwapAndBridgeData(o),{transaction:S,messageAccount:w}=await this.buildSwapAndBridgeWormholeTransaction(T);p=S,h=w;break}case 3:case 4:{let T=await this.prepareSwapAndBridgeCctpData(o),{transaction:S,messageSentEventDataKeypair:w}=await this.buildSwapAndBridgeCctpTransaction(r.destinationToken.chainSymbol,T);p=S,h=w;break}case 5:throw new Re("Messenger OFT is not supported yet.")}if(u){if(!m)throw new Te("Swap tx is absent");p=await this.jupiterService.amendJupiterWithSdkTx(m,p)}return await Ca(p,r.txFeeParams,this.solanaRpcUrl),h&&p.sign([h]),p}async processJup(r,a,o){let{fee:u,extraGas:m,gasFeePaymentMethod:p}=await this.convertStableCoinFeeAndExtraGasToNativeCurrency(a.sourceToken,r),h=o?et(u):et(r.fee);m&&(h=h.plus(m)),o||(h=h.mul(xa));let{tx:T,amountIn:S}=await this.jupiterService.getJupiterSwapTx(a.fromAccountAddress,a.sourceToken.tokenAddress,h.toFixed(0),o),w;if(o){if(!S)throw new Te("Cannot get inAmount");w=et(r.amount).minus(et(S).mul(xa)).toFixed(0)}else w=et(r.amount).minus(h).toFixed(0);if(et(w).lte(0))throw new Vt(`Amount not enough to pay fee, ${j(et(w).minus(1).neg(),a.sourceToken.decimals).toFixed()} stables is missing`);return{tx:T,solTxSendUpdatedParams:{amount:w,fee:u,extraGas:m,gasFeePaymentMethod:p}}}addPoolAddress(r,a){return{...a,poolAddress:r.sourceToken.poolAddress}}async convertStableCoinFeeAndExtraGasToNativeCurrency(r,a){if(a.gasFeePaymentMethod=="stablecoin"){let o=(await this.api.getReceiveTransactionCost({sourceChainId:a.fromChainId,destinationChainId:a.toChainId,messenger:a.messenger,sourceToken:r.tokenAddress})).sourceNativeTokenPrice,u=et(a.fee).div(o).mul(et(10).pow(X.getChainDecimalsByType("SOLANA")-r.decimals)).toFixed(0),m;return a.extraGas&&(m=et(a.extraGas).div(o).mul(et(10).pow(X.getChainDecimalsByType("SOLANA")-r.decimals)).toFixed(0)),{fee:u,extraGas:m,gasFeePaymentMethod:"native"}}return{fee:a.fee,extraGas:a.extraGas,gasFeePaymentMethod:"native"}}getExtraGasInstruction(r,a,o){return ht.SystemProgram.transfer({fromPubkey:a,toPubkey:o,lamports:+r})}async prepareSwapAndBridgeData(r){let{amount:a,contractAddress:o,fromChainId:u,fromAccountAddress:m,fromTokenAddress:p,toChainId:h,toAccountAddress:T,toTokenAddress:S,poolAddress:w,extraGas:x}=r,v=p,M=m,k=h,D=S,N=T,F=o,W=u,U=yt(this.solanaRpcUrl,M),_=new si(bn,F,U),L=Array.from(Jn()),we=new ae(w),le=await Ta(a,_,we),Ve=await zi(L,_.programId),je=await _t(_.programId),Ke=await Qe(new ae(M),new ae(v)),Me=await Zt(new ae(v),_.programId),ye=await Qr(k,_.programId),Ce=await ea(k,P.from(D),_.programId),Oe=await ft(_.programId),Be=await _.account.config.fetch(Oe),_e=await pn(k,Be.gasOracleProgramId),Ze=await pn(W,Be.gasOracleProgramId),De=ba({amount:le,recipient:P.from(N),nonce:P.from(L),receiveToken:P.from(D),destinationChainId:k,sourceChainId:W,chainBridge:(await _t(_.programId)).toBuffer()}),G={};return G.bridge=_,G.amount=new Jt(a),G.vusdAmount=new Jt(le),G.nonce=L,G.recipient=Array.from(N),G.receiveToken=Array.from(D),G.poolAccount=we,G.lockAccount=Ve,G.bridgeAuthority=je,G.userToken=Ke,G.bridgeTokenAccount=Me,G.chainBridgeAccount=ye,G.otherBridgeTokenAccount=Ce,G.userAccount=new ae(M),G.destinationChainId=k,G.mint=new ae(v),G.config=Oe,G.configAccountInfo=Be,G.gasPrice=_e,G.thisGasPrice=Ze,G.message=De,x&&(G.extraGasInstruction=this.getExtraGasInstruction(x,G.userAccount,Oe)),G}async buildSwapAndBridgeAllbridgeTransaction(r){let{bridge:a,vusdAmount:o,nonce:u,recipient:m,receiveToken:p,poolAccount:h,lockAccount:T,bridgeAuthority:S,userToken:w,bridgeTokenAccount:x,chainBridgeAccount:v,otherBridgeTokenAccount:M,userAccount:k,destinationChainId:D,mint:N,config:F,configAccountInfo:W,gasPrice:U,thisGasPrice:_,message:L,extraGasInstruction:we}=r,le=W.allbridgeMessengerProgramId,Ve=await zr(D,le),je=await ft(le),Ke=await ta(L,le),Me=[];we&&Me.push(we);let ye=await a.methods.swapAndBridge({vusdAmount:o,nonce:u,destinationChainId:D,recipient:m,receiveToken:p}).accounts({mint:N,user:k,config:F,lock:T,pool:h,gasPrice:U,thisGasPrice:_,bridgeAuthority:S,userToken:w,bridgeToken:x,chainBridge:v,messenger:le,messengerGasUsage:Ve,messengerConfig:je,sentMessageAccount:Ke,otherBridgeToken:M}).preInstructions([ht.ComputeBudgetProgram.setComputeUnitLimit({units:oi})]).postInstructions(Me).transaction(),Ce=yt(this.solanaRpcUrl,k.toString()).connection;return ye.recentBlockhash=(await Ce.getLatestBlockhash()).blockhash,ye.feePayer=k,await this.convertToVersionedTransaction(ye,Ce)}async convertToVersionedTransaction(r,a){let o=await a.getAddressLookupTable(new ae(this.params.solanaLookUpTable)).then(m=>m.value);if(!o)throw new O("Cannot find allbridgeLookupTableAccount");let u=new ht.TransactionMessage({payerKey:r.feePayer,recentBlockhash:r.recentBlockhash,instructions:r.instructions}).compileToV0Message([o]);return new ht.VersionedTransaction(u)}async buildSwapAndBridgeWormholeTransaction(r){let{bridge:a,vusdAmount:o,nonce:u,recipient:m,receiveToken:p,poolAccount:h,lockAccount:T,bridgeAuthority:S,userToken:w,bridgeTokenAccount:x,chainBridgeAccount:v,otherBridgeTokenAccount:M,userAccount:k,destinationChainId:D,mint:N,config:F,configAccountInfo:W,gasPrice:U,thisGasPrice:_,message:L,extraGasInstruction:we}=r,le=this.params.wormholeMessengerProgramId,[Ve]=ae.findProgramAddressSync([P.from("Bridge")],new ae(le)),[je]=ae.findProgramAddressSync([P.from("fee_collector")],new ae(le)),[Ke]=ae.findProgramAddressSync([P.from("Sequence"),S.toBuffer()],new ae(le)),Me=await zr(D,W.wormholeMessengerProgramId),ye=await ft(W.wormholeMessengerProgramId),Ce=ka.generate(),Oe=yt(this.solanaRpcUrl,k.toString()),Be=await Oe.connection.getAccountInfo(Ve);if(Be==null)throw new O("Cannot fetch wormhole bridge account info");let _e=new Jt(Be.data.slice(16,24),"le").toString(),Ze=so.transfer({fromPubkey:k,toPubkey:je,lamports:+_e}),De=[];we&&De.push(we);let G={mint:N,user:k,config:F,lock:T,pool:h,gasPrice:U,thisGasPrice:_,bridgeAuthority:S,userToken:w,bridgeToken:x,chainBridge:v,otherBridgeToken:M,messengerGasUsage:Me,wormholeProgram:le,bridge:Ve,message:Ce.publicKey,wormholeMessenger:W.wormholeMessengerProgramId,sequence:Ke,feeCollector:je,wormholeMessengerConfig:ye,clock:ht.SYSVAR_CLOCK_PUBKEY},pe=await a.methods.swapAndBridgeWormhole({vusdAmount:o,nonce:u,destinationChainId:D,recipient:m,receiveToken:p}).accounts(G).preInstructions([ht.ComputeBudgetProgram.setComputeUnitLimit({units:oi}),Ze]).postInstructions(De).signers([Ce]).transaction();return pe.recentBlockhash=(await Oe.connection.getLatestBlockhash()).blockhash,pe.feePayer=k,{transaction:await this.convertToVersionedTransaction(pe,Oe.connection),messageAccount:Ce}}async prepareSwapAndBridgeCctpData(r){let{contractAddress:a,amount:o,fromAccountAddress:u,fromTokenAddress:m,toChainId:p,toAccountAddress:h,toTokenAddress:T,extraGas:S}=r,w=a;if(!w)throw new Ie("Such route does not support CCTP protocol");let x=4,v=u,M=T,k=h,D=yt(this.solanaRpcUrl,v),N=new si(ha,w,D),F=new ae(m),W=await na(F,N.programId),U=new ae(v),_=await N.account.cctpBridge.fetch(W),L={};return L.cctpBridge=N,L.cctpBridgeAccount=W,L.cctpAddressAccount=new ae(w),L.amount=new Jt(o),L.recipient=Array.from(k),L.receiveToken=Array.from(M),L.userToken=await Qe(U,F),L.bridgeAuthority=await qi(W,N.programId),L.bridgeTokenAccount=await ra(F,N.programId),L.chainBridgeAccount=await Qr(p,N.programId),L.userAccount=U,L.destinationChainId=p,L.mint=F,L.gasPrice=await pn(p,_.gasOracleProgramId),L.thisGasPrice=await pn(x,_.gasOracleProgramId),L.provider=D,S&&(L.extraGasInstruction=this.getExtraGasInstruction(S,L.userAccount,W)),L}async buildSwapAndBridgeCctpTransaction(r,a){let{cctpBridge:o,cctpBridgeAccount:u,amount:m,recipient:p,receiveToken:h,bridgeAuthority:T,userToken:S,bridgeTokenAccount:w,chainBridgeAccount:x,userAccount:v,destinationChainId:M,mint:k,gasPrice:D,thisGasPrice:N,extraGasInstruction:F,provider:W}=a,U=this.params.cctpParams.cctpDomains[r],_=this.params.cctpParams.cctpTransmitterProgramId,L=this.params.cctpParams.cctpTokenMessengerMinter;if(U==null||!_||!L)throw new O("CCTP is not configured");let we=new ae(_),le=new ae(L),{messageTransmitterAccount:Ve,tokenMessenger:je,tokenMessengerEventAuthority:Ke,tokenMinter:Me,localToken:ye,remoteTokenMessengerKey:Ce,authorityPda:Oe}=aa(U,k,we,le),Be=[];F&&Be.push(F);let _e=ka.generate(),Ze=ia(o.programId,_e.publicKey),De=await o.methods.bridge({amount:m,destinationChainId:M,recipient:p,receiveToken:h}).accounts({mint:k,user:v,cctpBridge:u,messageSentEventData:_e.publicKey,lock:Ze,cctpMessenger:le,messageTransmitterProgram:we,messageTransmitterAccount:Ve,tokenMessenger:je,tokenMinter:Me,localToken:ye,remoteTokenMessengerKey:Ce,authorityPda:Oe,eventAuthority:Ke,bridgeToken:w,gasPrice:D,thisGasPrice:N,chainBridge:x,userToken:S,bridgeAuthority:T}).preInstructions([ht.ComputeBudgetProgram.setComputeUnitLimit({units:2e6})]).postInstructions(Be).transaction(),G=W.connection;return De.recentBlockhash=(await G.getLatestBlockhash()).blockhash,De.feePayer=v,{transaction:await this.convertToVersionedTransaction(De,G),messageSentEventDataKeypair:_e}}send(r){throw new Ae}};g();y();f();import{Address as ci,contract as Ax}from"@stellar/stellar-sdk";import{Big as Ao}from"big.js";g();y();f();import{contract as n}from"@stellar/stellar-sdk";var oo=n.Spec,co=n.Client;var Sn=class extends co{constructor(r){super(new oo(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAApnYXNfb3JhY2xlAAAAAAATAAAAAAAAAAxuYXRpdmVfdG9rZW4AAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9hbmRfYnJpZGdlAAAAAAkAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACXJlY2lwaWVudAAAAAAAA+4AAAAgAAAAAAAAABRkZXN0aW5hdGlvbl9jaGFpbl9pZAAAAAQAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAFbm9uY2UAAAAAAAAMAAAAAAAAAApnYXNfYW1vdW50AAAAAAAKAAAAAAAAABBmZWVfdG9rZW5fYW1vdW50AAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOcmVjZWl2ZV90b2tlbnMAAAAAAAgAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAA9zb3VyY2VfY2hhaW5faWQAAAAABAAAAAAAAAANcmVjZWl2ZV90b2tlbgAAAAAAA+4AAAAgAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAAAAAAJZXh0cmFfZ2FzAAAAAAAD6AAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAEc3dhcAAAAAYAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAA+4AAAAgAAAAAAAAAA1yZWNlaXZlX3Rva2VuAAAAAAAD7gAAACAAAAAAAAAACXJlY2lwaWVudAAAAAAAABMAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAJc3RvcF9zd2FwAAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc3RhcnRfc3dhcAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X2dhc19vcmFjbGUAAAAAAAEAAAAAAAAAC25ld19hZGRyZXNzAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X3JlYmFsYW5jZXIAAAAAAAEAAAAAAAAACnJlYmFsYW5jZXIAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X21lc3NlbmdlcgAAAAAAAAEAAAAAAAAACW1lc3NlbmdlcgAAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X2dhc191c2FnZQAAAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAJZ2FzX3VzYWdlAAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAPcmVnaXN0ZXJfYnJpZGdlAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAOYnJpZGdlX2FkZHJlc3MAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAQYWRkX2JyaWRnZV90b2tlbgAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAANdG9rZW5fYWRkcmVzcwAAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATcmVtb3ZlX2JyaWRnZV90b2tlbgAAAAACAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAIYWRkX3Bvb2wAAAACAAAAAAAAAARwb29sAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATd2l0aGRyYXdfZ2FzX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAfd2l0aGRyYXdfYnJpZGdpbmdfZmVlX2luX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAVaGFzX3Byb2Nlc3NlZF9tZXNzYWdlAAAAAAAAAQAAAAAAAAAHbWVzc2FnZQAAAAPuAAAAIAAAAAEAAAPpAAAAAQAAAAM=","AAAAAAAAAAAAAAAUaGFzX3JlY2VpdmVkX21lc3NhZ2UAAAABAAAAAAAAAAdtZXNzYWdlAAAAA+4AAAAgAAAAAQAAA+kAAAABAAAAAw==","AAAAAAAAAAAAAAAQZ2V0X3Bvb2xfYWRkcmVzcwAAAAEAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAKZ2V0X2NvbmZpZwAAAAAAAAAAAAEAAAPpAAAH0AAAAAZCcmlkZ2UAAAAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAUZ2V0X3RyYW5zYWN0aW9uX2Nvc3QAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAANZ2V0X2dhc191c2FnZQAAAAAAAAEAAAAAAAAACGNoYWluX2lkAAAABAAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAOZ2V0X2dhc19vcmFjbGUAAAAAAAAAAAABAAAD6QAAABMAAAAD","AAAAAAAAAAAAAAASZ2V0X2Fub3RoZXJfYnJpZGdlAAAAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAB9AAAAANQW5vdGhlckJyaWRnZQAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAB1N3YXBwZWQAAAAABgAAAAAAAAAOcmVjZWl2ZV9hbW91bnQAAAAAAAoAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAAEwAAAAAAAAALc2VuZF9hbW91bnQAAAAACgAAAAAAAAAKc2VuZF90b2tlbgAAAAAD7gAAACAAAAAAAAAABnNlbmRlcgAAAAAAEw==","AAAAAQAAAAAAAAAAAAAAClRva2Vuc1NlbnQAAAAAAAUAAAAAAAAABmFtb3VudAAAAAAACgAAAAAAAAAUZGVzdGluYXRpb25fY2hhaW5faWQAAAAEAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAADlRva2Vuc1JlY2VpdmVkAAAAAAAEAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAB21lc3NhZ2UAAAAD7gAAACAAAAAAAAAABW5vbmNlAAAAAAAADAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAAClJlY2VpdmVGZWUAAAAAAAMAAAAAAAAAF2JyaWRnZV90cmFuc2FjdGlvbl9jb3N0AAAAAAoAAAAAAAAACWV4dHJhX2dhcwAAAAAAAAoAAAAAAAAAGG1lc3NhZ2VfdHJhbnNhY3Rpb25fY29zdAAAAAo=","AAAAAQAAAAAAAAAAAAAAFUJyaWRnaW5nRmVlRnJvbVRva2VucwAAAAAAAAIAAAAAAAAAEGZlZV90b2tlbl9hbW91bnQAAAAKAAAAAAAAAANnYXMAAAAACg==","AAAAAQAAAAAAAAAAAAAADUFub3RoZXJCcmlkZ2UAAAAAAAACAAAAAAAAAAdhZGRyZXNzAAAAA+4AAAAgAAAAAAAAAAZ0b2tlbnMAAAAAA+wAAAPuAAAAIAAAAAE=","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAABgAAAGBwcmVjb21wdXRlZCB2YWx1ZXMgb2YgdGhlIHNjYWxpbmcgZmFjdG9yIHJlcXVpcmVkIGZvciBwYXlpbmcgdGhlIGJyaWRnaW5nIGZlZSB3aXRoIHN0YWJsZSB0b2tlbnMAAAAeYnJpZGdpbmdfZmVlX2NvbnZlcnNpb25fZmFjdG9yAAAAAAPsAAAAEwAAAAoAAAAAAAAACGNhbl9zd2FwAAAAAQAAAGxwcmVjb21wdXRlZCB2YWx1ZXMgdG8gZGl2aWRlIGJ5IHRvIGNoYW5nZSB0aGUgcHJlY2lzaW9uIGZyb20gdGhlIEdhcyBPcmFjbGUgcHJlY2lzaW9uIHRvIHRoZSB0b2tlbiBwcmVjaXNpb24AAAAWZnJvbV9nYXNfb3JhY2xlX2ZhY3RvcgAAAAAD7AAAABMAAAAKAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAAVwb29scwAAAAAAA+wAAAPuAAAAIAAAABMAAAAAAAAACnJlYmFsYW5jZXIAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAwAAAAEAAAAAAAAAC090aGVyQnJpZGdlAAAAAAEAAAAEAAAAAQAAAAAAAAALU2VudE1lc3NhZ2UAAAAAAQAAA+4AAAAgAAAAAQAAAAAAAAAPUmVjZWl2ZWRNZXNzYWdlAAAAAAEAAAPuAAAAIA==","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),r);this.options=r}fromJSON={initialize:this.txFromJSON,swap_and_bridge:this.txFromJSON,receive_tokens:this.txFromJSON,swap:this.txFromJSON,stop_swap:this.txFromJSON,start_swap:this.txFromJSON,set_gas_oracle:this.txFromJSON,set_stop_authority:this.txFromJSON,set_rebalancer:this.txFromJSON,set_messenger:this.txFromJSON,set_gas_usage:this.txFromJSON,register_bridge:this.txFromJSON,add_bridge_token:this.txFromJSON,remove_bridge_token:this.txFromJSON,add_pool:this.txFromJSON,withdraw_gas_tokens:this.txFromJSON,withdraw_bridging_fee_in_tokens:this.txFromJSON,has_processed_message:this.txFromJSON,has_received_message:this.txFromJSON,get_pool_address:this.txFromJSON,get_config:this.txFromJSON,get_stop_authority:this.txFromJSON,get_transaction_cost:this.txFromJSON,get_gas_usage:this.txFromJSON,get_admin:this.txFromJSON,get_gas_oracle:this.txFromJSON,get_another_bridge:this.txFromJSON,set_admin:this.txFromJSON,upgrade:this.txFromJSON}};var nr=class extends Ee{constructor(r,a,o){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=o}chainType="SRB";async buildRawTransactionSend(r){let a=await qe(this.chainType,r,this.api);return await this.buildRawTransactionSendFromParams(a)}async buildRawTransactionSendFromParams(r){let{amount:a,contractAddress:o,fromAccountAddress:u,fromTokenAddress:m,toChainId:p,toAccountAddress:h,toTokenAddress:T,fee:S,gasFeePaymentMethod:w,extraGas:x}=r,v=S;x&&(v=Ao(v).plus(x).toFixed());let M=this.getContract(Sn,o,u),k;return w==="stablecoin"?k=await M.swap_and_bridge({sender:u,token:ci.contract(P.from(m)).toString(),amount:BigInt(a),recipient:P.from(h),destination_chain_id:+p,receive_token:P.from(T),nonce:st(),gas_amount:BigInt(0),fee_token_amount:BigInt(v)}):k=await M.swap_and_bridge({sender:u,token:ci.contract(P.from(m)).toString(),amount:BigInt(a),recipient:P.from(h),destination_chain_id:+p,receive_token:P.from(T),nonce:st(),gas_amount:BigInt(v),fee_token_amount:BigInt(0)}),k.toXDR()}async buildRawTransactionSwap(r){let a=ot(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:o,fromAccountAddress:u,fromTokenAddress:m,toAccountAddress:p,toTokenAddress:h,minimumReceiveAmount:T}=r;return(await this.getContract(Sn,o,u).swap({sender:u,amount:BigInt(a),token:ci.contract(P.from(m)).toBuffer(),receive_token:P.from(h),recipient:p,receive_amount_min:BigInt(T)})).toXDR()}send(r){throw new Ae}getContract(r,a,o){let u={publicKey:o,contractId:a,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new r(u)}};g();y();f();import{SuiClient as wo}from"@mysten/sui/client";import{coinWithBalance as me,Transaction as bi}from"@mysten/sui/transactions";import{SUI_CLOCK_OBJECT_ID as Ya}from"@mysten/sui/utils";import{Big as Si}from"big.js";var Pi=He(Tt());g();y();f();var dt=He(Tt());he();function Oa(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap`,typeArguments:i,arguments:[$(s,r.bridge),$(s,r.coin),Le(s,r.receiveAmountMin,"u64")]})}function Da(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::deposit`,typeArguments:[i],arguments:[$(s,r.bridge),$(s,r.userDeposit),$(s,r.coin)]})}function Wa(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::withdraw`,typeArguments:[i],arguments:[$(s,r.bridge),$(s,r.userDeposit),Le(s,r.amountLp,"u64")]})}function Na(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::claim_reward`,typeArguments:[i],arguments:[$(s,r.bridge),$(s,r.userDeposit)]})}function Ea(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::pool`,typeArguments:[i],arguments:[$(s,r)]})}function ui(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap_and_bridge_wormhole`,typeArguments:[i],arguments:[$(s,r.bridge),$(s,r.messenger),$(s,r.wormholeState),$(s,r.theClock),$(s,r.gasOracle),$(s,r.amount),$(s,r.recipient),Le(s,r.destinationChainId,"u8"),$(s,r.receiveToken),Le(s,r.nonce,"u256"),$(s,r.feeSuiCoin),$(s,r.feeTokenCoin)]})}function Ua(s,i){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::new_user_deposit`,typeArguments:[i],arguments:[]})}function mi(s,i,r){return s.moveCall({target:`${dt.PUBLISHED_AT}::bridge_interface::swap_and_bridge`,typeArguments:[i],arguments:[$(s,r.bridge),$(s,r.messenger),$(s,r.gasOracle),$(s,r.amount),$(s,r.recipient),Le(s,r.destinationChainId,"u8"),$(s,r.receiveToken),Le(s,r.nonce,"u256"),$(s,r.feeSuiCoin),$(s,r.feeTokenCoin)]})}var Ja=He(di());g();y();f();var Va=He(di());he();function pi(s,i,r){return s.moveCall({target:`${Va.PUBLISHED_AT}::cctp_bridge_interface::bridge`,typeArguments:[i],arguments:[$(s,r.cctpBridge),$(s,r.gasOracle),$(s,r.tokenMessengerMinterState),$(s,r.messageTransmitterState),$(s,r.treasury),$(s,r.denyList),$(s,r.amount),$(s,r.feeSuiCoin),$(s,r.feeTokenCoin),Le(s,r.destinationChainId,"u8"),$(s,r.recipient),$(s,r.recipientWalletAddress)]})}var La=He(fi());g();y();f();var $a=He(fi());g();y();f();g();y();f();he();import{bcs as bt}from"@mysten/sui/bcs";import{fromHEX as yo,toHEX as ho}from"@mysten/sui/utils";g();y();f();import{bcs as fo}from"@mysten/sui/bcs";he();var yi=class s{__VectorClass=!0;static $typeName="vector";static $numTypeParams=1;static $isPhantom=[!1];$typeName="vector";$fullTypeName;$typeArgs;$isPhantom=[!1];elements;constructor(i,r){this.$fullTypeName=ee(this.$typeName,...i),this.$typeArgs=i,this.elements=r}static reified(i){return{typeName:s.$typeName,fullTypeName:ee(s.$typeName,Y(i)),typeArgs:[Y(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs(Pn(i)),fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),new:r=>new s([Y(i)],r),kind:"VectorClassReified"}}static get r(){return s.reified}static get bcs(){return fo.vector}static fromFields(i,r){return s.reified(i).new(r.map(a=>q(i,a)))}static fromFieldsWithTypes(i,r){return s.reified(i).new(r.map(a=>H(i,a)))}static fromBcs(i,r){return s.fromFields(i,s.bcs(Pn(i)).parse(r))}toJSONField(){return this.elements.map(i=>Ot(this.$typeArgs[0],i))}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,elements:this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new(r.map(a=>Q(i,a)))}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a vector json object");return s.fromJSONField(i,r.elements)}};function Lt(s){return yi.r(s)}function ue(s){return typeof s=="string"?{phantomType:s,kind:"PhantomReified"}:{phantomType:s.fullTypeName,kind:"PhantomReified"}}var To=bt.bytes(32).transform({input:s=>yo(s),output:s=>ho(s)});function Pn(s){switch(s){case"bool":return bt.bool();case"u8":return bt.u8();case"u16":return bt.u16();case"u32":return bt.u32();case"u64":return bt.u64();case"u128":return bt.u128();case"u256":return bt.u256();case"address":return To;default:return s.bcs}}function Y(s){switch(s){case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"bool":case"address":return s}switch(s.kind){case"PhantomReified":return s.phantomType;case"StructClassReified":return s.fullTypeName;case"VectorClassReified":return s.fullTypeName}throw new Error("unreachable")}function q(s,i){switch(s){case"bool":case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return BigInt(i);case"address":return`0x${i}`}if(s.kind==="VectorClassReified")return s.fromFields(i).elements;switch(s.typeName){case"0x1::string::String":case"0x1::ascii::String":return new TextDecoder().decode(Uint8Array.from(i.bytes)).toString();case"0x2::url::Url":return new TextDecoder().decode(Uint8Array.from(i.url.bytes)).toString();case"0x2::object::ID":return`0x${i.bytes}`;case"0x2::object::UID":return`0x${i.id.bytes}`;case"0x1::option::Option":return i.vec.length===0?null:s.fromFields(i).vec[0];default:return s.fromFields(i)}}function H(s,i){switch(s){case"bool":case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return BigInt(i);case"address":return i}if(s.kind==="VectorClassReified")return s.fromFieldsWithTypes(i).elements;switch(s.typeName){case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":return i;case"0x2::object::UID":return i.id;case"0x2::balance::Balance":return s.fromFields({value:BigInt(i)});case"0x1::option::Option":return i===null?null:H(s.reifiedTypeArgs[0],i);default:return s.fromFieldsWithTypes(i)}}function tt(s,i,r){if(r.length!==i.length)throw new Error(`provided item has mismatching number of type argments ${s} (expected ${r.length}, got ${i.length}))`);for(let a=0;a<i.length;a++)if(V(i[a])!==V(Y(r[a])))throw new Error(`provided item has mismatching type argments ${s} (expected ${Y(r[a])}, got ${i[a]}))`)}function ct(s,i){let{typeArgs:r}=Se(s.type);tt(s.type,r,i)}function Ot(s,i){let{typeName:r,typeArgs:a}=Se(s);switch(r){case"bool":return i;case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return i.toString();case"address":case"signer":return i;case"vector":return i.map(o=>Ot(a[0],o));case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":case"0x2::object::UID":return i;case"0x1::option::Option":return i===null?null:Ot(a[0],i);default:return i.toJSONField()}}function Q(s,i){switch(s){case"bool":case"u8":case"u16":case"u32":return i;case"u64":case"u128":case"u256":return BigInt(i);case"address":return i}if(s.kind==="VectorClassReified")return s.fromJSONField(i).elements;switch(s.typeName){case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":case"0x2::object::UID":return i;case"0x1::option::Option":return i===null?null:Q(s.reifiedTypeArgs[0],i);default:return s.fromJSONField(i)}}he();g();y();f();var rr="0x1";import{bcs as fg}from"@mysten/sui/bcs";import{fromB64 as hg}from"@mysten/sui/utils";g();y();f();he();import{bcs as hi}from"@mysten/sui/bcs";import{fromB64 as bo}from"@mysten/sui/utils";function ir(s){return s=V(s),s===`${rr}::string::String`}var ar=class s{__StructClass=!0;static get $typeName(){return`${rr}::string::String`}static $numTypeParams=0;static $isPhantom=[];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;bytes;constructor(i,r){this.$fullTypeName=ee(s.$typeName,...i),this.$typeArgs=i,this.bytes=r.bytes}static reified(){return{typeName:s.$typeName,fullTypeName:ee(s.$typeName),typeArgs:[],isPhantom:s.$isPhantom,reifiedTypeArgs:[],fromFields:i=>s.fromFields(i),fromFieldsWithTypes:i=>s.fromFieldsWithTypes(i),fromBcs:i=>s.fromBcs(i),bcs:s.bcs,fromJSONField:i=>s.fromJSONField(i),fromJSON:i=>s.fromJSON(i),fromSuiParsedData:i=>s.fromSuiParsedData(i),fromSuiObjectData:i=>s.fromSuiObjectData(i),fetch:async(i,r)=>s.fetch(i,r),new:i=>new s([],i),kind:"StructClassReified"}}static get r(){return s.reified()}static phantom(){return ue(s.reified())}static get p(){return s.phantom()}static get bcs(){return hi.struct("String",{bytes:hi.vector(hi.u8())})}static fromFields(i){return s.reified().new({bytes:q(Lt("u8"),i.bytes)})}static fromFieldsWithTypes(i){if(!ir(i.type))throw new Error("not a String type");return s.reified().new({bytes:H(Lt("u8"),i.fields.bytes)})}static fromBcs(i){return s.fromFields(s.bcs.parse(i))}toJSONField(){return{bytes:Ot("vector<u8>",this.bytes)}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i){return s.reified().new({bytes:Q(Lt("u8"),i.bytes)})}static fromJSON(i){if(i.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return s.fromJSONField(i)}static fromSuiParsedData(i){if(i.dataType!=="moveObject")throw new Error("not an object");if(!ir(i.type))throw new Error(`object at ${i.fields.id} is not a String object`);return s.fromFieldsWithTypes(i)}static fromSuiObjectData(i){if(i.bcs){if(i.bcs.dataType!=="moveObject"||!ir(i.bcs.type))throw new Error("object at is not a String object");return s.fromBcs(bo(i.bcs.bcsBytes))}if(i.content)return s.fromSuiParsedData(i.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r){let a=await i.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching String object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!ir(a.data.bcs.type))throw new Error(`object at id ${r} is not a String object`);return s.fromSuiObjectData(a.data)}};he();g();y();f();he();g();y();f();var St="0x2";import{bcs as Ti}from"@mysten/sui/bcs";import{fromB64 as Za,fromHEX as So,toHEX as Po}from"@mysten/sui/utils";function sr(s){return s=V(s),s===`${St}::object::ID`}var Dt=class s{__StructClass=!0;static get $typeName(){return`${St}::object::ID`}static $numTypeParams=0;static $isPhantom=[];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;bytes;constructor(i,r){this.$fullTypeName=ee(s.$typeName,...i),this.$typeArgs=i,this.bytes=r.bytes}static reified(){return{typeName:s.$typeName,fullTypeName:ee(s.$typeName),typeArgs:[],isPhantom:s.$isPhantom,reifiedTypeArgs:[],fromFields:i=>s.fromFields(i),fromFieldsWithTypes:i=>s.fromFieldsWithTypes(i),fromBcs:i=>s.fromBcs(i),bcs:s.bcs,fromJSONField:i=>s.fromJSONField(i),fromJSON:i=>s.fromJSON(i),fromSuiParsedData:i=>s.fromSuiParsedData(i),fromSuiObjectData:i=>s.fromSuiObjectData(i),fetch:async(i,r)=>s.fetch(i,r),new:i=>new s([],i),kind:"StructClassReified"}}static get r(){return s.reified()}static phantom(){return ue(s.reified())}static get p(){return s.phantom()}static get bcs(){return Ti.struct("ID",{bytes:Ti.bytes(32).transform({input:i=>So(i),output:i=>Po(i)})})}static fromFields(i){return s.reified().new({bytes:q("address",i.bytes)})}static fromFieldsWithTypes(i){if(!sr(i.type))throw new Error("not a ID type");return s.reified().new({bytes:H("address",i.fields.bytes)})}static fromBcs(i){return s.fromFields(s.bcs.parse(i))}toJSONField(){return{bytes:this.bytes}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i){return s.reified().new({bytes:Q("address",i.bytes)})}static fromJSON(i){if(i.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return s.fromJSONField(i)}static fromSuiParsedData(i){if(i.dataType!=="moveObject")throw new Error("not an object");if(!sr(i.type))throw new Error(`object at ${i.fields.id} is not a ID object`);return s.fromFieldsWithTypes(i)}static fromSuiObjectData(i){if(i.bcs){if(i.bcs.dataType!=="moveObject"||!sr(i.bcs.type))throw new Error("object at is not a ID object");return s.fromBcs(Za(i.bcs.bcsBytes))}if(i.content)return s.fromSuiParsedData(i.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r){let a=await i.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching ID object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!sr(a.data.bcs.type))throw new Error(`object at id ${r} is not a ID object`);return s.fromSuiObjectData(a.data)}};function or(s){return s=V(s),s===`${St}::object::UID`}var Xe=class s{__StructClass=!0;static get $typeName(){return`${St}::object::UID`}static $numTypeParams=0;static $isPhantom=[];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;id;constructor(i,r){this.$fullTypeName=ee(s.$typeName,...i),this.$typeArgs=i,this.id=r.id}static reified(){return{typeName:s.$typeName,fullTypeName:ee(s.$typeName),typeArgs:[],isPhantom:s.$isPhantom,reifiedTypeArgs:[],fromFields:i=>s.fromFields(i),fromFieldsWithTypes:i=>s.fromFieldsWithTypes(i),fromBcs:i=>s.fromBcs(i),bcs:s.bcs,fromJSONField:i=>s.fromJSONField(i),fromJSON:i=>s.fromJSON(i),fromSuiParsedData:i=>s.fromSuiParsedData(i),fromSuiObjectData:i=>s.fromSuiObjectData(i),fetch:async(i,r)=>s.fetch(i,r),new:i=>new s([],i),kind:"StructClassReified"}}static get r(){return s.reified()}static phantom(){return ue(s.reified())}static get p(){return s.phantom()}static get bcs(){return Ti.struct("UID",{id:Dt.bcs})}static fromFields(i){return s.reified().new({id:q(Dt.reified(),i.id)})}static fromFieldsWithTypes(i){if(!or(i.type))throw new Error("not a UID type");return s.reified().new({id:H(Dt.reified(),i.fields.id)})}static fromBcs(i){return s.fromFields(s.bcs.parse(i))}toJSONField(){return{id:this.id}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i){return s.reified().new({id:Q(Dt.reified(),i.id)})}static fromJSON(i){if(i.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return s.fromJSONField(i)}static fromSuiParsedData(i){if(i.dataType!=="moveObject")throw new Error("not an object");if(!or(i.type))throw new Error(`object at ${i.fields.id} is not a UID object`);return s.fromFieldsWithTypes(i)}static fromSuiObjectData(i){if(i.bcs){if(i.bcs.dataType!=="moveObject"||!or(i.bcs.type))throw new Error("object at is not a UID object");return s.fromBcs(Za(i.bcs.bcsBytes))}if(i.content)return s.fromSuiParsedData(i.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r){let a=await i.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching UID object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!or(a.data.bcs.type))throw new Error(`object at id ${r} is not a UID object`);return s.fromSuiObjectData(a.data)}};function nt(s,i){return s.moveCall({target:`${$a.PUBLISHED_AT}::bytes32::from_hex`,arguments:[Le(s,i,`${ar.$typeName}`)]})}g();y();f();async function At(s,i,r=[]){let a=await s(i),o=r.concat(a.data);return a.hasNextPage&&a.nextCursor?At(s,a.nextCursor,o):o}var Xt=class extends Ee{constructor(r,a){super();this.nodeRpcUrlsConfig=r;this.api=a;this.client=new wo({url:r.getNodeRpcUrl(this.chainSymbol)})}chainType="SUI";chainSymbol="SUI";client;send(){throw new O("Method send not implemented.")}async buildRawTransactionSwap(r){let a=r.sourceToken.suiAddresses;if(!a)throw new O("SUI token must contain 'suiAddresses'");(0,Pi.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin);let o=ot(this.chainType,r);return await this.buildRawTransactionSwapFromParams(o,a)}async buildRawTransactionSwapFromParams(r,a){let{amount:o,fromAccountAddress:u,fromTokenAddress:m,toTokenAddress:p,minimumReceiveAmount:h}=r,T=new bi;T.setSender(u);let S={bridge:a.bridgeObjectAddress,coin:me({balance:BigInt(o),type:m}),receiveAmountMin:BigInt(h)},w=Oa(T,[m,p],S),x=await At(v=>this.client.getCoins({owner:r.toAccountAddress,coinType:p,cursor:v}));return x.length===0||!x[0]?T.transferObjects([w],r.toAccountAddress):T.mergeCoins(x[0].coinObjectId,[w]),await T.toJSON({client:this.client})}async buildRawTransactionSendFromCustomTx(r,a,o){let u=bi.from(r);return this.buildRawTransactionSendFromTx(o,u,a)}async buildRawTransactionSend(r){return this.buildRawTransactionSendFromTx(r,new bi)}async buildRawTransactionSendFromTx(r,a,o){let u=await qe(this.chainType,r,this.api),{messenger:m}=u,p=r.sourceToken.suiAddresses;if(!p)throw new O("SUI token must contain 'suiAddresses'");switch((0,Pi.setAddress)(p.bridgeAddress,p.bridgeAddressOrigin),(0,La.setAddress)(p.utilsAddress),m){case 1:return this.buildRawTransactionAllbridgeSend(u,p,a,o);case 2:return this.buildRawTransactionWormholeSend(u,p,a,o);case 3:case 4:return this.buildRawTransactionCctpSend(r,u,p,a,o);case 5:throw new Re("Messenger OFT is not supported yet.")}}async buildRawTransactionAllbridgeSend(r,a,o,u){let{amount:m,fromAccountAddress:p,fromTokenAddress:h,toChainId:T,toAccountAddress:S,toTokenAddress:w,fee:x,gasFeePaymentMethod:v,extraGas:M}=r,k=x;if(M&&(k=Si(k).plus(M).toFixed()),o.setSender(p),v==="stablecoin"){let D=BigInt(m)-BigInt(k),N,F;if(u){let[U]=o.splitCoins(u,[k]);N=u,F=U}else N=me({balance:D,type:h}),F=me({balance:BigInt(k),type:h});let W={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:N,destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(w)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:F,feeSuiCoin:me({balance:BigInt(0),useGasCoin:!1})};mi(o,h,W)}else{let D=k==="0"?me({balance:BigInt(k),useGasCoin:!1}):me({balance:BigInt(k)}),N={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:u??me({balance:BigInt(m),type:h}),destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(w)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:me({balance:BigInt(0),type:h}),feeSuiCoin:D};mi(o,h,N)}return await o.toJSON({client:this.client})}async buildRawTransactionWormholeSend(r,a,o,u){let{amount:m,fromAccountAddress:p,fromTokenAddress:h,toChainId:T,toAccountAddress:S,toTokenAddress:w,fee:x,gasFeePaymentMethod:v,extraGas:M}=r,k=x;if(M&&(k=Si(k).plus(M).toFixed()),o.setSender(p),v==="stablecoin"){let D=BigInt(m)-BigInt(k),N,F;if(u){let[U]=o.splitCoins(u,[k]);N=u,F=U}else N=me({balance:D,type:h}),F=me({balance:BigInt(k),type:h});let W={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:Ya,amount:N,destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(w)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:F,feeSuiCoin:me({balance:BigInt(0),useGasCoin:!1})};ui(o,h,W)}else{let D=k==="0"?me({balance:BigInt(k),useGasCoin:!1}):me({balance:BigInt(k)}),N={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:Ya,amount:u??me({balance:BigInt(m),type:h}),destinationChainId:T,nonce:st(),recipient:nt(o,ze(S)),receiveToken:nt(o,ze(w)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:me({balance:BigInt(0),type:h}),feeSuiCoin:D};ui(o,h,N)}return await o.toJSON({client:this.client})}async buildRawTransactionCctpSend(r,a,o,u,m){let{amount:p,fromAccountAddress:h,fromTokenAddress:T,toChainId:S,toAccountAddress:w,fee:x,gasFeePaymentMethod:v,extraGas:M}=a;(0,Ja.setAddress)(o.cctpAddress,o.cctpAddressOrigin);let k=x;M&&(k=Si(k).plus(M).toFixed()),u.setSender(h);let D=nt(u,ze(w)),N;if(r.destinationToken.chainType==="SOLANA"){let F=await Kn(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));N=nt(u,ze(F))}else N=D;if(v==="stablecoin"){let F=BigInt(p)-BigInt(k),W,U;if(m){let[L]=u.splitCoins(m,[k]);W=m,U=L}else W=me({balance:F,type:T}),U=me({balance:BigInt(k),type:T});let _={cctpBridge:o.cctpObjectAddress,tokenMessengerMinterState:o.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:o.cctpMessageTransmitterStateObjectAddress,treasury:o.cctpTreasuryObjectAddress,denyList:o.cctpDenyListObjectAddress,amount:W,destinationChainId:S,recipient:N,recipientWalletAddress:D,gasOracle:o.gasOracleObjectAddress,feeTokenCoin:U,feeSuiCoin:me({balance:BigInt(0),useGasCoin:!1})};pi(u,T,_)}else{let F=k==="0"?me({balance:BigInt(k),useGasCoin:!1}):me({balance:BigInt(k)}),W={cctpBridge:o.cctpObjectAddress,tokenMessengerMinterState:o.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:o.cctpMessageTransmitterStateObjectAddress,treasury:o.cctpTreasuryObjectAddress,denyList:o.cctpDenyListObjectAddress,amount:m??me({balance:BigInt(p),type:T}),destinationChainId:S,recipient:N,recipientWalletAddress:D,gasOracle:o.gasOracleObjectAddress,feeTokenCoin:me({balance:BigInt(0),type:T}),feeSuiCoin:F};pi(u,T,W)}return await u.toJSON({client:this.client})}};g();y();f();import{Big as Io}from"big.js";g();y();f();g();y();f();import Co from"bn.js";function cr(s){return"0x"+new Co(s).toString("hex")}function Xa(s){return new Promise(i=>setTimeout(()=>i(),s))}async function Ar(s,i){let r=await s.trx.sign(i);if(!r.signature)throw new jt("Transaction was not signed properly");let o=(await s.trx.sendRawTransaction(r)).transaction.txID;return await Bo(s,o),{txId:o}}async function Bo(s,i,r=1e4){let a=Date.now();for(;;){if(Date.now()-a>r)throw new ln("Transaction not found");let o=await s.trx.getUnconfirmedTransactionInfo(i);if(!o?.receipt){await Xa(2e3);continue}if(o.receipt.result==="SUCCESS")return o;throw new ln(`Transaction status is ${o.receipt.result}`)}}var wn=class extends Ee{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async send(r){let a=await qe(this.chainType,r,this.api),o=await this.buildRawTransactionSendFromParams(r,a);return await Ar(this.tronWeb,o)}async buildRawTransactionSwap(r){let a=ot(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:o,fromAccountAddress:u,fromTokenAddress:m,toAccountAddress:p,toTokenAddress:h,minimumReceiveAmount:T}=r,S=[{type:"uint256",value:a},{type:"bytes32",value:m},{type:"bytes32",value:h},{type:"address",value:p},{type:"uint256",value:T}];return this.buildRawTransaction(o,"swap(uint256,bytes32,bytes32,address,uint256)",S,"0",u)}async buildRawTransactionSend(r){let a=await qe(this.chainType,r,this.api);return this.buildRawTransactionSendFromParams(r,a)}async buildRawTransactionSendFromParams(r,a){let{amount:o,contractAddress:u,fromAccountAddress:m,fromTokenAddress:p,toChainId:h,toAccountAddress:T,toTokenAddress:S,messenger:w,fee:x,gasFeePaymentMethod:v,extraGas:M,extraGasDest:k}=a,D=x;M&&(D=Io(D).plus(M).toFixed());let N=st().toString(),F,W,U;switch(w){case 3:case 4:v==="stablecoin"?(F=[{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:D}],W="0"):(F=[{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:0}],W=D),U="bridge(uint256,bytes32,uint256,uint256)";break;case 5:v==="stablecoin"?(F=[{type:"address",value:r.sourceToken.tokenAddress},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:D},{type:"uint256",value:k??"0"},{type:"uint256",value:"10"}],W="0"):(F=[{type:"address",value:r.sourceToken.tokenAddress},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"uint256",value:0},{type:"uint256",value:k??"0"},{type:"uint256",value:"10"}],W=D),U="bridge(address,uint256,bytes32,uint256,uint256,uint256,uint256)";break;case 1:case 2:v==="stablecoin"?(F=[{type:"bytes32",value:p},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"bytes32",value:S},{type:"uint256",value:N},{type:"uint8",value:w},{type:"uint256",value:D}],W="0"):(F=[{type:"bytes32",value:p},{type:"uint256",value:o},{type:"bytes32",value:T},{type:"uint256",value:h},{type:"bytes32",value:S},{type:"uint256",value:N},{type:"uint8",value:w},{type:"uint256",value:0}],W=D),U="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)";break}return this.buildRawTransaction(u,U,F,W,m)}async buildRawTransaction(r,a,o,u,m){let p=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+u},o,m);if(!p?.result?.result)throw new O("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}};var ur=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o;this.rawTxBuilder=new Hn(i,r,a,o)}rawTxBuilder;async getAllowance(i,r){let a,o;r?(a=i,o=r):o=i;let u=Tn(o.token,o.messenger);return await this.tokenService.getAllowance({...o,spender:u},a)}async checkAllowance(i,r){let a,o;r?(a=i,o=r):o=i;let u=Tn(o.token,o.messenger);return this.tokenService.checkAllowance({...o,spender:u},a)}async approve(i,r){let a=Tn(r.token,r.messenger);return this.tokenService.approve(i,{...r,spender:a})}async send(i,r){return K(r.amount),z("amount",r.amount,r.sourceToken.decimals),Qn(r.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).send(r)}};function Tn(s,i=1){switch(i){case 3:if(s.cctpAddress)return s.cctpAddress;throw new Ie("Such route does not support CCTP protocol");case 4:if(s.cctpV2Address)return s.cctpV2Address;throw new Ie("Such route does not support CCTP V2 protocol");case 5:if(s.oftBridgeAddress)return s.oftBridgeAddress;throw new Re("Such route does not support OFT protocol");case 1:case 2:return s.bridgeAddress}}function Qn(s,i,r,a,o){switch(X.getChainProperty(s).chainType){case"EVM":{if(o)return new hn(o,i,r);{let u=r.getNodeRpcUrl(s);return new hn(new vo(u),i,r)}}case"TRX":{if(o)return new wn(o,i);{let u=r.getNodeRpcUrl(s);return new wn(new Ro({fullHost:u,solidityNode:u,eventServer:u}),i)}}case"SOLANA":return new tr(r.getNodeRpcUrl("SOL"),{wormholeMessengerProgramId:a.wormholeMessengerProgramId,solanaLookUpTable:a.solanaLookUpTable,cctpParams:a.cctpParams,jupiterParams:{jupiterUrl:a.jupiterUrl,jupiterApiKeyHeader:a.jupiterApiKeyHeader,jupiterMaxAccounts:a.jupiterMaxAccounts}},i);case"SRB":return new nr(r,a,i);case"SUI":return new Xt(r,i)}}g();y();f();import{Big as Jo}from"big.js";import Lo from"timed-cache";import{TronWeb as Xo}from"tronweb";import{FMT_BYTES as Ko,FMT_NUMBER as Ho,Web3 as Qo}from"web3";g();y();f();import{Big as pt}from"big.js";function Ka(s,i,r,a,o){let u=Z(s,3),m=pt(u),p=pt(r),h=pt(a).plus(o),T,S;if(p.eq(0)||h.eq(0)){let x=m.div(2);T=pt(a).plus(x),S=pt(o).plus(x)}else T=pt(a).plus(m.mul(a).div(h)),S=pt(o).plus(m.mul(o).div(h));return pt(ma(i,T.toFixed(),S.toFixed())).minus(p).toFixed()}function Ha(s){let i=Z(s,3);return pt(i).round().toFixed()}g();y();f();import{Web3 as Pt}from"web3";g();y();f();var ko={abi:[{inputs:[{internalType:"address",name:"_router",type:"address"},{internalType:"uint256",name:"_a",type:"uint256"},{internalType:"contract ERC20",name:"_token",type:"address"},{internalType:"uint16",name:"_feeShareBP",type:"uint16"},{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"},{internalType:"string",name:"lpName",type:"string"},{internalType:"string",name:"lpSymbol",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"RewardsClaimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedFromVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedToVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"a",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"accRewardPerShareP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adjustTotalLpAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"adminFeeAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"balanceRatioMinBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canDeposit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canWithdraw",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"claimAdminFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"claimRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"d",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"feeShareBP",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"x",type:"uint256"}],name:"getY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"pendingReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"reserves",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"router",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_adminFeeShareBP",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"}],name:"setBalanceRatioMinBP",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"_feeShareBP",type:"uint16"}],name:"setFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_router",type:"address"}],name:"setRouter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapFromVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapToVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"token",outputs:[{internalType:"contract ERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"userRewardDebt",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"vUsdBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amountLp",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Cn=ko;g();y();f();g();y();f();var xe=class{lpAmount;rewardDebt;constructor(i){this.lpAmount=i.lpAmount,this.rewardDebt=i.rewardDebt}get userLiquidity(){return j(this.lpAmount,3).toFixed()}earned(i,r){let a=Aa(this.lpAmount,this.rewardDebt,i.accRewardPerShareP,i.p);return r?j(a,r).toFixed():a}};g();y();f();var Ue=class{};var Bn=class extends Ue{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";P=52;async getUserBalanceInfo(r,a){let o;try{o=await Yn(this.getUserBalanceInfoByBatch(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5e3)}catch{o=await Hr(()=>this.getUserBalanceInfoPerProperty(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5,2e3)}return o}async getPoolInfoFromChain(r){let a;try{a=await Yn(this.getPoolInfoByBatch(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5e3)}catch{a=await Hr(()=>this.getPoolInfoPerProperty(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5,2e3)}return a}async getUserBalanceInfoByBatch(r,a){let o=new this.web3.eth.BatchRequest,u=this.getPoolContract(a.poolAddress),m=u.methods.userRewardDebt(r).encodeABI(),p=u.methods.balanceOf(r).encodeABI();o.add({method:"eth_call",params:[{to:a.poolAddress,data:m},"latest"]}),o.add({method:"eth_call",params:[{to:a.poolAddress,data:p},"latest"]});let[h,T]=await o.execute();if(h&&T&&!h.error&&!T.error)return new xe({lpAmount:Pt.utils.toBigInt(T.result).toString(),rewardDebt:Pt.utils.toBigInt(h.result).toString()});throw new Error("Batched failed")}async getUserBalanceInfoPerProperty(r,a){let o=(await this.getPoolContract(a.poolAddress).methods.userRewardDebt(r).call()).toString(),u=(await this.getPoolContract(a.poolAddress).methods.balanceOf(r).call()).toString();return new xe({lpAmount:u,rewardDebt:o})}async getPoolInfoByBatch(r){let a=new this.web3.eth.BatchRequest,o=this.getPoolContract(r.poolAddress),u=o.methods.a().encodeABI(),m=o.methods.d().encodeABI(),p=o.methods.tokenBalance().encodeABI(),h=o.methods.vUsdBalance().encodeABI(),T=o.methods.totalSupply().encodeABI(),S=o.methods.accRewardPerShareP().encodeABI();a.add({method:"eth_call",params:[{to:r.poolAddress,data:u},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:m},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:p},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:h},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:T},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:S},"latest"]});let[w,x,v,M,k,D]=await a.execute();if(w&&x&&v&&M&&k&&D&&!w.error&&!x.error&&!v.error&&!M.error&&!k.error&&!D.error){let N=Pt.utils.toBigInt(v.result).toString(),F=Pt.utils.toBigInt(M.result).toString(),W=ke({tokenBalance:N,vUsdBalance:F});return{aValue:Pt.utils.toBigInt(w.result).toString(),dValue:Pt.utils.toBigInt(x.result).toString(),tokenBalance:N,vUsdBalance:F,totalLpAmount:Pt.utils.toBigInt(k.result).toString(),accRewardPerShareP:Pt.utils.toBigInt(D.result).toString(),p:this.P,imbalance:W}}throw new Error("Batched failed")}async getPoolInfoPerProperty(r){let a=this.getPoolContract(r.poolAddress),o=(await a.methods.a().call()).toString(),u=(await a.methods.d().call()).toString(),m=(await a.methods.tokenBalance().call()).toString(),p=(await a.methods.vUsdBalance().call()).toString(),h=(await a.methods.totalSupply().call()).toString(),T=(await a.methods.accRewardPerShareP().call()).toString(),S=ke({tokenBalance:m,vUsdBalance:p});return{aValue:o,dValue:u,tokenBalance:m,vUsdBalance:p,totalLpAmount:h,accRewardPerShareP:T,p:this.P,imbalance:S}}async buildRawTransactionDeposit(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.deposit(r.amount).encodeABI()})}async buildRawTransactionWithdraw(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.withdraw(r.amount).encodeABI()})}async buildRawTransactionClaimRewards(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.claimRewards().encodeABI()})}buildTxParams(r){return{from:r.accountAddress,to:r.token.poolAddress,value:"0"}}getPoolContract(r){return new this.web3.eth.Contract(Cn.abi,r)}};g();y();f();var mr=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o}async approve(i,r){if(r){let a=i,o=r;return this.tokenService.buildRawTransactionApprove({...o,spender:o.token.poolAddress},a)}else{let a=i;return this.tokenService.buildRawTransactionApprove({...a,spender:a.token.poolAddress})}}async deposit(i,r){return K(i.amount),z("amount",i.amount,i.token.decimals),i.amount=Z(i.amount,i.token.decimals).toFixed(),Kt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionDeposit(i)}async withdraw(i,r){return K(i.amount),z("amount",i.amount,i.token.decimals),i.amount=Z(i.amount,3).toFixed(),Kt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionWithdraw(i)}async claimRewards(i,r){return Kt(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionClaimRewards(i)}};g();y();f();import{AnchorProvider as xo,BN as Qa,Program as Fo,Spl as Mo,web3 as Oo}from"@project-serum/anchor";import{Connection as Do,PublicKey as wt}from"@solana/web3.js";var lr=class extends Ue{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";P=48;async getUserBalanceInfo(r,a){let o=this.buildAnchorProvider(r),u=this.getBridge(a.bridgeAddress,o),m=new wt(a.poolAddress),p=await u.account.pool.fetch(m);try{let h=await qr(new wt(r),p.mint,u.programId),{lpAmount:T,rewardDebt:S}=await u.account.userDeposit.fetch(h);return new xe({lpAmount:T.toString(),rewardDebt:S.toString()})}catch{return new xe({lpAmount:"0",rewardDebt:"0"})}}async getPoolInfoFromChain(r){let a=this.buildAnchorProvider(r.bridgeAddress),o=await this.getBridge(r.bridgeAddress,a).account.pool.fetch(r.poolAddress),u=o.vUsdBalance.toString(),m=o.tokenBalance.toString(),p=ke({tokenBalance:m,vUsdBalance:u});return{dValue:o.d.toString(),aValue:o.a.toString(),totalLpAmount:o.totalLpAmount.toString(),vUsdBalance:u,tokenBalance:m,accRewardPerShareP:o.accRewardPerShareP.toString(),p:this.P,imbalance:p}}async buildRawTransactionDeposit(r){let{bridge:a,accounts:o,preInstructions:u}=await this.prepareDataForTransaction(r),m=await a.methods.deposit(new Qa(r.amount)).accounts(o).preInstructions(u).transaction();return m.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,m.feePayer=new wt(r.accountAddress),await Yt(m,r.txFeeParams,this.solanaRpcUrl),m}async buildRawTransactionWithdraw(r){let{bridge:a,accounts:o,preInstructions:u}=await this.prepareDataForTransaction(r),m=await a.methods.withdraw(new Qa(r.amount)).accounts(o).preInstructions(u).transaction();return m.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,m.feePayer=new wt(r.accountAddress),await Yt(m,r.txFeeParams,this.solanaRpcUrl),m}async buildRawTransactionClaimRewards(r){let{bridge:a,accounts:o,preInstructions:u}=await this.prepareDataForTransaction(r),m=await a.methods.claimRewards().accounts(o).preInstructions(u).transaction();return m.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,m.feePayer=new wt(r.accountAddress),await Yt(m,r.txFeeParams,this.solanaRpcUrl),m}async prepareDataForTransaction(r){let a=this.buildAnchorProvider(r.accountAddress),o=this.getBridge(r.token.bridgeAddress,a),{accounts:u,preInstructions:m}=await this._getLPTransactionData(o,r.token.poolAddress,r.accountAddress,a);return{bridge:o,accounts:u,preInstructions:m}}getBridge(r,a){return new Fo(bn,r,a)}buildAnchorProvider(r){let a=new Do(this.solanaRpcUrl,"confirmed"),o=new wt(r);return new xo(a,{publicKey:o},{preflightCommitment:"confirmed",commitment:"confirmed"})}async _getLPTransactionData(r,a,o,u){let m=new wt(o),p=await ft(r.programId),h=await _t(r.programId),T=new wt(a),w=(await r.account.pool.fetch(T)).mint,x=await Qe(m,w),v=await Zt(w,r.programId),M=await qr(m,w,r.programId),k=[Oo.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await $t(x,u)}catch{let W=await Mo.associatedToken(u).methods.create().accounts({mint:w,owner:m,associatedAccount:x}).instruction();k.push(W)}try{await r.account.userDeposit.fetch(M)}catch{let F=await r.methods.initDepositAccount().accounts({mint:w,user:m,userDeposit:M}).instruction();k.push(F)}return{accounts:{mint:w,user:m,config:p,pool:T,bridgeAuthority:h,userDeposit:M,userToken:x,bridgeToken:v},preInstructions:k}}};g();y();f();import{contract as ux}from"@stellar/stellar-sdk";g();y();f();import{contract as t}from"@stellar/stellar-sdk";var Wo=t.Spec,No=t.Client;var dr=class extends No{constructor(r){super(new Wo(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABwAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAZicmlkZ2UAAAAAABMAAAAAAAAAAWEAAAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAADGZlZV9zaGFyZV9icAAAAAoAAAAAAAAAFGJhbGFuY2VfcmF0aW9fbWluX2JwAAAACgAAAAAAAAASYWRtaW5fZmVlX3NoYXJlX2JwAAAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAHZGVwb3NpdAAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAId2l0aGRyYXcAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAACWFtb3VudF9scAAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3dhcF90b192X3VzZAAAAAAAAAMAAAAAAAAABHVzZXIAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9mcm9tX3ZfdXNkAAAAAAQAAAAAAAAABHVzZXIAAAATAAAAAAAAAAt2dXNkX2Ftb3VudAAAAAAKAAAAAAAAABJyZWNlaXZlX2Ftb3VudF9taW4AAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAANY2xhaW1fcmV3YXJkcwAAAAAAAAEAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAdgYWRtaW5gAAAAAA1zZXRfZmVlX3NoYXJlAAAAAAAAAQAAAAAAAAAMZmVlX3NoYXJlX2JwAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAWYWRqdXN0X3RvdGFsX2xwX2Ftb3VudAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAYc2V0X2JhbGFuY2VfcmF0aW9fbWluX2JwAAAAAQAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAMc3RvcF9kZXBvc2l0AAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAANc3RhcnRfZGVwb3NpdAAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3RvcF93aXRoZHJhdwAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAOc3RhcnRfd2l0aGRyYXcAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc2V0X2JyaWRnZQAAAAAAAQAAAAAAAAAGYnJpZGdlAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAATc2V0X2FkbWluX2ZlZV9zaGFyZQAAAAABAAAAAAAAABJhZG1pbl9mZWVfc2hhcmVfYnAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAPY2xhaW1fYWRtaW5fZmVlAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAZgdmlld2AAAAAAAA5wZW5kaW5nX3Jld2FyZAAAAAAAAQAAAAAAAAAEdXNlcgAAABMAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAAIZ2V0X3Bvb2wAAAAAAAAAAQAAA+kAAAfQAAAABFBvb2wAAAAD","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAKZ2V0X2JyaWRnZQAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAQZ2V0X3VzZXJfZGVwb3NpdAAAAAEAAAAAAAAABHVzZXIAAAATAAAAAQAAA+kAAAfQAAAAC1VzZXJEZXBvc2l0AAAAAAM=","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAD1N3YXBwZWRGcm9tVlVzZAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAAC3Z1c2RfYW1vdW50AAAAAAo=","AAAAAQAAAAAAAAAAAAAADVN3YXBwZWRUb1ZVc2QAAAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAALdnVzZF9hbW91bnQAAAAACg==","AAAAAQAAAAAAAAAAAAAAB0RlcG9zaXQAAAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAACFdpdGhkcmF3AAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAADlJld2FyZHNDbGFpbWVkAAAAAAACAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAABHVzZXIAAAAT","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAQAAAAEAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAEAAAAT","AAAAAQAAAAAAAAAAAAAABFBvb2wAAAAPAAAAAAAAAAFhAAAAAAAACgAAAAAAAAAWYWNjX3Jld2FyZF9wZXJfc2hhcmVfcAAAAAAACgAAAAAAAAAQYWRtaW5fZmVlX2Ftb3VudAAAAAoAAAAAAAAAEmFkbWluX2ZlZV9zaGFyZV9icAAAAAAACgAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAAAAAAtjYW5fZGVwb3NpdAAAAAABAAAAAAAAAAxjYW5fd2l0aGRyYXcAAAABAAAAAAAAAAFkAAAAAAAACgAAAAAAAAAIZGVjaW1hbHMAAAAEAAAAAAAAAAxmZWVfc2hhcmVfYnAAAAAKAAAAAAAAAAhyZXNlcnZlcwAAAAoAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAANdG9rZW5fYmFsYW5jZQAAAAAAAAoAAAAAAAAAD3RvdGFsX2xwX2Ftb3VudAAAAAAKAAAAAAAAAA12X3VzZF9iYWxhbmNlAAAAAAAACg==","AAAAAQAAAAAAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAIAAAAAAAAACWxwX2Ftb3VudAAAAAAAAAoAAAAAAAAAC3Jld2FyZF9kZWJ0AAAAAAo=","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),r);this.options=r}fromJSON={initialize:this.txFromJSON,deposit:this.txFromJSON,withdraw:this.txFromJSON,swap_to_v_usd:this.txFromJSON,swap_from_v_usd:this.txFromJSON,claim_rewards:this.txFromJSON,set_fee_share:this.txFromJSON,adjust_total_lp_amount:this.txFromJSON,set_balance_ratio_min_bp:this.txFromJSON,stop_deposit:this.txFromJSON,start_deposit:this.txFromJSON,stop_withdraw:this.txFromJSON,start_withdraw:this.txFromJSON,set_stop_authority:this.txFromJSON,set_bridge:this.txFromJSON,set_admin:this.txFromJSON,set_admin_fee_share:this.txFromJSON,claim_admin_fee:this.txFromJSON,pending_reward:this.txFromJSON,get_pool:this.txFromJSON,get_admin:this.txFromJSON,get_stop_authority:this.txFromJSON,get_bridge:this.txFromJSON,get_user_deposit:this.txFromJSON,upgrade:this.txFromJSON}};g();y();f();import{contract as Qh,rpc as Eo}from"@stellar/stellar-sdk";var za=Eo.Api;function Ht(s){let{simulation:i,options:r}=s;if(!i)throw new Error("Soroban assembled transaction does not have simulation");if(za.isSimulationSuccess(i))return i.result==null?void 0:r.parseResultXdr(i.result.retval);throw new Error(i.error)}function Qt(s){let{simulation:i}=s;if(!i)throw new Error("Soroban assembled transaction does not have simulation");return za.isSimulationError(i)}var pr=class extends Ue{constructor(r,a,o){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=o}chainType="SRB";P=48;async getUserBalanceInfo(r,a){let u=await this.getContract(a.poolAddress).get_user_deposit({user:r});if(Qt(u))throw new O;let m=Ht(u);if(!m)throw new O;let p=m.unwrap();return new xe({lpAmount:p.lp_amount.toString(),rewardDebt:p.reward_debt.toString()})}async getPoolInfoFromChain(r){let o=await this.getContract(r.poolAddress).get_pool();if(Qt(o))throw new O;let u=Ht(o);if(!u)throw new O;let m=u.unwrap();return{aValue:m.a.toString(),accRewardPerShareP:m.acc_reward_per_share_p.toString(),dValue:m.d.toString(),tokenBalance:m.token_balance.toString(),p:this.P,totalLpAmount:m.total_lp_amount.toString(),vUsdBalance:m.v_usd_balance.toString(),imbalance:ke({tokenBalance:m.token_balance.toString(),vUsdBalance:m.v_usd_balance.toString()})}}async buildRawTransactionDeposit(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).deposit({sender:r.accountAddress,amount:BigInt(r.amount)})).toXDR()}async buildRawTransactionWithdraw(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).withdraw({sender:r.accountAddress,amount_lp:BigInt(r.amount)})).toXDR()}async buildRawTransactionClaimRewards(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).claim_rewards({sender:r.accountAddress})).toXDR()}getContract(r,a){let o={publicKey:a,contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new dr(o)}};g();y();f();import{SuiClient as $o}from"@mysten/sui/client";import{Transaction as wr}from"@mysten/sui/transactions";var qt=He(Tt());g();y();f();he();g();y();f();he();import{bcs as qa}from"@mysten/sui/bcs";import{fromB64 as Uo}from"@mysten/sui/utils";function gr(s){return s=V(s),s.startsWith(`${St}::balance::Balance<`)}var Pe=class s{__StructClass=!0;static get $typeName(){return`${St}::balance::Balance`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;value;constructor(i,r){this.$fullTypeName=ee(s.$typeName,...i),this.$typeArgs=i,this.value=r.value}static reified(i){return{typeName:s.$typeName,fullTypeName:ee(s.$typeName,Y(i)),typeArgs:[Y(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([Y(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return ue(s.reified(i))}static get p(){return s.phantom}static get bcs(){return qa.struct("Balance",{value:qa.u64()})}static fromFields(i,r){return s.reified(i).new({value:q("u64",r.value)})}static fromFieldsWithTypes(i,r){if(!gr(r.type))throw new Error("not a Balance type");return ct(r,[i]),s.reified(i).new({value:H("u64",r.fields.value)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{value:this.value.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({value:Q("u64",r.value)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(ee(s.$typeName,Y(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!gr(r.type))throw new Error(`object at ${r.fields.id} is not a Balance object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!gr(r.bcs.type))throw new Error("object at is not a Balance object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=V(a[0]),u=V(Y(i));if(o!==V(Y(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Uo(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching Balance object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!gr(o.data.bcs.type))throw new Error(`object at id ${a} is not a Balance object`);return s.fromSuiObjectData(r,o.data)}};var Bi=He(Tt());g();y();f();he();var wi=He(Tt());import{bcs as fr}from"@mysten/sui/bcs";import{fromB64 as Go}from"@mysten/sui/utils";function yr(s){return s=V(s),s.startsWith(`${wi.PKG_V1}::pool_rewards::PoolRewards<`)}var Wt=class s{__StructClass=!0;static get $typeName(){return`${wi.PKG_V1}::pool_rewards::PoolRewards`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;accRewardPerShareP;adminFeeShareBp;adminFee;rewards;lpSupply;constructor(i,r){this.$fullTypeName=ee(s.$typeName,...i),this.$typeArgs=i,this.accRewardPerShareP=r.accRewardPerShareP,this.adminFeeShareBp=r.adminFeeShareBp,this.adminFee=r.adminFee,this.rewards=r.rewards,this.lpSupply=r.lpSupply}static reified(i){return{typeName:s.$typeName,fullTypeName:ee(s.$typeName,Y(i)),typeArgs:[Y(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([Y(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return ue(s.reified(i))}static get p(){return s.phantom}static get bcs(){return fr.struct("PoolRewards",{acc_reward_per_share_p:fr.u128(),admin_fee_share_bp:fr.u64(),admin_fee:Pe.bcs,rewards:Pe.bcs,lp_supply:fr.u64()})}static fromFields(i,r){return s.reified(i).new({accRewardPerShareP:q("u128",r.acc_reward_per_share_p),adminFeeShareBp:q("u64",r.admin_fee_share_bp),adminFee:q(Pe.reified(i),r.admin_fee),rewards:q(Pe.reified(i),r.rewards),lpSupply:q("u64",r.lp_supply)})}static fromFieldsWithTypes(i,r){if(!yr(r.type))throw new Error("not a PoolRewards type");return ct(r,[i]),s.reified(i).new({accRewardPerShareP:H("u128",r.fields.acc_reward_per_share_p),adminFeeShareBp:H("u64",r.fields.admin_fee_share_bp),adminFee:H(Pe.reified(i),r.fields.admin_fee),rewards:H(Pe.reified(i),r.fields.rewards),lpSupply:H("u64",r.fields.lp_supply)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{accRewardPerShareP:this.accRewardPerShareP.toString(),adminFeeShareBp:this.adminFeeShareBp.toString(),adminFee:this.adminFee.toJSONField(),rewards:this.rewards.toJSONField(),lpSupply:this.lpSupply.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({accRewardPerShareP:Q("u128",r.accRewardPerShareP),adminFeeShareBp:Q("u64",r.adminFeeShareBp),adminFee:Q(Pe.reified(i),r.adminFee),rewards:Q(Pe.reified(i),r.rewards),lpSupply:Q("u64",r.lpSupply)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(ee(s.$typeName,Y(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!yr(r.type))throw new Error(`object at ${r.fields.id} is not a PoolRewards object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!yr(r.bcs.type))throw new Error("object at is not a PoolRewards object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=V(a[0]),u=V(Y(i));if(o!==V(Y(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Go(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching PoolRewards object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!yr(o.data.bcs.type))throw new Error(`object at id ${a} is not a PoolRewards object`);return s.fromSuiObjectData(r,o.data)}};g();y();f();he();var Ci=He(Tt());import{bcs as zt}from"@mysten/sui/bcs";import{fromB64 as Vo}from"@mysten/sui/utils";function hr(s){return s=V(s),s.startsWith(`${Ci.PKG_V1}::pool_state::PoolState<`)}var Nt=class s{__StructClass=!0;static get $typeName(){return`${Ci.PKG_V1}::pool_state::PoolState`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;tokenBalance;vusdBalance;d;a;balanceRatioMinBp;constructor(i,r){this.$fullTypeName=ee(s.$typeName,...i),this.$typeArgs=i,this.tokenBalance=r.tokenBalance,this.vusdBalance=r.vusdBalance,this.d=r.d,this.a=r.a,this.balanceRatioMinBp=r.balanceRatioMinBp}static reified(i){return{typeName:s.$typeName,fullTypeName:ee(s.$typeName,Y(i)),typeArgs:[Y(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([Y(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return ue(s.reified(i))}static get p(){return s.phantom}static get bcs(){return zt.struct("PoolState",{token_balance:zt.u64(),vusd_balance:zt.u64(),d:zt.u64(),a:zt.u64(),balance_ratio_min_bp:zt.u64()})}static fromFields(i,r){return s.reified(i).new({tokenBalance:q("u64",r.token_balance),vusdBalance:q("u64",r.vusd_balance),d:q("u64",r.d),a:q("u64",r.a),balanceRatioMinBp:q("u64",r.balance_ratio_min_bp)})}static fromFieldsWithTypes(i,r){if(!hr(r.type))throw new Error("not a PoolState type");return ct(r,[i]),s.reified(i).new({tokenBalance:H("u64",r.fields.token_balance),vusdBalance:H("u64",r.fields.vusd_balance),d:H("u64",r.fields.d),a:H("u64",r.fields.a),balanceRatioMinBp:H("u64",r.fields.balance_ratio_min_bp)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{tokenBalance:this.tokenBalance.toString(),vusdBalance:this.vusdBalance.toString(),d:this.d.toString(),a:this.a.toString(),balanceRatioMinBp:this.balanceRatioMinBp.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({tokenBalance:Q("u64",r.tokenBalance),vusdBalance:Q("u64",r.vusdBalance),d:Q("u64",r.d),a:Q("u64",r.a),balanceRatioMinBp:Q("u64",r.balanceRatioMinBp)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(ee(s.$typeName,Y(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!hr(r.type))throw new Error(`object at ${r.fields.id} is not a PoolState object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!hr(r.bcs.type))throw new Error("object at is not a PoolState object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=V(a[0]),u=V(Y(i));if(o!==V(Y(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,Vo(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching PoolState object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!hr(o.data.bcs.type))throw new Error(`object at id ${a} is not a PoolState object`);return s.fromSuiObjectData(r,o.data)}};import{bcs as In}from"@mysten/sui/bcs";import{fromB64 as jo}from"@mysten/sui/utils";function Tr(s){return s=V(s),s.startsWith(`${Bi.PKG_V1}::pool::Pool<`)}var br=class s{__StructClass=!0;static get $typeName(){return`${Bi.PKG_V1}::pool::Pool`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;id;state;rewards;feeShareBp;canDeposit;canWithdraw;decimals;balance;constructor(i,r){this.$fullTypeName=ee(s.$typeName,...i),this.$typeArgs=i,this.id=r.id,this.state=r.state,this.rewards=r.rewards,this.feeShareBp=r.feeShareBp,this.canDeposit=r.canDeposit,this.canWithdraw=r.canWithdraw,this.decimals=r.decimals,this.balance=r.balance}static reified(i){return{typeName:s.$typeName,fullTypeName:ee(s.$typeName,Y(i)),typeArgs:[Y(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([Y(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return ue(s.reified(i))}static get p(){return s.phantom}static get bcs(){return In.struct("Pool",{id:Xe.bcs,state:Nt.bcs,rewards:Wt.bcs,fee_share_bp:In.u64(),can_deposit:In.bool(),can_withdraw:In.bool(),decimals:In.u8(),balance:Pe.bcs})}static fromFields(i,r){return s.reified(i).new({id:q(Xe.reified(),r.id),state:q(Nt.reified(i),r.state),rewards:q(Wt.reified(i),r.rewards),feeShareBp:q("u64",r.fee_share_bp),canDeposit:q("bool",r.can_deposit),canWithdraw:q("bool",r.can_withdraw),decimals:q("u8",r.decimals),balance:q(Pe.reified(i),r.balance)})}static fromFieldsWithTypes(i,r){if(!Tr(r.type))throw new Error("not a Pool type");return ct(r,[i]),s.reified(i).new({id:H(Xe.reified(),r.fields.id),state:H(Nt.reified(i),r.fields.state),rewards:H(Wt.reified(i),r.fields.rewards),feeShareBp:H("u64",r.fields.fee_share_bp),canDeposit:H("bool",r.fields.can_deposit),canWithdraw:H("bool",r.fields.can_withdraw),decimals:H("u8",r.fields.decimals),balance:H(Pe.reified(i),r.fields.balance)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{id:this.id,state:this.state.toJSONField(),rewards:this.rewards.toJSONField(),feeShareBp:this.feeShareBp.toString(),canDeposit:this.canDeposit,canWithdraw:this.canWithdraw,decimals:this.decimals,balance:this.balance.toJSONField()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({id:Q(Xe.reified(),r.id),state:Q(Nt.reified(i),r.state),rewards:Q(Wt.reified(i),r.rewards),feeShareBp:Q("u64",r.feeShareBp),canDeposit:Q("bool",r.canDeposit),canWithdraw:Q("bool",r.canWithdraw),decimals:Q("u8",r.decimals),balance:Q(Pe.reified(i),r.balance)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(ee(s.$typeName,Y(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Tr(r.type))throw new Error(`object at ${r.fields.id} is not a Pool object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Tr(r.bcs.type))throw new Error("object at is not a Pool object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=V(a[0]),u=V(Y(i));if(o!==V(Y(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,jo(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching Pool object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!Tr(o.data.bcs.type))throw new Error(`object at id ${a} is not a Pool object`);return s.fromSuiObjectData(r,o.data)}};g();y();f();he();var Ri=He(Tt());import{bcs as Ii}from"@mysten/sui/bcs";import{fromB64 as _o}from"@mysten/sui/utils";function Sr(s){return s=V(s),s.startsWith(`${Ri.PKG_V1}::user_deposit::UserDeposit<`)}var Pr=class s{__StructClass=!0;static get $typeName(){return`${Ri.PKG_V1}::user_deposit::UserDeposit`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=s.$typeName;$fullTypeName;$typeArgs;$isPhantom=s.$isPhantom;id;lpAmount;rewardDebt;constructor(i,r){this.$fullTypeName=ee(s.$typeName,...i),this.$typeArgs=i,this.id=r.id,this.lpAmount=r.lpAmount,this.rewardDebt=r.rewardDebt}static reified(i){return{typeName:s.$typeName,fullTypeName:ee(s.$typeName,Y(i)),typeArgs:[Y(i)],isPhantom:s.$isPhantom,reifiedTypeArgs:[i],fromFields:r=>s.fromFields(i,r),fromFieldsWithTypes:r=>s.fromFieldsWithTypes(i,r),fromBcs:r=>s.fromBcs(i,r),bcs:s.bcs,fromJSONField:r=>s.fromJSONField(i,r),fromJSON:r=>s.fromJSON(i,r),fromSuiParsedData:r=>s.fromSuiParsedData(i,r),fromSuiObjectData:r=>s.fromSuiObjectData(i,r),fetch:async(r,a)=>s.fetch(r,i,a),new:r=>new s([Y(i)],r),kind:"StructClassReified"}}static get r(){return s.reified}static phantom(i){return ue(s.reified(i))}static get p(){return s.phantom}static get bcs(){return Ii.struct("UserDeposit",{id:Xe.bcs,lp_amount:Ii.u64(),reward_debt:Ii.u64()})}static fromFields(i,r){return s.reified(i).new({id:q(Xe.reified(),r.id),lpAmount:q("u64",r.lp_amount),rewardDebt:q("u64",r.reward_debt)})}static fromFieldsWithTypes(i,r){if(!Sr(r.type))throw new Error("not a UserDeposit type");return ct(r,[i]),s.reified(i).new({id:H(Xe.reified(),r.fields.id),lpAmount:H("u64",r.fields.lp_amount),rewardDebt:H("u64",r.fields.reward_debt)})}static fromBcs(i,r){return s.fromFields(i,s.bcs.parse(r))}toJSONField(){return{id:this.id,lpAmount:this.lpAmount.toString(),rewardDebt:this.rewardDebt.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(i,r){return s.reified(i).new({id:Q(Xe.reified(),r.id),lpAmount:Q("u64",r.lpAmount),rewardDebt:Q("u64",r.rewardDebt)})}static fromJSON(i,r){if(r.$typeName!==s.$typeName)throw new Error("not a WithTwoGenerics json object");return tt(ee(s.$typeName,Y(i)),r.$typeArgs,[i]),s.fromJSONField(i,r)}static fromSuiParsedData(i,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Sr(r.type))throw new Error(`object at ${r.fields.id} is not a UserDeposit object`);return s.fromFieldsWithTypes(i,r)}static fromSuiObjectData(i,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Sr(r.bcs.type))throw new Error("object at is not a UserDeposit object");let a=Se(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let o=V(a[0]),u=V(Y(i));if(o!==V(Y(i)))throw new Error(`type argument mismatch: expected '${u}' but got '${o}'`);return s.fromBcs(i,_o(r.bcs.bcsBytes))}if(r.content)return s.fromSuiParsedData(i,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(i,r,a){let o=await i.getObject({id:a,options:{showBcs:!0}});if(o.error)throw new Error(`error fetching UserDeposit object at id ${a}: ${o.error.code}`);if(o.data?.bcs?.dataType!=="moveObject"||!Sr(o.data.bcs.type))throw new Error(`object at id ${a} is not a UserDeposit object`);return s.fromSuiObjectData(r,o.data)}};g();y();f();function ts(s,i,r){if(i.length===0||!i[0])return[];let a=i[0],o=s.reduce((p,h)=>p+BigInt(h),BigInt(0)),u=BigInt(a.balance),m=[];for(let p of i.slice(1)){if(u>o)return es(r,a,m,s);u+=BigInt(p.balance),m.push(p)}return u>=o?es(r,a,m,s):[]}function es(s,i,r,a){let o=a.map(u=>s.pure.u64(u));return r.length>0&&s.mergeCoins(i.coinObjectId,r.map(u=>u.coinObjectId)),s.splitCoins(i.coinObjectId,o)}g();y();f();var Zo="0x0000000000000000000000000000000000000000000000000000000000000000";async function ns(s,i,r){let a=await s.devInspectTransactionBlock({sender:Zo,transactionBlock:i});if(a.effects.status.status!=="success")throw new Error(`inspectionResult failed. ${JSON.stringify(a,null,2)}`);let o=a.results?.pop()?.returnValues?.pop();if(!o)throw new Error(`Something with inspectionResult went wrong. ${JSON.stringify(a,null,2)}`);let[u,m]=o;return typeof r=="object"?r.fromBcs(Uint8Array.from(u)).toJSONField():Pn(r).parse(Uint8Array.from(u))}var Cr=class extends Ue{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.client=new $o({url:r})}chainType="SUI";client;async getUserBalanceInfo(r,a){if(!a.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=a.suiAddresses;if(!o)throw new O("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 O("Deposits fetch failed")},{lpAmount:BigInt(0),rewardDebt:BigInt(0)});return new xe({lpAmount:m.lpAmount.toString(),rewardDebt:m.rewardDebt.toString()})}async fetchDeposits(r,a){return await At(o=>this.client.getOwnedObjects({owner:r,filter:{StructType:Pr.phantom(ue(a)).phantomType},options:{showContent:!0},cursor:o}))}async getPoolInfoFromChain(r){let a=r.suiAddresses;if(!a)throw new O("SUI token must contain 'suiAddresses'");if((0,qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=48,u=new wr;Ea(u,r.originTokenAddress,a.bridgeObjectAddress);let m=await ns(this.client,u,br.reified(ue(r.originTokenAddress))),p=m.state.tokenBalance,h=m.state.vusdBalance,T=ke({tokenBalance:p,vUsdBalance:h});return{dValue:m.state.d,aValue:m.state.a,totalLpAmount:m.rewards.lpSupply,vUsdBalance:h,tokenBalance:p,accRewardPerShareP:m.rewards.accRewardPerShareP,p:o,imbalance:T}}async buildRawTransactionDeposit(r){let a=r.token.suiAddresses;if(!a)throw new O("SUI token must contain 'suiAddresses'");if((0,qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=await At(w=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:w}));if(o.length===0||!o[0])throw new ut("No coins to deposit");let u=o[0],m=new wr;m.setSender(r.accountAddress);let{depositObj:p,isNewDeposit:h}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,m),[T]=ts([r.amount],o,m);if(!T)throw new ut("No coins to deposit");if(!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let S=Da(m,r.token.originTokenAddress,{bridge:a.bridgeObjectAddress,userDeposit:p,coin:T});return m.mergeCoins(u.coinObjectId,[S]),h&&m.transferObjects([p],r.accountAddress),await m.toJSON({client:this.client})}async getDepositObject(r,a,o){let u=await this.fetchDeposits(r,a);if(u.length===0||!u[0]){let m=ue(a).phantomType;return{depositObj:Ua(o,m),isNewDeposit:!0}}else{if(u[0].data?.objectId)return{depositObj:u[0].data.objectId,isNewDeposit:!1};throw new O("Something went wrong while deposit")}}async buildRawTransactionWithdraw(r){let a=r.token.suiAddresses;if(!a)throw new O("SUI token must contain 'suiAddresses'");if((0,qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=ue(r.token.originTokenAddress).phantomType,u=new wr;u.setSender(r.accountAddress);let{depositObj:m,isNewDeposit:p}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,u);if(p)throw new ut("No deposit found");let h=Wa(u,o,{bridge:a.bridgeObjectAddress,userDeposit:m,amountLp:BigInt(r.amount)}),T=await At(S=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:S}));if(!h[0]||!h[1])throw new O("No rewards found");return T[0]?u.mergeCoins(T[0].coinObjectId,[h[0],h[1]]):(u.mergeCoins(h[0],[h[1]]),u.transferObjects([h[0]],r.accountAddress)),await u.toJSON({client:this.client})}async buildRawTransactionClaimRewards(r){let a=r.token.suiAddresses;if(!a)throw new O("SUI token must contain 'suiAddresses'");if((0,qt.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");let o=ue(r.token.originTokenAddress).phantomType,u=new wr;u.setSender(r.accountAddress);let{depositObj:m,isNewDeposit:p}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,u);if(p)throw new ut("No deposit found");let h=Na(u,o,{bridge:a.bridgeObjectAddress,userDeposit:m}),T=await At(S=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:S}));return T[0]?u.mergeCoins(T[0].coinObjectId,[h]):u.transferObjects([h],r.accountAddress),await u.toJSON({client:this.client})}};g();y();f();import{Web3 as Br}from"web3";import{encodeFunctionCall as Yo}from"web3-eth-abi";var Rn=class extends Ue{constructor(r,a,o){super();this.tronWeb=r;this.api=a;this.tronJsonRpc=o}chainType="TRX";P=52;async getUserBalanceInfo(r,a){let o;if(this.tronJsonRpc)try{o=await this.getUserBalanceInfoByBatch(this.tronJsonRpc,r,a)}catch{o=await this.getUserBalanceInfoPerProperty(r,a)}else o=await this.getUserBalanceInfoPerProperty(r,a);return o}async getUserBalanceInfoByBatch(r,a,o){let u=yn(o.poolAddress),m=yn(a),p=[{jsonrpc:"2.0",id:1,method:"eth_call",params:[{to:u,data:this.getFunctionAbi("userRewardDebt",m)},"latest"]},{jsonrpc:"2.0",id:2,method:"eth_call",params:[{to:u,data:this.getFunctionAbi("balanceOf",m)},"latest"]}],T=await(await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(p)})).json();if(Array.isArray(T)&&T.length===2){let S=w=>{let x=T.find(v=>v.id===w);if(!x||!x.result)throw new Error(`Missing or invalid result for id ${w}`);return Br.utils.toBigInt(x.result).toString()};return new xe({lpAmount:Br.utils.toBigInt(S(2)).toString(),rewardDebt:Br.utils.toBigInt(S(1)).toString()})}throw new Error("Batched HTTP call failed")}async getUserBalanceInfoPerProperty(r,a){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(r);let o=this.getContract(a.poolAddress),u=(await o.methods.userRewardDebt(r).call()).toString(),m=(await o.methods.balanceOf(r).call()).toString();return new xe({lpAmount:m,rewardDebt:u})}async getPoolInfoFromChain(r){let a;if(this.tronJsonRpc)try{a=await this.getPoolInfoByBatch(this.tronJsonRpc,r)}catch{a=await this.getPoolInfoPerProperty(r)}else a=await this.getPoolInfoPerProperty(r);return a}async getPoolInfoByBatch(r,a){let o=yn(a.poolAddress),u=[{jsonrpc:"2.0",id:1,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("a")},"latest"]},{jsonrpc:"2.0",id:2,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("d")},"latest"]},{jsonrpc:"2.0",id:3,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("tokenBalance")},"latest"]},{jsonrpc:"2.0",id:4,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("vUsdBalance")},"latest"]},{jsonrpc:"2.0",id:5,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("totalSupply")},"latest"]},{jsonrpc:"2.0",id:6,method:"eth_call",params:[{to:o,data:this.getFunctionAbi("accRewardPerShareP")},"latest"]}],p=await(await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)})).json();if(Array.isArray(p)&&p.length===6){let h=x=>{let v=p.find(M=>M.id===x);if(!v||!v.result)throw new Error(`Missing or invalid result for id ${x}`);return Br.utils.toBigInt(v.result).toString()},T=h(3),S=h(4),w=ke({tokenBalance:T,vUsdBalance:S});return{aValue:h(1),dValue:h(2),tokenBalance:T,vUsdBalance:S,totalLpAmount:h(5),accRewardPerShareP:h(6),p:this.P,imbalance:w}}throw new Error("Batched pool info call failed")}async getPoolInfoPerProperty(r){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(r.poolAddress);let a=this.getContract(r.poolAddress),[o,u,m,p,h,T]=await Promise.all([a.methods.a().call(),a.methods.d().call(),a.methods.tokenBalance().call(),a.methods.vUsdBalance().call(),a.methods.totalSupply().call(),a.methods.accRewardPerShareP().call()]),S=m.toString(),w=p.toString(),x=ke({tokenBalance:S,vUsdBalance:w});return{aValue:o.toString(),dValue:u.toString(),tokenBalance:S,vUsdBalance:w,totalLpAmount:h.toString(),accRewardPerShareP:T.toString(),p:this.P,imbalance:x}}buildRawTransactionDeposit(r){let{amount:a,accountAddress:o}=r,u=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.poolAddress,"deposit(uint256)",u,"0",o)}buildRawTransactionWithdraw(r){let{amount:a,accountAddress:o}=r,u=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.poolAddress,"withdraw(uint256)",u,"0",o)}buildRawTransactionClaimRewards(r){let{accountAddress:a}=r,o=[];return this.buildRawTransaction(r.token.poolAddress,"claimRewards()",o,"0",a)}async buildRawTransaction(r,a,o,u,m){let p=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+u},o,m);if(!p?.result?.result)throw new O("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}getContract(r){return this.tronWeb.contract(Cn.abi,r)}getFunctionAbi(r,...a){let o=Cn.abi.find(u=>u.type==="function"&&"name"in u&&u.name===r);if(!o)throw new Error(`${r} method not found in Pool ABI`);return Yo(o,a)}};var Ir=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o;this.rawTxBuilder=new mr(i,r,this.params,o);let u=a.cachePoolInfoChainSec>0?a.cachePoolInfoChainSec*1e3:20*1e3;this.cache=new Lo({defaultTtl:u})}rawTxBuilder;cache;async getAllowance(i,r){if(r){let a=i,o=r;return await this.tokenService.getAllowance({...o,spender:o.token.poolAddress},a)}else{let a=i;return await this.tokenService.getAllowance({...a,spender:a.token.poolAddress})}}async checkAllowance(i,r){if(r){let a=i,o=r;return this.tokenService.checkAllowance({...o,spender:o.token.poolAddress},a)}else{let a=i;return this.tokenService.checkAllowance({...a,spender:a.token.poolAddress})}}async approve(i,r){return this.tokenService.approve(i,{...r,spender:r.token.poolAddress})}async getAmountToBeDeposited(i,r,a){K(i),z("amount",i,r.decimals);let o=await this.getPoolInfoFromChain(r,a),{vUsdBalance:u,tokenBalance:m,aValue:p,dValue:h}=o,T=Ka(i,p,h,m,u);return j(T,3).toFixed()}async getAmountToBeWithdrawn(i,r,a,o){K(i),z("amount",i,a.decimals);let u=await this.getPoolInfoFromChain(a,o),m=Ha(i),p=We(m,a.decimals),T=(await this.getUserBalanceInfo(r,a,o)).earned(u)||"0",S=Jo(p).plus(T).toFixed();return j(S,a.decimals).toFixed()}async getUserBalanceInfo(i,r,a){return Kt(r.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,a).getUserBalanceInfo(i,r)}async getPoolInfoFromChain(i,r){let a={chainSymbol:i.chainSymbol,poolAddress:i.poolAddress},o=this.cache.get(a);if(o)return o;{let u=await Kt(i.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).getPoolInfoFromChain(i);return this.cache.put(a,u),this.api.cachePut({chainSymbol:i.chainSymbol,poolAddress:i.poolAddress},u),u}}};function Kt(s,i,r,a,o){switch(X.getChainProperty(s).chainType){case"EVM":{if(o)return new Bn(o,i);{let u=r.getNodeRpcUrl(s),m=new Qo(u);return m.defaultReturnFormat={number:Ho.STR,bytes:Ko.HEX},new Bn(m,i)}}case"TRX":{let u=r.getNodeRpcUrl(s),m=a.tronJsonRpc;if(o)return new Rn(o,i,m);{let p=new Xo({fullHost:u});return new Rn(p,i,m)}}case"SOLANA":{let u=r.getNodeRpcUrl(s);return new lr(u,i)}case"SRB":return new pr(r,a,i);case"SUI":return new Cr(r.getNodeRpcUrl(s),i)}}g();y();f();g();y();f();import{TronWeb as ec}from"tronweb";import{FMT_BYTES as tc,FMT_NUMBER as nc,Web3 as rc}from"web3";g();y();f();g();y();f();var zo={abi:[{inputs:[{internalType:"string",name:"tokenName_",type:"string"},{internalType:"string",name:"tokenSymbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"lpAmount",type:"uint256"}],name:"Deposited",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"token",type:"address"}],name:"DepositedRewards",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256[4]",name:"values",type:"uint256[4]"}],name:"MultiTransfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdrawn",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"NUM_TOKENS",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"minVirtualAmount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"depositRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"}],name:"getEstimatedAmountOnDeposit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"getRewardsAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"virtualAmount",type:"uint256"}],name:"getWithdrawProportionAmount",outputs:[{internalType:"uint256[4]",name:"",type:"uint256[4]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"pools",outputs:[{internalType:"contract IPool",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"},{internalType:"contract IPool",name:"pool",type:"address"}],name:"setPool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subBalanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"subDepositRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"subTotalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subTransfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subTransferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"virtualAmount",type:"uint256"},{internalType:"uint256",name:"index",type:"uint256"}],name:"subWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"tokens",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"virtualAmount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Rr=zo;g();y();f();g();y();f();g();y();f();var Et=class{};var vn=class extends Et{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";async balanceOf(r){let a=(await this.getYieldContract(r.token.yieldAddress).methods.balanceOf(r.owner).call()).toString();return j(a,3).toFixed()}async getEstimatedAmountOnDeposit(r){let a=Z(r.amount,r.token.decimals).toFixed(),o=(await this.getYieldContract(r.token.yieldAddress).methods.getEstimatedAmountOnDeposit(a,r.token.yieldId).call()).toString();return j(o,3).toFixed()}async getWithdrawProportionAmount(r){let a=Z(r.amount,3).toFixed();return await this.getYieldContract(r.cydToken.yieldAddress).methods.getWithdrawProportionAmount(r.owner,a).call()}async buildRawTransactionDeposit(r){return Promise.resolve({...this.buildTxParams({owner:r.owner,yieldAddress:r.token.yieldAddress}),data:this.getYieldContract(r.token.yieldAddress).methods.deposit(r.amount,r.token.yieldId,r.minVirtualAmount).encodeABI()})}async buildRawTransactionWithdraw(r){return Promise.resolve({...this.buildTxParams({owner:r.owner,yieldAddress:r.token.yieldAddress}),data:this.getYieldContract(r.token.yieldAddress).methods.withdraw(r.amount).encodeABI()})}buildTxParams(r){return{from:r.owner,to:r.yieldAddress,value:"0"}}getYieldContract(r){return new this.web3.eth.Contract(Rr.abi,r)}};g();y();f();var vr=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o}async approve(i,r){return this.tokenService.buildRawTransactionApprove({...i,spender:i.token.yieldAddress},r)}async deposit(i,r){return K(i.amount),z("amount",i.amount,i.token.decimals),K(i.minVirtualAmount),z("minVirtualAmount",i.minVirtualAmount,3),i.amount=Z(i.amount,i.token.decimals).toFixed(),i.minVirtualAmount=Z(i.minVirtualAmount,3).toFixed(),en(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,i.owner,r).buildRawTransactionDeposit(i)}async withdraw(i,r){return K(i.amount),z("amount",i.amount,3),i.amount=Z(i.amount,3).toFixed(),en(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,i.owner,r).buildRawTransactionWithdraw(i)}};g();y();f();var kn=class extends Et{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async balanceOf(r){let a=(await(await this.getContract(r.token.yieldAddress)).methods.balanceOf(r.owner).call()).toString();return j(a,3).toFixed()}async getEstimatedAmountOnDeposit(r){let a=Z(r.amount,r.token.decimals).toFixed(),o=(await(await this.getContract(r.token.yieldAddress)).methods.getEstimatedAmountOnDeposit(a,r.token.yieldId).call()).toString();return j(o,3).toFixed()}async getWithdrawProportionAmount(r){let a=Z(r.amount,3).toFixed();return(await(await this.getContract(r.cydToken.yieldAddress)).methods.getWithdrawProportionAmount(r.owner,a).call()).toString().split(",")}async buildRawTransactionDeposit(r){let{amount:a,owner:o,token:u,minVirtualAmount:m}=r,p=[{type:"uint256",value:a},{type:"uint256",value:u.yieldId},{type:"uint256",value:m}];return this.buildRawTransaction(r.token.yieldAddress,"deposit(uint256,uint256,uint256)",p,"0",o)}async buildRawTransactionWithdraw(r){let{amount:a,owner:o}=r,u=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.yieldAddress,"withdraw(uint256)",u,"0",o)}async buildRawTransaction(r,a,o,u,m){let p=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+u},o,m);if(!p?.result?.result)throw new O("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}getContract(r){return this.tronWeb.contract(Rr.abi,r)}};g();y();f();function qo(s){if(!kr(s))throw new Zn("Token does not support Yield")}function kr(s){return!!s.yieldAddress&&s.yieldId!==void 0}var xr=class{constructor(i,r,a,o){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=o;this.rawTxBuilder=new vr(i,r,a,o)}rawTxBuilder;async getCYDTokens(){let i=[],r=await this.api.getChainDetailsMap("pool");return Object.values(r).forEach(a=>{if(a.yieldAddress){let o=a.tokens.find(m=>m.tokenAddress===a.yieldAddress),u=a.tokens.filter(kr);if(u.length>0){let m=o??{allbridgeChainId:a.allbridgeChainId,apr:"",apr30d:"",apr7d:"",bridgeAddress:a.bridgeAddress,chainId:a.chainId,chainName:a.name,chainSymbol:a.chainSymbol,chainType:a.chainType,confirmations:a.confirmations,decimals:3,feeShare:"",lpRate:"",name:"Core Yield",poolAddress:"",symbol:"CYD",tokenAddress:a.yieldAddress,transferTime:{},txCostAmount:{maxAmount:"0",swap:"0",transfer:"0"},yieldAddress:a.yieldAddress};i.push({...m,yieldAddress:a.yieldAddress,tokens:u})}}}),i}async getAllowance(i,r){return await this.tokenService.getAllowance({...i,spender:i.token.yieldAddress},r)}async checkAllowance(i,r){return this.tokenService.checkAllowance({...i,spender:i.token.yieldAddress},r)}async balanceOf(i,r){return en(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,i.owner,r).balanceOf(i)}async getEstimatedAmountOnDeposit(i,r){return K(i.amount),z("amount",i.amount,i.token.decimals),en(i.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,i.token.yieldAddress,r).getEstimatedAmountOnDeposit(i)}async getWithdrawAmounts(i,r){K(i.amount),z("amount",i.amount,3);let a=await en(i.cydToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,i.owner,r).getWithdrawProportionAmount(i);return i.cydToken.tokens.filter(o=>a[o.yieldId]!==void 0).map(o=>({amount:j(a[o.yieldId],o.decimals).toFixed(),token:o}))}};function en(s,i,r,a,o){switch(X.getChainProperty(s).chainType){case"EVM":{if(o)return new vn(o,i);{let u=r.getNodeRpcUrl(s),m=new rc(u);return m.defaultReturnFormat={number:nc.STR,bytes:tc.HEX},new vn(m,i)}}case"TRX":{if(o)return new kn(o,i);{let u=r.getNodeRpcUrl(s),m=new ec({fullHost:u});return m.setAddress(a),new kn(m,i)}}case"SOLANA":throw new Ae;case"SRB":throw new Ae;case"SUI":throw new Ae}}g();y();f();import{Big as de}from"big.js";function as(s,i,r){let a=ic(s,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo),o=ac(a.amountIncludingCommissionInSystemPrecision,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:o}}function ss(s,i,r){let a=sc(s,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo),o=oc(a.amountIncludingCommissionInSystemPrecision,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:o}}function ic(s,{feeShare:i,decimals:r},a){let o=de(s),u=o.times(i),m=o.minus(u);return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInSystemPrecision:rs(xt(m,r),a),amountExcludingCommissionInSystemPrecision:rs(xt(o,r),a)}}function rs(s,i){if(s.eq(0))return"0";let r=de(i.tokenBalance).plus(s),a=at(r.toFixed(),i.aValue,i.dValue);return de(i.vUsdBalance).minus(a).round().toFixed()}function ac(s,{feeShare:i,decimals:r},a){if(de(s).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let u=de(s).plus(a.vUsdBalance),m=at(u,a.aValue,a.dValue),p=We(de(a.tokenBalance).minus(m),r),h=de(p).times(i),T=de(p).minus(h).round();return{bridgeFeeInTokenPrecision:h.round().toFixed(),amountIncludingCommissionInTokenPrecision:T.toFixed(),amountExcludingCommissionInTokenPrecision:p.toFixed()}}function sc(s,{feeShare:i,decimals:r},a){let o=de(i).div(de(1).minus(i)),u=de(s).times(o),m=de(s).plus(u);return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInSystemPrecision:is(xt(m,r),a),amountExcludingCommissionInSystemPrecision:is(xt(s,r),a)}}function is(s,i){let r=de(i.tokenBalance).minus(s),a=at(r.toFixed(),i.aValue,i.dValue);return de(a).minus(i.vUsdBalance).round().toFixed()}function oc(s,{feeShare:i,decimals:r},a){if(de(s).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let o=de(a.vUsdBalance).minus(s),u=at(o.toFixed(),a.aValue,a.dValue),m=de(u).minus(a.tokenBalance),p=We(m.toFixed(),r),h=de(i).div(de(1).minus(i)),T=de(p).times(h),S=de(p).plus(T);return{bridgeFeeInTokenPrecision:T.round().toFixed(),amountIncludingCommissionInTokenPrecision:S.round().toFixed(),amountExcludingCommissionInTokenPrecision:p.toFixed()}}g();y();f();import{Big as Ct}from"big.js";function os(s,i,r,a,o){let u=it(s,i,r),m=We(u,i.decimals),p=fn(u,a,o),h=Ct(s).times(i.feeShare),T=Ct(p).div(Ct(1).minus(a.feeShare)).minus(p);return{sourceLPSwap:{fee:j(h,i.decimals).neg().round(i.decimals,Ct.roundUp).toFixed(),swap:j(Ct(s).minus(m).minus(h),i.decimals).neg().round(i.decimals,Ct.roundUp).toFixed()},destLPSwap:{fee:j(T,a.decimals).neg().round(a.decimals,Ct.roundUp).toFixed(),swap:j(We(u,a.decimals).minus(p).minus(T),a.decimals).neg().round(a.decimals,Ct.roundUp).toFixed()}}}g();y();f();g();y();f();g();y();f();g();y();f();import dc from"axios";g();y();f();var cs="3.25.0-alpha.1";g();y();f();function As(s){return Object.entries(s).reduce((i,r)=>{let a=r[0],o=r[1],u=lc(a,o);return u&&(i[a]=u),i},{})}function us(s){let i={};for(let[r,a]of Object.entries(s)){let o=r;for(let u of a.tokens){let m=tn({chainSymbol:o,poolAddress:u.poolAddress}),p=ke(u.poolInfo);i[m]={...u.poolInfo,imbalance:p}}}return i}function cc(s,i){let{name:r,...a}=s,{poolInfo:o,...u}=i;return{...u,...a,chainName:r}}function Ac(s){switch(s){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;case"cctpV2":return 4;case"oft":return 5}}function uc(s){return Object.entries(s).reduce((i,[r,a])=>(i[r]=mc(a),i),{})}function mc(s){return Object.entries(s).reduce((i,[r,a])=>{let o=Ac(r);return o&&a!=null&&(i[o]=a),i},{})}function lc(s,i){let r=X.getChainsProperties()[s];if(!r)return null;let a={...r,allbridgeChainId:i.chainId,bridgeAddress:i.bridgeAddress,oftBridgeAddress:i.oftBridgeAddress,yieldAddress:i.yieldAddress,transferTime:uc(i.transferTime),txCostAmount:i.txCostAmount,confirmations:i.confirmations,suiAddresses:i.suiAddresses};return{...a,tokens:i.tokens.map(o=>cc(a,o))}}function tn(s){return s.chainSymbol+"_"+s.poolAddress}function ms(s){let i=[];for(let[r,a]of Object.entries(s)){let o=r;for(let u of a.tokens)i.push({chainSymbol:o,poolAddress:u.poolAddress})}return i}function ls(s){let i={};for(let[r,a]of Object.entries(s)){let o=r;for(let[u,m]of Object.entries(a))m.imbalance=ke(m),i[tn({chainSymbol:o,poolAddress:u})]=m}return i}var nn=class{api;constructor(i){this.api=dc.create({baseURL:i.coreApiUrl,headers:{Accept:"application/json",...i.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+cs},params:i.coreApiQueryParams})}async getTokenInfo(){let{data:i}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:As(i),poolInfoMap:us(i)}}async getPendingInfo(){let{data:i}=await this.api.get("/pending-info");return i}async getGasBalance(i,r){let{data:a}=await this.api.get(`/check/${i}/${r}`);return a}async getTransferStatus(i,r){let{data:a}=await this.api.get(`/chain/${i}/${r}`);return a}async getReceiveTransactionCost(i){if(i.messenger===5&&!i.sourceToken)throw new Gn("For OFT sourceToken required");let{data:r}=await this.api.post("/receive-fee",i,{headers:{"Content-Type":"application/json"}});return{exchangeRate:r.exchangeRate,fee:r.fee,sourceNativeTokenPrice:r.sourceNativeTokenPrice,adminFeeShareWithExtras:r.adminFeeShareWithExtras}}async getPoolInfoMap(i){let r=i instanceof Array?i:[i],{data:a}=await this.api.post("/pool-info",{pools:r},{headers:{"Content-Type":"application/json"}});return ls(a)}};g();y();f();import Fr from"timed-cache";var vi=20*1e3,pc=55*1e3,rn=class{constructor(i){this.apiClient=i;this.tokenInfoCache=new Fr({defaultTtl:pc}),this.receivedTransactionCache=new Fr({defaultTtl:vi}),this.pendingInfoCache=new Fr({defaultTtl:vi}),this.gasBalanceCache=new Fr({defaultTtl:vi})}tokenInfoCache;pendingInfoCache;gasBalanceCache;receivedTransactionCache;getTokenInfo(){let i="TOKEN_INFO_CACHE_KEY",r=this.tokenInfoCache.get(i);if(r)return r;let a=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(i,a),a}async getGasBalance(i,r){let a=`GAS_BALANCE_${i}_${r}`,o=this.gasBalanceCache.get(a);if(o)return o;let u=this.apiClient.getGasBalance(i,r);return this.gasBalanceCache.put(a,u),u}async getPendingInfo(){let i="PENDING_INFO_CACHE_KEY",r=this.pendingInfoCache.get(i);if(r)return r;let a=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(i,a),a}async getReceiveTransactionCost(i){let r=`RECEIVE_TX_COST_${i.sourceChainId}_${i.destinationChainId}_${i.messenger}${i.sourceToken?"_"+i.sourceToken:""}`,a=this.receivedTransactionCache.get(r);if(a)return a;let o=await this.apiClient.getReceiveTransactionCost(i);return this.receivedTransactionCache.put(r,o),o}async getTransferStatus(i,r){return this.apiClient.getTransferStatus(i,r)}async getPoolInfoMap(i){return this.apiClient.getPoolInfoMap(i)}};g();y();f();var an=class{constructor(i){this.apiClient=i}async getChainDetailsMap(){return(await this.apiClient.getTokenInfo()).chainDetailsMap}async tokens(){let i=await this.getChainDetailsMap();return Object.values(i).flatMap(r=>r.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(i,r){return this.apiClient.getGasBalance(i,r)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(i,r){return await this.apiClient.getTransferStatus(i,r)}async getReceiveTransactionCost(i){return await this.apiClient.getReceiveTransactionCost(i)}async getPoolInfoMap(i){return await this.apiClient.getPoolInfoMap(i)}};g();y();f();var sn=class{constructor(i,r){this.client=i;this.isStaging=r.coreApiQueryParams?.staging==="true"}isStaging;async getChainDetailsMap(i){let r=await this.client.getChainDetailsMap(),a={};for(let o in r){let u=r[o];u&&(a[o]={...u,tokens:ds(u.tokens,i,this.isStaging)})}return a}async tokens(i){return ds(await this.client.tokens(),i,this.isStaging)}async getPendingInfo(){return this.client.getPendingInfo()}async getGasBalance(i,r){return this.client.getGasBalance(i,r)}async getTransferStatus(i,r){return await this.client.getTransferStatus(i,r)}async getReceiveTransactionCost(i){return await this.client.getReceiveTransactionCost(i)}cachePut(i,r){return this.client.cachePut(i,r)}getPoolInfoByKey(i){return this.client.getPoolInfoByKey(i)}refreshPoolInfo(i){return this.client.refreshPoolInfo(i)}};function ds(s,i,r){return s.filter(a=>r?!0:a.flags[i]).map(gc)}function gc(s){let{flags:i,...r}=s;return r}g();y();f();import fc from"timed-cache";var yc=55*1e3,on=class{constructor(i){this.client=i;this.poolInfoCache=new ki}poolInfoCache;async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(i,r){return this.client.getTransferStatus(i,r)}getReceiveTransactionCost(i){return this.client.getReceiveTransactionCost(i)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(i,r){return this.client.getGasBalance(i,r)}async getPoolInfoByKey(i){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let r=this.poolInfoCache.get(i);if(r)return r;{let a=await this.client.getPoolInfoMap(i);this.poolInfoCache.putAll(a);let o=a[tn(i)];if(o)return o;throw new O("Cannot find pool info for "+i.poolAddress+" on chain "+i.chainSymbol)}}async refreshPoolInfo(i){let r;if(i)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),r=await this.client.getPoolInfoMap(i);else{let a=await this.client.getChainDetailsMapAndPoolInfoMap();r=await this.client.getPoolInfoMap(ms(a.chainDetailsMap))}this.poolInfoCache.putAll(r)}cachePut(i,r){this.poolInfoCache.put(tn(i),r)}},ki=class{cache;constructor(){this.cache=new fc({defaultTtl:yc})}putAll(i){for(let[r,a]of Object.entries(i))this.cache.put(r,a)}putAllIfNotExists(i){for(let[r,a]of Object.entries(i))this.cache.get(r)||this.cache.put(r,a)}put(i,r){this.cache.put(i,r)}get(i){let r=tn(i);return this.cache.get(r)}};g();y();f();import{Big as Rc}from"big.js";import{TronWeb as vc}from"tronweb";import{Web3 as kc}from"web3";g();y();f();g();y();f();var hc={abi:[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}]},Mr=hc;g();y();f();g();y();f();g();y();f();import{Big as ps}from"big.js";var Ge=class{async checkAllowance(i){let r=await this.getAllowance(i);return ps(r).gte(ps(i.amount))}};var Tc="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",bc="0xdac17f958d2ee523a2206206994597c13d831ec7",Sc=1e5,xn=class extends Ge{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";getAllowance(r){let a=r.token.tokenAddress,o=r.owner,u=r.spender;return this.getAllowanceByTokenAddress(a,o,u)}getAllowanceByTokenAddress(r,a,o){return this.getERC20Contract(r).methods.allowance(a,o).call()}async getTokenBalance(r){return await this.getERC20Contract(r.token.tokenAddress).methods.balanceOf(r.account).call()}async getNativeTokenBalance(r){return(await this.web3.eth.getBalance(r.account)).toString()}async approve(r){if(this.isUsdt(r.tokenAddress)&&await this.getAllowanceByTokenAddress(r.tokenAddress,r.owner,r.spender)!=="0"){let u=await this.buildRawTransactionApprove({...r,amount:"0"});await this.sendRawTransaction(u,r.chainSymbol)}let a=await this.buildRawTransactionApprove(r);return await this.sendRawTransaction(a,r.chainSymbol)}isUsdt(r){return r.toLowerCase()===bc}buildRawTransactionApprove(r){let{tokenAddress:a,spender:o,owner:u,amount:m}=r,h=this.getERC20Contract(a).methods.approve(o,m==null?Tc:cr(m));return Promise.resolve({from:u,to:a,value:"0",data:h.encodeABI()})}async sendRawTransaction(r,a){let o=r,u={maxPriorityFeePerGas:void 0,maxFeePerGas:void 0};a==="POL"?o.gas=Sc:o.gas=await this.web3.eth.estimateGas(r);let{transactionHash:m}=await this.web3.eth.sendTransaction({...o,...u});return{txId:m.toString()}}getERC20Contract(r){return new this.web3.eth.Contract(Mr.abi,r)}};g();y();f();import{AnchorProvider as Pc}from"@project-serum/anchor";import{Connection as wc,PublicKey as Or}from"@solana/web3.js";var Dr=class extends Ge{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";approve(r){throw new Ae}buildRawTransactionApprove(r){throw new Ae}buildAnchorProvider(r){let a=new wc(this.solanaRpcUrl,"confirmed"),o=new Or(r);return new Pc(a,{publicKey:o},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(r){throw new Ae}async getTokenBalance(r){let{account:a,token:o}=r;try{let u=await Qe(new Or(a),new Or(o.tokenAddress));return(await $t(u,this.buildAnchorProvider(a))).amount.toString()}catch(u){if(u instanceof Error)return u.message.startsWith("Account does not exist"),"0";throw u}}async getNativeTokenBalance(r){return(await this.buildAnchorProvider(r.account).connection.getBalance(new Or(r.account))).toString()}};g();y();f();import{Horizon as nI,NotFoundError as Cc}from"@stellar/stellar-sdk";var Wr=class extends Ge{constructor(r,a,o){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=o}chainType="SRB";getAllowance(){throw new Ae}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new O("OriginTokenAddress missing");let[a,o]=r.token.originTokenAddress.split(":"),u=new nI.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),m;try{m=await u.loadAccount(r.account)}catch(T){if(T instanceof Cc)return"0";throw T}let h=m.balances.find(T=>(T.asset_type==="credit_alphanum4"||T.asset_type==="credit_alphanum12")&&T.asset_code==a&&T.asset_issuer==o);return h?.balance?Z(h.balance,X.getChainDecimalsByType(X.getChainProperty(r.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(r){let m=(await new nI.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(r.account)).balances.find(p=>p.asset_type==="native");return m?.balance?Z(m.balance,X.getChainDecimalsByType(X.getChainProperty(r.chainSymbol).chainType)).toFixed():"0"}approve(){throw new Ae}buildRawTransactionApprove(){throw new Ae}};g();y();f();import{SuiClient as Bc}from"@mysten/sui/client";var Nr=class extends Ge{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.suiClient=new Bc({url:this.suiRpcUrl})}chainType="SUI";suiClient;approve(r){throw new Ae}buildRawTransactionApprove(r){throw new Ae}getAllowance(r){throw new Ae}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new O("SUI token must contain 'originTokenAddress'");return(await this.suiClient.getBalance({owner:r.account,coinType:r.token.originTokenAddress})).totalBalance}async getNativeTokenBalance(r){let a=await At(o=>this.suiClient.getCoins({owner:r.account,cursor:o}));return a.length===0?"0":a.reduce((o,u)=>o+BigInt(u.balance),BigInt(0)).toString()}};g();y();f();var Ic="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Fn=class extends Ge{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async getAllowance(r){let{token:{tokenAddress:a},owner:o}=r;return(await(await this.getContract(a)).methods.allowance(o,r.spender).call()).toString()}async getTokenBalance(r){return(await(await this.getContract(r.token.tokenAddress)).balanceOf(r.account).call()).toString()}async getNativeTokenBalance(r){return(await this.tronWeb.trx.getBalance(r.account)).toString()}async approve(r){let a=await this.buildRawTransactionApprove(r);return await Ar(this.tronWeb,a)}async buildRawTransactionApprove(r){let{tokenAddress:a,spender:o,owner:u,amount:m}=r,p=m==null?Ic:cr(m),h=[{type:"address",value:o},{type:"uint256",value:p}];return this.buildRawTransaction(a,"approve(address,uint256)",h,"0",u)}getContract(r){return this.tronWeb.contract(Mr.abi,r)}async buildRawTransaction(r,a,o,u,m){let p=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+u},o,m);if(!p?.result?.result)throw new O("Unknown error: "+JSON.stringify(p,null,2));return p.transaction}};var cn=class{constructor(i,r,a){this.api=i;this.nodeRpcUrlsConfig=r;this.params=a}async getAllowance(i,r){let a=await this.getChainTokenService(i.token.chainSymbol,i.owner,r).getAllowance(i);return j(a,i.token.decimals).toFixed()}async checkAllowance(i,r){return K(i.amount),z("amount",i.amount,i.token.decimals),this.getChainTokenService(i.token.chainSymbol,i.owner,r).checkAllowance(this.prepareCheckAllowanceParams(i))}async approve(i,r){return r.amount&&(K(r.amount),z("amount",r.amount,r.token.decimals)),this.getChainTokenService(r.token.chainSymbol,r.owner,i).approve(this.prepareApproveParams(r))}async buildRawTransactionApprove(i,r){return i.amount&&(K(i.amount),z("amount",i.amount,i.token.decimals)),this.getChainTokenService(i.token.chainSymbol,i.owner,r).buildRawTransactionApprove(this.prepareApproveParams(i))}async getTokenBalance(i,r){let a=await this.getChainTokenService(i.token.chainSymbol,i.account,r).getTokenBalance(i);return i.token.decimals?j(a,i.token.decimals).toFixed():a}async getNativeTokenBalance(i,r){let a=await this.getChainTokenService(i.chainSymbol,i.account,r).getNativeTokenBalance(i);return{int:a,float:j(a,X.getChainDecimalsByType(X.getChainProperty(i.chainSymbol).chainType)).toFixed()}}getChainTokenService(i,r,a){switch(X.getChainProperty(i).chainType){case"EVM":{if(a)return new xn(a,this.api);{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i);return new xn(new kc(o),this.api)}}case"TRX":{if(a)return new Fn(a,this.api);{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i),u=new vc({fullHost:o});return u.setAddress(r),new Fn(u,this.api)}}case"SOLANA":{let o=this.nodeRpcUrlsConfig.getNodeRpcUrl(i);return new Dr(o,this.api)}case"SRB":return new Wr(this.nodeRpcUrlsConfig,this.params,this.api);case"SUI":return new Nr(this.nodeRpcUrlsConfig.getNodeRpcUrl(i),this.api)}}prepareCheckAllowanceParams(i){return{...i,amount:Z(i.amount,i.token.decimals)}}prepareApproveParams(i){return{tokenAddress:i.token.tokenAddress,owner:i.owner,spender:i.spender,chainSymbol:i.token.chainSymbol,amount:i.amount==null?void 0:Rc(i.amount).toFixed()}}};var Er=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r;let a=new nn(r),o=new rn(a),u=new an(o),m=new on(u);this.api=new sn(m,r),this.tokenService=new cn(this.api,i,r)}api;tokenService;buildRawTransactionApprove(i,r){return this.tokenService.buildRawTransactionApprove(i,r)}checkAllowance(i,r){return this.tokenService.checkAllowance(i,r)}getAllowance(i,r){return this.tokenService.getAllowance(i,r)}};g();y();f();import{Connection as xc,PublicKey as Fc,TransactionMessage as Mc}from"@solana/web3.js";var Ur=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r}async addMemoToTx(i,r){if(r.length>28)throw new O("InvalidArgumentException memo cannot be more than 28 characters");let a=new xc(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),o=await Mt(i,a),u=Mc.decompile(i.message,{addressLookupTableAccounts:o}),m=u.instructions[u.instructions.length-1];if(!m?.keys)throw new O("Last instruction or its keys are invalid.");m.keys.push({pubkey:new Fc(P.from(r)),isSigner:!1,isWritable:!1}),i.message=u.compileToV0Message(o)}};g();y();f();import{Asset as Wc,BASE_FEE as Nc,contract as mx,Horizon as gs,Operation as Ec,Operation as Uc,rpc as On,TimeoutInfinite as Gc,TransactionBuilder as xi,TransactionBuilder as fs}from"@stellar/stellar-sdk";g();y();f();import{contract as e}from"@stellar/stellar-sdk";var Oc=e.Spec,Dc=e.Client;var Mn=class extends Dc{constructor(r){super(new Oc(["AAAAAAAAAYlSZXR1cm5zIHRoZSBhbGxvd2FuY2UgZm9yIGBzcGVuZGVyYCB0byB0cmFuc2ZlciBmcm9tIGBmcm9tYC4KClRoZSBhbW91bnQgcmV0dXJuZWQgaXMgdGhlIGFtb3VudCB0aGF0IHNwZW5kZXIgaXMgYWxsb3dlZCB0byB0cmFuc2ZlcgpvdXQgb2YgZnJvbSdzIGJhbGFuY2UuIFdoZW4gdGhlIHNwZW5kZXIgdHJhbnNmZXJzIGFtb3VudHMsIHRoZSBhbGxvd2FuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQgdHJhbnNmZXJlZC4KCiMgQXJndW1lbnRzCgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHRvIGJlIGRyYXduIGZyb20uCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3Mgc3BlbmRpbmcgdGhlIHRva2VucyBoZWxkIGJ5IGBmcm9tYC4AAAAAAAAJYWxsb3dhbmNlAAAAAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAEAAAAL","AAAAAAAAAIlSZXR1cm5zIHRydWUgaWYgYGlkYCBpcyBhdXRob3JpemVkIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBmb3Igd2hpY2ggdG9rZW4gYXV0aG9yaXphdGlvbiBpcyBiZWluZyBjaGVja2VkLgAAAAAAAAphdXRob3JpemVkAAAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAB","AAAAAAAAA55TZXQgdGhlIGFsbG93YW5jZSBieSBgYW1vdW50YCBmb3IgYHNwZW5kZXJgIHRvIHRyYW5zZmVyL2J1cm4gZnJvbQpgZnJvbWAuCgpUaGUgYW1vdW50IHNldCBpcyB0aGUgYW1vdW50IHRoYXQgc3BlbmRlciBpcyBhcHByb3ZlZCB0byB0cmFuc2ZlciBvdXQgb2YKZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byB0cmFuc2ZlciBhbW91bnRzLCBhbmQKd2hlbiBhbiBhbW91bnQgaXMgdHJhbnNmZXJyZWQgdGhlIGFsbG93YW5jZSB3aWxsIGJlIHJlZHVjZWQgYnkgdGhlCmFtb3VudCB0cmFuc2ZlcmVkLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgdG8gYmUgZHJhd24gZnJvbS4KKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBiZWluZyBhdXRob3JpemVkIHRvIHNwZW5kIHRoZSB0b2tlbnMgaGVsZCBieQpgZnJvbWAuCiogYGFtb3VudGAgLSBUaGUgdG9rZW5zIHRvIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGBzcGVuZGVyYC4KKiBgZXhwaXJhdGlvbl9sZWRnZXJgIC0gVGhlIGxlZGdlciBudW1iZXIgd2hlcmUgdGhpcyBhbGxvd2FuY2UgZXhwaXJlcy4gQ2Fubm90CmJlIGxlc3MgdGhhbiB0aGUgY3VycmVudCBsZWRnZXIgbnVtYmVyIHVubGVzcyB0aGUgYW1vdW50IGlzIGJlaW5nIHNldCB0byAwLgpBbiBleHBpcmVkIGVudHJ5ICh3aGVyZSBleHBpcmF0aW9uX2xlZGdlciA8IHRoZSBjdXJyZW50IGxlZGdlciBudW1iZXIpCnNob3VsZCBiZSB0cmVhdGVkIGFzIGEgMCBhbW91bnQgYWxsb3dhbmNlLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImFwcHJvdmUiLCBmcm9tOiBBZGRyZXNzLApzcGVuZGVyOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6IGkxMjgsIGV4cGlyYXRpb25fbGVkZ2VyOiB1MzJdYAAAAAAAB2FwcHJvdmUAAAAABAAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAAAAABFleHBpcmF0aW9uX2xlZGdlcgAAAAAAAAQAAAAA","AAAAAAAAAJhSZXR1cm5zIHRoZSBiYWxhbmNlIG9mIGBpZGAuCgojIEFyZ3VtZW50cwoKKiBgaWRgIC0gVGhlIGFkZHJlc3MgZm9yIHdoaWNoIGEgYmFsYW5jZSBpcyBiZWluZyBxdWVyaWVkLiBJZiB0aGUKYWRkcmVzcyBoYXMgbm8gZXhpc3RpbmcgYmFsYW5jZSwgcmV0dXJucyAwLgAAAAdiYWxhbmNlAAAAAAEAAAAAAAAAAmlkAAAAAAATAAAAAQAAAAs=","AAAAAAAAAWRCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLgoKUmVkdWNlcyBmcm9tJ3MgYmFsYW5jZSBieSB0aGUgYW1vdW50LCB3aXRob3V0IHRyYW5zZmVycmluZyB0aGUgYmFsYW5jZQp0byBhbm90aGVyIGhvbGRlcidzIGJhbGFuY2UuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIG9mIHRva2VucyB3aGljaCB3aWxsIGJlCmJ1cm5lZCBmcm9tLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgYnVybmVkLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImJ1cm4iLCBmcm9tOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6CmkxMjhdYAAAAARidXJuAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAtxCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSBvZiBgc3BlbmRlcmAuCgpSZWR1Y2VzIGZyb20ncyBiYWxhbmNlIGJ5IHRoZSBhbW91bnQsIHdpdGhvdXQgdHJhbnNmZXJyaW5nIHRoZSBiYWxhbmNlCnRvIGFub3RoZXIgaG9sZGVyJ3MgYmFsYW5jZS4KClRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byBidXJuIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZSwgaWYKdGhlIGFtb3VudCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGFsbG93YW5jZSB0aGF0IHRoZSBzcGVuZGVyIGhhcwpvbiB0aGUgZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyJ3MgYWxsb3dhbmNlIG9uIGZyb20ncyBiYWxhbmNlIHdpbGwgYmUKcmVkdWNlZCBieSB0aGUgYW1vdW50LgoKIyBBcmd1bWVudHMKCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3MgYXV0aG9yaXppbmcgdGhlIGJ1cm4sIGFuZCBoYXZpbmcgaXRzIGFsbG93YW5jZQpjb25zdW1lZCBkdXJpbmcgdGhlIGJ1cm4uCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQpidXJuZWQgZnJvbS4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIGJ1cm5lZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJidXJuIiwgZnJvbTogQWRkcmVzc10sIGRhdGEgPSBbYW1vdW50OgppMTI4XWAAAAAJYnVybl9mcm9tAAAAAAAAAwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAVNDbGF3YmFjayBgYW1vdW50YCBmcm9tIGBmcm9tYCBhY2NvdW50LiBgYW1vdW50YCBpcyBidXJuZWQgaW4gdGhlCmNsYXdiYWNrIHByb2Nlc3MuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIGZyb20gd2hpY2ggdGhlIGNsYXdiYWNrIHdpbGwKdGFrZSB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSBjbGF3ZWQgYmFjay4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJjbGF3YmFjayIsIGFkbWluOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAACGNsYXdiYWNrAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAIBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdXNlZCB0byByZXByZXNlbnQgYW1vdW50cyBvZiB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAhkZWNpbWFscwAAAAAAAAABAAAABA==","AAAAAAAAAPVNaW50cyBgYW1vdW50YCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgbWludGVkIHRva2Vucy4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIG1pbnRlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJtaW50IiwgYWRtaW46IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwgZGF0YQo9IFthbW91bnQ6IGkxMjhdYAAAAAAAAARtaW50AAAAAgAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAFlSZXR1cm5zIHRoZSBuYW1lIGZvciB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAAAAARuYW1lAAAAAAAAAAEAAAAQ","AAAAAAAAAQxTZXRzIHRoZSBhZG1pbmlzdHJhdG9yIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyBgbmV3X2FkbWluYC4KCiMgQXJndW1lbnRzCgoqIGBuZXdfYWRtaW5gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCBoZW5jZWZvcnRoIGJlIHRoZSBhZG1pbmlzdHJhdG9yCm9mIHRoaXMgdG9rZW4gY29udHJhY3QuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2FkbWluIiwgYWRtaW46IEFkZHJlc3NdLCBkYXRhID0KW25ld19hZG1pbjogQWRkcmVzc11gAAAACXNldF9hZG1pbgAAAAAAAAEAAAAAAAAACW5ld19hZG1pbgAAAAAAABMAAAAA","AAAAAAAAAEZSZXR1cm5zIHRoZSBhZG1pbiBvZiB0aGUgY29udHJhY3QuCgojIFBhbmljcwoKSWYgdGhlIGFkbWluIGlzIG5vdCBzZXQuAAAAAAAFYWRtaW4AAAAAAAAAAAAAAQAAABM=","AAAAAAAAAVBTZXRzIHdoZXRoZXIgdGhlIGFjY291bnQgaXMgYXV0aG9yaXplZCB0byB1c2UgaXRzIGJhbGFuY2UuIElmCmBhdXRob3JpemVkYCBpcyB0cnVlLCBgaWRgIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBiZWluZyAoZGUtKWF1dGhvcml6ZWQuCiogYGF1dGhvcml6ZWAgLSBXaGV0aGVyIG9yIG5vdCBgaWRgIGNhbiB1c2UgaXRzIGJhbGFuY2UuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2F1dGhvcml6ZWQiLCBpZDogQWRkcmVzc10sIGRhdGEgPQpbYXV0aG9yaXplOiBib29sXWAAAAAOc2V0X2F1dGhvcml6ZWQAAAAAAAIAAAAAAAAAAmlkAAAAAAATAAAAAAAAAAlhdXRob3JpemUAAAAAAAABAAAAAA==","AAAAAAAAAFtSZXR1cm5zIHRoZSBzeW1ib2wgZm9yIHRoaXMgdG9rZW4uCgojIFBhbmljcwoKSWYgdGhlIGNvbnRyYWN0IGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuAAAAAAZzeW1ib2wAAAAAAAAAAAABAAAAEA==","AAAAAAAAAWRUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQp3aXRoZHJhd24gZnJvbS4KKiBgdG9gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCByZWNlaXZlIHRoZSB0cmFuc2ZlcnJlZCB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSB0cmFuc2ZlcnJlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJ0cmFuc2ZlciIsIGZyb206IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwKZGF0YSA9IFthbW91bnQ6IGkxMjhdYAAAAAh0cmFuc2ZlcgAAAAMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAzNUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSB0aGF0CmBzcGVuZGVyYCBoYXMgb24gYGZyb21gJ3MgYmFsYW5jZS4gQXV0aG9yaXplZCBieSBzcGVuZGVyCihgc3BlbmRlci5yZXF1aXJlX2F1dGgoKWApLgoKVGhlIHNwZW5kZXIgd2lsbCBiZSBhbGxvd2VkIHRvIHRyYW5zZmVyIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZQppZiB0aGUgYW1vdW50IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgYWxsb3dhbmNlIHRoYXQgdGhlIHNwZW5kZXIKaGFzIG9uIHRoZSBmcm9tJ3MgYmFsYW5jZS4gVGhlIHNwZW5kZXIncyBhbGxvd2FuY2Ugb24gZnJvbSdzIGJhbGFuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQuCgojIEFyZ3VtZW50cwoKKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBhdXRob3JpemluZyB0aGUgdHJhbnNmZXIsIGFuZCBoYXZpbmcgaXRzCmFsbG93YW5jZSBjb25zdW1lZCBkdXJpbmcgdGhlIHRyYW5zZmVyLgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHdoaWNoIHdpbGwgYmUKd2l0aGRyYXduIGZyb20uCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgdHJhbnNmZXJyZWQgdG9rZW5zLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgdHJhbnNmZXJyZWQuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsidHJhbnNmZXIiLCBmcm9tOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAADXRyYW5zZmVyX2Zyb20AAAAAAAAEAAAAAAAAAAdzcGVuZGVyAAAAABMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA=="]),r);this.options=r}fromJSON={allowance:this.txFromJSON,authorized:this.txFromJSON,approve:this.txFromJSON,balance:this.txFromJSON,burn:this.txFromJSON,burn_from:this.txFromJSON,clawback:this.txFromJSON,decimals:this.txFromJSON,mint:this.txFromJSON,name:this.txFromJSON,set_admin:this.txFromJSON,admin:this.txFromJSON,set_authorized:this.txFromJSON,symbol:this.txFromJSON,transfer:this.txFromJSON,transfer_from:this.txFromJSON}};var Vc=100,jc=180,Gr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.params=r}async buildChangeTrustLineXdrTx(i){let a=await new gs.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(i.sender),u=await this.getContract(Mn,i.tokenAddress).name();if(Qt(u))throw new O;let m=Ht(u);if(!m)throw new O;let[p,h]=m.split(":");if(p===void 0||h===void 0)throw new O("Invalid token name format. Expected format 'symbol:srbTokenAddress'");let T=new Wc(p,h),S=Uc.changeTrust({asset:T,limit:i.limit});return new fs(a,{fee:Vc.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(S).setTimeout(jc).build().toXDR()}async getBalanceLine(i,r){let o=await this.getContract(Mn,r).name();if(Qt(o))throw new O;let u=Ht(o);if(!u)throw new O;let[m,p]=u.split(":"),h=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new gs.Server(h).loadAccount(i)).balances.find(x=>(x.asset_type==="credit_alphanum4"||x.asset_type==="credit_alphanum12")&&x.asset_code==m&&x.asset_issuer==p)}async submitTransactionStellar(i){let r=new gs.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),a=fs.fromXDR(i,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await r.submitTransaction(a)}async simulateAndCheckRestoreTxRequiredSoroban(i,r){let a=new On.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),o=await a.getAccount(r),u=xi.fromXDR(i,this.params.sorobanNetworkPassphrase),m=await a.simulateTransaction(u);if(On.Api.isSimulationRestore(m))return new xi(o,{fee:(+Nc+ +m.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(m.restorePreamble.transactionData.build()).addOperation(Ec.restoreFootprint({})).setTimeout(Gc).build().toXDR()}async sendTransactionSoroban(i){let r=new On.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=xi.fromXDR(i,this.params.sorobanNetworkPassphrase);return r.sendTransaction(a)}async confirmTx(i,r=15){let a=new On.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),o=await Xi(()=>a.getTransaction(i),m=>m.status===On.Api.GetTransactionStatus.NOT_FOUND,r);if(o.length===0)throw new O("No transaction responses found.");let u=o[o.length-1];if(!u)throw new O("Unexpected error: last response is undefined.");return u}getContract(i,r){let a={contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new i(a)}};g();y();f();var Vr=class{constructor(i,r){this.nodeRpcUrlsConfig=i;this.api=r}_suiBridgeService;async buildSendTxFromCustomTx(i,r,a){return this.suiBridgeService.buildRawTransactionSendFromCustomTx(i,r,a)}get suiBridgeService(){return this._suiBridgeService||(this._suiBridgeService=new Xt(this.nodeRpcUrlsConfig,this.api)),this._suiBridgeService}};var jr=class{constructor(i){this.service=i;this.srb=new Gr(i.nodeRpcUrlsConfig,i.params),this.sol=new Ur(i.nodeRpcUrlsConfig,i.params),this.sui=new Vr(i.nodeRpcUrlsConfig,i.api),this.evm=new Er(i.nodeRpcUrlsConfig,i.params)}srb;sol;sui;evm};g();y();f();var Ft=(r=>(r.WITH_NATIVE_CURRENCY="native",r.WITH_STABLECOIN="stablecoin",r))(Ft||{}),Ln=(r=>(r.INT="int",r.FLOAT="float",r))(Ln||{});g();y();f();import{Big as fe}from"big.js";var Dn=class{constructor(i){this.nodeRpcUrls=i}getNodeRpcUrl(i){let r=this.nodeRpcUrls[i];if(r!==void 0)return r;throw new _n(i)}},_r=class{constructor(i,r=Un){this.nodeRpcUrlsConfig=i;X.addChainsProperties(r.additionalChainsProperties);let a=new nn(r),o=new rn(a),u=new an(o),m=new on(u);this.api=new sn(m,r),this.tokenService=new cn(this.api,i,r),this.bridge=new ur(this.api,i,r,this.tokenService),this.pool=new Ir(this.api,i,r,this.tokenService),this.yield=new xr(this.api,i,r,this.tokenService),this.params=r}api;tokenService;params;bridge;pool;yield;async chainDetailsMap(i){return this.api.getChainDetailsMap(i)}async tokens(i){return this.api.tokens(i)}async tokensByChain(i,r){let o=(await this.api.getChainDetailsMap(r))[i];return o?o.tokens:[]}async getTransferStatus(i,r){return this.api.getTransferStatus(i,r)}async getGasBalance(i,r){return this.api.getGasBalance(i,r)}async checkAddress(){return new Promise(i=>{i({status:"OK",gasBalance:null})})}async getPendingStatusInfo(i,r,a,o){K(i);let u;r=="float"?(z("amount",i,a.decimals),u=Z(i,a.decimals).toFixed()):u=i;let m=it(u,a,await ge(this.api,a)),p=await ge(this.api,o),h=this.getAmountFromVUsdFormatted(m,o,p),T,S=await this.api.getPendingInfo();for(let w in S[o.chainSymbol]){let x=S[o.chainSymbol];if(!x)throw new O("Cannot find pending info for "+o.chainSymbol);T=x[w]}if(T){let w=sa(T.totalSentAmount,p),x=this.getAmountFromVUsdFormatted(m,o,w),v;return fe(x.int).gt(h.int)?v={min:h,max:x}:v={min:x,max:h},{pendingTxs:T.pendingTxs,pendingAmount:{int:Je(T.totalSentAmount,3,o.decimals).toFixed(0),float:j(T.totalSentAmount,3).toFixed()},estimatedAmount:v}}return{pendingTxs:0,pendingAmount:{int:"0",float:"0"},estimatedAmount:{min:h,max:h}}}async getTokenBalance(i,r){return this.tokenService.getTokenBalance(i,r)}async getNativeTokenBalance(i,r){return this.tokenService.getNativeTokenBalance(i,r)}async calculateFeePercentOnSourceChain(i,r){K(i),z("amountFloat",i,r.decimals);let a=Z(i,r.decimals);if(a.eq(0))return 0;let o=it(a,r,await ge(this.api,r)),u=We(o,r.decimals);return ti(a,u)}async calculateFeePercentOnDestinationChain(i,r,a){K(i),z("amountFloat",i,r.decimals);let o=Z(i,r.decimals);if(o.eq(0))return 0;let u=it(o,r,await ge(this.api,r)),m=fn(u,a,await ge(this.api,a)),p=We(u,a.decimals);return ti(p,m)}async getAmountToBeReceivedAndGasFeeOptions(i,r,a,o){return K(i),z("amountToSendFloat",i,r.decimals),{amountToSendFloat:fe(i).toFixed(),amountToBeReceivedFloat:await this.getAmountToBeReceived(i,r,a,o),gasFeeOptions:await this.getGasFeeOptions(r,a,o)}}async getAmountToSendAndGasFeeOptions(i,r,a,o){return K(i),z("amountToBeReceivedFloat",i,a.decimals),{amountToSendFloat:await this.getAmountToSend(i,r,a,o),amountToBeReceivedFloat:fe(i).toFixed(),gasFeeOptions:await this.getGasFeeOptions(r,a,o)}}async getAmountToBeReceived(i,r,a,o){return this.getAmountToBeReceivedCompute(i,r,a,o,async()=>await ge(this.api,r),async()=>await ge(this.api,a))}async getAmountToBeReceivedFromChain(i,r,a,o,u,m){return this.getAmountToBeReceivedCompute(i,r,a,o,async()=>await this.pool.getPoolInfoFromChain(r,u),async()=>await this.pool.getPoolInfoFromChain(a,m))}async getAmountToBeReceivedCompute(i,r,a,o=1,u,m){switch(o){case 1:case 2:return this.getAmountToBeReceivedComputeWithPools(i,r,a,await u(),await m());case 3:case 4:return this.getAmountToBeReceivedComputeCctp(i,r,a,o);case 5:return this.getAmountToBeReceivedComputeOft(i,r,a)}}getAmountToBeReceivedComputeWithPools(i,r,a,o,u){K(i),z("amountToSendFloat",i,r.decimals);let m=Z(i,r.decimals),p=it(m,r,o);return this.getAmountFromVUsdFormatted(p,a,u).float}getAmountToBeReceivedComputeCctp(i,r,a,o){K(i),z("amountToSendFloat",i,r.decimals);let u=Z(i,r.decimals);switch(o){case 3:{if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new Ie("Such route does not support CCTP protocol");let m=u.mul(fe(1).minus(r.cctpFeeShare)).round(0,fe.roundUp),p=Je(m,r.decimals,a.decimals).round(0);return j(p,a.decimals).toFixed()}case 4:{if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new Ie("Such route does not support CCTP V2 protocol");let m=u.mul(fe(1).minus(r.cctpV2FeeShare)).round(0,fe.roundUp),p=Je(m,r.decimals,a.decimals).round(0);return j(p,a.decimals).toFixed()}}}async getAmountToBeReceivedComputeOft(i,r,a){K(i),z("amountToSendFloat",i,r.decimals);let o=Z(i,r.decimals);if(!r.oftBridgeAddress||!a.oftBridgeAddress||r.oftId!==a.oftId)throw new Re("Such route does not support OFT protocol");let{adminFeeShareWithExtras:u}=await this.api.getReceiveTransactionCost({sourceChainId:r.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:5,sourceToken:r.tokenAddress});if(!u)throw new Re("Such route does not support OFT protocol");let m=o.mul(fe(1).minus(u)).round(0,fe.roundUp),p=Je(m,r.decimals,a.decimals).round(0);return j(p,a.decimals).toFixed()}async getAmountToSend(i,r,a,o){return this.getAmountToSendCompute(i,r,a,o,()=>ge(this.api,r),()=>ge(this.api,a))}async getAmountToSendFromChain(i,r,a,o,u,m){return this.getAmountToSendCompute(i,r,a,o,()=>this.pool.getPoolInfoFromChain(r,u),()=>this.pool.getPoolInfoFromChain(a,m))}async getAmountToSendCompute(i,r,a,o=1,u,m){switch(o){case 1:case 2:return this.getAmountToSendComputeWithPools(i,r,a,await u(),await m());case 3:case 4:return this.getAmountToSendComputeCctp(i,r,a,o);case 5:return this.getAmountToSendComputeOft(i,r,a)}}getAmountToSendComputeWithPools(i,r,a,o,u){K(i),z("amountToBeReceivedFloat",i,a.decimals);let m=Z(i,a.decimals),p=ca(m,a,u),h=oa(p,r,o);if(fe(h).lte(0))throw new mt;return j(h,r.decimals).toFixed()}getAmountToSendComputeCctp(i,r,a,o){K(i),z("amountToBeReceivedFloat",i,a.decimals);let u=Z(i,a.decimals);switch(o){case 3:{if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new Ie("Such route does not support CCTP protocol");let m=u.div(fe(1).minus(r.cctpFeeShare)).round(0,fe.roundDown),p=Je(m,a.decimals,r.decimals).round(0);return j(p,r.decimals).toFixed()}case 4:{if(!r.cctpV2Address||!a.cctpV2Address||!r.cctpV2FeeShare)throw new Ie("Such route does not support CCTP V2 protocol");let m=u.div(fe(1).minus(r.cctpV2FeeShare)).round(0,fe.roundDown),p=Je(m,a.decimals,r.decimals).round(0);return j(p,r.decimals).toFixed()}}}async getAmountToSendComputeOft(i,r,a){K(i),z("amountToBeReceivedFloat",i,a.decimals);let o=Z(i,a.decimals);if(!r.oftId||!a.oftId||!r.oftBridgeAddress||r.oftId!==a.oftId)throw new Re("Such route does not support OFT protocol");let{adminFeeShareWithExtras:u}=await this.api.getReceiveTransactionCost({sourceChainId:r.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:5,sourceToken:r.tokenAddress});if(!u)throw new Re("Such route does not support OFT protocol");let m=o.div(fe(1).minus(u)).round(0,fe.roundDown),p=Je(m,a.decimals,r.decimals).round(0);return j(p,r.decimals).toFixed()}async getGasFeeOptions(i,r,a){return ni(i,r.allbridgeChainId,a,this.api)}getAverageTransferTime(i,r,a){return i.transferTime?.[r.chainSymbol]?.[a]??null}async getPoolInfoByToken(i){return await this.api.getPoolInfoByKey({chainSymbol:i.chainSymbol,poolAddress:i.poolAddress})}async refreshPoolInfo(i){if(i){let a=(i instanceof Array?i:[i]).map(o=>({chainSymbol:o.chainSymbol,poolAddress:o.poolAddress}));return this.api.refreshPoolInfo(a)}return this.api.refreshPoolInfo()}aprInPercents(i){return ua(i)}async getExtraGasMaxLimits(i,r,a){return await ri(i,r,a,this.api)}async getVUsdFromAmount(i,r,a){K(i);let o;r=="float"?(z("amount",i,a.decimals),o=Z(i,a.decimals).toFixed()):o=i;let u=it(o,a,await ge(this.api,a));return{int:u,float:j(u,3).toFixed()}}async getAmountFromVUsd(i,r){return this.getAmountFromVUsdFormatted(i,r,await ge(this.api,r))}getAmountFromVUsdFormatted(i,r,a){K(i);let o=fn(i,r,a);if(fe(o).lt(0))throw new mt;return{int:o,float:j(o,r.decimals).toFixed()}}async swapAndBridgeFeeCalculation(i,r,a){return as(i,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await ge(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await ge(this.api,a)})}async swapAndBridgeFeeCalculationReverse(i,r,a){let o=ss(i,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await ge(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await ge(this.api,a)}),u=o.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if(fe(u).lt(0))throw new mt;return o}async getSendAmountDetails(i,r,a,o){K(i);let u;return r=="float"?(z("amount",i,a.decimals),u=Z(i,a.decimals).toFixed()):u=i,os(u,a,await ge(this.api,a),o,await ge(this.api,o))}};function _c(s){return"solanaRpcUrl"in s}var ys=class{params;bridge;pool;yield;utils;service;constructor(i,r=Un){let a;_c(i)?a=new Dn({SOL:i.solanaRpcUrl,TRX:i.tronRpcUrl}):a=new Dn(i),this.service=new _r(a,r),this.bridge=this.service.bridge,this.pool=this.service.pool,this.yield=this.service.yield,this.utils=new jr(this.service),this.params=r}async chainDetailsMap(i="swap"){return this.service.chainDetailsMap(i)}async tokens(i="swap"){return this.service.tokens(i)}async tokensByChain(i,r="swap"){return this.service.tokensByChain(i,r)}async getTransferStatus(i,r){return this.service.getTransferStatus(i,r)}async getGasBalance(i,r){return this.service.getGasBalance(i,r)}async checkAddress(i,r,a){return await this.service.checkAddress()}async getPendingStatusInfo(i,r,a,o){return this.service.getPendingStatusInfo(i,r,a,o)}async getTokenBalance(i,r){return this.service.getTokenBalance(i,r)}async getNativeTokenBalance(i,r){return this.service.getNativeTokenBalance(i,r)}async calculateFeePercentOnSourceChain(i,r){return this.service.calculateFeePercentOnSourceChain(i,r)}async calculateFeePercentOnDestinationChain(i,r,a){return this.service.calculateFeePercentOnDestinationChain(i,r,a)}async getAmountToBeReceivedAndGasFeeOptions(i,r,a,o){return this.service.getAmountToBeReceivedAndGasFeeOptions(i,r,a,o)}async getAmountToSendAndGasFeeOptions(i,r,a,o){return this.service.getAmountToSendAndGasFeeOptions(i,r,a,o)}async getAmountToBeReceived(i,r,a,o=1){return this.service.getAmountToBeReceived(i,r,a,o)}async getAmountToBeReceivedFromChain(i,r,a,o=1,u,m){return this.service.getAmountToBeReceivedFromChain(i,r,a,o,u,m)}getAmountToBeReceivedFromPools(i,r,a,o,u,m=1){switch(m){case 1:case 2:return this.service.getAmountToBeReceivedComputeWithPools(i,r,a,o,u);case 3:case 4:return this.service.getAmountToBeReceivedComputeCctp(i,r,a,m)}}async getAmountToSend(i,r,a,o=1){return this.service.getAmountToSend(i,r,a,o)}async getAmountToSendFromChain(i,r,a,o=1,u,m){return this.service.getAmountToSendFromChain(i,r,a,o,u,m)}getAmountToSendFromPools(i,r,a,o,u,m=1){switch(m){case 1:case 2:return this.service.getAmountToSendComputeWithPools(i,r,a,o,u);case 3:case 4:return this.service.getAmountToSendComputeCctp(i,r,a,m)}}async getGasFeeOptions(i,r,a){return this.service.getGasFeeOptions(i,r,a)}getAverageTransferTime(i,r,a){return this.service.getAverageTransferTime(i,r,a)}async getPoolInfoByToken(i){return this.service.getPoolInfoByToken(i)}async refreshPoolInfo(i){return this.service.refreshPoolInfo(i)}aprInPercents(i){return this.service.aprInPercents(i)}async getExtraGasMaxLimits(i,r,a=1){return this.service.getExtraGasMaxLimits(i,r,a)}async getVUsdFromAmount(i,r,a){return this.service.getVUsdFromAmount(i,r,a)}async getAmountFromVUsd(i,r){return this.service.getAmountFromVUsd(i,r)}async swapAndBridgeFeeCalculation(i,r,a){return this.service.swapAndBridgeFeeCalculation(i,r,a)}async swapAndBridgeFeeCalculationReverse(i,r,a){return this.service.swapAndBridgeFeeCalculationReverse(i,r,a)}async getSendAmountDetails(i,r,a,o){return this.service.getSendAmountDetails(i,r,a,o)}};export{Kr as AddressStatus,ys as AllbridgeCoreSdk,Ln as AmountFormat,Vt as AmountNotEnoughError,jn as ArgumentInvalidDecimalsError,Ie as CCTPDoesNotSupportedError,$e as ChainSymbol,re as ChainType,Ds as ErrorCode,Vn as ExtraGasMaxLimitExceededError,Ft as FeePaymentMethod,mt as InsufficientPoolLiquidityError,ut as InvalidAmountError,mn as InvalidGasFeePaymentOptionError,Gn as InvalidMessengerOptionError,jt as InvalidTxError,Te as JupiterError,Ye as Messenger,Ae as MethodNotSupportedError,_n as NodeRpcUrlNotInitializedError,Re as OFTDoesNotSupportedError,O as SdkError,ce as SdkRootError,ii as SolanaAutoTxFee,dn as TimeoutError,$n as TxTooLargeError,ln as VerifyTxError,Zn as YieldDoesNotSupportedError,qo as assertYieldIsSupported,kr as isYieldSupported,Un as mainnet,mA as nodeRpcUrlsDefault,uA as nodeUrlsDefault};
|
|
2
2
|
/*! Bundled license information:
|
|
3
3
|
|
|
4
4
|
@jspm/core/nodelibs/browser/chunk-DtuTasat.js:
|