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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var Ua=Object.create;var It=Object.defineProperty;var Va=Object.getOwnPropertyDescriptor;var Oa=Object.getOwnPropertyNames;var Ea=Object.getPrototypeOf,Xa=Object.prototype.hasOwnProperty;var Ya=(o,a)=>{for(var n in a)It(o,n,{get:a[n],enumerable:!0})},vn=(o,a,n,i)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of Oa(a))!Xa.call(o,s)&&s!==n&&It(o,s,{get:()=>a[s],enumerable:!(i=Va(a,s))||i.enumerable});return o};var _=(o,a,n)=>(n=o!=null?Ua(Ea(o)):{},vn(a||!o||!o.__esModule?It(n,"default",{value:o,enumerable:!0}):n,o)),La=o=>vn(It({},"__esModule",{value:!0}),o);var Zi={};Ya(Zi,{AddressStatus:()=>Mt,AllbridgeCoreSdk:()=>Rn,AmountFormat:()=>lt,AmountNotEnoughError:()=>Ze,ArgumentInvalidDecimalsError:()=>st,CCTPDoesNotSupportedError:()=>ne,ChainSymbol:()=>re,ChainType:()=>D,ErrorCode:()=>kn,ExtraGasMaxLimitExceededError:()=>it,FeePaymentMethod:()=>Ue,InsufficientPoolLiquidityError:()=>be,InvalidAmountError:()=>at,InvalidGasFeePaymentOptionError:()=>Xe,InvalidMessengerOptionError:()=>rn,InvalidTxError:()=>Ne,JupiterError:()=>O,Messenger:()=>Se,MethodNotSupportedError:()=>J,NodeRpcUrlNotInitializedError:()=>rt,SdkError:()=>v,SdkRootError:()=>Z,SolanaAutoTxFee:()=>_t,TimeoutError:()=>Le,TxTooLargeError:()=>ot,VerifyTxError:()=>Ye,mainnet:()=>nt,nodeRpcUrlsDefault:()=>za,nodeUrlsDefault:()=>Ha,testnet:()=>Ja,testnetNodeRpcUrlsDefault:()=>Qa,testnetNodeUrlsDefault:()=>Ka});module.exports=La(Zi);var Ja={coreApiUrl:"https://core-dev.a11bd.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"",wormholeMessengerProgramId:"3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5",solanaLookUpTable:"C3jAxHRTZjM2Bs7EqPir4nvrT8zKtpcW7RvGR9R2qKtN",sorobanNetworkPassphrase:"Test SDF Network ; September 2015",tronJsonRpc:"https://nile.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{SPL:0,ARB:3,AMO:7}},cachePoolInfoChainSec:20},Ka={solanaRpcUrl:"https://api.devnet.solana.com",tronRpcUrl:"https://nile.trongrid.io"},Qa={SOL:"https://api.devnet.solana.com",TRX:"https://nile.trongrid.io",SRB:"https://soroban-testnet.stellar.org",STLR:"https://horizon-testnet.stellar.org"};var nt={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"https://quote-api.jup.ag/v6",wormholeMessengerProgramId:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",solanaLookUpTable:"2JcBAEVnAwVo4u8d61iqgHPrzZuugur7cVTjWubsVLHj",sorobanNetworkPassphrase:"Public Global Stellar Network ; September 2015",tronJsonRpc:"https://api.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{ETH:0,AVA:1,OPT:2,ARB:3,SOL:5,BAS:6,POL:7}},cachePoolInfoChainSec:20},Ha={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},za={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org"};var pe=require("big.js");var Rt=class{constructor(a){this.apiClient=a}async getChainDetailsMap(){return(await this.apiClient.getTokenInfo()).chainDetailsMap}async tokens(){let a=await this.getChainDetailsMap();return Object.values(a).flatMap(n=>n.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(a,n){return this.apiClient.getGasBalance(a,n)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(a,n){return await this.apiClient.getTransferStatus(a,n)}async getReceiveTransactionCost(a){return await this.apiClient.getReceiveTransactionCost(a)}async getPoolInfoMap(a){return await this.apiClient.getPoolInfoMap(a)}};var On=_(require("axios"));var Mn="3.17.0-alpha.6";var re=(g=>(g.GRL="GRL",g.SPL="SPL",g.HOL="HOL",g.BSC="BSC",g.ETH="ETH",g.BAS="BAS",g.SOL="SOL",g.TRX="TRX",g.POL="POL",g.MUM="MUM",g.AMO="AMO",g.ARB="ARB",g.CEL="CEL",g.AVA="AVA",g.SRB="SRB",g.STLR="STLR",g.OPT="OPT",g))(re||{}),D=(s=>(s.EVM="EVM",s.SOLANA="SOLANA",s.TRX="TRX",s.SRB="SRB",s))(D||{}),U={EVM:18,SOLANA:9,TRX:6,SRB:7},Q={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 p=require("big.js"),vt=_(require("bn.js"));var Z=class extends Error{constructor(a,n){super(n),this.errorCode=a}},v=class extends Z{constructor(a){super("SdkError",a)}},at=class extends Z{constructor(a){super("InvalidAmountError",a)}},Ze=class extends Z{constructor(a){super("AmountNotEnoughError",a)}},be=class extends Z{constructor(a){super("InsufficientPoolLiquidityError",a)}},O=class extends Z{constructor(a){super("JupiterError",a)}},Xe=class extends Z{constructor(a){super("InvalidGasFeePaymentOptionError",a)}},rn=class extends Z{constructor(a){super("InvalidMessengerOptionError",a)}},J=class extends Z{constructor(a){super("MethodNotSupportedError",a)}},Ye=class extends Z{constructor(a){super("VerifyTxError",a)}},Ne=class extends Z{constructor(a){super("InvalidTxError",a)}},it=class extends Z{constructor(a){super("ExtraGasMaxLimitExceededError",a)}},st=class extends Z{constructor(a,n,i){super("ArgumentInvalidDecimalsError",`Argument '${a}' decimals '${n}' cannot be greater than '${i}'`)}},Le=class extends Z{constructor(a){super("TimeoutError",a)}},rt=class extends Z{constructor(a){super("NodeRpcUrlNotInitializedError",`For chain '${a}' Node RPC URL not initialized`)}},ne=class extends Z{constructor(a){super("CCTPDoesNotSupportedError",a)}},ot=class extends Z{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},kn=(f=>(f.SDK_ERROR="SdkError",f.INVALID_AMOUNT_ERROR="InvalidAmountError",f.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",f.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",f.JUPITER_ERROR="JupiterError",f.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",f.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",f.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",f.VERIFY_TX_ERROR="VerifyTxError",f.INVALID_TX_ERROR="InvalidTxError",f.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",f.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",f.TIMEOUT_ERROR="TimeoutError",f.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",f.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",f.TX_TOO_LARGE="TxTooLargeError",f))(kn||{});function on(o,a){return(0,p.Big)(100).minus((0,p.Big)(100).times(a).div(o)).toNumber()}function De(o,a){return ke(o,a,3).round(0,p.Big.roundDown)}function j(o,a){return ke(o,3,a)}function ke(o,a,n){let i=(0,p.Big)(n).minus(a).toNumber();return(0,p.Big)(o).times(At(i))}function At(o){return(0,p.Big)(10).pow(o)}function R(o,a){return(0,p.Big)(o).times(At(a))}function S(o,a){let n=(0,p.Big)(o);return n.eq(0)?(0,p.Big)(0):(0,p.Big)(n).div(At(a))}function q(o){return S((0,p.Big)(o.tokenBalance).minus(o.vUsdBalance).toFixed(),3).div(2).toFixed()}function Te(o,{feeShare:a,decimals:n},i){let s=(0,p.Big)(o);if(s.lte(0))return"0";let r=s.times(a),A=s.minus(r),c=De(A,n),m=(0,p.Big)(i.tokenBalance).plus(c),u=Pe(m,i.aValue,i.dValue);return(0,p.Big)(i.vUsdBalance).minus(u).round(0,p.Big.roundDown).toFixed()}function ct(o,{feeShare:a,decimals:n},i){let s=(0,p.Big)(o);if(s.lte(0))return(0,p.Big)(0).toFixed();let r=s.plus(i.vUsdBalance),A=Pe(r,i.aValue,i.dValue),c=j((0,p.Big)(i.tokenBalance).minus(A),n),m=(0,p.Big)(c).times(a);return(0,p.Big)(c).minus(m).round(0,p.Big.roundDown).toFixed()}function xn(o,a){let n=(0,p.Big)(o);if(n.lte(0))return a;let i=n.plus(a.vUsdBalance),s=Pe(i,a.aValue,a.dValue);return{aValue:a.aValue,dValue:a.dValue,tokenBalance:s.toFixed(0),vUsdBalance:i.toFixed(0)}}function Fn(o,{feeShare:a,decimals:n},i){if((0,p.Big)(o).lte(0))return(0,p.Big)(0);let s=(0,p.Big)(i.vUsdBalance).minus(o);if(s.lte(0))throw new be;let r=Pe(s,i.aValue,i.dValue),A=(0,p.Big)(r).minus(i.tokenBalance),c=j(A,n),m=(0,p.Big)(a).div((0,p.Big)(1).minus(a)),u=(0,p.Big)(c).times(m).round(0,p.Big.roundUp);return(0,p.Big)(c).plus(u).round(0,p.Big.roundDown)}function Wn(o,{feeShare:a,decimals:n},i){if((0,p.Big)(o).lte(0))return(0,p.Big)(0);let s=(0,p.Big)(a).div((0,p.Big)(1).minus(a)),r=(0,p.Big)(o).times(s).round(0,p.Big.roundUp),A=(0,p.Big)(o).plus(r),c=De(A,n),m=(0,p.Big)(i.tokenBalance).minus(c);if(m.lte(0))throw new be;let u=Pe(m,i.aValue,i.dValue);return(0,p.Big)(u).minus(i.vUsdBalance).round(0,p.Big.roundDown)}function Pe(o,a,n){let i=(0,p.Big)(4).times(a).times((0,p.Big)(n).minus(o)).minus(n),s=(0,p.Big)(n).pow(3),r=i.pow(2),A=(0,p.Big)(o).times((0,p.Big)(o).times(r).plus((0,p.Big)(4).times(a).times(s))).sqrt().round(0,p.Big.roundDown),c=(0,p.Big)(8).times(a).times(o),m=i.times(o).plus(A).div(c).round(0,p.Big.roundDown);return m.eq(0)?(0,p.Big)(0):m.plus(1)}function Gn(o,a,n,i){let s=new vt.default(o),r=new vt.default(n),A=new vt.default(a);return s.mul(r).shrn(i).sub(A).toString()}function Zn(o){return(0,p.Big)(o).gt(0)?`${Number((0,p.Big)(o).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function Nn(o,a,n){let i=(0,p.Big)(a).times(n),s=(0,p.Big)(a).plus(n),r=(0,p.Big)(8).times(o).times(i).times(s),A=i.times((0,p.Big)(16).times(o).minus(4)).div(3),c=r.times(r),m=A.times(A).times(A),u=c.plus(m),d=(0,p.Big)(u).sqrt(),l=(0,p.Big)(Math.cbrt(+r.plus(d).toFixed())),y=(0,p.Big)(Math.cbrt(+r.minus(d).toFixed()));return l.plus(y).toFixed()}var Mt=(A=>(A.OK="OK",A.INVALID="INVALID",A.FORBIDDEN="FORBIDDEN",A.UNINITIALIZED="UNINITIALIZED",A.CONTRACT_ADDRESS="CONTRACT_ADDRESS",A.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",A))(Mt||{});var Se=(i=>(i[i.ALLBRIDGE=1]="ALLBRIDGE",i[i.WORMHOLE=2]="WORMHOLE",i[i.CCTP=3]="CCTP",i))(Se||{});function Dn(o){return Object.entries(o).reduce((a,n)=>{let i=n[0],s=n[1],r=ti(i,s);return r&&(a[i]=r),a},{})}function _n(o){let a={};for(let[n,i]of Object.entries(o)){let s=n;for(let r of i.tokens){let A=Je({chainSymbol:s,poolAddress:r.poolAddress}),c=q(r.poolInfo);a[A]={...r.poolInfo,imbalance:c}}}return a}function ja(o,a){let{name:n,...i}=o,{poolInfo:s,...r}=a;return{...r,...i,chainName:n}}function qa(o){switch(o){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;default:return null}}function $a(o){return Object.entries(o).reduce((a,[n,i])=>(a[n]=ei(i),a),{})}function ei(o){return Object.entries(o).reduce((a,[n,i])=>{let s=qa(n);return s&&(a[s]=i),a},{})}function ti(o,a){let n=Q[o];if(!n)return null;let i={...n,allbridgeChainId:a.chainId,bridgeAddress:a.bridgeAddress,transferTime:$a(a.transferTime),txCostAmount:a.txCostAmount,confirmations:a.confirmations};return{...i,tokens:a.tokens.map(s=>ja(i,s))}}function Je(o){return o.chainSymbol+"_"+o.poolAddress}function Un(o){let a=[];for(let[n,i]of Object.entries(o)){let s=n;for(let r of i.tokens)a.push({chainSymbol:s,poolAddress:r.poolAddress})}return a}function Vn(o){let a={};for(let[n,i]of Object.entries(o)){let s=n;for(let[r,A]of Object.entries(i))A.imbalance=q(A),a[Je({chainSymbol:s,poolAddress:r})]=A}return a}var kt=class{constructor(a){this.api=On.default.create({baseURL:a.coreApiUrl,headers:{Accept:"application/json",...a.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+Mn},params:a.coreApiQueryParams})}async getTokenInfo(){let{data:a}=await this.api.get("/token-info");return{chainDetailsMap:Dn(a),poolInfoMap:_n(a)}}async getPendingInfo(){let{data:a}=await this.api.get("/pending-info");return a}async getGasBalance(a,n){let{data:i}=await this.api.get(`/check/${a}/${n}`);return i}async getTransferStatus(a,n){let{data:i}=await this.api.get(`/chain/${a}/${n}`);return i}async getReceiveTransactionCost(a){let{data:n}=await this.api.post("/receive-fee",a,{headers:{"Content-Type":"application/json"}});return{exchangeRate:n.exchangeRate,fee:n.fee,sourceNativeTokenPrice:n.sourceNativeTokenPrice}}async getPoolInfoMap(a){let n=a instanceof Array?a:[a],{data:i}=await this.api.post("/pool-info",{pools:n},{headers:{"Content-Type":"application/json"}});return Vn(i)}};var ni=(o,a)=>o!==null&&Object.prototype.hasOwnProperty.call(o,a),En="__cache__",An=function(o){return typeof o!="string"?En+JSON.stringify(o):En+o},cn=class{constructor(a={defaultTtl:60*1e3}){this.cache={},this.defaultTtl=a.defaultTtl||60*1e3}put(a,n,i){let s=(i?i.ttl:void 0)||this.defaultTtl,r=(i?i.callback:void 0)||function(){},A=An(a),c=this.cache[A];c&&clearTimeout(c.handle);let m=setTimeout(()=>this.remove(a),s);this.cache[A]={handle:m,data:n,callback:r}}get(a){let n=this.cache[An(a)];return n&&n.data}remove(a){let n=An(a),i=this.cache[n];i&&(clearTimeout(i.handle),delete this.cache[n],i.callback(a,i.data))}clear(){for(let a in this.cache)ni(this.cache,a)&&clearTimeout(this.cache[a].handle);this.cache={}}size(){return Object.keys(this.cache).length}},Ie=cn;var mn=20*1e3,ai=55*1e3,xt=class{constructor(a){this.apiClient=a;this.tokenInfoCache=new Ie({defaultTtl:ai}),this.receivedTransactionCache=new Ie({defaultTtl:mn}),this.pendingInfoCache=new Ie({defaultTtl:mn}),this.gasBalanceCache=new Ie({defaultTtl:mn})}getTokenInfo(){let a="TOKEN_INFO_CACHE_KEY",n=this.tokenInfoCache.get(a);if(n)return n;let i=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(a,i),i}async getGasBalance(a,n){let i=`GAS_BALANCE_${a}_${n}`,s=this.gasBalanceCache.get(i);if(s)return s;let r=this.apiClient.getGasBalance(a,n);return this.gasBalanceCache.put(i,r),r}async getPendingInfo(){let a="PENDING_INFO_CACHE_KEY",n=this.pendingInfoCache.get(a);if(n)return n;let i=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(a,i),i}async getReceiveTransactionCost(a){let n=`RECEIVE_TX_COST_${a.sourceChainId}_${a.destinationChainId}_${a.messenger}`,i=this.receivedTransactionCache.get(n);if(i)return i;let s=await this.apiClient.getReceiveTransactionCost(a);return this.receivedTransactionCache.put(n,s),s}async getTransferStatus(a,n){return this.apiClient.getTransferStatus(a,n)}async getPoolInfoMap(a){return this.apiClient.getPoolInfoMap(a)}};var ii=55*1e3,Ft=class{constructor(a){this.client=a;this.poolInfoCache=new un}async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(a,n){return this.client.getTransferStatus(a,n)}getReceiveTransactionCost(a){return this.client.getReceiveTransactionCost(a)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(a,n){return this.client.getGasBalance(a,n)}async getPoolInfoByKey(a){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let n=this.poolInfoCache.get(a);if(n)return n;{let i=await this.client.getPoolInfoMap(a);return this.poolInfoCache.putAll(i),i[Je(a)]}}async refreshPoolInfo(a){let n;if(a)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),n=await this.client.getPoolInfoMap(a);else{let i=await this.client.getChainDetailsMapAndPoolInfoMap();n=await this.client.getPoolInfoMap(Un(i.chainDetailsMap))}this.poolInfoCache.putAll(n)}cachePut(a,n){this.poolInfoCache.put(Je(a),n)}},un=class{constructor(){this.cache=new Ie({defaultTtl:ii})}putAll(a){for(let[n,i]of Object.entries(a))this.cache.put(n,i)}putAllIfNotExists(a){for(let[n,i]of Object.entries(a))this.cache.get(n)||this.cache.put(n,i)}put(a,n){this.cache.put(a,n)}get(a){let n=Je(a);return this.cache.get(n)}};var Ta=_(require("tronweb")),Pa=_(require("web3"));var ln=require("big.js");async function V(o,a){return await o.getPoolInfoByKey({chainSymbol:a.chainSymbol,poolAddress:a.poolAddress})}function x(o){if((0,ln.Big)(o).lte(0))throw new at("Amount must be greater than zero")}function F(o,a,n){let i=(0,ln.Big)(a).toFixed();if(i.split(".").length==2&&i.split(".")[1].length>n)throw new st(o,i.split(".")[1].length,n)}async function Wt(o,a,n){return await Promise.race([o,new Promise((i,s)=>{setTimeout(()=>s(new Le(a)),n)})])}async function dn(o,a,n,i){if(n<1)throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${n} was received.`);let s=0;for(;;)try{return await Wt(o(),a,i)}catch{if(++s>=n)throw new Le(a)}}async function Xn(o,a,n,i=1.5,s=!1){let r=[],A=0;if(r.push(await o()),!a(r[r.length-1]))return r;let c=new Date(Date.now()+n*1e3).valueOf(),m=1e3,u=m;for(;Date.now()<c&&a(r[r.length-1]);)A++,s&&console.info(`Waiting ${m}ms before trying again (bringing the total wait time to ${u}ms so far, of total ${n*1e3}ms)`),await new Promise(d=>setTimeout(d,m)),m=m*i,new Date(Date.now()+m).valueOf()>c&&(m=c-Date.now(),s&&console.info(`was gonna wait too long; new waitTime: ${m}ms`)),u=m+u,r.push(await o(r[r.length-1])),s&&a(r[r.length-1])&&console.info(`${A}. Called ${o.name}; ${r.length} prev attempts. Most recent: ${JSON.stringify(r[r.length-1],null,2)}`);return r}var Zt=_(require("@project-serum/anchor")),Pn=require("@solana/web3.js"),ra=require("big.js");var Yn=[{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 Ln=[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"address",name:"cctpMessenger_",type:"address"},{internalType:"address",name:"cctpTransmitter_",type:"address"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedExtraGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"RecipientReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"}],name:"TokensSentExtras",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridgeWithWalletAddress",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"changeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getDomainByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint64",name:"nonce",type:"uint64"}],name:"isMessageProcessed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bytes",name:"message",type:"bytes"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"domain",type:"uint32"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}];var Y=_(require("@project-serum/anchor")),L=require("@solana/web3.js");async function oe(o,a){return Y.utils.token.associatedAddress({mint:a,owner:o})}async function xe(o){let[a]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("config")],o);return a}async function Jn(o,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("lock"),Uint8Array.from(o)],a);return n}async function mt(o,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([o])],a);return n}async function Ke(o){let a=await xe(o),[n]=await L.PublicKey.findProgramAddress([a.toBuffer()],o);return n}async function Kn(o,a){let[n]=await L.PublicKey.findProgramAddress([o.toBuffer()],a);return n}async function Qe(o,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("token"),o.toBytes()],a);return n}async function Qn(o,a,n){let[i]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("other_bridge_token"),Buffer.from([o]),a],n);return i}async function pn(o,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([o])],a);return n}async function gn(o,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([o])],a);return n}async function Hn(o,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("sent_message"),o],a);return n}async function fn(o,a,n){let[i]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("user_deposit"),a.toBytes(),o.toBytes()],n);return i}async function zn(o,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("cctp_bridge"),o.toBytes()],a);return n}async function jn(o,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("token"),o.toBytes()],a);return n}function qn(o,a){let[n]=L.PublicKey.findProgramAddressSync([Y.utils.bytes.utf8.encode("lock"),a.toBuffer()],o);return n}function $n(o,a,n,i){let s=_e("message_transmitter",n),r=_e("token_messenger",i),A=_e("__event_authority",i),c=_e("token_minter",i),m=_e("local_token",i,[a]),u=_e("remote_token_messenger",i,[o.toString()]),d=_e("sender_authority",i);return{messageTransmitterAccount:s,tokenMessenger:r,tokenMessengerEventAuthority:A,tokenMinter:c,localToken:m,remoteTokenMessengerKey:u,authorityPda:d}}function _e(o,a,n=[]){let i=[Buffer.from(Y.utils.bytes.utf8.encode(o))];for(let r of n)typeof r=="string"?i.push(Buffer.from(Y.utils.bytes.utf8.encode(r))):Array.isArray(r)?i.push(Buffer.from(r)):Buffer.isBuffer(r)?i.push(r):i.push(r.toBuffer());return L.PublicKey.findProgramAddressSync(i,a)[0]}var ea=require("@project-serum/anchor"),Gt=require("@solana/web3.js");function Fe(o,a){let n=new Gt.Connection(o,"confirmed"),i=new Gt.PublicKey(a);return new ea.AnchorProvider(n,{publicKey:i},{preflightCommitment:"confirmed",commitment:"confirmed"})}var Ae=class{};var ta=require("@solana/web3.js"),na=require("@stellar/stellar-sdk"),we=require("big.js"),yn=_(require("randombytes")),aa=_(require("tronweb"));function Re(o,a,n){let i;switch(a){case"EVM":{i=oi(o);break}case"SOLANA":{i=new ta.PublicKey(o).toBuffer();break}case"TRX":{i=Ai(o);break}case"SRB":{i=new na.Address(o).toBuffer();break}}switch(n){case"EVM":return"0x"+i.toString("hex");case"SOLANA":return Array.from(i);case"TRX":return i.toJSON().data;case"SRB":return i.toJSON().data}}function ia(o){return Buffer.from(o.replace(/^0x/i,""),"hex")}function oi(o){let n=ia(o);return Buffer.concat([Buffer.alloc(32-n.length,0),n],32)}function Ai(o){let a=ut(o),n=ia(a);return ci(n,32)}function ut(o){return Buffer.from(aa.utils.crypto.decodeBase58Address(o)).toString("hex").replace(/^41/,"0x")}function ci(o,a){if(o.length>=a)return o;let n=Buffer.alloc(a,0);return o.copy(n,a-o.length),n}function He(){return(0,yn.default)(32)}function hn(){let o=(0,yn.default)(32).readBigInt64BE();return o<0?o*-1n:o}function We(o,a){let n={},i=a.sourceToken;return n.amount=R(a.amount,i.decimals).toFixed(),n.contractAddress=i.bridgeAddress,n.fromAccountAddress=a.fromAccountAddress,n.fromTokenAddress=Re(i.tokenAddress,o,o),n.toAccountAddress=a.toAccountAddress,n.toTokenAddress=Re(a.destinationToken.tokenAddress,o,o),n.minimumReceiveAmount=a.minimumReceiveAmount?R(a.minimumReceiveAmount,a.destinationToken.decimals).toFixed():"0",n}async function ve(o,a,n){let i={};i.fromChainId=a.sourceToken.allbridgeChainId,i.fromChainSymbol=a.sourceToken.chainSymbol;let s=Q[a.destinationToken.chainSymbol].chainType;i.fromTokenAddress=a.sourceToken.tokenAddress,i.toChainId=a.destinationToken.allbridgeChainId,i.toTokenAddress=a.destinationToken.tokenAddress,a.gasFeePaymentMethod==="stablecoin"?i.gasFeePaymentMethod="stablecoin":i.gasFeePaymentMethod="native";let r=a.sourceToken;if(a.messenger===3){if(!r.cctpAddress||!a.destinationToken.cctpAddress)throw new ne("Such route does not support CCTP protocol");i.contractAddress=r.cctpAddress}else i.contractAddress=r.bridgeAddress;i.messenger=a.messenger,i.fromAccountAddress=a.fromAccountAddress,i.amount=R(a.amount,r.decimals).toFixed();let{fee:A,feeFormat:c}=a;if(!A){let l=(await bn(i.fromChainId,a.sourceToken.chainType,i.toChainId,r.decimals,i.messenger,n))[i.gasFeePaymentMethod];if(!l)throw new Xe;A=l.int,c="int"}if(c=="float")switch(i.gasFeePaymentMethod){case"native":i.fee=R(A,U[r.chainType]).toFixed(0);break;case"stablecoin":i.fee=R(A,r.decimals).toFixed(0);break}else i.fee=A;let{extraGas:m,extraGasFormat:u}=a;if(m&&+m>0){if(u=="float")switch(i.gasFeePaymentMethod){case"native":i.extraGas=R(m,U[r.chainType]).toFixed(0);break;case"stablecoin":i.extraGas=R(m,r.decimals).toFixed(0);break}else i.extraGas=m;await ui(i.extraGas,i.gasFeePaymentMethod,r,a.destinationToken,n)}return i.fromTokenAddress=Re(i.fromTokenAddress,o,o),i.toAccountAddress=Re(a.toAccountAddress,s,o),i.toTokenAddress=Re(i.toTokenAddress,s,o),i.gasFeePaymentMethod=="stablecoin"&&mi(i.amount,r.decimals,i.fee,i.extraGas),i}function mi(o,a,n,i){let s=(0,we.Big)(o).minus(n).minus(i??0);if(s.lte(0))throw new Ze(`Amount not enough to pay fee, ${S((0,we.Big)(s).minus(1).neg(),a).toFixed()} stables is missing`)}async function bn(o,a,n,i,s,r){let A=await r.getReceiveTransactionCost({sourceChainId:o,destinationChainId:n,messenger:s}),c={native:{int:A.fee,float:S(A.fee,U[a]).toFixed()}};if(A.sourceNativeTokenPrice){let m=ke(new we.Big(A.fee).mul(A.sourceNativeTokenPrice),U[a],i).toFixed(0,we.Big.roundUp);c.stablecoin={int:m,float:S(m,i).toFixed()}}return c}async function ui(o,a,n,i,s){let A=(await Tn(n,i,s)).extraGasMax[a];if(!A)throw new Xe(`Impossible to pay extra gas by '${a}' payment method`);let c=A.int;if((0,we.Big)(o).gt(c))throw new it(`Extra gas ${o} in int format, exceeded limit ${c} for '${a}' payment method`)}async function Tn(o,a,n){let i={},s=await n.getReceiveTransactionCost({sourceChainId:o.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:1}),r=a.txCostAmount.maxAmount,A=S(r,U[a.chainType]).toFixed(),c=(0,we.Big)(A).div(s.exchangeRate).toFixed(U[o.chainType],we.Big.roundDown),m=R(c,U[o.chainType]).toFixed(0);if(i.native={int:m,float:c},s.sourceNativeTokenPrice){let u=(0,we.Big)(c).mul(s.sourceNativeTokenPrice).toFixed(o.decimals,we.Big.roundDown);i.stablecoin={int:R(u,o.decimals).toFixed(0),float:u}}return{extraGasMax:i,destinationChain:{gasAmountMax:{int:r,float:A},swap:{int:a.txCostAmount.swap,float:S(a.txCostAmount.swap,U[a.chainType]).toFixed()},transfer:{int:a.txCostAmount.transfer,float:S(a.txCostAmount.transfer,U[a.chainType]).toFixed()}},exchangeRate:s.exchangeRate,sourceNativeTokenPrice:s.sourceNativeTokenPrice}}function sa(o){return o.sourceToken.chainSymbol!==o.destinationToken.chainSymbol}var dt=class extends Ae{constructor(n,i,s){super();this.web3=n;this.api=i;this.nodeRpcUrlsConfig=s;this.chainType="EVM"}async send(n){let i=await this.buildRawTransactionSend(n);return this.sendRawTransaction(i)}async buildRawTransactionSwap(n){let i=We(this.chainType,n);return await this.buildRawTransactionSwapFromParams(i)}async buildRawTransactionSwapFromParams(n){let{amount:i,contractAddress:s,fromAccountAddress:r,fromTokenAddress:A,toAccountAddress:c,toTokenAddress:m,minimumReceiveAmount:u}=n,l=this.getBridgeContract(s).methods.swap(i,A,m,c,u);return Promise.resolve({from:r,to:s,data:l.encodeABI()})}async buildRawTransactionSend(n){let i=await ve(this.chainType,n,this.api),{amount:s,contractAddress:r,fromAccountAddress:A,fromTokenAddress:c,toChainId:m,toAccountAddress:u,toTokenAddress:d,messenger:l,fee:y,gasFeePaymentMethod:h,extraGas:b}=i,T="0x"+He().toString("hex"),f,g,w=y;if(b&&(w=(0,ra.Big)(w).plus(b).toFixed()),l===3){let P=await this.buildRawTransactionCctpSend(n,i,w);f=P.sendMethod,g=P.value}else{let P=this.getBridgeContract(r);h==="stablecoin"?(f=P.methods.swapAndBridge(c,s,u,m,d,T,l,w),g="0"):(f=P.methods.swapAndBridge(c,s,u,m,d,T,l,0),g=w)}return Promise.resolve({from:A,to:r,value:g,data:f.encodeABI()})}async buildRawTransactionCctpSend(n,i,s){let{amount:r,contractAddress:A,toChainId:c,toAccountAddress:m,gasFeePaymentMethod:u}=i,d=this.getContract(Ln,A),l,y;if(n.destinationToken.chainType==="SOLANA"){let h,b=new Pn.PublicKey(n.toAccountAddress),T=new Pn.PublicKey(n.destinationToken.tokenAddress),f=await oe(b,T),g=Fe(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),n.toAccountAddress);Zt.setProvider(g);let w=await Zt.Spl.token(g).account.token.fetchNullable(f);if(w?.authority.equals(b))h=Re(f.toBase58(),"SOLANA",this.chainType);else{let P=await g.connection.getTokenAccountsByOwner(b,{mint:T});if(P.value.length===0&&!w)h=Re(f.toBase58(),"SOLANA",this.chainType);else if(P.value.length>0)h=Re(P.value[0].pubkey.toBase58(),"SOLANA",this.chainType);else throw new v("Associated account has wrong owner")}u==="stablecoin"?(l=d.methods.bridgeWithWalletAddress(r,h,m,c,s),y="0"):(l=d.methods.bridgeWithWalletAddress(r,h,m,c,0),y=s)}else u==="stablecoin"?(l=d.methods.bridge(r,m,c,s),y="0"):(l=d.methods.bridge(r,m,c,0),y=s);return{sendMethod:l,value:y}}async sendRawTransaction(n){let i=await this.web3.eth.estimateGas(n),s={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:r}=await this.web3.eth.sendTransaction({...n,gas:i,...s});return{txId:r}}getContract(n,i){return new this.web3.eth.Contract(n,i)}getBridgeContract(n){return this.getContract(Yn,n)}};var Nt=class{constructor(a,n,i,s){this.api=a;this.nodeRpcUrlsConfig=n;this.params=i;this.tokenService=s}async approve(a,n){let i,s;n?(i=a,s=n):s=a;let r=pt(s.token,s.messenger);return this.tokenService.buildRawTransactionApprove({...s,spender:r},i)}async send(a,n){return x(a.amount),F("amount",a.amount,a.sourceToken.decimals),sa(a)?Dt(a.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionSend(a):Dt(a.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionSwap(a)}};var W=require("@project-serum/anchor"),I=require("@solana/web3.js"),ce=require("big.js");var gt={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 oa={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 Aa=require("@project-serum/anchor"),ca=_(require("big.js")),ft=_(require("web3"));async function ze(o,a){return await Aa.Spl.token(a).account.token.fetch(o)}async function ma(o,a,n){let i=await a.account.pool.fetch(n),s=i.decimals,r=(0,ca.default)(i.feeShareBp.toString()).div(1e4).toFixed(),A={aValue:i.a.toString(),dValue:i.d.toString(),totalLpAmount:i.totalLpAmount.toString(),tokenBalance:i.tokenBalance.toString(),vUsdBalance:i.vUsdBalance.toString(),accRewardPerShareP:i.accRewardPerShareP.toString()};return Te(o,{decimals:s,feeShare:r},A)}function ua(o){let a=o.amount,n="0x"+o.recipient.toString("hex"),i=o.sourceChainId,s=o.destinationChainId,r="0x"+o.receiveToken.toString("hex"),A="0x"+o.nonce.toString("hex"),c=1,m="0x"+o.chainBridge.toString("hex"),u=ft.default.utils.encodePacked({t:"uint256",v:a},{t:"bytes32",v:n},{t:"uint256",v:i},{t:"bytes32",v:r},{t:"uint256",v:A},{t:"uint8",v:c});if(!u)throw new v("message cannot be undefined");let d=ft.default.utils.keccak256(Buffer.from(u.replace("0x",""),"hex")),l=Buffer.from(d.replace("0x",""),"hex");l[0]=i,l[1]=s;let y=ft.default.utils.encodePacked({t:"bytes32",v:"0x"+l.toString("hex")},{t:"bytes32",v:m});if(!y)throw new Ne("messageWithSigner cannot be undefined");let h=ft.default.utils.keccak256(Buffer.from(y.replace("0x",""),"hex")),b=Buffer.from(h.replace("0x",""),"hex");return b[0]=l[0],b[1]=l[1],b}var $=require("@solana/web3.js"),la=require("big.js");var Sn=require("@solana/web3.js");async function Ve(o,a){return await Promise.all(o.message.addressTableLookups.map(async n=>new Sn.AddressLookupTableAccount({key:n.accountKey,state:Sn.AddressLookupTableAccount.deserialize(await a.getAccountInfo(n.accountKey).then(i=>{if(!i)throw new v("Cannot get AccountInfo");return i.data}))})))}var _t="AUTO";async function je(o,a,n){let i=new $.Connection(n,"confirmed"),s=(await i.simulateTransaction(o)).value.unitsConsumed;await pa(o.instructions,s,a,i)}async function da(o,a,n){let i=new $.Connection(n,"confirmed"),s=await Ve(o,i),r=$.TransactionMessage.decompile(o.message,{addressLookupTableAccounts:s});if(o.serialize().length>1232)throw new ot;await pa(r.instructions,769230,a,i),o.message=r.compileToV0Message(s)}async function pa(o,a,n,i){if(a>0){let s=li(a,o);if(n?.solana){let r=n.solana;if(r===_t)await wn(o,i);else if("pricePerUnitInMicroLamports"in r)await wn(o,i,r.pricePerUnitInMicroLamports);else{let A=(0,la.Big)(r.extraFeeInLamports).div(s).mul(At(6)).toFixed(0);await wn(o,i,A)}}}}function li(o,a){let n=a.findIndex(r=>r.programId.equals($.ComputeBudgetProgram.programId)&&$.ComputeBudgetInstruction.decodeInstructionType(r)==="SetComputeUnitLimit"),i=Number((o*1.3).toFixed(0)),s=$.ComputeBudgetProgram.setComputeUnitLimit({units:i});return n>=0?a[n]=s:a.push(s),i.toString()}async function wn(o,a,n){let i=o.findIndex(A=>A.programId.equals($.ComputeBudgetProgram.programId)&&$.ComputeBudgetInstruction.decodeInstructionType(A)==="SetComputeUnitPrice"),s=BigInt(n||await di(a)),r=$.ComputeBudgetProgram.setComputeUnitPrice({microLamports:s});return i>=0?o[i]=r:o.push(r),s.toString()}async function di(o){let a=await o.getRecentPrioritizationFees(),n=0;for(let i of a)n+=i.prioritizationFee;return(n/a.length).toFixed(0)}var ga=require("@solana/spl-token"),Oe=require("@solana/web3.js"),qe=_(require("axios"));var Ut=class{constructor(a,n){this.connection=new Oe.Connection(a),this.jupiterUrl=n.replace(/\/$/,"")}async getJupiterSwapTx(a,n,i,s){let r;try{let l=s?"ExactOut":"ExactIn";r=await qe.default.get(`${this.jupiterUrl}/quote?inputMint=${n}
1
+ "use strict";var Ua=Object.create;var It=Object.defineProperty;var Va=Object.getOwnPropertyDescriptor;var Oa=Object.getOwnPropertyNames;var Ea=Object.getPrototypeOf,Xa=Object.prototype.hasOwnProperty;var Ya=(o,a)=>{for(var n in a)It(o,n,{get:a[n],enumerable:!0})},vn=(o,a,n,i)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of Oa(a))!Xa.call(o,s)&&s!==n&&It(o,s,{get:()=>a[s],enumerable:!(i=Va(a,s))||i.enumerable});return o};var _=(o,a,n)=>(n=o!=null?Ua(Ea(o)):{},vn(a||!o||!o.__esModule?It(n,"default",{value:o,enumerable:!0}):n,o)),La=o=>vn(It({},"__esModule",{value:!0}),o);var Zi={};Ya(Zi,{AddressStatus:()=>Mt,AllbridgeCoreSdk:()=>Rn,AmountFormat:()=>lt,AmountNotEnoughError:()=>Ze,ArgumentInvalidDecimalsError:()=>st,CCTPDoesNotSupportedError:()=>ne,ChainSymbol:()=>re,ChainType:()=>D,ErrorCode:()=>kn,ExtraGasMaxLimitExceededError:()=>it,FeePaymentMethod:()=>Ue,InsufficientPoolLiquidityError:()=>be,InvalidAmountError:()=>at,InvalidGasFeePaymentOptionError:()=>Xe,InvalidMessengerOptionError:()=>rn,InvalidTxError:()=>Ne,JupiterError:()=>O,Messenger:()=>Se,MethodNotSupportedError:()=>J,NodeRpcUrlNotInitializedError:()=>rt,SdkError:()=>v,SdkRootError:()=>Z,SolanaAutoTxFee:()=>_t,TimeoutError:()=>Le,TxTooLargeError:()=>ot,VerifyTxError:()=>Ye,mainnet:()=>nt,nodeRpcUrlsDefault:()=>za,nodeUrlsDefault:()=>Ha,testnet:()=>Ja,testnetNodeRpcUrlsDefault:()=>Qa,testnetNodeUrlsDefault:()=>Ka});module.exports=La(Zi);var Ja={coreApiUrl:"https://core-dev.a11bd.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"",wormholeMessengerProgramId:"3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5",solanaLookUpTable:"C3jAxHRTZjM2Bs7EqPir4nvrT8zKtpcW7RvGR9R2qKtN",sorobanNetworkPassphrase:"Test SDF Network ; September 2015",tronJsonRpc:"https://nile.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{SPL:0,ARB:3,AMO:7}},cachePoolInfoChainSec:20},Ka={solanaRpcUrl:"https://api.devnet.solana.com",tronRpcUrl:"https://nile.trongrid.io"},Qa={SOL:"https://api.devnet.solana.com",TRX:"https://nile.trongrid.io",SRB:"https://soroban-testnet.stellar.org",STLR:"https://horizon-testnet.stellar.org"};var nt={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"https://quote-api.jup.ag/v6",wormholeMessengerProgramId:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",solanaLookUpTable:"2JcBAEVnAwVo4u8d61iqgHPrzZuugur7cVTjWubsVLHj",sorobanNetworkPassphrase:"Public Global Stellar Network ; September 2015",tronJsonRpc:"https://api.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{ETH:0,AVA:1,OPT:2,ARB:3,SOL:5,BAS:6,POL:7}},cachePoolInfoChainSec:20},Ha={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},za={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org"};var pe=require("big.js");var Rt=class{constructor(a){this.apiClient=a}async getChainDetailsMap(){return(await this.apiClient.getTokenInfo()).chainDetailsMap}async tokens(){let a=await this.getChainDetailsMap();return Object.values(a).flatMap(n=>n.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(a,n){return this.apiClient.getGasBalance(a,n)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(a,n){return await this.apiClient.getTransferStatus(a,n)}async getReceiveTransactionCost(a){return await this.apiClient.getReceiveTransactionCost(a)}async getPoolInfoMap(a){return await this.apiClient.getPoolInfoMap(a)}};var On=_(require("axios"));var Mn="3.17.0";var re=(g=>(g.GRL="GRL",g.SPL="SPL",g.HOL="HOL",g.BSC="BSC",g.ETH="ETH",g.BAS="BAS",g.SOL="SOL",g.TRX="TRX",g.POL="POL",g.MUM="MUM",g.AMO="AMO",g.ARB="ARB",g.CEL="CEL",g.AVA="AVA",g.SRB="SRB",g.STLR="STLR",g.OPT="OPT",g))(re||{}),D=(s=>(s.EVM="EVM",s.SOLANA="SOLANA",s.TRX="TRX",s.SRB="SRB",s))(D||{}),U={EVM:18,SOLANA:9,TRX:6,SRB:7},Q={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 p=require("big.js"),vt=_(require("bn.js"));var Z=class extends Error{constructor(a,n){super(n),this.errorCode=a}},v=class extends Z{constructor(a){super("SdkError",a)}},at=class extends Z{constructor(a){super("InvalidAmountError",a)}},Ze=class extends Z{constructor(a){super("AmountNotEnoughError",a)}},be=class extends Z{constructor(a){super("InsufficientPoolLiquidityError",a)}},O=class extends Z{constructor(a){super("JupiterError",a)}},Xe=class extends Z{constructor(a){super("InvalidGasFeePaymentOptionError",a)}},rn=class extends Z{constructor(a){super("InvalidMessengerOptionError",a)}},J=class extends Z{constructor(a){super("MethodNotSupportedError",a)}},Ye=class extends Z{constructor(a){super("VerifyTxError",a)}},Ne=class extends Z{constructor(a){super("InvalidTxError",a)}},it=class extends Z{constructor(a){super("ExtraGasMaxLimitExceededError",a)}},st=class extends Z{constructor(a,n,i){super("ArgumentInvalidDecimalsError",`Argument '${a}' decimals '${n}' cannot be greater than '${i}'`)}},Le=class extends Z{constructor(a){super("TimeoutError",a)}},rt=class extends Z{constructor(a){super("NodeRpcUrlNotInitializedError",`For chain '${a}' Node RPC URL not initialized`)}},ne=class extends Z{constructor(a){super("CCTPDoesNotSupportedError",a)}},ot=class extends Z{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},kn=(f=>(f.SDK_ERROR="SdkError",f.INVALID_AMOUNT_ERROR="InvalidAmountError",f.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",f.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",f.JUPITER_ERROR="JupiterError",f.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",f.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",f.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",f.VERIFY_TX_ERROR="VerifyTxError",f.INVALID_TX_ERROR="InvalidTxError",f.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",f.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",f.TIMEOUT_ERROR="TimeoutError",f.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",f.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",f.TX_TOO_LARGE="TxTooLargeError",f))(kn||{});function on(o,a){return(0,p.Big)(100).minus((0,p.Big)(100).times(a).div(o)).toNumber()}function De(o,a){return ke(o,a,3).round(0,p.Big.roundDown)}function j(o,a){return ke(o,3,a)}function ke(o,a,n){let i=(0,p.Big)(n).minus(a).toNumber();return(0,p.Big)(o).times(At(i))}function At(o){return(0,p.Big)(10).pow(o)}function R(o,a){return(0,p.Big)(o).times(At(a))}function S(o,a){let n=(0,p.Big)(o);return n.eq(0)?(0,p.Big)(0):(0,p.Big)(n).div(At(a))}function q(o){return S((0,p.Big)(o.tokenBalance).minus(o.vUsdBalance).toFixed(),3).div(2).toFixed()}function Te(o,{feeShare:a,decimals:n},i){let s=(0,p.Big)(o);if(s.lte(0))return"0";let r=s.times(a),A=s.minus(r),c=De(A,n),m=(0,p.Big)(i.tokenBalance).plus(c),u=Pe(m,i.aValue,i.dValue);return(0,p.Big)(i.vUsdBalance).minus(u).round(0,p.Big.roundDown).toFixed()}function ct(o,{feeShare:a,decimals:n},i){let s=(0,p.Big)(o);if(s.lte(0))return(0,p.Big)(0).toFixed();let r=s.plus(i.vUsdBalance),A=Pe(r,i.aValue,i.dValue),c=j((0,p.Big)(i.tokenBalance).minus(A),n),m=(0,p.Big)(c).times(a);return(0,p.Big)(c).minus(m).round(0,p.Big.roundDown).toFixed()}function xn(o,a){let n=(0,p.Big)(o);if(n.lte(0))return a;let i=n.plus(a.vUsdBalance),s=Pe(i,a.aValue,a.dValue);return{aValue:a.aValue,dValue:a.dValue,tokenBalance:s.toFixed(0),vUsdBalance:i.toFixed(0)}}function Fn(o,{feeShare:a,decimals:n},i){if((0,p.Big)(o).lte(0))return(0,p.Big)(0);let s=(0,p.Big)(i.vUsdBalance).minus(o);if(s.lte(0))throw new be;let r=Pe(s,i.aValue,i.dValue),A=(0,p.Big)(r).minus(i.tokenBalance),c=j(A,n),m=(0,p.Big)(a).div((0,p.Big)(1).minus(a)),u=(0,p.Big)(c).times(m).round(0,p.Big.roundUp);return(0,p.Big)(c).plus(u).round(0,p.Big.roundDown)}function Wn(o,{feeShare:a,decimals:n},i){if((0,p.Big)(o).lte(0))return(0,p.Big)(0);let s=(0,p.Big)(a).div((0,p.Big)(1).minus(a)),r=(0,p.Big)(o).times(s).round(0,p.Big.roundUp),A=(0,p.Big)(o).plus(r),c=De(A,n),m=(0,p.Big)(i.tokenBalance).minus(c);if(m.lte(0))throw new be;let u=Pe(m,i.aValue,i.dValue);return(0,p.Big)(u).minus(i.vUsdBalance).round(0,p.Big.roundDown)}function Pe(o,a,n){let i=(0,p.Big)(4).times(a).times((0,p.Big)(n).minus(o)).minus(n),s=(0,p.Big)(n).pow(3),r=i.pow(2),A=(0,p.Big)(o).times((0,p.Big)(o).times(r).plus((0,p.Big)(4).times(a).times(s))).sqrt().round(0,p.Big.roundDown),c=(0,p.Big)(8).times(a).times(o),m=i.times(o).plus(A).div(c).round(0,p.Big.roundDown);return m.eq(0)?(0,p.Big)(0):m.plus(1)}function Gn(o,a,n,i){let s=new vt.default(o),r=new vt.default(n),A=new vt.default(a);return s.mul(r).shrn(i).sub(A).toString()}function Zn(o){return(0,p.Big)(o).gt(0)?`${Number((0,p.Big)(o).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function Nn(o,a,n){let i=(0,p.Big)(a).times(n),s=(0,p.Big)(a).plus(n),r=(0,p.Big)(8).times(o).times(i).times(s),A=i.times((0,p.Big)(16).times(o).minus(4)).div(3),c=r.times(r),m=A.times(A).times(A),u=c.plus(m),d=(0,p.Big)(u).sqrt(),l=(0,p.Big)(Math.cbrt(+r.plus(d).toFixed())),y=(0,p.Big)(Math.cbrt(+r.minus(d).toFixed()));return l.plus(y).toFixed()}var Mt=(A=>(A.OK="OK",A.INVALID="INVALID",A.FORBIDDEN="FORBIDDEN",A.UNINITIALIZED="UNINITIALIZED",A.CONTRACT_ADDRESS="CONTRACT_ADDRESS",A.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",A))(Mt||{});var Se=(i=>(i[i.ALLBRIDGE=1]="ALLBRIDGE",i[i.WORMHOLE=2]="WORMHOLE",i[i.CCTP=3]="CCTP",i))(Se||{});function Dn(o){return Object.entries(o).reduce((a,n)=>{let i=n[0],s=n[1],r=ti(i,s);return r&&(a[i]=r),a},{})}function _n(o){let a={};for(let[n,i]of Object.entries(o)){let s=n;for(let r of i.tokens){let A=Je({chainSymbol:s,poolAddress:r.poolAddress}),c=q(r.poolInfo);a[A]={...r.poolInfo,imbalance:c}}}return a}function ja(o,a){let{name:n,...i}=o,{poolInfo:s,...r}=a;return{...r,...i,chainName:n}}function qa(o){switch(o){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;default:return null}}function $a(o){return Object.entries(o).reduce((a,[n,i])=>(a[n]=ei(i),a),{})}function ei(o){return Object.entries(o).reduce((a,[n,i])=>{let s=qa(n);return s&&(a[s]=i),a},{})}function ti(o,a){let n=Q[o];if(!n)return null;let i={...n,allbridgeChainId:a.chainId,bridgeAddress:a.bridgeAddress,transferTime:$a(a.transferTime),txCostAmount:a.txCostAmount,confirmations:a.confirmations};return{...i,tokens:a.tokens.map(s=>ja(i,s))}}function Je(o){return o.chainSymbol+"_"+o.poolAddress}function Un(o){let a=[];for(let[n,i]of Object.entries(o)){let s=n;for(let r of i.tokens)a.push({chainSymbol:s,poolAddress:r.poolAddress})}return a}function Vn(o){let a={};for(let[n,i]of Object.entries(o)){let s=n;for(let[r,A]of Object.entries(i))A.imbalance=q(A),a[Je({chainSymbol:s,poolAddress:r})]=A}return a}var kt=class{constructor(a){this.api=On.default.create({baseURL:a.coreApiUrl,headers:{Accept:"application/json",...a.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+Mn},params:a.coreApiQueryParams})}async getTokenInfo(){let{data:a}=await this.api.get("/token-info");return{chainDetailsMap:Dn(a),poolInfoMap:_n(a)}}async getPendingInfo(){let{data:a}=await this.api.get("/pending-info");return a}async getGasBalance(a,n){let{data:i}=await this.api.get(`/check/${a}/${n}`);return i}async getTransferStatus(a,n){let{data:i}=await this.api.get(`/chain/${a}/${n}`);return i}async getReceiveTransactionCost(a){let{data:n}=await this.api.post("/receive-fee",a,{headers:{"Content-Type":"application/json"}});return{exchangeRate:n.exchangeRate,fee:n.fee,sourceNativeTokenPrice:n.sourceNativeTokenPrice}}async getPoolInfoMap(a){let n=a instanceof Array?a:[a],{data:i}=await this.api.post("/pool-info",{pools:n},{headers:{"Content-Type":"application/json"}});return Vn(i)}};var ni=(o,a)=>o!==null&&Object.prototype.hasOwnProperty.call(o,a),En="__cache__",An=function(o){return typeof o!="string"?En+JSON.stringify(o):En+o},cn=class{constructor(a={defaultTtl:60*1e3}){this.cache={},this.defaultTtl=a.defaultTtl||60*1e3}put(a,n,i){let s=(i?i.ttl:void 0)||this.defaultTtl,r=(i?i.callback:void 0)||function(){},A=An(a),c=this.cache[A];c&&clearTimeout(c.handle);let m=setTimeout(()=>this.remove(a),s);this.cache[A]={handle:m,data:n,callback:r}}get(a){let n=this.cache[An(a)];return n&&n.data}remove(a){let n=An(a),i=this.cache[n];i&&(clearTimeout(i.handle),delete this.cache[n],i.callback(a,i.data))}clear(){for(let a in this.cache)ni(this.cache,a)&&clearTimeout(this.cache[a].handle);this.cache={}}size(){return Object.keys(this.cache).length}},Ie=cn;var mn=20*1e3,ai=55*1e3,xt=class{constructor(a){this.apiClient=a;this.tokenInfoCache=new Ie({defaultTtl:ai}),this.receivedTransactionCache=new Ie({defaultTtl:mn}),this.pendingInfoCache=new Ie({defaultTtl:mn}),this.gasBalanceCache=new Ie({defaultTtl:mn})}getTokenInfo(){let a="TOKEN_INFO_CACHE_KEY",n=this.tokenInfoCache.get(a);if(n)return n;let i=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(a,i),i}async getGasBalance(a,n){let i=`GAS_BALANCE_${a}_${n}`,s=this.gasBalanceCache.get(i);if(s)return s;let r=this.apiClient.getGasBalance(a,n);return this.gasBalanceCache.put(i,r),r}async getPendingInfo(){let a="PENDING_INFO_CACHE_KEY",n=this.pendingInfoCache.get(a);if(n)return n;let i=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(a,i),i}async getReceiveTransactionCost(a){let n=`RECEIVE_TX_COST_${a.sourceChainId}_${a.destinationChainId}_${a.messenger}`,i=this.receivedTransactionCache.get(n);if(i)return i;let s=await this.apiClient.getReceiveTransactionCost(a);return this.receivedTransactionCache.put(n,s),s}async getTransferStatus(a,n){return this.apiClient.getTransferStatus(a,n)}async getPoolInfoMap(a){return this.apiClient.getPoolInfoMap(a)}};var ii=55*1e3,Ft=class{constructor(a){this.client=a;this.poolInfoCache=new un}async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(a,n){return this.client.getTransferStatus(a,n)}getReceiveTransactionCost(a){return this.client.getReceiveTransactionCost(a)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(a,n){return this.client.getGasBalance(a,n)}async getPoolInfoByKey(a){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let n=this.poolInfoCache.get(a);if(n)return n;{let i=await this.client.getPoolInfoMap(a);return this.poolInfoCache.putAll(i),i[Je(a)]}}async refreshPoolInfo(a){let n;if(a)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),n=await this.client.getPoolInfoMap(a);else{let i=await this.client.getChainDetailsMapAndPoolInfoMap();n=await this.client.getPoolInfoMap(Un(i.chainDetailsMap))}this.poolInfoCache.putAll(n)}cachePut(a,n){this.poolInfoCache.put(Je(a),n)}},un=class{constructor(){this.cache=new Ie({defaultTtl:ii})}putAll(a){for(let[n,i]of Object.entries(a))this.cache.put(n,i)}putAllIfNotExists(a){for(let[n,i]of Object.entries(a))this.cache.get(n)||this.cache.put(n,i)}put(a,n){this.cache.put(a,n)}get(a){let n=Je(a);return this.cache.get(n)}};var Ta=_(require("tronweb")),Pa=_(require("web3"));var ln=require("big.js");async function V(o,a){return await o.getPoolInfoByKey({chainSymbol:a.chainSymbol,poolAddress:a.poolAddress})}function x(o){if((0,ln.Big)(o).lte(0))throw new at("Amount must be greater than zero")}function F(o,a,n){let i=(0,ln.Big)(a).toFixed();if(i.split(".").length==2&&i.split(".")[1].length>n)throw new st(o,i.split(".")[1].length,n)}async function Wt(o,a,n){return await Promise.race([o,new Promise((i,s)=>{setTimeout(()=>s(new Le(a)),n)})])}async function dn(o,a,n,i){if(n<1)throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${n} was received.`);let s=0;for(;;)try{return await Wt(o(),a,i)}catch{if(++s>=n)throw new Le(a)}}async function Xn(o,a,n,i=1.5,s=!1){let r=[],A=0;if(r.push(await o()),!a(r[r.length-1]))return r;let c=new Date(Date.now()+n*1e3).valueOf(),m=1e3,u=m;for(;Date.now()<c&&a(r[r.length-1]);)A++,s&&console.info(`Waiting ${m}ms before trying again (bringing the total wait time to ${u}ms so far, of total ${n*1e3}ms)`),await new Promise(d=>setTimeout(d,m)),m=m*i,new Date(Date.now()+m).valueOf()>c&&(m=c-Date.now(),s&&console.info(`was gonna wait too long; new waitTime: ${m}ms`)),u=m+u,r.push(await o(r[r.length-1])),s&&a(r[r.length-1])&&console.info(`${A}. Called ${o.name}; ${r.length} prev attempts. Most recent: ${JSON.stringify(r[r.length-1],null,2)}`);return r}var Zt=_(require("@project-serum/anchor")),Pn=require("@solana/web3.js"),ra=require("big.js");var Yn=[{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 Ln=[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"address",name:"cctpMessenger_",type:"address"},{internalType:"address",name:"cctpTransmitter_",type:"address"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedExtraGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"RecipientReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"}],name:"TokensSentExtras",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridgeWithWalletAddress",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"changeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getDomainByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint64",name:"nonce",type:"uint64"}],name:"isMessageProcessed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bytes",name:"message",type:"bytes"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"domain",type:"uint32"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}];var Y=_(require("@project-serum/anchor")),L=require("@solana/web3.js");async function oe(o,a){return Y.utils.token.associatedAddress({mint:a,owner:o})}async function xe(o){let[a]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("config")],o);return a}async function Jn(o,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("lock"),Uint8Array.from(o)],a);return n}async function mt(o,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([o])],a);return n}async function Ke(o){let a=await xe(o),[n]=await L.PublicKey.findProgramAddress([a.toBuffer()],o);return n}async function Kn(o,a){let[n]=await L.PublicKey.findProgramAddress([o.toBuffer()],a);return n}async function Qe(o,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("token"),o.toBytes()],a);return n}async function Qn(o,a,n){let[i]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("other_bridge_token"),Buffer.from([o]),a],n);return i}async function pn(o,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([o])],a);return n}async function gn(o,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([o])],a);return n}async function Hn(o,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("sent_message"),o],a);return n}async function fn(o,a,n){let[i]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("user_deposit"),a.toBytes(),o.toBytes()],n);return i}async function zn(o,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("cctp_bridge"),o.toBytes()],a);return n}async function jn(o,a){let[n]=await L.PublicKey.findProgramAddress([Y.utils.bytes.utf8.encode("token"),o.toBytes()],a);return n}function qn(o,a){let[n]=L.PublicKey.findProgramAddressSync([Y.utils.bytes.utf8.encode("lock"),a.toBuffer()],o);return n}function $n(o,a,n,i){let s=_e("message_transmitter",n),r=_e("token_messenger",i),A=_e("__event_authority",i),c=_e("token_minter",i),m=_e("local_token",i,[a]),u=_e("remote_token_messenger",i,[o.toString()]),d=_e("sender_authority",i);return{messageTransmitterAccount:s,tokenMessenger:r,tokenMessengerEventAuthority:A,tokenMinter:c,localToken:m,remoteTokenMessengerKey:u,authorityPda:d}}function _e(o,a,n=[]){let i=[Buffer.from(Y.utils.bytes.utf8.encode(o))];for(let r of n)typeof r=="string"?i.push(Buffer.from(Y.utils.bytes.utf8.encode(r))):Array.isArray(r)?i.push(Buffer.from(r)):Buffer.isBuffer(r)?i.push(r):i.push(r.toBuffer());return L.PublicKey.findProgramAddressSync(i,a)[0]}var ea=require("@project-serum/anchor"),Gt=require("@solana/web3.js");function Fe(o,a){let n=new Gt.Connection(o,"confirmed"),i=new Gt.PublicKey(a);return new ea.AnchorProvider(n,{publicKey:i},{preflightCommitment:"confirmed",commitment:"confirmed"})}var Ae=class{};var ta=require("@solana/web3.js"),na=require("@stellar/stellar-sdk"),we=require("big.js"),yn=_(require("randombytes")),aa=_(require("tronweb"));function Re(o,a,n){let i;switch(a){case"EVM":{i=oi(o);break}case"SOLANA":{i=new ta.PublicKey(o).toBuffer();break}case"TRX":{i=Ai(o);break}case"SRB":{i=new na.Address(o).toBuffer();break}}switch(n){case"EVM":return"0x"+i.toString("hex");case"SOLANA":return Array.from(i);case"TRX":return i.toJSON().data;case"SRB":return i.toJSON().data}}function ia(o){return Buffer.from(o.replace(/^0x/i,""),"hex")}function oi(o){let n=ia(o);return Buffer.concat([Buffer.alloc(32-n.length,0),n],32)}function Ai(o){let a=ut(o),n=ia(a);return ci(n,32)}function ut(o){return Buffer.from(aa.utils.crypto.decodeBase58Address(o)).toString("hex").replace(/^41/,"0x")}function ci(o,a){if(o.length>=a)return o;let n=Buffer.alloc(a,0);return o.copy(n,a-o.length),n}function He(){return(0,yn.default)(32)}function hn(){let o=(0,yn.default)(32).readBigInt64BE();return o<0?o*-1n:o}function We(o,a){let n={},i=a.sourceToken;return n.amount=R(a.amount,i.decimals).toFixed(),n.contractAddress=i.bridgeAddress,n.fromAccountAddress=a.fromAccountAddress,n.fromTokenAddress=Re(i.tokenAddress,o,o),n.toAccountAddress=a.toAccountAddress,n.toTokenAddress=Re(a.destinationToken.tokenAddress,o,o),n.minimumReceiveAmount=a.minimumReceiveAmount?R(a.minimumReceiveAmount,a.destinationToken.decimals).toFixed():"0",n}async function ve(o,a,n){let i={};i.fromChainId=a.sourceToken.allbridgeChainId,i.fromChainSymbol=a.sourceToken.chainSymbol;let s=Q[a.destinationToken.chainSymbol].chainType;i.fromTokenAddress=a.sourceToken.tokenAddress,i.toChainId=a.destinationToken.allbridgeChainId,i.toTokenAddress=a.destinationToken.tokenAddress,a.gasFeePaymentMethod==="stablecoin"?i.gasFeePaymentMethod="stablecoin":i.gasFeePaymentMethod="native";let r=a.sourceToken;if(a.messenger===3){if(!r.cctpAddress||!a.destinationToken.cctpAddress)throw new ne("Such route does not support CCTP protocol");i.contractAddress=r.cctpAddress}else i.contractAddress=r.bridgeAddress;i.messenger=a.messenger,i.fromAccountAddress=a.fromAccountAddress,i.amount=R(a.amount,r.decimals).toFixed();let{fee:A,feeFormat:c}=a;if(!A){let l=(await bn(i.fromChainId,a.sourceToken.chainType,i.toChainId,r.decimals,i.messenger,n))[i.gasFeePaymentMethod];if(!l)throw new Xe;A=l.int,c="int"}if(c=="float")switch(i.gasFeePaymentMethod){case"native":i.fee=R(A,U[r.chainType]).toFixed(0);break;case"stablecoin":i.fee=R(A,r.decimals).toFixed(0);break}else i.fee=A;let{extraGas:m,extraGasFormat:u}=a;if(m&&+m>0){if(u=="float")switch(i.gasFeePaymentMethod){case"native":i.extraGas=R(m,U[r.chainType]).toFixed(0);break;case"stablecoin":i.extraGas=R(m,r.decimals).toFixed(0);break}else i.extraGas=m;await ui(i.extraGas,i.gasFeePaymentMethod,r,a.destinationToken,n)}return i.fromTokenAddress=Re(i.fromTokenAddress,o,o),i.toAccountAddress=Re(a.toAccountAddress,s,o),i.toTokenAddress=Re(i.toTokenAddress,s,o),i.gasFeePaymentMethod=="stablecoin"&&mi(i.amount,r.decimals,i.fee,i.extraGas),i}function mi(o,a,n,i){let s=(0,we.Big)(o).minus(n).minus(i??0);if(s.lte(0))throw new Ze(`Amount not enough to pay fee, ${S((0,we.Big)(s).minus(1).neg(),a).toFixed()} stables is missing`)}async function bn(o,a,n,i,s,r){let A=await r.getReceiveTransactionCost({sourceChainId:o,destinationChainId:n,messenger:s}),c={native:{int:A.fee,float:S(A.fee,U[a]).toFixed()}};if(A.sourceNativeTokenPrice){let m=ke(new we.Big(A.fee).mul(A.sourceNativeTokenPrice),U[a],i).toFixed(0,we.Big.roundUp);c.stablecoin={int:m,float:S(m,i).toFixed()}}return c}async function ui(o,a,n,i,s){let A=(await Tn(n,i,s)).extraGasMax[a];if(!A)throw new Xe(`Impossible to pay extra gas by '${a}' payment method`);let c=A.int;if((0,we.Big)(o).gt(c))throw new it(`Extra gas ${o} in int format, exceeded limit ${c} for '${a}' payment method`)}async function Tn(o,a,n){let i={},s=await n.getReceiveTransactionCost({sourceChainId:o.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:1}),r=a.txCostAmount.maxAmount,A=S(r,U[a.chainType]).toFixed(),c=(0,we.Big)(A).div(s.exchangeRate).toFixed(U[o.chainType],we.Big.roundDown),m=R(c,U[o.chainType]).toFixed(0);if(i.native={int:m,float:c},s.sourceNativeTokenPrice){let u=(0,we.Big)(c).mul(s.sourceNativeTokenPrice).toFixed(o.decimals,we.Big.roundDown);i.stablecoin={int:R(u,o.decimals).toFixed(0),float:u}}return{extraGasMax:i,destinationChain:{gasAmountMax:{int:r,float:A},swap:{int:a.txCostAmount.swap,float:S(a.txCostAmount.swap,U[a.chainType]).toFixed()},transfer:{int:a.txCostAmount.transfer,float:S(a.txCostAmount.transfer,U[a.chainType]).toFixed()}},exchangeRate:s.exchangeRate,sourceNativeTokenPrice:s.sourceNativeTokenPrice}}function sa(o){return o.sourceToken.chainSymbol!==o.destinationToken.chainSymbol}var dt=class extends Ae{constructor(n,i,s){super();this.web3=n;this.api=i;this.nodeRpcUrlsConfig=s;this.chainType="EVM"}async send(n){let i=await this.buildRawTransactionSend(n);return this.sendRawTransaction(i)}async buildRawTransactionSwap(n){let i=We(this.chainType,n);return await this.buildRawTransactionSwapFromParams(i)}async buildRawTransactionSwapFromParams(n){let{amount:i,contractAddress:s,fromAccountAddress:r,fromTokenAddress:A,toAccountAddress:c,toTokenAddress:m,minimumReceiveAmount:u}=n,l=this.getBridgeContract(s).methods.swap(i,A,m,c,u);return Promise.resolve({from:r,to:s,data:l.encodeABI()})}async buildRawTransactionSend(n){let i=await ve(this.chainType,n,this.api),{amount:s,contractAddress:r,fromAccountAddress:A,fromTokenAddress:c,toChainId:m,toAccountAddress:u,toTokenAddress:d,messenger:l,fee:y,gasFeePaymentMethod:h,extraGas:b}=i,T="0x"+He().toString("hex"),f,g,w=y;if(b&&(w=(0,ra.Big)(w).plus(b).toFixed()),l===3){let P=await this.buildRawTransactionCctpSend(n,i,w);f=P.sendMethod,g=P.value}else{let P=this.getBridgeContract(r);h==="stablecoin"?(f=P.methods.swapAndBridge(c,s,u,m,d,T,l,w),g="0"):(f=P.methods.swapAndBridge(c,s,u,m,d,T,l,0),g=w)}return Promise.resolve({from:A,to:r,value:g,data:f.encodeABI()})}async buildRawTransactionCctpSend(n,i,s){let{amount:r,contractAddress:A,toChainId:c,toAccountAddress:m,gasFeePaymentMethod:u}=i,d=this.getContract(Ln,A),l,y;if(n.destinationToken.chainType==="SOLANA"){let h,b=new Pn.PublicKey(n.toAccountAddress),T=new Pn.PublicKey(n.destinationToken.tokenAddress),f=await oe(b,T),g=Fe(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),n.toAccountAddress);Zt.setProvider(g);let w=await Zt.Spl.token(g).account.token.fetchNullable(f);if(w?.authority.equals(b))h=Re(f.toBase58(),"SOLANA",this.chainType);else{let P=await g.connection.getTokenAccountsByOwner(b,{mint:T});if(P.value.length===0&&!w)h=Re(f.toBase58(),"SOLANA",this.chainType);else if(P.value.length>0)h=Re(P.value[0].pubkey.toBase58(),"SOLANA",this.chainType);else throw new v("Associated account has wrong owner")}u==="stablecoin"?(l=d.methods.bridgeWithWalletAddress(r,h,m,c,s),y="0"):(l=d.methods.bridgeWithWalletAddress(r,h,m,c,0),y=s)}else u==="stablecoin"?(l=d.methods.bridge(r,m,c,s),y="0"):(l=d.methods.bridge(r,m,c,0),y=s);return{sendMethod:l,value:y}}async sendRawTransaction(n){let i=await this.web3.eth.estimateGas(n),s={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:r}=await this.web3.eth.sendTransaction({...n,gas:i,...s});return{txId:r}}getContract(n,i){return new this.web3.eth.Contract(n,i)}getBridgeContract(n){return this.getContract(Yn,n)}};var Nt=class{constructor(a,n,i,s){this.api=a;this.nodeRpcUrlsConfig=n;this.params=i;this.tokenService=s}async approve(a,n){let i,s;n?(i=a,s=n):s=a;let r=pt(s.token,s.messenger);return this.tokenService.buildRawTransactionApprove({...s,spender:r},i)}async send(a,n){return x(a.amount),F("amount",a.amount,a.sourceToken.decimals),sa(a)?Dt(a.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionSend(a):Dt(a.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionSwap(a)}};var W=require("@project-serum/anchor"),I=require("@solana/web3.js"),ce=require("big.js");var gt={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 oa={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 Aa=require("@project-serum/anchor"),ca=_(require("big.js")),ft=_(require("web3"));async function ze(o,a){return await Aa.Spl.token(a).account.token.fetch(o)}async function ma(o,a,n){let i=await a.account.pool.fetch(n),s=i.decimals,r=(0,ca.default)(i.feeShareBp.toString()).div(1e4).toFixed(),A={aValue:i.a.toString(),dValue:i.d.toString(),totalLpAmount:i.totalLpAmount.toString(),tokenBalance:i.tokenBalance.toString(),vUsdBalance:i.vUsdBalance.toString(),accRewardPerShareP:i.accRewardPerShareP.toString()};return Te(o,{decimals:s,feeShare:r},A)}function ua(o){let a=o.amount,n="0x"+o.recipient.toString("hex"),i=o.sourceChainId,s=o.destinationChainId,r="0x"+o.receiveToken.toString("hex"),A="0x"+o.nonce.toString("hex"),c=1,m="0x"+o.chainBridge.toString("hex"),u=ft.default.utils.encodePacked({t:"uint256",v:a},{t:"bytes32",v:n},{t:"uint256",v:i},{t:"bytes32",v:r},{t:"uint256",v:A},{t:"uint8",v:c});if(!u)throw new v("message cannot be undefined");let d=ft.default.utils.keccak256(Buffer.from(u.replace("0x",""),"hex")),l=Buffer.from(d.replace("0x",""),"hex");l[0]=i,l[1]=s;let y=ft.default.utils.encodePacked({t:"bytes32",v:"0x"+l.toString("hex")},{t:"bytes32",v:m});if(!y)throw new Ne("messageWithSigner cannot be undefined");let h=ft.default.utils.keccak256(Buffer.from(y.replace("0x",""),"hex")),b=Buffer.from(h.replace("0x",""),"hex");return b[0]=l[0],b[1]=l[1],b}var $=require("@solana/web3.js"),la=require("big.js");var Sn=require("@solana/web3.js");async function Ve(o,a){return await Promise.all(o.message.addressTableLookups.map(async n=>new Sn.AddressLookupTableAccount({key:n.accountKey,state:Sn.AddressLookupTableAccount.deserialize(await a.getAccountInfo(n.accountKey).then(i=>{if(!i)throw new v("Cannot get AccountInfo");return i.data}))})))}var _t="AUTO";async function je(o,a,n){let i=new $.Connection(n,"confirmed"),s=(await i.simulateTransaction(o)).value.unitsConsumed;await pa(o.instructions,s,a,i)}async function da(o,a,n){let i=new $.Connection(n,"confirmed"),s=await Ve(o,i),r=$.TransactionMessage.decompile(o.message,{addressLookupTableAccounts:s});if(o.serialize().length>1232)throw new ot;await pa(r.instructions,769230,a,i),o.message=r.compileToV0Message(s)}async function pa(o,a,n,i){if(a>0){let s=li(a,o);if(n?.solana){let r=n.solana;if(r===_t)await wn(o,i);else if("pricePerUnitInMicroLamports"in r)await wn(o,i,r.pricePerUnitInMicroLamports);else{let A=(0,la.Big)(r.extraFeeInLamports).div(s).mul(At(6)).toFixed(0);await wn(o,i,A)}}}}function li(o,a){let n=a.findIndex(r=>r.programId.equals($.ComputeBudgetProgram.programId)&&$.ComputeBudgetInstruction.decodeInstructionType(r)==="SetComputeUnitLimit"),i=Number((o*1.3).toFixed(0)),s=$.ComputeBudgetProgram.setComputeUnitLimit({units:i});return n>=0?a[n]=s:a.push(s),i.toString()}async function wn(o,a,n){let i=o.findIndex(A=>A.programId.equals($.ComputeBudgetProgram.programId)&&$.ComputeBudgetInstruction.decodeInstructionType(A)==="SetComputeUnitPrice"),s=BigInt(n||await di(a)),r=$.ComputeBudgetProgram.setComputeUnitPrice({microLamports:s});return i>=0?o[i]=r:o.push(r),s.toString()}async function di(o){let a=await o.getRecentPrioritizationFees(),n=0;for(let i of a)n+=i.prioritizationFee;return(n/a.length).toFixed(0)}var ga=require("@solana/spl-token"),Oe=require("@solana/web3.js"),qe=_(require("axios"));var Ut=class{constructor(a,n){this.connection=new Oe.Connection(a),this.jupiterUrl=n.replace(/\/$/,"")}async getJupiterSwapTx(a,n,i,s){let r;try{let l=s?"ExactOut":"ExactIn";r=await qe.default.get(`${this.jupiterUrl}/quote?inputMint=${n}
2
2
  &outputMint=${ga.NATIVE_MINT.toString()}
3
3
  &amount=${i}
4
4
  &swapMode=${l}