@allbridge/bridge-core-sdk 3.20.0-alpha.1 → 3.20.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/package.json +3 -1
package/dist/cjs/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var Va=Object.create;var Rt=Object.defineProperty;var Oa=Object.getOwnPropertyDescriptor;var Ea=Object.getOwnPropertyNames;var Xa=Object.getPrototypeOf,Ya=Object.prototype.hasOwnProperty;var La=(o,a)=>{for(var n in a)Rt(o,n,{get:a[n],enumerable:!0})},xn=(o,a,n,i)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of Ea(a))!Ya.call(o,s)&&s!==n&&Rt(o,s,{get:()=>a[s],enumerable:!(i=Oa(a,s))||i.enumerable});return o};var ke=(o,a,n)=>(n=o!=null?Va(Xa(o)):{},xn(a||!o||!o.__esModule?Rt(n,"default",{value:o,enumerable:!0}):n,o)),Ja=o=>xn(Rt({},"__esModule",{value:!0}),o);var Zi={};La(Zi,{AddressStatus:()=>vt,AllbridgeCoreSdk:()=>kn,AmountFormat:()=>ut,AmountNotEnoughError:()=>Ze,ArgumentInvalidDecimalsError:()=>st,CCTPDoesNotSupportedError:()=>ee,ChainSymbol:()=>te,ChainType:()=>N,ErrorCode:()=>Wn,ExtraGasMaxLimitExceededError:()=>it,FeePaymentMethod:()=>Ue,InsufficientPoolLiquidityError:()=>ye,InvalidAmountError:()=>at,InvalidGasFeePaymentOptionError:()=>Xe,InvalidMessengerOptionError:()=>cn,InvalidTxError:()=>De,JupiterError:()=>O,Messenger:()=>Te,MethodNotSupportedError:()=>L,NodeRpcUrlNotInitializedError:()=>rt,SdkError:()=>T,SdkRootError:()=>_,SolanaAutoTxFee:()=>Ot,TimeoutError:()=>Le,TxTooLargeError:()=>ot,VerifyTxError:()=>Ye,mainnet:()=>nt,nodeRpcUrlsDefault:()=>Qa,nodeUrlsDefault:()=>Ka});module.exports=Ja(Zi);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},Ka={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},Qa={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org"};var ue=require("big.js");var _=class extends Error{errorCode;constructor(a,n){super(n),this.errorCode=a}},T=class extends _{constructor(a){super("SdkError",a)}},at=class extends _{constructor(a){super("InvalidAmountError",a)}},Ze=class extends _{constructor(a){super("AmountNotEnoughError",a)}},ye=class extends _{constructor(a){super("InsufficientPoolLiquidityError",a)}},O=class extends _{constructor(a){super("JupiterError",a)}},Xe=class extends _{constructor(a){super("InvalidGasFeePaymentOptionError",a)}},cn=class extends _{constructor(a){super("InvalidMessengerOptionError",a)}},L=class extends _{constructor(a){super("MethodNotSupportedError",a)}},Ye=class extends _{constructor(a){super("VerifyTxError",a)}},De=class extends _{constructor(a){super("InvalidTxError",a)}},it=class extends _{constructor(a){super("ExtraGasMaxLimitExceededError",a)}},st=class extends _{constructor(a,n,i){super("ArgumentInvalidDecimalsError",`Argument '${a}' decimals '${n}' cannot be greater than '${i}'`)}},Le=class extends _{constructor(a){super("TimeoutError",a)}},rt=class extends _{constructor(a){super("NodeRpcUrlNotInitializedError",`For chain '${a}' Node RPC URL not initialized`)}},ee=class extends _{constructor(a){super("CCTPDoesNotSupportedError",a)}},ot=class extends _{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},Wn=(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))(Wn||{});var te=(p=>(p.BSC="BSC",p.ETH="ETH",p.BAS="BAS",p.SOL="SOL",p.TRX="TRX",p.POL="POL",p.ARB="ARB",p.CEL="CEL",p.AVA="AVA",p.SRB="SRB",p.STLR="STLR",p.OPT="OPT",p))(te||{}),N=(s=>(s.EVM="EVM",s.SOLANA="SOLANA",s.TRX="TRX",s.SRB="SRB",s))(N||{});var Ha={EVM:18,SOLANA:9,TRX:6,SRB:7},za={BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"}},R=(()=>{let o={...za};return{addChainsProperties(a){o={...o,...a}},getChainProperty(a){let n=o[a];if(!n)throw new T(`Cannot find chain properties for ${a}`);return n},getChainsProperties(){return o},getChainDecimalsByType(a){return Ha[a]}}})();var Yn=ke(require("axios"));var Fn="3.20.0-alpha.1";var g=require("big.js"),It=ke(require("bn.js"));function mn(o,a){return(0,g.Big)(100).minus((0,g.Big)(100).times(a).div(o)).toNumber()}function _e(o,a){return xe(o,a,3).round(0,g.Big.roundDown)}function H(o,a){return xe(o,3,a)}function xe(o,a,n){let i=(0,g.Big)(n).minus(a).toNumber();return(0,g.Big)(o).times(At(i))}function At(o){return(0,g.Big)(10).pow(o)}function M(o,a){return(0,g.Big)(o).times(At(a))}function B(o,a){let n=(0,g.Big)(o);return n.eq(0)?(0,g.Big)(0):(0,g.Big)(n).div(At(a))}function z(o){return B((0,g.Big)(o.tokenBalance).minus(o.vUsdBalance).toFixed(),3).div(2).toFixed()}function he(o,{feeShare:a,decimals:n},i){let s=(0,g.Big)(o);if(s.lte(0))return"0";let r=s.times(a),A=s.minus(r),c=_e(A,n),m=(0,g.Big)(i.tokenBalance).plus(c),l=be(m,i.aValue,i.dValue);return(0,g.Big)(i.vUsdBalance).minus(l).round(0,g.Big.roundDown).toFixed()}function ct(o,{feeShare:a,decimals:n},i){let s=(0,g.Big)(o);if(s.lte(0))return(0,g.Big)(0).toFixed();let r=s.plus(i.vUsdBalance),A=be(r,i.aValue,i.dValue),c=H((0,g.Big)(i.tokenBalance).minus(A),n),m=(0,g.Big)(c).times(a);return(0,g.Big)(c).minus(m).round(0,g.Big.roundDown).toFixed()}function Gn(o,a){let n=(0,g.Big)(o);if(n.lte(0))return a;let i=n.plus(a.vUsdBalance),s=be(i,a.aValue,a.dValue);return{aValue:a.aValue,dValue:a.dValue,tokenBalance:s.toFixed(0),vUsdBalance:i.toFixed(0)}}function Zn(o,{feeShare:a,decimals:n},i){if((0,g.Big)(o).lte(0))return(0,g.Big)(0);let s=(0,g.Big)(i.vUsdBalance).minus(o);if(s.lte(0))throw new ye;let r=be(s,i.aValue,i.dValue),A=(0,g.Big)(r).minus(i.tokenBalance),c=H(A,n),m=(0,g.Big)(a).div((0,g.Big)(1).minus(a)),l=(0,g.Big)(c).times(m).round(0,g.Big.roundUp);return(0,g.Big)(c).plus(l).round(0,g.Big.roundDown)}function Dn(o,{feeShare:a,decimals:n},i){if((0,g.Big)(o).lte(0))return(0,g.Big)(0);let s=(0,g.Big)(a).div((0,g.Big)(1).minus(a)),r=(0,g.Big)(o).times(s).round(0,g.Big.roundUp),A=(0,g.Big)(o).plus(r),c=_e(A,n),m=(0,g.Big)(i.tokenBalance).minus(c);if(m.lte(0))throw new ye;let l=be(m,i.aValue,i.dValue);return(0,g.Big)(l).minus(i.vUsdBalance).round(0,g.Big.roundDown)}function be(o,a,n){let i=(0,g.Big)(4).times(a).times((0,g.Big)(n).minus(o)).minus(n),s=(0,g.Big)(n).pow(3),r=i.pow(2),A=(0,g.Big)(o).times((0,g.Big)(o).times(r).plus((0,g.Big)(4).times(a).times(s))).sqrt().round(0,g.Big.roundDown),c=(0,g.Big)(8).times(a).times(o),m=i.times(o).plus(A).div(c).round(0,g.Big.roundDown);return m.eq(0)?(0,g.Big)(0):m.plus(1)}function _n(o,a,n,i){let s=new It.default(o),r=new It.default(n),A=new It.default(a);return s.mul(r).shrn(i).sub(A).toString()}function Nn(o){return(0,g.Big)(o).gt(0)?`${Number((0,g.Big)(o).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function Un(o,a,n){let i=(0,g.Big)(a).times(n),s=(0,g.Big)(a).plus(n),r=(0,g.Big)(8).times(o).times(i).times(s),A=i.times((0,g.Big)(16).times(o).minus(4)).div(3),c=r.times(r),m=A.times(A).times(A),l=c.plus(m),d=(0,g.Big)(l).sqrt(),u=(0,g.Big)(Math.cbrt(+r.plus(d).toFixed())),p=(0,g.Big)(Math.cbrt(+r.minus(d).toFixed()));return u.plus(p).toFixed()}var vt=(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))(vt||{});var Te=(i=>(i[i.ALLBRIDGE=1]="ALLBRIDGE",i[i.WORMHOLE=2]="WORMHOLE",i[i.CCTP=3]="CCTP",i))(Te||{});function Vn(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 On(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=z(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=R.getChainsProperties()[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 En(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 Xn(o){let a={};for(let[n,i]of Object.entries(o)){let s=n;for(let[r,A]of Object.entries(i))A.imbalance=z(A),a[Je({chainSymbol:s,poolAddress:r})]=A}return a}var Mt=class{api;constructor(a){this.api=Yn.default.create({baseURL:a.coreApiUrl,headers:{Accept:"application/json",...a.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+Fn},params:a.coreApiQueryParams})}async getTokenInfo(){let{data:a}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:Vn(a),poolInfoMap:On(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 Xn(i)}};var ni=(o,a)=>o!==null&&Object.prototype.hasOwnProperty.call(o,a),Ln="__cache__",ln=function(o){return typeof o!="string"?Ln+JSON.stringify(o):Ln+o},un=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=ln(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[ln(a)];return n&&n.data}remove(a){let n=ln(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}},Ce=un;var dn=20*1e3,ai=55*1e3,kt=class{constructor(a){this.apiClient=a;this.tokenInfoCache=new Ce({defaultTtl:ai}),this.receivedTransactionCache=new Ce({defaultTtl:dn}),this.pendingInfoCache=new Ce({defaultTtl:dn}),this.gasBalanceCache=new Ce({defaultTtl:dn})}tokenInfoCache;pendingInfoCache;gasBalanceCache;receivedTransactionCache;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 xt=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 Wt=class{constructor(a,n){this.client=a;this.isStaging=n.coreApiQueryParams?.staging==="true"}isStaging;async getChainDetailsMap(a){let n=await this.client.getChainDetailsMap(),i={};for(let s in n){let r=n[s];r&&(i[s]={...r,tokens:Jn(r.tokens,a,this.isStaging)})}return i}async tokens(a){return Jn(await this.client.tokens(),a,this.isStaging)}async getPendingInfo(){return this.client.getPendingInfo()}async getGasBalance(a,n){return this.client.getGasBalance(a,n)}async getTransferStatus(a,n){return await this.client.getTransferStatus(a,n)}async getReceiveTransactionCost(a){return await this.client.getReceiveTransactionCost(a)}cachePut(a,n){return this.client.cachePut(a,n)}getPoolInfoByKey(a){return this.client.getPoolInfoByKey(a)}refreshPoolInfo(a){return this.client.refreshPoolInfo(a)}};function Jn(o,a,n){return o.filter(i=>n?!0:i.flags[a]).map(ii)}function ii(o){let{flags:a,...n}=o;return n}var si=55*1e3,Ft=class{constructor(a){this.client=a;this.poolInfoCache=new pn}poolInfoCache;async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(a,n){return this.client.getTransferStatus(a,n)}getReceiveTransactionCost(a){return this.client.getReceiveTransactionCost(a)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(a,n){return this.client.getGasBalance(a,n)}async getPoolInfoByKey(a){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let n=this.poolInfoCache.get(a);if(n)return n;{let i=await this.client.getPoolInfoMap(a);this.poolInfoCache.putAll(i);let s=i[Je(a)];if(s)return s;throw new T("Cannot find pool info for "+a.poolAddress+" on chain "+a.chainSymbol)}}async refreshPoolInfo(a){let n;if(a)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),n=await this.client.getPoolInfoMap(a);else{let i=await this.client.getChainDetailsMapAndPoolInfoMap();n=await this.client.getPoolInfoMap(En(i.chainDetailsMap))}this.poolInfoCache.putAll(n)}cachePut(a,n){this.poolInfoCache.put(Je(a),n)}},pn=class{cache;constructor(){this.cache=new Ce({defaultTtl:si})}putAll(a){for(let[n,i]of Object.entries(a))this.cache.put(n,i)}putAllIfNotExists(a){for(let[n,i]of Object.entries(a))this.cache.get(n)||this.cache.put(n,i)}put(a,n){this.cache.put(a,n)}get(a){let n=Je(a);return this.cache.get(n)}};var Ba=require("tronweb"),Ca=require("web3");var gn=require("big.js");async function V(o,a){return await o.getPoolInfoByKey({chainSymbol:a.chainSymbol,poolAddress:a.poolAddress})}function W(o){if((0,gn.Big)(o).lte(0))throw new at("Amount must be greater than zero")}function F(o,a,n){let i=(0,gn.Big)(a).toFixed(),[s,r]=i.split(".");if(r&&r.length>n)throw new st(o,r.length,n)}async function Gt(o,a,n){return await Promise.race([o,new Promise((i,s)=>{setTimeout(()=>s(new Le(a)),n)})])}async function fn(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 Gt(o(),a,i)}catch{if(++s>=n)throw new Le(a)}}async function Kn(o,a,n,i=1.5,s=!1){let r=[],A=0,c=await o();if(r.push(c),!a(c))return r;let m=new Date(Date.now()+n*1e3).valueOf(),l=1e3,d=l;for(;Date.now()<m;){let u=r[r.length-1];if(u===void 0||!a(u))break;A++,s&&console.info(`Waiting ${l}ms before trying again (bringing the total wait time to ${d}ms so far, of total ${n*1e3}ms)`),await new Promise(y=>setTimeout(y,l)),l=l*i,new Date(Date.now()+l).valueOf()>m&&(l=m-Date.now(),s&&console.info(`was gonna wait too long; new waitTime: ${l}ms`)),d=l+d;let p=await o(u);r.push(p),s&&a(p)&&console.info(`${A}. Called ${o.name}; ${r.length} prev attempts. Most recent: ${JSON.stringify(r[r.length-1],null,2)}`)}return r}var Nt=ke(require("@project-serum/anchor")),Bn=require("@solana/web3.js"),ca=require("big.js");var ri={abi:[{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"}]},Qn=ri;var oi={abi:[{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"}]},Hn=oi;var X=ke(require("@project-serum/anchor")),Y=require("@solana/web3.js");async function re(o,a){return X.utils.token.associatedAddress({mint:a,owner:o})}async function We(o){let[a]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("config")],o);return a}async function zn(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("lock"),Uint8Array.from(o)],a);return n}async function mt(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([o])],a);return n}async function Ke(o){let a=await We(o),[n]=await Y.PublicKey.findProgramAddress([a.toBuffer()],o);return n}async function jn(o,a){let[n]=await Y.PublicKey.findProgramAddress([o.toBuffer()],a);return n}async function Qe(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("token"),o.toBytes()],a);return n}async function qn(o,a,n){let[i]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("other_bridge_token"),Buffer.from([o]),a],n);return i}async function yn(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([o])],a);return n}async function hn(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([o])],a);return n}async function $n(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("sent_message"),o],a);return n}async function bn(o,a,n){let[i]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("user_deposit"),a.toBytes(),o.toBytes()],n);return i}async function ea(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("cctp_bridge"),o.toBytes()],a);return n}async function ta(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("token"),o.toBytes()],a);return n}function na(o,a){let[n]=Y.PublicKey.findProgramAddressSync([X.utils.bytes.utf8.encode("lock"),a.toBuffer()],o);return n}function aa(o,a,n,i){let s=Ne("message_transmitter",n),r=Ne("token_messenger",i),A=Ne("__event_authority",i),c=Ne("token_minter",i),m=Ne("local_token",i,[a]),l=Ne("remote_token_messenger",i,[o.toString()]),d=Ne("sender_authority",i);return{messageTransmitterAccount:s,tokenMessenger:r,tokenMessengerEventAuthority:A,tokenMinter:c,localToken:m,remoteTokenMessengerKey:l,authorityPda:d}}function Ne(o,a,n=[]){let i=[Buffer.from(X.utils.bytes.utf8.encode(o))];for(let r of n)typeof r=="string"?i.push(Buffer.from(X.utils.bytes.utf8.encode(r))):Array.isArray(r)||Buffer.isBuffer(r)?i.push(Buffer.from(Uint8Array.from(r))):i.push(Buffer.from(Uint8Array.from(r.toBuffer())));return Y.PublicKey.findProgramAddressSync(i,a)[0]}var ia=require("@project-serum/anchor"),Zt=require("@solana/web3.js");function Fe(o,a){let n=new Zt.Connection(o,"confirmed"),i=new Zt.PublicKey(a);return new ia.AnchorProvider(n,{publicKey:i},{preflightCommitment:"confirmed",commitment:"confirmed"})}var oe=class{};var sa=require("@solana/web3.js"),ra=require("@stellar/stellar-sdk"),Pe=require("big.js"),Pn=ke(require("randombytes")),Tn=require("tronweb");function Re(o,a,n){let i;switch(a){case"EVM":{i=Ai(o);break}case"SOLANA":{i=new sa.PublicKey(o).toBuffer();break}case"TRX":{i=ci(o);break}case"SRB":{i=new ra.Address(o).toBuffer();break}}switch(n){case"EVM":return"0x"+i.toString("hex");case"SOLANA":return Array.from(i);case"TRX":return i;case"SRB":return i.toJSON().data}}function oa(o){return Buffer.from(o.replace(/^0x/i,""),"hex")}function Ai(o){let n=oa(o);return Buffer.concat([Buffer.alloc(32-n.length,0),n],32)}function ci(o){let a=Dt(o),n=oa(a);return mi(n,32)}function Dt(o){let a=Tn.utils.crypto.decodeBase58Address(o);return a?Tn.utils.bytes.byteArray2hexStr(a).replace(/^41/,"0x"):""}function mi(o,a){if(o.length>=a)return o;let n=Buffer.alloc(a,0);return o.copy(n,a-o.length),n}function _t(){return(0,Pn.default)(32)}function lt(){let o=(0,Pn.default)(32).readBigInt64BE();return o<0?o*-1n:o}function Ge(o,a){let n={},i=a.sourceToken;return n.amount=M(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?M(a.minimumReceiveAmount,a.destinationToken.decimals).toFixed():"0",n}async function Ie(o,a,n){let i={};i.fromChainId=a.sourceToken.allbridgeChainId,i.fromChainSymbol=a.sourceToken.chainSymbol;let s=R.getChainProperty(a.destinationToken.chainSymbol).chainType;i.fromTokenAddress=a.sourceToken.tokenAddress,i.toChainId=a.destinationToken.allbridgeChainId,i.toTokenAddress=a.destinationToken.tokenAddress,a.gasFeePaymentMethod==="stablecoin"?i.gasFeePaymentMethod="stablecoin":i.gasFeePaymentMethod="native";let r=a.sourceToken;if(a.messenger===3){if(!r.cctpAddress||!a.destinationToken.cctpAddress)throw new ee("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=M(a.amount,r.decimals).toFixed();let{fee:A,feeFormat:c}=a;if(!A){let u=(await Sn(i.fromChainId,a.sourceToken.chainType,i.toChainId,r.decimals,i.messenger,n))[i.gasFeePaymentMethod];if(!u)throw new Xe;A=u.int,c="int"}if(c=="float")switch(i.gasFeePaymentMethod){case"native":i.fee=M(A,R.getChainDecimalsByType(r.chainType)).toFixed(0);break;case"stablecoin":i.fee=M(A,r.decimals).toFixed(0);break}else i.fee=A;let{extraGas:m,extraGasFormat:l}=a;if(m&&+m>0){if(l=="float")switch(i.gasFeePaymentMethod){case"native":i.extraGas=M(m,R.getChainDecimalsByType(r.chainType)).toFixed(0);break;case"stablecoin":i.extraGas=M(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"&&li(i.amount,r.decimals,i.fee,i.extraGas),i}function li(o,a,n,i){let s=(0,Pe.Big)(o).minus(n).minus(i??0);if(s.lte(0))throw new Ze(`Amount not enough to pay fee, ${B((0,Pe.Big)(s).minus(1).neg(),a).toFixed()} stables is missing`)}async function Sn(o,a,n,i,s,r){let A=await r.getReceiveTransactionCost({sourceChainId:o,destinationChainId:n,messenger:s}),c={native:{int:A.fee,float:B(A.fee,R.getChainDecimalsByType(a)).toFixed()}};if(A.sourceNativeTokenPrice){let m=xe(new Pe.Big(A.fee).mul(A.sourceNativeTokenPrice),R.getChainDecimalsByType(a),i).toFixed(0,Pe.Big.roundUp);c.stablecoin={int:m,float:B(m,i).toFixed()}}return c}async function ui(o,a,n,i,s){let A=(await wn(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,Pe.Big)(o).gt(c))throw new it(`Extra gas ${o} in int format, exceeded limit ${c} for '${a}' payment method`)}async function wn(o,a,n){let i={},s=await n.getReceiveTransactionCost({sourceChainId:o.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:1}),r=a.txCostAmount.maxAmount,A=B(r,R.getChainDecimalsByType(a.chainType)).toFixed(),c=(0,Pe.Big)(A).div(s.exchangeRate).toFixed(R.getChainDecimalsByType(o.chainType),Pe.Big.roundDown),m=M(c,R.getChainDecimalsByType(o.chainType)).toFixed(0);if(i.native={int:m,float:c},s.sourceNativeTokenPrice){let l=(0,Pe.Big)(c).mul(s.sourceNativeTokenPrice).toFixed(o.decimals,Pe.Big.roundDown);i.stablecoin={int:M(l,o.decimals).toFixed(0),float:l}}return{extraGasMax:i,destinationChain:{gasAmountMax:{int:r,float:A},swap:{int:a.txCostAmount.swap,float:B(a.txCostAmount.swap,R.getChainDecimalsByType(a.chainType)).toFixed()},transfer:{int:a.txCostAmount.transfer,float:B(a.txCostAmount.transfer,R.getChainDecimalsByType(a.chainType)).toFixed()}},exchangeRate:s.exchangeRate,sourceNativeTokenPrice:s.sourceNativeTokenPrice}}function Aa(o){return o.sourceToken.chainSymbol!==o.destinationToken.chainSymbol}var dt=class extends oe{constructor(n,i,s){super();this.web3=n;this.api=i;this.nodeRpcUrlsConfig=s}chainType="EVM";async send(n){let i=await this.buildRawTransactionSend(n);return this.sendRawTransaction(i)}async buildRawTransactionSwap(n){let i=Ge(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:l}=n,u=this.getBridgeContract(s).methods.swap(i,A,m,c,l);return Promise.resolve({from:r,to:s,data:u.encodeABI()})}async buildRawTransactionSend(n){let i=await Ie(this.chainType,n,this.api),{amount:s,contractAddress:r,fromAccountAddress:A,fromTokenAddress:c,toChainId:m,toAccountAddress:l,toTokenAddress:d,messenger:u,fee:p,gasFeePaymentMethod:y,extraGas:h}=i,b="0x"+_t().toString("hex"),f,P,w=p;if(h&&(w=(0,ca.Big)(w).plus(h).toFixed()),u===3){let S=await this.buildRawTransactionCctpSend(n,i,w);f=S.sendMethod,P=S.value}else{let S=this.getBridgeContract(r);y==="stablecoin"?(f=S.methods.swapAndBridge(c,s,l,m,d,b,u,w),P="0"):(f=S.methods.swapAndBridge(c,s,l,m,d,b,u,0),P=w)}return Promise.resolve({from:A,to:r,value:P,data:f.encodeABI()})}async buildRawTransactionCctpSend(n,i,s){let{amount:r,contractAddress:A,toChainId:c,toAccountAddress:m,gasFeePaymentMethod:l}=i,d=this.getCctpBridgeContract(A),u,p;if(n.destinationToken.chainType==="SOLANA"){let y,h=new Bn.PublicKey(n.toAccountAddress),b=new Bn.PublicKey(n.destinationToken.tokenAddress),f=await re(h,b),P=Fe(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),n.toAccountAddress);Nt.setProvider(P);let w=await Nt.Spl.token(P).account.token.fetchNullable(f);if(w?.authority.equals(h))y=Re(f.toBase58(),"SOLANA",this.chainType);else{let S=await P.connection.getTokenAccountsByOwner(h,{mint:b});if(S.value.length===0&&!w)y=Re(f.toBase58(),"SOLANA",this.chainType);else if(S.value.length>0){let D=S.value[0];if(!D?.pubkey)throw new T("First token account or its public key is undefined");y=Re(D.pubkey.toBase58(),"SOLANA",this.chainType)}else throw new T("Associated account has wrong owner")}l==="stablecoin"?(u=d.methods.bridgeWithWalletAddress(r,y,m,c,s),p="0"):(u=d.methods.bridgeWithWalletAddress(r,y,m,c,0),p=s)}else l==="stablecoin"?(u=d.methods.bridge(r,m,c,s),p="0"):(u=d.methods.bridge(r,m,c,0),p=s);return{sendMethod:u,value:p}}async sendRawTransaction(n){let i=await this.web3.eth.estimateGas(n),s={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:r}=await this.web3.eth.sendTransaction({...n,gas:i,...s});return{txId:r.toString()}}getBridgeContract(n){return new this.web3.eth.Contract(Qn.abi,n)}getCctpBridgeContract(n){return new this.web3.eth.Contract(Hn.abi,n)}};var Ut=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 W(a.amount),F("amount",a.amount,a.sourceToken.decimals),Aa(a)?Vt(a.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionSend(a):Vt(a.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionSwap(a)}};var G=require("@project-serum/anchor"),v=require("@solana/web3.js"),ne=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 ma={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 la=require("@project-serum/anchor"),ua=ke(require("big.js")),ft=require("web3");async function He(o,a){return await la.Spl.token(a).account.token.fetch(o)}async function da(o,a,n){let i=await a.account.pool.fetch(n),s=i.decimals,r=(0,ua.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 he(o,{decimals:s,feeShare:r},A)}function pa(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"),l=ft.Web3.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(!l)throw new T("message cannot be undefined");let d=ft.Web3.utils.keccak256(Buffer.from(l.replace("0x",""),"hex")),u=Buffer.from(d.replace("0x",""),"hex");u[0]=i,u[1]=s;let p=ft.Web3.utils.encodePacked({t:"bytes32",v:"0x"+u.toString("hex")},{t:"bytes32",v:m});if(!p)throw new De("messageWithSigner cannot be undefined");let y=ft.Web3.utils.keccak256(Buffer.from(p.replace("0x",""),"hex")),h=Buffer.from(y.replace("0x",""),"hex");return h[0]=u[0],h[1]=u[1],h}var j=require("@solana/web3.js"),ga=require("big.js");var Cn=require("@solana/web3.js");async function Ve(o,a){return await Promise.all(o.message.addressTableLookups.map(async n=>new Cn.AddressLookupTableAccount({key:n.accountKey,state:Cn.AddressLookupTableAccount.deserialize(await a.getAccountInfo(n.accountKey).then(i=>{if(!i)throw new T("Cannot get AccountInfo");return i.data}))})))}var Ot="AUTO";async function ze(o,a,n){let i=new j.Connection(n,"confirmed"),s=(await i.simulateTransaction(o)).value.unitsConsumed;await ya(o.instructions,s,a,i)}async function fa(o,a,n){let i=new j.Connection(n,"confirmed"),s=await Ve(o,i),r=j.TransactionMessage.decompile(o.message,{addressLookupTableAccounts:s});if(o.serialize().length>1232)throw new ot;await ya(r.instructions,769230,a,i),o.message=r.compileToV0Message(s)}async function ya(o,a,n,i){if(a>0){let s=di(a,o);if(n?.solana){let r=n.solana;if(r===Ot)await Rn(o,i);else if("pricePerUnitInMicroLamports"in r)await Rn(o,i,r.pricePerUnitInMicroLamports);else{let A=(0,ga.Big)(r.extraFeeInLamports).div(s).mul(At(6)).toFixed(0);await Rn(o,i,A)}}}}function di(o,a){let n=a.findIndex(r=>r.programId.equals(j.ComputeBudgetProgram.programId)&&j.ComputeBudgetInstruction.decodeInstructionType(r)==="SetComputeUnitLimit"),i=Number((o*1.3).toFixed(0)),s=j.ComputeBudgetProgram.setComputeUnitLimit({units:i});return n>=0?a[n]=s:a.push(s),i.toString()}async function Rn(o,a,n){let i=o.findIndex(A=>A.programId.equals(j.ComputeBudgetProgram.programId)&&j.ComputeBudgetInstruction.decodeInstructionType(A)==="SetComputeUnitPrice"),s=BigInt(n||await pi(a)),r=j.ComputeBudgetProgram.setComputeUnitPrice({microLamports:s});return i>=0?o[i]=r:o.push(r),s.toString()}async function pi(o){let a=await o.getRecentPrioritizationFees(),n=0;for(let i of a)n+=i.prioritizationFee;return(n/a.length).toFixed(0)}var ha=require("@solana/spl-token"),Oe=require("@solana/web3.js"),je=ke(require("axios"));var Et=class{connection;jupiterUrl;constructor(a,n){this.connection=new Oe.Connection(a),this.jupiterUrl=n.replace(/\/$/,"")}async getJupiterSwapTx(a,n,i,s){let r;try{let u=s?"ExactOut":"ExactIn";r=await je.default.get(`${this.jupiterUrl}/quote?inputMint=${n}
|
|
1
|
+
"use strict";var Va=Object.create;var Rt=Object.defineProperty;var Oa=Object.getOwnPropertyDescriptor;var Ea=Object.getOwnPropertyNames;var Xa=Object.getPrototypeOf,Ya=Object.prototype.hasOwnProperty;var La=(o,a)=>{for(var n in a)Rt(o,n,{get:a[n],enumerable:!0})},xn=(o,a,n,i)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of Ea(a))!Ya.call(o,s)&&s!==n&&Rt(o,s,{get:()=>a[s],enumerable:!(i=Oa(a,s))||i.enumerable});return o};var ke=(o,a,n)=>(n=o!=null?Va(Xa(o)):{},xn(a||!o||!o.__esModule?Rt(n,"default",{value:o,enumerable:!0}):n,o)),Ja=o=>xn(Rt({},"__esModule",{value:!0}),o);var Zi={};La(Zi,{AddressStatus:()=>vt,AllbridgeCoreSdk:()=>kn,AmountFormat:()=>ut,AmountNotEnoughError:()=>Ze,ArgumentInvalidDecimalsError:()=>st,CCTPDoesNotSupportedError:()=>ee,ChainSymbol:()=>te,ChainType:()=>N,ErrorCode:()=>Wn,ExtraGasMaxLimitExceededError:()=>it,FeePaymentMethod:()=>Ue,InsufficientPoolLiquidityError:()=>ye,InvalidAmountError:()=>at,InvalidGasFeePaymentOptionError:()=>Xe,InvalidMessengerOptionError:()=>cn,InvalidTxError:()=>De,JupiterError:()=>O,Messenger:()=>Te,MethodNotSupportedError:()=>L,NodeRpcUrlNotInitializedError:()=>rt,SdkError:()=>T,SdkRootError:()=>_,SolanaAutoTxFee:()=>Ot,TimeoutError:()=>Le,TxTooLargeError:()=>ot,VerifyTxError:()=>Ye,mainnet:()=>nt,nodeRpcUrlsDefault:()=>Qa,nodeUrlsDefault:()=>Ka});module.exports=Ja(Zi);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},Ka={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},Qa={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org"};var ue=require("big.js");var _=class extends Error{errorCode;constructor(a,n){super(n),this.errorCode=a}},T=class extends _{constructor(a){super("SdkError",a)}},at=class extends _{constructor(a){super("InvalidAmountError",a)}},Ze=class extends _{constructor(a){super("AmountNotEnoughError",a)}},ye=class extends _{constructor(a){super("InsufficientPoolLiquidityError",a)}},O=class extends _{constructor(a){super("JupiterError",a)}},Xe=class extends _{constructor(a){super("InvalidGasFeePaymentOptionError",a)}},cn=class extends _{constructor(a){super("InvalidMessengerOptionError",a)}},L=class extends _{constructor(a){super("MethodNotSupportedError",a)}},Ye=class extends _{constructor(a){super("VerifyTxError",a)}},De=class extends _{constructor(a){super("InvalidTxError",a)}},it=class extends _{constructor(a){super("ExtraGasMaxLimitExceededError",a)}},st=class extends _{constructor(a,n,i){super("ArgumentInvalidDecimalsError",`Argument '${a}' decimals '${n}' cannot be greater than '${i}'`)}},Le=class extends _{constructor(a){super("TimeoutError",a)}},rt=class extends _{constructor(a){super("NodeRpcUrlNotInitializedError",`For chain '${a}' Node RPC URL not initialized`)}},ee=class extends _{constructor(a){super("CCTPDoesNotSupportedError",a)}},ot=class extends _{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},Wn=(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))(Wn||{});var te=(p=>(p.BSC="BSC",p.ETH="ETH",p.BAS="BAS",p.SOL="SOL",p.TRX="TRX",p.POL="POL",p.ARB="ARB",p.CEL="CEL",p.AVA="AVA",p.SRB="SRB",p.STLR="STLR",p.OPT="OPT",p))(te||{}),N=(s=>(s.EVM="EVM",s.SOLANA="SOLANA",s.TRX="TRX",s.SRB="SRB",s))(N||{});var Ha={EVM:18,SOLANA:9,TRX:6,SRB:7},za={BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"}},R=(()=>{let o={...za};return{addChainsProperties(a){o={...o,...a}},getChainProperty(a){let n=o[a];if(!n)throw new T(`Cannot find chain properties for ${a}`);return n},getChainsProperties(){return o},getChainDecimalsByType(a){return Ha[a]}}})();var Yn=ke(require("axios"));var Fn="3.20.0-alpha.2";var g=require("big.js"),It=ke(require("bn.js"));function mn(o,a){return(0,g.Big)(100).minus((0,g.Big)(100).times(a).div(o)).toNumber()}function _e(o,a){return xe(o,a,3).round(0,g.Big.roundDown)}function H(o,a){return xe(o,3,a)}function xe(o,a,n){let i=(0,g.Big)(n).minus(a).toNumber();return(0,g.Big)(o).times(At(i))}function At(o){return(0,g.Big)(10).pow(o)}function M(o,a){return(0,g.Big)(o).times(At(a))}function B(o,a){let n=(0,g.Big)(o);return n.eq(0)?(0,g.Big)(0):(0,g.Big)(n).div(At(a))}function z(o){return B((0,g.Big)(o.tokenBalance).minus(o.vUsdBalance).toFixed(),3).div(2).toFixed()}function he(o,{feeShare:a,decimals:n},i){let s=(0,g.Big)(o);if(s.lte(0))return"0";let r=s.times(a),A=s.minus(r),c=_e(A,n),m=(0,g.Big)(i.tokenBalance).plus(c),l=be(m,i.aValue,i.dValue);return(0,g.Big)(i.vUsdBalance).minus(l).round(0,g.Big.roundDown).toFixed()}function ct(o,{feeShare:a,decimals:n},i){let s=(0,g.Big)(o);if(s.lte(0))return(0,g.Big)(0).toFixed();let r=s.plus(i.vUsdBalance),A=be(r,i.aValue,i.dValue),c=H((0,g.Big)(i.tokenBalance).minus(A),n),m=(0,g.Big)(c).times(a);return(0,g.Big)(c).minus(m).round(0,g.Big.roundDown).toFixed()}function Gn(o,a){let n=(0,g.Big)(o);if(n.lte(0))return a;let i=n.plus(a.vUsdBalance),s=be(i,a.aValue,a.dValue);return{aValue:a.aValue,dValue:a.dValue,tokenBalance:s.toFixed(0),vUsdBalance:i.toFixed(0)}}function Zn(o,{feeShare:a,decimals:n},i){if((0,g.Big)(o).lte(0))return(0,g.Big)(0);let s=(0,g.Big)(i.vUsdBalance).minus(o);if(s.lte(0))throw new ye;let r=be(s,i.aValue,i.dValue),A=(0,g.Big)(r).minus(i.tokenBalance),c=H(A,n),m=(0,g.Big)(a).div((0,g.Big)(1).minus(a)),l=(0,g.Big)(c).times(m).round(0,g.Big.roundUp);return(0,g.Big)(c).plus(l).round(0,g.Big.roundDown)}function Dn(o,{feeShare:a,decimals:n},i){if((0,g.Big)(o).lte(0))return(0,g.Big)(0);let s=(0,g.Big)(a).div((0,g.Big)(1).minus(a)),r=(0,g.Big)(o).times(s).round(0,g.Big.roundUp),A=(0,g.Big)(o).plus(r),c=_e(A,n),m=(0,g.Big)(i.tokenBalance).minus(c);if(m.lte(0))throw new ye;let l=be(m,i.aValue,i.dValue);return(0,g.Big)(l).minus(i.vUsdBalance).round(0,g.Big.roundDown)}function be(o,a,n){let i=(0,g.Big)(4).times(a).times((0,g.Big)(n).minus(o)).minus(n),s=(0,g.Big)(n).pow(3),r=i.pow(2),A=(0,g.Big)(o).times((0,g.Big)(o).times(r).plus((0,g.Big)(4).times(a).times(s))).sqrt().round(0,g.Big.roundDown),c=(0,g.Big)(8).times(a).times(o),m=i.times(o).plus(A).div(c).round(0,g.Big.roundDown);return m.eq(0)?(0,g.Big)(0):m.plus(1)}function _n(o,a,n,i){let s=new It.default(o),r=new It.default(n),A=new It.default(a);return s.mul(r).shrn(i).sub(A).toString()}function Nn(o){return(0,g.Big)(o).gt(0)?`${Number((0,g.Big)(o).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function Un(o,a,n){let i=(0,g.Big)(a).times(n),s=(0,g.Big)(a).plus(n),r=(0,g.Big)(8).times(o).times(i).times(s),A=i.times((0,g.Big)(16).times(o).minus(4)).div(3),c=r.times(r),m=A.times(A).times(A),l=c.plus(m),d=(0,g.Big)(l).sqrt(),u=(0,g.Big)(Math.cbrt(+r.plus(d).toFixed())),p=(0,g.Big)(Math.cbrt(+r.minus(d).toFixed()));return u.plus(p).toFixed()}var vt=(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))(vt||{});var Te=(i=>(i[i.ALLBRIDGE=1]="ALLBRIDGE",i[i.WORMHOLE=2]="WORMHOLE",i[i.CCTP=3]="CCTP",i))(Te||{});function Vn(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 On(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=z(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=R.getChainsProperties()[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 En(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 Xn(o){let a={};for(let[n,i]of Object.entries(o)){let s=n;for(let[r,A]of Object.entries(i))A.imbalance=z(A),a[Je({chainSymbol:s,poolAddress:r})]=A}return a}var Mt=class{api;constructor(a){this.api=Yn.default.create({baseURL:a.coreApiUrl,headers:{Accept:"application/json",...a.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+Fn},params:a.coreApiQueryParams})}async getTokenInfo(){let{data:a}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:Vn(a),poolInfoMap:On(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 Xn(i)}};var ni=(o,a)=>o!==null&&Object.prototype.hasOwnProperty.call(o,a),Ln="__cache__",ln=function(o){return typeof o!="string"?Ln+JSON.stringify(o):Ln+o},un=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=ln(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[ln(a)];return n&&n.data}remove(a){let n=ln(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}},Ce=un;var dn=20*1e3,ai=55*1e3,kt=class{constructor(a){this.apiClient=a;this.tokenInfoCache=new Ce({defaultTtl:ai}),this.receivedTransactionCache=new Ce({defaultTtl:dn}),this.pendingInfoCache=new Ce({defaultTtl:dn}),this.gasBalanceCache=new Ce({defaultTtl:dn})}tokenInfoCache;pendingInfoCache;gasBalanceCache;receivedTransactionCache;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 xt=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 Wt=class{constructor(a,n){this.client=a;this.isStaging=n.coreApiQueryParams?.staging==="true"}isStaging;async getChainDetailsMap(a){let n=await this.client.getChainDetailsMap(),i={};for(let s in n){let r=n[s];r&&(i[s]={...r,tokens:Jn(r.tokens,a,this.isStaging)})}return i}async tokens(a){return Jn(await this.client.tokens(),a,this.isStaging)}async getPendingInfo(){return this.client.getPendingInfo()}async getGasBalance(a,n){return this.client.getGasBalance(a,n)}async getTransferStatus(a,n){return await this.client.getTransferStatus(a,n)}async getReceiveTransactionCost(a){return await this.client.getReceiveTransactionCost(a)}cachePut(a,n){return this.client.cachePut(a,n)}getPoolInfoByKey(a){return this.client.getPoolInfoByKey(a)}refreshPoolInfo(a){return this.client.refreshPoolInfo(a)}};function Jn(o,a,n){return o.filter(i=>n?!0:i.flags[a]).map(ii)}function ii(o){let{flags:a,...n}=o;return n}var si=55*1e3,Ft=class{constructor(a){this.client=a;this.poolInfoCache=new pn}poolInfoCache;async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(a,n){return this.client.getTransferStatus(a,n)}getReceiveTransactionCost(a){return this.client.getReceiveTransactionCost(a)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(a,n){return this.client.getGasBalance(a,n)}async getPoolInfoByKey(a){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let n=this.poolInfoCache.get(a);if(n)return n;{let i=await this.client.getPoolInfoMap(a);this.poolInfoCache.putAll(i);let s=i[Je(a)];if(s)return s;throw new T("Cannot find pool info for "+a.poolAddress+" on chain "+a.chainSymbol)}}async refreshPoolInfo(a){let n;if(a)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),n=await this.client.getPoolInfoMap(a);else{let i=await this.client.getChainDetailsMapAndPoolInfoMap();n=await this.client.getPoolInfoMap(En(i.chainDetailsMap))}this.poolInfoCache.putAll(n)}cachePut(a,n){this.poolInfoCache.put(Je(a),n)}},pn=class{cache;constructor(){this.cache=new Ce({defaultTtl:si})}putAll(a){for(let[n,i]of Object.entries(a))this.cache.put(n,i)}putAllIfNotExists(a){for(let[n,i]of Object.entries(a))this.cache.get(n)||this.cache.put(n,i)}put(a,n){this.cache.put(a,n)}get(a){let n=Je(a);return this.cache.get(n)}};var Ba=require("tronweb"),Ca=require("web3");var gn=require("big.js");async function V(o,a){return await o.getPoolInfoByKey({chainSymbol:a.chainSymbol,poolAddress:a.poolAddress})}function W(o){if((0,gn.Big)(o).lte(0))throw new at("Amount must be greater than zero")}function F(o,a,n){let i=(0,gn.Big)(a).toFixed(),[s,r]=i.split(".");if(r&&r.length>n)throw new st(o,r.length,n)}async function Gt(o,a,n){return await Promise.race([o,new Promise((i,s)=>{setTimeout(()=>s(new Le(a)),n)})])}async function fn(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 Gt(o(),a,i)}catch{if(++s>=n)throw new Le(a)}}async function Kn(o,a,n,i=1.5,s=!1){let r=[],A=0,c=await o();if(r.push(c),!a(c))return r;let m=new Date(Date.now()+n*1e3).valueOf(),l=1e3,d=l;for(;Date.now()<m;){let u=r[r.length-1];if(u===void 0||!a(u))break;A++,s&&console.info(`Waiting ${l}ms before trying again (bringing the total wait time to ${d}ms so far, of total ${n*1e3}ms)`),await new Promise(y=>setTimeout(y,l)),l=l*i,new Date(Date.now()+l).valueOf()>m&&(l=m-Date.now(),s&&console.info(`was gonna wait too long; new waitTime: ${l}ms`)),d=l+d;let p=await o(u);r.push(p),s&&a(p)&&console.info(`${A}. Called ${o.name}; ${r.length} prev attempts. Most recent: ${JSON.stringify(r[r.length-1],null,2)}`)}return r}var Nt=ke(require("@project-serum/anchor")),Bn=require("@solana/web3.js"),ca=require("big.js");var ri={abi:[{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"}]},Qn=ri;var oi={abi:[{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"}]},Hn=oi;var X=ke(require("@project-serum/anchor")),Y=require("@solana/web3.js");async function re(o,a){return X.utils.token.associatedAddress({mint:a,owner:o})}async function We(o){let[a]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("config")],o);return a}async function zn(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("lock"),Uint8Array.from(o)],a);return n}async function mt(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([o])],a);return n}async function Ke(o){let a=await We(o),[n]=await Y.PublicKey.findProgramAddress([a.toBuffer()],o);return n}async function jn(o,a){let[n]=await Y.PublicKey.findProgramAddress([o.toBuffer()],a);return n}async function Qe(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("token"),o.toBytes()],a);return n}async function qn(o,a,n){let[i]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("other_bridge_token"),Buffer.from([o]),a],n);return i}async function yn(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([o])],a);return n}async function hn(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([o])],a);return n}async function $n(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("sent_message"),o],a);return n}async function bn(o,a,n){let[i]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("user_deposit"),a.toBytes(),o.toBytes()],n);return i}async function ea(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("cctp_bridge"),o.toBytes()],a);return n}async function ta(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("token"),o.toBytes()],a);return n}function na(o,a){let[n]=Y.PublicKey.findProgramAddressSync([X.utils.bytes.utf8.encode("lock"),a.toBuffer()],o);return n}function aa(o,a,n,i){let s=Ne("message_transmitter",n),r=Ne("token_messenger",i),A=Ne("__event_authority",i),c=Ne("token_minter",i),m=Ne("local_token",i,[a]),l=Ne("remote_token_messenger",i,[o.toString()]),d=Ne("sender_authority",i);return{messageTransmitterAccount:s,tokenMessenger:r,tokenMessengerEventAuthority:A,tokenMinter:c,localToken:m,remoteTokenMessengerKey:l,authorityPda:d}}function Ne(o,a,n=[]){let i=[Buffer.from(X.utils.bytes.utf8.encode(o))];for(let r of n)typeof r=="string"?i.push(Buffer.from(X.utils.bytes.utf8.encode(r))):Array.isArray(r)||Buffer.isBuffer(r)?i.push(Buffer.from(Uint8Array.from(r))):i.push(Buffer.from(Uint8Array.from(r.toBuffer())));return Y.PublicKey.findProgramAddressSync(i,a)[0]}var ia=require("@project-serum/anchor"),Zt=require("@solana/web3.js");function Fe(o,a){let n=new Zt.Connection(o,"confirmed"),i=new Zt.PublicKey(a);return new ia.AnchorProvider(n,{publicKey:i},{preflightCommitment:"confirmed",commitment:"confirmed"})}var oe=class{};var sa=require("@solana/web3.js"),ra=require("@stellar/stellar-sdk"),Pe=require("big.js"),Pn=ke(require("randombytes")),Tn=require("tronweb");function Re(o,a,n){let i;switch(a){case"EVM":{i=Ai(o);break}case"SOLANA":{i=new sa.PublicKey(o).toBuffer();break}case"TRX":{i=ci(o);break}case"SRB":{i=new ra.Address(o).toBuffer();break}}switch(n){case"EVM":return"0x"+i.toString("hex");case"SOLANA":return Array.from(i);case"TRX":return i;case"SRB":return i.toJSON().data}}function oa(o){return Buffer.from(o.replace(/^0x/i,""),"hex")}function Ai(o){let n=oa(o);return Buffer.concat([Buffer.alloc(32-n.length,0),n],32)}function ci(o){let a=Dt(o),n=oa(a);return mi(n,32)}function Dt(o){let a=Tn.utils.crypto.decodeBase58Address(o);return a?Tn.utils.bytes.byteArray2hexStr(a).replace(/^41/,"0x"):""}function mi(o,a){if(o.length>=a)return o;let n=Buffer.alloc(a,0);return o.copy(n,a-o.length),n}function _t(){return(0,Pn.default)(32)}function lt(){let o=(0,Pn.default)(32).readBigInt64BE();return o<0?o*-1n:o}function Ge(o,a){let n={},i=a.sourceToken;return n.amount=M(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?M(a.minimumReceiveAmount,a.destinationToken.decimals).toFixed():"0",n}async function Ie(o,a,n){let i={};i.fromChainId=a.sourceToken.allbridgeChainId,i.fromChainSymbol=a.sourceToken.chainSymbol;let s=R.getChainProperty(a.destinationToken.chainSymbol).chainType;i.fromTokenAddress=a.sourceToken.tokenAddress,i.toChainId=a.destinationToken.allbridgeChainId,i.toTokenAddress=a.destinationToken.tokenAddress,a.gasFeePaymentMethod==="stablecoin"?i.gasFeePaymentMethod="stablecoin":i.gasFeePaymentMethod="native";let r=a.sourceToken;if(a.messenger===3){if(!r.cctpAddress||!a.destinationToken.cctpAddress)throw new ee("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=M(a.amount,r.decimals).toFixed();let{fee:A,feeFormat:c}=a;if(!A){let u=(await Sn(i.fromChainId,a.sourceToken.chainType,i.toChainId,r.decimals,i.messenger,n))[i.gasFeePaymentMethod];if(!u)throw new Xe;A=u.int,c="int"}if(c=="float")switch(i.gasFeePaymentMethod){case"native":i.fee=M(A,R.getChainDecimalsByType(r.chainType)).toFixed(0);break;case"stablecoin":i.fee=M(A,r.decimals).toFixed(0);break}else i.fee=A;let{extraGas:m,extraGasFormat:l}=a;if(m&&+m>0){if(l=="float")switch(i.gasFeePaymentMethod){case"native":i.extraGas=M(m,R.getChainDecimalsByType(r.chainType)).toFixed(0);break;case"stablecoin":i.extraGas=M(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"&&li(i.amount,r.decimals,i.fee,i.extraGas),i}function li(o,a,n,i){let s=(0,Pe.Big)(o).minus(n).minus(i??0);if(s.lte(0))throw new Ze(`Amount not enough to pay fee, ${B((0,Pe.Big)(s).minus(1).neg(),a).toFixed()} stables is missing`)}async function Sn(o,a,n,i,s,r){let A=await r.getReceiveTransactionCost({sourceChainId:o,destinationChainId:n,messenger:s}),c={native:{int:A.fee,float:B(A.fee,R.getChainDecimalsByType(a)).toFixed()}};if(A.sourceNativeTokenPrice){let m=xe(new Pe.Big(A.fee).mul(A.sourceNativeTokenPrice),R.getChainDecimalsByType(a),i).toFixed(0,Pe.Big.roundUp);c.stablecoin={int:m,float:B(m,i).toFixed()}}return c}async function ui(o,a,n,i,s){let A=(await wn(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,Pe.Big)(o).gt(c))throw new it(`Extra gas ${o} in int format, exceeded limit ${c} for '${a}' payment method`)}async function wn(o,a,n){let i={},s=await n.getReceiveTransactionCost({sourceChainId:o.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:1}),r=a.txCostAmount.maxAmount,A=B(r,R.getChainDecimalsByType(a.chainType)).toFixed(),c=(0,Pe.Big)(A).div(s.exchangeRate).toFixed(R.getChainDecimalsByType(o.chainType),Pe.Big.roundDown),m=M(c,R.getChainDecimalsByType(o.chainType)).toFixed(0);if(i.native={int:m,float:c},s.sourceNativeTokenPrice){let l=(0,Pe.Big)(c).mul(s.sourceNativeTokenPrice).toFixed(o.decimals,Pe.Big.roundDown);i.stablecoin={int:M(l,o.decimals).toFixed(0),float:l}}return{extraGasMax:i,destinationChain:{gasAmountMax:{int:r,float:A},swap:{int:a.txCostAmount.swap,float:B(a.txCostAmount.swap,R.getChainDecimalsByType(a.chainType)).toFixed()},transfer:{int:a.txCostAmount.transfer,float:B(a.txCostAmount.transfer,R.getChainDecimalsByType(a.chainType)).toFixed()}},exchangeRate:s.exchangeRate,sourceNativeTokenPrice:s.sourceNativeTokenPrice}}function Aa(o){return o.sourceToken.chainSymbol!==o.destinationToken.chainSymbol}var dt=class extends oe{constructor(n,i,s){super();this.web3=n;this.api=i;this.nodeRpcUrlsConfig=s}chainType="EVM";async send(n){let i=await this.buildRawTransactionSend(n);return this.sendRawTransaction(i)}async buildRawTransactionSwap(n){let i=Ge(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:l}=n,u=this.getBridgeContract(s).methods.swap(i,A,m,c,l);return Promise.resolve({from:r,to:s,data:u.encodeABI()})}async buildRawTransactionSend(n){let i=await Ie(this.chainType,n,this.api),{amount:s,contractAddress:r,fromAccountAddress:A,fromTokenAddress:c,toChainId:m,toAccountAddress:l,toTokenAddress:d,messenger:u,fee:p,gasFeePaymentMethod:y,extraGas:h}=i,b="0x"+_t().toString("hex"),f,P,w=p;if(h&&(w=(0,ca.Big)(w).plus(h).toFixed()),u===3){let S=await this.buildRawTransactionCctpSend(n,i,w);f=S.sendMethod,P=S.value}else{let S=this.getBridgeContract(r);y==="stablecoin"?(f=S.methods.swapAndBridge(c,s,l,m,d,b,u,w),P="0"):(f=S.methods.swapAndBridge(c,s,l,m,d,b,u,0),P=w)}return Promise.resolve({from:A,to:r,value:P,data:f.encodeABI()})}async buildRawTransactionCctpSend(n,i,s){let{amount:r,contractAddress:A,toChainId:c,toAccountAddress:m,gasFeePaymentMethod:l}=i,d=this.getCctpBridgeContract(A),u,p;if(n.destinationToken.chainType==="SOLANA"){let y,h=new Bn.PublicKey(n.toAccountAddress),b=new Bn.PublicKey(n.destinationToken.tokenAddress),f=await re(h,b),P=Fe(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),n.toAccountAddress);Nt.setProvider(P);let w=await Nt.Spl.token(P).account.token.fetchNullable(f);if(w?.authority.equals(h))y=Re(f.toBase58(),"SOLANA",this.chainType);else{let S=await P.connection.getTokenAccountsByOwner(h,{mint:b});if(S.value.length===0&&!w)y=Re(f.toBase58(),"SOLANA",this.chainType);else if(S.value.length>0){let D=S.value[0];if(!D?.pubkey)throw new T("First token account or its public key is undefined");y=Re(D.pubkey.toBase58(),"SOLANA",this.chainType)}else throw new T("Associated account has wrong owner")}l==="stablecoin"?(u=d.methods.bridgeWithWalletAddress(r,y,m,c,s),p="0"):(u=d.methods.bridgeWithWalletAddress(r,y,m,c,0),p=s)}else l==="stablecoin"?(u=d.methods.bridge(r,m,c,s),p="0"):(u=d.methods.bridge(r,m,c,0),p=s);return{sendMethod:u,value:p}}async sendRawTransaction(n){let i=await this.web3.eth.estimateGas(n),s={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:r}=await this.web3.eth.sendTransaction({...n,gas:i,...s});return{txId:r.toString()}}getBridgeContract(n){return new this.web3.eth.Contract(Qn.abi,n)}getCctpBridgeContract(n){return new this.web3.eth.Contract(Hn.abi,n)}};var Ut=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 W(a.amount),F("amount",a.amount,a.sourceToken.decimals),Aa(a)?Vt(a.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionSend(a):Vt(a.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionSwap(a)}};var G=require("@project-serum/anchor"),v=require("@solana/web3.js"),ne=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 ma={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 la=require("@project-serum/anchor"),ua=ke(require("big.js")),ft=require("web3");async function He(o,a){return await la.Spl.token(a).account.token.fetch(o)}async function da(o,a,n){let i=await a.account.pool.fetch(n),s=i.decimals,r=(0,ua.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 he(o,{decimals:s,feeShare:r},A)}function pa(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"),l=ft.Web3.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(!l)throw new T("message cannot be undefined");let d=ft.Web3.utils.keccak256(Buffer.from(l.replace("0x",""),"hex")),u=Buffer.from(d.replace("0x",""),"hex");u[0]=i,u[1]=s;let p=ft.Web3.utils.encodePacked({t:"bytes32",v:"0x"+u.toString("hex")},{t:"bytes32",v:m});if(!p)throw new De("messageWithSigner cannot be undefined");let y=ft.Web3.utils.keccak256(Buffer.from(p.replace("0x",""),"hex")),h=Buffer.from(y.replace("0x",""),"hex");return h[0]=u[0],h[1]=u[1],h}var j=require("@solana/web3.js"),ga=require("big.js");var Cn=require("@solana/web3.js");async function Ve(o,a){return await Promise.all(o.message.addressTableLookups.map(async n=>new Cn.AddressLookupTableAccount({key:n.accountKey,state:Cn.AddressLookupTableAccount.deserialize(await a.getAccountInfo(n.accountKey).then(i=>{if(!i)throw new T("Cannot get AccountInfo");return i.data}))})))}var Ot="AUTO";async function ze(o,a,n){let i=new j.Connection(n,"confirmed"),s=(await i.simulateTransaction(o)).value.unitsConsumed;await ya(o.instructions,s,a,i)}async function fa(o,a,n){let i=new j.Connection(n,"confirmed"),s=await Ve(o,i),r=j.TransactionMessage.decompile(o.message,{addressLookupTableAccounts:s});if(o.serialize().length>1232)throw new ot;await ya(r.instructions,769230,a,i),o.message=r.compileToV0Message(s)}async function ya(o,a,n,i){if(a>0){let s=di(a,o);if(n?.solana){let r=n.solana;if(r===Ot)await Rn(o,i);else if("pricePerUnitInMicroLamports"in r)await Rn(o,i,r.pricePerUnitInMicroLamports);else{let A=(0,ga.Big)(r.extraFeeInLamports).div(s).mul(At(6)).toFixed(0);await Rn(o,i,A)}}}}function di(o,a){let n=a.findIndex(r=>r.programId.equals(j.ComputeBudgetProgram.programId)&&j.ComputeBudgetInstruction.decodeInstructionType(r)==="SetComputeUnitLimit"),i=Number((o*1.3).toFixed(0)),s=j.ComputeBudgetProgram.setComputeUnitLimit({units:i});return n>=0?a[n]=s:a.push(s),i.toString()}async function Rn(o,a,n){let i=o.findIndex(A=>A.programId.equals(j.ComputeBudgetProgram.programId)&&j.ComputeBudgetInstruction.decodeInstructionType(A)==="SetComputeUnitPrice"),s=BigInt(n||await pi(a)),r=j.ComputeBudgetProgram.setComputeUnitPrice({microLamports:s});return i>=0?o[i]=r:o.push(r),s.toString()}async function pi(o){let a=await o.getRecentPrioritizationFees(),n=0;for(let i of a)n+=i.prioritizationFee;return(n/a.length).toFixed(0)}var ha=require("@solana/spl-token"),Oe=require("@solana/web3.js"),je=ke(require("axios"));var Et=class{connection;jupiterUrl;constructor(a,n){this.connection=new Oe.Connection(a),this.jupiterUrl=n.replace(/\/$/,"")}async getJupiterSwapTx(a,n,i,s){let r;try{let u=s?"ExactOut":"ExactIn";r=await je.default.get(`${this.jupiterUrl}/quote?inputMint=${n}
|
|
2
2
|
&outputMint=${ha.NATIVE_MINT.toString()}
|
|
3
3
|
&amount=${i}
|
|
4
4
|
&swapMode=${u}
|