@allbridge/bridge-core-sdk 3.15.3 → 3.15.4-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var Ha=Object.create;var Ut=Object.defineProperty;var za=Object.getOwnPropertyDescriptor;var ja=Object.getOwnPropertyNames;var qa=Object.getPrototypeOf,$a=Object.prototype.hasOwnProperty;var ei=(i,e)=>{for(var t in e)Ut(i,t,{get:e[t],enumerable:!0})},Nn=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of ja(e))!$a.call(i,a)&&a!==t&&Ut(i,a,{get:()=>e[a],enumerable:!(n=za(e,a))||n.enumerable});return i};var O=(i,e,t)=>(t=i!=null?Ha(qa(i)):{},Nn(e||!i||!i.__esModule?Ut(t,"default",{value:i,enumerable:!0}):t,i)),ti=i=>Nn(Ut({},"__esModule",{value:!0}),i);var Gi={};ei(Gi,{AddressStatus:()=>Vt,AllbridgeCoreSdk:()=>Un,AmountFormat:()=>bt,AmountNotEnoughError:()=>Ge,ArgumentInvalidDecimalsError:()=>pt,CCTPDoesNotSupportedError:()=>re,ChainSymbol:()=>me,ChainType:()=>N,ErrorCode:()=>Vn,ExtraGasMaxLimitExceededError:()=>lt,FeePaymentMethod:()=>Ke,InsufficientPoolLiquidityError:()=>we,InvalidAmountError:()=>ut,InvalidGasFeePaymentOptionError:()=>je,InvalidMessengerOptionError:()=>fn,InvalidTxError:()=>Ze,JupiterError:()=>Y,Messenger:()=>ke,MethodNotSupportedError:()=>J,NodeRpcUrlNotInitializedError:()=>dt,SdkError:()=>k,SdkRootError:()=>F,SolanaAutoTxFee:()=>Jt,TimeoutError:()=>$e,TxTooLargeError:()=>gt,VerifyTxError:()=>qe,mainnet:()=>mt,nodeRpcUrlsDefault:()=>si,nodeUrlsDefault:()=>ri,testnet:()=>ni,testnetNodeRpcUrlsDefault:()=>ii,testnetNodeUrlsDefault:()=>ai});module.exports=ti(Gi);var ni={coreApiUrl:"https://core-dev.a11bd.net",coreApiQueryParams:{},coreApiHeaders:{},wormholeMessengerProgramId:"3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5",solanaLookUpTable:"C3jAxHRTZjM2Bs7EqPir4nvrT8zKtpcW7RvGR9R2qKtN",sorobanNetworkPassphrase:"Test SDF Network ; September 2015",tronJsonRpc:"https://nile.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{SPL:0,ARB:3,AMO:7}}},ai={solanaRpcUrl:"https://api.devnet.solana.com",tronRpcUrl:"https://nile.trongrid.io"},ii={SOL:"https://api.devnet.solana.com",TRX:"https://nile.trongrid.io",SRB:"https://soroban-testnet.stellar.org",STLR:"https://horizon-testnet.stellar.org"};var mt={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},wormholeMessengerProgramId:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",solanaLookUpTable:"2JcBAEVnAwVo4u8d61iqgHPrzZuugur7cVTjWubsVLHj",sorobanNetworkPassphrase:"Public Global Stellar Network ; September 2015",tronJsonRpc:"https://api.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{ETH:0,AVA:1,OPT:2,ARB:3,SOL:5,BAS:6,POL:7}}},ri={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},si={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org"};var he=require("big.js");var Nt=class{constructor(e){this.apiClient=e}async getChainDetailsMap(){return(await this.apiClient.getTokenInfo()).chainDetailsMap}async tokens(){let e=await this.getChainDetailsMap();return Object.values(e).flatMap(t=>t.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(e,t){return this.apiClient.getGasBalance(e,t)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(e,t){return await this.apiClient.getTransferStatus(e,t)}async getReceiveTransactionCost(e){return await this.apiClient.getReceiveTransactionCost(e)}async getPoolInfoMap(e){return await this.apiClient.getPoolInfoMap(e)}};var zn=O(require("axios"));var On="3.15.3";var me=(p=>(p.GRL="GRL",p.SPL="SPL",p.HOL="HOL",p.BSC="BSC",p.ETH="ETH",p.BAS="BAS",p.SOL="SOL",p.TRX="TRX",p.POL="POL",p.MUM="MUM",p.AMO="AMO",p.ARB="ARB",p.CEL="CEL",p.AVA="AVA",p.SRB="SRB",p.STLR="STLR",p.OPT="OPT",p))(me||{}),N=(a=>(a.EVM="EVM",a.SOLANA="SOLANA",a.TRX="TRX",a.SRB="SRB",a))(N||{}),V={EVM:18,SOLANA:9,TRX:6,SRB:7},z={GRL:{chainSymbol:"GRL",chainId:"0x5",name:"Goerli",chainType:"EVM"},SPL:{chainSymbol:"SPL",chainId:"0xaa36a7",name:"Sepolia",chainType:"EVM"},HOL:{chainSymbol:"HOL",chainId:"0x4268",name:"Hole\u0161ky",chainType:"EVM"},BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},MUM:{chainSymbol:"MUM",chainId:"0x13881",name:"Mumbai",chainType:"EVM"},AMO:{chainSymbol:"AMO",chainId:"0x13882",name:"Amoy",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"}};var l=require("big.js"),Ot=O(require("bn.js"));var F=class extends Error{constructor(e,t){super(t),this.errorCode=e}},k=class extends F{constructor(e){super("SdkError",e)}},ut=class extends F{constructor(e){super("InvalidAmountError",e)}},Ge=class extends F{constructor(e){super("AmountNotEnoughError",e)}},we=class extends F{constructor(e){super("InsufficientPoolLiquidityError",e)}},Y=class extends F{constructor(e){super("JupiterError",e)}},je=class extends F{constructor(e){super("InvalidGasFeePaymentOptionError",e)}},fn=class extends F{constructor(e){super("InvalidMessengerOptionError",e)}},J=class extends F{constructor(e){super("MethodNotSupportedError",e)}},qe=class extends F{constructor(e){super("VerifyTxError",e)}},Ze=class extends F{constructor(e){super("InvalidTxError",e)}},lt=class extends F{constructor(e){super("ExtraGasMaxLimitExceededError",e)}},pt=class extends F{constructor(e,t,n){super("ArgumentInvalidDecimalsError",`Argument '${e}' decimals '${t}' cannot be greater than '${n}'`)}},$e=class extends F{constructor(e){super("TimeoutError",e)}},dt=class extends F{constructor(e){super("NodeRpcUrlNotInitializedError",`For chain '${e}' Node RPC URL not initialized`)}},re=class extends F{constructor(e){super("CCTPDoesNotSupportedError",e)}},gt=class extends F{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},Vn=(d=>(d.SDK_ERROR="SdkError",d.INVALID_AMOUNT_ERROR="InvalidAmountError",d.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",d.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",d.JUPITER_ERROR="JupiterError",d.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",d.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",d.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",d.VERIFY_TX_ERROR="VerifyTxError",d.INVALID_TX_ERROR="InvalidTxError",d.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",d.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",d.TIMEOUT_ERROR="TimeoutError",d.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",d.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",d.TX_TOO_LARGE="TxTooLargeError",d))(Vn||{});function yn(i,e){return(0,l.Big)(100).minus((0,l.Big)(100).times(e).div(i)).toNumber()}function _e(i,e){return Ee(i,e,3).round(0,l.Big.roundDown)}function ee(i,e){return Ee(i,3,e)}function Ee(i,e,t){let n=(0,l.Big)(t).minus(e).toNumber();return(0,l.Big)(i).times(ft(n))}function ft(i){return(0,l.Big)(10).pow(i)}function B(i,e){return(0,l.Big)(i).times(ft(e))}function b(i,e){let t=(0,l.Big)(i);return t.eq(0)?(0,l.Big)(0):(0,l.Big)(t).div(ft(e))}function te(i){return b((0,l.Big)(i.tokenBalance).minus(i.vUsdBalance).toFixed(),3).div(2).toFixed()}function Ce(i,{feeShare:e,decimals:t},n){let a=(0,l.Big)(i);if(a.lte(0))return"0";let r=a.times(e),s=a.minus(r),o=_e(s,t),A=(0,l.Big)(n.tokenBalance).plus(o),c=Be(A,n.aValue,n.dValue);return(0,l.Big)(n.vUsdBalance).minus(c).round(0,l.Big.roundDown).toFixed()}function yt(i,{feeShare:e,decimals:t},n){let a=(0,l.Big)(i);if(a.lte(0))return(0,l.Big)(0).toFixed();let r=a.plus(n.vUsdBalance),s=Be(r,n.aValue,n.dValue),o=ee((0,l.Big)(n.tokenBalance).minus(s),t),A=(0,l.Big)(o).times(e);return(0,l.Big)(o).minus(A).round(0,l.Big.roundDown).toFixed()}function Gn(i,e){let t=(0,l.Big)(i);if(t.lte(0))return e;let n=t.plus(e.vUsdBalance),a=Be(n,e.aValue,e.dValue);return{aValue:e.aValue,dValue:e.dValue,tokenBalance:a.toFixed(0),vUsdBalance:n.toFixed(0)}}function Zn(i,{feeShare:e,decimals:t},n){if((0,l.Big)(i).lte(0))return(0,l.Big)(0);let a=(0,l.Big)(n.vUsdBalance).minus(i);if(a.lte(0))throw new we;let r=Be(a,n.aValue,n.dValue),s=(0,l.Big)(r).minus(n.tokenBalance),o=ee(s,t),A=(0,l.Big)(e).div((0,l.Big)(1).minus(e)),c=(0,l.Big)(o).times(A).round(0,l.Big.roundUp);return(0,l.Big)(o).plus(c).round(0,l.Big.roundDown)}function _n(i,{feeShare:e,decimals:t},n){if((0,l.Big)(i).lte(0))return(0,l.Big)(0);let a=(0,l.Big)(e).div((0,l.Big)(1).minus(e)),r=(0,l.Big)(i).times(a).round(0,l.Big.roundUp),s=(0,l.Big)(i).plus(r),o=_e(s,t),A=(0,l.Big)(n.tokenBalance).minus(o);if(A.lte(0))throw new we;let c=Be(A,n.aValue,n.dValue);return(0,l.Big)(c).minus(n.vUsdBalance).round(0,l.Big.roundDown)}function Be(i,e,t){let n=(0,l.Big)(4).times(e).times((0,l.Big)(t).minus(i)).minus(t),a=(0,l.Big)(t).pow(3),r=n.pow(2),s=(0,l.Big)(i).times((0,l.Big)(i).times(r).plus((0,l.Big)(4).times(e).times(a))).sqrt().round(0,l.Big.roundDown),o=(0,l.Big)(8).times(e).times(i),A=n.times(i).plus(s).div(o).round(0,l.Big.roundDown);return A.eq(0)?(0,l.Big)(0):A.plus(1)}function Ln(i,e,t,n){let a=new Ot.default(i),r=new Ot.default(t),s=new Ot.default(e);return a.mul(r).shrn(n).sub(s).toString()}function Xn(i){return i*100>0?`${Number((0,l.Big)(i).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function Kn(i,e,t){let n=(0,l.Big)(e).times(t),a=(0,l.Big)(e).plus(t),r=(0,l.Big)(8).times(i).times(n).times(a),s=n.times((0,l.Big)(16).times(i).minus(4)).div(3),o=r.times(r),A=s.times(s).times(s),c=o.plus(A),m=(0,l.Big)(c).sqrt(),u=(0,l.Big)(Math.cbrt(+r.plus(m).toFixed())),g=(0,l.Big)(Math.cbrt(+r.minus(m).toFixed()));return u.plus(g).toFixed()}var Vt=(s=>(s.OK="OK",s.INVALID="INVALID",s.FORBIDDEN="FORBIDDEN",s.UNINITIALIZED="UNINITIALIZED",s.CONTRACT_ADDRESS="CONTRACT_ADDRESS",s.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",s))(Vt||{});var ke=(n=>(n[n.ALLBRIDGE=1]="ALLBRIDGE",n[n.WORMHOLE=2]="WORMHOLE",n[n.CCTP=3]="CCTP",n))(ke||{});function Qn(i){return Object.entries(i).reduce((e,t)=>{let n=t[0],a=t[1],r=ui(n,a);return r&&(e[n]=r),e},{})}function Yn(i){let e={};for(let[t,n]of Object.entries(i)){let a=t;for(let r of n.tokens){let s=et({chainSymbol:a,poolAddress:r.poolAddress}),o=te(r.poolInfo);e[s]={...r.poolInfo,imbalance:o}}}return e}function oi(i,e){let{name:t,...n}=i,{poolInfo:a,...r}=e;return{...r,...n,chainName:t}}function Ai(i){switch(i){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;default:return null}}function ci(i){return Object.entries(i).reduce((e,[t,n])=>(e[t]=mi(n),e),{})}function mi(i){return Object.entries(i).reduce((e,[t,n])=>{let a=Ai(t);return a&&(e[a]=n),e},{})}function ui(i,e){let t=z[i];if(!t)return null;let n={...t,allbridgeChainId:e.chainId,bridgeAddress:e.bridgeAddress,transferTime:ci(e.transferTime),txCostAmount:e.txCostAmount,confirmations:e.confirmations};return{...n,tokens:e.tokens.map(a=>oi(n,a))}}function et(i){return i.chainSymbol+"_"+i.poolAddress}function Jn(i){let e=[];for(let[t,n]of Object.entries(i)){let a=t;for(let r of n.tokens)e.push({chainSymbol:a,poolAddress:r.poolAddress})}return e}function Hn(i){let e={};for(let[t,n]of Object.entries(i)){let a=t;for(let[r,s]of Object.entries(n))s.imbalance=te(s),e[et({chainSymbol:a,poolAddress:r})]=s}return e}var Gt=class{constructor(e){this.api=zn.default.create({baseURL:e.coreApiUrl,headers:{Accept:"application/json",...e.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+On},params:e.coreApiQueryParams})}async getTokenInfo(){let{data:e}=await this.api.get("/token-info");return{chainDetailsMap:Qn(e),poolInfoMap:Yn(e)}}async getPendingInfo(){let{data:e}=await this.api.get("/pending-info");return e}async getGasBalance(e,t){let{data:n}=await this.api.get(`/check/${e}/${t}`);return n}async getTransferStatus(e,t){let{data:n}=await this.api.get(`/chain/${e}/${t}`);return n}async getReceiveTransactionCost(e){let{data:t}=await this.api.post("/receive-fee",e,{headers:{"Content-Type":"application/json"}});return{exchangeRate:t.exchangeRate,fee:t.fee,sourceNativeTokenPrice:t.sourceNativeTokenPrice}}async getPoolInfoMap(e){let t=e instanceof Array?e:[e],{data:n}=await this.api.post("/pool-info",{pools:t},{headers:{"Content-Type":"application/json"}});return Hn(n)}};var li=(i,e)=>i!==null&&Object.prototype.hasOwnProperty.call(i,e),jn="__cache__",hn=function(i){return typeof i!="string"?jn+JSON.stringify(i):jn+i},Tn=class{constructor(e={defaultTtl:60*1e3}){this.cache={},this.defaultTtl=e.defaultTtl||60*1e3}put(e,t,n){let a=(n?n.ttl:void 0)||this.defaultTtl,r=(n?n.callback:void 0)||function(){},s=hn(e),o=this.cache[s];o&&clearTimeout(o.handle);let A=setTimeout(()=>this.remove(e),a);this.cache[s]={handle:A,data:t,callback:r}}get(e){let t=this.cache[hn(e)];return t&&t.data}remove(e){let t=hn(e),n=this.cache[t];n&&(clearTimeout(n.handle),delete this.cache[t],n.callback(e,n.data))}clear(){for(let e in this.cache)li(this.cache,e)&&clearTimeout(this.cache[e].handle);this.cache={}}size(){return Object.keys(this.cache).length}},Le=Tn;var bn=20*1e3,pi=55*1e3,Zt=class{constructor(e){this.apiClient=e;this.tokenInfoCache=new Le({defaultTtl:pi}),this.receivedTransactionCache=new Le({defaultTtl:bn}),this.pendingInfoCache=new Le({defaultTtl:bn}),this.gasBalanceCache=new Le({defaultTtl:bn})}getTokenInfo(){let e="TOKEN_INFO_CACHE_KEY",t=this.tokenInfoCache.get(e);if(t)return t;let n=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(e,n),n}async getGasBalance(e,t){let n=`GAS_BALANCE_${e}_${t}`,a=this.gasBalanceCache.get(n);if(a)return a;let r=this.apiClient.getGasBalance(e,t);return this.gasBalanceCache.put(n,r),r}async getPendingInfo(){let e="PENDING_INFO_CACHE_KEY",t=this.pendingInfoCache.get(e);if(t)return t;let n=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(e,n),n}async getReceiveTransactionCost(e){let t=`RECEIVE_TX_COST_${e.sourceChainId}_${e.destinationChainId}_${e.messenger}`,n=this.receivedTransactionCache.get(t);if(n)return n;let a=await this.apiClient.getReceiveTransactionCost(e);return this.receivedTransactionCache.put(t,a),a}async getTransferStatus(e,t){return this.apiClient.getTransferStatus(e,t)}async getPoolInfoMap(e){return this.apiClient.getPoolInfoMap(e)}};var di=55*1e3,_t=class{constructor(e){this.client=e;this.poolInfoCache=new Pn}async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(e,t){return this.client.getTransferStatus(e,t)}getReceiveTransactionCost(e){return this.client.getReceiveTransactionCost(e)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(e,t){return this.client.getGasBalance(e,t)}async getPoolInfoByKey(e){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let t=this.poolInfoCache.get(e);if(t)return t;{let n=await this.client.getPoolInfoMap(e);return this.poolInfoCache.putAll(n),n[et(e)]}}async refreshPoolInfo(e){let t;if(e)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),t=await this.client.getPoolInfoMap(e);else{let n=await this.client.getChainDetailsMapAndPoolInfoMap();t=await this.client.getPoolInfoMap(Jn(n.chainDetailsMap))}this.poolInfoCache.putAll(t)}cachePut(e,t){this.poolInfoCache.put(et(e),t)}},Pn=class{constructor(){this.cache=new Le({defaultTtl:di})}putAll(e){for(let[t,n]of Object.entries(e))this.cache.put(t,n)}putAllIfNotExists(e){for(let[t,n]of Object.entries(e))this.cache.get(t)||this.cache.put(t,n)}put(e,t){this.cache.put(e,t)}get(e){let t=et(e);return this.cache.get(t)}};var Ia=O(require("tronweb")),xa=O(require("web3"));var Sn=require("big.js");async function G(i,e){return await i.getPoolInfoByKey({chainSymbol:e.chainSymbol,poolAddress:e.poolAddress})}function R(i){if((0,Sn.Big)(i).lte(0))throw new ut("Amount must be greater than zero")}function I(i,e,t){let n=(0,Sn.Big)(e).toFixed();if(n.split(".").length==2&&n.split(".")[1].length>t)throw new pt(i,n.split(".")[1].length,t)}async function Lt(i,e,t){return await Promise.race([i,new Promise((n,a)=>{setTimeout(()=>a(new $e(e)),t)})])}async function wn(i,e,t,n){if(t<1)throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${t} was received.`);let a=0;for(;;)try{return await Lt(i(),e,n)}catch{if(++a>=t)throw new $e(e)}}async function qn(i,e,t,n=1.5,a=!1){let r=[],s=0;if(r.push(await i()),!e(r[r.length-1]))return r;let o=new Date(Date.now()+t*1e3).valueOf(),A=1e3,c=A;for(;Date.now()<o&&e(r[r.length-1]);)s++,a&&console.info(`Waiting ${A}ms before trying again (bringing the total wait time to ${c}ms so far, of total ${t*1e3}ms)`),await new Promise(m=>setTimeout(m,A)),A=A*n,new Date(Date.now()+A).valueOf()>o&&(A=o-Date.now(),a&&console.info(`was gonna wait too long; new waitTime: ${A}ms`)),c=A+c,r.push(await i(r[r.length-1])),a&&e(r[r.length-1])&&console.info(`${s}. Called ${i.name}; ${r.length} prev attempts. Most recent: ${JSON.stringify(r[r.length-1],null,2)}`);return r}var Kt=O(require("@project-serum/anchor")),xn=require("@solana/web3.js"),ga=require("big.js");var $n=[{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 ea=[{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 X=O(require("@project-serum/anchor")),K=require("@solana/web3.js");async function ue(i,e){return X.utils.token.associatedAddress({mint:e,owner:i})}async function Ue(i){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("config")],i);return e}async function ta(i,e){let[t]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("lock"),Uint8Array.from(i)],e);return t}async function ht(i,e){let[t]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([i])],e);return t}async function tt(i){let e=await Ue(i),[t]=await K.PublicKey.findProgramAddress([e.toBuffer()],i);return t}async function na(i,e){let[t]=await K.PublicKey.findProgramAddress([i.toBuffer()],e);return t}async function nt(i,e){let[t]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("token"),i.toBytes()],e);return t}async function aa(i,e,t){let[n]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("other_bridge_token"),Buffer.from([i]),e],t);return n}async function Cn(i,e){let[t]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([i])],e);return t}async function Bn(i,e){let[t]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([i])],e);return t}async function ia(i,e){let[t]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("sent_message"),i],e);return t}async function kn(i,e,t){let[n]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("user_deposit"),e.toBytes(),i.toBytes()],t);return n}async function ra(i,e){let[t]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("cctp_bridge"),i.toBytes()],e);return t}async function sa(i,e){let[t]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("token"),i.toBytes()],e);return t}function oa(i,e){let[t]=K.PublicKey.findProgramAddressSync([X.utils.bytes.utf8.encode("lock"),e.toBuffer()],i);return t}function Aa(i,e,t,n){let a=Xe("message_transmitter",t),r=Xe("token_messenger",n),s=Xe("__event_authority",n),o=Xe("token_minter",n),A=Xe("local_token",n,[e]),c=Xe("remote_token_messenger",n,[i.toString()]),m=Xe("sender_authority",n);return{messageTransmitterAccount:a,tokenMessenger:r,tokenMessengerEventAuthority:s,tokenMinter:o,localToken:A,remoteTokenMessengerKey:c,authorityPda:m}}function Xe(i,e,t=[]){let n=[Buffer.from(X.utils.bytes.utf8.encode(i))];for(let r of t)typeof r=="string"?n.push(Buffer.from(X.utils.bytes.utf8.encode(r))):Array.isArray(r)?n.push(Buffer.from(r)):Buffer.isBuffer(r)?n.push(r):n.push(r.toBuffer());return K.PublicKey.findProgramAddressSync(n,e)[0]}var ca=require("@project-serum/anchor"),Xt=require("@solana/web3.js");function Ne(i,e){let t=new Xt.Connection(i,"confirmed"),n=new Xt.PublicKey(e);return new ca.AnchorProvider(t,{publicKey:n},{preflightCommitment:"confirmed",commitment:"confirmed"})}var le=class{};var ma=require("@solana/web3.js"),Me=require("big.js"),Mn=O(require("randombytes")),ua=require("stellar-sdk"),la=O(require("tronweb"));function Ie(i,e,t){let n;switch(e){case"EVM":{n=yi(i);break}case"SOLANA":{n=new ma.PublicKey(i).toBuffer();break}case"TRX":{n=hi(i);break}case"SRB":{n=new ua.Address(i).toBuffer();break}}switch(t){case"EVM":return"0x"+n.toString("hex");case"SOLANA":return Array.from(n);case"TRX":return n.toJSON().data;case"SRB":return n.toJSON().data}}function pa(i){return Buffer.from(i.replace(/^0x/i,""),"hex")}function yi(i){let t=pa(i);return Buffer.concat([Buffer.alloc(32-t.length,0),t],32)}function hi(i){let e=Tt(i),t=pa(e);return Ti(t,32)}function Tt(i){return Buffer.from(la.utils.crypto.decodeBase58Address(i)).toString("hex").replace(/^41/,"0x")}function Ti(i,e){if(i.length>=e)return i;let t=Buffer.alloc(e,0);return i.copy(t,e-i.length),t}function at(){return(0,Mn.default)(32)}function vn(){let i=(0,Mn.default)(32).readBigInt64BE();return i<0?i*-1n:i}function Oe(i,e){let t={},n=e.sourceToken;return t.amount=B(e.amount,n.decimals).toFixed(),t.contractAddress=n.bridgeAddress,t.fromAccountAddress=e.fromAccountAddress,t.fromTokenAddress=Ie(n.tokenAddress,i,i),t.toAccountAddress=e.toAccountAddress,t.toTokenAddress=Ie(e.destinationToken.tokenAddress,i,i),t.minimumReceiveAmount=e.minimumReceiveAmount?B(e.minimumReceiveAmount,e.destinationToken.decimals).toFixed():"0",t}async function xe(i,e,t){let n={};n.fromChainId=e.sourceToken.allbridgeChainId,n.fromChainSymbol=e.sourceToken.chainSymbol;let a=z[e.destinationToken.chainSymbol].chainType;n.fromTokenAddress=e.sourceToken.tokenAddress,n.toChainId=e.destinationToken.allbridgeChainId,n.toTokenAddress=e.destinationToken.tokenAddress,e.gasFeePaymentMethod==="stablecoin"?n.gasFeePaymentMethod="stablecoin":n.gasFeePaymentMethod="native";let r=e.sourceToken;if(e.messenger===3){if(!r.cctpAddress||!e.destinationToken.cctpAddress)throw new re("Such route does not support CCTP protocol");n.contractAddress=r.cctpAddress}else n.contractAddress=r.bridgeAddress;n.messenger=e.messenger,n.fromAccountAddress=e.fromAccountAddress,n.amount=B(e.amount,r.decimals).toFixed();let{fee:s,feeFormat:o}=e;if(!s){let u=(await Rn(n.fromChainId,e.sourceToken.chainType,n.toChainId,r.decimals,n.messenger,t))[n.gasFeePaymentMethod];if(!u)throw new je;s=u.int,o="int"}if(o=="float")switch(n.gasFeePaymentMethod){case"native":n.fee=B(s,V[r.chainType]).toFixed(0);break;case"stablecoin":n.fee=B(s,r.decimals).toFixed(0);break}else n.fee=s;let{extraGas:A,extraGasFormat:c}=e;if(A&&+A>0){if(c=="float")switch(n.gasFeePaymentMethod){case"native":n.extraGas=B(A,V[r.chainType]).toFixed(0);break;case"stablecoin":n.extraGas=B(A,r.decimals).toFixed(0);break}else n.extraGas=A;await Pi(n.extraGas,n.gasFeePaymentMethod,r,e.destinationToken,t)}return n.fromTokenAddress=Ie(n.fromTokenAddress,i,i),n.toAccountAddress=Ie(e.toAccountAddress,a,i),n.toTokenAddress=Ie(n.toTokenAddress,a,i),n.gasFeePaymentMethod=="stablecoin"&&bi(n.amount,r.decimals,n.fee,n.extraGas),n}function bi(i,e,t,n){let a=(0,Me.Big)(i).minus(t).minus(n??0);if(a.lte(0))throw new Ge(`Amount not enough to pay fee, ${b((0,Me.Big)(a).minus(1).neg(),e).toFixed()} stables is missing`)}async function Rn(i,e,t,n,a,r){let s=await r.getReceiveTransactionCost({sourceChainId:i,destinationChainId:t,messenger:a}),o={native:{int:s.fee,float:b(s.fee,V[e]).toFixed()}};if(s.sourceNativeTokenPrice){let A=Ee(new Me.Big(s.fee).mul(s.sourceNativeTokenPrice),V[e],n).toFixed(0,Me.Big.roundUp);o.stablecoin={int:A,float:b(A,n).toFixed()}}return o}async function Pi(i,e,t,n,a){let s=(await In(t,n,a)).extraGasMax[e];if(!s)throw new je(`Impossible to pay extra gas by '${e}' payment method`);let o=s.int;if((0,Me.Big)(i).gt(o))throw new lt(`Extra gas ${i} in int format, exceeded limit ${o} for '${e}' payment method`)}async function In(i,e,t){let n={},a=await t.getReceiveTransactionCost({sourceChainId:i.allbridgeChainId,destinationChainId:e.allbridgeChainId,messenger:1}),r=e.txCostAmount.maxAmount,s=b(r,V[e.chainType]).toFixed(),o=(0,Me.Big)(s).div(a.exchangeRate).toFixed(V[i.chainType],Me.Big.roundDown),A=B(o,V[i.chainType]).toFixed(0);if(n.native={int:A,float:o},a.sourceNativeTokenPrice){let c=(0,Me.Big)(o).mul(a.sourceNativeTokenPrice).toFixed(i.decimals,Me.Big.roundDown);n.stablecoin={int:B(c,i.decimals).toFixed(0),float:c}}return{extraGasMax:n,destinationChain:{gasAmountMax:{int:r,float:s},swap:{int:e.txCostAmount.swap,float:b(e.txCostAmount.swap,V[e.chainType]).toFixed()},transfer:{int:e.txCostAmount.transfer,float:b(e.txCostAmount.transfer,V[e.chainType]).toFixed()}},exchangeRate:a.exchangeRate,sourceNativeTokenPrice:a.sourceNativeTokenPrice}}function da(i){return i.sourceToken.chainSymbol!==i.destinationToken.chainSymbol}var Pt=class extends le{constructor(t,n,a){super();this.web3=t;this.api=n;this.nodeRpcUrlsConfig=a;this.chainType="EVM"}async send(t){let n=await this.buildRawTransactionSend(t);return this.sendRawTransaction(n)}async buildRawTransactionSwap(t){let n=Oe(this.chainType,t);return await this.buildRawTransactionSwapFromParams(n)}async buildRawTransactionSwapFromParams(t){let{amount:n,contractAddress:a,fromAccountAddress:r,fromTokenAddress:s,toAccountAddress:o,toTokenAddress:A,minimumReceiveAmount:c}=t,u=this.getBridgeContract(a).methods.swap(n,s,A,o,c);return Promise.resolve({from:r,to:a,data:u.encodeABI()})}async buildRawTransactionSend(t){let n=await xe(this.chainType,t,this.api),{amount:a,contractAddress:r,fromAccountAddress:s,fromTokenAddress:o,toChainId:A,toAccountAddress:c,toTokenAddress:m,messenger:u,fee:g,gasFeePaymentMethod:f,extraGas:y}=n,h="0x"+at().toString("hex"),d,p,P=g;if(y&&(P=(0,ga.Big)(P).plus(y).toFixed()),u===3){let T=await this.buildRawTransactionCctpSend(t,n,P);d=T.sendMethod,p=T.value}else{let T=this.getBridgeContract(r);f==="stablecoin"?(d=T.methods.swapAndBridge(o,a,c,A,m,h,u,P),p="0"):(d=T.methods.swapAndBridge(o,a,c,A,m,h,u,0),p=P)}return Promise.resolve({from:s,to:r,value:p,data:d.encodeABI()})}async buildRawTransactionCctpSend(t,n,a){let{amount:r,contractAddress:s,toChainId:o,toAccountAddress:A,gasFeePaymentMethod:c}=n,m=this.getContract(ea,s),u,g;if(t.destinationToken.chainType==="SOLANA"){let f,y=new xn.PublicKey(t.toAccountAddress),h=new xn.PublicKey(t.destinationToken.tokenAddress),d=await ue(y,h),p=Ne(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),t.toAccountAddress);Kt.setProvider(p);let P=await Kt.Spl.token(p).account.token.fetchNullable(d);if(P?.authority.equals(y))f=Ie(d.toBase58(),"SOLANA",this.chainType);else{let T=await p.connection.getTokenAccountsByOwner(y,{mint:h});if(T.value.length===0&&!P)f=Ie(d.toBase58(),"SOLANA",this.chainType);else if(T.value.length>0)f=Ie(T.value[0].pubkey.toBase58(),"SOLANA",this.chainType);else throw new k("Associated account has wrong owner")}c==="stablecoin"?(u=m.methods.bridgeWithWalletAddress(r,f,A,o,a),g="0"):(u=m.methods.bridgeWithWalletAddress(r,f,A,o,0),g=a)}else c==="stablecoin"?(u=m.methods.bridge(r,A,o,a),g="0"):(u=m.methods.bridge(r,A,o,0),g=a);return{sendMethod:u,value:g}}async sendRawTransaction(t){let n=await this.web3.eth.estimateGas(t),a={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:r}=await this.web3.eth.sendTransaction({...t,gas:n,...a});return{txId:r}}getContract(t,n){return new this.web3.eth.Contract(t,n)}getBridgeContract(t){return this.getContract($n,t)}};var Qt=class{constructor(e,t,n,a){this.api=e;this.nodeRpcUrlsConfig=t;this.params=n;this.tokenService=a}async approve(e,t){let n,a;t?(n=e,a=t):a=e;let r=St(a.token,a.messenger);return this.tokenService.buildRawTransactionApprove({...a,spender:r},n)}async send(e,t){return R(e.amount),I("amount",e.amount,e.sourceToken.decimals),da(e)?Yt(e.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,t).buildRawTransactionSend(e):Yt(e.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,t).buildRawTransactionSwap(e)}};var x=require("@project-serum/anchor"),C=require("@solana/web3.js"),De=require("big.js");var wt={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 fa={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 ya=require("@project-serum/anchor"),ha=O(require("big.js")),Ct=O(require("web3"));async function it(i,e){return await ya.Spl.token(e).account.token.fetch(i)}async function Ta(i,e,t){let n=await e.account.pool.fetch(t),a=n.decimals,r=(0,ha.default)(n.feeShareBp.toString()).div(1e4).toFixed(),s={aValue:n.a.toString(),dValue:n.d.toString(),totalLpAmount:n.totalLpAmount.toString(),tokenBalance:n.tokenBalance.toString(),vUsdBalance:n.vUsdBalance.toString(),accRewardPerShareP:n.accRewardPerShareP.toString()};return Ce(i,{decimals:a,feeShare:r},s)}function ba(i){let e=i.amount,t="0x"+i.recipient.toString("hex"),n=i.sourceChainId,a=i.destinationChainId,r="0x"+i.receiveToken.toString("hex"),s="0x"+i.nonce.toString("hex"),o=1,A="0x"+i.chainBridge.toString("hex"),c=Ct.default.utils.encodePacked({t:"uint256",v:e},{t:"bytes32",v:t},{t:"uint256",v:n},{t:"bytes32",v:r},{t:"uint256",v:s},{t:"uint8",v:o});if(!c)throw new k("message cannot be undefined");let m=Ct.default.utils.keccak256(Buffer.from(c.replace("0x",""),"hex")),u=Buffer.from(m.replace("0x",""),"hex");u[0]=n,u[1]=a;let g=Ct.default.utils.encodePacked({t:"bytes32",v:"0x"+u.toString("hex")},{t:"bytes32",v:A});if(!g)throw new Ze("messageWithSigner cannot be undefined");let f=Ct.default.utils.keccak256(Buffer.from(g.replace("0x",""),"hex")),y=Buffer.from(f.replace("0x",""),"hex");return y[0]=u[0],y[1]=u[1],y}var ne=require("@solana/web3.js"),Pa=require("big.js");var Dn=require("@solana/web3.js");async function Qe(i,e){return await Promise.all(i.message.addressTableLookups.map(async t=>new Dn.AddressLookupTableAccount({key:t.accountKey,state:Dn.AddressLookupTableAccount.deserialize(await e.getAccountInfo(t.accountKey).then(n=>{if(!n)throw new k("Cannot get AccountInfo");return n.data}))})))}var Jt="AUTO";async function rt(i,e,t){let n=new ne.Connection(t,"confirmed"),a=(await n.simulateTransaction(i)).value.unitsConsumed;await wa(i.instructions,a,e,n)}async function Sa(i,e,t){let n=new ne.Connection(t,"confirmed"),a=await Qe(i,n),r=ne.TransactionMessage.decompile(i.message,{addressLookupTableAccounts:a});if(i.serialize().length>1232)throw new gt;await wa(r.instructions,769230,e,n),i.message=r.compileToV0Message(a)}async function wa(i,e,t,n){if(e>0){let a=Si(e,i);if(t?.solana){let r=t.solana;if(r===Jt)await Fn(i,n);else if("pricePerUnitInMicroLamports"in r)await Fn(i,n,r.pricePerUnitInMicroLamports);else{let s=(0,Pa.Big)(r.extraFeeInLamports).div(a).mul(ft(6)).toFixed(0);await Fn(i,n,s)}}}}function Si(i,e){let t=e.findIndex(r=>r.programId.equals(ne.ComputeBudgetProgram.programId)&&ne.ComputeBudgetInstruction.decodeInstructionType(r)==="SetComputeUnitLimit"),n=Number((i*1.3).toFixed(0)),a=ne.ComputeBudgetProgram.setComputeUnitLimit({units:n});return t>=0?e[t]=a:e.push(a),n.toString()}async function Fn(i,e,t){let n=i.findIndex(s=>s.programId.equals(ne.ComputeBudgetProgram.programId)&&ne.ComputeBudgetInstruction.decodeInstructionType(s)==="SetComputeUnitPrice"),a=BigInt(t||await wi(e)),r=ne.ComputeBudgetProgram.setComputeUnitPrice({microLamports:a});return n>=0?i[n]=r:i.push(r),a.toString()}async function wi(i){let e=await i.getRecentPrioritizationFees(),t=0;for(let n of e)t+=n.prioritizationFee;return(t/e.length).toFixed(0)}var Ca=require("@solana/spl-token"),Ye=require("@solana/web3.js"),st=O(require("axios"));var Ht=class{constructor(e){this.connection=new Ye.Connection(e)}async getJupiterSwapTx(e,t,n){let a;try{a=await st.default.get(`https://quote-api.jup.ag/v6/quote?inputMint=${t}
1
+ "use strict";var Ha=Object.create;var Ut=Object.defineProperty;var za=Object.getOwnPropertyDescriptor;var ja=Object.getOwnPropertyNames;var qa=Object.getPrototypeOf,$a=Object.prototype.hasOwnProperty;var ei=(i,e)=>{for(var t in e)Ut(i,t,{get:e[t],enumerable:!0})},Nn=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of ja(e))!$a.call(i,a)&&a!==t&&Ut(i,a,{get:()=>e[a],enumerable:!(n=za(e,a))||n.enumerable});return i};var O=(i,e,t)=>(t=i!=null?Ha(qa(i)):{},Nn(e||!i||!i.__esModule?Ut(t,"default",{value:i,enumerable:!0}):t,i)),ti=i=>Nn(Ut({},"__esModule",{value:!0}),i);var Gi={};ei(Gi,{AddressStatus:()=>Vt,AllbridgeCoreSdk:()=>Un,AmountFormat:()=>bt,AmountNotEnoughError:()=>Ge,ArgumentInvalidDecimalsError:()=>pt,CCTPDoesNotSupportedError:()=>re,ChainSymbol:()=>me,ChainType:()=>N,ErrorCode:()=>Vn,ExtraGasMaxLimitExceededError:()=>lt,FeePaymentMethod:()=>Ke,InsufficientPoolLiquidityError:()=>we,InvalidAmountError:()=>ut,InvalidGasFeePaymentOptionError:()=>je,InvalidMessengerOptionError:()=>fn,InvalidTxError:()=>Ze,JupiterError:()=>Y,Messenger:()=>ke,MethodNotSupportedError:()=>J,NodeRpcUrlNotInitializedError:()=>dt,SdkError:()=>k,SdkRootError:()=>F,SolanaAutoTxFee:()=>Jt,TimeoutError:()=>$e,TxTooLargeError:()=>gt,VerifyTxError:()=>qe,mainnet:()=>mt,nodeRpcUrlsDefault:()=>si,nodeUrlsDefault:()=>ri,testnet:()=>ni,testnetNodeRpcUrlsDefault:()=>ii,testnetNodeUrlsDefault:()=>ai});module.exports=ti(Gi);var ni={coreApiUrl:"https://core-dev.a11bd.net",coreApiQueryParams:{},coreApiHeaders:{},wormholeMessengerProgramId:"3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5",solanaLookUpTable:"C3jAxHRTZjM2Bs7EqPir4nvrT8zKtpcW7RvGR9R2qKtN",sorobanNetworkPassphrase:"Test SDF Network ; September 2015",tronJsonRpc:"https://nile.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{SPL:0,ARB:3,AMO:7}}},ai={solanaRpcUrl:"https://api.devnet.solana.com",tronRpcUrl:"https://nile.trongrid.io"},ii={SOL:"https://api.devnet.solana.com",TRX:"https://nile.trongrid.io",SRB:"https://soroban-testnet.stellar.org",STLR:"https://horizon-testnet.stellar.org"};var mt={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},wormholeMessengerProgramId:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",solanaLookUpTable:"2JcBAEVnAwVo4u8d61iqgHPrzZuugur7cVTjWubsVLHj",sorobanNetworkPassphrase:"Public Global Stellar Network ; September 2015",tronJsonRpc:"https://api.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{ETH:0,AVA:1,OPT:2,ARB:3,SOL:5,BAS:6,POL:7}}},ri={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},si={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org"};var he=require("big.js");var Nt=class{constructor(e){this.apiClient=e}async getChainDetailsMap(){return(await this.apiClient.getTokenInfo()).chainDetailsMap}async tokens(){let e=await this.getChainDetailsMap();return Object.values(e).flatMap(t=>t.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(e,t){return this.apiClient.getGasBalance(e,t)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(e,t){return await this.apiClient.getTransferStatus(e,t)}async getReceiveTransactionCost(e){return await this.apiClient.getReceiveTransactionCost(e)}async getPoolInfoMap(e){return await this.apiClient.getPoolInfoMap(e)}};var zn=O(require("axios"));var On="3.15.4-alpha.1";var me=(p=>(p.GRL="GRL",p.SPL="SPL",p.HOL="HOL",p.BSC="BSC",p.ETH="ETH",p.BAS="BAS",p.SOL="SOL",p.TRX="TRX",p.POL="POL",p.MUM="MUM",p.AMO="AMO",p.ARB="ARB",p.CEL="CEL",p.AVA="AVA",p.SRB="SRB",p.STLR="STLR",p.OPT="OPT",p))(me||{}),N=(a=>(a.EVM="EVM",a.SOLANA="SOLANA",a.TRX="TRX",a.SRB="SRB",a))(N||{}),V={EVM:18,SOLANA:9,TRX:6,SRB:7},z={GRL:{chainSymbol:"GRL",chainId:"0x5",name:"Goerli",chainType:"EVM"},SPL:{chainSymbol:"SPL",chainId:"0xaa36a7",name:"Sepolia",chainType:"EVM"},HOL:{chainSymbol:"HOL",chainId:"0x4268",name:"Hole\u0161ky",chainType:"EVM"},BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},MUM:{chainSymbol:"MUM",chainId:"0x13881",name:"Mumbai",chainType:"EVM"},AMO:{chainSymbol:"AMO",chainId:"0x13882",name:"Amoy",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"}};var l=require("big.js"),Ot=O(require("bn.js"));var F=class extends Error{constructor(e,t){super(t),this.errorCode=e}},k=class extends F{constructor(e){super("SdkError",e)}},ut=class extends F{constructor(e){super("InvalidAmountError",e)}},Ge=class extends F{constructor(e){super("AmountNotEnoughError",e)}},we=class extends F{constructor(e){super("InsufficientPoolLiquidityError",e)}},Y=class extends F{constructor(e){super("JupiterError",e)}},je=class extends F{constructor(e){super("InvalidGasFeePaymentOptionError",e)}},fn=class extends F{constructor(e){super("InvalidMessengerOptionError",e)}},J=class extends F{constructor(e){super("MethodNotSupportedError",e)}},qe=class extends F{constructor(e){super("VerifyTxError",e)}},Ze=class extends F{constructor(e){super("InvalidTxError",e)}},lt=class extends F{constructor(e){super("ExtraGasMaxLimitExceededError",e)}},pt=class extends F{constructor(e,t,n){super("ArgumentInvalidDecimalsError",`Argument '${e}' decimals '${t}' cannot be greater than '${n}'`)}},$e=class extends F{constructor(e){super("TimeoutError",e)}},dt=class extends F{constructor(e){super("NodeRpcUrlNotInitializedError",`For chain '${e}' Node RPC URL not initialized`)}},re=class extends F{constructor(e){super("CCTPDoesNotSupportedError",e)}},gt=class extends F{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},Vn=(d=>(d.SDK_ERROR="SdkError",d.INVALID_AMOUNT_ERROR="InvalidAmountError",d.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",d.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",d.JUPITER_ERROR="JupiterError",d.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",d.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",d.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",d.VERIFY_TX_ERROR="VerifyTxError",d.INVALID_TX_ERROR="InvalidTxError",d.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",d.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",d.TIMEOUT_ERROR="TimeoutError",d.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",d.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",d.TX_TOO_LARGE="TxTooLargeError",d))(Vn||{});function yn(i,e){return(0,l.Big)(100).minus((0,l.Big)(100).times(e).div(i)).toNumber()}function _e(i,e){return Ee(i,e,3).round(0,l.Big.roundDown)}function ee(i,e){return Ee(i,3,e)}function Ee(i,e,t){let n=(0,l.Big)(t).minus(e).toNumber();return(0,l.Big)(i).times(ft(n))}function ft(i){return(0,l.Big)(10).pow(i)}function B(i,e){return(0,l.Big)(i).times(ft(e))}function b(i,e){let t=(0,l.Big)(i);return t.eq(0)?(0,l.Big)(0):(0,l.Big)(t).div(ft(e))}function te(i){return b((0,l.Big)(i.tokenBalance).minus(i.vUsdBalance).toFixed(),3).div(2).toFixed()}function Ce(i,{feeShare:e,decimals:t},n){let a=(0,l.Big)(i);if(a.lte(0))return"0";let r=a.times(e),s=a.minus(r),o=_e(s,t),A=(0,l.Big)(n.tokenBalance).plus(o),c=Be(A,n.aValue,n.dValue);return(0,l.Big)(n.vUsdBalance).minus(c).round(0,l.Big.roundDown).toFixed()}function yt(i,{feeShare:e,decimals:t},n){let a=(0,l.Big)(i);if(a.lte(0))return(0,l.Big)(0).toFixed();let r=a.plus(n.vUsdBalance),s=Be(r,n.aValue,n.dValue),o=ee((0,l.Big)(n.tokenBalance).minus(s),t),A=(0,l.Big)(o).times(e);return(0,l.Big)(o).minus(A).round(0,l.Big.roundDown).toFixed()}function Gn(i,e){let t=(0,l.Big)(i);if(t.lte(0))return e;let n=t.plus(e.vUsdBalance),a=Be(n,e.aValue,e.dValue);return{aValue:e.aValue,dValue:e.dValue,tokenBalance:a.toFixed(0),vUsdBalance:n.toFixed(0)}}function Zn(i,{feeShare:e,decimals:t},n){if((0,l.Big)(i).lte(0))return(0,l.Big)(0);let a=(0,l.Big)(n.vUsdBalance).minus(i);if(a.lte(0))throw new we;let r=Be(a,n.aValue,n.dValue),s=(0,l.Big)(r).minus(n.tokenBalance),o=ee(s,t),A=(0,l.Big)(e).div((0,l.Big)(1).minus(e)),c=(0,l.Big)(o).times(A).round(0,l.Big.roundUp);return(0,l.Big)(o).plus(c).round(0,l.Big.roundDown)}function _n(i,{feeShare:e,decimals:t},n){if((0,l.Big)(i).lte(0))return(0,l.Big)(0);let a=(0,l.Big)(e).div((0,l.Big)(1).minus(e)),r=(0,l.Big)(i).times(a).round(0,l.Big.roundUp),s=(0,l.Big)(i).plus(r),o=_e(s,t),A=(0,l.Big)(n.tokenBalance).minus(o);if(A.lte(0))throw new we;let c=Be(A,n.aValue,n.dValue);return(0,l.Big)(c).minus(n.vUsdBalance).round(0,l.Big.roundDown)}function Be(i,e,t){let n=(0,l.Big)(4).times(e).times((0,l.Big)(t).minus(i)).minus(t),a=(0,l.Big)(t).pow(3),r=n.pow(2),s=(0,l.Big)(i).times((0,l.Big)(i).times(r).plus((0,l.Big)(4).times(e).times(a))).sqrt().round(0,l.Big.roundDown),o=(0,l.Big)(8).times(e).times(i),A=n.times(i).plus(s).div(o).round(0,l.Big.roundDown);return A.eq(0)?(0,l.Big)(0):A.plus(1)}function Ln(i,e,t,n){let a=new Ot.default(i),r=new Ot.default(t),s=new Ot.default(e);return a.mul(r).shrn(n).sub(s).toString()}function Xn(i){return(0,l.Big)(i).gt(0)?`${Number((0,l.Big)(i).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function Kn(i,e,t){let n=(0,l.Big)(e).times(t),a=(0,l.Big)(e).plus(t),r=(0,l.Big)(8).times(i).times(n).times(a),s=n.times((0,l.Big)(16).times(i).minus(4)).div(3),o=r.times(r),A=s.times(s).times(s),c=o.plus(A),m=(0,l.Big)(c).sqrt(),u=(0,l.Big)(Math.cbrt(+r.plus(m).toFixed())),g=(0,l.Big)(Math.cbrt(+r.minus(m).toFixed()));return u.plus(g).toFixed()}var Vt=(s=>(s.OK="OK",s.INVALID="INVALID",s.FORBIDDEN="FORBIDDEN",s.UNINITIALIZED="UNINITIALIZED",s.CONTRACT_ADDRESS="CONTRACT_ADDRESS",s.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",s))(Vt||{});var ke=(n=>(n[n.ALLBRIDGE=1]="ALLBRIDGE",n[n.WORMHOLE=2]="WORMHOLE",n[n.CCTP=3]="CCTP",n))(ke||{});function Qn(i){return Object.entries(i).reduce((e,t)=>{let n=t[0],a=t[1],r=ui(n,a);return r&&(e[n]=r),e},{})}function Yn(i){let e={};for(let[t,n]of Object.entries(i)){let a=t;for(let r of n.tokens){let s=et({chainSymbol:a,poolAddress:r.poolAddress}),o=te(r.poolInfo);e[s]={...r.poolInfo,imbalance:o}}}return e}function oi(i,e){let{name:t,...n}=i,{poolInfo:a,...r}=e;return{...r,...n,chainName:t}}function Ai(i){switch(i){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;default:return null}}function ci(i){return Object.entries(i).reduce((e,[t,n])=>(e[t]=mi(n),e),{})}function mi(i){return Object.entries(i).reduce((e,[t,n])=>{let a=Ai(t);return a&&(e[a]=n),e},{})}function ui(i,e){let t=z[i];if(!t)return null;let n={...t,allbridgeChainId:e.chainId,bridgeAddress:e.bridgeAddress,transferTime:ci(e.transferTime),txCostAmount:e.txCostAmount,confirmations:e.confirmations};return{...n,tokens:e.tokens.map(a=>oi(n,a))}}function et(i){return i.chainSymbol+"_"+i.poolAddress}function Jn(i){let e=[];for(let[t,n]of Object.entries(i)){let a=t;for(let r of n.tokens)e.push({chainSymbol:a,poolAddress:r.poolAddress})}return e}function Hn(i){let e={};for(let[t,n]of Object.entries(i)){let a=t;for(let[r,s]of Object.entries(n))s.imbalance=te(s),e[et({chainSymbol:a,poolAddress:r})]=s}return e}var Gt=class{constructor(e){this.api=zn.default.create({baseURL:e.coreApiUrl,headers:{Accept:"application/json",...e.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+On},params:e.coreApiQueryParams})}async getTokenInfo(){let{data:e}=await this.api.get("/token-info");return{chainDetailsMap:Qn(e),poolInfoMap:Yn(e)}}async getPendingInfo(){let{data:e}=await this.api.get("/pending-info");return e}async getGasBalance(e,t){let{data:n}=await this.api.get(`/check/${e}/${t}`);return n}async getTransferStatus(e,t){let{data:n}=await this.api.get(`/chain/${e}/${t}`);return n}async getReceiveTransactionCost(e){let{data:t}=await this.api.post("/receive-fee",e,{headers:{"Content-Type":"application/json"}});return{exchangeRate:t.exchangeRate,fee:t.fee,sourceNativeTokenPrice:t.sourceNativeTokenPrice}}async getPoolInfoMap(e){let t=e instanceof Array?e:[e],{data:n}=await this.api.post("/pool-info",{pools:t},{headers:{"Content-Type":"application/json"}});return Hn(n)}};var li=(i,e)=>i!==null&&Object.prototype.hasOwnProperty.call(i,e),jn="__cache__",hn=function(i){return typeof i!="string"?jn+JSON.stringify(i):jn+i},Tn=class{constructor(e={defaultTtl:60*1e3}){this.cache={},this.defaultTtl=e.defaultTtl||60*1e3}put(e,t,n){let a=(n?n.ttl:void 0)||this.defaultTtl,r=(n?n.callback:void 0)||function(){},s=hn(e),o=this.cache[s];o&&clearTimeout(o.handle);let A=setTimeout(()=>this.remove(e),a);this.cache[s]={handle:A,data:t,callback:r}}get(e){let t=this.cache[hn(e)];return t&&t.data}remove(e){let t=hn(e),n=this.cache[t];n&&(clearTimeout(n.handle),delete this.cache[t],n.callback(e,n.data))}clear(){for(let e in this.cache)li(this.cache,e)&&clearTimeout(this.cache[e].handle);this.cache={}}size(){return Object.keys(this.cache).length}},Le=Tn;var bn=20*1e3,pi=55*1e3,Zt=class{constructor(e){this.apiClient=e;this.tokenInfoCache=new Le({defaultTtl:pi}),this.receivedTransactionCache=new Le({defaultTtl:bn}),this.pendingInfoCache=new Le({defaultTtl:bn}),this.gasBalanceCache=new Le({defaultTtl:bn})}getTokenInfo(){let e="TOKEN_INFO_CACHE_KEY",t=this.tokenInfoCache.get(e);if(t)return t;let n=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(e,n),n}async getGasBalance(e,t){let n=`GAS_BALANCE_${e}_${t}`,a=this.gasBalanceCache.get(n);if(a)return a;let r=this.apiClient.getGasBalance(e,t);return this.gasBalanceCache.put(n,r),r}async getPendingInfo(){let e="PENDING_INFO_CACHE_KEY",t=this.pendingInfoCache.get(e);if(t)return t;let n=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(e,n),n}async getReceiveTransactionCost(e){let t=`RECEIVE_TX_COST_${e.sourceChainId}_${e.destinationChainId}_${e.messenger}`,n=this.receivedTransactionCache.get(t);if(n)return n;let a=await this.apiClient.getReceiveTransactionCost(e);return this.receivedTransactionCache.put(t,a),a}async getTransferStatus(e,t){return this.apiClient.getTransferStatus(e,t)}async getPoolInfoMap(e){return this.apiClient.getPoolInfoMap(e)}};var di=55*1e3,_t=class{constructor(e){this.client=e;this.poolInfoCache=new Pn}async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(e,t){return this.client.getTransferStatus(e,t)}getReceiveTransactionCost(e){return this.client.getReceiveTransactionCost(e)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(e,t){return this.client.getGasBalance(e,t)}async getPoolInfoByKey(e){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let t=this.poolInfoCache.get(e);if(t)return t;{let n=await this.client.getPoolInfoMap(e);return this.poolInfoCache.putAll(n),n[et(e)]}}async refreshPoolInfo(e){let t;if(e)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),t=await this.client.getPoolInfoMap(e);else{let n=await this.client.getChainDetailsMapAndPoolInfoMap();t=await this.client.getPoolInfoMap(Jn(n.chainDetailsMap))}this.poolInfoCache.putAll(t)}cachePut(e,t){this.poolInfoCache.put(et(e),t)}},Pn=class{constructor(){this.cache=new Le({defaultTtl:di})}putAll(e){for(let[t,n]of Object.entries(e))this.cache.put(t,n)}putAllIfNotExists(e){for(let[t,n]of Object.entries(e))this.cache.get(t)||this.cache.put(t,n)}put(e,t){this.cache.put(e,t)}get(e){let t=et(e);return this.cache.get(t)}};var Ia=O(require("tronweb")),xa=O(require("web3"));var Sn=require("big.js");async function G(i,e){return await i.getPoolInfoByKey({chainSymbol:e.chainSymbol,poolAddress:e.poolAddress})}function R(i){if((0,Sn.Big)(i).lte(0))throw new ut("Amount must be greater than zero")}function I(i,e,t){let n=(0,Sn.Big)(e).toFixed();if(n.split(".").length==2&&n.split(".")[1].length>t)throw new pt(i,n.split(".")[1].length,t)}async function Lt(i,e,t){return await Promise.race([i,new Promise((n,a)=>{setTimeout(()=>a(new $e(e)),t)})])}async function wn(i,e,t,n){if(t<1)throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${t} was received.`);let a=0;for(;;)try{return await Lt(i(),e,n)}catch{if(++a>=t)throw new $e(e)}}async function qn(i,e,t,n=1.5,a=!1){let r=[],s=0;if(r.push(await i()),!e(r[r.length-1]))return r;let o=new Date(Date.now()+t*1e3).valueOf(),A=1e3,c=A;for(;Date.now()<o&&e(r[r.length-1]);)s++,a&&console.info(`Waiting ${A}ms before trying again (bringing the total wait time to ${c}ms so far, of total ${t*1e3}ms)`),await new Promise(m=>setTimeout(m,A)),A=A*n,new Date(Date.now()+A).valueOf()>o&&(A=o-Date.now(),a&&console.info(`was gonna wait too long; new waitTime: ${A}ms`)),c=A+c,r.push(await i(r[r.length-1])),a&&e(r[r.length-1])&&console.info(`${s}. Called ${i.name}; ${r.length} prev attempts. Most recent: ${JSON.stringify(r[r.length-1],null,2)}`);return r}var Kt=O(require("@project-serum/anchor")),xn=require("@solana/web3.js"),ga=require("big.js");var $n=[{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 ea=[{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 X=O(require("@project-serum/anchor")),K=require("@solana/web3.js");async function ue(i,e){return X.utils.token.associatedAddress({mint:e,owner:i})}async function Ue(i){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("config")],i);return e}async function ta(i,e){let[t]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("lock"),Uint8Array.from(i)],e);return t}async function ht(i,e){let[t]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([i])],e);return t}async function tt(i){let e=await Ue(i),[t]=await K.PublicKey.findProgramAddress([e.toBuffer()],i);return t}async function na(i,e){let[t]=await K.PublicKey.findProgramAddress([i.toBuffer()],e);return t}async function nt(i,e){let[t]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("token"),i.toBytes()],e);return t}async function aa(i,e,t){let[n]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("other_bridge_token"),Buffer.from([i]),e],t);return n}async function Cn(i,e){let[t]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([i])],e);return t}async function Bn(i,e){let[t]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([i])],e);return t}async function ia(i,e){let[t]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("sent_message"),i],e);return t}async function kn(i,e,t){let[n]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("user_deposit"),e.toBytes(),i.toBytes()],t);return n}async function ra(i,e){let[t]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("cctp_bridge"),i.toBytes()],e);return t}async function sa(i,e){let[t]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("token"),i.toBytes()],e);return t}function oa(i,e){let[t]=K.PublicKey.findProgramAddressSync([X.utils.bytes.utf8.encode("lock"),e.toBuffer()],i);return t}function Aa(i,e,t,n){let a=Xe("message_transmitter",t),r=Xe("token_messenger",n),s=Xe("__event_authority",n),o=Xe("token_minter",n),A=Xe("local_token",n,[e]),c=Xe("remote_token_messenger",n,[i.toString()]),m=Xe("sender_authority",n);return{messageTransmitterAccount:a,tokenMessenger:r,tokenMessengerEventAuthority:s,tokenMinter:o,localToken:A,remoteTokenMessengerKey:c,authorityPda:m}}function Xe(i,e,t=[]){let n=[Buffer.from(X.utils.bytes.utf8.encode(i))];for(let r of t)typeof r=="string"?n.push(Buffer.from(X.utils.bytes.utf8.encode(r))):Array.isArray(r)?n.push(Buffer.from(r)):Buffer.isBuffer(r)?n.push(r):n.push(r.toBuffer());return K.PublicKey.findProgramAddressSync(n,e)[0]}var ca=require("@project-serum/anchor"),Xt=require("@solana/web3.js");function Ne(i,e){let t=new Xt.Connection(i,"confirmed"),n=new Xt.PublicKey(e);return new ca.AnchorProvider(t,{publicKey:n},{preflightCommitment:"confirmed",commitment:"confirmed"})}var le=class{};var ma=require("@solana/web3.js"),Me=require("big.js"),Mn=O(require("randombytes")),ua=require("stellar-sdk"),la=O(require("tronweb"));function Ie(i,e,t){let n;switch(e){case"EVM":{n=yi(i);break}case"SOLANA":{n=new ma.PublicKey(i).toBuffer();break}case"TRX":{n=hi(i);break}case"SRB":{n=new ua.Address(i).toBuffer();break}}switch(t){case"EVM":return"0x"+n.toString("hex");case"SOLANA":return Array.from(n);case"TRX":return n.toJSON().data;case"SRB":return n.toJSON().data}}function pa(i){return Buffer.from(i.replace(/^0x/i,""),"hex")}function yi(i){let t=pa(i);return Buffer.concat([Buffer.alloc(32-t.length,0),t],32)}function hi(i){let e=Tt(i),t=pa(e);return Ti(t,32)}function Tt(i){return Buffer.from(la.utils.crypto.decodeBase58Address(i)).toString("hex").replace(/^41/,"0x")}function Ti(i,e){if(i.length>=e)return i;let t=Buffer.alloc(e,0);return i.copy(t,e-i.length),t}function at(){return(0,Mn.default)(32)}function vn(){let i=(0,Mn.default)(32).readBigInt64BE();return i<0?i*-1n:i}function Oe(i,e){let t={},n=e.sourceToken;return t.amount=B(e.amount,n.decimals).toFixed(),t.contractAddress=n.bridgeAddress,t.fromAccountAddress=e.fromAccountAddress,t.fromTokenAddress=Ie(n.tokenAddress,i,i),t.toAccountAddress=e.toAccountAddress,t.toTokenAddress=Ie(e.destinationToken.tokenAddress,i,i),t.minimumReceiveAmount=e.minimumReceiveAmount?B(e.minimumReceiveAmount,e.destinationToken.decimals).toFixed():"0",t}async function xe(i,e,t){let n={};n.fromChainId=e.sourceToken.allbridgeChainId,n.fromChainSymbol=e.sourceToken.chainSymbol;let a=z[e.destinationToken.chainSymbol].chainType;n.fromTokenAddress=e.sourceToken.tokenAddress,n.toChainId=e.destinationToken.allbridgeChainId,n.toTokenAddress=e.destinationToken.tokenAddress,e.gasFeePaymentMethod==="stablecoin"?n.gasFeePaymentMethod="stablecoin":n.gasFeePaymentMethod="native";let r=e.sourceToken;if(e.messenger===3){if(!r.cctpAddress||!e.destinationToken.cctpAddress)throw new re("Such route does not support CCTP protocol");n.contractAddress=r.cctpAddress}else n.contractAddress=r.bridgeAddress;n.messenger=e.messenger,n.fromAccountAddress=e.fromAccountAddress,n.amount=B(e.amount,r.decimals).toFixed();let{fee:s,feeFormat:o}=e;if(!s){let u=(await Rn(n.fromChainId,e.sourceToken.chainType,n.toChainId,r.decimals,n.messenger,t))[n.gasFeePaymentMethod];if(!u)throw new je;s=u.int,o="int"}if(o=="float")switch(n.gasFeePaymentMethod){case"native":n.fee=B(s,V[r.chainType]).toFixed(0);break;case"stablecoin":n.fee=B(s,r.decimals).toFixed(0);break}else n.fee=s;let{extraGas:A,extraGasFormat:c}=e;if(A&&+A>0){if(c=="float")switch(n.gasFeePaymentMethod){case"native":n.extraGas=B(A,V[r.chainType]).toFixed(0);break;case"stablecoin":n.extraGas=B(A,r.decimals).toFixed(0);break}else n.extraGas=A;await Pi(n.extraGas,n.gasFeePaymentMethod,r,e.destinationToken,t)}return n.fromTokenAddress=Ie(n.fromTokenAddress,i,i),n.toAccountAddress=Ie(e.toAccountAddress,a,i),n.toTokenAddress=Ie(n.toTokenAddress,a,i),n.gasFeePaymentMethod=="stablecoin"&&bi(n.amount,r.decimals,n.fee,n.extraGas),n}function bi(i,e,t,n){let a=(0,Me.Big)(i).minus(t).minus(n??0);if(a.lte(0))throw new Ge(`Amount not enough to pay fee, ${b((0,Me.Big)(a).minus(1).neg(),e).toFixed()} stables is missing`)}async function Rn(i,e,t,n,a,r){let s=await r.getReceiveTransactionCost({sourceChainId:i,destinationChainId:t,messenger:a}),o={native:{int:s.fee,float:b(s.fee,V[e]).toFixed()}};if(s.sourceNativeTokenPrice){let A=Ee(new Me.Big(s.fee).mul(s.sourceNativeTokenPrice),V[e],n).toFixed(0,Me.Big.roundUp);o.stablecoin={int:A,float:b(A,n).toFixed()}}return o}async function Pi(i,e,t,n,a){let s=(await In(t,n,a)).extraGasMax[e];if(!s)throw new je(`Impossible to pay extra gas by '${e}' payment method`);let o=s.int;if((0,Me.Big)(i).gt(o))throw new lt(`Extra gas ${i} in int format, exceeded limit ${o} for '${e}' payment method`)}async function In(i,e,t){let n={},a=await t.getReceiveTransactionCost({sourceChainId:i.allbridgeChainId,destinationChainId:e.allbridgeChainId,messenger:1}),r=e.txCostAmount.maxAmount,s=b(r,V[e.chainType]).toFixed(),o=(0,Me.Big)(s).div(a.exchangeRate).toFixed(V[i.chainType],Me.Big.roundDown),A=B(o,V[i.chainType]).toFixed(0);if(n.native={int:A,float:o},a.sourceNativeTokenPrice){let c=(0,Me.Big)(o).mul(a.sourceNativeTokenPrice).toFixed(i.decimals,Me.Big.roundDown);n.stablecoin={int:B(c,i.decimals).toFixed(0),float:c}}return{extraGasMax:n,destinationChain:{gasAmountMax:{int:r,float:s},swap:{int:e.txCostAmount.swap,float:b(e.txCostAmount.swap,V[e.chainType]).toFixed()},transfer:{int:e.txCostAmount.transfer,float:b(e.txCostAmount.transfer,V[e.chainType]).toFixed()}},exchangeRate:a.exchangeRate,sourceNativeTokenPrice:a.sourceNativeTokenPrice}}function da(i){return i.sourceToken.chainSymbol!==i.destinationToken.chainSymbol}var Pt=class extends le{constructor(t,n,a){super();this.web3=t;this.api=n;this.nodeRpcUrlsConfig=a;this.chainType="EVM"}async send(t){let n=await this.buildRawTransactionSend(t);return this.sendRawTransaction(n)}async buildRawTransactionSwap(t){let n=Oe(this.chainType,t);return await this.buildRawTransactionSwapFromParams(n)}async buildRawTransactionSwapFromParams(t){let{amount:n,contractAddress:a,fromAccountAddress:r,fromTokenAddress:s,toAccountAddress:o,toTokenAddress:A,minimumReceiveAmount:c}=t,u=this.getBridgeContract(a).methods.swap(n,s,A,o,c);return Promise.resolve({from:r,to:a,data:u.encodeABI()})}async buildRawTransactionSend(t){let n=await xe(this.chainType,t,this.api),{amount:a,contractAddress:r,fromAccountAddress:s,fromTokenAddress:o,toChainId:A,toAccountAddress:c,toTokenAddress:m,messenger:u,fee:g,gasFeePaymentMethod:f,extraGas:y}=n,h="0x"+at().toString("hex"),d,p,P=g;if(y&&(P=(0,ga.Big)(P).plus(y).toFixed()),u===3){let T=await this.buildRawTransactionCctpSend(t,n,P);d=T.sendMethod,p=T.value}else{let T=this.getBridgeContract(r);f==="stablecoin"?(d=T.methods.swapAndBridge(o,a,c,A,m,h,u,P),p="0"):(d=T.methods.swapAndBridge(o,a,c,A,m,h,u,0),p=P)}return Promise.resolve({from:s,to:r,value:p,data:d.encodeABI()})}async buildRawTransactionCctpSend(t,n,a){let{amount:r,contractAddress:s,toChainId:o,toAccountAddress:A,gasFeePaymentMethod:c}=n,m=this.getContract(ea,s),u,g;if(t.destinationToken.chainType==="SOLANA"){let f,y=new xn.PublicKey(t.toAccountAddress),h=new xn.PublicKey(t.destinationToken.tokenAddress),d=await ue(y,h),p=Ne(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),t.toAccountAddress);Kt.setProvider(p);let P=await Kt.Spl.token(p).account.token.fetchNullable(d);if(P?.authority.equals(y))f=Ie(d.toBase58(),"SOLANA",this.chainType);else{let T=await p.connection.getTokenAccountsByOwner(y,{mint:h});if(T.value.length===0&&!P)f=Ie(d.toBase58(),"SOLANA",this.chainType);else if(T.value.length>0)f=Ie(T.value[0].pubkey.toBase58(),"SOLANA",this.chainType);else throw new k("Associated account has wrong owner")}c==="stablecoin"?(u=m.methods.bridgeWithWalletAddress(r,f,A,o,a),g="0"):(u=m.methods.bridgeWithWalletAddress(r,f,A,o,0),g=a)}else c==="stablecoin"?(u=m.methods.bridge(r,A,o,a),g="0"):(u=m.methods.bridge(r,A,o,0),g=a);return{sendMethod:u,value:g}}async sendRawTransaction(t){let n=await this.web3.eth.estimateGas(t),a={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:r}=await this.web3.eth.sendTransaction({...t,gas:n,...a});return{txId:r}}getContract(t,n){return new this.web3.eth.Contract(t,n)}getBridgeContract(t){return this.getContract($n,t)}};var Qt=class{constructor(e,t,n,a){this.api=e;this.nodeRpcUrlsConfig=t;this.params=n;this.tokenService=a}async approve(e,t){let n,a;t?(n=e,a=t):a=e;let r=St(a.token,a.messenger);return this.tokenService.buildRawTransactionApprove({...a,spender:r},n)}async send(e,t){return R(e.amount),I("amount",e.amount,e.sourceToken.decimals),da(e)?Yt(e.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,t).buildRawTransactionSend(e):Yt(e.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,t).buildRawTransactionSwap(e)}};var x=require("@project-serum/anchor"),C=require("@solana/web3.js"),De=require("big.js");var wt={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 fa={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 ya=require("@project-serum/anchor"),ha=O(require("big.js")),Ct=O(require("web3"));async function it(i,e){return await ya.Spl.token(e).account.token.fetch(i)}async function Ta(i,e,t){let n=await e.account.pool.fetch(t),a=n.decimals,r=(0,ha.default)(n.feeShareBp.toString()).div(1e4).toFixed(),s={aValue:n.a.toString(),dValue:n.d.toString(),totalLpAmount:n.totalLpAmount.toString(),tokenBalance:n.tokenBalance.toString(),vUsdBalance:n.vUsdBalance.toString(),accRewardPerShareP:n.accRewardPerShareP.toString()};return Ce(i,{decimals:a,feeShare:r},s)}function ba(i){let e=i.amount,t="0x"+i.recipient.toString("hex"),n=i.sourceChainId,a=i.destinationChainId,r="0x"+i.receiveToken.toString("hex"),s="0x"+i.nonce.toString("hex"),o=1,A="0x"+i.chainBridge.toString("hex"),c=Ct.default.utils.encodePacked({t:"uint256",v:e},{t:"bytes32",v:t},{t:"uint256",v:n},{t:"bytes32",v:r},{t:"uint256",v:s},{t:"uint8",v:o});if(!c)throw new k("message cannot be undefined");let m=Ct.default.utils.keccak256(Buffer.from(c.replace("0x",""),"hex")),u=Buffer.from(m.replace("0x",""),"hex");u[0]=n,u[1]=a;let g=Ct.default.utils.encodePacked({t:"bytes32",v:"0x"+u.toString("hex")},{t:"bytes32",v:A});if(!g)throw new Ze("messageWithSigner cannot be undefined");let f=Ct.default.utils.keccak256(Buffer.from(g.replace("0x",""),"hex")),y=Buffer.from(f.replace("0x",""),"hex");return y[0]=u[0],y[1]=u[1],y}var ne=require("@solana/web3.js"),Pa=require("big.js");var Dn=require("@solana/web3.js");async function Qe(i,e){return await Promise.all(i.message.addressTableLookups.map(async t=>new Dn.AddressLookupTableAccount({key:t.accountKey,state:Dn.AddressLookupTableAccount.deserialize(await e.getAccountInfo(t.accountKey).then(n=>{if(!n)throw new k("Cannot get AccountInfo");return n.data}))})))}var Jt="AUTO";async function rt(i,e,t){let n=new ne.Connection(t,"confirmed"),a=(await n.simulateTransaction(i)).value.unitsConsumed;await wa(i.instructions,a,e,n)}async function Sa(i,e,t){let n=new ne.Connection(t,"confirmed"),a=await Qe(i,n),r=ne.TransactionMessage.decompile(i.message,{addressLookupTableAccounts:a});if(i.serialize().length>1232)throw new gt;await wa(r.instructions,769230,e,n),i.message=r.compileToV0Message(a)}async function wa(i,e,t,n){if(e>0){let a=Si(e,i);if(t?.solana){let r=t.solana;if(r===Jt)await Fn(i,n);else if("pricePerUnitInMicroLamports"in r)await Fn(i,n,r.pricePerUnitInMicroLamports);else{let s=(0,Pa.Big)(r.extraFeeInLamports).div(a).mul(ft(6)).toFixed(0);await Fn(i,n,s)}}}}function Si(i,e){let t=e.findIndex(r=>r.programId.equals(ne.ComputeBudgetProgram.programId)&&ne.ComputeBudgetInstruction.decodeInstructionType(r)==="SetComputeUnitLimit"),n=Number((i*1.3).toFixed(0)),a=ne.ComputeBudgetProgram.setComputeUnitLimit({units:n});return t>=0?e[t]=a:e.push(a),n.toString()}async function Fn(i,e,t){let n=i.findIndex(s=>s.programId.equals(ne.ComputeBudgetProgram.programId)&&ne.ComputeBudgetInstruction.decodeInstructionType(s)==="SetComputeUnitPrice"),a=BigInt(t||await wi(e)),r=ne.ComputeBudgetProgram.setComputeUnitPrice({microLamports:a});return n>=0?i[n]=r:i.push(r),a.toString()}async function wi(i){let e=await i.getRecentPrioritizationFees(),t=0;for(let n of e)t+=n.prioritizationFee;return(t/e.length).toFixed(0)}var Ca=require("@solana/spl-token"),Ye=require("@solana/web3.js"),st=O(require("axios"));var Ht=class{constructor(e){this.connection=new Ye.Connection(e)}async getJupiterSwapTx(e,t,n){let a;try{a=await st.default.get(`https://quote-api.jup.ag/v6/quote?inputMint=${t}
2
2
  &outputMint=${Ca.NATIVE_MINT.toString()}
3
3
  &amount=${n}
4
4
  &slippageBps=100