@allbridge/bridge-core-sdk 3.18.0 → 3.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var Va=Object.create;var Bt=Object.defineProperty;var Oa=Object.getOwnPropertyDescriptor;var Ea=Object.getOwnPropertyNames;var Xa=Object.getPrototypeOf,Ya=Object.prototype.hasOwnProperty;var La=(r,a)=>{for(var n in a)Bt(r,n,{get:a[n],enumerable:!0})},vn=(r,a,n,i)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of Ea(a))!Ya.call(r,s)&&s!==n&&Bt(r,s,{get:()=>a[s],enumerable:!(i=Oa(a,s))||i.enumerable});return r};var V=(r,a,n)=>(n=r!=null?Va(Xa(r)):{},vn(a||!r||!r.__esModule?Bt(n,"default",{value:r,enumerable:!0}):n,r)),Ja=r=>vn(Bt({},"__esModule",{value:!0}),r);var Di={};La(Di,{AddressStatus:()=>Rt,AllbridgeCoreSdk:()=>Rn,AmountFormat:()=>lt,AmountNotEnoughError:()=>Ge,ArgumentInvalidDecimalsError:()=>it,CCTPDoesNotSupportedError:()=>te,ChainSymbol:()=>ne,ChainType:()=>N,ErrorCode:()=>kn,ExtraGasMaxLimitExceededError:()=>at,FeePaymentMethod:()=>_e,InsufficientPoolLiquidityError:()=>he,InvalidAmountError:()=>nt,InvalidGasFeePaymentOptionError:()=>Ee,InvalidMessengerOptionError:()=>rn,InvalidTxError:()=>Ze,JupiterError:()=>E,Messenger:()=>Pe,MethodNotSupportedError:()=>J,NodeRpcUrlNotInitializedError:()=>st,SdkError:()=>T,SdkRootError:()=>D,SolanaAutoTxFee:()=>_t,TimeoutError:()=>Ye,TxTooLargeError:()=>rt,VerifyTxError:()=>Xe,mainnet:()=>tt,nodeRpcUrlsDefault:()=>Qa,nodeUrlsDefault:()=>Ka});module.exports=Ja(Di);var tt={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"https://quote-api.jup.ag/v6",wormholeMessengerProgramId:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",solanaLookUpTable:"2JcBAEVnAwVo4u8d61iqgHPrzZuugur7cVTjWubsVLHj",sorobanNetworkPassphrase:"Public Global Stellar Network ; September 2015",tronJsonRpc:"https://api.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{ETH:0,AVA:1,OPT:2,ARB:3,SOL:5,BAS:6,POL:7}},cachePoolInfoChainSec:20},Ka={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},Qa={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org"};var de=require("big.js");var D=class extends Error{constructor(a,n){super(n),this.errorCode=a}},T=class extends D{constructor(a){super("SdkError",a)}},nt=class extends D{constructor(a){super("InvalidAmountError",a)}},Ge=class extends D{constructor(a){super("AmountNotEnoughError",a)}},he=class extends D{constructor(a){super("InsufficientPoolLiquidityError",a)}},E=class extends D{constructor(a){super("JupiterError",a)}},Ee=class extends D{constructor(a){super("InvalidGasFeePaymentOptionError",a)}},rn=class extends D{constructor(a){super("InvalidMessengerOptionError",a)}},J=class extends D{constructor(a){super("MethodNotSupportedError",a)}},Xe=class extends D{constructor(a){super("VerifyTxError",a)}},Ze=class extends D{constructor(a){super("InvalidTxError",a)}},at=class extends D{constructor(a){super("ExtraGasMaxLimitExceededError",a)}},it=class extends D{constructor(a,n,i){super("ArgumentInvalidDecimalsError",`Argument '${a}' decimals '${n}' cannot be greater than '${i}'`)}},Ye=class extends D{constructor(a){super("TimeoutError",a)}},st=class extends D{constructor(a){super("NodeRpcUrlNotInitializedError",`For chain '${a}' Node RPC URL not initialized`)}},te=class extends D{constructor(a){super("CCTPDoesNotSupportedError",a)}},rt=class extends D{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},kn=(f=>(f.SDK_ERROR="SdkError",f.INVALID_AMOUNT_ERROR="InvalidAmountError",f.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",f.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",f.JUPITER_ERROR="JupiterError",f.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",f.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",f.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",f.VERIFY_TX_ERROR="VerifyTxError",f.INVALID_TX_ERROR="InvalidTxError",f.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",f.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",f.TIMEOUT_ERROR="TimeoutError",f.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",f.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",f.TX_TOO_LARGE="TxTooLargeError",f))(kn||{});var ne=(p=>(p.BSC="BSC",p.ETH="ETH",p.BAS="BAS",p.SOL="SOL",p.TRX="TRX",p.POL="POL",p.ARB="ARB",p.CEL="CEL",p.AVA="AVA",p.SRB="SRB",p.STLR="STLR",p.OPT="OPT",p))(ne||{}),N=(s=>(s.EVM="EVM",s.SOLANA="SOLANA",s.TRX="TRX",s.SRB="SRB",s))(N||{});var Ha={EVM:18,SOLANA:9,TRX:6,SRB:7},za={BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"}},I=(()=>{let r={...za};return{addChainsProperties(a){r={...r,...a}},getChainProperty(a){let n=r[a];if(!n)throw new T(`Cannot find chain properties for ${a}`);return n},getChainsProperties(){return r},getChainDecimalsByType(a){return Ha[a]}}})();var On=V(require("axios"));var Mn="3.18.0";var g=require("big.js"),It=V(require("bn.js"));function on(r,a){return(0,g.Big)(100).minus((0,g.Big)(100).times(a).div(r)).toNumber()}function De(r,a){return ke(r,a,3).round(0,g.Big.roundDown)}function z(r,a){return ke(r,3,a)}function ke(r,a,n){let i=(0,g.Big)(n).minus(a).toNumber();return(0,g.Big)(r).times(ot(i))}function ot(r){return(0,g.Big)(10).pow(r)}function k(r,a){return(0,g.Big)(r).times(ot(a))}function w(r,a){let n=(0,g.Big)(r);return n.eq(0)?(0,g.Big)(0):(0,g.Big)(n).div(ot(a))}function j(r){return w((0,g.Big)(r.tokenBalance).minus(r.vUsdBalance).toFixed(),3).div(2).toFixed()}function be(r,{feeShare:a,decimals:n},i){let s=(0,g.Big)(r);if(s.lte(0))return"0";let o=s.times(a),A=s.minus(o),c=De(A,n),m=(0,g.Big)(i.tokenBalance).plus(c),l=Te(m,i.aValue,i.dValue);return(0,g.Big)(i.vUsdBalance).minus(l).round(0,g.Big.roundDown).toFixed()}function At(r,{feeShare:a,decimals:n},i){let s=(0,g.Big)(r);if(s.lte(0))return(0,g.Big)(0).toFixed();let o=s.plus(i.vUsdBalance),A=Te(o,i.aValue,i.dValue),c=z((0,g.Big)(i.tokenBalance).minus(A),n),m=(0,g.Big)(c).times(a);return(0,g.Big)(c).minus(m).round(0,g.Big.roundDown).toFixed()}function xn(r,a){let n=(0,g.Big)(r);if(n.lte(0))return a;let i=n.plus(a.vUsdBalance),s=Te(i,a.aValue,a.dValue);return{aValue:a.aValue,dValue:a.dValue,tokenBalance:s.toFixed(0),vUsdBalance:i.toFixed(0)}}function Wn(r,{feeShare:a,decimals:n},i){if((0,g.Big)(r).lte(0))return(0,g.Big)(0);let s=(0,g.Big)(i.vUsdBalance).minus(r);if(s.lte(0))throw new he;let o=Te(s,i.aValue,i.dValue),A=(0,g.Big)(o).minus(i.tokenBalance),c=z(A,n),m=(0,g.Big)(a).div((0,g.Big)(1).minus(a)),l=(0,g.Big)(c).times(m).round(0,g.Big.roundUp);return(0,g.Big)(c).plus(l).round(0,g.Big.roundDown)}function Fn(r,{feeShare:a,decimals:n},i){if((0,g.Big)(r).lte(0))return(0,g.Big)(0);let s=(0,g.Big)(a).div((0,g.Big)(1).minus(a)),o=(0,g.Big)(r).times(s).round(0,g.Big.roundUp),A=(0,g.Big)(r).plus(o),c=De(A,n),m=(0,g.Big)(i.tokenBalance).minus(c);if(m.lte(0))throw new he;let l=Te(m,i.aValue,i.dValue);return(0,g.Big)(l).minus(i.vUsdBalance).round(0,g.Big.roundDown)}function Te(r,a,n){let i=(0,g.Big)(4).times(a).times((0,g.Big)(n).minus(r)).minus(n),s=(0,g.Big)(n).pow(3),o=i.pow(2),A=(0,g.Big)(r).times((0,g.Big)(r).times(o).plus((0,g.Big)(4).times(a).times(s))).sqrt().round(0,g.Big.roundDown),c=(0,g.Big)(8).times(a).times(r),m=i.times(r).plus(A).div(c).round(0,g.Big.roundDown);return m.eq(0)?(0,g.Big)(0):m.plus(1)}function Gn(r,a,n,i){let s=new It.default(r),o=new It.default(n),A=new It.default(a);return s.mul(o).shrn(i).sub(A).toString()}function Zn(r){return(0,g.Big)(r).gt(0)?`${Number((0,g.Big)(r).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function Dn(r,a,n){let i=(0,g.Big)(a).times(n),s=(0,g.Big)(a).plus(n),o=(0,g.Big)(8).times(r).times(i).times(s),A=i.times((0,g.Big)(16).times(r).minus(4)).div(3),c=o.times(o),m=A.times(A).times(A),l=c.plus(m),d=(0,g.Big)(l).sqrt(),u=(0,g.Big)(Math.cbrt(+o.plus(d).toFixed())),p=(0,g.Big)(Math.cbrt(+o.minus(d).toFixed()));return u.plus(p).toFixed()}var Rt=(A=>(A.OK="OK",A.INVALID="INVALID",A.FORBIDDEN="FORBIDDEN",A.UNINITIALIZED="UNINITIALIZED",A.CONTRACT_ADDRESS="CONTRACT_ADDRESS",A.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",A))(Rt||{});var Pe=(i=>(i[i.ALLBRIDGE=1]="ALLBRIDGE",i[i.WORMHOLE=2]="WORMHOLE",i[i.CCTP=3]="CCTP",i))(Pe||{});function Nn(r){return Object.entries(r).reduce((a,n)=>{let i=n[0],s=n[1],o=ti(i,s);return o&&(a[i]=o),a},{})}function _n(r){let a={};for(let[n,i]of Object.entries(r)){let s=n;for(let o of i.tokens){let A=Le({chainSymbol:s,poolAddress:o.poolAddress}),c=j(o.poolInfo);a[A]={...o.poolInfo,imbalance:c}}}return a}function ja(r,a){let{name:n,...i}=r,{poolInfo:s,...o}=a;return{...o,...i,chainName:n}}function qa(r){switch(r){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;default:return null}}function $a(r){return Object.entries(r).reduce((a,[n,i])=>(a[n]=ei(i),a),{})}function ei(r){return Object.entries(r).reduce((a,[n,i])=>{let s=qa(n);return s&&(a[s]=i),a},{})}function ti(r,a){let n=I.getChainsProperties()[r];if(!n)return null;let i={...n,allbridgeChainId:a.chainId,bridgeAddress:a.bridgeAddress,transferTime:$a(a.transferTime),txCostAmount:a.txCostAmount,confirmations:a.confirmations};return{...i,tokens:a.tokens.map(s=>ja(i,s))}}function Le(r){return r.chainSymbol+"_"+r.poolAddress}function Un(r){let a=[];for(let[n,i]of Object.entries(r)){let s=n;for(let o of i.tokens)a.push({chainSymbol:s,poolAddress:o.poolAddress})}return a}function Vn(r){let a={};for(let[n,i]of Object.entries(r)){let s=n;for(let[o,A]of Object.entries(i))A.imbalance=j(A),a[Le({chainSymbol:s,poolAddress:o})]=A}return a}var vt=class{constructor(a){this.api=On.default.create({baseURL:a.coreApiUrl,headers:{Accept:"application/json",...a.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+Mn},params:a.coreApiQueryParams})}async getTokenInfo(){let{data:a}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:Nn(a),poolInfoMap:_n(a)}}async getPendingInfo(){let{data:a}=await this.api.get("/pending-info");return a}async getGasBalance(a,n){let{data:i}=await this.api.get(`/check/${a}/${n}`);return i}async getTransferStatus(a,n){let{data:i}=await this.api.get(`/chain/${a}/${n}`);return i}async getReceiveTransactionCost(a){let{data:n}=await this.api.post("/receive-fee",a,{headers:{"Content-Type":"application/json"}});return{exchangeRate:n.exchangeRate,fee:n.fee,sourceNativeTokenPrice:n.sourceNativeTokenPrice}}async getPoolInfoMap(a){let n=a instanceof Array?a:[a],{data:i}=await this.api.post("/pool-info",{pools:n},{headers:{"Content-Type":"application/json"}});return Vn(i)}};var ni=(r,a)=>r!==null&&Object.prototype.hasOwnProperty.call(r,a),En="__cache__",An=function(r){return typeof r!="string"?En+JSON.stringify(r):En+r},cn=class{constructor(a={defaultTtl:60*1e3}){this.cache={},this.defaultTtl=a.defaultTtl||60*1e3}put(a,n,i){let s=(i?i.ttl:void 0)||this.defaultTtl,o=(i?i.callback:void 0)||function(){},A=An(a),c=this.cache[A];c&&clearTimeout(c.handle);let m=setTimeout(()=>this.remove(a),s);this.cache[A]={handle:m,data:n,callback:o}}get(a){let n=this.cache[An(a)];return n&&n.data}remove(a){let n=An(a),i=this.cache[n];i&&(clearTimeout(i.handle),delete this.cache[n],i.callback(a,i.data))}clear(){for(let a in this.cache)ni(this.cache,a)&&clearTimeout(this.cache[a].handle);this.cache={}}size(){return Object.keys(this.cache).length}},Be=cn;var mn=20*1e3,ai=55*1e3,kt=class{constructor(a){this.apiClient=a;this.tokenInfoCache=new Be({defaultTtl:ai}),this.receivedTransactionCache=new Be({defaultTtl:mn}),this.pendingInfoCache=new Be({defaultTtl:mn}),this.gasBalanceCache=new Be({defaultTtl:mn})}getTokenInfo(){let a="TOKEN_INFO_CACHE_KEY",n=this.tokenInfoCache.get(a);if(n)return n;let i=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(a,i),i}async getGasBalance(a,n){let i=`GAS_BALANCE_${a}_${n}`,s=this.gasBalanceCache.get(i);if(s)return s;let o=this.apiClient.getGasBalance(a,n);return this.gasBalanceCache.put(i,o),o}async getPendingInfo(){let a="PENDING_INFO_CACHE_KEY",n=this.pendingInfoCache.get(a);if(n)return n;let i=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(a,i),i}async getReceiveTransactionCost(a){let n=`RECEIVE_TX_COST_${a.sourceChainId}_${a.destinationChainId}_${a.messenger}`,i=this.receivedTransactionCache.get(n);if(i)return i;let s=await this.apiClient.getReceiveTransactionCost(a);return this.receivedTransactionCache.put(n,s),s}async getTransferStatus(a,n){return this.apiClient.getTransferStatus(a,n)}async getPoolInfoMap(a){return this.apiClient.getPoolInfoMap(a)}};var Mt=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(n=>n.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(a,n){return this.apiClient.getGasBalance(a,n)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(a,n){return await this.apiClient.getTransferStatus(a,n)}async getReceiveTransactionCost(a){return await this.apiClient.getReceiveTransactionCost(a)}async getPoolInfoMap(a){return await this.apiClient.getPoolInfoMap(a)}};var xt=class{constructor(a,n){this.client=a;this.isStaging=n.coreApiQueryParams?.staging==="true"}async getChainDetailsMap(a){let n=await this.client.getChainDetailsMap(),i={};for(let s in n){let o=n[s];o&&(i[s]={...o,tokens:Xn(o.tokens,a,this.isStaging)})}return i}async tokens(a){return Xn(await this.client.tokens(),a,this.isStaging)}async getPendingInfo(){return this.client.getPendingInfo()}async getGasBalance(a,n){return this.client.getGasBalance(a,n)}async getTransferStatus(a,n){return await this.client.getTransferStatus(a,n)}async getReceiveTransactionCost(a){return await this.client.getReceiveTransactionCost(a)}cachePut(a,n){return this.client.cachePut(a,n)}getPoolInfoByKey(a){return this.client.getPoolInfoByKey(a)}refreshPoolInfo(a){return this.client.refreshPoolInfo(a)}};function Xn(r,a,n){return r.filter(i=>n?!0:i.flags[a]).map(ii)}function ii(r){let{flags:a,...n}=r;return n}var si=55*1e3,Wt=class{constructor(a){this.client=a;this.poolInfoCache=new ln}async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(a,n){return this.client.getTransferStatus(a,n)}getReceiveTransactionCost(a){return this.client.getReceiveTransactionCost(a)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(a,n){return this.client.getGasBalance(a,n)}async getPoolInfoByKey(a){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let n=this.poolInfoCache.get(a);if(n)return n;{let i=await this.client.getPoolInfoMap(a);this.poolInfoCache.putAll(i);let s=i[Le(a)];if(s)return s;throw new T("Cannot find pool info for "+a.poolAddress+" on chain "+a.chainSymbol)}}async refreshPoolInfo(a){let n;if(a)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),n=await this.client.getPoolInfoMap(a);else{let i=await this.client.getChainDetailsMapAndPoolInfoMap();n=await this.client.getPoolInfoMap(Un(i.chainDetailsMap))}this.poolInfoCache.putAll(n)}cachePut(a,n){this.poolInfoCache.put(Le(a),n)}},ln=class{constructor(){this.cache=new Be({defaultTtl:si})}putAll(a){for(let[n,i]of Object.entries(a))this.cache.put(n,i)}putAllIfNotExists(a){for(let[n,i]of Object.entries(a))this.cache.get(n)||this.cache.put(n,i)}put(a,n){this.cache.put(a,n)}get(a){let n=Le(a);return this.cache.get(n)}};var Pa=V(require("tronweb")),Sa=V(require("web3"));var un=require("big.js");async function O(r,a){return await r.getPoolInfoByKey({chainSymbol:a.chainSymbol,poolAddress:a.poolAddress})}function W(r){if((0,un.Big)(r).lte(0))throw new nt("Amount must be greater than zero")}function F(r,a,n){let i=(0,un.Big)(a).toFixed(),[s,o]=i.split(".");if(o&&o.length>n)throw new it(r,o.length,n)}async function Ft(r,a,n){return await Promise.race([r,new Promise((i,s)=>{setTimeout(()=>s(new Ye(a)),n)})])}async function dn(r,a,n,i){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 Ft(r(),a,i)}catch{if(++s>=n)throw new Ye(a)}}async function Yn(r,a,n,i=1.5,s=!1){let o=[],A=0,c=await r();if(o.push(c),!a(c))return o;let m=new Date(Date.now()+n*1e3).valueOf(),l=1e3,d=l;for(;Date.now()<m;){let u=o[o.length-1];if(u===void 0||!a(u))break;A++,s&&console.info(`Waiting ${l}ms before trying again (bringing the total wait time to ${d}ms so far, of total ${n*1e3}ms)`),await new Promise(y=>setTimeout(y,l)),l=l*i,new Date(Date.now()+l).valueOf()>m&&(l=m-Date.now(),s&&console.info(`was gonna wait too long; new waitTime: ${l}ms`)),d=l+d;let p=await r(u);o.push(p),s&&a(p)&&console.info(`${A}. Called ${r.name}; ${o.length} prev attempts. Most recent: ${JSON.stringify(o[o.length-1],null,2)}`)}return o}var Zt=V(require("@project-serum/anchor")),Pn=require("@solana/web3.js"),oa=require("big.js");var Ln=[{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 Jn=[{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"}];var Y=V(require("@project-serum/anchor")),L=require("@solana/web3.js");async function re(r,a){return Y.utils.token.associatedAddress({mint:a,owner:r})}async function Me(r){let[a]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("config")],r);return a}async function Kn(r,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("lock"),Uint8Array.from(r)],a);return n}async function ct(r,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([r])],a);return n}async function Je(r){let a=await Me(r),[n]=await L.PublicKey.findProgramAddress([a.toBuffer()],r);return n}async function Qn(r,a){let[n]=await L.PublicKey.findProgramAddress([r.toBuffer()],a);return n}async function Ke(r,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("token"),r.toBytes()],a);return n}async function Hn(r,a,n){let[i]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("other_bridge_token"),Buffer.from([r]),a],n);return i}async function pn(r,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([r])],a);return n}async function gn(r,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([r])],a);return n}async function zn(r,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("sent_message"),r],a);return n}async function fn(r,a,n){let[i]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("user_deposit"),a.toBytes(),r.toBytes()],n);return i}async function jn(r,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("cctp_bridge"),r.toBytes()],a);return n}async function qn(r,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("token"),r.toBytes()],a);return n}function $n(r,a){let[n]=L.PublicKey.findProgramAddressSync([Y.utils.bytes.utf8.encode("lock"),a.toBuffer()],r);return n}function ea(r,a,n,i){let s=Ne("message_transmitter",n),o=Ne("token_messenger",i),A=Ne("__event_authority",i),c=Ne("token_minter",i),m=Ne("local_token",i,[a]),l=Ne("remote_token_messenger",i,[r.toString()]),d=Ne("sender_authority",i);return{messageTransmitterAccount:s,tokenMessenger:o,tokenMessengerEventAuthority:A,tokenMinter:c,localToken:m,remoteTokenMessengerKey:l,authorityPda:d}}function Ne(r,a,n=[]){let i=[Buffer.from(Y.utils.bytes.utf8.encode(r))];for(let o of n)typeof o=="string"?i.push(Buffer.from(Y.utils.bytes.utf8.encode(o))):Array.isArray(o)?i.push(Buffer.from(o)):Buffer.isBuffer(o)?i.push(o):i.push(o.toBuffer());return L.PublicKey.findProgramAddressSync(i,a)[0]}var ta=require("@project-serum/anchor"),Gt=require("@solana/web3.js");function xe(r,a){let n=new Gt.Connection(r,"confirmed"),i=new Gt.PublicKey(a);return new ta.AnchorProvider(n,{publicKey:i},{preflightCommitment:"confirmed",commitment:"confirmed"})}var oe=class{};var na=require("@solana/web3.js"),aa=require("@stellar/stellar-sdk"),Se=require("big.js"),yn=V(require("randombytes")),ia=V(require("tronweb"));function Ie(r,a,n){let i;switch(a){case"EVM":{i=Ai(r);break}case"SOLANA":{i=new na.PublicKey(r).toBuffer();break}case"TRX":{i=ci(r);break}case"SRB":{i=new aa.Address(r).toBuffer();break}}switch(n){case"EVM":return"0x"+i.toString("hex");case"SOLANA":return Array.from(i);case"TRX":return i.toJSON().data;case"SRB":return i.toJSON().data}}function sa(r){return Buffer.from(r.replace(/^0x/i,""),"hex")}function Ai(r){let n=sa(r);return Buffer.concat([Buffer.alloc(32-n.length,0),n],32)}function ci(r){let a=mt(r),n=sa(a);return mi(n,32)}function mt(r){return Buffer.from(ia.utils.crypto.decodeBase58Address(r)).toString("hex").replace(/^41/,"0x")}function mi(r,a){if(r.length>=a)return r;let n=Buffer.alloc(a,0);return r.copy(n,a-r.length),n}function Qe(){return(0,yn.default)(32)}function hn(){let r=(0,yn.default)(32).readBigInt64BE();return r<0?r*-1n:r}function We(r,a){let n={},i=a.sourceToken;return n.amount=k(a.amount,i.decimals).toFixed(),n.contractAddress=i.bridgeAddress,n.fromAccountAddress=a.fromAccountAddress,n.fromTokenAddress=Ie(i.tokenAddress,r,r),n.toAccountAddress=a.toAccountAddress,n.toTokenAddress=Ie(a.destinationToken.tokenAddress,r,r),n.minimumReceiveAmount=a.minimumReceiveAmount?k(a.minimumReceiveAmount,a.destinationToken.decimals).toFixed():"0",n}async function Re(r,a,n){let i={};i.fromChainId=a.sourceToken.allbridgeChainId,i.fromChainSymbol=a.sourceToken.chainSymbol;let s=I.getChainProperty(a.destinationToken.chainSymbol).chainType;i.fromTokenAddress=a.sourceToken.tokenAddress,i.toChainId=a.destinationToken.allbridgeChainId,i.toTokenAddress=a.destinationToken.tokenAddress,a.gasFeePaymentMethod==="stablecoin"?i.gasFeePaymentMethod="stablecoin":i.gasFeePaymentMethod="native";let o=a.sourceToken;if(a.messenger===3){if(!o.cctpAddress||!a.destinationToken.cctpAddress)throw new te("Such route does not support CCTP protocol");i.contractAddress=o.cctpAddress}else i.contractAddress=o.bridgeAddress;i.messenger=a.messenger,i.fromAccountAddress=a.fromAccountAddress,i.amount=k(a.amount,o.decimals).toFixed();let{fee:A,feeFormat:c}=a;if(!A){let u=(await bn(i.fromChainId,a.sourceToken.chainType,i.toChainId,o.decimals,i.messenger,n))[i.gasFeePaymentMethod];if(!u)throw new Ee;A=u.int,c="int"}if(c=="float")switch(i.gasFeePaymentMethod){case"native":i.fee=k(A,I.getChainDecimalsByType(o.chainType)).toFixed(0);break;case"stablecoin":i.fee=k(A,o.decimals).toFixed(0);break}else i.fee=A;let{extraGas:m,extraGasFormat:l}=a;if(m&&+m>0){if(l=="float")switch(i.gasFeePaymentMethod){case"native":i.extraGas=k(m,I.getChainDecimalsByType(o.chainType)).toFixed(0);break;case"stablecoin":i.extraGas=k(m,o.decimals).toFixed(0);break}else i.extraGas=m;await ui(i.extraGas,i.gasFeePaymentMethod,o,a.destinationToken,n)}return i.fromTokenAddress=Ie(i.fromTokenAddress,r,r),i.toAccountAddress=Ie(a.toAccountAddress,s,r),i.toTokenAddress=Ie(i.toTokenAddress,s,r),i.gasFeePaymentMethod=="stablecoin"&&li(i.amount,o.decimals,i.fee,i.extraGas),i}function li(r,a,n,i){let s=(0,Se.Big)(r).minus(n).minus(i??0);if(s.lte(0))throw new Ge(`Amount not enough to pay fee, ${w((0,Se.Big)(s).minus(1).neg(),a).toFixed()} stables is missing`)}async function bn(r,a,n,i,s,o){let A=await o.getReceiveTransactionCost({sourceChainId:r,destinationChainId:n,messenger:s}),c={native:{int:A.fee,float:w(A.fee,I.getChainDecimalsByType(a)).toFixed()}};if(A.sourceNativeTokenPrice){let m=ke(new Se.Big(A.fee).mul(A.sourceNativeTokenPrice),I.getChainDecimalsByType(a),i).toFixed(0,Se.Big.roundUp);c.stablecoin={int:m,float:w(m,i).toFixed()}}return c}async function ui(r,a,n,i,s){let A=(await Tn(n,i,s)).extraGasMax[a];if(!A)throw new Ee(`Impossible to pay extra gas by '${a}' payment method`);let c=A.int;if((0,Se.Big)(r).gt(c))throw new at(`Extra gas ${r} in int format, exceeded limit ${c} for '${a}' payment method`)}async function Tn(r,a,n){let i={},s=await n.getReceiveTransactionCost({sourceChainId:r.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:1}),o=a.txCostAmount.maxAmount,A=w(o,I.getChainDecimalsByType(a.chainType)).toFixed(),c=(0,Se.Big)(A).div(s.exchangeRate).toFixed(I.getChainDecimalsByType(r.chainType),Se.Big.roundDown),m=k(c,I.getChainDecimalsByType(r.chainType)).toFixed(0);if(i.native={int:m,float:c},s.sourceNativeTokenPrice){let l=(0,Se.Big)(c).mul(s.sourceNativeTokenPrice).toFixed(r.decimals,Se.Big.roundDown);i.stablecoin={int:k(l,r.decimals).toFixed(0),float:l}}return{extraGasMax:i,destinationChain:{gasAmountMax:{int:o,float:A},swap:{int:a.txCostAmount.swap,float:w(a.txCostAmount.swap,I.getChainDecimalsByType(a.chainType)).toFixed()},transfer:{int:a.txCostAmount.transfer,float:w(a.txCostAmount.transfer,I.getChainDecimalsByType(a.chainType)).toFixed()}},exchangeRate:s.exchangeRate,sourceNativeTokenPrice:s.sourceNativeTokenPrice}}function ra(r){return r.sourceToken.chainSymbol!==r.destinationToken.chainSymbol}var ut=class extends oe{constructor(n,i,s){super();this.web3=n;this.api=i;this.nodeRpcUrlsConfig=s;this.chainType="EVM"}async send(n){let i=await this.buildRawTransactionSend(n);return this.sendRawTransaction(i)}async buildRawTransactionSwap(n){let i=We(this.chainType,n);return await this.buildRawTransactionSwapFromParams(i)}async buildRawTransactionSwapFromParams(n){let{amount:i,contractAddress:s,fromAccountAddress:o,fromTokenAddress:A,toAccountAddress:c,toTokenAddress:m,minimumReceiveAmount:l}=n,u=this.getBridgeContract(s).methods.swap(i,A,m,c,l);return Promise.resolve({from:o,to:s,data:u.encodeABI()})}async buildRawTransactionSend(n){let i=await Re(this.chainType,n,this.api),{amount:s,contractAddress:o,fromAccountAddress:A,fromTokenAddress:c,toChainId:m,toAccountAddress:l,toTokenAddress:d,messenger:u,fee:p,gasFeePaymentMethod:y,extraGas:h}=i,b="0x"+Qe().toString("hex"),f,P,C=p;if(h&&(C=(0,oa.Big)(C).plus(h).toFixed()),u===3){let S=await this.buildRawTransactionCctpSend(n,i,C);f=S.sendMethod,P=S.value}else{let S=this.getBridgeContract(o);y==="stablecoin"?(f=S.methods.swapAndBridge(c,s,l,m,d,b,u,C),P="0"):(f=S.methods.swapAndBridge(c,s,l,m,d,b,u,0),P=C)}return Promise.resolve({from:A,to:o,value:P,data:f.encodeABI()})}async buildRawTransactionCctpSend(n,i,s){let{amount:o,contractAddress:A,toChainId:c,toAccountAddress:m,gasFeePaymentMethod:l}=i,d=this.getContract(Jn,A),u,p;if(n.destinationToken.chainType==="SOLANA"){let y,h=new Pn.PublicKey(n.toAccountAddress),b=new Pn.PublicKey(n.destinationToken.tokenAddress),f=await re(h,b),P=xe(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),n.toAccountAddress);Zt.setProvider(P);let C=await Zt.Spl.token(P).account.token.fetchNullable(f);if(C?.authority.equals(h))y=Ie(f.toBase58(),"SOLANA",this.chainType);else{let S=await P.connection.getTokenAccountsByOwner(h,{mint:b});if(S.value.length===0&&!C)y=Ie(f.toBase58(),"SOLANA",this.chainType);else if(S.value.length>0){let _=S.value[0];if(!_?.pubkey)throw new T("First token account or its public key is undefined");y=Ie(_.pubkey.toBase58(),"SOLANA",this.chainType)}else throw new T("Associated account has wrong owner")}l==="stablecoin"?(u=d.methods.bridgeWithWalletAddress(o,y,m,c,s),p="0"):(u=d.methods.bridgeWithWalletAddress(o,y,m,c,0),p=s)}else l==="stablecoin"?(u=d.methods.bridge(o,m,c,s),p="0"):(u=d.methods.bridge(o,m,c,0),p=s);return{sendMethod:u,value:p}}async sendRawTransaction(n){let i=await this.web3.eth.estimateGas(n),s={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:o}=await this.web3.eth.sendTransaction({...n,gas:i,...s});return{txId:o}}getContract(n,i){return new this.web3.eth.Contract(n,i)}getBridgeContract(n){return this.getContract(Ln,n)}};var Dt=class{constructor(a,n,i,s){this.api=a;this.nodeRpcUrlsConfig=n;this.params=i;this.tokenService=s}async approve(a,n){let i,s;n?(i=a,s=n):s=a;let o=dt(s.token,s.messenger);return this.tokenService.buildRawTransactionApprove({...s,spender:o},i)}async send(a,n){return W(a.amount),F("amount",a.amount,a.sourceToken.decimals),ra(a)?Nt(a.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionSend(a):Nt(a.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionSwap(a)}};var G=require("@project-serum/anchor"),v=require("@solana/web3.js"),Ae=require("big.js");var pt={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 Aa={version:"0.1.0",name:"cctp_bridge",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"bridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"cctpMessenger",isMut:!1,isSigner:!1},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"messageTransmitterAccount",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"remoteTokenMessengerKey",isMut:!1,isSigner:!1},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"setAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setCctpTokenMessengerMinter",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]}],accounts:[{name:"cctpBridge",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"admin",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"adminFeeShareBp",type:"u64"},{name:"adminFeeAmount",type:"u64"}]}},{name:"chainBridge",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"amount",type:"u64"},{name:"adminFee",type:"u64"},{name:"relayerFee",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"slot",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"amount",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"gasOracleProgramId",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"}]}}],errors:[{code:6e3,name:"ValueTooHigh",msg:"Value is too high"}]};var ca=require("@project-serum/anchor"),ma=V(require("big.js")),gt=V(require("web3"));async function He(r,a){return await ca.Spl.token(a).account.token.fetch(r)}async function la(r,a,n){let i=await a.account.pool.fetch(n),s=i.decimals,o=(0,ma.default)(i.feeShareBp.toString()).div(1e4).toFixed(),A={aValue:i.a.toString(),dValue:i.d.toString(),totalLpAmount:i.totalLpAmount.toString(),tokenBalance:i.tokenBalance.toString(),vUsdBalance:i.vUsdBalance.toString(),accRewardPerShareP:i.accRewardPerShareP.toString()};return be(r,{decimals:s,feeShare:o},A)}function ua(r){let a=r.amount,n="0x"+r.recipient.toString("hex"),i=r.sourceChainId,s=r.destinationChainId,o="0x"+r.receiveToken.toString("hex"),A="0x"+r.nonce.toString("hex"),c=1,m="0x"+r.chainBridge.toString("hex"),l=gt.default.utils.encodePacked({t:"uint256",v:a},{t:"bytes32",v:n},{t:"uint256",v:i},{t:"bytes32",v:o},{t:"uint256",v:A},{t:"uint8",v:c});if(!l)throw new T("message cannot be undefined");let d=gt.default.utils.keccak256(Buffer.from(l.replace("0x",""),"hex")),u=Buffer.from(d.replace("0x",""),"hex");u[0]=i,u[1]=s;let p=gt.default.utils.encodePacked({t:"bytes32",v:"0x"+u.toString("hex")},{t:"bytes32",v:m});if(!p)throw new Ze("messageWithSigner cannot be undefined");let y=gt.default.utils.keccak256(Buffer.from(p.replace("0x",""),"hex")),h=Buffer.from(y.replace("0x",""),"hex");return h[0]=u[0],h[1]=u[1],h}var q=require("@solana/web3.js"),da=require("big.js");var Sn=require("@solana/web3.js");async function Ue(r,a){return await Promise.all(r.message.addressTableLookups.map(async n=>new Sn.AddressLookupTableAccount({key:n.accountKey,state:Sn.AddressLookupTableAccount.deserialize(await a.getAccountInfo(n.accountKey).then(i=>{if(!i)throw new T("Cannot get AccountInfo");return i.data}))})))}var _t="AUTO";async function ze(r,a,n){let i=new q.Connection(n,"confirmed"),s=(await i.simulateTransaction(r)).value.unitsConsumed;await ga(r.instructions,s,a,i)}async function pa(r,a,n){let i=new q.Connection(n,"confirmed"),s=await Ue(r,i),o=q.TransactionMessage.decompile(r.message,{addressLookupTableAccounts:s});if(r.serialize().length>1232)throw new rt;await ga(o.instructions,769230,a,i),r.message=o.compileToV0Message(s)}async function ga(r,a,n,i){if(a>0){let s=di(a,r);if(n?.solana){let o=n.solana;if(o===_t)await wn(r,i);else if("pricePerUnitInMicroLamports"in o)await wn(r,i,o.pricePerUnitInMicroLamports);else{let A=(0,da.Big)(o.extraFeeInLamports).div(s).mul(ot(6)).toFixed(0);await wn(r,i,A)}}}}function di(r,a){let n=a.findIndex(o=>o.programId.equals(q.ComputeBudgetProgram.programId)&&q.ComputeBudgetInstruction.decodeInstructionType(o)==="SetComputeUnitLimit"),i=Number((r*1.3).toFixed(0)),s=q.ComputeBudgetProgram.setComputeUnitLimit({units:i});return n>=0?a[n]=s:a.push(s),i.toString()}async function wn(r,a,n){let i=r.findIndex(A=>A.programId.equals(q.ComputeBudgetProgram.programId)&&q.ComputeBudgetInstruction.decodeInstructionType(A)==="SetComputeUnitPrice"),s=BigInt(n||await pi(a)),o=q.ComputeBudgetProgram.setComputeUnitPrice({microLamports:s});return i>=0?r[i]=o:r.push(o),s.toString()}async function pi(r){let a=await r.getRecentPrioritizationFees(),n=0;for(let i of a)n+=i.prioritizationFee;return(n/a.length).toFixed(0)}var fa=require("@solana/spl-token"),Ve=require("@solana/web3.js"),je=V(require("axios"));var Ut=class{constructor(a,n){this.connection=new Ve.Connection(a),this.jupiterUrl=n.replace(/\/$/,"")}async getJupiterSwapTx(a,n,i,s){let o;try{let u=s?"ExactOut":"ExactIn";o=await je.default.get(`${this.jupiterUrl}/quote?inputMint=${n}
1
+ "use strict";var Va=Object.create;var Bt=Object.defineProperty;var Oa=Object.getOwnPropertyDescriptor;var Ea=Object.getOwnPropertyNames;var Xa=Object.getPrototypeOf,Ya=Object.prototype.hasOwnProperty;var La=(r,a)=>{for(var n in a)Bt(r,n,{get:a[n],enumerable:!0})},vn=(r,a,n,i)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of Ea(a))!Ya.call(r,s)&&s!==n&&Bt(r,s,{get:()=>a[s],enumerable:!(i=Oa(a,s))||i.enumerable});return r};var V=(r,a,n)=>(n=r!=null?Va(Xa(r)):{},vn(a||!r||!r.__esModule?Bt(n,"default",{value:r,enumerable:!0}):n,r)),Ja=r=>vn(Bt({},"__esModule",{value:!0}),r);var Di={};La(Di,{AddressStatus:()=>Rt,AllbridgeCoreSdk:()=>Rn,AmountFormat:()=>lt,AmountNotEnoughError:()=>Ge,ArgumentInvalidDecimalsError:()=>it,CCTPDoesNotSupportedError:()=>te,ChainSymbol:()=>ne,ChainType:()=>N,ErrorCode:()=>kn,ExtraGasMaxLimitExceededError:()=>at,FeePaymentMethod:()=>_e,InsufficientPoolLiquidityError:()=>he,InvalidAmountError:()=>nt,InvalidGasFeePaymentOptionError:()=>Ee,InvalidMessengerOptionError:()=>rn,InvalidTxError:()=>Ze,JupiterError:()=>E,Messenger:()=>Pe,MethodNotSupportedError:()=>J,NodeRpcUrlNotInitializedError:()=>st,SdkError:()=>T,SdkRootError:()=>D,SolanaAutoTxFee:()=>_t,TimeoutError:()=>Ye,TxTooLargeError:()=>rt,VerifyTxError:()=>Xe,mainnet:()=>tt,nodeRpcUrlsDefault:()=>Qa,nodeUrlsDefault:()=>Ka});module.exports=Ja(Di);var tt={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"https://quote-api.jup.ag/v6",wormholeMessengerProgramId:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",solanaLookUpTable:"2JcBAEVnAwVo4u8d61iqgHPrzZuugur7cVTjWubsVLHj",sorobanNetworkPassphrase:"Public Global Stellar Network ; September 2015",tronJsonRpc:"https://api.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{ETH:0,AVA:1,OPT:2,ARB:3,SOL:5,BAS:6,POL:7}},cachePoolInfoChainSec:20},Ka={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},Qa={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org"};var de=require("big.js");var D=class extends Error{constructor(a,n){super(n),this.errorCode=a}},T=class extends D{constructor(a){super("SdkError",a)}},nt=class extends D{constructor(a){super("InvalidAmountError",a)}},Ge=class extends D{constructor(a){super("AmountNotEnoughError",a)}},he=class extends D{constructor(a){super("InsufficientPoolLiquidityError",a)}},E=class extends D{constructor(a){super("JupiterError",a)}},Ee=class extends D{constructor(a){super("InvalidGasFeePaymentOptionError",a)}},rn=class extends D{constructor(a){super("InvalidMessengerOptionError",a)}},J=class extends D{constructor(a){super("MethodNotSupportedError",a)}},Xe=class extends D{constructor(a){super("VerifyTxError",a)}},Ze=class extends D{constructor(a){super("InvalidTxError",a)}},at=class extends D{constructor(a){super("ExtraGasMaxLimitExceededError",a)}},it=class extends D{constructor(a,n,i){super("ArgumentInvalidDecimalsError",`Argument '${a}' decimals '${n}' cannot be greater than '${i}'`)}},Ye=class extends D{constructor(a){super("TimeoutError",a)}},st=class extends D{constructor(a){super("NodeRpcUrlNotInitializedError",`For chain '${a}' Node RPC URL not initialized`)}},te=class extends D{constructor(a){super("CCTPDoesNotSupportedError",a)}},rt=class extends D{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},kn=(f=>(f.SDK_ERROR="SdkError",f.INVALID_AMOUNT_ERROR="InvalidAmountError",f.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",f.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",f.JUPITER_ERROR="JupiterError",f.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",f.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",f.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",f.VERIFY_TX_ERROR="VerifyTxError",f.INVALID_TX_ERROR="InvalidTxError",f.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",f.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",f.TIMEOUT_ERROR="TimeoutError",f.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",f.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",f.TX_TOO_LARGE="TxTooLargeError",f))(kn||{});var ne=(p=>(p.BSC="BSC",p.ETH="ETH",p.BAS="BAS",p.SOL="SOL",p.TRX="TRX",p.POL="POL",p.ARB="ARB",p.CEL="CEL",p.AVA="AVA",p.SRB="SRB",p.STLR="STLR",p.OPT="OPT",p))(ne||{}),N=(s=>(s.EVM="EVM",s.SOLANA="SOLANA",s.TRX="TRX",s.SRB="SRB",s))(N||{});var Ha={EVM:18,SOLANA:9,TRX:6,SRB:7},za={BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"}},I=(()=>{let r={...za};return{addChainsProperties(a){r={...r,...a}},getChainProperty(a){let n=r[a];if(!n)throw new T(`Cannot find chain properties for ${a}`);return n},getChainsProperties(){return r},getChainDecimalsByType(a){return Ha[a]}}})();var On=V(require("axios"));var Mn="3.19.0";var g=require("big.js"),It=V(require("bn.js"));function on(r,a){return(0,g.Big)(100).minus((0,g.Big)(100).times(a).div(r)).toNumber()}function De(r,a){return ke(r,a,3).round(0,g.Big.roundDown)}function z(r,a){return ke(r,3,a)}function ke(r,a,n){let i=(0,g.Big)(n).minus(a).toNumber();return(0,g.Big)(r).times(ot(i))}function ot(r){return(0,g.Big)(10).pow(r)}function k(r,a){return(0,g.Big)(r).times(ot(a))}function w(r,a){let n=(0,g.Big)(r);return n.eq(0)?(0,g.Big)(0):(0,g.Big)(n).div(ot(a))}function j(r){return w((0,g.Big)(r.tokenBalance).minus(r.vUsdBalance).toFixed(),3).div(2).toFixed()}function be(r,{feeShare:a,decimals:n},i){let s=(0,g.Big)(r);if(s.lte(0))return"0";let o=s.times(a),A=s.minus(o),c=De(A,n),m=(0,g.Big)(i.tokenBalance).plus(c),l=Te(m,i.aValue,i.dValue);return(0,g.Big)(i.vUsdBalance).minus(l).round(0,g.Big.roundDown).toFixed()}function At(r,{feeShare:a,decimals:n},i){let s=(0,g.Big)(r);if(s.lte(0))return(0,g.Big)(0).toFixed();let o=s.plus(i.vUsdBalance),A=Te(o,i.aValue,i.dValue),c=z((0,g.Big)(i.tokenBalance).minus(A),n),m=(0,g.Big)(c).times(a);return(0,g.Big)(c).minus(m).round(0,g.Big.roundDown).toFixed()}function xn(r,a){let n=(0,g.Big)(r);if(n.lte(0))return a;let i=n.plus(a.vUsdBalance),s=Te(i,a.aValue,a.dValue);return{aValue:a.aValue,dValue:a.dValue,tokenBalance:s.toFixed(0),vUsdBalance:i.toFixed(0)}}function Wn(r,{feeShare:a,decimals:n},i){if((0,g.Big)(r).lte(0))return(0,g.Big)(0);let s=(0,g.Big)(i.vUsdBalance).minus(r);if(s.lte(0))throw new he;let o=Te(s,i.aValue,i.dValue),A=(0,g.Big)(o).minus(i.tokenBalance),c=z(A,n),m=(0,g.Big)(a).div((0,g.Big)(1).minus(a)),l=(0,g.Big)(c).times(m).round(0,g.Big.roundUp);return(0,g.Big)(c).plus(l).round(0,g.Big.roundDown)}function Fn(r,{feeShare:a,decimals:n},i){if((0,g.Big)(r).lte(0))return(0,g.Big)(0);let s=(0,g.Big)(a).div((0,g.Big)(1).minus(a)),o=(0,g.Big)(r).times(s).round(0,g.Big.roundUp),A=(0,g.Big)(r).plus(o),c=De(A,n),m=(0,g.Big)(i.tokenBalance).minus(c);if(m.lte(0))throw new he;let l=Te(m,i.aValue,i.dValue);return(0,g.Big)(l).minus(i.vUsdBalance).round(0,g.Big.roundDown)}function Te(r,a,n){let i=(0,g.Big)(4).times(a).times((0,g.Big)(n).minus(r)).minus(n),s=(0,g.Big)(n).pow(3),o=i.pow(2),A=(0,g.Big)(r).times((0,g.Big)(r).times(o).plus((0,g.Big)(4).times(a).times(s))).sqrt().round(0,g.Big.roundDown),c=(0,g.Big)(8).times(a).times(r),m=i.times(r).plus(A).div(c).round(0,g.Big.roundDown);return m.eq(0)?(0,g.Big)(0):m.plus(1)}function Gn(r,a,n,i){let s=new It.default(r),o=new It.default(n),A=new It.default(a);return s.mul(o).shrn(i).sub(A).toString()}function Zn(r){return(0,g.Big)(r).gt(0)?`${Number((0,g.Big)(r).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function Dn(r,a,n){let i=(0,g.Big)(a).times(n),s=(0,g.Big)(a).plus(n),o=(0,g.Big)(8).times(r).times(i).times(s),A=i.times((0,g.Big)(16).times(r).minus(4)).div(3),c=o.times(o),m=A.times(A).times(A),l=c.plus(m),d=(0,g.Big)(l).sqrt(),u=(0,g.Big)(Math.cbrt(+o.plus(d).toFixed())),p=(0,g.Big)(Math.cbrt(+o.minus(d).toFixed()));return u.plus(p).toFixed()}var Rt=(A=>(A.OK="OK",A.INVALID="INVALID",A.FORBIDDEN="FORBIDDEN",A.UNINITIALIZED="UNINITIALIZED",A.CONTRACT_ADDRESS="CONTRACT_ADDRESS",A.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",A))(Rt||{});var Pe=(i=>(i[i.ALLBRIDGE=1]="ALLBRIDGE",i[i.WORMHOLE=2]="WORMHOLE",i[i.CCTP=3]="CCTP",i))(Pe||{});function Nn(r){return Object.entries(r).reduce((a,n)=>{let i=n[0],s=n[1],o=ti(i,s);return o&&(a[i]=o),a},{})}function _n(r){let a={};for(let[n,i]of Object.entries(r)){let s=n;for(let o of i.tokens){let A=Le({chainSymbol:s,poolAddress:o.poolAddress}),c=j(o.poolInfo);a[A]={...o.poolInfo,imbalance:c}}}return a}function ja(r,a){let{name:n,...i}=r,{poolInfo:s,...o}=a;return{...o,...i,chainName:n}}function qa(r){switch(r){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;default:return null}}function $a(r){return Object.entries(r).reduce((a,[n,i])=>(a[n]=ei(i),a),{})}function ei(r){return Object.entries(r).reduce((a,[n,i])=>{let s=qa(n);return s&&(a[s]=i),a},{})}function ti(r,a){let n=I.getChainsProperties()[r];if(!n)return null;let i={...n,allbridgeChainId:a.chainId,bridgeAddress:a.bridgeAddress,transferTime:$a(a.transferTime),txCostAmount:a.txCostAmount,confirmations:a.confirmations};return{...i,tokens:a.tokens.map(s=>ja(i,s))}}function Le(r){return r.chainSymbol+"_"+r.poolAddress}function Un(r){let a=[];for(let[n,i]of Object.entries(r)){let s=n;for(let o of i.tokens)a.push({chainSymbol:s,poolAddress:o.poolAddress})}return a}function Vn(r){let a={};for(let[n,i]of Object.entries(r)){let s=n;for(let[o,A]of Object.entries(i))A.imbalance=j(A),a[Le({chainSymbol:s,poolAddress:o})]=A}return a}var vt=class{constructor(a){this.api=On.default.create({baseURL:a.coreApiUrl,headers:{Accept:"application/json",...a.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+Mn},params:a.coreApiQueryParams})}async getTokenInfo(){let{data:a}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:Nn(a),poolInfoMap:_n(a)}}async getPendingInfo(){let{data:a}=await this.api.get("/pending-info");return a}async getGasBalance(a,n){let{data:i}=await this.api.get(`/check/${a}/${n}`);return i}async getTransferStatus(a,n){let{data:i}=await this.api.get(`/chain/${a}/${n}`);return i}async getReceiveTransactionCost(a){let{data:n}=await this.api.post("/receive-fee",a,{headers:{"Content-Type":"application/json"}});return{exchangeRate:n.exchangeRate,fee:n.fee,sourceNativeTokenPrice:n.sourceNativeTokenPrice}}async getPoolInfoMap(a){let n=a instanceof Array?a:[a],{data:i}=await this.api.post("/pool-info",{pools:n},{headers:{"Content-Type":"application/json"}});return Vn(i)}};var ni=(r,a)=>r!==null&&Object.prototype.hasOwnProperty.call(r,a),En="__cache__",An=function(r){return typeof r!="string"?En+JSON.stringify(r):En+r},cn=class{constructor(a={defaultTtl:60*1e3}){this.cache={},this.defaultTtl=a.defaultTtl||60*1e3}put(a,n,i){let s=(i?i.ttl:void 0)||this.defaultTtl,o=(i?i.callback:void 0)||function(){},A=An(a),c=this.cache[A];c&&clearTimeout(c.handle);let m=setTimeout(()=>this.remove(a),s);this.cache[A]={handle:m,data:n,callback:o}}get(a){let n=this.cache[An(a)];return n&&n.data}remove(a){let n=An(a),i=this.cache[n];i&&(clearTimeout(i.handle),delete this.cache[n],i.callback(a,i.data))}clear(){for(let a in this.cache)ni(this.cache,a)&&clearTimeout(this.cache[a].handle);this.cache={}}size(){return Object.keys(this.cache).length}},Be=cn;var mn=20*1e3,ai=55*1e3,kt=class{constructor(a){this.apiClient=a;this.tokenInfoCache=new Be({defaultTtl:ai}),this.receivedTransactionCache=new Be({defaultTtl:mn}),this.pendingInfoCache=new Be({defaultTtl:mn}),this.gasBalanceCache=new Be({defaultTtl:mn})}getTokenInfo(){let a="TOKEN_INFO_CACHE_KEY",n=this.tokenInfoCache.get(a);if(n)return n;let i=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(a,i),i}async getGasBalance(a,n){let i=`GAS_BALANCE_${a}_${n}`,s=this.gasBalanceCache.get(i);if(s)return s;let o=this.apiClient.getGasBalance(a,n);return this.gasBalanceCache.put(i,o),o}async getPendingInfo(){let a="PENDING_INFO_CACHE_KEY",n=this.pendingInfoCache.get(a);if(n)return n;let i=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(a,i),i}async getReceiveTransactionCost(a){let n=`RECEIVE_TX_COST_${a.sourceChainId}_${a.destinationChainId}_${a.messenger}`,i=this.receivedTransactionCache.get(n);if(i)return i;let s=await this.apiClient.getReceiveTransactionCost(a);return this.receivedTransactionCache.put(n,s),s}async getTransferStatus(a,n){return this.apiClient.getTransferStatus(a,n)}async getPoolInfoMap(a){return this.apiClient.getPoolInfoMap(a)}};var Mt=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(n=>n.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(a,n){return this.apiClient.getGasBalance(a,n)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(a,n){return await this.apiClient.getTransferStatus(a,n)}async getReceiveTransactionCost(a){return await this.apiClient.getReceiveTransactionCost(a)}async getPoolInfoMap(a){return await this.apiClient.getPoolInfoMap(a)}};var xt=class{constructor(a,n){this.client=a;this.isStaging=n.coreApiQueryParams?.staging==="true"}async getChainDetailsMap(a){let n=await this.client.getChainDetailsMap(),i={};for(let s in n){let o=n[s];o&&(i[s]={...o,tokens:Xn(o.tokens,a,this.isStaging)})}return i}async tokens(a){return Xn(await this.client.tokens(),a,this.isStaging)}async getPendingInfo(){return this.client.getPendingInfo()}async getGasBalance(a,n){return this.client.getGasBalance(a,n)}async getTransferStatus(a,n){return await this.client.getTransferStatus(a,n)}async getReceiveTransactionCost(a){return await this.client.getReceiveTransactionCost(a)}cachePut(a,n){return this.client.cachePut(a,n)}getPoolInfoByKey(a){return this.client.getPoolInfoByKey(a)}refreshPoolInfo(a){return this.client.refreshPoolInfo(a)}};function Xn(r,a,n){return r.filter(i=>n?!0:i.flags[a]).map(ii)}function ii(r){let{flags:a,...n}=r;return n}var si=55*1e3,Wt=class{constructor(a){this.client=a;this.poolInfoCache=new ln}async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(a,n){return this.client.getTransferStatus(a,n)}getReceiveTransactionCost(a){return this.client.getReceiveTransactionCost(a)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(a,n){return this.client.getGasBalance(a,n)}async getPoolInfoByKey(a){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let n=this.poolInfoCache.get(a);if(n)return n;{let i=await this.client.getPoolInfoMap(a);this.poolInfoCache.putAll(i);let s=i[Le(a)];if(s)return s;throw new T("Cannot find pool info for "+a.poolAddress+" on chain "+a.chainSymbol)}}async refreshPoolInfo(a){let n;if(a)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),n=await this.client.getPoolInfoMap(a);else{let i=await this.client.getChainDetailsMapAndPoolInfoMap();n=await this.client.getPoolInfoMap(Un(i.chainDetailsMap))}this.poolInfoCache.putAll(n)}cachePut(a,n){this.poolInfoCache.put(Le(a),n)}},ln=class{constructor(){this.cache=new Be({defaultTtl:si})}putAll(a){for(let[n,i]of Object.entries(a))this.cache.put(n,i)}putAllIfNotExists(a){for(let[n,i]of Object.entries(a))this.cache.get(n)||this.cache.put(n,i)}put(a,n){this.cache.put(a,n)}get(a){let n=Le(a);return this.cache.get(n)}};var Pa=V(require("tronweb")),Sa=V(require("web3"));var un=require("big.js");async function O(r,a){return await r.getPoolInfoByKey({chainSymbol:a.chainSymbol,poolAddress:a.poolAddress})}function W(r){if((0,un.Big)(r).lte(0))throw new nt("Amount must be greater than zero")}function F(r,a,n){let i=(0,un.Big)(a).toFixed(),[s,o]=i.split(".");if(o&&o.length>n)throw new it(r,o.length,n)}async function Ft(r,a,n){return await Promise.race([r,new Promise((i,s)=>{setTimeout(()=>s(new Ye(a)),n)})])}async function dn(r,a,n,i){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 Ft(r(),a,i)}catch{if(++s>=n)throw new Ye(a)}}async function Yn(r,a,n,i=1.5,s=!1){let o=[],A=0,c=await r();if(o.push(c),!a(c))return o;let m=new Date(Date.now()+n*1e3).valueOf(),l=1e3,d=l;for(;Date.now()<m;){let u=o[o.length-1];if(u===void 0||!a(u))break;A++,s&&console.info(`Waiting ${l}ms before trying again (bringing the total wait time to ${d}ms so far, of total ${n*1e3}ms)`),await new Promise(y=>setTimeout(y,l)),l=l*i,new Date(Date.now()+l).valueOf()>m&&(l=m-Date.now(),s&&console.info(`was gonna wait too long; new waitTime: ${l}ms`)),d=l+d;let p=await r(u);o.push(p),s&&a(p)&&console.info(`${A}. Called ${r.name}; ${o.length} prev attempts. Most recent: ${JSON.stringify(o[o.length-1],null,2)}`)}return o}var Zt=V(require("@project-serum/anchor")),Pn=require("@solana/web3.js"),oa=require("big.js");var Ln=[{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 Jn=[{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"}];var Y=V(require("@project-serum/anchor")),L=require("@solana/web3.js");async function re(r,a){return Y.utils.token.associatedAddress({mint:a,owner:r})}async function Me(r){let[a]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("config")],r);return a}async function Kn(r,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("lock"),Uint8Array.from(r)],a);return n}async function ct(r,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([r])],a);return n}async function Je(r){let a=await Me(r),[n]=await L.PublicKey.findProgramAddress([a.toBuffer()],r);return n}async function Qn(r,a){let[n]=await L.PublicKey.findProgramAddress([r.toBuffer()],a);return n}async function Ke(r,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("token"),r.toBytes()],a);return n}async function Hn(r,a,n){let[i]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("other_bridge_token"),Buffer.from([r]),a],n);return i}async function pn(r,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([r])],a);return n}async function gn(r,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([r])],a);return n}async function zn(r,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("sent_message"),r],a);return n}async function fn(r,a,n){let[i]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("user_deposit"),a.toBytes(),r.toBytes()],n);return i}async function jn(r,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("cctp_bridge"),r.toBytes()],a);return n}async function qn(r,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("token"),r.toBytes()],a);return n}function $n(r,a){let[n]=L.PublicKey.findProgramAddressSync([Y.utils.bytes.utf8.encode("lock"),a.toBuffer()],r);return n}function ea(r,a,n,i){let s=Ne("message_transmitter",n),o=Ne("token_messenger",i),A=Ne("__event_authority",i),c=Ne("token_minter",i),m=Ne("local_token",i,[a]),l=Ne("remote_token_messenger",i,[r.toString()]),d=Ne("sender_authority",i);return{messageTransmitterAccount:s,tokenMessenger:o,tokenMessengerEventAuthority:A,tokenMinter:c,localToken:m,remoteTokenMessengerKey:l,authorityPda:d}}function Ne(r,a,n=[]){let i=[Buffer.from(Y.utils.bytes.utf8.encode(r))];for(let o of n)typeof o=="string"?i.push(Buffer.from(Y.utils.bytes.utf8.encode(o))):Array.isArray(o)?i.push(Buffer.from(o)):Buffer.isBuffer(o)?i.push(o):i.push(o.toBuffer());return L.PublicKey.findProgramAddressSync(i,a)[0]}var ta=require("@project-serum/anchor"),Gt=require("@solana/web3.js");function xe(r,a){let n=new Gt.Connection(r,"confirmed"),i=new Gt.PublicKey(a);return new ta.AnchorProvider(n,{publicKey:i},{preflightCommitment:"confirmed",commitment:"confirmed"})}var oe=class{};var na=require("@solana/web3.js"),aa=require("@stellar/stellar-sdk"),Se=require("big.js"),yn=V(require("randombytes")),ia=V(require("tronweb"));function Ie(r,a,n){let i;switch(a){case"EVM":{i=Ai(r);break}case"SOLANA":{i=new na.PublicKey(r).toBuffer();break}case"TRX":{i=ci(r);break}case"SRB":{i=new aa.Address(r).toBuffer();break}}switch(n){case"EVM":return"0x"+i.toString("hex");case"SOLANA":return Array.from(i);case"TRX":return i.toJSON().data;case"SRB":return i.toJSON().data}}function sa(r){return Buffer.from(r.replace(/^0x/i,""),"hex")}function Ai(r){let n=sa(r);return Buffer.concat([Buffer.alloc(32-n.length,0),n],32)}function ci(r){let a=mt(r),n=sa(a);return mi(n,32)}function mt(r){return Buffer.from(ia.utils.crypto.decodeBase58Address(r)).toString("hex").replace(/^41/,"0x")}function mi(r,a){if(r.length>=a)return r;let n=Buffer.alloc(a,0);return r.copy(n,a-r.length),n}function Qe(){return(0,yn.default)(32)}function hn(){let r=(0,yn.default)(32).readBigInt64BE();return r<0?r*-1n:r}function We(r,a){let n={},i=a.sourceToken;return n.amount=k(a.amount,i.decimals).toFixed(),n.contractAddress=i.bridgeAddress,n.fromAccountAddress=a.fromAccountAddress,n.fromTokenAddress=Ie(i.tokenAddress,r,r),n.toAccountAddress=a.toAccountAddress,n.toTokenAddress=Ie(a.destinationToken.tokenAddress,r,r),n.minimumReceiveAmount=a.minimumReceiveAmount?k(a.minimumReceiveAmount,a.destinationToken.decimals).toFixed():"0",n}async function Re(r,a,n){let i={};i.fromChainId=a.sourceToken.allbridgeChainId,i.fromChainSymbol=a.sourceToken.chainSymbol;let s=I.getChainProperty(a.destinationToken.chainSymbol).chainType;i.fromTokenAddress=a.sourceToken.tokenAddress,i.toChainId=a.destinationToken.allbridgeChainId,i.toTokenAddress=a.destinationToken.tokenAddress,a.gasFeePaymentMethod==="stablecoin"?i.gasFeePaymentMethod="stablecoin":i.gasFeePaymentMethod="native";let o=a.sourceToken;if(a.messenger===3){if(!o.cctpAddress||!a.destinationToken.cctpAddress)throw new te("Such route does not support CCTP protocol");i.contractAddress=o.cctpAddress}else i.contractAddress=o.bridgeAddress;i.messenger=a.messenger,i.fromAccountAddress=a.fromAccountAddress,i.amount=k(a.amount,o.decimals).toFixed();let{fee:A,feeFormat:c}=a;if(!A){let u=(await bn(i.fromChainId,a.sourceToken.chainType,i.toChainId,o.decimals,i.messenger,n))[i.gasFeePaymentMethod];if(!u)throw new Ee;A=u.int,c="int"}if(c=="float")switch(i.gasFeePaymentMethod){case"native":i.fee=k(A,I.getChainDecimalsByType(o.chainType)).toFixed(0);break;case"stablecoin":i.fee=k(A,o.decimals).toFixed(0);break}else i.fee=A;let{extraGas:m,extraGasFormat:l}=a;if(m&&+m>0){if(l=="float")switch(i.gasFeePaymentMethod){case"native":i.extraGas=k(m,I.getChainDecimalsByType(o.chainType)).toFixed(0);break;case"stablecoin":i.extraGas=k(m,o.decimals).toFixed(0);break}else i.extraGas=m;await ui(i.extraGas,i.gasFeePaymentMethod,o,a.destinationToken,n)}return i.fromTokenAddress=Ie(i.fromTokenAddress,r,r),i.toAccountAddress=Ie(a.toAccountAddress,s,r),i.toTokenAddress=Ie(i.toTokenAddress,s,r),i.gasFeePaymentMethod=="stablecoin"&&li(i.amount,o.decimals,i.fee,i.extraGas),i}function li(r,a,n,i){let s=(0,Se.Big)(r).minus(n).minus(i??0);if(s.lte(0))throw new Ge(`Amount not enough to pay fee, ${w((0,Se.Big)(s).minus(1).neg(),a).toFixed()} stables is missing`)}async function bn(r,a,n,i,s,o){let A=await o.getReceiveTransactionCost({sourceChainId:r,destinationChainId:n,messenger:s}),c={native:{int:A.fee,float:w(A.fee,I.getChainDecimalsByType(a)).toFixed()}};if(A.sourceNativeTokenPrice){let m=ke(new Se.Big(A.fee).mul(A.sourceNativeTokenPrice),I.getChainDecimalsByType(a),i).toFixed(0,Se.Big.roundUp);c.stablecoin={int:m,float:w(m,i).toFixed()}}return c}async function ui(r,a,n,i,s){let A=(await Tn(n,i,s)).extraGasMax[a];if(!A)throw new Ee(`Impossible to pay extra gas by '${a}' payment method`);let c=A.int;if((0,Se.Big)(r).gt(c))throw new at(`Extra gas ${r} in int format, exceeded limit ${c} for '${a}' payment method`)}async function Tn(r,a,n){let i={},s=await n.getReceiveTransactionCost({sourceChainId:r.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:1}),o=a.txCostAmount.maxAmount,A=w(o,I.getChainDecimalsByType(a.chainType)).toFixed(),c=(0,Se.Big)(A).div(s.exchangeRate).toFixed(I.getChainDecimalsByType(r.chainType),Se.Big.roundDown),m=k(c,I.getChainDecimalsByType(r.chainType)).toFixed(0);if(i.native={int:m,float:c},s.sourceNativeTokenPrice){let l=(0,Se.Big)(c).mul(s.sourceNativeTokenPrice).toFixed(r.decimals,Se.Big.roundDown);i.stablecoin={int:k(l,r.decimals).toFixed(0),float:l}}return{extraGasMax:i,destinationChain:{gasAmountMax:{int:o,float:A},swap:{int:a.txCostAmount.swap,float:w(a.txCostAmount.swap,I.getChainDecimalsByType(a.chainType)).toFixed()},transfer:{int:a.txCostAmount.transfer,float:w(a.txCostAmount.transfer,I.getChainDecimalsByType(a.chainType)).toFixed()}},exchangeRate:s.exchangeRate,sourceNativeTokenPrice:s.sourceNativeTokenPrice}}function ra(r){return r.sourceToken.chainSymbol!==r.destinationToken.chainSymbol}var ut=class extends oe{constructor(n,i,s){super();this.web3=n;this.api=i;this.nodeRpcUrlsConfig=s;this.chainType="EVM"}async send(n){let i=await this.buildRawTransactionSend(n);return this.sendRawTransaction(i)}async buildRawTransactionSwap(n){let i=We(this.chainType,n);return await this.buildRawTransactionSwapFromParams(i)}async buildRawTransactionSwapFromParams(n){let{amount:i,contractAddress:s,fromAccountAddress:o,fromTokenAddress:A,toAccountAddress:c,toTokenAddress:m,minimumReceiveAmount:l}=n,u=this.getBridgeContract(s).methods.swap(i,A,m,c,l);return Promise.resolve({from:o,to:s,data:u.encodeABI()})}async buildRawTransactionSend(n){let i=await Re(this.chainType,n,this.api),{amount:s,contractAddress:o,fromAccountAddress:A,fromTokenAddress:c,toChainId:m,toAccountAddress:l,toTokenAddress:d,messenger:u,fee:p,gasFeePaymentMethod:y,extraGas:h}=i,b="0x"+Qe().toString("hex"),f,P,C=p;if(h&&(C=(0,oa.Big)(C).plus(h).toFixed()),u===3){let S=await this.buildRawTransactionCctpSend(n,i,C);f=S.sendMethod,P=S.value}else{let S=this.getBridgeContract(o);y==="stablecoin"?(f=S.methods.swapAndBridge(c,s,l,m,d,b,u,C),P="0"):(f=S.methods.swapAndBridge(c,s,l,m,d,b,u,0),P=C)}return Promise.resolve({from:A,to:o,value:P,data:f.encodeABI()})}async buildRawTransactionCctpSend(n,i,s){let{amount:o,contractAddress:A,toChainId:c,toAccountAddress:m,gasFeePaymentMethod:l}=i,d=this.getContract(Jn,A),u,p;if(n.destinationToken.chainType==="SOLANA"){let y,h=new Pn.PublicKey(n.toAccountAddress),b=new Pn.PublicKey(n.destinationToken.tokenAddress),f=await re(h,b),P=xe(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),n.toAccountAddress);Zt.setProvider(P);let C=await Zt.Spl.token(P).account.token.fetchNullable(f);if(C?.authority.equals(h))y=Ie(f.toBase58(),"SOLANA",this.chainType);else{let S=await P.connection.getTokenAccountsByOwner(h,{mint:b});if(S.value.length===0&&!C)y=Ie(f.toBase58(),"SOLANA",this.chainType);else if(S.value.length>0){let _=S.value[0];if(!_?.pubkey)throw new T("First token account or its public key is undefined");y=Ie(_.pubkey.toBase58(),"SOLANA",this.chainType)}else throw new T("Associated account has wrong owner")}l==="stablecoin"?(u=d.methods.bridgeWithWalletAddress(o,y,m,c,s),p="0"):(u=d.methods.bridgeWithWalletAddress(o,y,m,c,0),p=s)}else l==="stablecoin"?(u=d.methods.bridge(o,m,c,s),p="0"):(u=d.methods.bridge(o,m,c,0),p=s);return{sendMethod:u,value:p}}async sendRawTransaction(n){let i=await this.web3.eth.estimateGas(n),s={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:o}=await this.web3.eth.sendTransaction({...n,gas:i,...s});return{txId:o}}getContract(n,i){return new this.web3.eth.Contract(n,i)}getBridgeContract(n){return this.getContract(Ln,n)}};var Dt=class{constructor(a,n,i,s){this.api=a;this.nodeRpcUrlsConfig=n;this.params=i;this.tokenService=s}async approve(a,n){let i,s;n?(i=a,s=n):s=a;let o=dt(s.token,s.messenger);return this.tokenService.buildRawTransactionApprove({...s,spender:o},i)}async send(a,n){return W(a.amount),F("amount",a.amount,a.sourceToken.decimals),ra(a)?Nt(a.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionSend(a):Nt(a.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionSwap(a)}};var G=require("@project-serum/anchor"),v=require("@solana/web3.js"),Ae=require("big.js");var pt={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 Aa={version:"0.1.0",name:"cctp_bridge",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"bridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"cctpMessenger",isMut:!1,isSigner:!1},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"messageTransmitterAccount",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"remoteTokenMessengerKey",isMut:!1,isSigner:!1},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"setAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setCctpTokenMessengerMinter",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]}],accounts:[{name:"cctpBridge",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"admin",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"adminFeeShareBp",type:"u64"},{name:"adminFeeAmount",type:"u64"}]}},{name:"chainBridge",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"amount",type:"u64"},{name:"adminFee",type:"u64"},{name:"relayerFee",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"slot",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"amount",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"gasOracleProgramId",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"}]}}],errors:[{code:6e3,name:"ValueTooHigh",msg:"Value is too high"}]};var ca=require("@project-serum/anchor"),ma=V(require("big.js")),gt=V(require("web3"));async function He(r,a){return await ca.Spl.token(a).account.token.fetch(r)}async function la(r,a,n){let i=await a.account.pool.fetch(n),s=i.decimals,o=(0,ma.default)(i.feeShareBp.toString()).div(1e4).toFixed(),A={aValue:i.a.toString(),dValue:i.d.toString(),totalLpAmount:i.totalLpAmount.toString(),tokenBalance:i.tokenBalance.toString(),vUsdBalance:i.vUsdBalance.toString(),accRewardPerShareP:i.accRewardPerShareP.toString()};return be(r,{decimals:s,feeShare:o},A)}function ua(r){let a=r.amount,n="0x"+r.recipient.toString("hex"),i=r.sourceChainId,s=r.destinationChainId,o="0x"+r.receiveToken.toString("hex"),A="0x"+r.nonce.toString("hex"),c=1,m="0x"+r.chainBridge.toString("hex"),l=gt.default.utils.encodePacked({t:"uint256",v:a},{t:"bytes32",v:n},{t:"uint256",v:i},{t:"bytes32",v:o},{t:"uint256",v:A},{t:"uint8",v:c});if(!l)throw new T("message cannot be undefined");let d=gt.default.utils.keccak256(Buffer.from(l.replace("0x",""),"hex")),u=Buffer.from(d.replace("0x",""),"hex");u[0]=i,u[1]=s;let p=gt.default.utils.encodePacked({t:"bytes32",v:"0x"+u.toString("hex")},{t:"bytes32",v:m});if(!p)throw new Ze("messageWithSigner cannot be undefined");let y=gt.default.utils.keccak256(Buffer.from(p.replace("0x",""),"hex")),h=Buffer.from(y.replace("0x",""),"hex");return h[0]=u[0],h[1]=u[1],h}var q=require("@solana/web3.js"),da=require("big.js");var Sn=require("@solana/web3.js");async function Ue(r,a){return await Promise.all(r.message.addressTableLookups.map(async n=>new Sn.AddressLookupTableAccount({key:n.accountKey,state:Sn.AddressLookupTableAccount.deserialize(await a.getAccountInfo(n.accountKey).then(i=>{if(!i)throw new T("Cannot get AccountInfo");return i.data}))})))}var _t="AUTO";async function ze(r,a,n){let i=new q.Connection(n,"confirmed"),s=(await i.simulateTransaction(r)).value.unitsConsumed;await ga(r.instructions,s,a,i)}async function pa(r,a,n){let i=new q.Connection(n,"confirmed"),s=await Ue(r,i),o=q.TransactionMessage.decompile(r.message,{addressLookupTableAccounts:s});if(r.serialize().length>1232)throw new rt;await ga(o.instructions,769230,a,i),r.message=o.compileToV0Message(s)}async function ga(r,a,n,i){if(a>0){let s=di(a,r);if(n?.solana){let o=n.solana;if(o===_t)await wn(r,i);else if("pricePerUnitInMicroLamports"in o)await wn(r,i,o.pricePerUnitInMicroLamports);else{let A=(0,da.Big)(o.extraFeeInLamports).div(s).mul(ot(6)).toFixed(0);await wn(r,i,A)}}}}function di(r,a){let n=a.findIndex(o=>o.programId.equals(q.ComputeBudgetProgram.programId)&&q.ComputeBudgetInstruction.decodeInstructionType(o)==="SetComputeUnitLimit"),i=Number((r*1.3).toFixed(0)),s=q.ComputeBudgetProgram.setComputeUnitLimit({units:i});return n>=0?a[n]=s:a.push(s),i.toString()}async function wn(r,a,n){let i=r.findIndex(A=>A.programId.equals(q.ComputeBudgetProgram.programId)&&q.ComputeBudgetInstruction.decodeInstructionType(A)==="SetComputeUnitPrice"),s=BigInt(n||await pi(a)),o=q.ComputeBudgetProgram.setComputeUnitPrice({microLamports:s});return i>=0?r[i]=o:r.push(o),s.toString()}async function pi(r){let a=await r.getRecentPrioritizationFees(),n=0;for(let i of a)n+=i.prioritizationFee;return(n/a.length).toFixed(0)}var fa=require("@solana/spl-token"),Ve=require("@solana/web3.js"),je=V(require("axios"));var Ut=class{constructor(a,n){this.connection=new Ve.Connection(a),this.jupiterUrl=n.replace(/\/$/,"")}async getJupiterSwapTx(a,n,i,s){let o;try{let u=s?"ExactOut":"ExactIn";o=await je.default.get(`${this.jupiterUrl}/quote?inputMint=${n}
2
2
  &outputMint=${fa.NATIVE_MINT.toString()}
3
3
  &amount=${i}
4
4
  &swapMode=${u}