@allbridge/bridge-core-sdk 3.18.0 → 3.19.1-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.
@@ -1,9 +1,9 @@
1
- var pt={},jn=!1;function cr(){if(jn)return pt;jn=!0,pt.byteLength=g,pt.toByteArray=y,pt.fromByteArray=B;for(var l=[],r=[],i=typeof Uint8Array<"u"?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",A=0,u=a.length;A<u;++A)l[A]=a[A],r[a.charCodeAt(A)]=A;r[45]=62,r[95]=63;function c(S){var C=S.length;if(C%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var M=S.indexOf("=");M===-1&&(M=C);var I=M===C?0:4-M%4;return[M,I]}function g(S){var C=c(S),M=C[0],I=C[1];return(M+I)*3/4-I}function f(S,C,M){return(C+M)*3/4-M}function y(S){var C,M=c(S),I=M[0],W=M[1],x=new i(f(S,I,W)),G=0,_=W>0?I-4:I,D;for(D=0;D<_;D+=4)C=r[S.charCodeAt(D)]<<18|r[S.charCodeAt(D+1)]<<12|r[S.charCodeAt(D+2)]<<6|r[S.charCodeAt(D+3)],x[G++]=C>>16&255,x[G++]=C>>8&255,x[G++]=C&255;return W===2&&(C=r[S.charCodeAt(D)]<<2|r[S.charCodeAt(D+1)]>>4,x[G++]=C&255),W===1&&(C=r[S.charCodeAt(D)]<<10|r[S.charCodeAt(D+1)]<<4|r[S.charCodeAt(D+2)]>>2,x[G++]=C>>8&255,x[G++]=C&255),x}function b(S){return l[S>>18&63]+l[S>>12&63]+l[S>>6&63]+l[S&63]}function T(S,C,M){for(var I,W=[],x=C;x<M;x+=3)I=(S[x]<<16&16711680)+(S[x+1]<<8&65280)+(S[x+2]&255),W.push(b(I));return W.join("")}function B(S){for(var C,M=S.length,I=M%3,W=[],x=16383,G=0,_=M-I;G<_;G+=x)W.push(T(S,G,G+x>_?_:G+x));return I===1?(C=S[M-1],W.push(l[C>>2]+l[C<<4&63]+"==")):I===2&&(C=(S[M-2]<<8)+S[M-1],W.push(l[C>>10]+l[C>>4&63]+l[C<<2&63]+"=")),W.join("")}return pt}var Zt={},qn=!1;function ur(){if(qn)return Zt;qn=!0;return Zt.read=function(l,r,i,a,A){var u,c,g=A*8-a-1,f=(1<<g)-1,y=f>>1,b=-7,T=i?A-1:0,B=i?-1:1,S=l[r+T];for(T+=B,u=S&(1<<-b)-1,S>>=-b,b+=g;b>0;u=u*256+l[r+T],T+=B,b-=8);for(c=u&(1<<-b)-1,u>>=-b,b+=a;b>0;c=c*256+l[r+T],T+=B,b-=8);if(u===0)u=1-y;else{if(u===f)return c?NaN:(S?-1:1)*(1/0);c=c+Math.pow(2,a),u=u-y}return(S?-1:1)*c*Math.pow(2,u-a)},Zt.write=function(l,r,i,a,A,u){var c,g,f,y=u*8-A-1,b=(1<<y)-1,T=b>>1,B=A===23?Math.pow(2,-24)-Math.pow(2,-77):0,S=a?0:u-1,C=a?1:-1,M=r<0||r===0&&1/r<0?1:0;for(r=Math.abs(r),isNaN(r)||r===1/0?(g=isNaN(r)?1:0,c=b):(c=Math.floor(Math.log(r)/Math.LN2),r*(f=Math.pow(2,-c))<1&&(c--,f*=2),c+T>=1?r+=B/f:r+=B*Math.pow(2,1-T),r*f>=2&&(c++,f/=2),c+T>=b?(g=0,c=b):c+T>=1?(g=(r*f-1)*Math.pow(2,A),c=c+T):(g=r*Math.pow(2,T-1)*Math.pow(2,A),c=0));A>=8;l[i+S]=g&255,S+=C,g/=256,A-=8);for(c=c<<A|g,y+=A;y>0;l[i+S]=c&255,S+=C,c/=256,y-=8);l[i+S-C]|=M*128},Zt}var Qe={},$n=!1;function mr(){if($n)return Qe;$n=!0;let l=cr(),r=ur(),i=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Qe.Buffer=c,Qe.SlowBuffer=W,Qe.INSPECT_MAX_BYTES=50;let a=2147483647;Qe.kMaxLength=a,c.TYPED_ARRAY_SUPPORT=A(),!c.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 A(){try{let m=new Uint8Array(1),s={foo:function(){return 42}};return Object.setPrototypeOf(s,Uint8Array.prototype),Object.setPrototypeOf(m,s),m.foo()===42}catch{return!1}}Object.defineProperty(c.prototype,"parent",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.buffer}}),Object.defineProperty(c.prototype,"offset",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.byteOffset}});function u(m){if(m>a)throw new RangeError('The value "'+m+'" is invalid for option "size"');let s=new Uint8Array(m);return Object.setPrototypeOf(s,c.prototype),s}function c(m,s,o){if(typeof m=="number"){if(typeof s=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return b(m)}return g(m,s,o)}c.poolSize=8192;function g(m,s,o){if(typeof m=="string")return T(m,s);if(ArrayBuffer.isView(m))return S(m);if(m==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof m);if(ke(m,ArrayBuffer)||m&&ke(m.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(ke(m,SharedArrayBuffer)||m&&ke(m.buffer,SharedArrayBuffer)))return C(m,s,o);if(typeof m=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let d=m.valueOf&&m.valueOf();if(d!=null&&d!==m)return c.from(d,s,o);let p=M(m);if(p)return p;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof m[Symbol.toPrimitive]=="function")return c.from(m[Symbol.toPrimitive]("string"),s,o);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof m)}c.from=function(m,s,o){return g(m,s,o)},Object.setPrototypeOf(c.prototype,Uint8Array.prototype),Object.setPrototypeOf(c,Uint8Array);function f(m){if(typeof m!="number")throw new TypeError('"size" argument must be of type number');if(m<0)throw new RangeError('The value "'+m+'" is invalid for option "size"')}function y(m,s,o){return f(m),m<=0?u(m):s!==void 0?typeof o=="string"?u(m).fill(s,o):u(m).fill(s):u(m)}c.alloc=function(m,s,o){return y(m,s,o)};function b(m){return f(m),u(m<0?0:I(m)|0)}c.allocUnsafe=function(m){return b(m)},c.allocUnsafeSlow=function(m){return b(m)};function T(m,s){if((typeof s!="string"||s==="")&&(s="utf8"),!c.isEncoding(s))throw new TypeError("Unknown encoding: "+s);let o=x(m,s)|0,d=u(o),p=d.write(m,s);return p!==o&&(d=d.slice(0,p)),d}function B(m){let s=m.length<0?0:I(m.length)|0,o=u(s);for(let d=0;d<s;d+=1)o[d]=m[d]&255;return o}function S(m){if(ke(m,Uint8Array)){let s=new Uint8Array(m);return C(s.buffer,s.byteOffset,s.byteLength)}return B(m)}function C(m,s,o){if(s<0||m.byteLength<s)throw new RangeError('"offset" is outside of buffer bounds');if(m.byteLength<s+(o||0))throw new RangeError('"length" is outside of buffer bounds');let d;return s===void 0&&o===void 0?d=new Uint8Array(m):o===void 0?d=new Uint8Array(m,s):d=new Uint8Array(m,s,o),Object.setPrototypeOf(d,c.prototype),d}function M(m){if(c.isBuffer(m)){let s=I(m.length)|0,o=u(s);return o.length===0||m.copy(o,0,0,s),o}if(m.length!==void 0)return typeof m.length!="number"||Bn(m.length)?u(0):B(m);if(m.type==="Buffer"&&Array.isArray(m.data))return B(m.data)}function I(m){if(m>=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return m|0}function W(m){return+m!=m&&(m=0),c.alloc(+m)}c.isBuffer=function(s){return s!=null&&s._isBuffer===!0&&s!==c.prototype},c.compare=function(s,o){if(ke(s,Uint8Array)&&(s=c.from(s,s.offset,s.byteLength)),ke(o,Uint8Array)&&(o=c.from(o,o.offset,o.byteLength)),!c.isBuffer(s)||!c.isBuffer(o))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(s===o)return 0;let d=s.length,p=o.length;for(let h=0,P=Math.min(d,p);h<P;++h)if(s[h]!==o[h]){d=s[h],p=o[h];break}return d<p?-1:p<d?1:0},c.isEncoding=function(s){switch(String(s).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}},c.concat=function(s,o){if(!Array.isArray(s))throw new TypeError('"list" argument must be an Array of Buffers');if(s.length===0)return c.alloc(0);let d;if(o===void 0)for(o=0,d=0;d<s.length;++d)o+=s[d].length;let p=c.allocUnsafe(o),h=0;for(d=0;d<s.length;++d){let P=s[d];if(ke(P,Uint8Array))h+P.length>p.length?(c.isBuffer(P)||(P=c.from(P)),P.copy(p,h)):Uint8Array.prototype.set.call(p,P,h);else if(c.isBuffer(P))P.copy(p,h);else throw new TypeError('"list" argument must be an Array of Buffers');h+=P.length}return p};function x(m,s){if(c.isBuffer(m))return m.length;if(ArrayBuffer.isView(m)||ke(m,ArrayBuffer))return m.byteLength;if(typeof m!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof m);let o=m.length,d=arguments.length>2&&arguments[2]===!0;if(!d&&o===0)return 0;let p=!1;for(;;)switch(s){case"ascii":case"latin1":case"binary":return o;case"utf8":case"utf-8":return Sn(m).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return o*2;case"hex":return o>>>1;case"base64":return zn(m).length;default:if(p)return d?-1:Sn(m).length;s=(""+s).toLowerCase(),p=!0}}c.byteLength=x;function G(m,s,o){let d=!1;if((s===void 0||s<0)&&(s=0),s>this.length||((o===void 0||o>this.length)&&(o=this.length),o<=0)||(o>>>=0,s>>>=0,o<=s))return"";for(m||(m="utf8");;)switch(m){case"hex":return Te(this,s,o);case"utf8":case"utf-8":return ne(this,s,o);case"ascii":return Ae(this,s,o);case"latin1":case"binary":return be(this,s,o);case"base64":return me(this,s,o);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return de(this,s,o);default:if(d)throw new TypeError("Unknown encoding: "+m);m=(m+"").toLowerCase(),d=!0}}c.prototype._isBuffer=!0;function _(m,s,o){let d=m[s];m[s]=m[o],m[o]=d}c.prototype.swap16=function(){let s=this.length;if(s%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let o=0;o<s;o+=2)_(this,o,o+1);return this},c.prototype.swap32=function(){let s=this.length;if(s%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let o=0;o<s;o+=4)_(this,o,o+3),_(this,o+1,o+2);return this},c.prototype.swap64=function(){let s=this.length;if(s%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let o=0;o<s;o+=8)_(this,o,o+7),_(this,o+1,o+6),_(this,o+2,o+5),_(this,o+3,o+4);return this},c.prototype.toString=function(){let s=this.length;return s===0?"":arguments.length===0?ne(this,0,s):G.apply(this,arguments)},c.prototype.toLocaleString=c.prototype.toString,c.prototype.equals=function(s){if(!c.isBuffer(s))throw new TypeError("Argument must be a Buffer");return this===s?!0:c.compare(this,s)===0},c.prototype.inspect=function(){let s="",o=Qe.INSPECT_MAX_BYTES;return s=this.toString("hex",0,o).replace(/(.{2})/g,"$1 ").trim(),this.length>o&&(s+=" ... "),"<Buffer "+s+">"},i&&(c.prototype[i]=c.prototype.inspect),c.prototype.compare=function(s,o,d,p,h){if(ke(s,Uint8Array)&&(s=c.from(s,s.offset,s.byteLength)),!c.isBuffer(s))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof s);if(o===void 0&&(o=0),d===void 0&&(d=s?s.length:0),p===void 0&&(p=0),h===void 0&&(h=this.length),o<0||d>s.length||p<0||h>this.length)throw new RangeError("out of range index");if(p>=h&&o>=d)return 0;if(p>=h)return-1;if(o>=d)return 1;if(o>>>=0,d>>>=0,p>>>=0,h>>>=0,this===s)return 0;let P=h-p,U=d-o,Q=Math.min(P,U),Y=this.slice(p,h),H=s.slice(o,d);for(let X=0;X<Q;++X)if(Y[X]!==H[X]){P=Y[X],U=H[X];break}return P<U?-1:U<P?1:0};function D(m,s,o,d,p){if(m.length===0)return-1;if(typeof o=="string"?(d=o,o=0):o>2147483647?o=2147483647:o<-2147483648&&(o=-2147483648),o=+o,Bn(o)&&(o=p?0:m.length-1),o<0&&(o=m.length+o),o>=m.length){if(p)return-1;o=m.length-1}else if(o<0)if(p)o=0;else return-1;if(typeof s=="string"&&(s=c.from(s,d)),c.isBuffer(s))return s.length===0?-1:E(m,s,o,d,p);if(typeof s=="number")return s=s&255,typeof Uint8Array.prototype.indexOf=="function"?p?Uint8Array.prototype.indexOf.call(m,s,o):Uint8Array.prototype.lastIndexOf.call(m,s,o):E(m,[s],o,d,p);throw new TypeError("val must be string, number or Buffer")}function E(m,s,o,d,p){let h=1,P=m.length,U=s.length;if(d!==void 0&&(d=String(d).toLowerCase(),d==="ucs2"||d==="ucs-2"||d==="utf16le"||d==="utf-16le")){if(m.length<2||s.length<2)return-1;h=2,P/=2,U/=2,o/=2}function Q(H,X){return h===1?H[X]:H.readUInt16BE(X*h)}let Y;if(p){let H=-1;for(Y=o;Y<P;Y++)if(Q(m,Y)===Q(s,H===-1?0:Y-H)){if(H===-1&&(H=Y),Y-H+1===U)return H*h}else H!==-1&&(Y-=Y-H),H=-1}else for(o+U>P&&(o=P-U),Y=o;Y>=0;Y--){let H=!0;for(let X=0;X<U;X++)if(Q(m,Y+X)!==Q(s,X)){H=!1;break}if(H)return Y}return-1}c.prototype.includes=function(s,o,d){return this.indexOf(s,o,d)!==-1},c.prototype.indexOf=function(s,o,d){return D(this,s,o,d,!0)},c.prototype.lastIndexOf=function(s,o,d){return D(this,s,o,d,!1)};function se(m,s,o,d){o=Number(o)||0;let p=m.length-o;d?(d=Number(d),d>p&&(d=p)):d=p;let h=s.length;d>h/2&&(d=h/2);let P;for(P=0;P<d;++P){let U=parseInt(s.substr(P*2,2),16);if(Bn(U))return P;m[o+P]=U}return P}function z(m,s,o,d){return Dt(Sn(s,m.length-o),m,o,d)}function he(m,s,o,d){return Dt(ar(s),m,o,d)}function ye(m,s,o,d){return Dt(zn(s),m,o,d)}function Pe(m,s,o,d){return Dt(sr(s,m.length-o),m,o,d)}c.prototype.write=function(s,o,d,p){if(o===void 0)p="utf8",d=this.length,o=0;else if(d===void 0&&typeof o=="string")p=o,d=this.length,o=0;else if(isFinite(o))o=o>>>0,isFinite(d)?(d=d>>>0,p===void 0&&(p="utf8")):(p=d,d=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let h=this.length-o;if((d===void 0||d>h)&&(d=h),s.length>0&&(d<0||o<0)||o>this.length)throw new RangeError("Attempt to write outside buffer bounds");p||(p="utf8");let P=!1;for(;;)switch(p){case"hex":return se(this,s,o,d);case"utf8":case"utf-8":return z(this,s,o,d);case"ascii":case"latin1":case"binary":return he(this,s,o,d);case"base64":return ye(this,s,o,d);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Pe(this,s,o,d);default:if(P)throw new TypeError("Unknown encoding: "+p);p=(""+p).toLowerCase(),P=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function me(m,s,o){return s===0&&o===m.length?l.fromByteArray(m):l.fromByteArray(m.slice(s,o))}function ne(m,s,o){o=Math.min(m.length,o);let d=[],p=s;for(;p<o;){let h=m[p],P=null,U=h>239?4:h>223?3:h>191?2:1;if(p+U<=o){let Q,Y,H,X;switch(U){case 1:h<128&&(P=h);break;case 2:Q=m[p+1],(Q&192)===128&&(X=(h&31)<<6|Q&63,X>127&&(P=X));break;case 3:Q=m[p+1],Y=m[p+2],(Q&192)===128&&(Y&192)===128&&(X=(h&15)<<12|(Q&63)<<6|Y&63,X>2047&&(X<55296||X>57343)&&(P=X));break;case 4:Q=m[p+1],Y=m[p+2],H=m[p+3],(Q&192)===128&&(Y&192)===128&&(H&192)===128&&(X=(h&15)<<18|(Q&63)<<12|(Y&63)<<6|H&63,X>65535&&X<1114112&&(P=X))}}P===null?(P=65533,U=1):P>65535&&(P-=65536,d.push(P>>>10&1023|55296),P=56320|P&1023),d.push(P),p+=U}return le(d)}let oe=4096;function le(m){let s=m.length;if(s<=oe)return String.fromCharCode.apply(String,m);let o="",d=0;for(;d<s;)o+=String.fromCharCode.apply(String,m.slice(d,d+=oe));return o}function Ae(m,s,o){let d="";o=Math.min(m.length,o);for(let p=s;p<o;++p)d+=String.fromCharCode(m[p]&127);return d}function be(m,s,o){let d="";o=Math.min(m.length,o);for(let p=s;p<o;++p)d+=String.fromCharCode(m[p]);return d}function Te(m,s,o){let d=m.length;(!s||s<0)&&(s=0),(!o||o<0||o>d)&&(o=d);let p="";for(let h=s;h<o;++h)p+=or[m[h]];return p}function de(m,s,o){let d=m.slice(s,o),p="";for(let h=0;h<d.length-1;h+=2)p+=String.fromCharCode(d[h]+d[h+1]*256);return p}c.prototype.slice=function(s,o){let d=this.length;s=~~s,o=o===void 0?d:~~o,s<0?(s+=d,s<0&&(s=0)):s>d&&(s=d),o<0?(o+=d,o<0&&(o=0)):o>d&&(o=d),o<s&&(o=s);let p=this.subarray(s,o);return Object.setPrototypeOf(p,c.prototype),p};function F(m,s,o){if(m%1!==0||m<0)throw new RangeError("offset is not uint");if(m+s>o)throw new RangeError("Trying to access beyond buffer length")}c.prototype.readUintLE=c.prototype.readUIntLE=function(s,o,d){s=s>>>0,o=o>>>0,d||F(s,o,this.length);let p=this[s],h=1,P=0;for(;++P<o&&(h*=256);)p+=this[s+P]*h;return p},c.prototype.readUintBE=c.prototype.readUIntBE=function(s,o,d){s=s>>>0,o=o>>>0,d||F(s,o,this.length);let p=this[s+--o],h=1;for(;o>0&&(h*=256);)p+=this[s+--o]*h;return p},c.prototype.readUint8=c.prototype.readUInt8=function(s,o){return s=s>>>0,o||F(s,1,this.length),this[s]},c.prototype.readUint16LE=c.prototype.readUInt16LE=function(s,o){return s=s>>>0,o||F(s,2,this.length),this[s]|this[s+1]<<8},c.prototype.readUint16BE=c.prototype.readUInt16BE=function(s,o){return s=s>>>0,o||F(s,2,this.length),this[s]<<8|this[s+1]},c.prototype.readUint32LE=c.prototype.readUInt32LE=function(s,o){return s=s>>>0,o||F(s,4,this.length),(this[s]|this[s+1]<<8|this[s+2]<<16)+this[s+3]*16777216},c.prototype.readUint32BE=c.prototype.readUInt32BE=function(s,o){return s=s>>>0,o||F(s,4,this.length),this[s]*16777216+(this[s+1]<<16|this[s+2]<<8|this[s+3])},c.prototype.readBigUInt64LE=_e(function(s){s=s>>>0,et(s,"offset");let o=this[s],d=this[s+7];(o===void 0||d===void 0)&&dt(s,this.length-8);let p=o+this[++s]*2**8+this[++s]*2**16+this[++s]*2**24,h=this[++s]+this[++s]*2**8+this[++s]*2**16+d*2**24;return BigInt(p)+(BigInt(h)<<BigInt(32))}),c.prototype.readBigUInt64BE=_e(function(s){s=s>>>0,et(s,"offset");let o=this[s],d=this[s+7];(o===void 0||d===void 0)&&dt(s,this.length-8);let p=o*2**24+this[++s]*2**16+this[++s]*2**8+this[++s],h=this[++s]*2**24+this[++s]*2**16+this[++s]*2**8+d;return(BigInt(p)<<BigInt(32))+BigInt(h)}),c.prototype.readIntLE=function(s,o,d){s=s>>>0,o=o>>>0,d||F(s,o,this.length);let p=this[s],h=1,P=0;for(;++P<o&&(h*=256);)p+=this[s+P]*h;return h*=128,p>=h&&(p-=Math.pow(2,8*o)),p},c.prototype.readIntBE=function(s,o,d){s=s>>>0,o=o>>>0,d||F(s,o,this.length);let p=o,h=1,P=this[s+--p];for(;p>0&&(h*=256);)P+=this[s+--p]*h;return h*=128,P>=h&&(P-=Math.pow(2,8*o)),P},c.prototype.readInt8=function(s,o){return s=s>>>0,o||F(s,1,this.length),this[s]&128?(255-this[s]+1)*-1:this[s]},c.prototype.readInt16LE=function(s,o){s=s>>>0,o||F(s,2,this.length);let d=this[s]|this[s+1]<<8;return d&32768?d|4294901760:d},c.prototype.readInt16BE=function(s,o){s=s>>>0,o||F(s,2,this.length);let d=this[s+1]|this[s]<<8;return d&32768?d|4294901760:d},c.prototype.readInt32LE=function(s,o){return s=s>>>0,o||F(s,4,this.length),this[s]|this[s+1]<<8|this[s+2]<<16|this[s+3]<<24},c.prototype.readInt32BE=function(s,o){return s=s>>>0,o||F(s,4,this.length),this[s]<<24|this[s+1]<<16|this[s+2]<<8|this[s+3]},c.prototype.readBigInt64LE=_e(function(s){s=s>>>0,et(s,"offset");let o=this[s],d=this[s+7];(o===void 0||d===void 0)&&dt(s,this.length-8);let p=this[s+4]+this[s+5]*2**8+this[s+6]*2**16+(d<<24);return(BigInt(p)<<BigInt(32))+BigInt(o+this[++s]*2**8+this[++s]*2**16+this[++s]*2**24)}),c.prototype.readBigInt64BE=_e(function(s){s=s>>>0,et(s,"offset");let o=this[s],d=this[s+7];(o===void 0||d===void 0)&&dt(s,this.length-8);let p=(o<<24)+this[++s]*2**16+this[++s]*2**8+this[++s];return(BigInt(p)<<BigInt(32))+BigInt(this[++s]*2**24+this[++s]*2**16+this[++s]*2**8+d)}),c.prototype.readFloatLE=function(s,o){return s=s>>>0,o||F(s,4,this.length),r.read(this,s,!0,23,4)},c.prototype.readFloatBE=function(s,o){return s=s>>>0,o||F(s,4,this.length),r.read(this,s,!1,23,4)},c.prototype.readDoubleLE=function(s,o){return s=s>>>0,o||F(s,8,this.length),r.read(this,s,!0,52,8)},c.prototype.readDoubleBE=function(s,o){return s=s>>>0,o||F(s,8,this.length),r.read(this,s,!1,52,8)};function $(m,s,o,d,p,h){if(!c.isBuffer(m))throw new TypeError('"buffer" argument must be a Buffer instance');if(s>p||s<h)throw new RangeError('"value" argument is out of bounds');if(o+d>m.length)throw new RangeError("Index out of range")}c.prototype.writeUintLE=c.prototype.writeUIntLE=function(s,o,d,p){if(s=+s,o=o>>>0,d=d>>>0,!p){let U=Math.pow(2,8*d)-1;$(this,s,o,d,U,0)}let h=1,P=0;for(this[o]=s&255;++P<d&&(h*=256);)this[o+P]=s/h&255;return o+d},c.prototype.writeUintBE=c.prototype.writeUIntBE=function(s,o,d,p){if(s=+s,o=o>>>0,d=d>>>0,!p){let U=Math.pow(2,8*d)-1;$(this,s,o,d,U,0)}let h=d-1,P=1;for(this[o+h]=s&255;--h>=0&&(P*=256);)this[o+h]=s/P&255;return o+d},c.prototype.writeUint8=c.prototype.writeUInt8=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,1,255,0),this[o]=s&255,o+1},c.prototype.writeUint16LE=c.prototype.writeUInt16LE=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,2,65535,0),this[o]=s&255,this[o+1]=s>>>8,o+2},c.prototype.writeUint16BE=c.prototype.writeUInt16BE=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,2,65535,0),this[o]=s>>>8,this[o+1]=s&255,o+2},c.prototype.writeUint32LE=c.prototype.writeUInt32LE=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,4,4294967295,0),this[o+3]=s>>>24,this[o+2]=s>>>16,this[o+1]=s>>>8,this[o]=s&255,o+4},c.prototype.writeUint32BE=c.prototype.writeUInt32BE=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,4,4294967295,0),this[o]=s>>>24,this[o+1]=s>>>16,this[o+2]=s>>>8,this[o+3]=s&255,o+4};function Gt(m,s,o,d,p){Hn(s,d,p,m,o,7);let h=Number(s&BigInt(4294967295));m[o++]=h,h=h>>8,m[o++]=h,h=h>>8,m[o++]=h,h=h>>8,m[o++]=h;let P=Number(s>>BigInt(32)&BigInt(4294967295));return m[o++]=P,P=P>>8,m[o++]=P,P=P>>8,m[o++]=P,P=P>>8,m[o++]=P,o}function Ln(m,s,o,d,p){Hn(s,d,p,m,o,7);let h=Number(s&BigInt(4294967295));m[o+7]=h,h=h>>8,m[o+6]=h,h=h>>8,m[o+5]=h,h=h>>8,m[o+4]=h;let P=Number(s>>BigInt(32)&BigInt(4294967295));return m[o+3]=P,P=P>>8,m[o+2]=P,P=P>>8,m[o+1]=P,P=P>>8,m[o]=P,o+8}c.prototype.writeBigUInt64LE=_e(function(s,o=0){return Gt(this,s,o,BigInt(0),BigInt("0xffffffffffffffff"))}),c.prototype.writeBigUInt64BE=_e(function(s,o=0){return Ln(this,s,o,BigInt(0),BigInt("0xffffffffffffffff"))}),c.prototype.writeIntLE=function(s,o,d,p){if(s=+s,o=o>>>0,!p){let Q=Math.pow(2,8*d-1);$(this,s,o,d,Q-1,-Q)}let h=0,P=1,U=0;for(this[o]=s&255;++h<d&&(P*=256);)s<0&&U===0&&this[o+h-1]!==0&&(U=1),this[o+h]=(s/P>>0)-U&255;return o+d},c.prototype.writeIntBE=function(s,o,d,p){if(s=+s,o=o>>>0,!p){let Q=Math.pow(2,8*d-1);$(this,s,o,d,Q-1,-Q)}let h=d-1,P=1,U=0;for(this[o+h]=s&255;--h>=0&&(P*=256);)s<0&&U===0&&this[o+h+1]!==0&&(U=1),this[o+h]=(s/P>>0)-U&255;return o+d},c.prototype.writeInt8=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,1,127,-128),s<0&&(s=255+s+1),this[o]=s&255,o+1},c.prototype.writeInt16LE=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,2,32767,-32768),this[o]=s&255,this[o+1]=s>>>8,o+2},c.prototype.writeInt16BE=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,2,32767,-32768),this[o]=s>>>8,this[o+1]=s&255,o+2},c.prototype.writeInt32LE=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,4,2147483647,-2147483648),this[o]=s&255,this[o+1]=s>>>8,this[o+2]=s>>>16,this[o+3]=s>>>24,o+4},c.prototype.writeInt32BE=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,4,2147483647,-2147483648),s<0&&(s=4294967295+s+1),this[o]=s>>>24,this[o+1]=s>>>16,this[o+2]=s>>>8,this[o+3]=s&255,o+4},c.prototype.writeBigInt64LE=_e(function(s,o=0){return Gt(this,s,o,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),c.prototype.writeBigInt64BE=_e(function(s,o=0){return Ln(this,s,o,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function Yn(m,s,o,d,p,h){if(o+d>m.length)throw new RangeError("Index out of range");if(o<0)throw new RangeError("Index out of range")}function Jn(m,s,o,d,p){return s=+s,o=o>>>0,p||Yn(m,s,o,4),r.write(m,s,o,d,23,4),o+4}c.prototype.writeFloatLE=function(s,o,d){return Jn(this,s,o,!0,d)},c.prototype.writeFloatBE=function(s,o,d){return Jn(this,s,o,!1,d)};function Kn(m,s,o,d,p){return s=+s,o=o>>>0,p||Yn(m,s,o,8),r.write(m,s,o,d,52,8),o+8}c.prototype.writeDoubleLE=function(s,o,d){return Kn(this,s,o,!0,d)},c.prototype.writeDoubleBE=function(s,o,d){return Kn(this,s,o,!1,d)},c.prototype.copy=function(s,o,d,p){if(!c.isBuffer(s))throw new TypeError("argument should be a Buffer");if(d||(d=0),!p&&p!==0&&(p=this.length),o>=s.length&&(o=s.length),o||(o=0),p>0&&p<d&&(p=d),p===d||s.length===0||this.length===0)return 0;if(o<0)throw new RangeError("targetStart out of bounds");if(d<0||d>=this.length)throw new RangeError("Index out of range");if(p<0)throw new RangeError("sourceEnd out of bounds");p>this.length&&(p=this.length),s.length-o<p-d&&(p=s.length-o+d);let h=p-d;return this===s&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(o,d,p):Uint8Array.prototype.set.call(s,this.subarray(d,p),o),h},c.prototype.fill=function(s,o,d,p){if(typeof s=="string"){if(typeof o=="string"?(p=o,o=0,d=this.length):typeof d=="string"&&(p=d,d=this.length),p!==void 0&&typeof p!="string")throw new TypeError("encoding must be a string");if(typeof p=="string"&&!c.isEncoding(p))throw new TypeError("Unknown encoding: "+p);if(s.length===1){let P=s.charCodeAt(0);(p==="utf8"&&P<128||p==="latin1")&&(s=P)}}else typeof s=="number"?s=s&255:typeof s=="boolean"&&(s=Number(s));if(o<0||this.length<o||this.length<d)throw new RangeError("Out of range index");if(d<=o)return this;o=o>>>0,d=d===void 0?this.length:d>>>0,s||(s=0);let h;if(typeof s=="number")for(h=o;h<d;++h)this[h]=s;else{let P=c.isBuffer(s)?s:c.from(s,p),U=P.length;if(U===0)throw new TypeError('The value "'+s+'" is invalid for argument "value"');for(h=0;h<d-o;++h)this[h+o]=P[h%U]}return this};let $e={};function wn(m,s,o){$e[m]=class extends o{constructor(){super(),Object.defineProperty(this,"message",{value:s.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${m}]`,this.stack,delete this.name}get code(){return m}set code(p){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:p,writable:!0})}toString(){return`${this.name} [${m}]: ${this.message}`}}}wn("ERR_BUFFER_OUT_OF_BOUNDS",function(m){return m?`${m} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),wn("ERR_INVALID_ARG_TYPE",function(m,s){return`The "${m}" argument must be of type number. Received type ${typeof s}`},TypeError),wn("ERR_OUT_OF_RANGE",function(m,s,o){let d=`The value of "${m}" is out of range.`,p=o;return Number.isInteger(o)&&Math.abs(o)>2**32?p=Qn(String(o)):typeof o=="bigint"&&(p=String(o),(o>BigInt(2)**BigInt(32)||o<-(BigInt(2)**BigInt(32)))&&(p=Qn(p)),p+="n"),d+=` It must be ${s}. Received ${p}`,d},RangeError);function Qn(m){let s="",o=m.length,d=m[0]==="-"?1:0;for(;o>=d+4;o-=3)s=`_${m.slice(o-3,o)}${s}`;return`${m.slice(0,o)}${s}`}function nr(m,s,o){et(s,"offset"),(m[s]===void 0||m[s+o]===void 0)&&dt(s,m.length-(o+1))}function Hn(m,s,o,d,p,h){if(m>o||m<s){let P=typeof s=="bigint"?"n":"",U;throw h>3?s===0||s===BigInt(0)?U=`>= 0${P} and < 2${P} ** ${(h+1)*8}${P}`:U=`>= -(2${P} ** ${(h+1)*8-1}${P}) and < 2 ** ${(h+1)*8-1}${P}`:U=`>= ${s}${P} and <= ${o}${P}`,new $e.ERR_OUT_OF_RANGE("value",U,m)}nr(d,p,h)}function et(m,s){if(typeof m!="number")throw new $e.ERR_INVALID_ARG_TYPE(s,"number",m)}function dt(m,s,o){throw Math.floor(m)!==m?(et(m,o),new $e.ERR_OUT_OF_RANGE(o||"offset","an integer",m)):s<0?new $e.ERR_BUFFER_OUT_OF_BOUNDS:new $e.ERR_OUT_OF_RANGE(o||"offset",`>= ${o?1:0} and <= ${s}`,m)}let ir=/[^+/0-9A-Za-z-_]/g;function rr(m){if(m=m.split("=")[0],m=m.trim().replace(ir,""),m.length<2)return"";for(;m.length%4!==0;)m=m+"=";return m}function Sn(m,s){s=s||1/0;let o,d=m.length,p=null,h=[];for(let P=0;P<d;++P){if(o=m.charCodeAt(P),o>55295&&o<57344){if(!p){if(o>56319){(s-=3)>-1&&h.push(239,191,189);continue}else if(P+1===d){(s-=3)>-1&&h.push(239,191,189);continue}p=o;continue}if(o<56320){(s-=3)>-1&&h.push(239,191,189),p=o;continue}o=(p-55296<<10|o-56320)+65536}else p&&(s-=3)>-1&&h.push(239,191,189);if(p=null,o<128){if((s-=1)<0)break;h.push(o)}else if(o<2048){if((s-=2)<0)break;h.push(o>>6|192,o&63|128)}else if(o<65536){if((s-=3)<0)break;h.push(o>>12|224,o>>6&63|128,o&63|128)}else if(o<1114112){if((s-=4)<0)break;h.push(o>>18|240,o>>12&63|128,o>>6&63|128,o&63|128)}else throw new Error("Invalid code point")}return h}function ar(m){let s=[];for(let o=0;o<m.length;++o)s.push(m.charCodeAt(o)&255);return s}function sr(m,s){let o,d,p,h=[];for(let P=0;P<m.length&&!((s-=2)<0);++P)o=m.charCodeAt(P),d=o>>8,p=o%256,h.push(p),h.push(d);return h}function zn(m){return l.toByteArray(rr(m))}function Dt(m,s,o,d){let p;for(p=0;p<d&&!(p+o>=s.length||p>=m.length);++p)s[p+o]=m[p];return p}function ke(m,s){return m instanceof s||m!=null&&m.constructor!=null&&m.constructor.name!=null&&m.constructor.name===s.name}function Bn(m){return m!==m}let or=function(){let m="0123456789abcdef",s=new Array(256);for(let o=0;o<16;++o){let d=o*16;for(let p=0;p<16;++p)s[d+p]=m[o]+m[p]}return s}();function _e(m){return typeof BigInt>"u"?Ar:m}function Ar(){throw new Error("BigInt not supported")}return Qe}var He=mr();He.Buffer;He.SlowBuffer;He.INSPECT_MAX_BYTES;He.kMaxLength;var w=He.Buffer,Ja=He.INSPECT_MAX_BYTES,Ka=He.kMaxLength;var Ut={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"https://quote-api.jup.ag/v6",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}},cachePoolInfoChainSec:20},es={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},ts={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org"};import{Big as We}from"big.js";var q=class extends Error{constructor(r,i){super(i),this.errorCode=r}},Z=class extends q{constructor(r){super("SdkError",r)}},Et=class extends q{constructor(r){super("InvalidAmountError",r)}},tt=class extends q{constructor(r){super("AmountNotEnoughError",r)}},Fe=class extends q{constructor(r){super("InsufficientPoolLiquidityError",r)}},ie=class extends q{constructor(r){super("JupiterError",r)}},gt=class extends q{constructor(r){super("InvalidGasFeePaymentOptionError",r)}},ei=class extends q{constructor(r){super("InvalidMessengerOptionError",r)}},ue=class extends q{constructor(r){super("MethodNotSupportedError",r)}},ft=class extends q{constructor(r){super("VerifyTxError",r)}},nt=class extends q{constructor(r){super("InvalidTxError",r)}},_t=class extends q{constructor(r){super("ExtraGasMaxLimitExceededError",r)}},Nt=class extends q{constructor(r,i,a){super("ArgumentInvalidDecimalsError",`Argument '${r}' decimals '${i}' cannot be greater than '${a}'`)}},ht=class extends q{constructor(r){super("TimeoutError",r)}},Vt=class extends q{constructor(r){super("NodeRpcUrlNotInitializedError",`For chain '${r}' Node RPC URL not initialized`)}},we=class extends q{constructor(r){super("CCTPDoesNotSupportedError",r)}},Ot=class extends q{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},lr=(I=>(I.SDK_ERROR="SdkError",I.INVALID_AMOUNT_ERROR="InvalidAmountError",I.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",I.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",I.JUPITER_ERROR="JupiterError",I.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",I.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",I.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",I.VERIFY_TX_ERROR="VerifyTxError",I.INVALID_TX_ERROR="InvalidTxError",I.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",I.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",I.TIMEOUT_ERROR="TimeoutError",I.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",I.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",I.TX_TOO_LARGE="TxTooLargeError",I))(lr||{});var Se=(B=>(B.BSC="BSC",B.ETH="ETH",B.BAS="BAS",B.SOL="SOL",B.TRX="TRX",B.POL="POL",B.ARB="ARB",B.CEL="CEL",B.AVA="AVA",B.SRB="SRB",B.STLR="STLR",B.OPT="OPT",B))(Se||{}),ee=(A=>(A.EVM="EVM",A.SOLANA="SOLANA",A.TRX="TRX",A.SRB="SRB",A))(ee||{});var dr={EVM:18,SOLANA:9,TRX:6,SRB:7},pr={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"},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"}},V=(()=>{let l={...pr};return{addChainsProperties(r){l={...l,...r}},getChainProperty(r){let i=l[r];if(!i)throw new Z(`Cannot find chain properties for ${r}`);return i},getChainsProperties(){return l},getChainDecimalsByType(r){return dr[r]}}})();import Tr from"axios";var ti="3.18.0";import{Big as v}from"big.js";import Cn from"bn.js";function In(l,r){return v(100).minus(v(100).times(r).div(l)).toNumber()}function ze(l,r){return Ne(l,r,3).round(0,v.roundDown)}function pe(l,r){return Ne(l,3,r)}function Ne(l,r,i){let a=v(i).minus(r).toNumber();return v(l).times(yt(a))}function yt(l){return v(10).pow(l)}function O(l,r){return v(l).times(yt(r))}function N(l,r){let i=v(l);return i.eq(0)?v(0):v(i).div(yt(r))}function ge(l){return N(v(l.tokenBalance).minus(l.vUsdBalance).toFixed(),3).div(2).toFixed()}function Me(l,{feeShare:r,decimals:i},a){let A=v(l);if(A.lte(0))return"0";let u=A.times(r),c=A.minus(u),g=ze(c,i),f=v(a.tokenBalance).plus(g),y=ve(f,a.aValue,a.dValue);return v(a.vUsdBalance).minus(y).round(0,v.roundDown).toFixed()}function bt(l,{feeShare:r,decimals:i},a){let A=v(l);if(A.lte(0))return v(0).toFixed();let u=A.plus(a.vUsdBalance),c=ve(u,a.aValue,a.dValue),g=pe(v(a.tokenBalance).minus(c),i),f=v(g).times(r);return v(g).minus(f).round(0,v.roundDown).toFixed()}function ni(l,r){let i=v(l);if(i.lte(0))return r;let a=i.plus(r.vUsdBalance),A=ve(a,r.aValue,r.dValue);return{aValue:r.aValue,dValue:r.dValue,tokenBalance:A.toFixed(0),vUsdBalance:a.toFixed(0)}}function ii(l,{feeShare:r,decimals:i},a){if(v(l).lte(0))return v(0);let A=v(a.vUsdBalance).minus(l);if(A.lte(0))throw new Fe;let u=ve(A,a.aValue,a.dValue),c=v(u).minus(a.tokenBalance),g=pe(c,i),f=v(r).div(v(1).minus(r)),y=v(g).times(f).round(0,v.roundUp);return v(g).plus(y).round(0,v.roundDown)}function ri(l,{feeShare:r,decimals:i},a){if(v(l).lte(0))return v(0);let A=v(r).div(v(1).minus(r)),u=v(l).times(A).round(0,v.roundUp),c=v(l).plus(u),g=ze(c,i),f=v(a.tokenBalance).minus(g);if(f.lte(0))throw new Fe;let y=ve(f,a.aValue,a.dValue);return v(y).minus(a.vUsdBalance).round(0,v.roundDown)}function ve(l,r,i){let a=v(4).times(r).times(v(i).minus(l)).minus(i),A=v(i).pow(3),u=a.pow(2),c=v(l).times(v(l).times(u).plus(v(4).times(r).times(A))).sqrt().round(0,v.roundDown),g=v(8).times(r).times(l),f=a.times(l).plus(c).div(g).round(0,v.roundDown);return f.eq(0)?v(0):f.plus(1)}function ai(l,r,i,a){let A=new Cn(l),u=new Cn(i),c=new Cn(r);return A.mul(u).shrn(a).sub(c).toString()}function si(l){return v(l).gt(0)?`${Number(v(l).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function oi(l,r,i){let a=v(r).times(i),A=v(r).plus(i),u=v(8).times(l).times(a).times(A),c=a.times(v(16).times(l).minus(4)).div(3),g=u.times(u),f=c.times(c).times(c),y=g.plus(f),b=v(y).sqrt(),T=v(Math.cbrt(+u.plus(b).toFixed())),B=v(Math.cbrt(+u.minus(b).toFixed()));return T.plus(B).toFixed()}var Rn=(c=>(c.OK="OK",c.INVALID="INVALID",c.FORBIDDEN="FORBIDDEN",c.UNINITIALIZED="UNINITIALIZED",c.CONTRACT_ADDRESS="CONTRACT_ADDRESS",c.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",c))(Rn||{});var Ge=(a=>(a[a.ALLBRIDGE=1]="ALLBRIDGE",a[a.WORMHOLE=2]="WORMHOLE",a[a.CCTP=3]="CCTP",a))(Ge||{});function Ai(l){return Object.entries(l).reduce((r,i)=>{let a=i[0],A=i[1],u=br(a,A);return u&&(r[a]=u),r},{})}function ci(l){let r={};for(let[i,a]of Object.entries(l)){let A=i;for(let u of a.tokens){let c=it({chainSymbol:A,poolAddress:u.poolAddress}),g=ge(u.poolInfo);r[c]={...u.poolInfo,imbalance:g}}}return r}function gr(l,r){let{name:i,...a}=l,{poolInfo:A,...u}=r;return{...u,...a,chainName:i}}function fr(l){switch(l){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;default:return null}}function hr(l){return Object.entries(l).reduce((r,[i,a])=>(r[i]=yr(a),r),{})}function yr(l){return Object.entries(l).reduce((r,[i,a])=>{let A=fr(i);return A&&(r[A]=a),r},{})}function br(l,r){let i=V.getChainsProperties()[l];if(!i)return null;let a={...i,allbridgeChainId:r.chainId,bridgeAddress:r.bridgeAddress,transferTime:hr(r.transferTime),txCostAmount:r.txCostAmount,confirmations:r.confirmations};return{...a,tokens:r.tokens.map(A=>gr(a,A))}}function it(l){return l.chainSymbol+"_"+l.poolAddress}function ui(l){let r=[];for(let[i,a]of Object.entries(l)){let A=i;for(let u of a.tokens)r.push({chainSymbol:A,poolAddress:u.poolAddress})}return r}function mi(l){let r={};for(let[i,a]of Object.entries(l)){let A=i;for(let[u,c]of Object.entries(a))c.imbalance=ge(c),r[it({chainSymbol:A,poolAddress:u})]=c}return r}var Xt=class{constructor(r){this.api=Tr.create({baseURL:r.coreApiUrl,headers:{Accept:"application/json",...r.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+ti},params:r.coreApiQueryParams})}async getTokenInfo(){let{data:r}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:Ai(r),poolInfoMap:ci(r)}}async getPendingInfo(){let{data:r}=await this.api.get("/pending-info");return r}async getGasBalance(r,i){let{data:a}=await this.api.get(`/check/${r}/${i}`);return a}async getTransferStatus(r,i){let{data:a}=await this.api.get(`/chain/${r}/${i}`);return a}async getReceiveTransactionCost(r){let{data:i}=await this.api.post("/receive-fee",r,{headers:{"Content-Type":"application/json"}});return{exchangeRate:i.exchangeRate,fee:i.fee,sourceNativeTokenPrice:i.sourceNativeTokenPrice}}async getPoolInfoMap(r){let i=r instanceof Array?r:[r],{data:a}=await this.api.post("/pool-info",{pools:i},{headers:{"Content-Type":"application/json"}});return mi(a)}};import Lt from"timed-cache";var kn=20*1e3,Pr=55*1e3,Yt=class{constructor(r){this.apiClient=r;this.tokenInfoCache=new Lt({defaultTtl:Pr}),this.receivedTransactionCache=new Lt({defaultTtl:kn}),this.pendingInfoCache=new Lt({defaultTtl:kn}),this.gasBalanceCache=new Lt({defaultTtl:kn})}getTokenInfo(){let r="TOKEN_INFO_CACHE_KEY",i=this.tokenInfoCache.get(r);if(i)return i;let a=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(r,a),a}async getGasBalance(r,i){let a=`GAS_BALANCE_${r}_${i}`,A=this.gasBalanceCache.get(a);if(A)return A;let u=this.apiClient.getGasBalance(r,i);return this.gasBalanceCache.put(a,u),u}async getPendingInfo(){let r="PENDING_INFO_CACHE_KEY",i=this.pendingInfoCache.get(r);if(i)return i;let a=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(r,a),a}async getReceiveTransactionCost(r){let i=`RECEIVE_TX_COST_${r.sourceChainId}_${r.destinationChainId}_${r.messenger}`,a=this.receivedTransactionCache.get(i);if(a)return a;let A=await this.apiClient.getReceiveTransactionCost(r);return this.receivedTransactionCache.put(i,A),A}async getTransferStatus(r,i){return this.apiClient.getTransferStatus(r,i)}async getPoolInfoMap(r){return this.apiClient.getPoolInfoMap(r)}};var Jt=class{constructor(r){this.apiClient=r}async getChainDetailsMap(){return(await this.apiClient.getTokenInfo()).chainDetailsMap}async tokens(){let r=await this.getChainDetailsMap();return Object.values(r).flatMap(i=>i.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(r,i){return this.apiClient.getGasBalance(r,i)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(r,i){return await this.apiClient.getTransferStatus(r,i)}async getReceiveTransactionCost(r){return await this.apiClient.getReceiveTransactionCost(r)}async getPoolInfoMap(r){return await this.apiClient.getPoolInfoMap(r)}};var Kt=class{constructor(r,i){this.client=r;this.isStaging=i.coreApiQueryParams?.staging==="true"}async getChainDetailsMap(r){let i=await this.client.getChainDetailsMap(),a={};for(let A in i){let u=i[A];u&&(a[A]={...u,tokens:li(u.tokens,r,this.isStaging)})}return a}async tokens(r){return li(await this.client.tokens(),r,this.isStaging)}async getPendingInfo(){return this.client.getPendingInfo()}async getGasBalance(r,i){return this.client.getGasBalance(r,i)}async getTransferStatus(r,i){return await this.client.getTransferStatus(r,i)}async getReceiveTransactionCost(r){return await this.client.getReceiveTransactionCost(r)}cachePut(r,i){return this.client.cachePut(r,i)}getPoolInfoByKey(r){return this.client.getPoolInfoByKey(r)}refreshPoolInfo(r){return this.client.refreshPoolInfo(r)}};function li(l,r,i){return l.filter(a=>i?!0:a.flags[r]).map(wr)}function wr(l){let{flags:r,...i}=l;return i}import Sr from"timed-cache";var Br=55*1e3,Qt=class{constructor(r){this.client=r;this.poolInfoCache=new Mn}async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(r,i){return this.client.getTransferStatus(r,i)}getReceiveTransactionCost(r){return this.client.getReceiveTransactionCost(r)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(r,i){return this.client.getGasBalance(r,i)}async getPoolInfoByKey(r){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let i=this.poolInfoCache.get(r);if(i)return i;{let a=await this.client.getPoolInfoMap(r);this.poolInfoCache.putAll(a);let A=a[it(r)];if(A)return A;throw new Z("Cannot find pool info for "+r.poolAddress+" on chain "+r.chainSymbol)}}async refreshPoolInfo(r){let i;if(r)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),i=await this.client.getPoolInfoMap(r);else{let a=await this.client.getChainDetailsMapAndPoolInfoMap();i=await this.client.getPoolInfoMap(ui(a.chainDetailsMap))}this.poolInfoCache.putAll(i)}cachePut(r,i){this.poolInfoCache.put(it(r),i)}},Mn=class{constructor(){this.cache=new Sr({defaultTtl:Br})}putAll(r){for(let[i,a]of Object.entries(r))this.cache.put(i,a)}putAllIfNotExists(r){for(let[i,a]of Object.entries(r))this.cache.get(i)||this.cache.put(i,a)}put(r,i){this.cache.put(r,i)}get(r){let i=it(r);return this.cache.get(i)}};import na from"tronweb";import ia from"web3";import{Big as di}from"big.js";async function te(l,r){return await l.getPoolInfoByKey({chainSymbol:r.chainSymbol,poolAddress:r.poolAddress})}function L(l){if(di(l).lte(0))throw new Et("Amount must be greater than zero")}function J(l,r,i){let a=di(r).toFixed(),[A,u]=a.split(".");if(u&&u.length>i)throw new Nt(l,u.length,i)}async function Ht(l,r,i){return await Promise.race([l,new Promise((a,A)=>{setTimeout(()=>A(new ht(r)),i)})])}async function vn(l,r,i,a){if(i<1)throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${i} was received.`);let A=0;for(;;)try{return await Ht(l(),r,a)}catch{if(++A>=i)throw new ht(r)}}async function pi(l,r,i,a=1.5,A=!1){let u=[],c=0,g=await l();if(u.push(g),!r(g))return u;let f=new Date(Date.now()+i*1e3).valueOf(),y=1e3,b=y;for(;Date.now()<f;){let T=u[u.length-1];if(T===void 0||!r(T))break;c++,A&&console.info(`Waiting ${y}ms before trying again (bringing the total wait time to ${b}ms so far, of total ${i*1e3}ms)`),await new Promise(S=>setTimeout(S,y)),y=y*a,new Date(Date.now()+y).valueOf()>f&&(y=f-Date.now(),A&&console.info(`was gonna wait too long; new waitTime: ${y}ms`)),b=y+b;let B=await l(T);u.push(B),A&&r(B)&&console.info(`${c}. Called ${l.name}; ${u.length} prev attempts. Most recent: ${JSON.stringify(u[u.length-1],null,2)}`)}return u}import*as jt from"@project-serum/anchor";import{PublicKey as Mi}from"@solana/web3.js";import{Big as Ur}from"big.js";var gi=[{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"}];var fi=[{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"}];import*as ae from"@project-serum/anchor";import{PublicKey as ce}from"@solana/web3.js";async function Be(l,r){return ae.utils.token.associatedAddress({mint:r,owner:l})}async function Ve(l){let[r]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("config")],l);return r}async function hi(l,r){let[i]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("lock"),Uint8Array.from(l)],r);return i}async function Tt(l,r){let[i]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([l])],r);return i}async function rt(l){let r=await Ve(l),[i]=await ce.findProgramAddress([r.toBuffer()],l);return i}async function yi(l,r){let[i]=await ce.findProgramAddress([l.toBuffer()],r);return i}async function at(l,r){let[i]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("token"),l.toBytes()],r);return i}async function bi(l,r,i){let[a]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("other_bridge_token"),w.from([l]),r],i);return a}async function xn(l,r){let[i]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([l])],r);return i}async function Wn(l,r){let[i]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([l])],r);return i}async function Ti(l,r){let[i]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("sent_message"),l],r);return i}async function Fn(l,r,i){let[a]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("user_deposit"),r.toBytes(),l.toBytes()],i);return a}async function Pi(l,r){let[i]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("cctp_bridge"),l.toBytes()],r);return i}async function wi(l,r){let[i]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("token"),l.toBytes()],r);return i}function Si(l,r){let[i]=ce.findProgramAddressSync([ae.utils.bytes.utf8.encode("lock"),r.toBuffer()],l);return i}function Bi(l,r,i,a){let A=je("message_transmitter",i),u=je("token_messenger",a),c=je("__event_authority",a),g=je("token_minter",a),f=je("local_token",a,[r]),y=je("remote_token_messenger",a,[l.toString()]),b=je("sender_authority",a);return{messageTransmitterAccount:A,tokenMessenger:u,tokenMessengerEventAuthority:c,tokenMinter:g,localToken:f,remoteTokenMessengerKey:y,authorityPda:b}}function je(l,r,i=[]){let a=[w.from(ae.utils.bytes.utf8.encode(l))];for(let u of i)typeof u=="string"?a.push(w.from(ae.utils.bytes.utf8.encode(u))):Array.isArray(u)?a.push(w.from(u)):w.isBuffer(u)?a.push(u):a.push(u.toBuffer());return ce.findProgramAddressSync(a,r)[0]}import{AnchorProvider as Rr}from"@project-serum/anchor";import{Connection as kr,PublicKey as Mr}from"@solana/web3.js";function Oe(l,r){let i=new kr(l,"confirmed"),a=new Mr(r);return new Rr(i,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}var Ce=class{};import{PublicKey as vr}from"@solana/web3.js";import{Address as xr}from"@stellar/stellar-sdk";import{Big as De}from"big.js";import Ci from"randombytes";import*as Ii from"tronweb";function Ze(l,r,i){let a;switch(r){case"EVM":{a=Wr(l);break}case"SOLANA":{a=new vr(l).toBuffer();break}case"TRX":{a=Fr(l);break}case"SRB":{a=new xr(l).toBuffer();break}}switch(i){case"EVM":return"0x"+a.toString("hex");case"SOLANA":return Array.from(a);case"TRX":return a.toJSON().data;case"SRB":return a.toJSON().data}}function Ri(l){return w.from(l.replace(/^0x/i,""),"hex")}function Wr(l){let i=Ri(l);return w.concat([w.alloc(32-i.length,0),i],32)}function Fr(l){let r=Pt(l),i=Ri(r);return Gr(i,32)}function Pt(l){return w.from(Ii.utils.crypto.decodeBase58Address(l)).toString("hex").replace(/^41/,"0x")}function Gr(l,r){if(l.length>=r)return l;let i=w.alloc(r,0);return l.copy(i,r-l.length),i}function st(){return Ci(32)}function Gn(){let l=Ci(32).readBigInt64BE();return l<0?l*-1n:l}function Xe(l,r){let i={},a=r.sourceToken;return i.amount=O(r.amount,a.decimals).toFixed(),i.contractAddress=a.bridgeAddress,i.fromAccountAddress=r.fromAccountAddress,i.fromTokenAddress=Ze(a.tokenAddress,l,l),i.toAccountAddress=r.toAccountAddress,i.toTokenAddress=Ze(r.destinationToken.tokenAddress,l,l),i.minimumReceiveAmount=r.minimumReceiveAmount?O(r.minimumReceiveAmount,r.destinationToken.decimals).toFixed():"0",i}async function Ue(l,r,i){let a={};a.fromChainId=r.sourceToken.allbridgeChainId,a.fromChainSymbol=r.sourceToken.chainSymbol;let A=V.getChainProperty(r.destinationToken.chainSymbol).chainType;a.fromTokenAddress=r.sourceToken.tokenAddress,a.toChainId=r.destinationToken.allbridgeChainId,a.toTokenAddress=r.destinationToken.tokenAddress,r.gasFeePaymentMethod==="stablecoin"?a.gasFeePaymentMethod="stablecoin":a.gasFeePaymentMethod="native";let u=r.sourceToken;if(r.messenger===3){if(!u.cctpAddress||!r.destinationToken.cctpAddress)throw new we("Such route does not support CCTP protocol");a.contractAddress=u.cctpAddress}else a.contractAddress=u.bridgeAddress;a.messenger=r.messenger,a.fromAccountAddress=r.fromAccountAddress,a.amount=O(r.amount,u.decimals).toFixed();let{fee:c,feeFormat:g}=r;if(!c){let T=(await Dn(a.fromChainId,r.sourceToken.chainType,a.toChainId,u.decimals,a.messenger,i))[a.gasFeePaymentMethod];if(!T)throw new gt;c=T.int,g="int"}if(g=="float")switch(a.gasFeePaymentMethod){case"native":a.fee=O(c,V.getChainDecimalsByType(u.chainType)).toFixed(0);break;case"stablecoin":a.fee=O(c,u.decimals).toFixed(0);break}else a.fee=c;let{extraGas:f,extraGasFormat:y}=r;if(f&&+f>0){if(y=="float")switch(a.gasFeePaymentMethod){case"native":a.extraGas=O(f,V.getChainDecimalsByType(u.chainType)).toFixed(0);break;case"stablecoin":a.extraGas=O(f,u.decimals).toFixed(0);break}else a.extraGas=f;await Zr(a.extraGas,a.gasFeePaymentMethod,u,r.destinationToken,i)}return a.fromTokenAddress=Ze(a.fromTokenAddress,l,l),a.toAccountAddress=Ze(r.toAccountAddress,A,l),a.toTokenAddress=Ze(a.toTokenAddress,A,l),a.gasFeePaymentMethod=="stablecoin"&&Dr(a.amount,u.decimals,a.fee,a.extraGas),a}function Dr(l,r,i,a){let A=De(l).minus(i).minus(a??0);if(A.lte(0))throw new tt(`Amount not enough to pay fee, ${N(De(A).minus(1).neg(),r).toFixed()} stables is missing`)}async function Dn(l,r,i,a,A,u){let c=await u.getReceiveTransactionCost({sourceChainId:l,destinationChainId:i,messenger:A}),g={native:{int:c.fee,float:N(c.fee,V.getChainDecimalsByType(r)).toFixed()}};if(c.sourceNativeTokenPrice){let f=Ne(new De(c.fee).mul(c.sourceNativeTokenPrice),V.getChainDecimalsByType(r),a).toFixed(0,De.roundUp);g.stablecoin={int:f,float:N(f,a).toFixed()}}return g}async function Zr(l,r,i,a,A){let c=(await Zn(i,a,A)).extraGasMax[r];if(!c)throw new gt(`Impossible to pay extra gas by '${r}' payment method`);let g=c.int;if(De(l).gt(g))throw new _t(`Extra gas ${l} in int format, exceeded limit ${g} for '${r}' payment method`)}async function Zn(l,r,i){let a={},A=await i.getReceiveTransactionCost({sourceChainId:l.allbridgeChainId,destinationChainId:r.allbridgeChainId,messenger:1}),u=r.txCostAmount.maxAmount,c=N(u,V.getChainDecimalsByType(r.chainType)).toFixed(),g=De(c).div(A.exchangeRate).toFixed(V.getChainDecimalsByType(l.chainType),De.roundDown),f=O(g,V.getChainDecimalsByType(l.chainType)).toFixed(0);if(a.native={int:f,float:g},A.sourceNativeTokenPrice){let y=De(g).mul(A.sourceNativeTokenPrice).toFixed(l.decimals,De.roundDown);a.stablecoin={int:O(y,l.decimals).toFixed(0),float:y}}return{extraGasMax:a,destinationChain:{gasAmountMax:{int:u,float:c},swap:{int:r.txCostAmount.swap,float:N(r.txCostAmount.swap,V.getChainDecimalsByType(r.chainType)).toFixed()},transfer:{int:r.txCostAmount.transfer,float:N(r.txCostAmount.transfer,V.getChainDecimalsByType(r.chainType)).toFixed()}},exchangeRate:A.exchangeRate,sourceNativeTokenPrice:A.sourceNativeTokenPrice}}function ki(l){return l.sourceToken.chainSymbol!==l.destinationToken.chainSymbol}var wt=class extends Ce{constructor(i,a,A){super();this.web3=i;this.api=a;this.nodeRpcUrlsConfig=A;this.chainType="EVM"}async send(i){let a=await this.buildRawTransactionSend(i);return this.sendRawTransaction(a)}async buildRawTransactionSwap(i){let a=Xe(this.chainType,i);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(i){let{amount:a,contractAddress:A,fromAccountAddress:u,fromTokenAddress:c,toAccountAddress:g,toTokenAddress:f,minimumReceiveAmount:y}=i,T=this.getBridgeContract(A).methods.swap(a,c,f,g,y);return Promise.resolve({from:u,to:A,data:T.encodeABI()})}async buildRawTransactionSend(i){let a=await Ue(this.chainType,i,this.api),{amount:A,contractAddress:u,fromAccountAddress:c,fromTokenAddress:g,toChainId:f,toAccountAddress:y,toTokenAddress:b,messenger:T,fee:B,gasFeePaymentMethod:S,extraGas:C}=a,M="0x"+st().toString("hex"),I,W,x=B;if(C&&(x=Ur(x).plus(C).toFixed()),T===3){let G=await this.buildRawTransactionCctpSend(i,a,x);I=G.sendMethod,W=G.value}else{let G=this.getBridgeContract(u);S==="stablecoin"?(I=G.methods.swapAndBridge(g,A,y,f,b,M,T,x),W="0"):(I=G.methods.swapAndBridge(g,A,y,f,b,M,T,0),W=x)}return Promise.resolve({from:c,to:u,value:W,data:I.encodeABI()})}async buildRawTransactionCctpSend(i,a,A){let{amount:u,contractAddress:c,toChainId:g,toAccountAddress:f,gasFeePaymentMethod:y}=a,b=this.getContract(fi,c),T,B;if(i.destinationToken.chainType==="SOLANA"){let S,C=new Mi(i.toAccountAddress),M=new Mi(i.destinationToken.tokenAddress),I=await Be(C,M),W=Oe(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),i.toAccountAddress);jt.setProvider(W);let x=await jt.Spl.token(W).account.token.fetchNullable(I);if(x?.authority.equals(C))S=Ze(I.toBase58(),"SOLANA",this.chainType);else{let G=await W.connection.getTokenAccountsByOwner(C,{mint:M});if(G.value.length===0&&!x)S=Ze(I.toBase58(),"SOLANA",this.chainType);else if(G.value.length>0){let _=G.value[0];if(!_?.pubkey)throw new Z("First token account or its public key is undefined");S=Ze(_.pubkey.toBase58(),"SOLANA",this.chainType)}else throw new Z("Associated account has wrong owner")}y==="stablecoin"?(T=b.methods.bridgeWithWalletAddress(u,S,f,g,A),B="0"):(T=b.methods.bridgeWithWalletAddress(u,S,f,g,0),B=A)}else y==="stablecoin"?(T=b.methods.bridge(u,f,g,A),B="0"):(T=b.methods.bridge(u,f,g,0),B=A);return{sendMethod:T,value:B}}async sendRawTransaction(i){let a=await this.web3.eth.estimateGas(i),A={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:u}=await this.web3.eth.sendTransaction({...i,gas:a,...A});return{txId:u}}getContract(i,a){return new this.web3.eth.Contract(i,a)}getBridgeContract(i){return this.getContract(gi,i)}};var qt=class{constructor(r,i,a,A){this.api=r;this.nodeRpcUrlsConfig=i;this.params=a;this.tokenService=A}async approve(r,i){let a,A;i?(a=r,A=i):A=r;let u=St(A.token,A.messenger);return this.tokenService.buildRawTransactionApprove({...A,spender:u},a)}async send(r,i){return L(r.amount),J("amount",r.amount,r.sourceToken.decimals),ki(r)?$t(r.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).buildRawTransactionSend(r):$t(r.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).buildRawTransactionSwap(r)}};import{BN as ut,Program as _n,Spl as Kr,web3 as Le}from"@project-serum/anchor";import{Keypair as Vi,PublicKey as K,SystemProgram as Qr}from"@solana/web3.js";import{Big as xe}from"big.js";var Bt={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"}]};var vi={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"}]};import{Spl as Er}from"@project-serum/anchor";import _r from"big.js";import en from"web3";async function At(l,r){return await Er.token(r).account.token.fetch(l)}async function xi(l,r,i){let a=await r.account.pool.fetch(i),A=a.decimals,u=_r(a.feeShareBp.toString()).div(1e4).toFixed(),c={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 Me(l,{decimals:A,feeShare:u},c)}function Wi(l){let r=l.amount,i="0x"+l.recipient.toString("hex"),a=l.sourceChainId,A=l.destinationChainId,u="0x"+l.receiveToken.toString("hex"),c="0x"+l.nonce.toString("hex"),g=1,f="0x"+l.chainBridge.toString("hex"),y=en.utils.encodePacked({t:"uint256",v:r},{t:"bytes32",v:i},{t:"uint256",v:a},{t:"bytes32",v:u},{t:"uint256",v:c},{t:"uint8",v:g});if(!y)throw new Z("message cannot be undefined");let b=en.utils.keccak256(w.from(y.replace("0x",""),"hex")),T=w.from(b.replace("0x",""),"hex");T[0]=a,T[1]=A;let B=en.utils.encodePacked({t:"bytes32",v:"0x"+T.toString("hex")},{t:"bytes32",v:f});if(!B)throw new nt("messageWithSigner cannot be undefined");let S=en.utils.keccak256(w.from(B.replace("0x",""),"hex")),C=w.from(S.replace("0x",""),"hex");return C[0]=T[0],C[1]=T[1],C}import{ComputeBudgetInstruction as Gi,ComputeBudgetProgram as tn,Connection as Di,TransactionMessage as Nr}from"@solana/web3.js";import{Big as Vr}from"big.js";import{AddressLookupTableAccount as Fi}from"@solana/web3.js";async function qe(l,r){return await Promise.all(l.message.addressTableLookups.map(async i=>new Fi({key:i.accountKey,state:Fi.deserialize(await r.getAccountInfo(i.accountKey).then(a=>{if(!a)throw new Z("Cannot get AccountInfo");return a.data}))})))}var Un="AUTO";async function ct(l,r,i){let a=new Di(i,"confirmed"),A=(await a.simulateTransaction(l)).value.unitsConsumed;await Ui(l.instructions,A,r,a)}async function Zi(l,r,i){let a=new Di(i,"confirmed"),A=await qe(l,a),u=Nr.decompile(l.message,{addressLookupTableAccounts:A});if(l.serialize().length>1232)throw new Ot;await Ui(u.instructions,769230,r,a),l.message=u.compileToV0Message(A)}async function Ui(l,r,i,a){if(r>0){let A=Or(r,l);if(i?.solana){let u=i.solana;if(u===Un)await En(l,a);else if("pricePerUnitInMicroLamports"in u)await En(l,a,u.pricePerUnitInMicroLamports);else{let c=Vr(u.extraFeeInLamports).div(A).mul(yt(6)).toFixed(0);await En(l,a,c)}}}}function Or(l,r){let i=r.findIndex(u=>u.programId.equals(tn.programId)&&Gi.decodeInstructionType(u)==="SetComputeUnitLimit"),a=Number((l*1.3).toFixed(0)),A=tn.setComputeUnitLimit({units:a});return i>=0?r[i]=A:r.push(A),a.toString()}async function En(l,r,i){let a=l.findIndex(c=>c.programId.equals(tn.programId)&&Gi.decodeInstructionType(c)==="SetComputeUnitPrice"),A=BigInt(i||await Xr(r)),u=tn.setComputeUnitPrice({microLamports:A});return a>=0?l[a]=u:l.push(u),A.toString()}async function Xr(l){let r=await l.getRecentPrioritizationFees(),i=0;for(let a of r)i+=a.prioritizationFee;return(i/r.length).toFixed(0)}import{NATIVE_MINT as Lr}from"@solana/spl-token";import{Connection as Yr,TransactionMessage as Ei,VersionedTransaction as Jr}from"@solana/web3.js";import _i,{AxiosError as Ni}from"axios";var nn=class{constructor(r,i){this.connection=new Yr(r),this.jupiterUrl=i.replace(/\/$/,"")}async getJupiterSwapTx(r,i,a,A){let u;try{let T=A?"ExactOut":"ExactIn";u=await _i.get(`${this.jupiterUrl}/quote?inputMint=${i}
2
- &outputMint=${Lr.toString()}
1
+ var pt={},jn=!1;function ur(){if(jn)return pt;jn=!0,pt.byteLength=g,pt.toByteArray=y,pt.fromByteArray=B;for(var l=[],r=[],i=typeof Uint8Array<"u"?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",A=0,u=a.length;A<u;++A)l[A]=a[A],r[a.charCodeAt(A)]=A;r[45]=62,r[95]=63;function c(S){var C=S.length;if(C%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var M=S.indexOf("=");M===-1&&(M=C);var I=M===C?0:4-M%4;return[M,I]}function g(S){var C=c(S),M=C[0],I=C[1];return(M+I)*3/4-I}function f(S,C,M){return(C+M)*3/4-M}function y(S){var C,M=c(S),I=M[0],W=M[1],x=new i(f(S,I,W)),G=0,_=W>0?I-4:I,D;for(D=0;D<_;D+=4)C=r[S.charCodeAt(D)]<<18|r[S.charCodeAt(D+1)]<<12|r[S.charCodeAt(D+2)]<<6|r[S.charCodeAt(D+3)],x[G++]=C>>16&255,x[G++]=C>>8&255,x[G++]=C&255;return W===2&&(C=r[S.charCodeAt(D)]<<2|r[S.charCodeAt(D+1)]>>4,x[G++]=C&255),W===1&&(C=r[S.charCodeAt(D)]<<10|r[S.charCodeAt(D+1)]<<4|r[S.charCodeAt(D+2)]>>2,x[G++]=C>>8&255,x[G++]=C&255),x}function b(S){return l[S>>18&63]+l[S>>12&63]+l[S>>6&63]+l[S&63]}function T(S,C,M){for(var I,W=[],x=C;x<M;x+=3)I=(S[x]<<16&16711680)+(S[x+1]<<8&65280)+(S[x+2]&255),W.push(b(I));return W.join("")}function B(S){for(var C,M=S.length,I=M%3,W=[],x=16383,G=0,_=M-I;G<_;G+=x)W.push(T(S,G,G+x>_?_:G+x));return I===1?(C=S[M-1],W.push(l[C>>2]+l[C<<4&63]+"==")):I===2&&(C=(S[M-2]<<8)+S[M-1],W.push(l[C>>10]+l[C>>4&63]+l[C<<2&63]+"=")),W.join("")}return pt}var Zt={},qn=!1;function mr(){if(qn)return Zt;qn=!0;return Zt.read=function(l,r,i,a,A){var u,c,g=A*8-a-1,f=(1<<g)-1,y=f>>1,b=-7,T=i?A-1:0,B=i?-1:1,S=l[r+T];for(T+=B,u=S&(1<<-b)-1,S>>=-b,b+=g;b>0;u=u*256+l[r+T],T+=B,b-=8);for(c=u&(1<<-b)-1,u>>=-b,b+=a;b>0;c=c*256+l[r+T],T+=B,b-=8);if(u===0)u=1-y;else{if(u===f)return c?NaN:(S?-1:1)*(1/0);c=c+Math.pow(2,a),u=u-y}return(S?-1:1)*c*Math.pow(2,u-a)},Zt.write=function(l,r,i,a,A,u){var c,g,f,y=u*8-A-1,b=(1<<y)-1,T=b>>1,B=A===23?Math.pow(2,-24)-Math.pow(2,-77):0,S=a?0:u-1,C=a?1:-1,M=r<0||r===0&&1/r<0?1:0;for(r=Math.abs(r),isNaN(r)||r===1/0?(g=isNaN(r)?1:0,c=b):(c=Math.floor(Math.log(r)/Math.LN2),r*(f=Math.pow(2,-c))<1&&(c--,f*=2),c+T>=1?r+=B/f:r+=B*Math.pow(2,1-T),r*f>=2&&(c++,f/=2),c+T>=b?(g=0,c=b):c+T>=1?(g=(r*f-1)*Math.pow(2,A),c=c+T):(g=r*Math.pow(2,T-1)*Math.pow(2,A),c=0));A>=8;l[i+S]=g&255,S+=C,g/=256,A-=8);for(c=c<<A|g,y+=A;y>0;l[i+S]=c&255,S+=C,c/=256,y-=8);l[i+S-C]|=M*128},Zt}var Qe={},$n=!1;function lr(){if($n)return Qe;$n=!0;let l=ur(),r=mr(),i=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Qe.Buffer=c,Qe.SlowBuffer=W,Qe.INSPECT_MAX_BYTES=50;let a=2147483647;Qe.kMaxLength=a,c.TYPED_ARRAY_SUPPORT=A(),!c.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 A(){try{let m=new Uint8Array(1),s={foo:function(){return 42}};return Object.setPrototypeOf(s,Uint8Array.prototype),Object.setPrototypeOf(m,s),m.foo()===42}catch{return!1}}Object.defineProperty(c.prototype,"parent",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.buffer}}),Object.defineProperty(c.prototype,"offset",{enumerable:!0,get:function(){if(c.isBuffer(this))return this.byteOffset}});function u(m){if(m>a)throw new RangeError('The value "'+m+'" is invalid for option "size"');let s=new Uint8Array(m);return Object.setPrototypeOf(s,c.prototype),s}function c(m,s,o){if(typeof m=="number"){if(typeof s=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return b(m)}return g(m,s,o)}c.poolSize=8192;function g(m,s,o){if(typeof m=="string")return T(m,s);if(ArrayBuffer.isView(m))return S(m);if(m==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof m);if(Me(m,ArrayBuffer)||m&&Me(m.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Me(m,SharedArrayBuffer)||m&&Me(m.buffer,SharedArrayBuffer)))return C(m,s,o);if(typeof m=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let d=m.valueOf&&m.valueOf();if(d!=null&&d!==m)return c.from(d,s,o);let p=M(m);if(p)return p;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof m[Symbol.toPrimitive]=="function")return c.from(m[Symbol.toPrimitive]("string"),s,o);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof m)}c.from=function(m,s,o){return g(m,s,o)},Object.setPrototypeOf(c.prototype,Uint8Array.prototype),Object.setPrototypeOf(c,Uint8Array);function f(m){if(typeof m!="number")throw new TypeError('"size" argument must be of type number');if(m<0)throw new RangeError('The value "'+m+'" is invalid for option "size"')}function y(m,s,o){return f(m),m<=0?u(m):s!==void 0?typeof o=="string"?u(m).fill(s,o):u(m).fill(s):u(m)}c.alloc=function(m,s,o){return y(m,s,o)};function b(m){return f(m),u(m<0?0:I(m)|0)}c.allocUnsafe=function(m){return b(m)},c.allocUnsafeSlow=function(m){return b(m)};function T(m,s){if((typeof s!="string"||s==="")&&(s="utf8"),!c.isEncoding(s))throw new TypeError("Unknown encoding: "+s);let o=x(m,s)|0,d=u(o),p=d.write(m,s);return p!==o&&(d=d.slice(0,p)),d}function B(m){let s=m.length<0?0:I(m.length)|0,o=u(s);for(let d=0;d<s;d+=1)o[d]=m[d]&255;return o}function S(m){if(Me(m,Uint8Array)){let s=new Uint8Array(m);return C(s.buffer,s.byteOffset,s.byteLength)}return B(m)}function C(m,s,o){if(s<0||m.byteLength<s)throw new RangeError('"offset" is outside of buffer bounds');if(m.byteLength<s+(o||0))throw new RangeError('"length" is outside of buffer bounds');let d;return s===void 0&&o===void 0?d=new Uint8Array(m):o===void 0?d=new Uint8Array(m,s):d=new Uint8Array(m,s,o),Object.setPrototypeOf(d,c.prototype),d}function M(m){if(c.isBuffer(m)){let s=I(m.length)|0,o=u(s);return o.length===0||m.copy(o,0,0,s),o}if(m.length!==void 0)return typeof m.length!="number"||Bn(m.length)?u(0):B(m);if(m.type==="Buffer"&&Array.isArray(m.data))return B(m.data)}function I(m){if(m>=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return m|0}function W(m){return+m!=m&&(m=0),c.alloc(+m)}c.isBuffer=function(s){return s!=null&&s._isBuffer===!0&&s!==c.prototype},c.compare=function(s,o){if(Me(s,Uint8Array)&&(s=c.from(s,s.offset,s.byteLength)),Me(o,Uint8Array)&&(o=c.from(o,o.offset,o.byteLength)),!c.isBuffer(s)||!c.isBuffer(o))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(s===o)return 0;let d=s.length,p=o.length;for(let h=0,P=Math.min(d,p);h<P;++h)if(s[h]!==o[h]){d=s[h],p=o[h];break}return d<p?-1:p<d?1:0},c.isEncoding=function(s){switch(String(s).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}},c.concat=function(s,o){if(!Array.isArray(s))throw new TypeError('"list" argument must be an Array of Buffers');if(s.length===0)return c.alloc(0);let d;if(o===void 0)for(o=0,d=0;d<s.length;++d)o+=s[d].length;let p=c.allocUnsafe(o),h=0;for(d=0;d<s.length;++d){let P=s[d];if(Me(P,Uint8Array))h+P.length>p.length?(c.isBuffer(P)||(P=c.from(P)),P.copy(p,h)):Uint8Array.prototype.set.call(p,P,h);else if(c.isBuffer(P))P.copy(p,h);else throw new TypeError('"list" argument must be an Array of Buffers');h+=P.length}return p};function x(m,s){if(c.isBuffer(m))return m.length;if(ArrayBuffer.isView(m)||Me(m,ArrayBuffer))return m.byteLength;if(typeof m!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof m);let o=m.length,d=arguments.length>2&&arguments[2]===!0;if(!d&&o===0)return 0;let p=!1;for(;;)switch(s){case"ascii":case"latin1":case"binary":return o;case"utf8":case"utf-8":return Sn(m).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return o*2;case"hex":return o>>>1;case"base64":return zn(m).length;default:if(p)return d?-1:Sn(m).length;s=(""+s).toLowerCase(),p=!0}}c.byteLength=x;function G(m,s,o){let d=!1;if((s===void 0||s<0)&&(s=0),s>this.length||((o===void 0||o>this.length)&&(o=this.length),o<=0)||(o>>>=0,s>>>=0,o<=s))return"";for(m||(m="utf8");;)switch(m){case"hex":return Te(this,s,o);case"utf8":case"utf-8":return ne(this,s,o);case"ascii":return Ae(this,s,o);case"latin1":case"binary":return be(this,s,o);case"base64":return me(this,s,o);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return de(this,s,o);default:if(d)throw new TypeError("Unknown encoding: "+m);m=(m+"").toLowerCase(),d=!0}}c.prototype._isBuffer=!0;function _(m,s,o){let d=m[s];m[s]=m[o],m[o]=d}c.prototype.swap16=function(){let s=this.length;if(s%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let o=0;o<s;o+=2)_(this,o,o+1);return this},c.prototype.swap32=function(){let s=this.length;if(s%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let o=0;o<s;o+=4)_(this,o,o+3),_(this,o+1,o+2);return this},c.prototype.swap64=function(){let s=this.length;if(s%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let o=0;o<s;o+=8)_(this,o,o+7),_(this,o+1,o+6),_(this,o+2,o+5),_(this,o+3,o+4);return this},c.prototype.toString=function(){let s=this.length;return s===0?"":arguments.length===0?ne(this,0,s):G.apply(this,arguments)},c.prototype.toLocaleString=c.prototype.toString,c.prototype.equals=function(s){if(!c.isBuffer(s))throw new TypeError("Argument must be a Buffer");return this===s?!0:c.compare(this,s)===0},c.prototype.inspect=function(){let s="",o=Qe.INSPECT_MAX_BYTES;return s=this.toString("hex",0,o).replace(/(.{2})/g,"$1 ").trim(),this.length>o&&(s+=" ... "),"<Buffer "+s+">"},i&&(c.prototype[i]=c.prototype.inspect),c.prototype.compare=function(s,o,d,p,h){if(Me(s,Uint8Array)&&(s=c.from(s,s.offset,s.byteLength)),!c.isBuffer(s))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof s);if(o===void 0&&(o=0),d===void 0&&(d=s?s.length:0),p===void 0&&(p=0),h===void 0&&(h=this.length),o<0||d>s.length||p<0||h>this.length)throw new RangeError("out of range index");if(p>=h&&o>=d)return 0;if(p>=h)return-1;if(o>=d)return 1;if(o>>>=0,d>>>=0,p>>>=0,h>>>=0,this===s)return 0;let P=h-p,U=d-o,Q=Math.min(P,U),Y=this.slice(p,h),H=s.slice(o,d);for(let X=0;X<Q;++X)if(Y[X]!==H[X]){P=Y[X],U=H[X];break}return P<U?-1:U<P?1:0};function D(m,s,o,d,p){if(m.length===0)return-1;if(typeof o=="string"?(d=o,o=0):o>2147483647?o=2147483647:o<-2147483648&&(o=-2147483648),o=+o,Bn(o)&&(o=p?0:m.length-1),o<0&&(o=m.length+o),o>=m.length){if(p)return-1;o=m.length-1}else if(o<0)if(p)o=0;else return-1;if(typeof s=="string"&&(s=c.from(s,d)),c.isBuffer(s))return s.length===0?-1:E(m,s,o,d,p);if(typeof s=="number")return s=s&255,typeof Uint8Array.prototype.indexOf=="function"?p?Uint8Array.prototype.indexOf.call(m,s,o):Uint8Array.prototype.lastIndexOf.call(m,s,o):E(m,[s],o,d,p);throw new TypeError("val must be string, number or Buffer")}function E(m,s,o,d,p){let h=1,P=m.length,U=s.length;if(d!==void 0&&(d=String(d).toLowerCase(),d==="ucs2"||d==="ucs-2"||d==="utf16le"||d==="utf-16le")){if(m.length<2||s.length<2)return-1;h=2,P/=2,U/=2,o/=2}function Q(H,X){return h===1?H[X]:H.readUInt16BE(X*h)}let Y;if(p){let H=-1;for(Y=o;Y<P;Y++)if(Q(m,Y)===Q(s,H===-1?0:Y-H)){if(H===-1&&(H=Y),Y-H+1===U)return H*h}else H!==-1&&(Y-=Y-H),H=-1}else for(o+U>P&&(o=P-U),Y=o;Y>=0;Y--){let H=!0;for(let X=0;X<U;X++)if(Q(m,Y+X)!==Q(s,X)){H=!1;break}if(H)return Y}return-1}c.prototype.includes=function(s,o,d){return this.indexOf(s,o,d)!==-1},c.prototype.indexOf=function(s,o,d){return D(this,s,o,d,!0)},c.prototype.lastIndexOf=function(s,o,d){return D(this,s,o,d,!1)};function se(m,s,o,d){o=Number(o)||0;let p=m.length-o;d?(d=Number(d),d>p&&(d=p)):d=p;let h=s.length;d>h/2&&(d=h/2);let P;for(P=0;P<d;++P){let U=parseInt(s.substr(P*2,2),16);if(Bn(U))return P;m[o+P]=U}return P}function z(m,s,o,d){return Dt(Sn(s,m.length-o),m,o,d)}function he(m,s,o,d){return Dt(sr(s),m,o,d)}function ye(m,s,o,d){return Dt(zn(s),m,o,d)}function Pe(m,s,o,d){return Dt(or(s,m.length-o),m,o,d)}c.prototype.write=function(s,o,d,p){if(o===void 0)p="utf8",d=this.length,o=0;else if(d===void 0&&typeof o=="string")p=o,d=this.length,o=0;else if(isFinite(o))o=o>>>0,isFinite(d)?(d=d>>>0,p===void 0&&(p="utf8")):(p=d,d=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let h=this.length-o;if((d===void 0||d>h)&&(d=h),s.length>0&&(d<0||o<0)||o>this.length)throw new RangeError("Attempt to write outside buffer bounds");p||(p="utf8");let P=!1;for(;;)switch(p){case"hex":return se(this,s,o,d);case"utf8":case"utf-8":return z(this,s,o,d);case"ascii":case"latin1":case"binary":return he(this,s,o,d);case"base64":return ye(this,s,o,d);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Pe(this,s,o,d);default:if(P)throw new TypeError("Unknown encoding: "+p);p=(""+p).toLowerCase(),P=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function me(m,s,o){return s===0&&o===m.length?l.fromByteArray(m):l.fromByteArray(m.slice(s,o))}function ne(m,s,o){o=Math.min(m.length,o);let d=[],p=s;for(;p<o;){let h=m[p],P=null,U=h>239?4:h>223?3:h>191?2:1;if(p+U<=o){let Q,Y,H,X;switch(U){case 1:h<128&&(P=h);break;case 2:Q=m[p+1],(Q&192)===128&&(X=(h&31)<<6|Q&63,X>127&&(P=X));break;case 3:Q=m[p+1],Y=m[p+2],(Q&192)===128&&(Y&192)===128&&(X=(h&15)<<12|(Q&63)<<6|Y&63,X>2047&&(X<55296||X>57343)&&(P=X));break;case 4:Q=m[p+1],Y=m[p+2],H=m[p+3],(Q&192)===128&&(Y&192)===128&&(H&192)===128&&(X=(h&15)<<18|(Q&63)<<12|(Y&63)<<6|H&63,X>65535&&X<1114112&&(P=X))}}P===null?(P=65533,U=1):P>65535&&(P-=65536,d.push(P>>>10&1023|55296),P=56320|P&1023),d.push(P),p+=U}return le(d)}let oe=4096;function le(m){let s=m.length;if(s<=oe)return String.fromCharCode.apply(String,m);let o="",d=0;for(;d<s;)o+=String.fromCharCode.apply(String,m.slice(d,d+=oe));return o}function Ae(m,s,o){let d="";o=Math.min(m.length,o);for(let p=s;p<o;++p)d+=String.fromCharCode(m[p]&127);return d}function be(m,s,o){let d="";o=Math.min(m.length,o);for(let p=s;p<o;++p)d+=String.fromCharCode(m[p]);return d}function Te(m,s,o){let d=m.length;(!s||s<0)&&(s=0),(!o||o<0||o>d)&&(o=d);let p="";for(let h=s;h<o;++h)p+=Ar[m[h]];return p}function de(m,s,o){let d=m.slice(s,o),p="";for(let h=0;h<d.length-1;h+=2)p+=String.fromCharCode(d[h]+d[h+1]*256);return p}c.prototype.slice=function(s,o){let d=this.length;s=~~s,o=o===void 0?d:~~o,s<0?(s+=d,s<0&&(s=0)):s>d&&(s=d),o<0?(o+=d,o<0&&(o=0)):o>d&&(o=d),o<s&&(o=s);let p=this.subarray(s,o);return Object.setPrototypeOf(p,c.prototype),p};function F(m,s,o){if(m%1!==0||m<0)throw new RangeError("offset is not uint");if(m+s>o)throw new RangeError("Trying to access beyond buffer length")}c.prototype.readUintLE=c.prototype.readUIntLE=function(s,o,d){s=s>>>0,o=o>>>0,d||F(s,o,this.length);let p=this[s],h=1,P=0;for(;++P<o&&(h*=256);)p+=this[s+P]*h;return p},c.prototype.readUintBE=c.prototype.readUIntBE=function(s,o,d){s=s>>>0,o=o>>>0,d||F(s,o,this.length);let p=this[s+--o],h=1;for(;o>0&&(h*=256);)p+=this[s+--o]*h;return p},c.prototype.readUint8=c.prototype.readUInt8=function(s,o){return s=s>>>0,o||F(s,1,this.length),this[s]},c.prototype.readUint16LE=c.prototype.readUInt16LE=function(s,o){return s=s>>>0,o||F(s,2,this.length),this[s]|this[s+1]<<8},c.prototype.readUint16BE=c.prototype.readUInt16BE=function(s,o){return s=s>>>0,o||F(s,2,this.length),this[s]<<8|this[s+1]},c.prototype.readUint32LE=c.prototype.readUInt32LE=function(s,o){return s=s>>>0,o||F(s,4,this.length),(this[s]|this[s+1]<<8|this[s+2]<<16)+this[s+3]*16777216},c.prototype.readUint32BE=c.prototype.readUInt32BE=function(s,o){return s=s>>>0,o||F(s,4,this.length),this[s]*16777216+(this[s+1]<<16|this[s+2]<<8|this[s+3])},c.prototype.readBigUInt64LE=_e(function(s){s=s>>>0,et(s,"offset");let o=this[s],d=this[s+7];(o===void 0||d===void 0)&&dt(s,this.length-8);let p=o+this[++s]*2**8+this[++s]*2**16+this[++s]*2**24,h=this[++s]+this[++s]*2**8+this[++s]*2**16+d*2**24;return BigInt(p)+(BigInt(h)<<BigInt(32))}),c.prototype.readBigUInt64BE=_e(function(s){s=s>>>0,et(s,"offset");let o=this[s],d=this[s+7];(o===void 0||d===void 0)&&dt(s,this.length-8);let p=o*2**24+this[++s]*2**16+this[++s]*2**8+this[++s],h=this[++s]*2**24+this[++s]*2**16+this[++s]*2**8+d;return(BigInt(p)<<BigInt(32))+BigInt(h)}),c.prototype.readIntLE=function(s,o,d){s=s>>>0,o=o>>>0,d||F(s,o,this.length);let p=this[s],h=1,P=0;for(;++P<o&&(h*=256);)p+=this[s+P]*h;return h*=128,p>=h&&(p-=Math.pow(2,8*o)),p},c.prototype.readIntBE=function(s,o,d){s=s>>>0,o=o>>>0,d||F(s,o,this.length);let p=o,h=1,P=this[s+--p];for(;p>0&&(h*=256);)P+=this[s+--p]*h;return h*=128,P>=h&&(P-=Math.pow(2,8*o)),P},c.prototype.readInt8=function(s,o){return s=s>>>0,o||F(s,1,this.length),this[s]&128?(255-this[s]+1)*-1:this[s]},c.prototype.readInt16LE=function(s,o){s=s>>>0,o||F(s,2,this.length);let d=this[s]|this[s+1]<<8;return d&32768?d|4294901760:d},c.prototype.readInt16BE=function(s,o){s=s>>>0,o||F(s,2,this.length);let d=this[s+1]|this[s]<<8;return d&32768?d|4294901760:d},c.prototype.readInt32LE=function(s,o){return s=s>>>0,o||F(s,4,this.length),this[s]|this[s+1]<<8|this[s+2]<<16|this[s+3]<<24},c.prototype.readInt32BE=function(s,o){return s=s>>>0,o||F(s,4,this.length),this[s]<<24|this[s+1]<<16|this[s+2]<<8|this[s+3]},c.prototype.readBigInt64LE=_e(function(s){s=s>>>0,et(s,"offset");let o=this[s],d=this[s+7];(o===void 0||d===void 0)&&dt(s,this.length-8);let p=this[s+4]+this[s+5]*2**8+this[s+6]*2**16+(d<<24);return(BigInt(p)<<BigInt(32))+BigInt(o+this[++s]*2**8+this[++s]*2**16+this[++s]*2**24)}),c.prototype.readBigInt64BE=_e(function(s){s=s>>>0,et(s,"offset");let o=this[s],d=this[s+7];(o===void 0||d===void 0)&&dt(s,this.length-8);let p=(o<<24)+this[++s]*2**16+this[++s]*2**8+this[++s];return(BigInt(p)<<BigInt(32))+BigInt(this[++s]*2**24+this[++s]*2**16+this[++s]*2**8+d)}),c.prototype.readFloatLE=function(s,o){return s=s>>>0,o||F(s,4,this.length),r.read(this,s,!0,23,4)},c.prototype.readFloatBE=function(s,o){return s=s>>>0,o||F(s,4,this.length),r.read(this,s,!1,23,4)},c.prototype.readDoubleLE=function(s,o){return s=s>>>0,o||F(s,8,this.length),r.read(this,s,!0,52,8)},c.prototype.readDoubleBE=function(s,o){return s=s>>>0,o||F(s,8,this.length),r.read(this,s,!1,52,8)};function $(m,s,o,d,p,h){if(!c.isBuffer(m))throw new TypeError('"buffer" argument must be a Buffer instance');if(s>p||s<h)throw new RangeError('"value" argument is out of bounds');if(o+d>m.length)throw new RangeError("Index out of range")}c.prototype.writeUintLE=c.prototype.writeUIntLE=function(s,o,d,p){if(s=+s,o=o>>>0,d=d>>>0,!p){let U=Math.pow(2,8*d)-1;$(this,s,o,d,U,0)}let h=1,P=0;for(this[o]=s&255;++P<d&&(h*=256);)this[o+P]=s/h&255;return o+d},c.prototype.writeUintBE=c.prototype.writeUIntBE=function(s,o,d,p){if(s=+s,o=o>>>0,d=d>>>0,!p){let U=Math.pow(2,8*d)-1;$(this,s,o,d,U,0)}let h=d-1,P=1;for(this[o+h]=s&255;--h>=0&&(P*=256);)this[o+h]=s/P&255;return o+d},c.prototype.writeUint8=c.prototype.writeUInt8=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,1,255,0),this[o]=s&255,o+1},c.prototype.writeUint16LE=c.prototype.writeUInt16LE=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,2,65535,0),this[o]=s&255,this[o+1]=s>>>8,o+2},c.prototype.writeUint16BE=c.prototype.writeUInt16BE=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,2,65535,0),this[o]=s>>>8,this[o+1]=s&255,o+2},c.prototype.writeUint32LE=c.prototype.writeUInt32LE=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,4,4294967295,0),this[o+3]=s>>>24,this[o+2]=s>>>16,this[o+1]=s>>>8,this[o]=s&255,o+4},c.prototype.writeUint32BE=c.prototype.writeUInt32BE=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,4,4294967295,0),this[o]=s>>>24,this[o+1]=s>>>16,this[o+2]=s>>>8,this[o+3]=s&255,o+4};function Gt(m,s,o,d,p){Hn(s,d,p,m,o,7);let h=Number(s&BigInt(4294967295));m[o++]=h,h=h>>8,m[o++]=h,h=h>>8,m[o++]=h,h=h>>8,m[o++]=h;let P=Number(s>>BigInt(32)&BigInt(4294967295));return m[o++]=P,P=P>>8,m[o++]=P,P=P>>8,m[o++]=P,P=P>>8,m[o++]=P,o}function Ln(m,s,o,d,p){Hn(s,d,p,m,o,7);let h=Number(s&BigInt(4294967295));m[o+7]=h,h=h>>8,m[o+6]=h,h=h>>8,m[o+5]=h,h=h>>8,m[o+4]=h;let P=Number(s>>BigInt(32)&BigInt(4294967295));return m[o+3]=P,P=P>>8,m[o+2]=P,P=P>>8,m[o+1]=P,P=P>>8,m[o]=P,o+8}c.prototype.writeBigUInt64LE=_e(function(s,o=0){return Gt(this,s,o,BigInt(0),BigInt("0xffffffffffffffff"))}),c.prototype.writeBigUInt64BE=_e(function(s,o=0){return Ln(this,s,o,BigInt(0),BigInt("0xffffffffffffffff"))}),c.prototype.writeIntLE=function(s,o,d,p){if(s=+s,o=o>>>0,!p){let Q=Math.pow(2,8*d-1);$(this,s,o,d,Q-1,-Q)}let h=0,P=1,U=0;for(this[o]=s&255;++h<d&&(P*=256);)s<0&&U===0&&this[o+h-1]!==0&&(U=1),this[o+h]=(s/P>>0)-U&255;return o+d},c.prototype.writeIntBE=function(s,o,d,p){if(s=+s,o=o>>>0,!p){let Q=Math.pow(2,8*d-1);$(this,s,o,d,Q-1,-Q)}let h=d-1,P=1,U=0;for(this[o+h]=s&255;--h>=0&&(P*=256);)s<0&&U===0&&this[o+h+1]!==0&&(U=1),this[o+h]=(s/P>>0)-U&255;return o+d},c.prototype.writeInt8=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,1,127,-128),s<0&&(s=255+s+1),this[o]=s&255,o+1},c.prototype.writeInt16LE=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,2,32767,-32768),this[o]=s&255,this[o+1]=s>>>8,o+2},c.prototype.writeInt16BE=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,2,32767,-32768),this[o]=s>>>8,this[o+1]=s&255,o+2},c.prototype.writeInt32LE=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,4,2147483647,-2147483648),this[o]=s&255,this[o+1]=s>>>8,this[o+2]=s>>>16,this[o+3]=s>>>24,o+4},c.prototype.writeInt32BE=function(s,o,d){return s=+s,o=o>>>0,d||$(this,s,o,4,2147483647,-2147483648),s<0&&(s=4294967295+s+1),this[o]=s>>>24,this[o+1]=s>>>16,this[o+2]=s>>>8,this[o+3]=s&255,o+4},c.prototype.writeBigInt64LE=_e(function(s,o=0){return Gt(this,s,o,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),c.prototype.writeBigInt64BE=_e(function(s,o=0){return Ln(this,s,o,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function Yn(m,s,o,d,p,h){if(o+d>m.length)throw new RangeError("Index out of range");if(o<0)throw new RangeError("Index out of range")}function Jn(m,s,o,d,p){return s=+s,o=o>>>0,p||Yn(m,s,o,4),r.write(m,s,o,d,23,4),o+4}c.prototype.writeFloatLE=function(s,o,d){return Jn(this,s,o,!0,d)},c.prototype.writeFloatBE=function(s,o,d){return Jn(this,s,o,!1,d)};function Kn(m,s,o,d,p){return s=+s,o=o>>>0,p||Yn(m,s,o,8),r.write(m,s,o,d,52,8),o+8}c.prototype.writeDoubleLE=function(s,o,d){return Kn(this,s,o,!0,d)},c.prototype.writeDoubleBE=function(s,o,d){return Kn(this,s,o,!1,d)},c.prototype.copy=function(s,o,d,p){if(!c.isBuffer(s))throw new TypeError("argument should be a Buffer");if(d||(d=0),!p&&p!==0&&(p=this.length),o>=s.length&&(o=s.length),o||(o=0),p>0&&p<d&&(p=d),p===d||s.length===0||this.length===0)return 0;if(o<0)throw new RangeError("targetStart out of bounds");if(d<0||d>=this.length)throw new RangeError("Index out of range");if(p<0)throw new RangeError("sourceEnd out of bounds");p>this.length&&(p=this.length),s.length-o<p-d&&(p=s.length-o+d);let h=p-d;return this===s&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(o,d,p):Uint8Array.prototype.set.call(s,this.subarray(d,p),o),h},c.prototype.fill=function(s,o,d,p){if(typeof s=="string"){if(typeof o=="string"?(p=o,o=0,d=this.length):typeof d=="string"&&(p=d,d=this.length),p!==void 0&&typeof p!="string")throw new TypeError("encoding must be a string");if(typeof p=="string"&&!c.isEncoding(p))throw new TypeError("Unknown encoding: "+p);if(s.length===1){let P=s.charCodeAt(0);(p==="utf8"&&P<128||p==="latin1")&&(s=P)}}else typeof s=="number"?s=s&255:typeof s=="boolean"&&(s=Number(s));if(o<0||this.length<o||this.length<d)throw new RangeError("Out of range index");if(d<=o)return this;o=o>>>0,d=d===void 0?this.length:d>>>0,s||(s=0);let h;if(typeof s=="number")for(h=o;h<d;++h)this[h]=s;else{let P=c.isBuffer(s)?s:c.from(s,p),U=P.length;if(U===0)throw new TypeError('The value "'+s+'" is invalid for argument "value"');for(h=0;h<d-o;++h)this[h+o]=P[h%U]}return this};let $e={};function wn(m,s,o){$e[m]=class extends o{constructor(){super(),Object.defineProperty(this,"message",{value:s.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${m}]`,this.stack,delete this.name}get code(){return m}set code(p){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:p,writable:!0})}toString(){return`${this.name} [${m}]: ${this.message}`}}}wn("ERR_BUFFER_OUT_OF_BOUNDS",function(m){return m?`${m} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),wn("ERR_INVALID_ARG_TYPE",function(m,s){return`The "${m}" argument must be of type number. Received type ${typeof s}`},TypeError),wn("ERR_OUT_OF_RANGE",function(m,s,o){let d=`The value of "${m}" is out of range.`,p=o;return Number.isInteger(o)&&Math.abs(o)>2**32?p=Qn(String(o)):typeof o=="bigint"&&(p=String(o),(o>BigInt(2)**BigInt(32)||o<-(BigInt(2)**BigInt(32)))&&(p=Qn(p)),p+="n"),d+=` It must be ${s}. Received ${p}`,d},RangeError);function Qn(m){let s="",o=m.length,d=m[0]==="-"?1:0;for(;o>=d+4;o-=3)s=`_${m.slice(o-3,o)}${s}`;return`${m.slice(0,o)}${s}`}function ir(m,s,o){et(s,"offset"),(m[s]===void 0||m[s+o]===void 0)&&dt(s,m.length-(o+1))}function Hn(m,s,o,d,p,h){if(m>o||m<s){let P=typeof s=="bigint"?"n":"",U;throw h>3?s===0||s===BigInt(0)?U=`>= 0${P} and < 2${P} ** ${(h+1)*8}${P}`:U=`>= -(2${P} ** ${(h+1)*8-1}${P}) and < 2 ** ${(h+1)*8-1}${P}`:U=`>= ${s}${P} and <= ${o}${P}`,new $e.ERR_OUT_OF_RANGE("value",U,m)}ir(d,p,h)}function et(m,s){if(typeof m!="number")throw new $e.ERR_INVALID_ARG_TYPE(s,"number",m)}function dt(m,s,o){throw Math.floor(m)!==m?(et(m,o),new $e.ERR_OUT_OF_RANGE(o||"offset","an integer",m)):s<0?new $e.ERR_BUFFER_OUT_OF_BOUNDS:new $e.ERR_OUT_OF_RANGE(o||"offset",`>= ${o?1:0} and <= ${s}`,m)}let rr=/[^+/0-9A-Za-z-_]/g;function ar(m){if(m=m.split("=")[0],m=m.trim().replace(rr,""),m.length<2)return"";for(;m.length%4!==0;)m=m+"=";return m}function Sn(m,s){s=s||1/0;let o,d=m.length,p=null,h=[];for(let P=0;P<d;++P){if(o=m.charCodeAt(P),o>55295&&o<57344){if(!p){if(o>56319){(s-=3)>-1&&h.push(239,191,189);continue}else if(P+1===d){(s-=3)>-1&&h.push(239,191,189);continue}p=o;continue}if(o<56320){(s-=3)>-1&&h.push(239,191,189),p=o;continue}o=(p-55296<<10|o-56320)+65536}else p&&(s-=3)>-1&&h.push(239,191,189);if(p=null,o<128){if((s-=1)<0)break;h.push(o)}else if(o<2048){if((s-=2)<0)break;h.push(o>>6|192,o&63|128)}else if(o<65536){if((s-=3)<0)break;h.push(o>>12|224,o>>6&63|128,o&63|128)}else if(o<1114112){if((s-=4)<0)break;h.push(o>>18|240,o>>12&63|128,o>>6&63|128,o&63|128)}else throw new Error("Invalid code point")}return h}function sr(m){let s=[];for(let o=0;o<m.length;++o)s.push(m.charCodeAt(o)&255);return s}function or(m,s){let o,d,p,h=[];for(let P=0;P<m.length&&!((s-=2)<0);++P)o=m.charCodeAt(P),d=o>>8,p=o%256,h.push(p),h.push(d);return h}function zn(m){return l.toByteArray(ar(m))}function Dt(m,s,o,d){let p;for(p=0;p<d&&!(p+o>=s.length||p>=m.length);++p)s[p+o]=m[p];return p}function Me(m,s){return m instanceof s||m!=null&&m.constructor!=null&&m.constructor.name!=null&&m.constructor.name===s.name}function Bn(m){return m!==m}let Ar=function(){let m="0123456789abcdef",s=new Array(256);for(let o=0;o<16;++o){let d=o*16;for(let p=0;p<16;++p)s[d+p]=m[o]+m[p]}return s}();function _e(m){return typeof BigInt>"u"?cr:m}function cr(){throw new Error("BigInt not supported")}return Qe}var He=lr();He.Buffer;He.SlowBuffer;He.INSPECT_MAX_BYTES;He.kMaxLength;var w=He.Buffer,Ja=He.INSPECT_MAX_BYTES,Ka=He.kMaxLength;var Ut={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"https://quote-api.jup.ag/v6",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}},cachePoolInfoChainSec:20},es={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},ts={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org"};import{Big as We}from"big.js";var q=class extends Error{constructor(r,i){super(i),this.errorCode=r}},Z=class extends q{constructor(r){super("SdkError",r)}},Et=class extends q{constructor(r){super("InvalidAmountError",r)}},tt=class extends q{constructor(r){super("AmountNotEnoughError",r)}},Fe=class extends q{constructor(r){super("InsufficientPoolLiquidityError",r)}},ie=class extends q{constructor(r){super("JupiterError",r)}},gt=class extends q{constructor(r){super("InvalidGasFeePaymentOptionError",r)}},ei=class extends q{constructor(r){super("InvalidMessengerOptionError",r)}},ue=class extends q{constructor(r){super("MethodNotSupportedError",r)}},ft=class extends q{constructor(r){super("VerifyTxError",r)}},nt=class extends q{constructor(r){super("InvalidTxError",r)}},_t=class extends q{constructor(r){super("ExtraGasMaxLimitExceededError",r)}},Nt=class extends q{constructor(r,i,a){super("ArgumentInvalidDecimalsError",`Argument '${r}' decimals '${i}' cannot be greater than '${a}'`)}},ht=class extends q{constructor(r){super("TimeoutError",r)}},Vt=class extends q{constructor(r){super("NodeRpcUrlNotInitializedError",`For chain '${r}' Node RPC URL not initialized`)}},we=class extends q{constructor(r){super("CCTPDoesNotSupportedError",r)}},Ot=class extends q{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},dr=(I=>(I.SDK_ERROR="SdkError",I.INVALID_AMOUNT_ERROR="InvalidAmountError",I.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",I.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",I.JUPITER_ERROR="JupiterError",I.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",I.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",I.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",I.VERIFY_TX_ERROR="VerifyTxError",I.INVALID_TX_ERROR="InvalidTxError",I.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",I.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",I.TIMEOUT_ERROR="TimeoutError",I.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",I.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",I.TX_TOO_LARGE="TxTooLargeError",I))(dr||{});var Se=(B=>(B.BSC="BSC",B.ETH="ETH",B.BAS="BAS",B.SOL="SOL",B.TRX="TRX",B.POL="POL",B.ARB="ARB",B.CEL="CEL",B.AVA="AVA",B.SRB="SRB",B.STLR="STLR",B.OPT="OPT",B))(Se||{}),ee=(A=>(A.EVM="EVM",A.SOLANA="SOLANA",A.TRX="TRX",A.SRB="SRB",A))(ee||{});var pr={EVM:18,SOLANA:9,TRX:6,SRB:7},gr={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"},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"}},V=(()=>{let l={...gr};return{addChainsProperties(r){l={...l,...r}},getChainProperty(r){let i=l[r];if(!i)throw new Z(`Cannot find chain properties for ${r}`);return i},getChainsProperties(){return l},getChainDecimalsByType(r){return pr[r]}}})();import Pr from"axios";var ti="3.19.1-alpha.1";import{Big as v}from"big.js";import Cn from"bn.js";function In(l,r){return v(100).minus(v(100).times(r).div(l)).toNumber()}function ze(l,r){return Ne(l,r,3).round(0,v.roundDown)}function pe(l,r){return Ne(l,3,r)}function Ne(l,r,i){let a=v(i).minus(r).toNumber();return v(l).times(yt(a))}function yt(l){return v(10).pow(l)}function O(l,r){return v(l).times(yt(r))}function N(l,r){let i=v(l);return i.eq(0)?v(0):v(i).div(yt(r))}function ge(l){return N(v(l.tokenBalance).minus(l.vUsdBalance).toFixed(),3).div(2).toFixed()}function ve(l,{feeShare:r,decimals:i},a){let A=v(l);if(A.lte(0))return"0";let u=A.times(r),c=A.minus(u),g=ze(c,i),f=v(a.tokenBalance).plus(g),y=xe(f,a.aValue,a.dValue);return v(a.vUsdBalance).minus(y).round(0,v.roundDown).toFixed()}function bt(l,{feeShare:r,decimals:i},a){let A=v(l);if(A.lte(0))return v(0).toFixed();let u=A.plus(a.vUsdBalance),c=xe(u,a.aValue,a.dValue),g=pe(v(a.tokenBalance).minus(c),i),f=v(g).times(r);return v(g).minus(f).round(0,v.roundDown).toFixed()}function ni(l,r){let i=v(l);if(i.lte(0))return r;let a=i.plus(r.vUsdBalance),A=xe(a,r.aValue,r.dValue);return{aValue:r.aValue,dValue:r.dValue,tokenBalance:A.toFixed(0),vUsdBalance:a.toFixed(0)}}function ii(l,{feeShare:r,decimals:i},a){if(v(l).lte(0))return v(0);let A=v(a.vUsdBalance).minus(l);if(A.lte(0))throw new Fe;let u=xe(A,a.aValue,a.dValue),c=v(u).minus(a.tokenBalance),g=pe(c,i),f=v(r).div(v(1).minus(r)),y=v(g).times(f).round(0,v.roundUp);return v(g).plus(y).round(0,v.roundDown)}function ri(l,{feeShare:r,decimals:i},a){if(v(l).lte(0))return v(0);let A=v(r).div(v(1).minus(r)),u=v(l).times(A).round(0,v.roundUp),c=v(l).plus(u),g=ze(c,i),f=v(a.tokenBalance).minus(g);if(f.lte(0))throw new Fe;let y=xe(f,a.aValue,a.dValue);return v(y).minus(a.vUsdBalance).round(0,v.roundDown)}function xe(l,r,i){let a=v(4).times(r).times(v(i).minus(l)).minus(i),A=v(i).pow(3),u=a.pow(2),c=v(l).times(v(l).times(u).plus(v(4).times(r).times(A))).sqrt().round(0,v.roundDown),g=v(8).times(r).times(l),f=a.times(l).plus(c).div(g).round(0,v.roundDown);return f.eq(0)?v(0):f.plus(1)}function ai(l,r,i,a){let A=new Cn(l),u=new Cn(i),c=new Cn(r);return A.mul(u).shrn(a).sub(c).toString()}function si(l){return v(l).gt(0)?`${Number(v(l).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function oi(l,r,i){let a=v(r).times(i),A=v(r).plus(i),u=v(8).times(l).times(a).times(A),c=a.times(v(16).times(l).minus(4)).div(3),g=u.times(u),f=c.times(c).times(c),y=g.plus(f),b=v(y).sqrt(),T=v(Math.cbrt(+u.plus(b).toFixed())),B=v(Math.cbrt(+u.minus(b).toFixed()));return T.plus(B).toFixed()}var Rn=(c=>(c.OK="OK",c.INVALID="INVALID",c.FORBIDDEN="FORBIDDEN",c.UNINITIALIZED="UNINITIALIZED",c.CONTRACT_ADDRESS="CONTRACT_ADDRESS",c.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",c))(Rn||{});var Ge=(a=>(a[a.ALLBRIDGE=1]="ALLBRIDGE",a[a.WORMHOLE=2]="WORMHOLE",a[a.CCTP=3]="CCTP",a))(Ge||{});function Ai(l){return Object.entries(l).reduce((r,i)=>{let a=i[0],A=i[1],u=Tr(a,A);return u&&(r[a]=u),r},{})}function ci(l){let r={};for(let[i,a]of Object.entries(l)){let A=i;for(let u of a.tokens){let c=it({chainSymbol:A,poolAddress:u.poolAddress}),g=ge(u.poolInfo);r[c]={...u.poolInfo,imbalance:g}}}return r}function fr(l,r){let{name:i,...a}=l,{poolInfo:A,...u}=r;return{...u,...a,chainName:i}}function hr(l){switch(l){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;default:return null}}function yr(l){return Object.entries(l).reduce((r,[i,a])=>(r[i]=br(a),r),{})}function br(l){return Object.entries(l).reduce((r,[i,a])=>{let A=hr(i);return A&&(r[A]=a),r},{})}function Tr(l,r){let i=V.getChainsProperties()[l];if(!i)return null;let a={...i,allbridgeChainId:r.chainId,bridgeAddress:r.bridgeAddress,transferTime:yr(r.transferTime),txCostAmount:r.txCostAmount,confirmations:r.confirmations};return{...a,tokens:r.tokens.map(A=>fr(a,A))}}function it(l){return l.chainSymbol+"_"+l.poolAddress}function ui(l){let r=[];for(let[i,a]of Object.entries(l)){let A=i;for(let u of a.tokens)r.push({chainSymbol:A,poolAddress:u.poolAddress})}return r}function mi(l){let r={};for(let[i,a]of Object.entries(l)){let A=i;for(let[u,c]of Object.entries(a))c.imbalance=ge(c),r[it({chainSymbol:A,poolAddress:u})]=c}return r}var Xt=class{constructor(r){this.api=Pr.create({baseURL:r.coreApiUrl,headers:{Accept:"application/json",...r.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+ti},params:r.coreApiQueryParams})}async getTokenInfo(){let{data:r}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:Ai(r),poolInfoMap:ci(r)}}async getPendingInfo(){let{data:r}=await this.api.get("/pending-info");return r}async getGasBalance(r,i){let{data:a}=await this.api.get(`/check/${r}/${i}`);return a}async getTransferStatus(r,i){let{data:a}=await this.api.get(`/chain/${r}/${i}`);return a}async getReceiveTransactionCost(r){let{data:i}=await this.api.post("/receive-fee",r,{headers:{"Content-Type":"application/json"}});return{exchangeRate:i.exchangeRate,fee:i.fee,sourceNativeTokenPrice:i.sourceNativeTokenPrice}}async getPoolInfoMap(r){let i=r instanceof Array?r:[r],{data:a}=await this.api.post("/pool-info",{pools:i},{headers:{"Content-Type":"application/json"}});return mi(a)}};import Lt from"timed-cache";var kn=20*1e3,wr=55*1e3,Yt=class{constructor(r){this.apiClient=r;this.tokenInfoCache=new Lt({defaultTtl:wr}),this.receivedTransactionCache=new Lt({defaultTtl:kn}),this.pendingInfoCache=new Lt({defaultTtl:kn}),this.gasBalanceCache=new Lt({defaultTtl:kn})}getTokenInfo(){let r="TOKEN_INFO_CACHE_KEY",i=this.tokenInfoCache.get(r);if(i)return i;let a=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(r,a),a}async getGasBalance(r,i){let a=`GAS_BALANCE_${r}_${i}`,A=this.gasBalanceCache.get(a);if(A)return A;let u=this.apiClient.getGasBalance(r,i);return this.gasBalanceCache.put(a,u),u}async getPendingInfo(){let r="PENDING_INFO_CACHE_KEY",i=this.pendingInfoCache.get(r);if(i)return i;let a=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(r,a),a}async getReceiveTransactionCost(r){let i=`RECEIVE_TX_COST_${r.sourceChainId}_${r.destinationChainId}_${r.messenger}`,a=this.receivedTransactionCache.get(i);if(a)return a;let A=await this.apiClient.getReceiveTransactionCost(r);return this.receivedTransactionCache.put(i,A),A}async getTransferStatus(r,i){return this.apiClient.getTransferStatus(r,i)}async getPoolInfoMap(r){return this.apiClient.getPoolInfoMap(r)}};var Jt=class{constructor(r){this.apiClient=r}async getChainDetailsMap(){return(await this.apiClient.getTokenInfo()).chainDetailsMap}async tokens(){let r=await this.getChainDetailsMap();return Object.values(r).flatMap(i=>i.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(r,i){return this.apiClient.getGasBalance(r,i)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(r,i){return await this.apiClient.getTransferStatus(r,i)}async getReceiveTransactionCost(r){return await this.apiClient.getReceiveTransactionCost(r)}async getPoolInfoMap(r){return await this.apiClient.getPoolInfoMap(r)}};var Kt=class{constructor(r,i){this.client=r;this.isStaging=i.coreApiQueryParams?.staging==="true"}async getChainDetailsMap(r){let i=await this.client.getChainDetailsMap(),a={};for(let A in i){let u=i[A];u&&(a[A]={...u,tokens:li(u.tokens,r,this.isStaging)})}return a}async tokens(r){return li(await this.client.tokens(),r,this.isStaging)}async getPendingInfo(){return this.client.getPendingInfo()}async getGasBalance(r,i){return this.client.getGasBalance(r,i)}async getTransferStatus(r,i){return await this.client.getTransferStatus(r,i)}async getReceiveTransactionCost(r){return await this.client.getReceiveTransactionCost(r)}cachePut(r,i){return this.client.cachePut(r,i)}getPoolInfoByKey(r){return this.client.getPoolInfoByKey(r)}refreshPoolInfo(r){return this.client.refreshPoolInfo(r)}};function li(l,r,i){return l.filter(a=>i?!0:a.flags[r]).map(Sr)}function Sr(l){let{flags:r,...i}=l;return i}import Br from"timed-cache";var Cr=55*1e3,Qt=class{constructor(r){this.client=r;this.poolInfoCache=new Mn}async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(r,i){return this.client.getTransferStatus(r,i)}getReceiveTransactionCost(r){return this.client.getReceiveTransactionCost(r)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(r,i){return this.client.getGasBalance(r,i)}async getPoolInfoByKey(r){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let i=this.poolInfoCache.get(r);if(i)return i;{let a=await this.client.getPoolInfoMap(r);this.poolInfoCache.putAll(a);let A=a[it(r)];if(A)return A;throw new Z("Cannot find pool info for "+r.poolAddress+" on chain "+r.chainSymbol)}}async refreshPoolInfo(r){let i;if(r)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),i=await this.client.getPoolInfoMap(r);else{let a=await this.client.getChainDetailsMapAndPoolInfoMap();i=await this.client.getPoolInfoMap(ui(a.chainDetailsMap))}this.poolInfoCache.putAll(i)}cachePut(r,i){this.poolInfoCache.put(it(r),i)}},Mn=class{constructor(){this.cache=new Br({defaultTtl:Cr})}putAll(r){for(let[i,a]of Object.entries(r))this.cache.put(i,a)}putAllIfNotExists(r){for(let[i,a]of Object.entries(r))this.cache.get(i)||this.cache.put(i,a)}put(r,i){this.cache.put(r,i)}get(r){let i=it(r);return this.cache.get(i)}};import na from"tronweb";import ia from"web3";import{Big as di}from"big.js";async function te(l,r){return await l.getPoolInfoByKey({chainSymbol:r.chainSymbol,poolAddress:r.poolAddress})}function L(l){if(di(l).lte(0))throw new Et("Amount must be greater than zero")}function J(l,r,i){let a=di(r).toFixed(),[A,u]=a.split(".");if(u&&u.length>i)throw new Nt(l,u.length,i)}async function Ht(l,r,i){return await Promise.race([l,new Promise((a,A)=>{setTimeout(()=>A(new ht(r)),i)})])}async function vn(l,r,i,a){if(i<1)throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${i} was received.`);let A=0;for(;;)try{return await Ht(l(),r,a)}catch{if(++A>=i)throw new ht(r)}}async function pi(l,r,i,a=1.5,A=!1){let u=[],c=0,g=await l();if(u.push(g),!r(g))return u;let f=new Date(Date.now()+i*1e3).valueOf(),y=1e3,b=y;for(;Date.now()<f;){let T=u[u.length-1];if(T===void 0||!r(T))break;c++,A&&console.info(`Waiting ${y}ms before trying again (bringing the total wait time to ${b}ms so far, of total ${i*1e3}ms)`),await new Promise(S=>setTimeout(S,y)),y=y*a,new Date(Date.now()+y).valueOf()>f&&(y=f-Date.now(),A&&console.info(`was gonna wait too long; new waitTime: ${y}ms`)),b=y+b;let B=await l(T);u.push(B),A&&r(B)&&console.info(`${c}. Called ${l.name}; ${u.length} prev attempts. Most recent: ${JSON.stringify(u[u.length-1],null,2)}`)}return u}import*as jt from"@project-serum/anchor";import{PublicKey as Mi}from"@solana/web3.js";import{Big as Er}from"big.js";var gi=[{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"}];var fi=[{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"}];import*as ae from"@project-serum/anchor";import{PublicKey as ce}from"@solana/web3.js";async function Be(l,r){return ae.utils.token.associatedAddress({mint:r,owner:l})}async function Ve(l){let[r]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("config")],l);return r}async function hi(l,r){let[i]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("lock"),Uint8Array.from(l)],r);return i}async function Tt(l,r){let[i]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([l])],r);return i}async function rt(l){let r=await Ve(l),[i]=await ce.findProgramAddress([r.toBuffer()],l);return i}async function yi(l,r){let[i]=await ce.findProgramAddress([l.toBuffer()],r);return i}async function at(l,r){let[i]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("token"),l.toBytes()],r);return i}async function bi(l,r,i){let[a]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("other_bridge_token"),w.from([l]),r],i);return a}async function xn(l,r){let[i]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([l])],r);return i}async function Wn(l,r){let[i]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([l])],r);return i}async function Ti(l,r){let[i]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("sent_message"),l],r);return i}async function Fn(l,r,i){let[a]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("user_deposit"),r.toBytes(),l.toBytes()],i);return a}async function Pi(l,r){let[i]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("cctp_bridge"),l.toBytes()],r);return i}async function wi(l,r){let[i]=await ce.findProgramAddress([ae.utils.bytes.utf8.encode("token"),l.toBytes()],r);return i}function Si(l,r){let[i]=ce.findProgramAddressSync([ae.utils.bytes.utf8.encode("lock"),r.toBuffer()],l);return i}function Bi(l,r,i,a){let A=je("message_transmitter",i),u=je("token_messenger",a),c=je("__event_authority",a),g=je("token_minter",a),f=je("local_token",a,[r]),y=je("remote_token_messenger",a,[l.toString()]),b=je("sender_authority",a);return{messageTransmitterAccount:A,tokenMessenger:u,tokenMessengerEventAuthority:c,tokenMinter:g,localToken:f,remoteTokenMessengerKey:y,authorityPda:b}}function je(l,r,i=[]){let a=[w.from(ae.utils.bytes.utf8.encode(l))];for(let u of i)typeof u=="string"?a.push(w.from(ae.utils.bytes.utf8.encode(u))):Array.isArray(u)?a.push(w.from(u)):w.isBuffer(u)?a.push(u):a.push(u.toBuffer());return ce.findProgramAddressSync(a,r)[0]}import{AnchorProvider as kr}from"@project-serum/anchor";import{Connection as Mr,PublicKey as vr}from"@solana/web3.js";function Oe(l,r){let i=new Mr(l,"confirmed"),a=new vr(r);return new kr(i,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}var Ce=class{};import{PublicKey as xr}from"@solana/web3.js";import{Address as Wr}from"@stellar/stellar-sdk";import{Big as De}from"big.js";import Ci from"randombytes";import*as Ii from"tronweb";function Ze(l,r,i){let a;switch(r){case"EVM":{a=Fr(l);break}case"SOLANA":{a=new xr(l).toBuffer();break}case"TRX":{a=Gr(l);break}case"SRB":{a=new Wr(l).toBuffer();break}}switch(i){case"EVM":return"0x"+a.toString("hex");case"SOLANA":return Array.from(a);case"TRX":return a.toJSON().data;case"SRB":return a.toJSON().data}}function Ri(l){return w.from(l.replace(/^0x/i,""),"hex")}function Fr(l){let i=Ri(l);return w.concat([w.alloc(32-i.length,0),i],32)}function Gr(l){let r=Pt(l),i=Ri(r);return Dr(i,32)}function Pt(l){return w.from(Ii.utils.crypto.decodeBase58Address(l)).toString("hex").replace(/^41/,"0x")}function Dr(l,r){if(l.length>=r)return l;let i=w.alloc(r,0);return l.copy(i,r-l.length),i}function st(){return Ci(32)}function Gn(){let l=Ci(32).readBigInt64BE();return l<0?l*-1n:l}function Xe(l,r){let i={},a=r.sourceToken;return i.amount=O(r.amount,a.decimals).toFixed(),i.contractAddress=a.bridgeAddress,i.fromAccountAddress=r.fromAccountAddress,i.fromTokenAddress=Ze(a.tokenAddress,l,l),i.toAccountAddress=r.toAccountAddress,i.toTokenAddress=Ze(r.destinationToken.tokenAddress,l,l),i.minimumReceiveAmount=r.minimumReceiveAmount?O(r.minimumReceiveAmount,r.destinationToken.decimals).toFixed():"0",i}async function Ue(l,r,i){let a={};a.fromChainId=r.sourceToken.allbridgeChainId,a.fromChainSymbol=r.sourceToken.chainSymbol;let A=V.getChainProperty(r.destinationToken.chainSymbol).chainType;a.fromTokenAddress=r.sourceToken.tokenAddress,a.toChainId=r.destinationToken.allbridgeChainId,a.toTokenAddress=r.destinationToken.tokenAddress,r.gasFeePaymentMethod==="stablecoin"?a.gasFeePaymentMethod="stablecoin":a.gasFeePaymentMethod="native";let u=r.sourceToken;if(r.messenger===3){if(!u.cctpAddress||!r.destinationToken.cctpAddress)throw new we("Such route does not support CCTP protocol");a.contractAddress=u.cctpAddress}else a.contractAddress=u.bridgeAddress;a.messenger=r.messenger,a.fromAccountAddress=r.fromAccountAddress,a.amount=O(r.amount,u.decimals).toFixed();let{fee:c,feeFormat:g}=r;if(!c){let T=(await Dn(a.fromChainId,r.sourceToken.chainType,a.toChainId,u.decimals,a.messenger,i))[a.gasFeePaymentMethod];if(!T)throw new gt;c=T.int,g="int"}if(g=="float")switch(a.gasFeePaymentMethod){case"native":a.fee=O(c,V.getChainDecimalsByType(u.chainType)).toFixed(0);break;case"stablecoin":a.fee=O(c,u.decimals).toFixed(0);break}else a.fee=c;let{extraGas:f,extraGasFormat:y}=r;if(f&&+f>0){if(y=="float")switch(a.gasFeePaymentMethod){case"native":a.extraGas=O(f,V.getChainDecimalsByType(u.chainType)).toFixed(0);break;case"stablecoin":a.extraGas=O(f,u.decimals).toFixed(0);break}else a.extraGas=f;await Ur(a.extraGas,a.gasFeePaymentMethod,u,r.destinationToken,i)}return a.fromTokenAddress=Ze(a.fromTokenAddress,l,l),a.toAccountAddress=Ze(r.toAccountAddress,A,l),a.toTokenAddress=Ze(a.toTokenAddress,A,l),a.gasFeePaymentMethod=="stablecoin"&&Zr(a.amount,u.decimals,a.fee,a.extraGas),a}function Zr(l,r,i,a){let A=De(l).minus(i).minus(a??0);if(A.lte(0))throw new tt(`Amount not enough to pay fee, ${N(De(A).minus(1).neg(),r).toFixed()} stables is missing`)}async function Dn(l,r,i,a,A,u){let c=await u.getReceiveTransactionCost({sourceChainId:l,destinationChainId:i,messenger:A}),g={native:{int:c.fee,float:N(c.fee,V.getChainDecimalsByType(r)).toFixed()}};if(c.sourceNativeTokenPrice){let f=Ne(new De(c.fee).mul(c.sourceNativeTokenPrice),V.getChainDecimalsByType(r),a).toFixed(0,De.roundUp);g.stablecoin={int:f,float:N(f,a).toFixed()}}return g}async function Ur(l,r,i,a,A){let c=(await Zn(i,a,A)).extraGasMax[r];if(!c)throw new gt(`Impossible to pay extra gas by '${r}' payment method`);let g=c.int;if(De(l).gt(g))throw new _t(`Extra gas ${l} in int format, exceeded limit ${g} for '${r}' payment method`)}async function Zn(l,r,i){let a={},A=await i.getReceiveTransactionCost({sourceChainId:l.allbridgeChainId,destinationChainId:r.allbridgeChainId,messenger:1}),u=r.txCostAmount.maxAmount,c=N(u,V.getChainDecimalsByType(r.chainType)).toFixed(),g=De(c).div(A.exchangeRate).toFixed(V.getChainDecimalsByType(l.chainType),De.roundDown),f=O(g,V.getChainDecimalsByType(l.chainType)).toFixed(0);if(a.native={int:f,float:g},A.sourceNativeTokenPrice){let y=De(g).mul(A.sourceNativeTokenPrice).toFixed(l.decimals,De.roundDown);a.stablecoin={int:O(y,l.decimals).toFixed(0),float:y}}return{extraGasMax:a,destinationChain:{gasAmountMax:{int:u,float:c},swap:{int:r.txCostAmount.swap,float:N(r.txCostAmount.swap,V.getChainDecimalsByType(r.chainType)).toFixed()},transfer:{int:r.txCostAmount.transfer,float:N(r.txCostAmount.transfer,V.getChainDecimalsByType(r.chainType)).toFixed()}},exchangeRate:A.exchangeRate,sourceNativeTokenPrice:A.sourceNativeTokenPrice}}function ki(l){return l.sourceToken.chainSymbol!==l.destinationToken.chainSymbol}var wt=class extends Ce{constructor(i,a,A){super();this.web3=i;this.api=a;this.nodeRpcUrlsConfig=A;this.chainType="EVM"}async send(i){let a=await this.buildRawTransactionSend(i);return this.sendRawTransaction(a)}async buildRawTransactionSwap(i){let a=Xe(this.chainType,i);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(i){let{amount:a,contractAddress:A,fromAccountAddress:u,fromTokenAddress:c,toAccountAddress:g,toTokenAddress:f,minimumReceiveAmount:y}=i,T=this.getBridgeContract(A).methods.swap(a,c,f,g,y);return Promise.resolve({from:u,to:A,data:T.encodeABI()})}async buildRawTransactionSend(i){let a=await Ue(this.chainType,i,this.api),{amount:A,contractAddress:u,fromAccountAddress:c,fromTokenAddress:g,toChainId:f,toAccountAddress:y,toTokenAddress:b,messenger:T,fee:B,gasFeePaymentMethod:S,extraGas:C}=a,M="0x"+st().toString("hex"),I,W,x=B;if(C&&(x=Er(x).plus(C).toFixed()),T===3){let G=await this.buildRawTransactionCctpSend(i,a,x);I=G.sendMethod,W=G.value}else{let G=this.getBridgeContract(u);S==="stablecoin"?(I=G.methods.swapAndBridge(g,A,y,f,b,M,T,x),W="0"):(I=G.methods.swapAndBridge(g,A,y,f,b,M,T,0),W=x)}return Promise.resolve({from:c,to:u,value:W,data:I.encodeABI()})}async buildRawTransactionCctpSend(i,a,A){let{amount:u,contractAddress:c,toChainId:g,toAccountAddress:f,gasFeePaymentMethod:y}=a,b=this.getContract(fi,c),T,B;if(i.destinationToken.chainType==="SOLANA"){let S,C=new Mi(i.toAccountAddress),M=new Mi(i.destinationToken.tokenAddress),I=await Be(C,M),W=Oe(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),i.toAccountAddress);jt.setProvider(W);let x=await jt.Spl.token(W).account.token.fetchNullable(I);if(x?.authority.equals(C))S=Ze(I.toBase58(),"SOLANA",this.chainType);else{let G=await W.connection.getTokenAccountsByOwner(C,{mint:M});if(G.value.length===0&&!x)S=Ze(I.toBase58(),"SOLANA",this.chainType);else if(G.value.length>0){let _=G.value[0];if(!_?.pubkey)throw new Z("First token account or its public key is undefined");S=Ze(_.pubkey.toBase58(),"SOLANA",this.chainType)}else throw new Z("Associated account has wrong owner")}y==="stablecoin"?(T=b.methods.bridgeWithWalletAddress(u,S,f,g,A),B="0"):(T=b.methods.bridgeWithWalletAddress(u,S,f,g,0),B=A)}else y==="stablecoin"?(T=b.methods.bridge(u,f,g,A),B="0"):(T=b.methods.bridge(u,f,g,0),B=A);return{sendMethod:T,value:B}}async sendRawTransaction(i){let a=await this.web3.eth.estimateGas(i),A={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:u}=await this.web3.eth.sendTransaction({...i,gas:a,...A});return{txId:u}}getContract(i,a){return new this.web3.eth.Contract(i,a)}getBridgeContract(i){return this.getContract(gi,i)}};var qt=class{constructor(r,i,a,A){this.api=r;this.nodeRpcUrlsConfig=i;this.params=a;this.tokenService=A}async approve(r,i){let a,A;i?(a=r,A=i):A=r;let u=St(A.token,A.messenger);return this.tokenService.buildRawTransactionApprove({...A,spender:u},a)}async send(r,i){return L(r.amount),J("amount",r.amount,r.sourceToken.decimals),ki(r)?$t(r.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).buildRawTransactionSend(r):$t(r.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).buildRawTransactionSwap(r)}};import{BN as ut,Program as _n,Spl as Qr,web3 as Le}from"@project-serum/anchor";import{Keypair as Vi,PublicKey as K,SystemProgram as Hr}from"@solana/web3.js";import{Big as Ie}from"big.js";var Bt={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"}]};var vi={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"}]};import{Spl as _r}from"@project-serum/anchor";import Nr from"big.js";import en from"web3";async function At(l,r){return await _r.token(r).account.token.fetch(l)}async function xi(l,r,i){let a=await r.account.pool.fetch(i),A=a.decimals,u=Nr(a.feeShareBp.toString()).div(1e4).toFixed(),c={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 ve(l,{decimals:A,feeShare:u},c)}function Wi(l){let r=l.amount,i="0x"+l.recipient.toString("hex"),a=l.sourceChainId,A=l.destinationChainId,u="0x"+l.receiveToken.toString("hex"),c="0x"+l.nonce.toString("hex"),g=1,f="0x"+l.chainBridge.toString("hex"),y=en.utils.encodePacked({t:"uint256",v:r},{t:"bytes32",v:i},{t:"uint256",v:a},{t:"bytes32",v:u},{t:"uint256",v:c},{t:"uint8",v:g});if(!y)throw new Z("message cannot be undefined");let b=en.utils.keccak256(w.from(y.replace("0x",""),"hex")),T=w.from(b.replace("0x",""),"hex");T[0]=a,T[1]=A;let B=en.utils.encodePacked({t:"bytes32",v:"0x"+T.toString("hex")},{t:"bytes32",v:f});if(!B)throw new nt("messageWithSigner cannot be undefined");let S=en.utils.keccak256(w.from(B.replace("0x",""),"hex")),C=w.from(S.replace("0x",""),"hex");return C[0]=T[0],C[1]=T[1],C}import{ComputeBudgetInstruction as Gi,ComputeBudgetProgram as tn,Connection as Di,TransactionMessage as Vr}from"@solana/web3.js";import{Big as Or}from"big.js";import{AddressLookupTableAccount as Fi}from"@solana/web3.js";async function qe(l,r){return await Promise.all(l.message.addressTableLookups.map(async i=>new Fi({key:i.accountKey,state:Fi.deserialize(await r.getAccountInfo(i.accountKey).then(a=>{if(!a)throw new Z("Cannot get AccountInfo");return a.data}))})))}var Un="AUTO";async function ct(l,r,i){let a=new Di(i,"confirmed"),A=(await a.simulateTransaction(l)).value.unitsConsumed;await Ui(l.instructions,A,r,a)}async function Zi(l,r,i){let a=new Di(i,"confirmed"),A=await qe(l,a),u=Vr.decompile(l.message,{addressLookupTableAccounts:A});if(l.serialize().length>1232)throw new Ot;await Ui(u.instructions,769230,r,a),l.message=u.compileToV0Message(A)}async function Ui(l,r,i,a){if(r>0){let A=Xr(r,l);if(i?.solana){let u=i.solana;if(u===Un)await En(l,a);else if("pricePerUnitInMicroLamports"in u)await En(l,a,u.pricePerUnitInMicroLamports);else{let c=Or(u.extraFeeInLamports).div(A).mul(yt(6)).toFixed(0);await En(l,a,c)}}}}function Xr(l,r){let i=r.findIndex(u=>u.programId.equals(tn.programId)&&Gi.decodeInstructionType(u)==="SetComputeUnitLimit"),a=Number((l*1.3).toFixed(0)),A=tn.setComputeUnitLimit({units:a});return i>=0?r[i]=A:r.push(A),a.toString()}async function En(l,r,i){let a=l.findIndex(c=>c.programId.equals(tn.programId)&&Gi.decodeInstructionType(c)==="SetComputeUnitPrice"),A=BigInt(i||await Lr(r)),u=tn.setComputeUnitPrice({microLamports:A});return a>=0?l[a]=u:l.push(u),A.toString()}async function Lr(l){let r=await l.getRecentPrioritizationFees(),i=0;for(let a of r)i+=a.prioritizationFee;return(i/r.length).toFixed(0)}import{NATIVE_MINT as Yr}from"@solana/spl-token";import{Connection as Jr,TransactionMessage as Ei,VersionedTransaction as Kr}from"@solana/web3.js";import _i,{AxiosError as Ni}from"axios";var nn=class{constructor(r,i){this.connection=new Jr(r),this.jupiterUrl=i.replace(/\/$/,"")}async getJupiterSwapTx(r,i,a,A){let u;try{let T=A?"ExactOut":"ExactIn";u=await _i.get(`${this.jupiterUrl}/quote?inputMint=${i}
2
+ &outputMint=${Yr.toString()}
3
3
  &amount=${a}
4
4
  &swapMode=${T}
5
5
  &slippageBps=100
6
- &onlyDirectRoutes=true`)}catch(T){throw T instanceof Ni&&T.response&&T.response.data&&T.response.data.error?new ie(T.response.data.error):new ie("Cannot get route")}let c;if(A&&u?.data?.inAmount)c=u.data.inAmount;else if(A)throw new ie("Cannot get inAmount");let g;try{g=await _i.post(`${this.jupiterUrl}/swap`,{quoteResponse:u.data,userPublicKey:r,wrapAndUnwrapSol:!0})}catch(T){throw T instanceof Ni&&T.response&&T.response.data&&T.response.data.error?new ie(T.response.data.error):new ie("Cannot get swap transaction")}let f;if(g?.data?.swapTransaction)f=g.data.swapTransaction;else throw new ie("Cannot get swap transaction");let y=w.from(f,"base64"),b=Jr.deserialize(y);return A?{tx:b,amountIn:c}:{tx:b}}async amendJupiterWithSdkTx(r,i){try{let a=await qe(r,this.connection),A=await qe(i,this.connection),u=Ei.decompile(r.message,{addressLookupTableAccounts:a}),c=Ei.decompile(i.message,{addressLookupTableAccounts:A});if(c.instructions.shift(),u.instructions.push(...c.instructions),a.push(...A),r.message=u.compileToV0Message(a),i.message.header.numRequiredSignatures===2&&r.signatures.length===1){let g=i.signatures[0];if(!g)throw new Z("Signature is undefined");r.signatures.push(g)}return r}catch(a){throw a instanceof Error&&a.message?new ie(`Some error occurred during creation final swap and bridge transaction. ${a.message}`):new ie("Some error occurred during creation final swap and bridge transaction")}}};var Nn=1e6,Hr=1.1,rn=class extends Ce{constructor(i,a,A){super();this.solanaRpcUrl=i;this.params=a;this.api=A;this.chainType="SOLANA";this.jupiterService=new nn(i,a.jupiterUrl)}async buildRawTransactionSwap(i){let a=Xe(this.chainType,i);return await this.buildSwapTransaction(a,i.sourceToken.poolAddress,i.destinationToken.poolAddress,i.txFeeParams)}async buildSwapTransaction(i,a,A,u){let{fromAccountAddress:c,amount:g,contractAddress:f,fromTokenAddress:y,toTokenAddress:b,toAccountAddress:T,minimumReceiveAmount:B}=i,S=c,C=f,M=y,I=b,W=A,x=T,G=new K(S),_=Oe(this.solanaRpcUrl,G.toString()),D=new _n(Bt,C,_),E=await rt(D.programId),se=await Ve(D.programId),z=new K(M),he=await at(z,D.programId),ye=new K(a),Pe=await Be(G,z),me=new K(x),ne=new K(I),oe=await at(ne,D.programId),le=new K(W),Ae=await Be(me,ne),be=[Le.ComputeBudgetProgram.setComputeUnitLimit({units:Nn})];try{await At(Ae,_)}catch{let Gt=await Kr.associatedToken(_).methods.create().accounts({mint:ne,owner:me,associatedAccount:Ae}).instruction();be.push(Gt)}let Te=await D.methods.swap(new ut(g),new ut(B||0)).accounts({payer:G,config:se,bridgeAuthority:E,user:G,sendBridgeToken:he,sendMint:z,sendPool:ye,sendUserToken:Pe,receiveBridgeToken:oe,receiveMint:ne,receivePool:le,receiveUserToken:Ae}).preInstructions(be).transaction(),de=_.connection;return Te.recentBlockhash=(await de.getLatestBlockhash()).blockhash,Te.feePayer=G,await ct(Te,u,this.solanaRpcUrl),await this.convertToVersionedTransaction(Te,de)}async buildRawTransactionSend(i){let a=await Ue(this.chainType,i,this.api),A=this.addPoolAddress(i,a),u=A.gasFeePaymentMethod=="stablecoin",c;if(u)try{let{tx:y,solTxSendUpdatedParams:b}=await this.processJup(A,i,!0);c=y,A={...A,...b}}catch{try{let{tx:b,solTxSendUpdatedParams:T}=await this.processJup(A,i,!1);c=b,A={...A,...T}}catch(b){throw b instanceof q?b:b instanceof Error&&b.message?new ie(`Some error occurred during creation Jupiter swap transaction. ${b.message}`):new ie("Some error occurred during creation Jupiter swap transaction")}}let g,f;switch(a.messenger){case 1:{let y=await this.prepareSwapAndBridgeData(A);g=await this.buildSwapAndBridgeAllbridgeTransaction(y);break}case 2:{let y=await this.prepareSwapAndBridgeData(A),{transaction:b,messageAccount:T}=await this.buildSwapAndBridgeWormholeTransaction(y);g=b,f=T;break}case 3:{let y=await this.prepareSwapAndBridgeCctpData(A),{transaction:b,messageSentEventDataKeypair:T}=await this.buildSwapAndBridgeCctpTransaction(i.destinationToken.chainSymbol,y);g=b,f=T;break}}if(u){if(!c)throw new ie("Swap tx is absent");g=await this.jupiterService.amendJupiterWithSdkTx(c,g)}return await Zi(g,i.txFeeParams,this.solanaRpcUrl),f&&g.sign([f]),g}async processJup(i,a,A){let{fee:u,extraGas:c,gasFeePaymentMethod:g}=await this.convertStableCoinFeeAndExtraGasToNativeCurrency(a.sourceToken.decimals,i),f=A?xe(u):xe(i.fee);c&&(f=f.plus(c)),A||(f=f.mul(Hr));let{tx:y,amountIn:b}=await this.jupiterService.getJupiterSwapTx(a.fromAccountAddress,a.sourceToken.tokenAddress,f.toFixed(0),A),T;if(A){if(!b)throw new ie("Cannot get inAmount");T=xe(i.amount).minus(b).toFixed(0)}else T=xe(i.amount).minus(f).toFixed(0);if(xe(T).lte(0))throw new tt(`Amount not enough to pay fee, ${N(xe(T).minus(1).neg(),a.sourceToken.decimals).toFixed()} stables is missing`);return{tx:y,solTxSendUpdatedParams:{amount:T,fee:u,extraGas:c,gasFeePaymentMethod:g}}}addPoolAddress(i,a){return{...a,poolAddress:i.sourceToken.poolAddress}}async convertStableCoinFeeAndExtraGasToNativeCurrency(i,a){if(a.gasFeePaymentMethod=="stablecoin"){let A=(await this.api.getReceiveTransactionCost({sourceChainId:a.fromChainId,destinationChainId:a.toChainId,messenger:a.messenger})).sourceNativeTokenPrice,u=xe(a.fee).div(A).mul(xe(10).pow(V.getChainDecimalsByType("SOLANA")-i)).toFixed(0),c;return a.extraGas&&(c=xe(a.extraGas).div(A).mul(xe(10).pow(V.getChainDecimalsByType("SOLANA")-i)).toFixed(0)),{fee:u,extraGas:c,gasFeePaymentMethod:"native"}}return{fee:a.fee,extraGas:a.extraGas,gasFeePaymentMethod:"native"}}getExtraGasInstruction(i,a,A){return Le.SystemProgram.transfer({fromPubkey:a,toPubkey:A,lamports:+i})}async prepareSwapAndBridgeData(i){let{amount:a,contractAddress:A,fromChainId:u,fromAccountAddress:c,fromTokenAddress:g,toChainId:f,toAccountAddress:y,toTokenAddress:b,poolAddress:T,extraGas:B}=i,S=g,C=c,M=f,I=b,W=y,x=A,G=u,_=Oe(this.solanaRpcUrl,C),D=new _n(Bt,x,_),E=Array.from(st()),se=new K(T),z=await xi(a,D,se),he=await hi(E,D.programId),ye=await rt(D.programId),Pe=await Be(new K(C),new K(S)),me=await at(new K(S),D.programId),ne=await xn(M,D.programId),oe=await bi(M,w.from(I),D.programId),le=await Ve(D.programId),Ae=await D.account.config.fetch(le),be=await Tt(M,Ae.gasOracleProgramId),Te=await Tt(G,Ae.gasOracleProgramId),de=Wi({amount:z,recipient:w.from(W),nonce:w.from(E),receiveToken:w.from(I),destinationChainId:M,sourceChainId:G,chainBridge:(await rt(D.programId)).toBuffer()}),F={};return F.bridge=D,F.amount=new ut(a),F.vusdAmount=new ut(z),F.nonce=E,F.recipient=Array.from(W),F.receiveToken=Array.from(I),F.poolAccount=se,F.lockAccount=he,F.bridgeAuthority=ye,F.userToken=Pe,F.bridgeTokenAccount=me,F.chainBridgeAccount=ne,F.otherBridgeTokenAccount=oe,F.userAccount=new K(C),F.destinationChainId=M,F.mint=new K(S),F.config=le,F.configAccountInfo=Ae,F.gasPrice=be,F.thisGasPrice=Te,F.message=de,B&&(F.extraGasInstruction=this.getExtraGasInstruction(B,F.userAccount,le)),F}async buildSwapAndBridgeAllbridgeTransaction(i){let{bridge:a,vusdAmount:A,nonce:u,recipient:c,receiveToken:g,poolAccount:f,lockAccount:y,bridgeAuthority:b,userToken:T,bridgeTokenAccount:B,chainBridgeAccount:S,otherBridgeTokenAccount:C,userAccount:M,destinationChainId:I,mint:W,config:x,configAccountInfo:G,gasPrice:_,thisGasPrice:D,message:E,extraGasInstruction:se}=i,z=G.allbridgeMessengerProgramId,he=await Wn(I,z),ye=await Ve(z),Pe=await Ti(E,z),me=[];se&&me.push(se);let ne=await a.methods.swapAndBridge({vusdAmount:A,nonce:u,destinationChainId:I,recipient:c,receiveToken:g}).accounts({mint:W,user:M,config:x,lock:y,pool:f,gasPrice:_,thisGasPrice:D,bridgeAuthority:b,userToken:T,bridgeToken:B,chainBridge:S,messenger:z,messengerGasUsage:he,messengerConfig:ye,sentMessageAccount:Pe,otherBridgeToken:C}).preInstructions([Le.ComputeBudgetProgram.setComputeUnitLimit({units:Nn})]).postInstructions(me).transaction(),oe=Oe(this.solanaRpcUrl,M.toString()).connection;return ne.recentBlockhash=(await oe.getLatestBlockhash()).blockhash,ne.feePayer=M,await this.convertToVersionedTransaction(ne,oe)}async convertToVersionedTransaction(i,a){let A=await a.getAddressLookupTable(new K(this.params.solanaLookUpTable)).then(c=>c.value);if(!A)throw new Z("Cannot find allbridgeLookupTableAccount");let u=new Le.TransactionMessage({payerKey:i.feePayer,recentBlockhash:i.recentBlockhash,instructions:i.instructions}).compileToV0Message([A]);return new Le.VersionedTransaction(u)}async buildSwapAndBridgeWormholeTransaction(i){let{bridge:a,vusdAmount:A,nonce:u,recipient:c,receiveToken:g,poolAccount:f,lockAccount:y,bridgeAuthority:b,userToken:T,bridgeTokenAccount:B,chainBridgeAccount:S,otherBridgeTokenAccount:C,userAccount:M,destinationChainId:I,mint:W,config:x,configAccountInfo:G,gasPrice:_,thisGasPrice:D,message:E,extraGasInstruction:se}=i,z=this.params.wormholeMessengerProgramId,[he]=K.findProgramAddressSync([w.from("Bridge")],new K(z)),[ye]=K.findProgramAddressSync([w.from("fee_collector")],new K(z)),[Pe]=K.findProgramAddressSync([w.from("Sequence"),b.toBuffer()],new K(z)),me=await Wn(I,G.wormholeMessengerProgramId),ne=await Ve(G.wormholeMessengerProgramId),oe=Vi.generate(),le=Oe(this.solanaRpcUrl,M.toString()),Ae=await le.connection.getAccountInfo(he);if(Ae==null)throw new Z("Cannot fetch wormhole bridge account info");let be=new ut(Ae.data.slice(16,24),"le").toString(),Te=Qr.transfer({fromPubkey:M,toPubkey:ye,lamports:+be}),de=[];se&&de.push(se);let F={mint:W,user:M,config:x,lock:y,pool:f,gasPrice:_,thisGasPrice:D,bridgeAuthority:b,userToken:T,bridgeToken:B,chainBridge:S,otherBridgeToken:C,messengerGasUsage:me,wormholeProgram:z,bridge:he,message:oe.publicKey,wormholeMessenger:G.wormholeMessengerProgramId,sequence:Pe,feeCollector:ye,wormholeMessengerConfig:ne,clock:Le.SYSVAR_CLOCK_PUBKEY},$=await a.methods.swapAndBridgeWormhole({vusdAmount:A,nonce:u,destinationChainId:I,recipient:c,receiveToken:g}).accounts(F).preInstructions([Le.ComputeBudgetProgram.setComputeUnitLimit({units:Nn}),Te]).postInstructions(de).signers([oe]).transaction();return $.recentBlockhash=(await le.connection.getLatestBlockhash()).blockhash,$.feePayer=M,{transaction:await this.convertToVersionedTransaction($,le.connection),messageAccount:oe}}async prepareSwapAndBridgeCctpData(i){let{contractAddress:a,amount:A,fromAccountAddress:u,fromTokenAddress:c,toChainId:g,toAccountAddress:f,toTokenAddress:y,extraGas:b}=i,T=a;if(!T)throw new we("Such route does not support CCTP protocol");let B=4,S=u,C=y,M=f,I=Oe(this.solanaRpcUrl,S),W=new _n(vi,T,I),x=new K(c),G=await Pi(x,W.programId),_=new K(S),D=await W.account.cctpBridge.fetch(G),E={};return E.cctpBridge=W,E.cctpBridgeAccount=G,E.cctpAddressAccount=new K(T),E.amount=new ut(A),E.recipient=Array.from(M),E.receiveToken=Array.from(C),E.userToken=await Be(_,x),E.bridgeAuthority=await yi(G,W.programId),E.bridgeTokenAccount=await wi(x,W.programId),E.chainBridgeAccount=await xn(g,W.programId),E.userAccount=_,E.destinationChainId=g,E.mint=x,E.gasPrice=await Tt(g,D.gasOracleProgramId),E.thisGasPrice=await Tt(B,D.gasOracleProgramId),E.provider=I,b&&(E.extraGasInstruction=this.getExtraGasInstruction(b,E.userAccount,G)),E}async buildSwapAndBridgeCctpTransaction(i,a){let{cctpBridge:A,cctpBridgeAccount:u,amount:c,recipient:g,receiveToken:f,bridgeAuthority:y,userToken:b,bridgeTokenAccount:T,chainBridgeAccount:B,userAccount:S,destinationChainId:C,mint:M,gasPrice:I,thisGasPrice:W,extraGasInstruction:x,provider:G}=a,_=this.params.cctpParams.cctpDomains[i],D=this.params.cctpParams.cctpTransmitterProgramId,E=this.params.cctpParams.cctpTokenMessengerMinter;if(_==null||!D||!E)throw new Z("CCTP is not configured");let se=new K(D),z=new K(E),{messageTransmitterAccount:he,tokenMessenger:ye,tokenMessengerEventAuthority:Pe,tokenMinter:me,localToken:ne,remoteTokenMessengerKey:oe,authorityPda:le}=Bi(_,M,se,z),Ae=[];x&&Ae.push(x);let be=Vi.generate(),Te=Si(A.programId,be.publicKey),de=await A.methods.bridge({amount:c,destinationChainId:C,recipient:g,receiveToken:f}).accounts({mint:M,user:S,cctpBridge:u,messageSentEventData:be.publicKey,lock:Te,cctpMessenger:z,messageTransmitterProgram:se,messageTransmitterAccount:he,tokenMessenger:ye,tokenMinter:me,localToken:ne,remoteTokenMessengerKey:oe,authorityPda:le,eventAuthority:Pe,bridgeToken:T,gasPrice:I,thisGasPrice:W,chainBridge:B,userToken:b,bridgeAuthority:y}).preInstructions([Le.ComputeBudgetProgram.setComputeUnitLimit({units:2e6})]).postInstructions(Ae).transaction(),F=G.connection;return de.recentBlockhash=(await F.getLatestBlockhash()).blockhash,de.feePayer=S,{transaction:await this.convertToVersionedTransaction(de,F),messageSentEventDataKeypair:be}}send(i){throw new ue}};import{Address as Vn,contract as sb}from"@stellar/stellar-sdk";import{Big as qr}from"big.js";import{contract as n}from"@stellar/stellar-sdk";var zr=n.Spec,jr=n.Client;var Ct=class extends jr{constructor(i){super(new zr(["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"]),i);this.options=i;this.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 an=class extends Ce{constructor(i,a,A){super();this.nodeRpcUrlsConfig=i;this.params=a;this.api=A;this.chainType="SRB"}async buildRawTransactionSend(i){let a=await Ue(this.chainType,i,this.api);return await this.buildRawTransactionSendFromParams(a)}async buildRawTransactionSendFromParams(i){let{amount:a,contractAddress:A,fromAccountAddress:u,fromTokenAddress:c,toChainId:g,toAccountAddress:f,toTokenAddress:y,fee:b,gasFeePaymentMethod:T,extraGas:B}=i,S=b;B&&(S=qr(S).plus(B).toFixed());let C=this.getContract(Ct,A,u),M;return T==="stablecoin"?M=await C.swap_and_bridge({sender:u,token:Vn.contract(w.from(c)).toString(),amount:BigInt(a),recipient:w.from(f),destination_chain_id:+g,receive_token:w.from(y),nonce:Gn(),gas_amount:BigInt(0),fee_token_amount:BigInt(S)}):M=await C.swap_and_bridge({sender:u,token:Vn.contract(w.from(c)).toString(),amount:BigInt(a),recipient:w.from(f),destination_chain_id:+g,receive_token:w.from(y),nonce:Gn(),gas_amount:BigInt(S),fee_token_amount:BigInt(0)}),M.toXDR()}async buildRawTransactionSwap(i){let a=Xe(this.chainType,i);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(i){let{amount:a,contractAddress:A,fromAccountAddress:u,fromTokenAddress:c,toAccountAddress:g,toTokenAddress:f,minimumReceiveAmount:y}=i;return(await this.getContract(Ct,A,u).swap({sender:u,amount:BigInt(a),token:Vn.contract(w.from(c)).toBuffer(),receive_token:w.from(f),recipient:g,receive_amount_min:BigInt(y)})).toXDR()}send(i){throw new ue}getContract(i,a,A){let u={publicKey:A,contractId:a,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new i(u)}};import{Big as ta}from"big.js";import $r from"bn.js";function sn(l){return"0x"+new $r(l).toString("hex")}function Oi(l){return new Promise(r=>setTimeout(()=>r(),l))}var mt=l=>(...r)=>new Promise((i,a)=>l(...r,(A,u)=>A?a(A):i(u)));async function on(l,r){let i=await l.trx.sign(r);if(!i.signature)throw new nt("Transaction was not signed properly");let A=(await l.trx.sendRawTransaction(i)).txid;return await ea(l,A),{txId:A}}async function ea(l,r,i=1e4){let a=Date.now();for(;;){if(Date.now()-a>i)throw new ft("Transaction not found");let A=await l.trx.getUnconfirmedTransactionInfo(r);if(!A?.receipt){await Oi(2e3);continue}if(A.receipt.result==="SUCCESS")return A;throw new ft(`Transaction status is ${A.receipt.result}`)}}var It=class extends Ce{constructor(i,a){super();this.tronWeb=i;this.api=a;this.chainType="TRX"}async send(i){let a=await Ue(this.chainType,i,this.api),A=await this.buildRawTransactionSendFromParams(a);return await on(this.tronWeb,A)}async buildRawTransactionSwap(i){let a=Xe(this.chainType,i);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(i){let{amount:a,contractAddress:A,fromAccountAddress:u,fromTokenAddress:c,toAccountAddress:g,toTokenAddress:f,minimumReceiveAmount:y}=i,b=[{type:"uint256",value:a},{type:"bytes32",value:c},{type:"bytes32",value:f},{type:"address",value:g},{type:"uint256",value:y}];return this.buildRawTransaction(A,"swap(uint256,bytes32,bytes32,address,uint256)",b,"0",u)}async buildRawTransactionSend(i){let a=await Ue(this.chainType,i,this.api);return this.buildRawTransactionSendFromParams(a)}async buildRawTransactionSendFromParams(i){let{amount:a,contractAddress:A,fromAccountAddress:u,fromTokenAddress:c,toChainId:g,toAccountAddress:f,toTokenAddress:y,messenger:b,fee:T,gasFeePaymentMethod:B,extraGas:S}=i,C=T;S&&(C=ta(C).plus(S).toFixed());let M=st().toJSON().data,I,W,x;return b==3?(B==="stablecoin"?(I=[{type:"uint256",value:a},{type:"bytes32",value:f},{type:"uint256",value:g},{type:"uint256",value:C}],W="0"):(I=[{type:"uint256",value:a},{type:"bytes32",value:f},{type:"uint256",value:g},{type:"uint256",value:0}],W=C),x="bridge(uint256,bytes32,uint256,uint256)"):(B==="stablecoin"?(I=[{type:"bytes32",value:c},{type:"uint256",value:a},{type:"bytes32",value:f},{type:"uint256",value:g},{type:"bytes32",value:y},{type:"uint256",value:M},{type:"uint8",value:b},{type:"uint256",value:C}],W="0"):(I=[{type:"bytes32",value:c},{type:"uint256",value:a},{type:"bytes32",value:f},{type:"uint256",value:g},{type:"bytes32",value:y},{type:"uint256",value:M},{type:"uint8",value:b},{type:"uint256",value:0}],W=C),x="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)"),this.buildRawTransaction(A,x,I,W,u)}async buildRawTransaction(i,a,A,u,c){let g=await this.tronWeb.transactionBuilder.triggerSmartContract(i,a,{callValue:u},A,c);if(!g?.result?.result)throw new Z("Unknown error: "+JSON.stringify(g,null,2));return g.transaction}};var An=class{constructor(r,i,a,A){this.api=r;this.nodeRpcUrlsConfig=i;this.params=a;this.tokenService=A;this.rawTxBuilder=new qt(r,i,a,A)}async getAllowance(r,i){let a,A;i?(a=r,A=i):A=r;let u=St(A.token,A.messenger);return await this.tokenService.getAllowance({...A,spender:u},a)}async checkAllowance(r,i){let a,A;i?(a=r,A=i):A=r;let u=St(A.token,A.messenger);return this.tokenService.checkAllowance({...A,spender:u},a)}async approve(r,i){let a=St(i.token,i.messenger);return this.tokenService.approve(r,{...i,spender:a})}async send(r,i){return L(i.amount),J("amount",i.amount,i.sourceToken.decimals),$t(i.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).send(i)}};function St(l,r){if(r&&r==3){if(l.cctpAddress)return l.cctpAddress;throw new we("Such route does not support CCTP protocol")}else return l.bridgeAddress}function $t(l,r,i,a,A){switch(V.getChainProperty(l).chainType){case"EVM":{if(A)return new wt(A,r,i);{let u=i.getNodeRpcUrl(l);return new wt(new ia(u),r,i)}}case"TRX":{if(A)return new It(A,r);{let u=i.getNodeRpcUrl(l);return new It(new na({fullHost:u}),r)}}case"SOLANA":return new rn(i.getNodeRpcUrl("SOL"),{wormholeMessengerProgramId:a.wormholeMessengerProgramId,solanaLookUpTable:a.solanaLookUpTable,cctpParams:a.cctpParams,jupiterUrl:a.jupiterUrl},r);case"SRB":return new an(i,a,r)}}import{Big as da}from"big.js";import pa from"timed-cache";import ga from"tronweb";import fa from"web3";import{Big as Ee}from"big.js";function Xi(l,r,i,a,A){let u=O(l,3),c=Ee(u),g=Ee(i),f=Ee(a).plus(A),y,b;if(g.eq(0)||f.eq(0)){let B=c.div(2);y=Ee(a).plus(B),b=Ee(A).plus(B)}else y=Ee(a).plus(c.mul(a).div(f)),b=Ee(A).plus(c.mul(A).div(f));return Ee(oi(r,y.toFixed(),b.toFixed())).minus(g).toFixed()}function Li(l){let r=O(l,3);return Ee(r).round().toFixed()}var Ye=[{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"}];var fe=class{constructor(r){this.lpAmount=r.lpAmount,this.rewardDebt=r.rewardDebt}get userLiquidity(){return N(this.lpAmount,3).toFixed()}earned(r,i){let a=ai(this.lpAmount,this.rewardDebt,r.accRewardPerShareP,r.p);return i?N(a,i).toFixed():a}};var Ie=class{};var Rt=class extends Ie{constructor(i,a){super();this.web3=i;this.api=a;this.chainType="EVM";this.P=52}async getUserBalanceInfo(i,a){let A;try{A=await Ht(this.getUserBalanceInfoByBatch(i,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5e3)}catch{A=await vn(()=>this.getUserBalanceInfoPerProperty(i,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5,2e3)}return A}async getUserBalanceInfoByBatch(i,a){let A=new this.web3.BatchRequest,u=new this.web3.eth.Contract(Ye,a.poolAddress),c=["userRewardDebt","balanceOf"].map(y=>mt(b=>A.add(u.methods[y](i).call.request({},b)))());A.execute();let[g,f]=await Promise.all(c);return new fe({lpAmount:f,rewardDebt:g})}async getUserBalanceInfoPerProperty(i,a){let A=await this.getPoolContract(a.poolAddress).methods.userRewardDebt(i).call(),u=await this.getPoolContract(a.poolAddress).methods.balanceOf(i).call();return new fe({lpAmount:u,rewardDebt:A})}async getPoolInfoFromChain(i){let a;try{a=await Ht(this.getPoolInfoByBatch(i),`Cannot get PoolInfo for ${i.name} on ${i.chainSymbol}`,5e3)}catch{a=await vn(()=>this.getPoolInfoPerProperty(i),`Cannot get PoolInfo for ${i.name} on ${i.chainSymbol}`,5,2e3)}return a}async getPoolInfoByBatch(i){let a=new this.web3.BatchRequest,A=new this.web3.eth.Contract(Ye,i.poolAddress),u=["a","d","tokenBalance","vUsdBalance","totalSupply","accRewardPerShareP"].map(M=>mt(I=>a.add(A.methods[M]().call.request({},I)))());a.execute();let[c,g,f,y,b,T]=await Promise.all(u),B=f.toString(),S=y.toString(),C=ge({tokenBalance:B,vUsdBalance:S});return{aValue:c.toString(),dValue:g.toString(),tokenBalance:B,vUsdBalance:S,totalLpAmount:b.toString(),accRewardPerShareP:T.toString(),p:this.P,imbalance:C}}async getPoolInfoPerProperty(i){let a=this.getPoolContract(i.poolAddress),A=await a.methods.a().call(),u=await a.methods.d().call(),c=await a.methods.tokenBalance().call(),g=await a.methods.vUsdBalance().call(),f=await a.methods.totalSupply().call(),y=await a.methods.accRewardPerShareP().call(),b=ge({tokenBalance:c,vUsdBalance:g});return{aValue:A,dValue:u,tokenBalance:c,vUsdBalance:g,totalLpAmount:f,accRewardPerShareP:y,p:this.P,imbalance:b}}async buildRawTransactionDeposit(i){return Promise.resolve({...this.buildTxParams(i),data:this.getPoolContract(i.token.poolAddress).methods.deposit(i.amount).encodeABI()})}async buildRawTransactionWithdraw(i){return Promise.resolve({...this.buildTxParams(i),data:this.getPoolContract(i.token.poolAddress).methods.withdraw(i.amount).encodeABI()})}async buildRawTransactionClaimRewards(i){return Promise.resolve({...this.buildTxParams(i),data:this.getPoolContract(i.token.poolAddress).methods.claimRewards().encodeABI()})}buildTxParams(i){return{from:i.accountAddress,to:i.token.poolAddress,value:"0"}}getContract(i,a){return new this.web3.eth.Contract(i,a)}getPoolContract(i){return this.getContract(Ye,i)}};var cn=class{constructor(r,i,a,A){this.api=r;this.nodeRpcUrlsConfig=i;this.params=a;this.tokenService=A}async approve(r,i){if(i){let a=r,A=i;return this.tokenService.buildRawTransactionApprove({...A,spender:A.token.poolAddress},a)}else{let a=r;return this.tokenService.buildRawTransactionApprove({...a,spender:a.token.poolAddress})}}async deposit(r,i){return L(r.amount),J("amount",r.amount,r.token.decimals),r.amount=O(r.amount,r.token.decimals).toFixed(),lt(r.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).buildRawTransactionDeposit(r)}async withdraw(r,i){return L(r.amount),J("amount",r.amount,r.token.decimals),r.amount=O(r.amount,3).toFixed(),lt(r.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).buildRawTransactionWithdraw(r)}async claimRewards(r,i){return lt(r.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).buildRawTransactionClaimRewards(r)}};import{AnchorProvider as aa,BN as Yi,Program as sa,Spl as oa,web3 as Aa}from"@project-serum/anchor";import{Connection as ca,PublicKey as Je}from"@solana/web3.js";var un=class extends Ie{constructor(i,a){super();this.solanaRpcUrl=i;this.api=a;this.chainType="SOLANA";this.P=48}async getUserBalanceInfo(i,a){let A=this.buildAnchorProvider(i),u=this.getBridge(a.bridgeAddress,A),c=new Je(a.poolAddress),g=await u.account.pool.fetch(c);try{let f=await Fn(new Je(i),g.mint,u.programId),{lpAmount:y,rewardDebt:b}=await u.account.userDeposit.fetch(f);return new fe({lpAmount:y.toString(),rewardDebt:b.toString()})}catch{return new fe({lpAmount:"0",rewardDebt:"0"})}}async getPoolInfoFromChain(i){let a=this.buildAnchorProvider(i.bridgeAddress),A=await this.getBridge(i.bridgeAddress,a).account.pool.fetch(i.poolAddress),u=A.vUsdBalance.toString(),c=A.tokenBalance.toString(),g=ge({tokenBalance:c,vUsdBalance:u});return{dValue:A.d.toString(),aValue:A.a.toString(),totalLpAmount:A.totalLpAmount.toString(),vUsdBalance:u,tokenBalance:c,accRewardPerShareP:A.accRewardPerShareP.toString(),p:this.P,imbalance:g}}async buildRawTransactionDeposit(i){let{bridge:a,accounts:A,preInstructions:u}=await this.prepareDataForTransaction(i),c=await a.methods.deposit(new Yi(i.amount)).accounts(A).preInstructions(u).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(i.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new Je(i.accountAddress),await ct(c,i.txFeeParams,this.solanaRpcUrl),c}async buildRawTransactionWithdraw(i){let{bridge:a,accounts:A,preInstructions:u}=await this.prepareDataForTransaction(i),c=await a.methods.withdraw(new Yi(i.amount)).accounts(A).preInstructions(u).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(i.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new Je(i.accountAddress),await ct(c,i.txFeeParams,this.solanaRpcUrl),c}async buildRawTransactionClaimRewards(i){let{bridge:a,accounts:A,preInstructions:u}=await this.prepareDataForTransaction(i),c=await a.methods.claimRewards().accounts(A).preInstructions(u).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(i.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new Je(i.accountAddress),await ct(c,i.txFeeParams,this.solanaRpcUrl),c}async prepareDataForTransaction(i){let a=this.buildAnchorProvider(i.accountAddress),A=this.getBridge(i.token.bridgeAddress,a),{accounts:u,preInstructions:c}=await this._getLPTransactionData(A,i.token.poolAddress,i.accountAddress,a);return{bridge:A,accounts:u,preInstructions:c}}getBridge(i,a){return new sa(Bt,i,a)}buildAnchorProvider(i){let a=new ca(this.solanaRpcUrl,"confirmed"),A=new Je(i);return new aa(a,{publicKey:A},{preflightCommitment:"confirmed",commitment:"confirmed"})}async _getLPTransactionData(i,a,A,u){let c=new Je(A),g=await Ve(i.programId),f=await rt(i.programId),y=new Je(a),T=(await i.account.pool.fetch(y)).mint,B=await Be(c,T),S=await at(T,i.programId),C=await Fn(c,T,i.programId),M=[Aa.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await At(B,u)}catch{let G=await oa.associatedToken(u).methods.create().accounts({mint:T,owner:c,associatedAccount:B}).instruction();M.push(G)}try{await i.account.userDeposit.fetch(C)}catch{let x=await i.methods.initDepositAccount().accounts({mint:T,user:c,userDeposit:C}).instruction();M.push(x)}return{accounts:{mint:T,user:c,config:g,pool:y,bridgeAuthority:f,userDeposit:C,userToken:B,bridgeToken:S},preInstructions:M}}};import{contract as ob}from"@stellar/stellar-sdk";import{contract as t}from"@stellar/stellar-sdk";var ua=t.Spec,ma=t.Client;var mn=class extends ma{constructor(i){super(new ua(["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"]),i);this.options=i;this.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}}};var ln=class extends Ie{constructor(i,a,A){super();this.nodeRpcUrlsConfig=i;this.params=a;this.api=A;this.chainType="SRB";this.P=48}async getUserBalanceInfo(i,a){let u=(await this.getContract(a.poolAddress).get_user_deposit({user:i})).result;if(u.isErr())throw new Z;let c=u.unwrap();return new fe({lpAmount:c.lp_amount.toString(),rewardDebt:c.reward_debt.toString()})}async getPoolInfoFromChain(i){let A=(await this.getContract(i.poolAddress).get_pool()).result;if(A.isErr())throw new Z;let u=A.unwrap();return{aValue:u.a.toString(),accRewardPerShareP:u.acc_reward_per_share_p.toString(),dValue:u.d.toString(),tokenBalance:u.token_balance.toString(),p:this.P,totalLpAmount:u.total_lp_amount.toString(),vUsdBalance:u.v_usd_balance.toString(),imbalance:ge({tokenBalance:u.token_balance.toString(),vUsdBalance:u.v_usd_balance.toString()})}}async buildRawTransactionDeposit(i){return(await this.getContract(i.token.poolAddress,i.accountAddress).deposit({sender:i.accountAddress,amount:BigInt(i.amount)})).toXDR()}async buildRawTransactionWithdraw(i){return(await this.getContract(i.token.poolAddress,i.accountAddress).withdraw({sender:i.accountAddress,amount_lp:BigInt(i.amount)})).toXDR()}async buildRawTransactionClaimRewards(i){return(await this.getContract(i.token.poolAddress,i.accountAddress).claim_rewards({sender:i.accountAddress})).toXDR()}getContract(i,a){let A={publicKey:a,contractId:i,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new mn(A)}};import la from"web3";var kt=class extends Ie{constructor(i,a,A){super();this.tronWeb=i;this.api=a;this.chainType="TRX";this.P=52;A&&(this.web3=new la(A))}async getUserBalanceInfo(i,a){let A;if(this.web3)try{A=await this.getUserBalanceInfoByBatch(this.web3,i,a)}catch{A=await this.getUserBalanceInfoPerProperty(i,a)}else A=await this.getUserBalanceInfoPerProperty(i,a);return A}async getUserBalanceInfoByBatch(i,a,A){let u=new i.BatchRequest,c=new i.eth.Contract(Ye,Pt(A.poolAddress)),g=Pt(a),f=["userRewardDebt","balanceOf"].map(T=>mt(B=>u.add(c.methods[T](g).call.request({},B)))());u.execute();let[y,b]=await Promise.all(f);return new fe({lpAmount:b,rewardDebt:y})}async getUserBalanceInfoPerProperty(i,a){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(i);let A=await this.getContract(a.poolAddress),u=(await A.methods.userRewardDebt(i).call()).toString(),c=(await A.methods.balanceOf(i).call()).toString();return new fe({lpAmount:c,rewardDebt:u})}async getPoolInfoFromChain(i){let a;if(this.web3)try{a=await this.getPoolInfoByBatch(this.web3,i)}catch{a=await this.getPoolInfoPerProperty(i)}else a=await this.getPoolInfoPerProperty(i);return a}async getPoolInfoByBatch(i,a){let A=new i.BatchRequest,u=new i.eth.Contract(Ye,Pt(a.poolAddress)),c=["a","d","tokenBalance","vUsdBalance","totalSupply","accRewardPerShareP"].map(I=>mt(W=>A.add(u.methods[I]().call.request({},W)))());A.execute();let[g,f,y,b,T,B]=await Promise.all(c),S=y.toString(),C=b.toString(),M=ge({tokenBalance:S,vUsdBalance:C});return{aValue:g.toString(),dValue:f.toString(),tokenBalance:S,vUsdBalance:C,totalLpAmount:T.toString(),accRewardPerShareP:B.toString(),p:this.P,imbalance:M}}async getPoolInfoPerProperty(i){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(i.poolAddress);let a=await this.getContract(i.poolAddress),[A,u,c,g,f,y]=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()]),b=c.toString(),T=g.toString(),B=ge({tokenBalance:b,vUsdBalance:T});return{aValue:A.toString(),dValue:u.toString(),tokenBalance:b,vUsdBalance:T,totalLpAmount:f.toString(),accRewardPerShareP:y.toString(),p:this.P,imbalance:B}}buildRawTransactionDeposit(i){let{amount:a,accountAddress:A}=i,u=[{type:"uint256",value:a}];return this.buildRawTransaction(i.token.poolAddress,"deposit(uint256)",u,"0",A)}buildRawTransactionWithdraw(i){let{amount:a,accountAddress:A}=i,u=[{type:"uint256",value:a}];return this.buildRawTransaction(i.token.poolAddress,"withdraw(uint256)",u,"0",A)}buildRawTransactionClaimRewards(i){let{accountAddress:a}=i,A=[];return this.buildRawTransaction(i.token.poolAddress,"claimRewards()",A,"0",a)}async buildRawTransaction(i,a,A,u,c){let g=await this.tronWeb.transactionBuilder.triggerSmartContract(i,a,{callValue:u},A,c);if(!g?.result?.result)throw new Z("Unknown error: "+JSON.stringify(g,null,2));return g.transaction}async getContract(i){return await this.tronWeb.contract(Ye,i)}};var dn=class{constructor(r,i,a,A){this.api=r;this.nodeRpcUrlsConfig=i;this.params=a;this.tokenService=A;this.rawTxBuilder=new cn(r,i,this.params,A);let u=a.cachePoolInfoChainSec>0?a.cachePoolInfoChainSec*1e3:20*1e3;this.cache=new pa({defaultTtl:u})}async getAllowance(r,i){if(i){let a=r,A=i;return await this.tokenService.getAllowance({...A,spender:A.token.poolAddress},a)}else{let a=r;return await this.tokenService.getAllowance({...a,spender:a.token.poolAddress})}}async checkAllowance(r,i){if(i){let a=r,A=i;return this.tokenService.checkAllowance({...A,spender:A.token.poolAddress},a)}else{let a=r;return this.tokenService.checkAllowance({...a,spender:a.token.poolAddress})}}async approve(r,i){return this.tokenService.approve(r,{...i,spender:i.token.poolAddress})}async getAmountToBeDeposited(r,i,a){L(r),J("amount",r,i.decimals);let A=await this.getPoolInfoFromChain(i,a),{vUsdBalance:u,tokenBalance:c,aValue:g,dValue:f}=A,y=Xi(r,g,f,c,u);return N(y,3).toFixed()}async getAmountToBeWithdrawn(r,i,a,A){L(r),J("amount",r,a.decimals);let u=await this.getPoolInfoFromChain(a,A),c=Li(r),g=pe(c,a.decimals),y=(await this.getUserBalanceInfo(i,a,A)).earned(u)||"0",b=da(g).plus(y).toFixed();return N(b,a.decimals).toFixed()}async getUserBalanceInfo(r,i,a){return lt(i.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,a).getUserBalanceInfo(r,i)}async getPoolInfoFromChain(r,i){let a={chainSymbol:r.chainSymbol,poolAddress:r.poolAddress},A=this.cache.get(a);if(A)return A;{let u=await lt(r.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).getPoolInfoFromChain(r);return this.cache.put(a,u),this.api.cachePut({chainSymbol:r.chainSymbol,poolAddress:r.poolAddress},u),u}}};function lt(l,r,i,a,A){switch(V.getChainProperty(l).chainType){case"EVM":{if(A)return new Rt(A,r);{let u=i.getNodeRpcUrl(l);return new Rt(new fa(u),r)}}case"TRX":{let u=i.getNodeRpcUrl(l),c=a.tronJsonRpc;if(A)return new kt(A,r,c);{let g=new ga({fullHost:u});return new kt(g,r,c)}}case"SOLANA":{let u=i.getNodeRpcUrl(l);return new un(u,r)}case"SRB":return new ln(i,a,r)}}import{Big as j}from"big.js";function Qi(l,r,i){let a=ha(l,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo),A=ya(a.amountIncludingCommissionInSystemPrecision,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:A}}function Hi(l,r,i){let a=ba(l,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo),A=Ta(a.amountIncludingCommissionInSystemPrecision,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:A}}function ha(l,{feeShare:r,decimals:i},a){let A=j(l),u=A.times(r),c=A.minus(u);return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInSystemPrecision:Ji(ze(c,i),a),amountExcludingCommissionInSystemPrecision:Ji(ze(A,i),a)}}function Ji(l,r){if(l.eq(0))return"0";let i=j(r.tokenBalance).plus(l),a=ve(i.toFixed(),r.aValue,r.dValue);return j(r.vUsdBalance).minus(a).round().toFixed()}function ya(l,{feeShare:r,decimals:i},a){if(j(l).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let u=j(l).plus(a.vUsdBalance),c=ve(u,a.aValue,a.dValue),g=pe(j(a.tokenBalance).minus(c),i),f=j(g).times(r),y=j(g).minus(f).round();return{bridgeFeeInTokenPrecision:f.round().toFixed(),amountIncludingCommissionInTokenPrecision:y.toFixed(),amountExcludingCommissionInTokenPrecision:g.toFixed()}}function ba(l,{feeShare:r,decimals:i},a){let A=j(r).div(j(1).minus(r)),u=j(l).times(A),c=j(l).plus(u);return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInSystemPrecision:Ki(ze(c,i),a),amountExcludingCommissionInSystemPrecision:Ki(ze(l,i),a)}}function Ki(l,r){let i=j(r.tokenBalance).minus(l),a=ve(i.toFixed(),r.aValue,r.dValue);return j(a).minus(r.vUsdBalance).round().toFixed()}function Ta(l,{feeShare:r,decimals:i},a){if(j(l).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let A=j(a.vUsdBalance).minus(l),u=ve(A.toFixed(),a.aValue,a.dValue),c=j(u).minus(a.tokenBalance),g=pe(c.toFixed(),i),f=j(r).div(j(1).minus(r)),y=j(g).times(f),b=j(g).plus(y);return{bridgeFeeInTokenPrecision:y.round().toFixed(),amountIncludingCommissionInTokenPrecision:b.round().toFixed(),amountExcludingCommissionInTokenPrecision:g.toFixed()}}import{Big as Ke}from"big.js";function zi(l,r,i,a,A){let u=Me(l,r,i),c=pe(u,r.decimals),g=bt(u,a,A),f=Ke(l).times(r.feeShare),y=Ke(g).div(Ke(1).minus(a.feeShare)).minus(g);return{sourceLPSwap:{fee:N(f,r.decimals).neg().round(r.decimals,Ke.roundUp).toFixed(),swap:N(Ke(l).minus(c).minus(f),r.decimals).neg().round(r.decimals,Ke.roundUp).toFixed()},destLPSwap:{fee:N(y,a.decimals).neg().round(a.decimals,Ke.roundUp).toFixed(),swap:N(pe(u,a.decimals).minus(g).minus(y),a.decimals).neg().round(a.decimals,Ke.roundUp).toFixed()}}}import{Connection as Pa,PublicKey as wa,TransactionMessage as Sa}from"@solana/web3.js";var pn=class{constructor(r,i){this.nodeRpcUrlsConfig=r;this.params=i}async addMemoToTx(r,i){if(i.length>28)throw new Z("InvalidArgumentException memo cannot be more than 28 characters");let a=new Pa(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),A=await qe(r,a),u=Sa.decompile(r.message,{addressLookupTableAccounts:A}),c=u.instructions[u.instructions.length-1];if(!c?.keys)throw new Z("Last instruction or its keys are invalid.");c.keys.push({pubkey:new wa(w.from(i)),isSigner:!1,isWritable:!1}),r.message=u.compileToV0Message(A)}};import{Asset as Ia,BASE_FEE as Ra,Horizon as ji,Operation as ka,Operation as Ma,SorobanRpc as vt,TimeoutInfinite as va,TransactionBuilder as On,TransactionBuilder as qi,contract as Ab}from"@stellar/stellar-sdk";import{contract as e}from"@stellar/stellar-sdk";var Ba=e.Spec,Ca=e.Client;var Mt=class extends Ca{constructor(i){super(new Ba(["AAAAAAAAAYlSZXR1cm5zIHRoZSBhbGxvd2FuY2UgZm9yIGBzcGVuZGVyYCB0byB0cmFuc2ZlciBmcm9tIGBmcm9tYC4KClRoZSBhbW91bnQgcmV0dXJuZWQgaXMgdGhlIGFtb3VudCB0aGF0IHNwZW5kZXIgaXMgYWxsb3dlZCB0byB0cmFuc2ZlcgpvdXQgb2YgZnJvbSdzIGJhbGFuY2UuIFdoZW4gdGhlIHNwZW5kZXIgdHJhbnNmZXJzIGFtb3VudHMsIHRoZSBhbGxvd2FuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQgdHJhbnNmZXJlZC4KCiMgQXJndW1lbnRzCgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHRvIGJlIGRyYXduIGZyb20uCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3Mgc3BlbmRpbmcgdGhlIHRva2VucyBoZWxkIGJ5IGBmcm9tYC4AAAAAAAAJYWxsb3dhbmNlAAAAAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAEAAAAL","AAAAAAAAAIlSZXR1cm5zIHRydWUgaWYgYGlkYCBpcyBhdXRob3JpemVkIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBmb3Igd2hpY2ggdG9rZW4gYXV0aG9yaXphdGlvbiBpcyBiZWluZyBjaGVja2VkLgAAAAAAAAphdXRob3JpemVkAAAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAB","AAAAAAAAA55TZXQgdGhlIGFsbG93YW5jZSBieSBgYW1vdW50YCBmb3IgYHNwZW5kZXJgIHRvIHRyYW5zZmVyL2J1cm4gZnJvbQpgZnJvbWAuCgpUaGUgYW1vdW50IHNldCBpcyB0aGUgYW1vdW50IHRoYXQgc3BlbmRlciBpcyBhcHByb3ZlZCB0byB0cmFuc2ZlciBvdXQgb2YKZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byB0cmFuc2ZlciBhbW91bnRzLCBhbmQKd2hlbiBhbiBhbW91bnQgaXMgdHJhbnNmZXJyZWQgdGhlIGFsbG93YW5jZSB3aWxsIGJlIHJlZHVjZWQgYnkgdGhlCmFtb3VudCB0cmFuc2ZlcmVkLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgdG8gYmUgZHJhd24gZnJvbS4KKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBiZWluZyBhdXRob3JpemVkIHRvIHNwZW5kIHRoZSB0b2tlbnMgaGVsZCBieQpgZnJvbWAuCiogYGFtb3VudGAgLSBUaGUgdG9rZW5zIHRvIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGBzcGVuZGVyYC4KKiBgZXhwaXJhdGlvbl9sZWRnZXJgIC0gVGhlIGxlZGdlciBudW1iZXIgd2hlcmUgdGhpcyBhbGxvd2FuY2UgZXhwaXJlcy4gQ2Fubm90CmJlIGxlc3MgdGhhbiB0aGUgY3VycmVudCBsZWRnZXIgbnVtYmVyIHVubGVzcyB0aGUgYW1vdW50IGlzIGJlaW5nIHNldCB0byAwLgpBbiBleHBpcmVkIGVudHJ5ICh3aGVyZSBleHBpcmF0aW9uX2xlZGdlciA8IHRoZSBjdXJyZW50IGxlZGdlciBudW1iZXIpCnNob3VsZCBiZSB0cmVhdGVkIGFzIGEgMCBhbW91bnQgYWxsb3dhbmNlLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImFwcHJvdmUiLCBmcm9tOiBBZGRyZXNzLApzcGVuZGVyOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6IGkxMjgsIGV4cGlyYXRpb25fbGVkZ2VyOiB1MzJdYAAAAAAAB2FwcHJvdmUAAAAABAAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAAAAABFleHBpcmF0aW9uX2xlZGdlcgAAAAAAAAQAAAAA","AAAAAAAAAJhSZXR1cm5zIHRoZSBiYWxhbmNlIG9mIGBpZGAuCgojIEFyZ3VtZW50cwoKKiBgaWRgIC0gVGhlIGFkZHJlc3MgZm9yIHdoaWNoIGEgYmFsYW5jZSBpcyBiZWluZyBxdWVyaWVkLiBJZiB0aGUKYWRkcmVzcyBoYXMgbm8gZXhpc3RpbmcgYmFsYW5jZSwgcmV0dXJucyAwLgAAAAdiYWxhbmNlAAAAAAEAAAAAAAAAAmlkAAAAAAATAAAAAQAAAAs=","AAAAAAAAAWRCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLgoKUmVkdWNlcyBmcm9tJ3MgYmFsYW5jZSBieSB0aGUgYW1vdW50LCB3aXRob3V0IHRyYW5zZmVycmluZyB0aGUgYmFsYW5jZQp0byBhbm90aGVyIGhvbGRlcidzIGJhbGFuY2UuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIG9mIHRva2VucyB3aGljaCB3aWxsIGJlCmJ1cm5lZCBmcm9tLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgYnVybmVkLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImJ1cm4iLCBmcm9tOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6CmkxMjhdYAAAAARidXJuAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAtxCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSBvZiBgc3BlbmRlcmAuCgpSZWR1Y2VzIGZyb20ncyBiYWxhbmNlIGJ5IHRoZSBhbW91bnQsIHdpdGhvdXQgdHJhbnNmZXJyaW5nIHRoZSBiYWxhbmNlCnRvIGFub3RoZXIgaG9sZGVyJ3MgYmFsYW5jZS4KClRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byBidXJuIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZSwgaWYKdGhlIGFtb3VudCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGFsbG93YW5jZSB0aGF0IHRoZSBzcGVuZGVyIGhhcwpvbiB0aGUgZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyJ3MgYWxsb3dhbmNlIG9uIGZyb20ncyBiYWxhbmNlIHdpbGwgYmUKcmVkdWNlZCBieSB0aGUgYW1vdW50LgoKIyBBcmd1bWVudHMKCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3MgYXV0aG9yaXppbmcgdGhlIGJ1cm4sIGFuZCBoYXZpbmcgaXRzIGFsbG93YW5jZQpjb25zdW1lZCBkdXJpbmcgdGhlIGJ1cm4uCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQpidXJuZWQgZnJvbS4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIGJ1cm5lZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJidXJuIiwgZnJvbTogQWRkcmVzc10sIGRhdGEgPSBbYW1vdW50OgppMTI4XWAAAAAJYnVybl9mcm9tAAAAAAAAAwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAVNDbGF3YmFjayBgYW1vdW50YCBmcm9tIGBmcm9tYCBhY2NvdW50LiBgYW1vdW50YCBpcyBidXJuZWQgaW4gdGhlCmNsYXdiYWNrIHByb2Nlc3MuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIGZyb20gd2hpY2ggdGhlIGNsYXdiYWNrIHdpbGwKdGFrZSB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSBjbGF3ZWQgYmFjay4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJjbGF3YmFjayIsIGFkbWluOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAACGNsYXdiYWNrAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAIBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdXNlZCB0byByZXByZXNlbnQgYW1vdW50cyBvZiB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAhkZWNpbWFscwAAAAAAAAABAAAABA==","AAAAAAAAAPVNaW50cyBgYW1vdW50YCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgbWludGVkIHRva2Vucy4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIG1pbnRlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJtaW50IiwgYWRtaW46IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwgZGF0YQo9IFthbW91bnQ6IGkxMjhdYAAAAAAAAARtaW50AAAAAgAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAFlSZXR1cm5zIHRoZSBuYW1lIGZvciB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAAAAARuYW1lAAAAAAAAAAEAAAAQ","AAAAAAAAAQxTZXRzIHRoZSBhZG1pbmlzdHJhdG9yIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyBgbmV3X2FkbWluYC4KCiMgQXJndW1lbnRzCgoqIGBuZXdfYWRtaW5gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCBoZW5jZWZvcnRoIGJlIHRoZSBhZG1pbmlzdHJhdG9yCm9mIHRoaXMgdG9rZW4gY29udHJhY3QuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2FkbWluIiwgYWRtaW46IEFkZHJlc3NdLCBkYXRhID0KW25ld19hZG1pbjogQWRkcmVzc11gAAAACXNldF9hZG1pbgAAAAAAAAEAAAAAAAAACW5ld19hZG1pbgAAAAAAABMAAAAA","AAAAAAAAAEZSZXR1cm5zIHRoZSBhZG1pbiBvZiB0aGUgY29udHJhY3QuCgojIFBhbmljcwoKSWYgdGhlIGFkbWluIGlzIG5vdCBzZXQuAAAAAAAFYWRtaW4AAAAAAAAAAAAAAQAAABM=","AAAAAAAAAVBTZXRzIHdoZXRoZXIgdGhlIGFjY291bnQgaXMgYXV0aG9yaXplZCB0byB1c2UgaXRzIGJhbGFuY2UuIElmCmBhdXRob3JpemVkYCBpcyB0cnVlLCBgaWRgIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBiZWluZyAoZGUtKWF1dGhvcml6ZWQuCiogYGF1dGhvcml6ZWAgLSBXaGV0aGVyIG9yIG5vdCBgaWRgIGNhbiB1c2UgaXRzIGJhbGFuY2UuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2F1dGhvcml6ZWQiLCBpZDogQWRkcmVzc10sIGRhdGEgPQpbYXV0aG9yaXplOiBib29sXWAAAAAOc2V0X2F1dGhvcml6ZWQAAAAAAAIAAAAAAAAAAmlkAAAAAAATAAAAAAAAAAlhdXRob3JpemUAAAAAAAABAAAAAA==","AAAAAAAAAFtSZXR1cm5zIHRoZSBzeW1ib2wgZm9yIHRoaXMgdG9rZW4uCgojIFBhbmljcwoKSWYgdGhlIGNvbnRyYWN0IGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuAAAAAAZzeW1ib2wAAAAAAAAAAAABAAAAEA==","AAAAAAAAAWRUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQp3aXRoZHJhd24gZnJvbS4KKiBgdG9gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCByZWNlaXZlIHRoZSB0cmFuc2ZlcnJlZCB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSB0cmFuc2ZlcnJlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJ0cmFuc2ZlciIsIGZyb206IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwKZGF0YSA9IFthbW91bnQ6IGkxMjhdYAAAAAh0cmFuc2ZlcgAAAAMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAzNUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSB0aGF0CmBzcGVuZGVyYCBoYXMgb24gYGZyb21gJ3MgYmFsYW5jZS4gQXV0aG9yaXplZCBieSBzcGVuZGVyCihgc3BlbmRlci5yZXF1aXJlX2F1dGgoKWApLgoKVGhlIHNwZW5kZXIgd2lsbCBiZSBhbGxvd2VkIHRvIHRyYW5zZmVyIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZQppZiB0aGUgYW1vdW50IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgYWxsb3dhbmNlIHRoYXQgdGhlIHNwZW5kZXIKaGFzIG9uIHRoZSBmcm9tJ3MgYmFsYW5jZS4gVGhlIHNwZW5kZXIncyBhbGxvd2FuY2Ugb24gZnJvbSdzIGJhbGFuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQuCgojIEFyZ3VtZW50cwoKKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBhdXRob3JpemluZyB0aGUgdHJhbnNmZXIsIGFuZCBoYXZpbmcgaXRzCmFsbG93YW5jZSBjb25zdW1lZCBkdXJpbmcgdGhlIHRyYW5zZmVyLgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHdoaWNoIHdpbGwgYmUKd2l0aGRyYXduIGZyb20uCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgdHJhbnNmZXJyZWQgdG9rZW5zLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgdHJhbnNmZXJyZWQuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsidHJhbnNmZXIiLCBmcm9tOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAADXRyYW5zZmVyX2Zyb20AAAAAAAAEAAAAAAAAAAdzcGVuZGVyAAAAABMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA=="]),i);this.options=i;this.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 xa=100,Wa=180,gn=class{constructor(r,i){this.nodeRpcUrlsConfig=r;this.params=i}async buildChangeTrustLineXdrTx(r){let a=await new ji.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(r.sender),u=(await this.getContract(Mt,r.tokenAddress).name()).result,[c,g]=u.split(":");if(c===void 0||g===void 0)throw new Z("Invalid token name format. Expected format 'symbol:srbTokenAddress'");let f=new Ia(c,g),y=Ma.changeTrust({asset:f,limit:r.limit});return new qi(a,{fee:xa.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(y).setTimeout(Wa).build().toXDR()}async getBalanceLine(r,i){let A=(await this.getContract(Mt,i).name()).result,[u,c]=A.split(":"),g=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new ji.Server(g).loadAccount(r)).balances.find(T=>(T.asset_type==="credit_alphanum4"||T.asset_type==="credit_alphanum12")&&T.asset_code==u&&T.asset_issuer==c)}async submitTransactionStellar(r){let i=new ji.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),a=qi.fromXDR(r,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await i.submitTransaction(a)}async simulateAndCheckRestoreTxRequiredSoroban(r,i){let a=new vt.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),A=await a.getAccount(i),u=On.fromXDR(r,this.params.sorobanNetworkPassphrase),c=await a.simulateTransaction(u);if(vt.Api.isSimulationRestore(c))return new On(A,{fee:(+Ra+ +c.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(c.restorePreamble.transactionData.build()).addOperation(ka.restoreFootprint({})).setTimeout(va).build().toXDR()}async sendTransactionSoroban(r){let i=new vt.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=On.fromXDR(r,this.params.sorobanNetworkPassphrase);return i.sendTransaction(a)}async confirmTx(r,i=15){let a=new vt.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),A=await pi(()=>a.getTransaction(r),c=>c.status===vt.Api.GetTransactionStatus.NOT_FOUND,i);if(A.length===0)throw new Z("No transaction responses found.");let u=A[A.length-1];if(!u)throw new Z("Unexpected error: last response is undefined.");return u}getContract(r,i){let a={contractId:i,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new r(a)}};var fn=class{constructor(r,i){this.nodeRpcUrlsConfig=r;this.srb=new gn(r,i),this.sol=new pn(r,i)}};var ot=(i=>(i.WITH_NATIVE_CURRENCY="native",i.WITH_STABLECOIN="stablecoin",i))(ot||{}),zt=(i=>(i.INT="int",i.FLOAT="float",i))(zt||{});import{Big as Va}from"big.js";import Oa from"tronweb";import Xa from"web3";import Xn from"erc-20-abi";import{Big as $i}from"big.js";var Re=class{async checkAllowance(r){let i=await this.getAllowance(r);return $i(i).gte($i(r.amount))}};var Fa="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Ga="0xdac17f958d2ee523a2206206994597c13d831ec7",Da=1e5,xt=class extends Re{constructor(i,a){super();this.web3=i;this.api=a;this.chainType="EVM"}getAllowance(i){let a=i.token.tokenAddress,A=i.owner,u=i.spender;return this.getAllowanceByTokenAddress(a,A,u)}getAllowanceByTokenAddress(i,a,A){return this.getContract(Xn,i).methods.allowance(a,A).call()}async getTokenBalance(i){return await this.getContract(Xn,i.token.tokenAddress).methods.balanceOf(i.account).call()}async getNativeTokenBalance(i){return await this.web3.eth.getBalance(i.account)}async approve(i){if(this.isUsdt(i.tokenAddress)&&await this.getAllowanceByTokenAddress(i.tokenAddress,i.owner,i.spender)!=="0"){let u=await this.buildRawTransactionApprove({...i,amount:"0"});await this.sendRawTransaction(u,i.chainSymbol)}let a=await this.buildRawTransactionApprove(i);return await this.sendRawTransaction(a,i.chainSymbol)}isUsdt(i){return i.toLowerCase()===Ga}async buildRawTransactionApprove(i){let{tokenAddress:a,spender:A,owner:u,amount:c}=i,f=await this.getContract(Xn,a).methods.approve(A,c==null?Fa:sn(c));return{from:u,to:a,value:"0",data:f.encodeABI()}}async sendRawTransaction(i,a){let A=i,u={maxPriorityFeePerGas:null,maxFeePerGas:null};a==="POL"?A.gas=Da:A.gas=await this.web3.eth.estimateGas(i);let{transactionHash:c}=await this.web3.eth.sendTransaction({...A,...u});return{txId:c}}getContract(i,a){return new this.web3.eth.Contract(i,a)}};import{AnchorProvider as Za}from"@project-serum/anchor";import{Connection as Ua,PublicKey as hn}from"@solana/web3.js";var yn=class extends Re{constructor(i,a){super();this.solanaRpcUrl=i;this.api=a;this.chainType="SOLANA"}approve(i){throw new ue}buildRawTransactionApprove(i){throw new ue}buildAnchorProvider(i){let a=new Ua(this.solanaRpcUrl,"confirmed"),A=new hn(i);return new Za(a,{publicKey:A},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(i){throw new ue}async getTokenBalance(i){let{account:a,token:A}=i;try{let u=await Be(new hn(a),new hn(A.tokenAddress));return(await At(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(i){return(await this.buildAnchorProvider(i.account).connection.getBalance(new hn(i.account))).toString()}};import{Horizon as gh,NotFoundError as Ea}from"@stellar/stellar-sdk";var bn=class extends Re{constructor(i,a,A){super();this.nodeRpcUrlsConfig=i;this.params=a;this.api=A;this.chainType="SRB"}getAllowance(){throw new ue}async getTokenBalance(i){if(!i.token.originTokenAddress)throw new Z("OriginTokenAddress missing");let[a,A]=i.token.originTokenAddress.split(":"),u=new gh.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),c;try{c=await u.loadAccount(i.account)}catch(y){if(y instanceof Ea)return"0";throw y}let f=c.balances.find(y=>(y.asset_type==="credit_alphanum4"||y.asset_type==="credit_alphanum12")&&y.asset_code==a&&y.asset_issuer==A);return f?.balance?O(f.balance,V.getChainDecimalsByType(V.getChainProperty(i.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(i){let c=(await new gh.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(i.account)).balances.find(g=>g.asset_type==="native");return c?.balance?O(c.balance,V.getChainDecimalsByType(V.getChainProperty(i.chainSymbol).chainType)).toFixed():"0"}approve(){throw new ue}buildRawTransactionApprove(){throw new ue}};var er=[{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"}];var Na="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Wt=class extends Re{constructor(i,a){super();this.tronWeb=i;this.api=a;this.chainType="TRX"}async getAllowance(i){let{token:{tokenAddress:a},owner:A}=i;return(await(await this.getContract(a)).methods.allowance(A,i.spender).call()).toString()}async getTokenBalance(i){return(await(await this.getContract(i.token.tokenAddress)).balanceOf(i.account).call()).toString()}async getNativeTokenBalance(i){return(await this.tronWeb.trx.getBalance(i.account)).toString()}async approve(i){let a=await this.buildRawTransactionApprove(i);return await on(this.tronWeb,a)}async buildRawTransactionApprove(i){let{tokenAddress:a,spender:A,owner:u,amount:c}=i,g=c==null?Na:sn(c),f=[{type:"address",value:A},{type:"uint256",value:g}];return this.buildRawTransaction(a,"approve(address,uint256)",f,"0",u)}async getContract(i){return await this.tronWeb.contract(er,i)}async buildRawTransaction(i,a,A,u,c){let g=await this.tronWeb.transactionBuilder.triggerSmartContract(i,a,{callValue:u},A,c);if(!g?.result?.result)throw new Z("Unknown error: "+JSON.stringify(g,null,2));return g.transaction}};var Tn=class{constructor(r,i,a){this.api=r;this.nodeRpcUrlsConfig=i;this.params=a}async getAllowance(r,i){let a=await this.getChainTokenService(r.token.chainSymbol,r.owner,i).getAllowance(r);return N(a,r.token.decimals).toFixed()}async checkAllowance(r,i){return L(r.amount),J("amount",r.amount,r.token.decimals),this.getChainTokenService(r.token.chainSymbol,r.owner,i).checkAllowance(this.prepareCheckAllowanceParams(r))}async approve(r,i){return i.amount&&(L(i.amount),J("amount",i.amount,i.token.decimals)),this.getChainTokenService(i.token.chainSymbol,i.owner,r).approve(this.prepareApproveParams(i))}async buildRawTransactionApprove(r,i){return r.amount&&(L(r.amount),J("amount",r.amount,r.token.decimals)),this.getChainTokenService(r.token.chainSymbol,r.owner,i).buildRawTransactionApprove(this.prepareApproveParams(r))}async getTokenBalance(r,i){let a=await this.getChainTokenService(r.token.chainSymbol,r.account,i).getTokenBalance(r);return r.token.decimals?N(a,r.token.decimals).toFixed():a}async getNativeTokenBalance(r,i){let a=await this.getChainTokenService(r.chainSymbol,r.account,i).getNativeTokenBalance(r);return{int:a,float:N(a,V.getChainDecimalsByType(V.getChainProperty(r.chainSymbol).chainType)).toFixed()}}getChainTokenService(r,i,a){switch(V.getChainProperty(r).chainType){case"EVM":{if(a)return new xt(a,this.api);{let A=this.nodeRpcUrlsConfig.getNodeRpcUrl(r);return new xt(new Xa(A),this.api)}}case"TRX":{if(a)return new Wt(a,this.api);{let A=this.nodeRpcUrlsConfig.getNodeRpcUrl(r),u=new Oa({fullHost:A});return u.setAddress(i),new Wt(u,this.api)}}case"SOLANA":{let A=this.nodeRpcUrlsConfig.getNodeRpcUrl(r);return new yn(A,this.api)}case"SRB":return new bn(this.nodeRpcUrlsConfig,this.params,this.api)}}prepareCheckAllowanceParams(r){return{...r,amount:O(r.amount,r.token.decimals)}}prepareApproveParams(r){return{tokenAddress:r.token.tokenAddress,owner:r.owner,spender:r.spender,chainSymbol:r.token.chainSymbol,amount:r.amount==null?void 0:Va(r.amount).toFixed()}}};var Ft=class{constructor(r){this.nodeRpcUrls=r}getNodeRpcUrl(r){let i=this.nodeRpcUrls[r];if(i!==void 0)return i;throw new Vt(r)}},Pn=class{constructor(r,i=Ut){V.addChainsProperties(i.additionalChainsProperties);let a=new Xt(i),A=new Yt(a),u=new Jt(A),c=new Qt(u);this.api=new Kt(c,i),this.tokenService=new Tn(this.api,r,i),this.bridge=new An(this.api,r,i,this.tokenService),this.pool=new dn(this.api,r,i,this.tokenService),this.params=i}async chainDetailsMap(r){return this.api.getChainDetailsMap(r)}async tokens(r){return this.api.tokens(r)}async tokensByChain(r,i){let A=(await this.api.getChainDetailsMap(i))[r];return A?A.tokens:[]}async getTransferStatus(r,i){return this.api.getTransferStatus(r,i)}async getGasBalance(r,i){return this.api.getGasBalance(r,i)}async checkAddress(){return new Promise(r=>{r({status:"OK",gasBalance:null})})}async getPendingStatusInfo(r,i,a,A){L(r);let u;i=="float"?(J("amount",r,a.decimals),u=O(r,a.decimals).toFixed()):u=r;let c=Me(u,a,await te(this.api,a)),g=await te(this.api,A),f=this.getAmountFromVUsdFormatted(c,A,g),y,b=await this.api.getPendingInfo();for(let T in b[A.chainSymbol]){let B=b[A.chainSymbol];if(!B)throw new Z("Cannot find pending info for "+A.chainSymbol);y=B[T]}if(y){let T=ni(y.totalSentAmount,g),B=this.getAmountFromVUsdFormatted(c,A,T),S;return We(B.int).gt(f.int)?S={min:f,max:B}:S={min:B,max:f},{pendingTxs:y.pendingTxs,pendingAmount:{int:Ne(y.totalSentAmount,3,A.decimals).toFixed(0),float:N(y.totalSentAmount,3).toFixed()},estimatedAmount:S}}return{pendingTxs:0,pendingAmount:{int:"0",float:"0"},estimatedAmount:{min:f,max:f}}}async getTokenBalance(r,i){return this.tokenService.getTokenBalance(r,i)}async getNativeTokenBalance(r,i){return this.tokenService.getNativeTokenBalance(r,i)}async calculateFeePercentOnSourceChain(r,i){L(r),J("amountFloat",r,i.decimals);let a=O(r,i.decimals);if(a.eq(0))return 0;let A=Me(a,i,await te(this.api,i)),u=pe(A,i.decimals);return In(a,u)}async calculateFeePercentOnDestinationChain(r,i,a){L(r),J("amountFloat",r,i.decimals);let A=O(r,i.decimals);if(A.eq(0))return 0;let u=Me(A,i,await te(this.api,i)),c=bt(u,a,await te(this.api,a)),g=pe(u,a.decimals);return In(g,c)}async getAmountToBeReceivedAndGasFeeOptions(r,i,a,A){return L(r),J("amountToSendFloat",r,i.decimals),{amountToSendFloat:We(r).toFixed(),amountToBeReceivedFloat:await this.getAmountToBeReceived(r,i,a,A),gasFeeOptions:await this.getGasFeeOptions(i,a,A)}}async getAmountToSendAndGasFeeOptions(r,i,a,A){return L(r),J("amountToBeReceivedFloat",r,a.decimals),{amountToSendFloat:await this.getAmountToSend(r,i,a,A),amountToBeReceivedFloat:We(r).toFixed(),gasFeeOptions:await this.getGasFeeOptions(i,a,A)}}async getAmountToBeReceived(r,i,a,A){let u=await te(this.api,i),c=await te(this.api,a);return this.getAmountToBeReceivedFromPools(r,i,a,u,c,A)}async getAmountToBeReceivedFromChain(r,i,a,A,u,c){let g=await this.pool.getPoolInfoFromChain(i,u),f=await this.pool.getPoolInfoFromChain(a,c);return this.getAmountToBeReceivedFromPools(r,i,a,g,f,A)}getAmountToBeReceivedFromPools(r,i,a,A,u,c){L(r),J("amountToSendFloat",r,i.decimals);let g=O(r,i.decimals);if(c&&c==3){if(!i.cctpAddress||!a.cctpAddress||!i.cctpFeeShare)throw new we("Such route does not support CCTP protocol");let y=g.mul(We(1).minus(i.cctpFeeShare)).round(0,We.roundUp),b=Ne(y,i.decimals,a.decimals).round(0);return N(b,a.decimals).toFixed()}let f=Me(g,i,A);return this.getAmountFromVUsdFormatted(f,a,u).float}async getAmountToSend(r,i,a,A){let u=await te(this.api,i),c=await te(this.api,a);return this.getAmountToSendFromPools(r,i,a,u,c,A)}async getAmountToSendFromChain(r,i,a,A,u,c){let g=await this.pool.getPoolInfoFromChain(i,u),f=await this.pool.getPoolInfoFromChain(a,c);return this.getAmountToSendFromPools(r,i,a,g,f,A)}getAmountToSendFromPools(r,i,a,A,u,c){L(r),J("amountToBeReceivedFloat",r,a.decimals);let g=O(r,a.decimals);if(c&&c==3){if(!i.cctpAddress||!a.cctpAddress||!i.cctpFeeShare)throw new we("Such route does not support CCTP protocol");let b=g.div(We(1).minus(i.cctpFeeShare)).round(0,We.roundDown),T=Ne(b,a.decimals,i.decimals).round(0);return N(T,i.decimals).toFixed()}let f=ri(g,a,u),y=ii(f,i,A);if(We(y).lte(0))throw new Fe;return N(y,i.decimals).toFixed()}async getGasFeeOptions(r,i,a){return Dn(r.allbridgeChainId,r.chainType,i.allbridgeChainId,r.decimals,a,this.api)}getAverageTransferTime(r,i,a){return r.transferTime?.[i.chainSymbol]?.[a]??null}async getPoolInfoByToken(r){return await this.api.getPoolInfoByKey({chainSymbol:r.chainSymbol,poolAddress:r.poolAddress})}async refreshPoolInfo(r){if(r){let a=(r instanceof Array?r:[r]).map(A=>({chainSymbol:A.chainSymbol,poolAddress:A.poolAddress}));return this.api.refreshPoolInfo(a)}return this.api.refreshPoolInfo()}aprInPercents(r){return si(r)}async getExtraGasMaxLimits(r,i){return await Zn(r,i,this.api)}async getVUsdFromAmount(r,i,a){L(r);let A;i=="float"?(J("amount",r,a.decimals),A=O(r,a.decimals).toFixed()):A=r;let u=Me(A,a,await te(this.api,a));return{int:u,float:N(u,3).toFixed()}}async getAmountFromVUsd(r,i){return this.getAmountFromVUsdFormatted(r,i,await te(this.api,i))}getAmountFromVUsdFormatted(r,i,a){L(r);let A=bt(r,i,a);if(We(A).lt(0))throw new Fe;return{int:A,float:N(A,i.decimals).toFixed()}}async swapAndBridgeFeeCalculation(r,i,a){return Qi(r,{decimals:i.decimals,feeShare:i.feeShare,poolInfo:await te(this.api,i)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await te(this.api,a)})}async swapAndBridgeFeeCalculationReverse(r,i,a){let A=Hi(r,{decimals:i.decimals,feeShare:i.feeShare,poolInfo:await te(this.api,i)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await te(this.api,a)}),u=A.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if(We(u).lt(0))throw new Fe;return A}async getSendAmountDetails(r,i,a,A){L(r);let u;return i=="float"?(J("amount",r,a.decimals),u=O(r,a.decimals).toFixed()):u=r,zi(u,a,await te(this.api,a),A,await te(this.api,A))}};function La(l){return"solanaRpcUrl"in l}var tr=class{constructor(r,i=Ut){let a;La(r)?a=new Ft({SOL:r.solanaRpcUrl,TRX:r.tronRpcUrl}):a=new Ft(r),this.service=new Pn(a,i),this.bridge=this.service.bridge,this.pool=this.service.pool,this.utils=new fn(a,i),this.params=i}async chainDetailsMap(r="swap"){return this.service.chainDetailsMap(r)}async tokens(r="swap"){return this.service.tokens(r)}async tokensByChain(r,i="swap"){return this.service.tokensByChain(r,i)}async getTransferStatus(r,i){return this.service.getTransferStatus(r,i)}async getGasBalance(r,i){return this.service.getGasBalance(r,i)}async checkAddress(r,i,a){return await this.service.checkAddress()}async getPendingStatusInfo(r,i,a,A){return this.service.getPendingStatusInfo(r,i,a,A)}async getTokenBalance(r,i){return this.service.getTokenBalance(r,i)}async getNativeTokenBalance(r,i){return this.service.getNativeTokenBalance(r,i)}async calculateFeePercentOnSourceChain(r,i){return this.service.calculateFeePercentOnSourceChain(r,i)}async calculateFeePercentOnDestinationChain(r,i,a){return this.service.calculateFeePercentOnDestinationChain(r,i,a)}async getAmountToBeReceivedAndGasFeeOptions(r,i,a,A){return this.service.getAmountToBeReceivedAndGasFeeOptions(r,i,a,A)}async getAmountToSendAndGasFeeOptions(r,i,a,A){return this.service.getAmountToSendAndGasFeeOptions(r,i,a,A)}async getAmountToBeReceived(r,i,a,A){return this.service.getAmountToBeReceived(r,i,a,A)}async getAmountToBeReceivedFromChain(r,i,a,A,u,c){return this.service.getAmountToBeReceivedFromChain(r,i,a,A,u,c)}getAmountToBeReceivedFromPools(r,i,a,A,u,c){return this.service.getAmountToBeReceivedFromPools(r,i,a,A,u,c)}async getAmountToSend(r,i,a,A){return this.service.getAmountToSend(r,i,a,A)}async getAmountToSendFromChain(r,i,a,A,u,c){return this.service.getAmountToSendFromChain(r,i,a,A,u,c)}getAmountToSendFromPools(r,i,a,A,u,c){return this.service.getAmountToSendFromPools(r,i,a,A,u,c)}async getGasFeeOptions(r,i,a){return this.service.getGasFeeOptions(r,i,a)}getAverageTransferTime(r,i,a){return this.service.getAverageTransferTime(r,i,a)}async getPoolInfoByToken(r){return this.service.getPoolInfoByToken(r)}async refreshPoolInfo(r){return this.service.refreshPoolInfo(r)}aprInPercents(r){return this.service.aprInPercents(r)}async getExtraGasMaxLimits(r,i){return this.service.getExtraGasMaxLimits(r,i)}async getVUsdFromAmount(r,i,a){return this.service.getVUsdFromAmount(r,i,a)}async getAmountFromVUsd(r,i){return this.service.getAmountFromVUsd(r,i)}async swapAndBridgeFeeCalculation(r,i,a){return this.service.swapAndBridgeFeeCalculation(r,i,a)}async swapAndBridgeFeeCalculationReverse(r,i,a){return this.service.swapAndBridgeFeeCalculationReverse(r,i,a)}async getSendAmountDetails(r,i,a,A){return this.service.getSendAmountDetails(r,i,a,A)}};export{Rn as AddressStatus,tr as AllbridgeCoreSdk,zt as AmountFormat,tt as AmountNotEnoughError,Nt as ArgumentInvalidDecimalsError,we as CCTPDoesNotSupportedError,Se as ChainSymbol,ee as ChainType,lr as ErrorCode,_t as ExtraGasMaxLimitExceededError,ot as FeePaymentMethod,Fe as InsufficientPoolLiquidityError,Et as InvalidAmountError,gt as InvalidGasFeePaymentOptionError,ei as InvalidMessengerOptionError,nt as InvalidTxError,ie as JupiterError,Ge as Messenger,ue as MethodNotSupportedError,Vt as NodeRpcUrlNotInitializedError,Z as SdkError,q as SdkRootError,Un as SolanaAutoTxFee,ht as TimeoutError,Ot as TxTooLargeError,ft as VerifyTxError,Ut as mainnet,ts as nodeRpcUrlsDefault,es as nodeUrlsDefault};
6
+ &onlyDirectRoutes=true`)}catch(T){throw T instanceof Ni&&T.response&&T.response.data&&T.response.data.error?new ie(T.response.data.error):new ie("Cannot get route")}let c;if(A&&u?.data?.inAmount)c=u.data.inAmount;else if(A)throw new ie("Cannot get inAmount");let g;try{g=await _i.post(`${this.jupiterUrl}/swap`,{quoteResponse:u.data,userPublicKey:r,wrapAndUnwrapSol:!0})}catch(T){throw T instanceof Ni&&T.response&&T.response.data&&T.response.data.error?new ie(T.response.data.error):new ie("Cannot get swap transaction")}let f;if(g?.data?.swapTransaction)f=g.data.swapTransaction;else throw new ie("Cannot get swap transaction");let y=w.from(f,"base64"),b=Kr.deserialize(y);return A?{tx:b,amountIn:c}:{tx:b}}async amendJupiterWithSdkTx(r,i){try{let a=await qe(r,this.connection),A=await qe(i,this.connection),u=Ei.decompile(r.message,{addressLookupTableAccounts:a}),c=Ei.decompile(i.message,{addressLookupTableAccounts:A});if(c.instructions.shift(),u.instructions.push(...c.instructions),a.push(...A),r.message=u.compileToV0Message(a),i.message.header.numRequiredSignatures===2&&r.signatures.length===1){let g=i.signatures[0];if(!g)throw new Z("Signature is undefined");r.signatures.push(g)}return r}catch(a){throw a instanceof Error&&a.message?new ie(`Some error occurred during creation final swap and bridge transaction. ${a.message}`):new ie("Some error occurred during creation final swap and bridge transaction")}}};var Nn=1e6,Oi=1.1,rn=class extends Ce{constructor(i,a,A){super();this.solanaRpcUrl=i;this.params=a;this.api=A;this.chainType="SOLANA";this.jupiterService=new nn(i,a.jupiterUrl)}async buildRawTransactionSwap(i){let a=Xe(this.chainType,i);return await this.buildSwapTransaction(a,i.sourceToken.poolAddress,i.destinationToken.poolAddress,i.txFeeParams)}async buildSwapTransaction(i,a,A,u){let{fromAccountAddress:c,amount:g,contractAddress:f,fromTokenAddress:y,toTokenAddress:b,toAccountAddress:T,minimumReceiveAmount:B}=i,S=c,C=f,M=y,I=b,W=A,x=T,G=new K(S),_=Oe(this.solanaRpcUrl,G.toString()),D=new _n(Bt,C,_),E=await rt(D.programId),se=await Ve(D.programId),z=new K(M),he=await at(z,D.programId),ye=new K(a),Pe=await Be(G,z),me=new K(x),ne=new K(I),oe=await at(ne,D.programId),le=new K(W),Ae=await Be(me,ne),be=[Le.ComputeBudgetProgram.setComputeUnitLimit({units:Nn})];try{await At(Ae,_)}catch{let Gt=await Qr.associatedToken(_).methods.create().accounts({mint:ne,owner:me,associatedAccount:Ae}).instruction();be.push(Gt)}let Te=await D.methods.swap(new ut(g),new ut(B||0)).accounts({payer:G,config:se,bridgeAuthority:E,user:G,sendBridgeToken:he,sendMint:z,sendPool:ye,sendUserToken:Pe,receiveBridgeToken:oe,receiveMint:ne,receivePool:le,receiveUserToken:Ae}).preInstructions(be).transaction(),de=_.connection;return Te.recentBlockhash=(await de.getLatestBlockhash()).blockhash,Te.feePayer=G,await ct(Te,u,this.solanaRpcUrl),await this.convertToVersionedTransaction(Te,de)}async buildRawTransactionSend(i){let a=await Ue(this.chainType,i,this.api),A=this.addPoolAddress(i,a),u=A.gasFeePaymentMethod=="stablecoin",c;if(u)try{let{tx:y,solTxSendUpdatedParams:b}=await this.processJup(A,i,!0);c=y,A={...A,...b}}catch{try{let{tx:b,solTxSendUpdatedParams:T}=await this.processJup(A,i,!1);c=b,A={...A,...T}}catch(b){throw b instanceof q?b:b instanceof Error&&b.message?new ie(`Some error occurred during creation Jupiter swap transaction. ${b.message}`):new ie("Some error occurred during creation Jupiter swap transaction")}}let g,f;switch(a.messenger){case 1:{let y=await this.prepareSwapAndBridgeData(A);g=await this.buildSwapAndBridgeAllbridgeTransaction(y);break}case 2:{let y=await this.prepareSwapAndBridgeData(A),{transaction:b,messageAccount:T}=await this.buildSwapAndBridgeWormholeTransaction(y);g=b,f=T;break}case 3:{let y=await this.prepareSwapAndBridgeCctpData(A),{transaction:b,messageSentEventDataKeypair:T}=await this.buildSwapAndBridgeCctpTransaction(i.destinationToken.chainSymbol,y);g=b,f=T;break}}if(u){if(!c)throw new ie("Swap tx is absent");g=await this.jupiterService.amendJupiterWithSdkTx(c,g)}return await Zi(g,i.txFeeParams,this.solanaRpcUrl),f&&g.sign([f]),g}async processJup(i,a,A){let{fee:u,extraGas:c,gasFeePaymentMethod:g}=await this.convertStableCoinFeeAndExtraGasToNativeCurrency(a.sourceToken.decimals,i),f=A?Ie(u):Ie(i.fee);c&&(f=f.plus(c)),A||(f=f.mul(Oi));let{tx:y,amountIn:b}=await this.jupiterService.getJupiterSwapTx(a.fromAccountAddress,a.sourceToken.tokenAddress,f.toFixed(0),A),T;if(A){if(!b)throw new ie("Cannot get inAmount");T=Ie(i.amount).minus(Ie(b).mul(Oi)).toFixed(0)}else T=Ie(i.amount).minus(f).toFixed(0);if(Ie(T).lte(0))throw new tt(`Amount not enough to pay fee, ${N(Ie(T).minus(1).neg(),a.sourceToken.decimals).toFixed()} stables is missing`);return{tx:y,solTxSendUpdatedParams:{amount:T,fee:u,extraGas:c,gasFeePaymentMethod:g}}}addPoolAddress(i,a){return{...a,poolAddress:i.sourceToken.poolAddress}}async convertStableCoinFeeAndExtraGasToNativeCurrency(i,a){if(a.gasFeePaymentMethod=="stablecoin"){let A=(await this.api.getReceiveTransactionCost({sourceChainId:a.fromChainId,destinationChainId:a.toChainId,messenger:a.messenger})).sourceNativeTokenPrice,u=Ie(a.fee).div(A).mul(Ie(10).pow(V.getChainDecimalsByType("SOLANA")-i)).toFixed(0),c;return a.extraGas&&(c=Ie(a.extraGas).div(A).mul(Ie(10).pow(V.getChainDecimalsByType("SOLANA")-i)).toFixed(0)),{fee:u,extraGas:c,gasFeePaymentMethod:"native"}}return{fee:a.fee,extraGas:a.extraGas,gasFeePaymentMethod:"native"}}getExtraGasInstruction(i,a,A){return Le.SystemProgram.transfer({fromPubkey:a,toPubkey:A,lamports:+i})}async prepareSwapAndBridgeData(i){let{amount:a,contractAddress:A,fromChainId:u,fromAccountAddress:c,fromTokenAddress:g,toChainId:f,toAccountAddress:y,toTokenAddress:b,poolAddress:T,extraGas:B}=i,S=g,C=c,M=f,I=b,W=y,x=A,G=u,_=Oe(this.solanaRpcUrl,C),D=new _n(Bt,x,_),E=Array.from(st()),se=new K(T),z=await xi(a,D,se),he=await hi(E,D.programId),ye=await rt(D.programId),Pe=await Be(new K(C),new K(S)),me=await at(new K(S),D.programId),ne=await xn(M,D.programId),oe=await bi(M,w.from(I),D.programId),le=await Ve(D.programId),Ae=await D.account.config.fetch(le),be=await Tt(M,Ae.gasOracleProgramId),Te=await Tt(G,Ae.gasOracleProgramId),de=Wi({amount:z,recipient:w.from(W),nonce:w.from(E),receiveToken:w.from(I),destinationChainId:M,sourceChainId:G,chainBridge:(await rt(D.programId)).toBuffer()}),F={};return F.bridge=D,F.amount=new ut(a),F.vusdAmount=new ut(z),F.nonce=E,F.recipient=Array.from(W),F.receiveToken=Array.from(I),F.poolAccount=se,F.lockAccount=he,F.bridgeAuthority=ye,F.userToken=Pe,F.bridgeTokenAccount=me,F.chainBridgeAccount=ne,F.otherBridgeTokenAccount=oe,F.userAccount=new K(C),F.destinationChainId=M,F.mint=new K(S),F.config=le,F.configAccountInfo=Ae,F.gasPrice=be,F.thisGasPrice=Te,F.message=de,B&&(F.extraGasInstruction=this.getExtraGasInstruction(B,F.userAccount,le)),F}async buildSwapAndBridgeAllbridgeTransaction(i){let{bridge:a,vusdAmount:A,nonce:u,recipient:c,receiveToken:g,poolAccount:f,lockAccount:y,bridgeAuthority:b,userToken:T,bridgeTokenAccount:B,chainBridgeAccount:S,otherBridgeTokenAccount:C,userAccount:M,destinationChainId:I,mint:W,config:x,configAccountInfo:G,gasPrice:_,thisGasPrice:D,message:E,extraGasInstruction:se}=i,z=G.allbridgeMessengerProgramId,he=await Wn(I,z),ye=await Ve(z),Pe=await Ti(E,z),me=[];se&&me.push(se);let ne=await a.methods.swapAndBridge({vusdAmount:A,nonce:u,destinationChainId:I,recipient:c,receiveToken:g}).accounts({mint:W,user:M,config:x,lock:y,pool:f,gasPrice:_,thisGasPrice:D,bridgeAuthority:b,userToken:T,bridgeToken:B,chainBridge:S,messenger:z,messengerGasUsage:he,messengerConfig:ye,sentMessageAccount:Pe,otherBridgeToken:C}).preInstructions([Le.ComputeBudgetProgram.setComputeUnitLimit({units:Nn})]).postInstructions(me).transaction(),oe=Oe(this.solanaRpcUrl,M.toString()).connection;return ne.recentBlockhash=(await oe.getLatestBlockhash()).blockhash,ne.feePayer=M,await this.convertToVersionedTransaction(ne,oe)}async convertToVersionedTransaction(i,a){let A=await a.getAddressLookupTable(new K(this.params.solanaLookUpTable)).then(c=>c.value);if(!A)throw new Z("Cannot find allbridgeLookupTableAccount");let u=new Le.TransactionMessage({payerKey:i.feePayer,recentBlockhash:i.recentBlockhash,instructions:i.instructions}).compileToV0Message([A]);return new Le.VersionedTransaction(u)}async buildSwapAndBridgeWormholeTransaction(i){let{bridge:a,vusdAmount:A,nonce:u,recipient:c,receiveToken:g,poolAccount:f,lockAccount:y,bridgeAuthority:b,userToken:T,bridgeTokenAccount:B,chainBridgeAccount:S,otherBridgeTokenAccount:C,userAccount:M,destinationChainId:I,mint:W,config:x,configAccountInfo:G,gasPrice:_,thisGasPrice:D,message:E,extraGasInstruction:se}=i,z=this.params.wormholeMessengerProgramId,[he]=K.findProgramAddressSync([w.from("Bridge")],new K(z)),[ye]=K.findProgramAddressSync([w.from("fee_collector")],new K(z)),[Pe]=K.findProgramAddressSync([w.from("Sequence"),b.toBuffer()],new K(z)),me=await Wn(I,G.wormholeMessengerProgramId),ne=await Ve(G.wormholeMessengerProgramId),oe=Vi.generate(),le=Oe(this.solanaRpcUrl,M.toString()),Ae=await le.connection.getAccountInfo(he);if(Ae==null)throw new Z("Cannot fetch wormhole bridge account info");let be=new ut(Ae.data.slice(16,24),"le").toString(),Te=Hr.transfer({fromPubkey:M,toPubkey:ye,lamports:+be}),de=[];se&&de.push(se);let F={mint:W,user:M,config:x,lock:y,pool:f,gasPrice:_,thisGasPrice:D,bridgeAuthority:b,userToken:T,bridgeToken:B,chainBridge:S,otherBridgeToken:C,messengerGasUsage:me,wormholeProgram:z,bridge:he,message:oe.publicKey,wormholeMessenger:G.wormholeMessengerProgramId,sequence:Pe,feeCollector:ye,wormholeMessengerConfig:ne,clock:Le.SYSVAR_CLOCK_PUBKEY},$=await a.methods.swapAndBridgeWormhole({vusdAmount:A,nonce:u,destinationChainId:I,recipient:c,receiveToken:g}).accounts(F).preInstructions([Le.ComputeBudgetProgram.setComputeUnitLimit({units:Nn}),Te]).postInstructions(de).signers([oe]).transaction();return $.recentBlockhash=(await le.connection.getLatestBlockhash()).blockhash,$.feePayer=M,{transaction:await this.convertToVersionedTransaction($,le.connection),messageAccount:oe}}async prepareSwapAndBridgeCctpData(i){let{contractAddress:a,amount:A,fromAccountAddress:u,fromTokenAddress:c,toChainId:g,toAccountAddress:f,toTokenAddress:y,extraGas:b}=i,T=a;if(!T)throw new we("Such route does not support CCTP protocol");let B=4,S=u,C=y,M=f,I=Oe(this.solanaRpcUrl,S),W=new _n(vi,T,I),x=new K(c),G=await Pi(x,W.programId),_=new K(S),D=await W.account.cctpBridge.fetch(G),E={};return E.cctpBridge=W,E.cctpBridgeAccount=G,E.cctpAddressAccount=new K(T),E.amount=new ut(A),E.recipient=Array.from(M),E.receiveToken=Array.from(C),E.userToken=await Be(_,x),E.bridgeAuthority=await yi(G,W.programId),E.bridgeTokenAccount=await wi(x,W.programId),E.chainBridgeAccount=await xn(g,W.programId),E.userAccount=_,E.destinationChainId=g,E.mint=x,E.gasPrice=await Tt(g,D.gasOracleProgramId),E.thisGasPrice=await Tt(B,D.gasOracleProgramId),E.provider=I,b&&(E.extraGasInstruction=this.getExtraGasInstruction(b,E.userAccount,G)),E}async buildSwapAndBridgeCctpTransaction(i,a){let{cctpBridge:A,cctpBridgeAccount:u,amount:c,recipient:g,receiveToken:f,bridgeAuthority:y,userToken:b,bridgeTokenAccount:T,chainBridgeAccount:B,userAccount:S,destinationChainId:C,mint:M,gasPrice:I,thisGasPrice:W,extraGasInstruction:x,provider:G}=a,_=this.params.cctpParams.cctpDomains[i],D=this.params.cctpParams.cctpTransmitterProgramId,E=this.params.cctpParams.cctpTokenMessengerMinter;if(_==null||!D||!E)throw new Z("CCTP is not configured");let se=new K(D),z=new K(E),{messageTransmitterAccount:he,tokenMessenger:ye,tokenMessengerEventAuthority:Pe,tokenMinter:me,localToken:ne,remoteTokenMessengerKey:oe,authorityPda:le}=Bi(_,M,se,z),Ae=[];x&&Ae.push(x);let be=Vi.generate(),Te=Si(A.programId,be.publicKey),de=await A.methods.bridge({amount:c,destinationChainId:C,recipient:g,receiveToken:f}).accounts({mint:M,user:S,cctpBridge:u,messageSentEventData:be.publicKey,lock:Te,cctpMessenger:z,messageTransmitterProgram:se,messageTransmitterAccount:he,tokenMessenger:ye,tokenMinter:me,localToken:ne,remoteTokenMessengerKey:oe,authorityPda:le,eventAuthority:Pe,bridgeToken:T,gasPrice:I,thisGasPrice:W,chainBridge:B,userToken:b,bridgeAuthority:y}).preInstructions([Le.ComputeBudgetProgram.setComputeUnitLimit({units:2e6})]).postInstructions(Ae).transaction(),F=G.connection;return de.recentBlockhash=(await F.getLatestBlockhash()).blockhash,de.feePayer=S,{transaction:await this.convertToVersionedTransaction(de,F),messageSentEventDataKeypair:be}}send(i){throw new ue}};import{Address as Vn,contract as sb}from"@stellar/stellar-sdk";import{Big as qr}from"big.js";import{contract as n}from"@stellar/stellar-sdk";var zr=n.Spec,jr=n.Client;var Ct=class extends jr{constructor(i){super(new zr(["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"]),i);this.options=i;this.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 an=class extends Ce{constructor(i,a,A){super();this.nodeRpcUrlsConfig=i;this.params=a;this.api=A;this.chainType="SRB"}async buildRawTransactionSend(i){let a=await Ue(this.chainType,i,this.api);return await this.buildRawTransactionSendFromParams(a)}async buildRawTransactionSendFromParams(i){let{amount:a,contractAddress:A,fromAccountAddress:u,fromTokenAddress:c,toChainId:g,toAccountAddress:f,toTokenAddress:y,fee:b,gasFeePaymentMethod:T,extraGas:B}=i,S=b;B&&(S=qr(S).plus(B).toFixed());let C=this.getContract(Ct,A,u),M;return T==="stablecoin"?M=await C.swap_and_bridge({sender:u,token:Vn.contract(w.from(c)).toString(),amount:BigInt(a),recipient:w.from(f),destination_chain_id:+g,receive_token:w.from(y),nonce:Gn(),gas_amount:BigInt(0),fee_token_amount:BigInt(S)}):M=await C.swap_and_bridge({sender:u,token:Vn.contract(w.from(c)).toString(),amount:BigInt(a),recipient:w.from(f),destination_chain_id:+g,receive_token:w.from(y),nonce:Gn(),gas_amount:BigInt(S),fee_token_amount:BigInt(0)}),M.toXDR()}async buildRawTransactionSwap(i){let a=Xe(this.chainType,i);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(i){let{amount:a,contractAddress:A,fromAccountAddress:u,fromTokenAddress:c,toAccountAddress:g,toTokenAddress:f,minimumReceiveAmount:y}=i;return(await this.getContract(Ct,A,u).swap({sender:u,amount:BigInt(a),token:Vn.contract(w.from(c)).toBuffer(),receive_token:w.from(f),recipient:g,receive_amount_min:BigInt(y)})).toXDR()}send(i){throw new ue}getContract(i,a,A){let u={publicKey:A,contractId:a,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new i(u)}};import{Big as ta}from"big.js";import $r from"bn.js";function sn(l){return"0x"+new $r(l).toString("hex")}function Xi(l){return new Promise(r=>setTimeout(()=>r(),l))}var mt=l=>(...r)=>new Promise((i,a)=>l(...r,(A,u)=>A?a(A):i(u)));async function on(l,r){let i=await l.trx.sign(r);if(!i.signature)throw new nt("Transaction was not signed properly");let A=(await l.trx.sendRawTransaction(i)).txid;return await ea(l,A),{txId:A}}async function ea(l,r,i=1e4){let a=Date.now();for(;;){if(Date.now()-a>i)throw new ft("Transaction not found");let A=await l.trx.getUnconfirmedTransactionInfo(r);if(!A?.receipt){await Xi(2e3);continue}if(A.receipt.result==="SUCCESS")return A;throw new ft(`Transaction status is ${A.receipt.result}`)}}var It=class extends Ce{constructor(i,a){super();this.tronWeb=i;this.api=a;this.chainType="TRX"}async send(i){let a=await Ue(this.chainType,i,this.api),A=await this.buildRawTransactionSendFromParams(a);return await on(this.tronWeb,A)}async buildRawTransactionSwap(i){let a=Xe(this.chainType,i);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(i){let{amount:a,contractAddress:A,fromAccountAddress:u,fromTokenAddress:c,toAccountAddress:g,toTokenAddress:f,minimumReceiveAmount:y}=i,b=[{type:"uint256",value:a},{type:"bytes32",value:c},{type:"bytes32",value:f},{type:"address",value:g},{type:"uint256",value:y}];return this.buildRawTransaction(A,"swap(uint256,bytes32,bytes32,address,uint256)",b,"0",u)}async buildRawTransactionSend(i){let a=await Ue(this.chainType,i,this.api);return this.buildRawTransactionSendFromParams(a)}async buildRawTransactionSendFromParams(i){let{amount:a,contractAddress:A,fromAccountAddress:u,fromTokenAddress:c,toChainId:g,toAccountAddress:f,toTokenAddress:y,messenger:b,fee:T,gasFeePaymentMethod:B,extraGas:S}=i,C=T;S&&(C=ta(C).plus(S).toFixed());let M=st().toJSON().data,I,W,x;return b==3?(B==="stablecoin"?(I=[{type:"uint256",value:a},{type:"bytes32",value:f},{type:"uint256",value:g},{type:"uint256",value:C}],W="0"):(I=[{type:"uint256",value:a},{type:"bytes32",value:f},{type:"uint256",value:g},{type:"uint256",value:0}],W=C),x="bridge(uint256,bytes32,uint256,uint256)"):(B==="stablecoin"?(I=[{type:"bytes32",value:c},{type:"uint256",value:a},{type:"bytes32",value:f},{type:"uint256",value:g},{type:"bytes32",value:y},{type:"uint256",value:M},{type:"uint8",value:b},{type:"uint256",value:C}],W="0"):(I=[{type:"bytes32",value:c},{type:"uint256",value:a},{type:"bytes32",value:f},{type:"uint256",value:g},{type:"bytes32",value:y},{type:"uint256",value:M},{type:"uint8",value:b},{type:"uint256",value:0}],W=C),x="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)"),this.buildRawTransaction(A,x,I,W,u)}async buildRawTransaction(i,a,A,u,c){let g=await this.tronWeb.transactionBuilder.triggerSmartContract(i,a,{callValue:u},A,c);if(!g?.result?.result)throw new Z("Unknown error: "+JSON.stringify(g,null,2));return g.transaction}};var An=class{constructor(r,i,a,A){this.api=r;this.nodeRpcUrlsConfig=i;this.params=a;this.tokenService=A;this.rawTxBuilder=new qt(r,i,a,A)}async getAllowance(r,i){let a,A;i?(a=r,A=i):A=r;let u=St(A.token,A.messenger);return await this.tokenService.getAllowance({...A,spender:u},a)}async checkAllowance(r,i){let a,A;i?(a=r,A=i):A=r;let u=St(A.token,A.messenger);return this.tokenService.checkAllowance({...A,spender:u},a)}async approve(r,i){let a=St(i.token,i.messenger);return this.tokenService.approve(r,{...i,spender:a})}async send(r,i){return L(i.amount),J("amount",i.amount,i.sourceToken.decimals),$t(i.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).send(i)}};function St(l,r){if(r&&r==3){if(l.cctpAddress)return l.cctpAddress;throw new we("Such route does not support CCTP protocol")}else return l.bridgeAddress}function $t(l,r,i,a,A){switch(V.getChainProperty(l).chainType){case"EVM":{if(A)return new wt(A,r,i);{let u=i.getNodeRpcUrl(l);return new wt(new ia(u),r,i)}}case"TRX":{if(A)return new It(A,r);{let u=i.getNodeRpcUrl(l);return new It(new na({fullHost:u}),r)}}case"SOLANA":return new rn(i.getNodeRpcUrl("SOL"),{wormholeMessengerProgramId:a.wormholeMessengerProgramId,solanaLookUpTable:a.solanaLookUpTable,cctpParams:a.cctpParams,jupiterUrl:a.jupiterUrl},r);case"SRB":return new an(i,a,r)}}import{Big as da}from"big.js";import pa from"timed-cache";import ga from"tronweb";import fa from"web3";import{Big as Ee}from"big.js";function Li(l,r,i,a,A){let u=O(l,3),c=Ee(u),g=Ee(i),f=Ee(a).plus(A),y,b;if(g.eq(0)||f.eq(0)){let B=c.div(2);y=Ee(a).plus(B),b=Ee(A).plus(B)}else y=Ee(a).plus(c.mul(a).div(f)),b=Ee(A).plus(c.mul(A).div(f));return Ee(oi(r,y.toFixed(),b.toFixed())).minus(g).toFixed()}function Yi(l){let r=O(l,3);return Ee(r).round().toFixed()}var Ye=[{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"}];var fe=class{constructor(r){this.lpAmount=r.lpAmount,this.rewardDebt=r.rewardDebt}get userLiquidity(){return N(this.lpAmount,3).toFixed()}earned(r,i){let a=ai(this.lpAmount,this.rewardDebt,r.accRewardPerShareP,r.p);return i?N(a,i).toFixed():a}};var Re=class{};var Rt=class extends Re{constructor(i,a){super();this.web3=i;this.api=a;this.chainType="EVM";this.P=52}async getUserBalanceInfo(i,a){let A;try{A=await Ht(this.getUserBalanceInfoByBatch(i,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5e3)}catch{A=await vn(()=>this.getUserBalanceInfoPerProperty(i,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5,2e3)}return A}async getUserBalanceInfoByBatch(i,a){let A=new this.web3.BatchRequest,u=new this.web3.eth.Contract(Ye,a.poolAddress),c=["userRewardDebt","balanceOf"].map(y=>mt(b=>A.add(u.methods[y](i).call.request({},b)))());A.execute();let[g,f]=await Promise.all(c);return new fe({lpAmount:f,rewardDebt:g})}async getUserBalanceInfoPerProperty(i,a){let A=await this.getPoolContract(a.poolAddress).methods.userRewardDebt(i).call(),u=await this.getPoolContract(a.poolAddress).methods.balanceOf(i).call();return new fe({lpAmount:u,rewardDebt:A})}async getPoolInfoFromChain(i){let a;try{a=await Ht(this.getPoolInfoByBatch(i),`Cannot get PoolInfo for ${i.name} on ${i.chainSymbol}`,5e3)}catch{a=await vn(()=>this.getPoolInfoPerProperty(i),`Cannot get PoolInfo for ${i.name} on ${i.chainSymbol}`,5,2e3)}return a}async getPoolInfoByBatch(i){let a=new this.web3.BatchRequest,A=new this.web3.eth.Contract(Ye,i.poolAddress),u=["a","d","tokenBalance","vUsdBalance","totalSupply","accRewardPerShareP"].map(M=>mt(I=>a.add(A.methods[M]().call.request({},I)))());a.execute();let[c,g,f,y,b,T]=await Promise.all(u),B=f.toString(),S=y.toString(),C=ge({tokenBalance:B,vUsdBalance:S});return{aValue:c.toString(),dValue:g.toString(),tokenBalance:B,vUsdBalance:S,totalLpAmount:b.toString(),accRewardPerShareP:T.toString(),p:this.P,imbalance:C}}async getPoolInfoPerProperty(i){let a=this.getPoolContract(i.poolAddress),A=await a.methods.a().call(),u=await a.methods.d().call(),c=await a.methods.tokenBalance().call(),g=await a.methods.vUsdBalance().call(),f=await a.methods.totalSupply().call(),y=await a.methods.accRewardPerShareP().call(),b=ge({tokenBalance:c,vUsdBalance:g});return{aValue:A,dValue:u,tokenBalance:c,vUsdBalance:g,totalLpAmount:f,accRewardPerShareP:y,p:this.P,imbalance:b}}async buildRawTransactionDeposit(i){return Promise.resolve({...this.buildTxParams(i),data:this.getPoolContract(i.token.poolAddress).methods.deposit(i.amount).encodeABI()})}async buildRawTransactionWithdraw(i){return Promise.resolve({...this.buildTxParams(i),data:this.getPoolContract(i.token.poolAddress).methods.withdraw(i.amount).encodeABI()})}async buildRawTransactionClaimRewards(i){return Promise.resolve({...this.buildTxParams(i),data:this.getPoolContract(i.token.poolAddress).methods.claimRewards().encodeABI()})}buildTxParams(i){return{from:i.accountAddress,to:i.token.poolAddress,value:"0"}}getContract(i,a){return new this.web3.eth.Contract(i,a)}getPoolContract(i){return this.getContract(Ye,i)}};var cn=class{constructor(r,i,a,A){this.api=r;this.nodeRpcUrlsConfig=i;this.params=a;this.tokenService=A}async approve(r,i){if(i){let a=r,A=i;return this.tokenService.buildRawTransactionApprove({...A,spender:A.token.poolAddress},a)}else{let a=r;return this.tokenService.buildRawTransactionApprove({...a,spender:a.token.poolAddress})}}async deposit(r,i){return L(r.amount),J("amount",r.amount,r.token.decimals),r.amount=O(r.amount,r.token.decimals).toFixed(),lt(r.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).buildRawTransactionDeposit(r)}async withdraw(r,i){return L(r.amount),J("amount",r.amount,r.token.decimals),r.amount=O(r.amount,3).toFixed(),lt(r.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).buildRawTransactionWithdraw(r)}async claimRewards(r,i){return lt(r.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).buildRawTransactionClaimRewards(r)}};import{AnchorProvider as aa,BN as Ji,Program as sa,Spl as oa,web3 as Aa}from"@project-serum/anchor";import{Connection as ca,PublicKey as Je}from"@solana/web3.js";var un=class extends Re{constructor(i,a){super();this.solanaRpcUrl=i;this.api=a;this.chainType="SOLANA";this.P=48}async getUserBalanceInfo(i,a){let A=this.buildAnchorProvider(i),u=this.getBridge(a.bridgeAddress,A),c=new Je(a.poolAddress),g=await u.account.pool.fetch(c);try{let f=await Fn(new Je(i),g.mint,u.programId),{lpAmount:y,rewardDebt:b}=await u.account.userDeposit.fetch(f);return new fe({lpAmount:y.toString(),rewardDebt:b.toString()})}catch{return new fe({lpAmount:"0",rewardDebt:"0"})}}async getPoolInfoFromChain(i){let a=this.buildAnchorProvider(i.bridgeAddress),A=await this.getBridge(i.bridgeAddress,a).account.pool.fetch(i.poolAddress),u=A.vUsdBalance.toString(),c=A.tokenBalance.toString(),g=ge({tokenBalance:c,vUsdBalance:u});return{dValue:A.d.toString(),aValue:A.a.toString(),totalLpAmount:A.totalLpAmount.toString(),vUsdBalance:u,tokenBalance:c,accRewardPerShareP:A.accRewardPerShareP.toString(),p:this.P,imbalance:g}}async buildRawTransactionDeposit(i){let{bridge:a,accounts:A,preInstructions:u}=await this.prepareDataForTransaction(i),c=await a.methods.deposit(new Ji(i.amount)).accounts(A).preInstructions(u).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(i.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new Je(i.accountAddress),await ct(c,i.txFeeParams,this.solanaRpcUrl),c}async buildRawTransactionWithdraw(i){let{bridge:a,accounts:A,preInstructions:u}=await this.prepareDataForTransaction(i),c=await a.methods.withdraw(new Ji(i.amount)).accounts(A).preInstructions(u).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(i.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new Je(i.accountAddress),await ct(c,i.txFeeParams,this.solanaRpcUrl),c}async buildRawTransactionClaimRewards(i){let{bridge:a,accounts:A,preInstructions:u}=await this.prepareDataForTransaction(i),c=await a.methods.claimRewards().accounts(A).preInstructions(u).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(i.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new Je(i.accountAddress),await ct(c,i.txFeeParams,this.solanaRpcUrl),c}async prepareDataForTransaction(i){let a=this.buildAnchorProvider(i.accountAddress),A=this.getBridge(i.token.bridgeAddress,a),{accounts:u,preInstructions:c}=await this._getLPTransactionData(A,i.token.poolAddress,i.accountAddress,a);return{bridge:A,accounts:u,preInstructions:c}}getBridge(i,a){return new sa(Bt,i,a)}buildAnchorProvider(i){let a=new ca(this.solanaRpcUrl,"confirmed"),A=new Je(i);return new aa(a,{publicKey:A},{preflightCommitment:"confirmed",commitment:"confirmed"})}async _getLPTransactionData(i,a,A,u){let c=new Je(A),g=await Ve(i.programId),f=await rt(i.programId),y=new Je(a),T=(await i.account.pool.fetch(y)).mint,B=await Be(c,T),S=await at(T,i.programId),C=await Fn(c,T,i.programId),M=[Aa.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await At(B,u)}catch{let G=await oa.associatedToken(u).methods.create().accounts({mint:T,owner:c,associatedAccount:B}).instruction();M.push(G)}try{await i.account.userDeposit.fetch(C)}catch{let x=await i.methods.initDepositAccount().accounts({mint:T,user:c,userDeposit:C}).instruction();M.push(x)}return{accounts:{mint:T,user:c,config:g,pool:y,bridgeAuthority:f,userDeposit:C,userToken:B,bridgeToken:S},preInstructions:M}}};import{contract as ob}from"@stellar/stellar-sdk";import{contract as t}from"@stellar/stellar-sdk";var ua=t.Spec,ma=t.Client;var mn=class extends ma{constructor(i){super(new ua(["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"]),i);this.options=i;this.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}}};var ln=class extends Re{constructor(i,a,A){super();this.nodeRpcUrlsConfig=i;this.params=a;this.api=A;this.chainType="SRB";this.P=48}async getUserBalanceInfo(i,a){let u=(await this.getContract(a.poolAddress).get_user_deposit({user:i})).result;if(u.isErr())throw new Z;let c=u.unwrap();return new fe({lpAmount:c.lp_amount.toString(),rewardDebt:c.reward_debt.toString()})}async getPoolInfoFromChain(i){let A=(await this.getContract(i.poolAddress).get_pool()).result;if(A.isErr())throw new Z;let u=A.unwrap();return{aValue:u.a.toString(),accRewardPerShareP:u.acc_reward_per_share_p.toString(),dValue:u.d.toString(),tokenBalance:u.token_balance.toString(),p:this.P,totalLpAmount:u.total_lp_amount.toString(),vUsdBalance:u.v_usd_balance.toString(),imbalance:ge({tokenBalance:u.token_balance.toString(),vUsdBalance:u.v_usd_balance.toString()})}}async buildRawTransactionDeposit(i){return(await this.getContract(i.token.poolAddress,i.accountAddress).deposit({sender:i.accountAddress,amount:BigInt(i.amount)})).toXDR()}async buildRawTransactionWithdraw(i){return(await this.getContract(i.token.poolAddress,i.accountAddress).withdraw({sender:i.accountAddress,amount_lp:BigInt(i.amount)})).toXDR()}async buildRawTransactionClaimRewards(i){return(await this.getContract(i.token.poolAddress,i.accountAddress).claim_rewards({sender:i.accountAddress})).toXDR()}getContract(i,a){let A={publicKey:a,contractId:i,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new mn(A)}};import la from"web3";var kt=class extends Re{constructor(i,a,A){super();this.tronWeb=i;this.api=a;this.chainType="TRX";this.P=52;A&&(this.web3=new la(A))}async getUserBalanceInfo(i,a){let A;if(this.web3)try{A=await this.getUserBalanceInfoByBatch(this.web3,i,a)}catch{A=await this.getUserBalanceInfoPerProperty(i,a)}else A=await this.getUserBalanceInfoPerProperty(i,a);return A}async getUserBalanceInfoByBatch(i,a,A){let u=new i.BatchRequest,c=new i.eth.Contract(Ye,Pt(A.poolAddress)),g=Pt(a),f=["userRewardDebt","balanceOf"].map(T=>mt(B=>u.add(c.methods[T](g).call.request({},B)))());u.execute();let[y,b]=await Promise.all(f);return new fe({lpAmount:b,rewardDebt:y})}async getUserBalanceInfoPerProperty(i,a){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(i);let A=await this.getContract(a.poolAddress),u=(await A.methods.userRewardDebt(i).call()).toString(),c=(await A.methods.balanceOf(i).call()).toString();return new fe({lpAmount:c,rewardDebt:u})}async getPoolInfoFromChain(i){let a;if(this.web3)try{a=await this.getPoolInfoByBatch(this.web3,i)}catch{a=await this.getPoolInfoPerProperty(i)}else a=await this.getPoolInfoPerProperty(i);return a}async getPoolInfoByBatch(i,a){let A=new i.BatchRequest,u=new i.eth.Contract(Ye,Pt(a.poolAddress)),c=["a","d","tokenBalance","vUsdBalance","totalSupply","accRewardPerShareP"].map(I=>mt(W=>A.add(u.methods[I]().call.request({},W)))());A.execute();let[g,f,y,b,T,B]=await Promise.all(c),S=y.toString(),C=b.toString(),M=ge({tokenBalance:S,vUsdBalance:C});return{aValue:g.toString(),dValue:f.toString(),tokenBalance:S,vUsdBalance:C,totalLpAmount:T.toString(),accRewardPerShareP:B.toString(),p:this.P,imbalance:M}}async getPoolInfoPerProperty(i){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(i.poolAddress);let a=await this.getContract(i.poolAddress),[A,u,c,g,f,y]=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()]),b=c.toString(),T=g.toString(),B=ge({tokenBalance:b,vUsdBalance:T});return{aValue:A.toString(),dValue:u.toString(),tokenBalance:b,vUsdBalance:T,totalLpAmount:f.toString(),accRewardPerShareP:y.toString(),p:this.P,imbalance:B}}buildRawTransactionDeposit(i){let{amount:a,accountAddress:A}=i,u=[{type:"uint256",value:a}];return this.buildRawTransaction(i.token.poolAddress,"deposit(uint256)",u,"0",A)}buildRawTransactionWithdraw(i){let{amount:a,accountAddress:A}=i,u=[{type:"uint256",value:a}];return this.buildRawTransaction(i.token.poolAddress,"withdraw(uint256)",u,"0",A)}buildRawTransactionClaimRewards(i){let{accountAddress:a}=i,A=[];return this.buildRawTransaction(i.token.poolAddress,"claimRewards()",A,"0",a)}async buildRawTransaction(i,a,A,u,c){let g=await this.tronWeb.transactionBuilder.triggerSmartContract(i,a,{callValue:u},A,c);if(!g?.result?.result)throw new Z("Unknown error: "+JSON.stringify(g,null,2));return g.transaction}async getContract(i){return await this.tronWeb.contract(Ye,i)}};var dn=class{constructor(r,i,a,A){this.api=r;this.nodeRpcUrlsConfig=i;this.params=a;this.tokenService=A;this.rawTxBuilder=new cn(r,i,this.params,A);let u=a.cachePoolInfoChainSec>0?a.cachePoolInfoChainSec*1e3:20*1e3;this.cache=new pa({defaultTtl:u})}async getAllowance(r,i){if(i){let a=r,A=i;return await this.tokenService.getAllowance({...A,spender:A.token.poolAddress},a)}else{let a=r;return await this.tokenService.getAllowance({...a,spender:a.token.poolAddress})}}async checkAllowance(r,i){if(i){let a=r,A=i;return this.tokenService.checkAllowance({...A,spender:A.token.poolAddress},a)}else{let a=r;return this.tokenService.checkAllowance({...a,spender:a.token.poolAddress})}}async approve(r,i){return this.tokenService.approve(r,{...i,spender:i.token.poolAddress})}async getAmountToBeDeposited(r,i,a){L(r),J("amount",r,i.decimals);let A=await this.getPoolInfoFromChain(i,a),{vUsdBalance:u,tokenBalance:c,aValue:g,dValue:f}=A,y=Li(r,g,f,c,u);return N(y,3).toFixed()}async getAmountToBeWithdrawn(r,i,a,A){L(r),J("amount",r,a.decimals);let u=await this.getPoolInfoFromChain(a,A),c=Yi(r),g=pe(c,a.decimals),y=(await this.getUserBalanceInfo(i,a,A)).earned(u)||"0",b=da(g).plus(y).toFixed();return N(b,a.decimals).toFixed()}async getUserBalanceInfo(r,i,a){return lt(i.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,a).getUserBalanceInfo(r,i)}async getPoolInfoFromChain(r,i){let a={chainSymbol:r.chainSymbol,poolAddress:r.poolAddress},A=this.cache.get(a);if(A)return A;{let u=await lt(r.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).getPoolInfoFromChain(r);return this.cache.put(a,u),this.api.cachePut({chainSymbol:r.chainSymbol,poolAddress:r.poolAddress},u),u}}};function lt(l,r,i,a,A){switch(V.getChainProperty(l).chainType){case"EVM":{if(A)return new Rt(A,r);{let u=i.getNodeRpcUrl(l);return new Rt(new fa(u),r)}}case"TRX":{let u=i.getNodeRpcUrl(l),c=a.tronJsonRpc;if(A)return new kt(A,r,c);{let g=new ga({fullHost:u});return new kt(g,r,c)}}case"SOLANA":{let u=i.getNodeRpcUrl(l);return new un(u,r)}case"SRB":return new ln(i,a,r)}}import{Big as j}from"big.js";function Hi(l,r,i){let a=ha(l,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo),A=ya(a.amountIncludingCommissionInSystemPrecision,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:A}}function zi(l,r,i){let a=ba(l,{decimals:i.decimals,feeShare:i.feeShare},i.poolInfo),A=Ta(a.amountIncludingCommissionInSystemPrecision,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:A}}function ha(l,{feeShare:r,decimals:i},a){let A=j(l),u=A.times(r),c=A.minus(u);return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInSystemPrecision:Ki(ze(c,i),a),amountExcludingCommissionInSystemPrecision:Ki(ze(A,i),a)}}function Ki(l,r){if(l.eq(0))return"0";let i=j(r.tokenBalance).plus(l),a=xe(i.toFixed(),r.aValue,r.dValue);return j(r.vUsdBalance).minus(a).round().toFixed()}function ya(l,{feeShare:r,decimals:i},a){if(j(l).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let u=j(l).plus(a.vUsdBalance),c=xe(u,a.aValue,a.dValue),g=pe(j(a.tokenBalance).minus(c),i),f=j(g).times(r),y=j(g).minus(f).round();return{bridgeFeeInTokenPrecision:f.round().toFixed(),amountIncludingCommissionInTokenPrecision:y.toFixed(),amountExcludingCommissionInTokenPrecision:g.toFixed()}}function ba(l,{feeShare:r,decimals:i},a){let A=j(r).div(j(1).minus(r)),u=j(l).times(A),c=j(l).plus(u);return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInSystemPrecision:Qi(ze(c,i),a),amountExcludingCommissionInSystemPrecision:Qi(ze(l,i),a)}}function Qi(l,r){let i=j(r.tokenBalance).minus(l),a=xe(i.toFixed(),r.aValue,r.dValue);return j(a).minus(r.vUsdBalance).round().toFixed()}function Ta(l,{feeShare:r,decimals:i},a){if(j(l).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let A=j(a.vUsdBalance).minus(l),u=xe(A.toFixed(),a.aValue,a.dValue),c=j(u).minus(a.tokenBalance),g=pe(c.toFixed(),i),f=j(r).div(j(1).minus(r)),y=j(g).times(f),b=j(g).plus(y);return{bridgeFeeInTokenPrecision:y.round().toFixed(),amountIncludingCommissionInTokenPrecision:b.round().toFixed(),amountExcludingCommissionInTokenPrecision:g.toFixed()}}import{Big as Ke}from"big.js";function ji(l,r,i,a,A){let u=ve(l,r,i),c=pe(u,r.decimals),g=bt(u,a,A),f=Ke(l).times(r.feeShare),y=Ke(g).div(Ke(1).minus(a.feeShare)).minus(g);return{sourceLPSwap:{fee:N(f,r.decimals).neg().round(r.decimals,Ke.roundUp).toFixed(),swap:N(Ke(l).minus(c).minus(f),r.decimals).neg().round(r.decimals,Ke.roundUp).toFixed()},destLPSwap:{fee:N(y,a.decimals).neg().round(a.decimals,Ke.roundUp).toFixed(),swap:N(pe(u,a.decimals).minus(g).minus(y),a.decimals).neg().round(a.decimals,Ke.roundUp).toFixed()}}}import{Connection as Pa,PublicKey as wa,TransactionMessage as Sa}from"@solana/web3.js";var pn=class{constructor(r,i){this.nodeRpcUrlsConfig=r;this.params=i}async addMemoToTx(r,i){if(i.length>28)throw new Z("InvalidArgumentException memo cannot be more than 28 characters");let a=new Pa(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),A=await qe(r,a),u=Sa.decompile(r.message,{addressLookupTableAccounts:A}),c=u.instructions[u.instructions.length-1];if(!c?.keys)throw new Z("Last instruction or its keys are invalid.");c.keys.push({pubkey:new wa(w.from(i)),isSigner:!1,isWritable:!1}),r.message=u.compileToV0Message(A)}};import{Asset as Ia,BASE_FEE as Ra,Horizon as qi,Operation as ka,Operation as Ma,SorobanRpc as vt,TimeoutInfinite as va,TransactionBuilder as On,TransactionBuilder as $i,contract as Ab}from"@stellar/stellar-sdk";import{contract as e}from"@stellar/stellar-sdk";var Ba=e.Spec,Ca=e.Client;var Mt=class extends Ca{constructor(i){super(new Ba(["AAAAAAAAAYlSZXR1cm5zIHRoZSBhbGxvd2FuY2UgZm9yIGBzcGVuZGVyYCB0byB0cmFuc2ZlciBmcm9tIGBmcm9tYC4KClRoZSBhbW91bnQgcmV0dXJuZWQgaXMgdGhlIGFtb3VudCB0aGF0IHNwZW5kZXIgaXMgYWxsb3dlZCB0byB0cmFuc2ZlcgpvdXQgb2YgZnJvbSdzIGJhbGFuY2UuIFdoZW4gdGhlIHNwZW5kZXIgdHJhbnNmZXJzIGFtb3VudHMsIHRoZSBhbGxvd2FuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQgdHJhbnNmZXJlZC4KCiMgQXJndW1lbnRzCgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHRvIGJlIGRyYXduIGZyb20uCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3Mgc3BlbmRpbmcgdGhlIHRva2VucyBoZWxkIGJ5IGBmcm9tYC4AAAAAAAAJYWxsb3dhbmNlAAAAAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAEAAAAL","AAAAAAAAAIlSZXR1cm5zIHRydWUgaWYgYGlkYCBpcyBhdXRob3JpemVkIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBmb3Igd2hpY2ggdG9rZW4gYXV0aG9yaXphdGlvbiBpcyBiZWluZyBjaGVja2VkLgAAAAAAAAphdXRob3JpemVkAAAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAB","AAAAAAAAA55TZXQgdGhlIGFsbG93YW5jZSBieSBgYW1vdW50YCBmb3IgYHNwZW5kZXJgIHRvIHRyYW5zZmVyL2J1cm4gZnJvbQpgZnJvbWAuCgpUaGUgYW1vdW50IHNldCBpcyB0aGUgYW1vdW50IHRoYXQgc3BlbmRlciBpcyBhcHByb3ZlZCB0byB0cmFuc2ZlciBvdXQgb2YKZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byB0cmFuc2ZlciBhbW91bnRzLCBhbmQKd2hlbiBhbiBhbW91bnQgaXMgdHJhbnNmZXJyZWQgdGhlIGFsbG93YW5jZSB3aWxsIGJlIHJlZHVjZWQgYnkgdGhlCmFtb3VudCB0cmFuc2ZlcmVkLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgdG8gYmUgZHJhd24gZnJvbS4KKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBiZWluZyBhdXRob3JpemVkIHRvIHNwZW5kIHRoZSB0b2tlbnMgaGVsZCBieQpgZnJvbWAuCiogYGFtb3VudGAgLSBUaGUgdG9rZW5zIHRvIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGBzcGVuZGVyYC4KKiBgZXhwaXJhdGlvbl9sZWRnZXJgIC0gVGhlIGxlZGdlciBudW1iZXIgd2hlcmUgdGhpcyBhbGxvd2FuY2UgZXhwaXJlcy4gQ2Fubm90CmJlIGxlc3MgdGhhbiB0aGUgY3VycmVudCBsZWRnZXIgbnVtYmVyIHVubGVzcyB0aGUgYW1vdW50IGlzIGJlaW5nIHNldCB0byAwLgpBbiBleHBpcmVkIGVudHJ5ICh3aGVyZSBleHBpcmF0aW9uX2xlZGdlciA8IHRoZSBjdXJyZW50IGxlZGdlciBudW1iZXIpCnNob3VsZCBiZSB0cmVhdGVkIGFzIGEgMCBhbW91bnQgYWxsb3dhbmNlLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImFwcHJvdmUiLCBmcm9tOiBBZGRyZXNzLApzcGVuZGVyOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6IGkxMjgsIGV4cGlyYXRpb25fbGVkZ2VyOiB1MzJdYAAAAAAAB2FwcHJvdmUAAAAABAAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAAAAABFleHBpcmF0aW9uX2xlZGdlcgAAAAAAAAQAAAAA","AAAAAAAAAJhSZXR1cm5zIHRoZSBiYWxhbmNlIG9mIGBpZGAuCgojIEFyZ3VtZW50cwoKKiBgaWRgIC0gVGhlIGFkZHJlc3MgZm9yIHdoaWNoIGEgYmFsYW5jZSBpcyBiZWluZyBxdWVyaWVkLiBJZiB0aGUKYWRkcmVzcyBoYXMgbm8gZXhpc3RpbmcgYmFsYW5jZSwgcmV0dXJucyAwLgAAAAdiYWxhbmNlAAAAAAEAAAAAAAAAAmlkAAAAAAATAAAAAQAAAAs=","AAAAAAAAAWRCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLgoKUmVkdWNlcyBmcm9tJ3MgYmFsYW5jZSBieSB0aGUgYW1vdW50LCB3aXRob3V0IHRyYW5zZmVycmluZyB0aGUgYmFsYW5jZQp0byBhbm90aGVyIGhvbGRlcidzIGJhbGFuY2UuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIG9mIHRva2VucyB3aGljaCB3aWxsIGJlCmJ1cm5lZCBmcm9tLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgYnVybmVkLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImJ1cm4iLCBmcm9tOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6CmkxMjhdYAAAAARidXJuAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAtxCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSBvZiBgc3BlbmRlcmAuCgpSZWR1Y2VzIGZyb20ncyBiYWxhbmNlIGJ5IHRoZSBhbW91bnQsIHdpdGhvdXQgdHJhbnNmZXJyaW5nIHRoZSBiYWxhbmNlCnRvIGFub3RoZXIgaG9sZGVyJ3MgYmFsYW5jZS4KClRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byBidXJuIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZSwgaWYKdGhlIGFtb3VudCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGFsbG93YW5jZSB0aGF0IHRoZSBzcGVuZGVyIGhhcwpvbiB0aGUgZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyJ3MgYWxsb3dhbmNlIG9uIGZyb20ncyBiYWxhbmNlIHdpbGwgYmUKcmVkdWNlZCBieSB0aGUgYW1vdW50LgoKIyBBcmd1bWVudHMKCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3MgYXV0aG9yaXppbmcgdGhlIGJ1cm4sIGFuZCBoYXZpbmcgaXRzIGFsbG93YW5jZQpjb25zdW1lZCBkdXJpbmcgdGhlIGJ1cm4uCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQpidXJuZWQgZnJvbS4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIGJ1cm5lZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJidXJuIiwgZnJvbTogQWRkcmVzc10sIGRhdGEgPSBbYW1vdW50OgppMTI4XWAAAAAJYnVybl9mcm9tAAAAAAAAAwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAVNDbGF3YmFjayBgYW1vdW50YCBmcm9tIGBmcm9tYCBhY2NvdW50LiBgYW1vdW50YCBpcyBidXJuZWQgaW4gdGhlCmNsYXdiYWNrIHByb2Nlc3MuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIGZyb20gd2hpY2ggdGhlIGNsYXdiYWNrIHdpbGwKdGFrZSB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSBjbGF3ZWQgYmFjay4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJjbGF3YmFjayIsIGFkbWluOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAACGNsYXdiYWNrAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAIBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdXNlZCB0byByZXByZXNlbnQgYW1vdW50cyBvZiB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAhkZWNpbWFscwAAAAAAAAABAAAABA==","AAAAAAAAAPVNaW50cyBgYW1vdW50YCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgbWludGVkIHRva2Vucy4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIG1pbnRlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJtaW50IiwgYWRtaW46IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwgZGF0YQo9IFthbW91bnQ6IGkxMjhdYAAAAAAAAARtaW50AAAAAgAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAFlSZXR1cm5zIHRoZSBuYW1lIGZvciB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAAAAARuYW1lAAAAAAAAAAEAAAAQ","AAAAAAAAAQxTZXRzIHRoZSBhZG1pbmlzdHJhdG9yIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyBgbmV3X2FkbWluYC4KCiMgQXJndW1lbnRzCgoqIGBuZXdfYWRtaW5gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCBoZW5jZWZvcnRoIGJlIHRoZSBhZG1pbmlzdHJhdG9yCm9mIHRoaXMgdG9rZW4gY29udHJhY3QuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2FkbWluIiwgYWRtaW46IEFkZHJlc3NdLCBkYXRhID0KW25ld19hZG1pbjogQWRkcmVzc11gAAAACXNldF9hZG1pbgAAAAAAAAEAAAAAAAAACW5ld19hZG1pbgAAAAAAABMAAAAA","AAAAAAAAAEZSZXR1cm5zIHRoZSBhZG1pbiBvZiB0aGUgY29udHJhY3QuCgojIFBhbmljcwoKSWYgdGhlIGFkbWluIGlzIG5vdCBzZXQuAAAAAAAFYWRtaW4AAAAAAAAAAAAAAQAAABM=","AAAAAAAAAVBTZXRzIHdoZXRoZXIgdGhlIGFjY291bnQgaXMgYXV0aG9yaXplZCB0byB1c2UgaXRzIGJhbGFuY2UuIElmCmBhdXRob3JpemVkYCBpcyB0cnVlLCBgaWRgIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBiZWluZyAoZGUtKWF1dGhvcml6ZWQuCiogYGF1dGhvcml6ZWAgLSBXaGV0aGVyIG9yIG5vdCBgaWRgIGNhbiB1c2UgaXRzIGJhbGFuY2UuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2F1dGhvcml6ZWQiLCBpZDogQWRkcmVzc10sIGRhdGEgPQpbYXV0aG9yaXplOiBib29sXWAAAAAOc2V0X2F1dGhvcml6ZWQAAAAAAAIAAAAAAAAAAmlkAAAAAAATAAAAAAAAAAlhdXRob3JpemUAAAAAAAABAAAAAA==","AAAAAAAAAFtSZXR1cm5zIHRoZSBzeW1ib2wgZm9yIHRoaXMgdG9rZW4uCgojIFBhbmljcwoKSWYgdGhlIGNvbnRyYWN0IGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuAAAAAAZzeW1ib2wAAAAAAAAAAAABAAAAEA==","AAAAAAAAAWRUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQp3aXRoZHJhd24gZnJvbS4KKiBgdG9gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCByZWNlaXZlIHRoZSB0cmFuc2ZlcnJlZCB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSB0cmFuc2ZlcnJlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJ0cmFuc2ZlciIsIGZyb206IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwKZGF0YSA9IFthbW91bnQ6IGkxMjhdYAAAAAh0cmFuc2ZlcgAAAAMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAzNUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSB0aGF0CmBzcGVuZGVyYCBoYXMgb24gYGZyb21gJ3MgYmFsYW5jZS4gQXV0aG9yaXplZCBieSBzcGVuZGVyCihgc3BlbmRlci5yZXF1aXJlX2F1dGgoKWApLgoKVGhlIHNwZW5kZXIgd2lsbCBiZSBhbGxvd2VkIHRvIHRyYW5zZmVyIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZQppZiB0aGUgYW1vdW50IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgYWxsb3dhbmNlIHRoYXQgdGhlIHNwZW5kZXIKaGFzIG9uIHRoZSBmcm9tJ3MgYmFsYW5jZS4gVGhlIHNwZW5kZXIncyBhbGxvd2FuY2Ugb24gZnJvbSdzIGJhbGFuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQuCgojIEFyZ3VtZW50cwoKKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBhdXRob3JpemluZyB0aGUgdHJhbnNmZXIsIGFuZCBoYXZpbmcgaXRzCmFsbG93YW5jZSBjb25zdW1lZCBkdXJpbmcgdGhlIHRyYW5zZmVyLgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHdoaWNoIHdpbGwgYmUKd2l0aGRyYXduIGZyb20uCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgdHJhbnNmZXJyZWQgdG9rZW5zLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgdHJhbnNmZXJyZWQuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsidHJhbnNmZXIiLCBmcm9tOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAADXRyYW5zZmVyX2Zyb20AAAAAAAAEAAAAAAAAAAdzcGVuZGVyAAAAABMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA=="]),i);this.options=i;this.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 xa=100,Wa=180,gn=class{constructor(r,i){this.nodeRpcUrlsConfig=r;this.params=i}async buildChangeTrustLineXdrTx(r){let a=await new qi.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(r.sender),u=(await this.getContract(Mt,r.tokenAddress).name()).result,[c,g]=u.split(":");if(c===void 0||g===void 0)throw new Z("Invalid token name format. Expected format 'symbol:srbTokenAddress'");let f=new Ia(c,g),y=Ma.changeTrust({asset:f,limit:r.limit});return new $i(a,{fee:xa.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(y).setTimeout(Wa).build().toXDR()}async getBalanceLine(r,i){let A=(await this.getContract(Mt,i).name()).result,[u,c]=A.split(":"),g=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new qi.Server(g).loadAccount(r)).balances.find(T=>(T.asset_type==="credit_alphanum4"||T.asset_type==="credit_alphanum12")&&T.asset_code==u&&T.asset_issuer==c)}async submitTransactionStellar(r){let i=new qi.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),a=$i.fromXDR(r,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await i.submitTransaction(a)}async simulateAndCheckRestoreTxRequiredSoroban(r,i){let a=new vt.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),A=await a.getAccount(i),u=On.fromXDR(r,this.params.sorobanNetworkPassphrase),c=await a.simulateTransaction(u);if(vt.Api.isSimulationRestore(c))return new On(A,{fee:(+Ra+ +c.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(c.restorePreamble.transactionData.build()).addOperation(ka.restoreFootprint({})).setTimeout(va).build().toXDR()}async sendTransactionSoroban(r){let i=new vt.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=On.fromXDR(r,this.params.sorobanNetworkPassphrase);return i.sendTransaction(a)}async confirmTx(r,i=15){let a=new vt.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),A=await pi(()=>a.getTransaction(r),c=>c.status===vt.Api.GetTransactionStatus.NOT_FOUND,i);if(A.length===0)throw new Z("No transaction responses found.");let u=A[A.length-1];if(!u)throw new Z("Unexpected error: last response is undefined.");return u}getContract(r,i){let a={contractId:i,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new r(a)}};var fn=class{constructor(r,i){this.nodeRpcUrlsConfig=r;this.srb=new gn(r,i),this.sol=new pn(r,i)}};var ot=(i=>(i.WITH_NATIVE_CURRENCY="native",i.WITH_STABLECOIN="stablecoin",i))(ot||{}),zt=(i=>(i.INT="int",i.FLOAT="float",i))(zt||{});import{Big as Va}from"big.js";import Oa from"tronweb";import Xa from"web3";import Xn from"erc-20-abi";import{Big as er}from"big.js";var ke=class{async checkAllowance(r){let i=await this.getAllowance(r);return er(i).gte(er(r.amount))}};var Fa="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Ga="0xdac17f958d2ee523a2206206994597c13d831ec7",Da=1e5,xt=class extends ke{constructor(i,a){super();this.web3=i;this.api=a;this.chainType="EVM"}getAllowance(i){let a=i.token.tokenAddress,A=i.owner,u=i.spender;return this.getAllowanceByTokenAddress(a,A,u)}getAllowanceByTokenAddress(i,a,A){return this.getContract(Xn,i).methods.allowance(a,A).call()}async getTokenBalance(i){return await this.getContract(Xn,i.token.tokenAddress).methods.balanceOf(i.account).call()}async getNativeTokenBalance(i){return await this.web3.eth.getBalance(i.account)}async approve(i){if(this.isUsdt(i.tokenAddress)&&await this.getAllowanceByTokenAddress(i.tokenAddress,i.owner,i.spender)!=="0"){let u=await this.buildRawTransactionApprove({...i,amount:"0"});await this.sendRawTransaction(u,i.chainSymbol)}let a=await this.buildRawTransactionApprove(i);return await this.sendRawTransaction(a,i.chainSymbol)}isUsdt(i){return i.toLowerCase()===Ga}async buildRawTransactionApprove(i){let{tokenAddress:a,spender:A,owner:u,amount:c}=i,f=await this.getContract(Xn,a).methods.approve(A,c==null?Fa:sn(c));return{from:u,to:a,value:"0",data:f.encodeABI()}}async sendRawTransaction(i,a){let A=i,u={maxPriorityFeePerGas:null,maxFeePerGas:null};a==="POL"?A.gas=Da:A.gas=await this.web3.eth.estimateGas(i);let{transactionHash:c}=await this.web3.eth.sendTransaction({...A,...u});return{txId:c}}getContract(i,a){return new this.web3.eth.Contract(i,a)}};import{AnchorProvider as Za}from"@project-serum/anchor";import{Connection as Ua,PublicKey as hn}from"@solana/web3.js";var yn=class extends ke{constructor(i,a){super();this.solanaRpcUrl=i;this.api=a;this.chainType="SOLANA"}approve(i){throw new ue}buildRawTransactionApprove(i){throw new ue}buildAnchorProvider(i){let a=new Ua(this.solanaRpcUrl,"confirmed"),A=new hn(i);return new Za(a,{publicKey:A},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(i){throw new ue}async getTokenBalance(i){let{account:a,token:A}=i;try{let u=await Be(new hn(a),new hn(A.tokenAddress));return(await At(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(i){return(await this.buildAnchorProvider(i.account).connection.getBalance(new hn(i.account))).toString()}};import{Horizon as gh,NotFoundError as Ea}from"@stellar/stellar-sdk";var bn=class extends ke{constructor(i,a,A){super();this.nodeRpcUrlsConfig=i;this.params=a;this.api=A;this.chainType="SRB"}getAllowance(){throw new ue}async getTokenBalance(i){if(!i.token.originTokenAddress)throw new Z("OriginTokenAddress missing");let[a,A]=i.token.originTokenAddress.split(":"),u=new gh.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),c;try{c=await u.loadAccount(i.account)}catch(y){if(y instanceof Ea)return"0";throw y}let f=c.balances.find(y=>(y.asset_type==="credit_alphanum4"||y.asset_type==="credit_alphanum12")&&y.asset_code==a&&y.asset_issuer==A);return f?.balance?O(f.balance,V.getChainDecimalsByType(V.getChainProperty(i.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(i){let c=(await new gh.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(i.account)).balances.find(g=>g.asset_type==="native");return c?.balance?O(c.balance,V.getChainDecimalsByType(V.getChainProperty(i.chainSymbol).chainType)).toFixed():"0"}approve(){throw new ue}buildRawTransactionApprove(){throw new ue}};var tr=[{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"}];var Na="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Wt=class extends ke{constructor(i,a){super();this.tronWeb=i;this.api=a;this.chainType="TRX"}async getAllowance(i){let{token:{tokenAddress:a},owner:A}=i;return(await(await this.getContract(a)).methods.allowance(A,i.spender).call()).toString()}async getTokenBalance(i){return(await(await this.getContract(i.token.tokenAddress)).balanceOf(i.account).call()).toString()}async getNativeTokenBalance(i){return(await this.tronWeb.trx.getBalance(i.account)).toString()}async approve(i){let a=await this.buildRawTransactionApprove(i);return await on(this.tronWeb,a)}async buildRawTransactionApprove(i){let{tokenAddress:a,spender:A,owner:u,amount:c}=i,g=c==null?Na:sn(c),f=[{type:"address",value:A},{type:"uint256",value:g}];return this.buildRawTransaction(a,"approve(address,uint256)",f,"0",u)}async getContract(i){return await this.tronWeb.contract(tr,i)}async buildRawTransaction(i,a,A,u,c){let g=await this.tronWeb.transactionBuilder.triggerSmartContract(i,a,{callValue:u},A,c);if(!g?.result?.result)throw new Z("Unknown error: "+JSON.stringify(g,null,2));return g.transaction}};var Tn=class{constructor(r,i,a){this.api=r;this.nodeRpcUrlsConfig=i;this.params=a}async getAllowance(r,i){let a=await this.getChainTokenService(r.token.chainSymbol,r.owner,i).getAllowance(r);return N(a,r.token.decimals).toFixed()}async checkAllowance(r,i){return L(r.amount),J("amount",r.amount,r.token.decimals),this.getChainTokenService(r.token.chainSymbol,r.owner,i).checkAllowance(this.prepareCheckAllowanceParams(r))}async approve(r,i){return i.amount&&(L(i.amount),J("amount",i.amount,i.token.decimals)),this.getChainTokenService(i.token.chainSymbol,i.owner,r).approve(this.prepareApproveParams(i))}async buildRawTransactionApprove(r,i){return r.amount&&(L(r.amount),J("amount",r.amount,r.token.decimals)),this.getChainTokenService(r.token.chainSymbol,r.owner,i).buildRawTransactionApprove(this.prepareApproveParams(r))}async getTokenBalance(r,i){let a=await this.getChainTokenService(r.token.chainSymbol,r.account,i).getTokenBalance(r);return r.token.decimals?N(a,r.token.decimals).toFixed():a}async getNativeTokenBalance(r,i){let a=await this.getChainTokenService(r.chainSymbol,r.account,i).getNativeTokenBalance(r);return{int:a,float:N(a,V.getChainDecimalsByType(V.getChainProperty(r.chainSymbol).chainType)).toFixed()}}getChainTokenService(r,i,a){switch(V.getChainProperty(r).chainType){case"EVM":{if(a)return new xt(a,this.api);{let A=this.nodeRpcUrlsConfig.getNodeRpcUrl(r);return new xt(new Xa(A),this.api)}}case"TRX":{if(a)return new Wt(a,this.api);{let A=this.nodeRpcUrlsConfig.getNodeRpcUrl(r),u=new Oa({fullHost:A});return u.setAddress(i),new Wt(u,this.api)}}case"SOLANA":{let A=this.nodeRpcUrlsConfig.getNodeRpcUrl(r);return new yn(A,this.api)}case"SRB":return new bn(this.nodeRpcUrlsConfig,this.params,this.api)}}prepareCheckAllowanceParams(r){return{...r,amount:O(r.amount,r.token.decimals)}}prepareApproveParams(r){return{tokenAddress:r.token.tokenAddress,owner:r.owner,spender:r.spender,chainSymbol:r.token.chainSymbol,amount:r.amount==null?void 0:Va(r.amount).toFixed()}}};var Ft=class{constructor(r){this.nodeRpcUrls=r}getNodeRpcUrl(r){let i=this.nodeRpcUrls[r];if(i!==void 0)return i;throw new Vt(r)}},Pn=class{constructor(r,i=Ut){V.addChainsProperties(i.additionalChainsProperties);let a=new Xt(i),A=new Yt(a),u=new Jt(A),c=new Qt(u);this.api=new Kt(c,i),this.tokenService=new Tn(this.api,r,i),this.bridge=new An(this.api,r,i,this.tokenService),this.pool=new dn(this.api,r,i,this.tokenService),this.params=i}async chainDetailsMap(r){return this.api.getChainDetailsMap(r)}async tokens(r){return this.api.tokens(r)}async tokensByChain(r,i){let A=(await this.api.getChainDetailsMap(i))[r];return A?A.tokens:[]}async getTransferStatus(r,i){return this.api.getTransferStatus(r,i)}async getGasBalance(r,i){return this.api.getGasBalance(r,i)}async checkAddress(){return new Promise(r=>{r({status:"OK",gasBalance:null})})}async getPendingStatusInfo(r,i,a,A){L(r);let u;i=="float"?(J("amount",r,a.decimals),u=O(r,a.decimals).toFixed()):u=r;let c=ve(u,a,await te(this.api,a)),g=await te(this.api,A),f=this.getAmountFromVUsdFormatted(c,A,g),y,b=await this.api.getPendingInfo();for(let T in b[A.chainSymbol]){let B=b[A.chainSymbol];if(!B)throw new Z("Cannot find pending info for "+A.chainSymbol);y=B[T]}if(y){let T=ni(y.totalSentAmount,g),B=this.getAmountFromVUsdFormatted(c,A,T),S;return We(B.int).gt(f.int)?S={min:f,max:B}:S={min:B,max:f},{pendingTxs:y.pendingTxs,pendingAmount:{int:Ne(y.totalSentAmount,3,A.decimals).toFixed(0),float:N(y.totalSentAmount,3).toFixed()},estimatedAmount:S}}return{pendingTxs:0,pendingAmount:{int:"0",float:"0"},estimatedAmount:{min:f,max:f}}}async getTokenBalance(r,i){return this.tokenService.getTokenBalance(r,i)}async getNativeTokenBalance(r,i){return this.tokenService.getNativeTokenBalance(r,i)}async calculateFeePercentOnSourceChain(r,i){L(r),J("amountFloat",r,i.decimals);let a=O(r,i.decimals);if(a.eq(0))return 0;let A=ve(a,i,await te(this.api,i)),u=pe(A,i.decimals);return In(a,u)}async calculateFeePercentOnDestinationChain(r,i,a){L(r),J("amountFloat",r,i.decimals);let A=O(r,i.decimals);if(A.eq(0))return 0;let u=ve(A,i,await te(this.api,i)),c=bt(u,a,await te(this.api,a)),g=pe(u,a.decimals);return In(g,c)}async getAmountToBeReceivedAndGasFeeOptions(r,i,a,A){return L(r),J("amountToSendFloat",r,i.decimals),{amountToSendFloat:We(r).toFixed(),amountToBeReceivedFloat:await this.getAmountToBeReceived(r,i,a,A),gasFeeOptions:await this.getGasFeeOptions(i,a,A)}}async getAmountToSendAndGasFeeOptions(r,i,a,A){return L(r),J("amountToBeReceivedFloat",r,a.decimals),{amountToSendFloat:await this.getAmountToSend(r,i,a,A),amountToBeReceivedFloat:We(r).toFixed(),gasFeeOptions:await this.getGasFeeOptions(i,a,A)}}async getAmountToBeReceived(r,i,a,A){let u=await te(this.api,i),c=await te(this.api,a);return this.getAmountToBeReceivedFromPools(r,i,a,u,c,A)}async getAmountToBeReceivedFromChain(r,i,a,A,u,c){let g=await this.pool.getPoolInfoFromChain(i,u),f=await this.pool.getPoolInfoFromChain(a,c);return this.getAmountToBeReceivedFromPools(r,i,a,g,f,A)}getAmountToBeReceivedFromPools(r,i,a,A,u,c){L(r),J("amountToSendFloat",r,i.decimals);let g=O(r,i.decimals);if(c&&c==3){if(!i.cctpAddress||!a.cctpAddress||!i.cctpFeeShare)throw new we("Such route does not support CCTP protocol");let y=g.mul(We(1).minus(i.cctpFeeShare)).round(0,We.roundUp),b=Ne(y,i.decimals,a.decimals).round(0);return N(b,a.decimals).toFixed()}let f=ve(g,i,A);return this.getAmountFromVUsdFormatted(f,a,u).float}async getAmountToSend(r,i,a,A){let u=await te(this.api,i),c=await te(this.api,a);return this.getAmountToSendFromPools(r,i,a,u,c,A)}async getAmountToSendFromChain(r,i,a,A,u,c){let g=await this.pool.getPoolInfoFromChain(i,u),f=await this.pool.getPoolInfoFromChain(a,c);return this.getAmountToSendFromPools(r,i,a,g,f,A)}getAmountToSendFromPools(r,i,a,A,u,c){L(r),J("amountToBeReceivedFloat",r,a.decimals);let g=O(r,a.decimals);if(c&&c==3){if(!i.cctpAddress||!a.cctpAddress||!i.cctpFeeShare)throw new we("Such route does not support CCTP protocol");let b=g.div(We(1).minus(i.cctpFeeShare)).round(0,We.roundDown),T=Ne(b,a.decimals,i.decimals).round(0);return N(T,i.decimals).toFixed()}let f=ri(g,a,u),y=ii(f,i,A);if(We(y).lte(0))throw new Fe;return N(y,i.decimals).toFixed()}async getGasFeeOptions(r,i,a){return Dn(r.allbridgeChainId,r.chainType,i.allbridgeChainId,r.decimals,a,this.api)}getAverageTransferTime(r,i,a){return r.transferTime?.[i.chainSymbol]?.[a]??null}async getPoolInfoByToken(r){return await this.api.getPoolInfoByKey({chainSymbol:r.chainSymbol,poolAddress:r.poolAddress})}async refreshPoolInfo(r){if(r){let a=(r instanceof Array?r:[r]).map(A=>({chainSymbol:A.chainSymbol,poolAddress:A.poolAddress}));return this.api.refreshPoolInfo(a)}return this.api.refreshPoolInfo()}aprInPercents(r){return si(r)}async getExtraGasMaxLimits(r,i){return await Zn(r,i,this.api)}async getVUsdFromAmount(r,i,a){L(r);let A;i=="float"?(J("amount",r,a.decimals),A=O(r,a.decimals).toFixed()):A=r;let u=ve(A,a,await te(this.api,a));return{int:u,float:N(u,3).toFixed()}}async getAmountFromVUsd(r,i){return this.getAmountFromVUsdFormatted(r,i,await te(this.api,i))}getAmountFromVUsdFormatted(r,i,a){L(r);let A=bt(r,i,a);if(We(A).lt(0))throw new Fe;return{int:A,float:N(A,i.decimals).toFixed()}}async swapAndBridgeFeeCalculation(r,i,a){return Hi(r,{decimals:i.decimals,feeShare:i.feeShare,poolInfo:await te(this.api,i)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await te(this.api,a)})}async swapAndBridgeFeeCalculationReverse(r,i,a){let A=zi(r,{decimals:i.decimals,feeShare:i.feeShare,poolInfo:await te(this.api,i)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await te(this.api,a)}),u=A.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if(We(u).lt(0))throw new Fe;return A}async getSendAmountDetails(r,i,a,A){L(r);let u;return i=="float"?(J("amount",r,a.decimals),u=O(r,a.decimals).toFixed()):u=r,ji(u,a,await te(this.api,a),A,await te(this.api,A))}};function La(l){return"solanaRpcUrl"in l}var nr=class{constructor(r,i=Ut){let a;La(r)?a=new Ft({SOL:r.solanaRpcUrl,TRX:r.tronRpcUrl}):a=new Ft(r),this.service=new Pn(a,i),this.bridge=this.service.bridge,this.pool=this.service.pool,this.utils=new fn(a,i),this.params=i}async chainDetailsMap(r="swap"){return this.service.chainDetailsMap(r)}async tokens(r="swap"){return this.service.tokens(r)}async tokensByChain(r,i="swap"){return this.service.tokensByChain(r,i)}async getTransferStatus(r,i){return this.service.getTransferStatus(r,i)}async getGasBalance(r,i){return this.service.getGasBalance(r,i)}async checkAddress(r,i,a){return await this.service.checkAddress()}async getPendingStatusInfo(r,i,a,A){return this.service.getPendingStatusInfo(r,i,a,A)}async getTokenBalance(r,i){return this.service.getTokenBalance(r,i)}async getNativeTokenBalance(r,i){return this.service.getNativeTokenBalance(r,i)}async calculateFeePercentOnSourceChain(r,i){return this.service.calculateFeePercentOnSourceChain(r,i)}async calculateFeePercentOnDestinationChain(r,i,a){return this.service.calculateFeePercentOnDestinationChain(r,i,a)}async getAmountToBeReceivedAndGasFeeOptions(r,i,a,A){return this.service.getAmountToBeReceivedAndGasFeeOptions(r,i,a,A)}async getAmountToSendAndGasFeeOptions(r,i,a,A){return this.service.getAmountToSendAndGasFeeOptions(r,i,a,A)}async getAmountToBeReceived(r,i,a,A){return this.service.getAmountToBeReceived(r,i,a,A)}async getAmountToBeReceivedFromChain(r,i,a,A,u,c){return this.service.getAmountToBeReceivedFromChain(r,i,a,A,u,c)}getAmountToBeReceivedFromPools(r,i,a,A,u,c){return this.service.getAmountToBeReceivedFromPools(r,i,a,A,u,c)}async getAmountToSend(r,i,a,A){return this.service.getAmountToSend(r,i,a,A)}async getAmountToSendFromChain(r,i,a,A,u,c){return this.service.getAmountToSendFromChain(r,i,a,A,u,c)}getAmountToSendFromPools(r,i,a,A,u,c){return this.service.getAmountToSendFromPools(r,i,a,A,u,c)}async getGasFeeOptions(r,i,a){return this.service.getGasFeeOptions(r,i,a)}getAverageTransferTime(r,i,a){return this.service.getAverageTransferTime(r,i,a)}async getPoolInfoByToken(r){return this.service.getPoolInfoByToken(r)}async refreshPoolInfo(r){return this.service.refreshPoolInfo(r)}aprInPercents(r){return this.service.aprInPercents(r)}async getExtraGasMaxLimits(r,i){return this.service.getExtraGasMaxLimits(r,i)}async getVUsdFromAmount(r,i,a){return this.service.getVUsdFromAmount(r,i,a)}async getAmountFromVUsd(r,i){return this.service.getAmountFromVUsd(r,i)}async swapAndBridgeFeeCalculation(r,i,a){return this.service.swapAndBridgeFeeCalculation(r,i,a)}async swapAndBridgeFeeCalculationReverse(r,i,a){return this.service.swapAndBridgeFeeCalculationReverse(r,i,a)}async getSendAmountDetails(r,i,a,A){return this.service.getSendAmountDetails(r,i,a,A)}};export{Rn as AddressStatus,nr as AllbridgeCoreSdk,zt as AmountFormat,tt as AmountNotEnoughError,Nt as ArgumentInvalidDecimalsError,we as CCTPDoesNotSupportedError,Se as ChainSymbol,ee as ChainType,dr as ErrorCode,_t as ExtraGasMaxLimitExceededError,ot as FeePaymentMethod,Fe as InsufficientPoolLiquidityError,Et as InvalidAmountError,gt as InvalidGasFeePaymentOptionError,ei as InvalidMessengerOptionError,nt as InvalidTxError,ie as JupiterError,Ge as Messenger,ue as MethodNotSupportedError,Vt as NodeRpcUrlNotInitializedError,Z as SdkError,q as SdkRootError,Un as SolanaAutoTxFee,ht as TimeoutError,Ot as TxTooLargeError,ft as VerifyTxError,Ut as mainnet,ts as nodeRpcUrlsDefault,es as nodeUrlsDefault};
7
7
  /*! Bundled license information:
8
8
 
9
9
  @jspm/core/nodelibs/browser/buffer.js: