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