@allbridge/bridge-core-sdk 3.17.0-alpha.5 → 3.17.0

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