@allbridge/bridge-core-sdk 3.15.0-alpha.1 → 3.15.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 +3 -3
- package/dist/browser/index.js.map +3 -3
- package/dist/cjs/index.js +3 -3
- package/dist/cjs/index.js.map +3 -3
- package/dist/esm/index.js +3 -3
- package/dist/esm/index.js.map +3 -3
- package/dist/src/services/liquidity-pool/evm/index.js +4 -4
- package/dist/src/services/liquidity-pool/evm/index.js.map +1 -1
- package/dist/src/utils/utils.d.ts +1 -0
- package/dist/src/utils/utils.js +17 -1
- package/dist/src/utils/utils.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
"use strict";var Ka=Object.create;var Nt=Object.defineProperty;var Qa=Object.getOwnPropertyDescriptor;var Ya=Object.getOwnPropertyNames;var Ja=Object.getPrototypeOf,Ha=Object.prototype.hasOwnProperty;var za=(i,t)=>{for(var e in t)Nt(i,e,{get:t[e],enumerable:!0})},Wn=(i,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Ya(t))!Ha.call(i,a)&&a!==e&&Nt(i,a,{get:()=>t[a],enumerable:!(n=Qa(t,a))||n.enumerable});return i};var W=(i,t,e)=>(e=i!=null?Ka(Ja(i)):{},Wn(t||!i||!i.__esModule?Nt(e,"default",{value:i,enumerable:!0}):e,i)),ja=i=>Wn(Nt({},"__esModule",{value:!0}),i);var Wi={};za(Wi,{AddressStatus:()=>yn,AllbridgeCoreSdk:()=>Fn,AmountFormat:()=>Pt,AmountNotEnoughError:()=>Ve,ArgumentInvalidDecimalsError:()=>ut,CCTPDoesNotSupportedError:()=>re,ChainSymbol:()=>me,ChainType:()=>O,ErrorCode:()=>Un,ExtraGasMaxLimitExceededError:()=>mt,FeePaymentMethod:()=>_e,InsufficientPoolLiquidityError:()=>we,InvalidAmountError:()=>ct,InvalidGasFeePaymentOptionError:()=>ze,InvalidMessengerOptionError:()=>gn,InvalidTxError:()=>Ge,JupiterError:()=>Y,Messenger:()=>ke,MethodNotSupportedError:()=>J,NodeRpcUrlNotInitializedError:()=>pt,SdkError:()=>k,SdkRootError:()=>F,SolanaAutoTxFee:()=>Yt,TimeoutError:()=>lt,TxTooLargeError:()=>dt,VerifyTxError:()=>je,mainnet:()=>At,nodeRpcUrlsDefault:()=>ni,nodeUrlsDefault:()=>ti,testnet:()=>qa,testnetNodeRpcUrlsDefault:()=>ei,testnetNodeUrlsDefault:()=>$a});module.exports=ja(Wi);var qa={coreApiUrl:"https://core-dev.a11bd.net",coreApiQueryParams:{},coreApiHeaders:{},wormholeMessengerProgramId:"3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5",solanaLookUpTable:"C3jAxHRTZjM2Bs7EqPir4nvrT8zKtpcW7RvGR9R2qKtN",sorobanNetworkPassphrase:"Test SDF Network ; September 2015",tronJsonRpc:"https://nile.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{SPL:0,ARB:3,AMO:7}}},$a={solanaRpcUrl:"https://api.devnet.solana.com",tronRpcUrl:"https://nile.trongrid.io"},ei={SOL:"https://api.devnet.solana.com",TRX:"https://nile.trongrid.io",SRB:"https://soroban-testnet.stellar.org",STLR:"https://horizon-testnet.stellar.org"};var At={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},wormholeMessengerProgramId:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",solanaLookUpTable:"2JcBAEVnAwVo4u8d61iqgHPrzZuugur7cVTjWubsVLHj",sorobanNetworkPassphrase:"Public Global Stellar Network ; September 2015",tronJsonRpc:"https://api.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{ETH:0,AVA:1,OPT:2,ARB:3,SOL:5,BAS:6,POL:7}}},ti={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},ni={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org"};var he=require("big.js");var Ot=class{constructor(t){this.apiClient=t}async getChainDetailsMap(){return(await this.apiClient.getTokenInfo()).chainDetailsMap}async tokens(){let t=await this.getChainDetailsMap();return Object.values(t).flatMap(e=>e.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(t,e){return this.apiClient.getGasBalance(t,e)}async checkAddress(t,e,n){return this.apiClient.checkAddress(t,e,n)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(t,e){return await this.apiClient.getTransferStatus(t,e)}async getReceiveTransactionCost(t){return await this.apiClient.getReceiveTransactionCost(t)}async getPoolInfoMap(t){return await this.apiClient.getPoolInfoMap(t)}};var Yn=W(require("axios"));var En="3.15.0-alpha.1";var me=(p=>(p.GRL="GRL",p.SPL="SPL",p.HOL="HOL",p.BSC="BSC",p.ETH="ETH",p.BAS="BAS",p.SOL="SOL",p.TRX="TRX",p.POL="POL",p.MUM="MUM",p.AMO="AMO",p.ARB="ARB",p.CEL="CEL",p.AVA="AVA",p.SRB="SRB",p.STLR="STLR",p.OPT="OPT",p))(me||{}),O=(a=>(a.EVM="EVM",a.SOLANA="SOLANA",a.TRX="TRX",a.SRB="SRB",a))(O||{}),V={EVM:18,SOLANA:9,TRX:6,SRB:7},z={GRL:{chainSymbol:"GRL",chainId:"0x5",name:"Goerli",chainType:"EVM"},SPL:{chainSymbol:"SPL",chainId:"0xaa36a7",name:"Sepolia",chainType:"EVM"},HOL:{chainSymbol:"HOL",chainId:"0x4268",name:"Hole\u0161ky",chainType:"EVM"},BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},MUM:{chainSymbol:"MUM",chainId:"0x13881",name:"Mumbai",chainType:"EVM"},AMO:{chainSymbol:"AMO",chainId:"0x13882",name:"Amoy",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"}};var l=require("big.js"),Vt=W(require("bn.js"));var F=class extends Error{constructor(t,e){super(e),this.errorCode=t}},k=class extends F{constructor(t){super("SdkError",t)}},ct=class extends F{constructor(t){super("InvalidAmountError",t)}},Ve=class extends F{constructor(t){super("AmountNotEnoughError",t)}},we=class extends F{constructor(t){super("InsufficientPoolLiquidityError",t)}},Y=class extends F{constructor(t){super("JupiterError",t)}},ze=class extends F{constructor(t){super("InvalidGasFeePaymentOptionError",t)}},gn=class extends F{constructor(t){super("InvalidMessengerOptionError",t)}},J=class extends F{constructor(t){super("MethodNotSupportedError",t)}},je=class extends F{constructor(t){super("VerifyTxError",t)}},Ge=class extends F{constructor(t){super("InvalidTxError",t)}},mt=class extends F{constructor(t){super("ExtraGasMaxLimitExceededError",t)}},ut=class extends F{constructor(t,e,n){super("ArgumentInvalidDecimalsError",`Argument '${t}' decimals '${e}' cannot be greater than '${n}'`)}},lt=class extends F{constructor(t){super("TimeoutError",t)}},pt=class extends F{constructor(t){super("NodeRpcUrlNotInitializedError",`For chain '${t}' Node RPC URL not initialized`)}},re=class extends F{constructor(t){super("CCTPDoesNotSupportedError",t)}},dt=class extends F{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},Un=(d=>(d.SDK_ERROR="SdkError",d.INVALID_AMOUNT_ERROR="InvalidAmountError",d.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",d.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",d.JUPITER_ERROR="JupiterError",d.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",d.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",d.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",d.VERIFY_TX_ERROR="VerifyTxError",d.INVALID_TX_ERROR="InvalidTxError",d.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",d.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",d.TIMEOUT_ERROR="TimeoutError",d.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",d.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",d.TX_TOO_LARGE="TxTooLargeError",d))(Un||{});function fn(i,t){return(0,l.Big)(100).minus((0,l.Big)(100).times(t).div(i)).toNumber()}function Ze(i,t){return Ee(i,t,3).round(0,l.Big.roundDown)}function ee(i,t){return Ee(i,3,t)}function Ee(i,t,e){let n=(0,l.Big)(e).minus(t).toNumber();return(0,l.Big)(i).times(gt(n))}function gt(i){return(0,l.Big)(10).pow(i)}function B(i,t){return(0,l.Big)(i).times(gt(t))}function b(i,t){let e=(0,l.Big)(i);return e.eq(0)?(0,l.Big)(0):(0,l.Big)(e).div(gt(t))}function te(i){return b((0,l.Big)(i.tokenBalance).minus(i.vUsdBalance).toFixed(),3).div(2).toFixed()}function Ce(i,{feeShare:t,decimals:e},n){let a=(0,l.Big)(i);if(a.lte(0))return"0";let r=a.times(t),s=a.minus(r),o=Ze(s,e),A=(0,l.Big)(n.tokenBalance).plus(o),c=Be(A,n.aValue,n.dValue);return(0,l.Big)(n.vUsdBalance).minus(c).round(0,l.Big.roundDown).toFixed()}function ft(i,{feeShare:t,decimals:e},n){let a=(0,l.Big)(i);if(a.lte(0))return(0,l.Big)(0).toFixed();let r=a.plus(n.vUsdBalance),s=Be(r,n.aValue,n.dValue),o=ee((0,l.Big)(n.tokenBalance).minus(s),e),A=(0,l.Big)(o).times(t);return(0,l.Big)(o).minus(A).round(0,l.Big.roundDown).toFixed()}function Nn(i,t){let e=(0,l.Big)(i);if(e.lte(0))return t;let n=e.plus(t.vUsdBalance),a=Be(n,t.aValue,t.dValue);return{aValue:t.aValue,dValue:t.dValue,tokenBalance:a.toFixed(0),vUsdBalance:n.toFixed(0)}}function On(i,{feeShare:t,decimals:e},n){if((0,l.Big)(i).lte(0))return(0,l.Big)(0);let a=(0,l.Big)(n.vUsdBalance).minus(i);if(a.lte(0))throw new we;let r=Be(a,n.aValue,n.dValue),s=(0,l.Big)(r).minus(n.tokenBalance),o=ee(s,e),A=(0,l.Big)(t).div((0,l.Big)(1).minus(t)),c=(0,l.Big)(o).times(A).round(0,l.Big.roundUp);return(0,l.Big)(o).plus(c).round(0,l.Big.roundDown)}function Vn(i,{feeShare:t,decimals:e},n){if((0,l.Big)(i).lte(0))return(0,l.Big)(0);let a=(0,l.Big)(t).div((0,l.Big)(1).minus(t)),r=(0,l.Big)(i).times(a).round(0,l.Big.roundUp),s=(0,l.Big)(i).plus(r),o=Ze(s,e),A=(0,l.Big)(n.tokenBalance).minus(o);if(A.lte(0))throw new we;let c=Be(A,n.aValue,n.dValue);return(0,l.Big)(c).minus(n.vUsdBalance).round(0,l.Big.roundDown)}function Be(i,t,e){let n=(0,l.Big)(4).times(t).times((0,l.Big)(e).minus(i)).minus(e),a=(0,l.Big)(e).pow(3),r=n.pow(2),s=(0,l.Big)(i).times((0,l.Big)(i).times(r).plus((0,l.Big)(4).times(t).times(a))).sqrt().round(0,l.Big.roundDown),o=(0,l.Big)(8).times(t).times(i),A=n.times(i).plus(s).div(o).round(0,l.Big.roundDown);return A.eq(0)?(0,l.Big)(0):A.plus(1)}function Gn(i,t,e,n){let a=new Vt.default(i),r=new Vt.default(e),s=new Vt.default(t);return a.mul(r).shrn(n).sub(s).toString()}function Zn(i){return i*100>0?`${Number((0,l.Big)(i).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function Ln(i,t,e){let n=(0,l.Big)(t).times(e),a=(0,l.Big)(t).plus(e),r=(0,l.Big)(8).times(i).times(n).times(a),s=n.times((0,l.Big)(16).times(i).minus(4)).div(3),o=r.times(r),A=s.times(s).times(s),c=o.plus(A),m=(0,l.Big)(c).sqrt(),u=(0,l.Big)(Math.cbrt(+r.plus(m).toFixed())),g=(0,l.Big)(Math.cbrt(+r.minus(m).toFixed()));return u.plus(g).toFixed()}var yn=(s=>(s.OK="OK",s.INVALID="INVALID",s.FORBIDDEN="FORBIDDEN",s.UNINITIALIZED="UNINITIALIZED",s.CONTRACT_ADDRESS="CONTRACT_ADDRESS",s.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",s))(yn||{});var ke=(n=>(n[n.ALLBRIDGE=1]="ALLBRIDGE",n[n.WORMHOLE=2]="WORMHOLE",n[n.CCTP=3]="CCTP",n))(ke||{});function _n(i){return Object.entries(i).reduce((t,e)=>{let n=e[0],a=e[1],r=oi(n,a);return r&&(t[n]=r),t},{})}function Xn(i){let t={};for(let[e,n]of Object.entries(i)){let a=e;for(let r of n.tokens){let s=qe({chainSymbol:a,poolAddress:r.poolAddress}),o=te(r.poolInfo);t[s]={...r.poolInfo,imbalance:o}}}return t}function ai(i,t){let{name:e,...n}=i,{poolInfo:a,...r}=t;return{...r,...n,chainName:e}}function ii(i){switch(i){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;default:return null}}function ri(i){return Object.entries(i).reduce((t,[e,n])=>(t[e]=si(n),t),{})}function si(i){return Object.entries(i).reduce((t,[e,n])=>{let a=ii(e);return a&&(t[a]=n),t},{})}function oi(i,t){let e=z[i];if(!e)return null;let n={...e,allbridgeChainId:t.chainId,bridgeAddress:t.bridgeAddress,transferTime:ri(t.transferTime),txCostAmount:t.txCostAmount,confirmations:t.confirmations};return{...n,tokens:t.tokens.map(a=>ai(n,a))}}function qe(i){return i.chainSymbol+"_"+i.poolAddress}function Kn(i){let t=[];for(let[e,n]of Object.entries(i)){let a=e;for(let r of n.tokens)t.push({chainSymbol:a,poolAddress:r.poolAddress})}return t}function Qn(i){let t={};for(let[e,n]of Object.entries(i)){let a=e;for(let[r,s]of Object.entries(n))s.imbalance=te(s),t[qe({chainSymbol:a,poolAddress:r})]=s}return t}var Gt=class{constructor(t){this.api=Yn.default.create({baseURL:t.coreApiUrl,headers:{Accept:"application/json",...t.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+En},params:t.coreApiQueryParams})}async getTokenInfo(){let{data:t}=await this.api.get("/token-info");return{chainDetailsMap:_n(t),poolInfoMap:Xn(t)}}async getPendingInfo(){let{data:t}=await this.api.get("/pending-info");return t}async getGasBalance(t,e){let{data:n}=await this.api.get(`/check/${t}/${e}`);return n}async checkAddress(t,e,n){if(n){let{data:r}=await this.api.get(`/check/${t}/${e}`,{params:{token:n,...this.api.defaults.params}});return r}let{data:a}=await this.api.get(`/check/${t}/${e}`);return a}async getTransferStatus(t,e){let{data:n}=await this.api.get(`/chain/${t}/${e}`);return n}async getReceiveTransactionCost(t){let{data:e}=await this.api.post("/receive-fee",t,{headers:{"Content-Type":"application/json"}});return{exchangeRate:e.exchangeRate,fee:e.fee,sourceNativeTokenPrice:e.sourceNativeTokenPrice}}async getPoolInfoMap(t){let e=t instanceof Array?t:[t],{data:n}=await this.api.post("/pool-info",{pools:e},{headers:{"Content-Type":"application/json"}});return Qn(n)}};var yt=W(require("timed-cache")),hn=20*1e3,Ai=55*1e3,Zt=class{constructor(t){this.apiClient=t;this.tokenInfoCache=new yt.default({defaultTtl:Ai}),this.receivedTransactionCache=new yt.default({defaultTtl:hn}),this.pendingInfoCache=new yt.default({defaultTtl:hn}),this.gasBalanceCache=new yt.default({defaultTtl:hn})}getTokenInfo(){let t="TOKEN_INFO_CACHE_KEY",e=this.tokenInfoCache.get(t);if(e)return e;let n=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(t,n),n}async getGasBalance(t,e){let n=`GAS_BALANCE_${t}_${e}`,a=this.gasBalanceCache.get(n);if(a)return a;let r=this.apiClient.getGasBalance(t,e);return this.gasBalanceCache.put(n,r),r}async checkAddress(t,e,n){return this.apiClient.checkAddress(t,e,n)}async getPendingInfo(){let t="PENDING_INFO_CACHE_KEY",e=this.pendingInfoCache.get(t);if(e)return e;let n=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(t,n),n}async getReceiveTransactionCost(t){let e=`RECEIVE_TX_COST_${t.sourceChainId}_${t.destinationChainId}_${t.messenger}`,n=this.receivedTransactionCache.get(e);if(n)return n;let a=await this.apiClient.getReceiveTransactionCost(t);return this.receivedTransactionCache.put(e,a),a}async getTransferStatus(t,e){return this.apiClient.getTransferStatus(t,e)}async getPoolInfoMap(t){return this.apiClient.getPoolInfoMap(t)}};var Jn=W(require("timed-cache"));var ci=55*1e3,Lt=class{constructor(t){this.client=t;this.poolInfoCache=new Tn}async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(t,e){return this.client.getTransferStatus(t,e)}getReceiveTransactionCost(t){return this.client.getReceiveTransactionCost(t)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(t,e){return this.client.getGasBalance(t,e)}checkAddress(t,e,n){return this.client.checkAddress(t,e,n)}async getPoolInfoByKey(t){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let e=this.poolInfoCache.get(t);if(e)return e;{let n=await this.client.getPoolInfoMap(t);return this.poolInfoCache.putAll(n),n[qe(t)]}}async refreshPoolInfo(t){let e;if(t)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),e=await this.client.getPoolInfoMap(t);else{let n=await this.client.getChainDetailsMapAndPoolInfoMap();e=await this.client.getPoolInfoMap(Kn(n.chainDetailsMap))}this.poolInfoCache.putAll(e)}cachePut(t,e){this.poolInfoCache.put(qe(t),e)}},Tn=class{constructor(){this.cache=new Jn.default({defaultTtl:ci})}putAll(t){for(let[e,n]of Object.entries(t))this.cache.put(e,n)}putAllIfNotExists(t){for(let[e,n]of Object.entries(t))this.cache.get(e)||this.cache.put(e,n)}put(t,e){this.cache.put(t,e)}get(t){let e=qe(t);return this.cache.get(e)}};var Ra=W(require("tronweb")),Ma=W(require("web3"));var bn=require("big.js");async function G(i,t){return await i.getPoolInfoByKey({chainSymbol:t.chainSymbol,poolAddress:t.poolAddress})}function v(i){if((0,bn.Big)(i).lte(0))throw new ct("Amount must be greater than zero")}function I(i,t,e){let n=(0,bn.Big)(t).toFixed();if(n.split(".").length==2&&n.split(".")[1].length>e)throw new ut(i,n.split(".")[1].length,e)}async function ht(i,t,e){return await Promise.race([i,new Promise((n,a)=>{setTimeout(()=>a(new lt(t)),e)})])}async function Hn(i,t,e,n=1.5,a=!1){let r=[],s=0;if(r.push(await i()),!t(r[r.length-1]))return r;let o=new Date(Date.now()+e*1e3).valueOf(),A=1e3,c=A;for(;Date.now()<o&&t(r[r.length-1]);)s++,a&&console.info(`Waiting ${A}ms before trying again (bringing the total wait time to ${c}ms so far, of total ${e*1e3}ms)`),await new Promise(m=>setTimeout(m,A)),A=A*n,new Date(Date.now()+A).valueOf()>o&&(A=o-Date.now(),a&&console.info(`was gonna wait too long; new waitTime: ${A}ms`)),c=A+c,r.push(await i(r[r.length-1])),a&&t(r[r.length-1])&&console.info(`${s}. Called ${i.name}; ${r.length} prev attempts. Most recent: ${JSON.stringify(r[r.length-1],null,2)}`);return r}var Xt=W(require("@project-serum/anchor")),Mn=require("@solana/web3.js"),la=require("big.js");var zn=[{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"uint256",name:"_chainPrecision",type:"uint256"},{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"},{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"},{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"gas",type:"uint256"}],name:"BridgingFeeFromTokens",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"bridgeTransactionCost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"messageTransactionCost",type:"uint256"}],name:"ReceiveFee",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Received",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes32",name:"sendToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"sendAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receiveAmount",type:"uint256"}],name:"Swapped",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{indexed:!1,internalType:"bytes32",name:"message",type:"bytes32"}],name:"TokensReceived",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"addBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract Pool",name:"pool",type:"address"},{internalType:"bytes32",name:"token",type:"bytes32"}],name:"addPool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"canSwap",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"address",name:"tokenAddress",type:"address"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageGasUsage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"hasReceivedMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"}],name:"hasSentMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"hashMessage",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"otherBridgeTokens",outputs:[{internalType:"bool",name:"isSupported",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"otherBridges",outputs:[{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"tokenId",type:"bytes32"}],name:"pools",outputs:[{internalType:"contract Pool",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"processedMessages",outputs:[{internalType:"uint256",name:"isProcessed",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],name:"registerBridge",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"removeBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"sentMessages",outputs:[{internalType:"uint256",name:"isSent",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"}],name:"setAllbridgeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_rebalancer",type:"address"}],name:"setRebalancer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"}],name:"setWormholeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"feeTokenAmount",type:"uint256"}],name:"swapAndBridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"withdrawBridgingFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGasTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}];var jn=[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"address",name:"cctpMessenger_",type:"address"},{internalType:"address",name:"cctpTransmitter_",type:"address"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedExtraGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"RecipientReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"}],name:"TokensSentExtras",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridgeWithWalletAddress",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"changeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getDomainByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint64",name:"nonce",type:"uint64"}],name:"isMessageProcessed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bytes",name:"message",type:"bytes"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"domain",type:"uint32"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}];var X=W(require("@project-serum/anchor")),K=require("@solana/web3.js");async function ue(i,t){return X.utils.token.associatedAddress({mint:t,owner:i})}async function Ue(i){let[t]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("config")],i);return t}async function qn(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("lock"),Uint8Array.from(i)],t);return e}async function Tt(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([i])],t);return e}async function $e(i){let t=await Ue(i),[e]=await K.PublicKey.findProgramAddress([t.toBuffer()],i);return e}async function $n(i,t){let[e]=await K.PublicKey.findProgramAddress([i.toBuffer()],t);return e}async function et(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("token"),i.toBytes()],t);return e}async function ea(i,t,e){let[n]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("other_bridge_token"),Buffer.from([i]),t],e);return n}async function Pn(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([i])],t);return e}async function Sn(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([i])],t);return e}async function ta(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("sent_message"),i],t);return e}async function wn(i,t,e){let[n]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("user_deposit"),t.toBytes(),i.toBytes()],e);return n}async function na(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("cctp_bridge"),i.toBytes()],t);return e}async function aa(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("token"),i.toBytes()],t);return e}function ia(i,t){let[e]=K.PublicKey.findProgramAddressSync([X.utils.bytes.utf8.encode("lock"),t.toBuffer()],i);return e}function ra(i,t,e,n){let a=Le("message_transmitter",e),r=Le("token_messenger",n),s=Le("__event_authority",n),o=Le("token_minter",n),A=Le("local_token",n,[t]),c=Le("remote_token_messenger",n,[i.toString()]),m=Le("sender_authority",n);return{messageTransmitterAccount:a,tokenMessenger:r,tokenMessengerEventAuthority:s,tokenMinter:o,localToken:A,remoteTokenMessengerKey:c,authorityPda:m}}function Le(i,t,e=[]){let n=[Buffer.from(X.utils.bytes.utf8.encode(i))];for(let r of e)typeof r=="string"?n.push(Buffer.from(X.utils.bytes.utf8.encode(r))):Array.isArray(r)?n.push(Buffer.from(r)):Buffer.isBuffer(r)?n.push(r):n.push(r.toBuffer());return K.PublicKey.findProgramAddressSync(n,t)[0]}var sa=require("@project-serum/anchor"),_t=require("@solana/web3.js");function Ne(i,t){let e=new _t.Connection(i,"confirmed"),n=new _t.PublicKey(t);return new sa.AnchorProvider(e,{publicKey:n},{preflightCommitment:"confirmed",commitment:"confirmed"})}var le=class{};var oa=require("@solana/web3.js"),Re=require("big.js"),Cn=W(require("randombytes")),Aa=require("stellar-sdk"),ca=W(require("tronweb"));function Ie(i,t,e){let n;switch(t){case"EVM":{n=li(i);break}case"SOLANA":{n=new oa.PublicKey(i).toBuffer();break}case"TRX":{n=pi(i);break}case"SRB":{n=new Aa.Address(i).toBuffer();break}}switch(e){case"EVM":return"0x"+n.toString("hex");case"SOLANA":return Array.from(n);case"TRX":return n.toJSON().data;case"SRB":return n.toJSON().data}}function ma(i){return Buffer.from(i.replace(/^0x/i,""),"hex")}function li(i){let e=ma(i);return Buffer.concat([Buffer.alloc(32-e.length,0),e],32)}function pi(i){let t=bt(i),e=ma(t);return di(e,32)}function bt(i){return Buffer.from(ca.utils.crypto.decodeBase58Address(i)).toString("hex").replace(/^41/,"0x")}function di(i,t){if(i.length>=t)return i;let e=Buffer.alloc(t,0);return i.copy(e,t-i.length),e}function tt(){return(0,Cn.default)(32)}function Bn(){let i=(0,Cn.default)(32).readBigInt64BE();return i<0?i*-1n:i}function Oe(i,t){let e={},n=t.sourceToken;return e.amount=B(t.amount,n.decimals).toFixed(),e.contractAddress=n.bridgeAddress,e.fromAccountAddress=t.fromAccountAddress,e.fromTokenAddress=Ie(n.tokenAddress,i,i),e.toAccountAddress=t.toAccountAddress,e.toTokenAddress=Ie(t.destinationToken.tokenAddress,i,i),e.minimumReceiveAmount=t.minimumReceiveAmount?B(t.minimumReceiveAmount,t.destinationToken.decimals).toFixed():"0",e}async function xe(i,t,e){let n={};n.fromChainId=t.sourceToken.allbridgeChainId,n.fromChainSymbol=t.sourceToken.chainSymbol;let a=z[t.destinationToken.chainSymbol].chainType;n.fromTokenAddress=t.sourceToken.tokenAddress,n.toChainId=t.destinationToken.allbridgeChainId,n.toTokenAddress=t.destinationToken.tokenAddress,t.gasFeePaymentMethod==="stablecoin"?n.gasFeePaymentMethod="stablecoin":n.gasFeePaymentMethod="native";let r=t.sourceToken;if(t.messenger===3){if(!r.cctpAddress||!t.destinationToken.cctpAddress)throw new re("Such route does not support CCTP protocol");n.contractAddress=r.cctpAddress}else n.contractAddress=r.bridgeAddress;n.messenger=t.messenger,n.fromAccountAddress=t.fromAccountAddress,n.amount=B(t.amount,r.decimals).toFixed();let{fee:s,feeFormat:o}=t;if(!s){let u=(await kn(n.fromChainId,t.sourceToken.chainType,n.toChainId,r.decimals,n.messenger,e))[n.gasFeePaymentMethod];if(!u)throw new ze;s=u.int,o="int"}if(o=="float")switch(n.gasFeePaymentMethod){case"native":n.fee=B(s,V[r.chainType]).toFixed(0);break;case"stablecoin":n.fee=B(s,r.decimals).toFixed(0);break}else n.fee=s;let{extraGas:A,extraGasFormat:c}=t;if(A&&+A>0){if(c=="float")switch(n.gasFeePaymentMethod){case"native":n.extraGas=B(A,V[r.chainType]).toFixed(0);break;case"stablecoin":n.extraGas=B(A,r.decimals).toFixed(0);break}else n.extraGas=A;await fi(n.extraGas,n.gasFeePaymentMethod,r,t.destinationToken,e)}return n.fromTokenAddress=Ie(n.fromTokenAddress,i,i),n.toAccountAddress=Ie(t.toAccountAddress,a,i),n.toTokenAddress=Ie(n.toTokenAddress,a,i),n.gasFeePaymentMethod=="stablecoin"&&gi(n.amount,r.decimals,n.fee,n.extraGas),n}function gi(i,t,e,n){let a=(0,Re.Big)(i).minus(e).minus(n??0);if(a.lte(0))throw new Ve(`Amount not enough to pay fee, ${b((0,Re.Big)(a).minus(1).neg(),t).toFixed()} stables is missing`)}async function kn(i,t,e,n,a,r){let s=await r.getReceiveTransactionCost({sourceChainId:i,destinationChainId:e,messenger:a}),o={native:{int:s.fee,float:b(s.fee,V[t]).toFixed()}};if(s.sourceNativeTokenPrice){let A=Ee(new Re.Big(s.fee).mul(s.sourceNativeTokenPrice),V[t],n).toFixed(0,Re.Big.roundUp);o.stablecoin={int:A,float:b(A,n).toFixed()}}return o}async function fi(i,t,e,n,a){let s=(await Rn(e,n,a)).extraGasMax[t];if(!s)throw new ze(`Impossible to pay extra gas by '${t}' payment method`);let o=s.int;if((0,Re.Big)(i).gt(o))throw new mt(`Extra gas ${i} in int format, exceeded limit ${o} for '${t}' payment method`)}async function Rn(i,t,e){let n={},a=await e.getReceiveTransactionCost({sourceChainId:i.allbridgeChainId,destinationChainId:t.allbridgeChainId,messenger:1}),r=t.txCostAmount.maxAmount,s=b(r,V[t.chainType]).toFixed(),o=(0,Re.Big)(s).div(a.exchangeRate).toFixed(V[i.chainType],Re.Big.roundDown),A=B(o,V[i.chainType]).toFixed(0);if(n.native={int:A,float:o},a.sourceNativeTokenPrice){let c=(0,Re.Big)(o).mul(a.sourceNativeTokenPrice).toFixed(i.decimals,Re.Big.roundDown);n.stablecoin={int:B(c,i.decimals).toFixed(0),float:c}}return{extraGasMax:n,destinationChain:{gasAmountMax:{int:r,float:s},swap:{int:t.txCostAmount.swap,float:b(t.txCostAmount.swap,V[t.chainType]).toFixed()},transfer:{int:t.txCostAmount.transfer,float:b(t.txCostAmount.transfer,V[t.chainType]).toFixed()}},exchangeRate:a.exchangeRate,sourceNativeTokenPrice:a.sourceNativeTokenPrice}}function ua(i){return i.sourceToken.chainSymbol!==i.destinationToken.chainSymbol}var St=class extends le{constructor(e,n,a){super();this.web3=e;this.api=n;this.nodeRpcUrlsConfig=a;this.chainType="EVM"}async send(e){let n=await this.buildRawTransactionSend(e);return this.sendRawTransaction(n)}async buildRawTransactionSwap(e){let n=Oe(this.chainType,e);return await this.buildRawTransactionSwapFromParams(n)}async buildRawTransactionSwapFromParams(e){let{amount:n,contractAddress:a,fromAccountAddress:r,fromTokenAddress:s,toAccountAddress:o,toTokenAddress:A,minimumReceiveAmount:c}=e,u=this.getBridgeContract(a).methods.swap(n,s,A,o,c);return Promise.resolve({from:r,to:a,data:u.encodeABI()})}async buildRawTransactionSend(e){let n=await xe(this.chainType,e,this.api),{amount:a,contractAddress:r,fromAccountAddress:s,fromTokenAddress:o,toChainId:A,toAccountAddress:c,toTokenAddress:m,messenger:u,fee:g,gasFeePaymentMethod:f,extraGas:y}=n,h="0x"+tt().toString("hex"),d,p,P=g;if(y&&(P=(0,la.Big)(P).plus(y).toFixed()),u===3){let T=await this.buildRawTransactionCctpSend(e,n,P);d=T.sendMethod,p=T.value}else{let T=this.getBridgeContract(r);f==="stablecoin"?(d=T.methods.swapAndBridge(o,a,c,A,m,h,u,P),p="0"):(d=T.methods.swapAndBridge(o,a,c,A,m,h,u,0),p=P)}return Promise.resolve({from:s,to:r,value:p,data:d.encodeABI()})}async buildRawTransactionCctpSend(e,n,a){let{amount:r,contractAddress:s,toChainId:o,toAccountAddress:A,gasFeePaymentMethod:c}=n,m=this.getContract(jn,s),u,g;if(e.destinationToken.chainType==="SOLANA"){let f,y=new Mn.PublicKey(e.toAccountAddress),h=new Mn.PublicKey(e.destinationToken.tokenAddress),d=await ue(y,h),p=Ne(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),e.toAccountAddress);Xt.setProvider(p);let P=await Xt.Spl.token(p).account.token.fetchNullable(d);if(P?.authority.equals(y))f=Ie(d.toBase58(),"SOLANA",this.chainType);else{let T=await p.connection.getTokenAccountsByOwner(y,{mint:h});if(T.value.length===0&&!P)f=Ie(d.toBase58(),"SOLANA",this.chainType);else if(T.value.length>0)f=Ie(T.value[0].pubkey.toBase58(),"SOLANA",this.chainType);else throw new k("Associated account has wrong owner")}c==="stablecoin"?(u=m.methods.bridgeWithWalletAddress(r,f,A,o,a),g="0"):(u=m.methods.bridgeWithWalletAddress(r,f,A,o,0),g=a)}else c==="stablecoin"?(u=m.methods.bridge(r,A,o,a),g="0"):(u=m.methods.bridge(r,A,o,0),g=a);return{sendMethod:u,value:g}}async sendRawTransaction(e){let n=await this.web3.eth.estimateGas(e),a={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:r}=await this.web3.eth.sendTransaction({...e,gas:n,...a});return{txId:r}}getContract(e,n){return new this.web3.eth.Contract(e,n)}getBridgeContract(e){return this.getContract(zn,e)}};var Kt=class{constructor(t,e,n,a){this.api=t;this.nodeRpcUrlsConfig=e;this.params=n;this.tokenService=a}async approve(t,e){let n,a;e?(n=t,a=e):a=t;let r=wt(a.token,a.messenger);return this.tokenService.buildRawTransactionApprove({...a,spender:r},n)}async send(t,e){return v(t.amount),I("amount",t.amount,t.sourceToken.decimals),ua(t)?Qt(t.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,e).buildRawTransactionSend(t):Qt(t.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,e).buildRawTransactionSwap(t)}};var x=require("@project-serum/anchor"),C=require("@solana/web3.js"),De=require("big.js");var Ct={version:"0.1.0",name:"bridge",instructions:[{name:"initialize",accounts:[{name:"admin",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializePool",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"token",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializePoolArgs"}}]},{name:"initDepositAccount",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"deposit",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdraw",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amountLp",type:"u64"}]},{name:"swapAndBridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"messenger",isMut:!1,isSigner:!1},{name:"messengerConfig",isMut:!0,isSigner:!1},{name:"sentMessageAccount",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swapAndBridgeWormhole",accounts:[{name:"user",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"wormholeMessenger",isMut:!1,isSigner:!1},{name:"wormholeMessengerConfig",isMut:!0,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"bridge",isMut:!0,isSigner:!1},{name:"message",isMut:!0,isSigner:!0},{name:"sequence",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swap",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"sendMint",isMut:!1,isSigner:!1},{name:"receiveMint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"sendPool",isMut:!0,isSigner:!1},{name:"receivePool",isMut:!0,isSigner:!1},{name:"sendBridgeToken",isMut:!0,isSigner:!1},{name:"receiveBridgeToken",isMut:!0,isSigner:!1},{name:"sendUserToken",isMut:!0,isSigner:!1},{name:"receiveUserToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"},{name:"receiveAmountMin",type:"u64"}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"receiveAndSwap",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"receiveAndSwapWormhole",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"claimRewards",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAdmin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAdmin",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"startBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"stopBridge",accounts:[{name:"stopAuthority",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"setRebalancer",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"rebalancer",isMut:!1,isSigner:!1}],args:[]},{name:"setStopAuthority",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAuthority",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"setAllbridgeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setWormholeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setPoolFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setBalanceRatioMin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"balanceRatioMinBp",type:"u16"}]},{name:"setPoolAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"addOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"removeOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"adjustTotalLpAmount",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"chainBridge",type:{kind:"struct",fields:[{name:"address",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"config",type:{kind:"struct",fields:[{name:"admin",type:"publicKey"},{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"rebalancer",type:"publicKey"},{name:"stopAuthority",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"canSwap",type:"bool"},{name:"canDeposit",type:"bool"},{name:"canWithdraw",type:"bool"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"sentTokenAddress",type:"publicKey"},{name:"amount",type:"u64"},{name:"vusdAmount",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"nonce",type:{array:["u8",32]}},{name:"messenger",type:{defined:"Messenger"}},{name:"slot",type:"u64"},{name:"fee",type:"u64"}]}},{name:"otherBridgeToken",type:{kind:"struct",fields:[]}},{name:"pool",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"a",type:"u64"},{name:"d",type:"u64"},{name:"tokenBalance",type:"u64"},{name:"vUsdBalance",type:"u64"},{name:"reserves",type:"u64"},{name:"decimals",type:"u8"},{name:"totalLpAmount",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"accRewardPerShareP",type:"u128"},{name:"adminFeeAmount",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"unlock",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"fee",type:"u64"},{name:"vUsdAmount",type:"u64"},{name:"slot",type:"u64"}]}},{name:"userDeposit",type:{kind:"struct",fields:[{name:"userAddress",type:"publicKey"},{name:"mint",type:"publicKey"},{name:"lpAmount",type:"u64"},{name:"rewardDebt",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"}]}},{name:"InitializePoolArgs",type:{kind:"struct",fields:[{name:"a",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"vusdAmount",type:"u64"}]}},{name:"UnlockArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"recipient",type:"publicKey"},{name:"sourceChainId",type:"u8"},{name:"receiveToken",type:"publicKey"},{name:"messenger",type:{defined:"Messenger"}},{name:"hash",type:{array:["u8",32]}},{name:"receiveAmountMin",type:"u64"}]}},{name:"RewardError",type:{kind:"enum",variants:[{name:"FeeTooHigh"}]}},{name:"Messenger",type:{kind:"enum",variants:[{name:"None"},{name:"Allbridge"},{name:"Wormhole"}]}},{name:"ActionType",type:{kind:"enum",variants:[{name:"Deposit"},{name:"Withdraw"},{name:"Swap"}]}}],errors:[{code:6e3,name:"AccountAlreadyInitialized",msg:"This account has already been initialized"},{code:6001,name:"AdminAuthorityInvalid",msg:"This instruction requires admin authority"},{code:6002,name:"InvalidSignature",msg:"Provided signature has wrong signer or message"},{code:6003,name:"InvalidHash",msg:"Wrong unlock message hash"},{code:6004,name:"PoolOverflow",msg:"PoolInfo overflow"},{code:6005,name:"ReservesExhausted",msg:"Reserves exhausted"},{code:6006,name:"ZeroAmount",msg:"Zero amount"},{code:6007,name:"ZeroChanges",msg:"Zero changes"},{code:6008,name:"HighVusdAmount",msg:"vUSD amount is too high"},{code:6009,name:"BalanceRatioExceeded",msg:"Balance ratio exceeded"},{code:6010,name:"InsufficientReceivedAmount",msg:"Received insufficient amount"},{code:6011,name:"ForbiddenAction",msg:"ForbiddenAction"},{code:6012,name:"ValueTooHigh",msg:"Value is too high"}]};var pa={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 da=require("@project-serum/anchor"),ga=W(require("big.js")),Bt=W(require("web3"));async function nt(i,t){return await da.Spl.token(t).account.token.fetch(i)}async function fa(i,t,e){let n=await t.account.pool.fetch(e),a=n.decimals,r=(0,ga.default)(n.feeShareBp.toString()).div(1e4).toFixed(),s={aValue:n.a.toString(),dValue:n.d.toString(),totalLpAmount:n.totalLpAmount.toString(),tokenBalance:n.tokenBalance.toString(),vUsdBalance:n.vUsdBalance.toString(),accRewardPerShareP:n.accRewardPerShareP.toString()};return Ce(i,{decimals:a,feeShare:r},s)}function ya(i){let t=i.amount,e="0x"+i.recipient.toString("hex"),n=i.sourceChainId,a=i.destinationChainId,r="0x"+i.receiveToken.toString("hex"),s="0x"+i.nonce.toString("hex"),o=1,A="0x"+i.chainBridge.toString("hex"),c=Bt.default.utils.encodePacked({t:"uint256",v:t},{t:"bytes32",v:e},{t:"uint256",v:n},{t:"bytes32",v:r},{t:"uint256",v:s},{t:"uint8",v:o});if(!c)throw new k("message cannot be undefined");let m=Bt.default.utils.keccak256(Buffer.from(c.replace("0x",""),"hex")),u=Buffer.from(m.replace("0x",""),"hex");u[0]=n,u[1]=a;let g=Bt.default.utils.encodePacked({t:"bytes32",v:"0x"+u.toString("hex")},{t:"bytes32",v:A});if(!g)throw new Ge("messageWithSigner cannot be undefined");let f=Bt.default.utils.keccak256(Buffer.from(g.replace("0x",""),"hex")),y=Buffer.from(f.replace("0x",""),"hex");return y[0]=u[0],y[1]=u[1],y}var ne=require("@solana/web3.js"),ha=require("big.js");var vn=require("@solana/web3.js");async function Xe(i,t){return await Promise.all(i.message.addressTableLookups.map(async e=>new vn.AddressLookupTableAccount({key:e.accountKey,state:vn.AddressLookupTableAccount.deserialize(await t.getAccountInfo(e.accountKey).then(n=>{if(!n)throw new k("Cannot get AccountInfo");return n.data}))})))}var Yt="AUTO";async function at(i,t,e){let n=new ne.Connection(e,"confirmed"),a=(await n.simulateTransaction(i)).value.unitsConsumed;await ba(i.instructions,a,t,n)}async function Ta(i,t,e){let n=new ne.Connection(e,"confirmed"),a=await Xe(i,n),r=ne.TransactionMessage.decompile(i.message,{addressLookupTableAccounts:a});if(i.serialize().length>1232)throw new dt;await ba(r.instructions,769230,t,n),i.message=r.compileToV0Message(a)}async function ba(i,t,e,n){if(t>0){let a=yi(t,i);if(e?.solana){let r=e.solana;if(r===Yt)await In(i,n);else if("pricePerUnitInMicroLamports"in r)await In(i,n,r.pricePerUnitInMicroLamports);else{let s=(0,ha.Big)(r.extraFeeInLamports).div(a).mul(gt(6)).toFixed(0);await In(i,n,s)}}}}function yi(i,t){let e=t.findIndex(r=>r.programId.equals(ne.ComputeBudgetProgram.programId)&&ne.ComputeBudgetInstruction.decodeInstructionType(r)==="SetComputeUnitLimit"),n=Number((i*1.3).toFixed(0)),a=ne.ComputeBudgetProgram.setComputeUnitLimit({units:n});return e>=0?t[e]=a:t.push(a),n.toString()}async function In(i,t,e){let n=i.findIndex(s=>s.programId.equals(ne.ComputeBudgetProgram.programId)&&ne.ComputeBudgetInstruction.decodeInstructionType(s)==="SetComputeUnitPrice"),a=BigInt(e||await hi(t)),r=ne.ComputeBudgetProgram.setComputeUnitPrice({microLamports:a});return n>=0?i[n]=r:i.push(r),a.toString()}async function hi(i){let t=await i.getRecentPrioritizationFees(),e=0;for(let n of t)e+=n.prioritizationFee;return(e/t.length).toFixed(0)}var Pa=require("@solana/spl-token"),Ke=require("@solana/web3.js"),it=W(require("axios"));var Jt=class{constructor(t){this.connection=new Ke.Connection(t)}async getJupiterSwapTx(t,e,n){let a;try{a=await it.default.get(`https://quote-api.jup.ag/v6/quote?inputMint=${e}
|
|
2
|
-
&outputMint=${
|
|
1
|
+
"use strict";var Qa=Object.create;var Ut=Object.defineProperty;var Ya=Object.getOwnPropertyDescriptor;var Ja=Object.getOwnPropertyNames;var Ha=Object.getPrototypeOf,za=Object.prototype.hasOwnProperty;var ja=(i,t)=>{for(var e in t)Ut(i,e,{get:t[e],enumerable:!0})},En=(i,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Ja(t))!za.call(i,a)&&a!==e&&Ut(i,a,{get:()=>t[a],enumerable:!(n=Ya(t,a))||n.enumerable});return i};var W=(i,t,e)=>(e=i!=null?Qa(Ha(i)):{},En(t||!i||!i.__esModule?Ut(e,"default",{value:i,enumerable:!0}):e,i)),qa=i=>En(Ut({},"__esModule",{value:!0}),i);var Ei={};ja(Ei,{AddressStatus:()=>yn,AllbridgeCoreSdk:()=>Wn,AmountFormat:()=>bt,AmountNotEnoughError:()=>Ve,ArgumentInvalidDecimalsError:()=>lt,CCTPDoesNotSupportedError:()=>re,ChainSymbol:()=>me,ChainType:()=>O,ErrorCode:()=>Nn,ExtraGasMaxLimitExceededError:()=>ut,FeePaymentMethod:()=>_e,InsufficientPoolLiquidityError:()=>we,InvalidAmountError:()=>mt,InvalidGasFeePaymentOptionError:()=>ze,InvalidMessengerOptionError:()=>gn,InvalidTxError:()=>Ge,JupiterError:()=>Y,Messenger:()=>ke,MethodNotSupportedError:()=>J,NodeRpcUrlNotInitializedError:()=>pt,SdkError:()=>k,SdkRootError:()=>F,SolanaAutoTxFee:()=>Yt,TimeoutError:()=>qe,TxTooLargeError:()=>dt,VerifyTxError:()=>je,mainnet:()=>ct,nodeRpcUrlsDefault:()=>ai,nodeUrlsDefault:()=>ni,testnet:()=>$a,testnetNodeRpcUrlsDefault:()=>ti,testnetNodeUrlsDefault:()=>ei});module.exports=qa(Ei);var $a={coreApiUrl:"https://core-dev.a11bd.net",coreApiQueryParams:{},coreApiHeaders:{},wormholeMessengerProgramId:"3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5",solanaLookUpTable:"C3jAxHRTZjM2Bs7EqPir4nvrT8zKtpcW7RvGR9R2qKtN",sorobanNetworkPassphrase:"Test SDF Network ; September 2015",tronJsonRpc:"https://nile.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{SPL:0,ARB:3,AMO:7}}},ei={solanaRpcUrl:"https://api.devnet.solana.com",tronRpcUrl:"https://nile.trongrid.io"},ti={SOL:"https://api.devnet.solana.com",TRX:"https://nile.trongrid.io",SRB:"https://soroban-testnet.stellar.org",STLR:"https://horizon-testnet.stellar.org"};var ct={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},wormholeMessengerProgramId:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",solanaLookUpTable:"2JcBAEVnAwVo4u8d61iqgHPrzZuugur7cVTjWubsVLHj",sorobanNetworkPassphrase:"Public Global Stellar Network ; September 2015",tronJsonRpc:"https://api.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{ETH:0,AVA:1,OPT:2,ARB:3,SOL:5,BAS:6,POL:7}}},ni={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},ai={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org"};var he=require("big.js");var Nt=class{constructor(t){this.apiClient=t}async getChainDetailsMap(){return(await this.apiClient.getTokenInfo()).chainDetailsMap}async tokens(){let t=await this.getChainDetailsMap();return Object.values(t).flatMap(e=>e.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(t,e){return this.apiClient.getGasBalance(t,e)}async checkAddress(t,e,n){return this.apiClient.checkAddress(t,e,n)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(t,e){return await this.apiClient.getTransferStatus(t,e)}async getReceiveTransactionCost(t){return await this.apiClient.getReceiveTransactionCost(t)}async getPoolInfoMap(t){return await this.apiClient.getPoolInfoMap(t)}};var Jn=W(require("axios"));var Un="3.15.0-alpha.2";var me=(p=>(p.GRL="GRL",p.SPL="SPL",p.HOL="HOL",p.BSC="BSC",p.ETH="ETH",p.BAS="BAS",p.SOL="SOL",p.TRX="TRX",p.POL="POL",p.MUM="MUM",p.AMO="AMO",p.ARB="ARB",p.CEL="CEL",p.AVA="AVA",p.SRB="SRB",p.STLR="STLR",p.OPT="OPT",p))(me||{}),O=(a=>(a.EVM="EVM",a.SOLANA="SOLANA",a.TRX="TRX",a.SRB="SRB",a))(O||{}),V={EVM:18,SOLANA:9,TRX:6,SRB:7},z={GRL:{chainSymbol:"GRL",chainId:"0x5",name:"Goerli",chainType:"EVM"},SPL:{chainSymbol:"SPL",chainId:"0xaa36a7",name:"Sepolia",chainType:"EVM"},HOL:{chainSymbol:"HOL",chainId:"0x4268",name:"Hole\u0161ky",chainType:"EVM"},BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},MUM:{chainSymbol:"MUM",chainId:"0x13881",name:"Mumbai",chainType:"EVM"},AMO:{chainSymbol:"AMO",chainId:"0x13882",name:"Amoy",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"}};var l=require("big.js"),Ot=W(require("bn.js"));var F=class extends Error{constructor(t,e){super(e),this.errorCode=t}},k=class extends F{constructor(t){super("SdkError",t)}},mt=class extends F{constructor(t){super("InvalidAmountError",t)}},Ve=class extends F{constructor(t){super("AmountNotEnoughError",t)}},we=class extends F{constructor(t){super("InsufficientPoolLiquidityError",t)}},Y=class extends F{constructor(t){super("JupiterError",t)}},ze=class extends F{constructor(t){super("InvalidGasFeePaymentOptionError",t)}},gn=class extends F{constructor(t){super("InvalidMessengerOptionError",t)}},J=class extends F{constructor(t){super("MethodNotSupportedError",t)}},je=class extends F{constructor(t){super("VerifyTxError",t)}},Ge=class extends F{constructor(t){super("InvalidTxError",t)}},ut=class extends F{constructor(t){super("ExtraGasMaxLimitExceededError",t)}},lt=class extends F{constructor(t,e,n){super("ArgumentInvalidDecimalsError",`Argument '${t}' decimals '${e}' cannot be greater than '${n}'`)}},qe=class extends F{constructor(t){super("TimeoutError",t)}},pt=class extends F{constructor(t){super("NodeRpcUrlNotInitializedError",`For chain '${t}' Node RPC URL not initialized`)}},re=class extends F{constructor(t){super("CCTPDoesNotSupportedError",t)}},dt=class extends F{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},Nn=(d=>(d.SDK_ERROR="SdkError",d.INVALID_AMOUNT_ERROR="InvalidAmountError",d.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",d.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",d.JUPITER_ERROR="JupiterError",d.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",d.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",d.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",d.VERIFY_TX_ERROR="VerifyTxError",d.INVALID_TX_ERROR="InvalidTxError",d.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",d.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",d.TIMEOUT_ERROR="TimeoutError",d.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",d.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",d.TX_TOO_LARGE="TxTooLargeError",d))(Nn||{});function fn(i,t){return(0,l.Big)(100).minus((0,l.Big)(100).times(t).div(i)).toNumber()}function Ze(i,t){return Ee(i,t,3).round(0,l.Big.roundDown)}function ee(i,t){return Ee(i,3,t)}function Ee(i,t,e){let n=(0,l.Big)(e).minus(t).toNumber();return(0,l.Big)(i).times(gt(n))}function gt(i){return(0,l.Big)(10).pow(i)}function B(i,t){return(0,l.Big)(i).times(gt(t))}function b(i,t){let e=(0,l.Big)(i);return e.eq(0)?(0,l.Big)(0):(0,l.Big)(e).div(gt(t))}function te(i){return b((0,l.Big)(i.tokenBalance).minus(i.vUsdBalance).toFixed(),3).div(2).toFixed()}function Ce(i,{feeShare:t,decimals:e},n){let a=(0,l.Big)(i);if(a.lte(0))return"0";let r=a.times(t),s=a.minus(r),o=Ze(s,e),A=(0,l.Big)(n.tokenBalance).plus(o),c=Be(A,n.aValue,n.dValue);return(0,l.Big)(n.vUsdBalance).minus(c).round(0,l.Big.roundDown).toFixed()}function ft(i,{feeShare:t,decimals:e},n){let a=(0,l.Big)(i);if(a.lte(0))return(0,l.Big)(0).toFixed();let r=a.plus(n.vUsdBalance),s=Be(r,n.aValue,n.dValue),o=ee((0,l.Big)(n.tokenBalance).minus(s),e),A=(0,l.Big)(o).times(t);return(0,l.Big)(o).minus(A).round(0,l.Big.roundDown).toFixed()}function On(i,t){let e=(0,l.Big)(i);if(e.lte(0))return t;let n=e.plus(t.vUsdBalance),a=Be(n,t.aValue,t.dValue);return{aValue:t.aValue,dValue:t.dValue,tokenBalance:a.toFixed(0),vUsdBalance:n.toFixed(0)}}function Vn(i,{feeShare:t,decimals:e},n){if((0,l.Big)(i).lte(0))return(0,l.Big)(0);let a=(0,l.Big)(n.vUsdBalance).minus(i);if(a.lte(0))throw new we;let r=Be(a,n.aValue,n.dValue),s=(0,l.Big)(r).minus(n.tokenBalance),o=ee(s,e),A=(0,l.Big)(t).div((0,l.Big)(1).minus(t)),c=(0,l.Big)(o).times(A).round(0,l.Big.roundUp);return(0,l.Big)(o).plus(c).round(0,l.Big.roundDown)}function Gn(i,{feeShare:t,decimals:e},n){if((0,l.Big)(i).lte(0))return(0,l.Big)(0);let a=(0,l.Big)(t).div((0,l.Big)(1).minus(t)),r=(0,l.Big)(i).times(a).round(0,l.Big.roundUp),s=(0,l.Big)(i).plus(r),o=Ze(s,e),A=(0,l.Big)(n.tokenBalance).minus(o);if(A.lte(0))throw new we;let c=Be(A,n.aValue,n.dValue);return(0,l.Big)(c).minus(n.vUsdBalance).round(0,l.Big.roundDown)}function Be(i,t,e){let n=(0,l.Big)(4).times(t).times((0,l.Big)(e).minus(i)).minus(e),a=(0,l.Big)(e).pow(3),r=n.pow(2),s=(0,l.Big)(i).times((0,l.Big)(i).times(r).plus((0,l.Big)(4).times(t).times(a))).sqrt().round(0,l.Big.roundDown),o=(0,l.Big)(8).times(t).times(i),A=n.times(i).plus(s).div(o).round(0,l.Big.roundDown);return A.eq(0)?(0,l.Big)(0):A.plus(1)}function Zn(i,t,e,n){let a=new Ot.default(i),r=new Ot.default(e),s=new Ot.default(t);return a.mul(r).shrn(n).sub(s).toString()}function Ln(i){return i*100>0?`${Number((0,l.Big)(i).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function _n(i,t,e){let n=(0,l.Big)(t).times(e),a=(0,l.Big)(t).plus(e),r=(0,l.Big)(8).times(i).times(n).times(a),s=n.times((0,l.Big)(16).times(i).minus(4)).div(3),o=r.times(r),A=s.times(s).times(s),c=o.plus(A),m=(0,l.Big)(c).sqrt(),u=(0,l.Big)(Math.cbrt(+r.plus(m).toFixed())),g=(0,l.Big)(Math.cbrt(+r.minus(m).toFixed()));return u.plus(g).toFixed()}var yn=(s=>(s.OK="OK",s.INVALID="INVALID",s.FORBIDDEN="FORBIDDEN",s.UNINITIALIZED="UNINITIALIZED",s.CONTRACT_ADDRESS="CONTRACT_ADDRESS",s.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",s))(yn||{});var ke=(n=>(n[n.ALLBRIDGE=1]="ALLBRIDGE",n[n.WORMHOLE=2]="WORMHOLE",n[n.CCTP=3]="CCTP",n))(ke||{});function Xn(i){return Object.entries(i).reduce((t,e)=>{let n=e[0],a=e[1],r=Ai(n,a);return r&&(t[n]=r),t},{})}function Kn(i){let t={};for(let[e,n]of Object.entries(i)){let a=e;for(let r of n.tokens){let s=$e({chainSymbol:a,poolAddress:r.poolAddress}),o=te(r.poolInfo);t[s]={...r.poolInfo,imbalance:o}}}return t}function ii(i,t){let{name:e,...n}=i,{poolInfo:a,...r}=t;return{...r,...n,chainName:e}}function ri(i){switch(i){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;default:return null}}function si(i){return Object.entries(i).reduce((t,[e,n])=>(t[e]=oi(n),t),{})}function oi(i){return Object.entries(i).reduce((t,[e,n])=>{let a=ri(e);return a&&(t[a]=n),t},{})}function Ai(i,t){let e=z[i];if(!e)return null;let n={...e,allbridgeChainId:t.chainId,bridgeAddress:t.bridgeAddress,transferTime:si(t.transferTime),txCostAmount:t.txCostAmount,confirmations:t.confirmations};return{...n,tokens:t.tokens.map(a=>ii(n,a))}}function $e(i){return i.chainSymbol+"_"+i.poolAddress}function Qn(i){let t=[];for(let[e,n]of Object.entries(i)){let a=e;for(let r of n.tokens)t.push({chainSymbol:a,poolAddress:r.poolAddress})}return t}function Yn(i){let t={};for(let[e,n]of Object.entries(i)){let a=e;for(let[r,s]of Object.entries(n))s.imbalance=te(s),t[$e({chainSymbol:a,poolAddress:r})]=s}return t}var Vt=class{constructor(t){this.api=Jn.default.create({baseURL:t.coreApiUrl,headers:{Accept:"application/json",...t.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+Un},params:t.coreApiQueryParams})}async getTokenInfo(){let{data:t}=await this.api.get("/token-info");return{chainDetailsMap:Xn(t),poolInfoMap:Kn(t)}}async getPendingInfo(){let{data:t}=await this.api.get("/pending-info");return t}async getGasBalance(t,e){let{data:n}=await this.api.get(`/check/${t}/${e}`);return n}async checkAddress(t,e,n){if(n){let{data:r}=await this.api.get(`/check/${t}/${e}`,{params:{token:n,...this.api.defaults.params}});return r}let{data:a}=await this.api.get(`/check/${t}/${e}`);return a}async getTransferStatus(t,e){let{data:n}=await this.api.get(`/chain/${t}/${e}`);return n}async getReceiveTransactionCost(t){let{data:e}=await this.api.post("/receive-fee",t,{headers:{"Content-Type":"application/json"}});return{exchangeRate:e.exchangeRate,fee:e.fee,sourceNativeTokenPrice:e.sourceNativeTokenPrice}}async getPoolInfoMap(t){let e=t instanceof Array?t:[t],{data:n}=await this.api.post("/pool-info",{pools:e},{headers:{"Content-Type":"application/json"}});return Yn(n)}};var yt=W(require("timed-cache")),hn=20*1e3,ci=55*1e3,Gt=class{constructor(t){this.apiClient=t;this.tokenInfoCache=new yt.default({defaultTtl:ci}),this.receivedTransactionCache=new yt.default({defaultTtl:hn}),this.pendingInfoCache=new yt.default({defaultTtl:hn}),this.gasBalanceCache=new yt.default({defaultTtl:hn})}getTokenInfo(){let t="TOKEN_INFO_CACHE_KEY",e=this.tokenInfoCache.get(t);if(e)return e;let n=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(t,n),n}async getGasBalance(t,e){let n=`GAS_BALANCE_${t}_${e}`,a=this.gasBalanceCache.get(n);if(a)return a;let r=this.apiClient.getGasBalance(t,e);return this.gasBalanceCache.put(n,r),r}async checkAddress(t,e,n){return this.apiClient.checkAddress(t,e,n)}async getPendingInfo(){let t="PENDING_INFO_CACHE_KEY",e=this.pendingInfoCache.get(t);if(e)return e;let n=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(t,n),n}async getReceiveTransactionCost(t){let e=`RECEIVE_TX_COST_${t.sourceChainId}_${t.destinationChainId}_${t.messenger}`,n=this.receivedTransactionCache.get(e);if(n)return n;let a=await this.apiClient.getReceiveTransactionCost(t);return this.receivedTransactionCache.put(e,a),a}async getTransferStatus(t,e){return this.apiClient.getTransferStatus(t,e)}async getPoolInfoMap(t){return this.apiClient.getPoolInfoMap(t)}};var Hn=W(require("timed-cache"));var mi=55*1e3,Zt=class{constructor(t){this.client=t;this.poolInfoCache=new Tn}async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(t,e){return this.client.getTransferStatus(t,e)}getReceiveTransactionCost(t){return this.client.getReceiveTransactionCost(t)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(t,e){return this.client.getGasBalance(t,e)}checkAddress(t,e,n){return this.client.checkAddress(t,e,n)}async getPoolInfoByKey(t){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let e=this.poolInfoCache.get(t);if(e)return e;{let n=await this.client.getPoolInfoMap(t);return this.poolInfoCache.putAll(n),n[$e(t)]}}async refreshPoolInfo(t){let e;if(t)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),e=await this.client.getPoolInfoMap(t);else{let n=await this.client.getChainDetailsMapAndPoolInfoMap();e=await this.client.getPoolInfoMap(Qn(n.chainDetailsMap))}this.poolInfoCache.putAll(e)}cachePut(t,e){this.poolInfoCache.put($e(t),e)}},Tn=class{constructor(){this.cache=new Hn.default({defaultTtl:mi})}putAll(t){for(let[e,n]of Object.entries(t))this.cache.put(e,n)}putAllIfNotExists(t){for(let[e,n]of Object.entries(t))this.cache.get(e)||this.cache.put(e,n)}put(t,e){this.cache.put(t,e)}get(t){let e=$e(t);return this.cache.get(e)}};var Ma=W(require("tronweb")),va=W(require("web3"));var bn=require("big.js");async function G(i,t){return await i.getPoolInfoByKey({chainSymbol:t.chainSymbol,poolAddress:t.poolAddress})}function v(i){if((0,bn.Big)(i).lte(0))throw new mt("Amount must be greater than zero")}function I(i,t,e){let n=(0,bn.Big)(t).toFixed();if(n.split(".").length==2&&n.split(".")[1].length>e)throw new lt(i,n.split(".")[1].length,e)}async function Lt(i,t,e){return await Promise.race([i,new Promise((n,a)=>{setTimeout(()=>a(new qe(t)),e)})])}async function Pn(i,t,e,n){if(e<1)throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${e} was received.`);let a=0;for(;;)try{return await Lt(i(),t,n)}catch{if(++a>=e)throw new qe(t)}}async function zn(i,t,e,n=1.5,a=!1){let r=[],s=0;if(r.push(await i()),!t(r[r.length-1]))return r;let o=new Date(Date.now()+e*1e3).valueOf(),A=1e3,c=A;for(;Date.now()<o&&t(r[r.length-1]);)s++,a&&console.info(`Waiting ${A}ms before trying again (bringing the total wait time to ${c}ms so far, of total ${e*1e3}ms)`),await new Promise(m=>setTimeout(m,A)),A=A*n,new Date(Date.now()+A).valueOf()>o&&(A=o-Date.now(),a&&console.info(`was gonna wait too long; new waitTime: ${A}ms`)),c=A+c,r.push(await i(r[r.length-1])),a&&t(r[r.length-1])&&console.info(`${s}. Called ${i.name}; ${r.length} prev attempts. Most recent: ${JSON.stringify(r[r.length-1],null,2)}`);return r}var Xt=W(require("@project-serum/anchor")),vn=require("@solana/web3.js"),pa=require("big.js");var jn=[{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"uint256",name:"_chainPrecision",type:"uint256"},{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"},{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"},{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"gas",type:"uint256"}],name:"BridgingFeeFromTokens",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"bridgeTransactionCost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"messageTransactionCost",type:"uint256"}],name:"ReceiveFee",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Received",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes32",name:"sendToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"sendAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receiveAmount",type:"uint256"}],name:"Swapped",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{indexed:!1,internalType:"bytes32",name:"message",type:"bytes32"}],name:"TokensReceived",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"addBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract Pool",name:"pool",type:"address"},{internalType:"bytes32",name:"token",type:"bytes32"}],name:"addPool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"canSwap",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"address",name:"tokenAddress",type:"address"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageGasUsage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"hasReceivedMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"}],name:"hasSentMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"hashMessage",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"otherBridgeTokens",outputs:[{internalType:"bool",name:"isSupported",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"otherBridges",outputs:[{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"tokenId",type:"bytes32"}],name:"pools",outputs:[{internalType:"contract Pool",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"processedMessages",outputs:[{internalType:"uint256",name:"isProcessed",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],name:"registerBridge",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"removeBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"sentMessages",outputs:[{internalType:"uint256",name:"isSent",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"}],name:"setAllbridgeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_rebalancer",type:"address"}],name:"setRebalancer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"}],name:"setWormholeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"feeTokenAmount",type:"uint256"}],name:"swapAndBridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"withdrawBridgingFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGasTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}];var qn=[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"address",name:"cctpMessenger_",type:"address"},{internalType:"address",name:"cctpTransmitter_",type:"address"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedExtraGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"RecipientReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"}],name:"TokensSentExtras",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridgeWithWalletAddress",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"changeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getDomainByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint64",name:"nonce",type:"uint64"}],name:"isMessageProcessed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bytes",name:"message",type:"bytes"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"domain",type:"uint32"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}];var X=W(require("@project-serum/anchor")),K=require("@solana/web3.js");async function ue(i,t){return X.utils.token.associatedAddress({mint:t,owner:i})}async function Ue(i){let[t]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("config")],i);return t}async function $n(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("lock"),Uint8Array.from(i)],t);return e}async function ht(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([i])],t);return e}async function et(i){let t=await Ue(i),[e]=await K.PublicKey.findProgramAddress([t.toBuffer()],i);return e}async function ea(i,t){let[e]=await K.PublicKey.findProgramAddress([i.toBuffer()],t);return e}async function tt(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("token"),i.toBytes()],t);return e}async function ta(i,t,e){let[n]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("other_bridge_token"),Buffer.from([i]),t],e);return n}async function Sn(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([i])],t);return e}async function wn(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([i])],t);return e}async function na(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("sent_message"),i],t);return e}async function Cn(i,t,e){let[n]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("user_deposit"),t.toBytes(),i.toBytes()],e);return n}async function aa(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("cctp_bridge"),i.toBytes()],t);return e}async function ia(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("token"),i.toBytes()],t);return e}function ra(i,t){let[e]=K.PublicKey.findProgramAddressSync([X.utils.bytes.utf8.encode("lock"),t.toBuffer()],i);return e}function sa(i,t,e,n){let a=Le("message_transmitter",e),r=Le("token_messenger",n),s=Le("__event_authority",n),o=Le("token_minter",n),A=Le("local_token",n,[t]),c=Le("remote_token_messenger",n,[i.toString()]),m=Le("sender_authority",n);return{messageTransmitterAccount:a,tokenMessenger:r,tokenMessengerEventAuthority:s,tokenMinter:o,localToken:A,remoteTokenMessengerKey:c,authorityPda:m}}function Le(i,t,e=[]){let n=[Buffer.from(X.utils.bytes.utf8.encode(i))];for(let r of e)typeof r=="string"?n.push(Buffer.from(X.utils.bytes.utf8.encode(r))):Array.isArray(r)?n.push(Buffer.from(r)):Buffer.isBuffer(r)?n.push(r):n.push(r.toBuffer());return K.PublicKey.findProgramAddressSync(n,t)[0]}var oa=require("@project-serum/anchor"),_t=require("@solana/web3.js");function Ne(i,t){let e=new _t.Connection(i,"confirmed"),n=new _t.PublicKey(t);return new oa.AnchorProvider(e,{publicKey:n},{preflightCommitment:"confirmed",commitment:"confirmed"})}var le=class{};var Aa=require("@solana/web3.js"),Re=require("big.js"),Bn=W(require("randombytes")),ca=require("stellar-sdk"),ma=W(require("tronweb"));function Ie(i,t,e){let n;switch(t){case"EVM":{n=pi(i);break}case"SOLANA":{n=new Aa.PublicKey(i).toBuffer();break}case"TRX":{n=di(i);break}case"SRB":{n=new ca.Address(i).toBuffer();break}}switch(e){case"EVM":return"0x"+n.toString("hex");case"SOLANA":return Array.from(n);case"TRX":return n.toJSON().data;case"SRB":return n.toJSON().data}}function ua(i){return Buffer.from(i.replace(/^0x/i,""),"hex")}function pi(i){let e=ua(i);return Buffer.concat([Buffer.alloc(32-e.length,0),e],32)}function di(i){let t=Tt(i),e=ua(t);return gi(e,32)}function Tt(i){return Buffer.from(ma.utils.crypto.decodeBase58Address(i)).toString("hex").replace(/^41/,"0x")}function gi(i,t){if(i.length>=t)return i;let e=Buffer.alloc(t,0);return i.copy(e,t-i.length),e}function nt(){return(0,Bn.default)(32)}function kn(){let i=(0,Bn.default)(32).readBigInt64BE();return i<0?i*-1n:i}function Oe(i,t){let e={},n=t.sourceToken;return e.amount=B(t.amount,n.decimals).toFixed(),e.contractAddress=n.bridgeAddress,e.fromAccountAddress=t.fromAccountAddress,e.fromTokenAddress=Ie(n.tokenAddress,i,i),e.toAccountAddress=t.toAccountAddress,e.toTokenAddress=Ie(t.destinationToken.tokenAddress,i,i),e.minimumReceiveAmount=t.minimumReceiveAmount?B(t.minimumReceiveAmount,t.destinationToken.decimals).toFixed():"0",e}async function xe(i,t,e){let n={};n.fromChainId=t.sourceToken.allbridgeChainId,n.fromChainSymbol=t.sourceToken.chainSymbol;let a=z[t.destinationToken.chainSymbol].chainType;n.fromTokenAddress=t.sourceToken.tokenAddress,n.toChainId=t.destinationToken.allbridgeChainId,n.toTokenAddress=t.destinationToken.tokenAddress,t.gasFeePaymentMethod==="stablecoin"?n.gasFeePaymentMethod="stablecoin":n.gasFeePaymentMethod="native";let r=t.sourceToken;if(t.messenger===3){if(!r.cctpAddress||!t.destinationToken.cctpAddress)throw new re("Such route does not support CCTP protocol");n.contractAddress=r.cctpAddress}else n.contractAddress=r.bridgeAddress;n.messenger=t.messenger,n.fromAccountAddress=t.fromAccountAddress,n.amount=B(t.amount,r.decimals).toFixed();let{fee:s,feeFormat:o}=t;if(!s){let u=(await Rn(n.fromChainId,t.sourceToken.chainType,n.toChainId,r.decimals,n.messenger,e))[n.gasFeePaymentMethod];if(!u)throw new ze;s=u.int,o="int"}if(o=="float")switch(n.gasFeePaymentMethod){case"native":n.fee=B(s,V[r.chainType]).toFixed(0);break;case"stablecoin":n.fee=B(s,r.decimals).toFixed(0);break}else n.fee=s;let{extraGas:A,extraGasFormat:c}=t;if(A&&+A>0){if(c=="float")switch(n.gasFeePaymentMethod){case"native":n.extraGas=B(A,V[r.chainType]).toFixed(0);break;case"stablecoin":n.extraGas=B(A,r.decimals).toFixed(0);break}else n.extraGas=A;await yi(n.extraGas,n.gasFeePaymentMethod,r,t.destinationToken,e)}return n.fromTokenAddress=Ie(n.fromTokenAddress,i,i),n.toAccountAddress=Ie(t.toAccountAddress,a,i),n.toTokenAddress=Ie(n.toTokenAddress,a,i),n.gasFeePaymentMethod=="stablecoin"&&fi(n.amount,r.decimals,n.fee,n.extraGas),n}function fi(i,t,e,n){let a=(0,Re.Big)(i).minus(e).minus(n??0);if(a.lte(0))throw new Ve(`Amount not enough to pay fee, ${b((0,Re.Big)(a).minus(1).neg(),t).toFixed()} stables is missing`)}async function Rn(i,t,e,n,a,r){let s=await r.getReceiveTransactionCost({sourceChainId:i,destinationChainId:e,messenger:a}),o={native:{int:s.fee,float:b(s.fee,V[t]).toFixed()}};if(s.sourceNativeTokenPrice){let A=Ee(new Re.Big(s.fee).mul(s.sourceNativeTokenPrice),V[t],n).toFixed(0,Re.Big.roundUp);o.stablecoin={int:A,float:b(A,n).toFixed()}}return o}async function yi(i,t,e,n,a){let s=(await Mn(e,n,a)).extraGasMax[t];if(!s)throw new ze(`Impossible to pay extra gas by '${t}' payment method`);let o=s.int;if((0,Re.Big)(i).gt(o))throw new ut(`Extra gas ${i} in int format, exceeded limit ${o} for '${t}' payment method`)}async function Mn(i,t,e){let n={},a=await e.getReceiveTransactionCost({sourceChainId:i.allbridgeChainId,destinationChainId:t.allbridgeChainId,messenger:1}),r=t.txCostAmount.maxAmount,s=b(r,V[t.chainType]).toFixed(),o=(0,Re.Big)(s).div(a.exchangeRate).toFixed(V[i.chainType],Re.Big.roundDown),A=B(o,V[i.chainType]).toFixed(0);if(n.native={int:A,float:o},a.sourceNativeTokenPrice){let c=(0,Re.Big)(o).mul(a.sourceNativeTokenPrice).toFixed(i.decimals,Re.Big.roundDown);n.stablecoin={int:B(c,i.decimals).toFixed(0),float:c}}return{extraGasMax:n,destinationChain:{gasAmountMax:{int:r,float:s},swap:{int:t.txCostAmount.swap,float:b(t.txCostAmount.swap,V[t.chainType]).toFixed()},transfer:{int:t.txCostAmount.transfer,float:b(t.txCostAmount.transfer,V[t.chainType]).toFixed()}},exchangeRate:a.exchangeRate,sourceNativeTokenPrice:a.sourceNativeTokenPrice}}function la(i){return i.sourceToken.chainSymbol!==i.destinationToken.chainSymbol}var Pt=class extends le{constructor(e,n,a){super();this.web3=e;this.api=n;this.nodeRpcUrlsConfig=a;this.chainType="EVM"}async send(e){let n=await this.buildRawTransactionSend(e);return this.sendRawTransaction(n)}async buildRawTransactionSwap(e){let n=Oe(this.chainType,e);return await this.buildRawTransactionSwapFromParams(n)}async buildRawTransactionSwapFromParams(e){let{amount:n,contractAddress:a,fromAccountAddress:r,fromTokenAddress:s,toAccountAddress:o,toTokenAddress:A,minimumReceiveAmount:c}=e,u=this.getBridgeContract(a).methods.swap(n,s,A,o,c);return Promise.resolve({from:r,to:a,data:u.encodeABI()})}async buildRawTransactionSend(e){let n=await xe(this.chainType,e,this.api),{amount:a,contractAddress:r,fromAccountAddress:s,fromTokenAddress:o,toChainId:A,toAccountAddress:c,toTokenAddress:m,messenger:u,fee:g,gasFeePaymentMethod:f,extraGas:y}=n,h="0x"+nt().toString("hex"),d,p,P=g;if(y&&(P=(0,pa.Big)(P).plus(y).toFixed()),u===3){let T=await this.buildRawTransactionCctpSend(e,n,P);d=T.sendMethod,p=T.value}else{let T=this.getBridgeContract(r);f==="stablecoin"?(d=T.methods.swapAndBridge(o,a,c,A,m,h,u,P),p="0"):(d=T.methods.swapAndBridge(o,a,c,A,m,h,u,0),p=P)}return Promise.resolve({from:s,to:r,value:p,data:d.encodeABI()})}async buildRawTransactionCctpSend(e,n,a){let{amount:r,contractAddress:s,toChainId:o,toAccountAddress:A,gasFeePaymentMethod:c}=n,m=this.getContract(qn,s),u,g;if(e.destinationToken.chainType==="SOLANA"){let f,y=new vn.PublicKey(e.toAccountAddress),h=new vn.PublicKey(e.destinationToken.tokenAddress),d=await ue(y,h),p=Ne(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),e.toAccountAddress);Xt.setProvider(p);let P=await Xt.Spl.token(p).account.token.fetchNullable(d);if(P?.authority.equals(y))f=Ie(d.toBase58(),"SOLANA",this.chainType);else{let T=await p.connection.getTokenAccountsByOwner(y,{mint:h});if(T.value.length===0&&!P)f=Ie(d.toBase58(),"SOLANA",this.chainType);else if(T.value.length>0)f=Ie(T.value[0].pubkey.toBase58(),"SOLANA",this.chainType);else throw new k("Associated account has wrong owner")}c==="stablecoin"?(u=m.methods.bridgeWithWalletAddress(r,f,A,o,a),g="0"):(u=m.methods.bridgeWithWalletAddress(r,f,A,o,0),g=a)}else c==="stablecoin"?(u=m.methods.bridge(r,A,o,a),g="0"):(u=m.methods.bridge(r,A,o,0),g=a);return{sendMethod:u,value:g}}async sendRawTransaction(e){let n=await this.web3.eth.estimateGas(e),a={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:r}=await this.web3.eth.sendTransaction({...e,gas:n,...a});return{txId:r}}getContract(e,n){return new this.web3.eth.Contract(e,n)}getBridgeContract(e){return this.getContract(jn,e)}};var Kt=class{constructor(t,e,n,a){this.api=t;this.nodeRpcUrlsConfig=e;this.params=n;this.tokenService=a}async approve(t,e){let n,a;e?(n=t,a=e):a=t;let r=St(a.token,a.messenger);return this.tokenService.buildRawTransactionApprove({...a,spender:r},n)}async send(t,e){return v(t.amount),I("amount",t.amount,t.sourceToken.decimals),la(t)?Qt(t.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,e).buildRawTransactionSend(t):Qt(t.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,e).buildRawTransactionSwap(t)}};var x=require("@project-serum/anchor"),C=require("@solana/web3.js"),De=require("big.js");var wt={version:"0.1.0",name:"bridge",instructions:[{name:"initialize",accounts:[{name:"admin",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializePool",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"token",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializePoolArgs"}}]},{name:"initDepositAccount",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"deposit",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdraw",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amountLp",type:"u64"}]},{name:"swapAndBridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"messenger",isMut:!1,isSigner:!1},{name:"messengerConfig",isMut:!0,isSigner:!1},{name:"sentMessageAccount",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swapAndBridgeWormhole",accounts:[{name:"user",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"wormholeMessenger",isMut:!1,isSigner:!1},{name:"wormholeMessengerConfig",isMut:!0,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"bridge",isMut:!0,isSigner:!1},{name:"message",isMut:!0,isSigner:!0},{name:"sequence",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swap",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"sendMint",isMut:!1,isSigner:!1},{name:"receiveMint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"sendPool",isMut:!0,isSigner:!1},{name:"receivePool",isMut:!0,isSigner:!1},{name:"sendBridgeToken",isMut:!0,isSigner:!1},{name:"receiveBridgeToken",isMut:!0,isSigner:!1},{name:"sendUserToken",isMut:!0,isSigner:!1},{name:"receiveUserToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"},{name:"receiveAmountMin",type:"u64"}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"receiveAndSwap",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"receiveAndSwapWormhole",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"claimRewards",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAdmin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAdmin",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"startBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"stopBridge",accounts:[{name:"stopAuthority",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"setRebalancer",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"rebalancer",isMut:!1,isSigner:!1}],args:[]},{name:"setStopAuthority",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAuthority",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"setAllbridgeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setWormholeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setPoolFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setBalanceRatioMin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"balanceRatioMinBp",type:"u16"}]},{name:"setPoolAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"addOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"removeOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"adjustTotalLpAmount",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"chainBridge",type:{kind:"struct",fields:[{name:"address",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"config",type:{kind:"struct",fields:[{name:"admin",type:"publicKey"},{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"rebalancer",type:"publicKey"},{name:"stopAuthority",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"canSwap",type:"bool"},{name:"canDeposit",type:"bool"},{name:"canWithdraw",type:"bool"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"sentTokenAddress",type:"publicKey"},{name:"amount",type:"u64"},{name:"vusdAmount",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"nonce",type:{array:["u8",32]}},{name:"messenger",type:{defined:"Messenger"}},{name:"slot",type:"u64"},{name:"fee",type:"u64"}]}},{name:"otherBridgeToken",type:{kind:"struct",fields:[]}},{name:"pool",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"a",type:"u64"},{name:"d",type:"u64"},{name:"tokenBalance",type:"u64"},{name:"vUsdBalance",type:"u64"},{name:"reserves",type:"u64"},{name:"decimals",type:"u8"},{name:"totalLpAmount",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"accRewardPerShareP",type:"u128"},{name:"adminFeeAmount",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"unlock",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"fee",type:"u64"},{name:"vUsdAmount",type:"u64"},{name:"slot",type:"u64"}]}},{name:"userDeposit",type:{kind:"struct",fields:[{name:"userAddress",type:"publicKey"},{name:"mint",type:"publicKey"},{name:"lpAmount",type:"u64"},{name:"rewardDebt",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"}]}},{name:"InitializePoolArgs",type:{kind:"struct",fields:[{name:"a",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"vusdAmount",type:"u64"}]}},{name:"UnlockArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"recipient",type:"publicKey"},{name:"sourceChainId",type:"u8"},{name:"receiveToken",type:"publicKey"},{name:"messenger",type:{defined:"Messenger"}},{name:"hash",type:{array:["u8",32]}},{name:"receiveAmountMin",type:"u64"}]}},{name:"RewardError",type:{kind:"enum",variants:[{name:"FeeTooHigh"}]}},{name:"Messenger",type:{kind:"enum",variants:[{name:"None"},{name:"Allbridge"},{name:"Wormhole"}]}},{name:"ActionType",type:{kind:"enum",variants:[{name:"Deposit"},{name:"Withdraw"},{name:"Swap"}]}}],errors:[{code:6e3,name:"AccountAlreadyInitialized",msg:"This account has already been initialized"},{code:6001,name:"AdminAuthorityInvalid",msg:"This instruction requires admin authority"},{code:6002,name:"InvalidSignature",msg:"Provided signature has wrong signer or message"},{code:6003,name:"InvalidHash",msg:"Wrong unlock message hash"},{code:6004,name:"PoolOverflow",msg:"PoolInfo overflow"},{code:6005,name:"ReservesExhausted",msg:"Reserves exhausted"},{code:6006,name:"ZeroAmount",msg:"Zero amount"},{code:6007,name:"ZeroChanges",msg:"Zero changes"},{code:6008,name:"HighVusdAmount",msg:"vUSD amount is too high"},{code:6009,name:"BalanceRatioExceeded",msg:"Balance ratio exceeded"},{code:6010,name:"InsufficientReceivedAmount",msg:"Received insufficient amount"},{code:6011,name:"ForbiddenAction",msg:"ForbiddenAction"},{code:6012,name:"ValueTooHigh",msg:"Value is too high"}]};var da={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 ga=require("@project-serum/anchor"),fa=W(require("big.js")),Ct=W(require("web3"));async function at(i,t){return await ga.Spl.token(t).account.token.fetch(i)}async function ya(i,t,e){let n=await t.account.pool.fetch(e),a=n.decimals,r=(0,fa.default)(n.feeShareBp.toString()).div(1e4).toFixed(),s={aValue:n.a.toString(),dValue:n.d.toString(),totalLpAmount:n.totalLpAmount.toString(),tokenBalance:n.tokenBalance.toString(),vUsdBalance:n.vUsdBalance.toString(),accRewardPerShareP:n.accRewardPerShareP.toString()};return Ce(i,{decimals:a,feeShare:r},s)}function ha(i){let t=i.amount,e="0x"+i.recipient.toString("hex"),n=i.sourceChainId,a=i.destinationChainId,r="0x"+i.receiveToken.toString("hex"),s="0x"+i.nonce.toString("hex"),o=1,A="0x"+i.chainBridge.toString("hex"),c=Ct.default.utils.encodePacked({t:"uint256",v:t},{t:"bytes32",v:e},{t:"uint256",v:n},{t:"bytes32",v:r},{t:"uint256",v:s},{t:"uint8",v:o});if(!c)throw new k("message cannot be undefined");let m=Ct.default.utils.keccak256(Buffer.from(c.replace("0x",""),"hex")),u=Buffer.from(m.replace("0x",""),"hex");u[0]=n,u[1]=a;let g=Ct.default.utils.encodePacked({t:"bytes32",v:"0x"+u.toString("hex")},{t:"bytes32",v:A});if(!g)throw new Ge("messageWithSigner cannot be undefined");let f=Ct.default.utils.keccak256(Buffer.from(g.replace("0x",""),"hex")),y=Buffer.from(f.replace("0x",""),"hex");return y[0]=u[0],y[1]=u[1],y}var ne=require("@solana/web3.js"),Ta=require("big.js");var In=require("@solana/web3.js");async function Xe(i,t){return await Promise.all(i.message.addressTableLookups.map(async e=>new In.AddressLookupTableAccount({key:e.accountKey,state:In.AddressLookupTableAccount.deserialize(await t.getAccountInfo(e.accountKey).then(n=>{if(!n)throw new k("Cannot get AccountInfo");return n.data}))})))}var Yt="AUTO";async function it(i,t,e){let n=new ne.Connection(e,"confirmed"),a=(await n.simulateTransaction(i)).value.unitsConsumed;await Pa(i.instructions,a,t,n)}async function ba(i,t,e){let n=new ne.Connection(e,"confirmed"),a=await Xe(i,n),r=ne.TransactionMessage.decompile(i.message,{addressLookupTableAccounts:a});if(i.serialize().length>1232)throw new dt;await Pa(r.instructions,769230,t,n),i.message=r.compileToV0Message(a)}async function Pa(i,t,e,n){if(t>0){let a=hi(t,i);if(e?.solana){let r=e.solana;if(r===Yt)await xn(i,n);else if("pricePerUnitInMicroLamports"in r)await xn(i,n,r.pricePerUnitInMicroLamports);else{let s=(0,Ta.Big)(r.extraFeeInLamports).div(a).mul(gt(6)).toFixed(0);await xn(i,n,s)}}}}function hi(i,t){let e=t.findIndex(r=>r.programId.equals(ne.ComputeBudgetProgram.programId)&&ne.ComputeBudgetInstruction.decodeInstructionType(r)==="SetComputeUnitLimit"),n=Number((i*1.3).toFixed(0)),a=ne.ComputeBudgetProgram.setComputeUnitLimit({units:n});return e>=0?t[e]=a:t.push(a),n.toString()}async function xn(i,t,e){let n=i.findIndex(s=>s.programId.equals(ne.ComputeBudgetProgram.programId)&&ne.ComputeBudgetInstruction.decodeInstructionType(s)==="SetComputeUnitPrice"),a=BigInt(e||await Ti(t)),r=ne.ComputeBudgetProgram.setComputeUnitPrice({microLamports:a});return n>=0?i[n]=r:i.push(r),a.toString()}async function Ti(i){let t=await i.getRecentPrioritizationFees(),e=0;for(let n of t)e+=n.prioritizationFee;return(e/t.length).toFixed(0)}var Sa=require("@solana/spl-token"),Ke=require("@solana/web3.js"),rt=W(require("axios"));var Jt=class{constructor(t){this.connection=new Ke.Connection(t)}async getJupiterSwapTx(t,e,n){let a;try{a=await rt.default.get(`https://quote-api.jup.ag/v6/quote?inputMint=${e}
|
|
2
|
+
&outputMint=${Sa.NATIVE_MINT.toString()}
|
|
3
3
|
&amount=${n}
|
|
4
4
|
&slippageBps=100
|
|
5
|
-
&onlyDirectRoutes=true`)}catch(A){throw A instanceof it.AxiosError&&A.response&&A.response.data&&A.response.data.error?new Y(A.response.data.error):new Y("Cannot get route")}let r;try{r=await it.default.post("https://quote-api.jup.ag/v6/swap",JSON.stringify({quoteResponse:a.data,userPublicKey:t,wrapAndUnwrapSol:!0}))}catch(A){throw A instanceof it.AxiosError&&A.response&&A.response.data&&A.response.data.error?new Y(A.response.data.error):new Y("Cannot get swap transaction")}let s;if(r?.data?.swapTransaction)s=r.data.swapTransaction;else throw new Y("Cannot get swap transaction");let o=Buffer.from(s,"base64");return{tx:Ke.VersionedTransaction.deserialize(o)}}async amendJupiterWithSdkTx(t,e){try{let n=await Xe(t,this.connection),a=await Xe(e,this.connection),r=Ke.TransactionMessage.decompile(t.message,{addressLookupTableAccounts:n}),s=Ke.TransactionMessage.decompile(e.message,{addressLookupTableAccounts:a});return s.instructions.shift(),r.instructions.push(...s.instructions),n.push(...a),t.message=r.compileToV0Message(n),e.message.header.numRequiredSignatures===2&&t.signatures.length===1&&t.signatures.push(e.signatures[0]),t}catch(n){throw n instanceof Error&&n.message?new Y(`Some error occurred during creation final swap and bridge transaction. ${n.message}`):new Y("Some error occurred during creation final swap and bridge transaction")}}};var xn=1e6,Ht=class extends le{constructor(e,n,a){super();this.solanaRpcUrl=e;this.params=n;this.api=a;this.chainType="SOLANA";this.jupiterService=new Jt(e)}async buildRawTransactionSwap(e){let n=Oe(this.chainType,e);return await this.buildSwapTransaction(n,e.sourceToken.poolAddress,e.destinationToken.poolAddress,e.txFeeParams)}async buildSwapTransaction(e,n,a,r){let{fromAccountAddress:s,amount:o,contractAddress:A,fromTokenAddress:c,toTokenAddress:m,toAccountAddress:u,minimumReceiveAmount:g}=e,f=s,y=A,h=c,d=m,p=a,P=u,T=new C.PublicKey(f),L=Ne(this.solanaRpcUrl,T.toString()),M=new x.Program(Ct,y,L),S=await $e(M.programId),q=await Ue(M.programId),N=new C.PublicKey(h),Te=await et(N,M.programId),be=new C.PublicKey(n),ve=await ue(T,N),oe=new C.PublicKey(P),H=new C.PublicKey(d),ie=await et(H,M.programId),Ae=new C.PublicKey(p),$=await ue(oe,H),Pe=[x.web3.ComputeBudgetProgram.setComputeUnitLimit({units:xn})];try{await nt($,L)}catch{let Xa=await x.Spl.associatedToken(L).methods.create().accounts({mint:H,owner:oe,associatedAccount:$}).instruction();Pe.push(Xa)}let Se=await M.methods.swap(new x.BN(o),new x.BN(g||0)).accounts({payer:T,config:q,bridgeAuthority:S,user:T,sendBridgeToken:Te,sendMint:N,sendPool:be,sendUserToken:ve,receiveBridgeToken:ie,receiveMint:H,receivePool:Ae,receiveUserToken:$}).preInstructions(Pe).transaction(),ce=L.connection;return Se.recentBlockhash=(await ce.getLatestBlockhash()).blockhash,Se.feePayer=T,await at(Se,r,this.solanaRpcUrl),await this.convertToVersionedTransaction(Se,ce)}async buildRawTransactionSend(e){let n=await xe(this.chainType,e,this.api),a=this.addPoolAddress(e,n),r=a.gasFeePaymentMethod=="stablecoin",s;if(r)try{let c=(0,De.Big)(a.fee);a.extraGas&&(c=c.plus(a.extraGas)),a=await this.convertStableCoinFeeAndExtraGasToNativeCurrency(e.sourceToken.decimals,a);let{tx:m}=await this.jupiterService.getJupiterSwapTx(e.fromAccountAddress,e.sourceToken.tokenAddress,c.toFixed(0));if(s=m,a.amount=(0,De.Big)(a.amount).minus(c).toFixed(0),(0,De.Big)(a.amount).lte(0))throw new Ve(`Amount not enough to pay fee, ${b((0,De.Big)(a.amount).minus(1).neg(),e.sourceToken.decimals).toFixed()} stables is missing`)}catch(c){throw c instanceof F?c:c instanceof Error&&c.message?new Y(`Some error occurred during creation Jupiter swap transaction. ${c.message}`):new Y("Some error occurred during creation Jupiter swap transaction")}let o,A;switch(n.messenger){case 1:{let c=await this.prepareSwapAndBridgeData(a);o=await this.buildSwapAndBridgeAllbridgeTransaction(c);break}case 2:{let c=await this.prepareSwapAndBridgeData(a),{transaction:m,messageAccount:u}=await this.buildSwapAndBridgeWormholeTransaction(c);o=m,A=u;break}case 3:{let c=await this.prepareSwapAndBridgeCctpData(a),{transaction:m,messageSentEventDataKeypair:u}=await this.buildSwapAndBridgeCctpTransaction(e.destinationToken.chainSymbol,c);o=m,A=u;break}}if(r){if(!s)throw new Y("Swap tx is absent");o=await this.jupiterService.amendJupiterWithSdkTx(s,o)}return await Ta(o,e.txFeeParams,this.solanaRpcUrl),A&&o.sign([A]),o}addPoolAddress(e,n){return{...n,poolAddress:e.sourceToken.poolAddress}}async convertStableCoinFeeAndExtraGasToNativeCurrency(e,n){if(n.gasFeePaymentMethod=="stablecoin"){let a=(await this.api.getReceiveTransactionCost({sourceChainId:n.fromChainId,destinationChainId:n.toChainId,messenger:n.messenger})).sourceNativeTokenPrice;n.fee=(0,De.Big)(n.fee).div(a).mul((0,De.Big)(10).pow(V.SOLANA-e)).toFixed(0),n.extraGas&&(n.extraGas=(0,De.Big)(n.extraGas).div(a).mul((0,De.Big)(10).pow(V.SOLANA-e)).toFixed(0)),n.gasFeePaymentMethod="native"}return n}getExtraGasInstruction(e,n,a){return x.web3.SystemProgram.transfer({fromPubkey:n,toPubkey:a,lamports:+e})}async prepareSwapAndBridgeData(e){let{amount:n,contractAddress:a,fromChainId:r,fromAccountAddress:s,fromTokenAddress:o,toChainId:A,toAccountAddress:c,toTokenAddress:m,poolAddress:u,extraGas:g}=e,f=o,y=s,h=A,d=m,p=c,P=a,T=r,L=Ne(this.solanaRpcUrl,y),M=new x.Program(Ct,P,L),S=Array.from(tt()),q=new C.PublicKey(u),N=await fa(n,M,q),Te=await qn(S,M.programId),be=await $e(M.programId),ve=await ue(new C.PublicKey(y),new C.PublicKey(f)),oe=await et(new C.PublicKey(f),M.programId),H=await Pn(h,M.programId),ie=await ea(h,Buffer.from(d),M.programId),Ae=await Ue(M.programId),$=await M.account.config.fetch(Ae),Pe=await Tt(h,$.gasOracleProgramId),Se=await Tt(T,$.gasOracleProgramId),ce=ya({amount:N,recipient:Buffer.from(p),nonce:Buffer.from(S),receiveToken:Buffer.from(d),destinationChainId:h,sourceChainId:T,chainBridge:(await $e(M.programId)).toBuffer()}),w={};return w.bridge=M,w.amount=new x.BN(n),w.vusdAmount=new x.BN(N),w.nonce=S,w.recipient=Array.from(p),w.receiveToken=Array.from(d),w.poolAccount=q,w.lockAccount=Te,w.bridgeAuthority=be,w.userToken=ve,w.bridgeTokenAccount=oe,w.chainBridgeAccount=H,w.otherBridgeTokenAccount=ie,w.userAccount=new C.PublicKey(y),w.destinationChainId=h,w.mint=new C.PublicKey(f),w.config=Ae,w.configAccountInfo=$,w.gasPrice=Pe,w.thisGasPrice=Se,w.message=ce,g&&(w.extraGasInstruction=this.getExtraGasInstruction(g,w.userAccount,Ae)),w}async buildSwapAndBridgeAllbridgeTransaction(e){let{bridge:n,vusdAmount:a,nonce:r,recipient:s,receiveToken:o,poolAccount:A,lockAccount:c,bridgeAuthority:m,userToken:u,bridgeTokenAccount:g,chainBridgeAccount:f,otherBridgeTokenAccount:y,userAccount:h,destinationChainId:d,mint:p,config:P,configAccountInfo:T,gasPrice:L,thisGasPrice:M,message:S,extraGasInstruction:q}=e,N=T.allbridgeMessengerProgramId,Te=await Sn(d,N),be=await Ue(N),ve=await ta(S,N),oe=[];q&&oe.push(q);let H=await n.methods.swapAndBridge({vusdAmount:a,nonce:r,destinationChainId:d,recipient:s,receiveToken:o}).accounts({mint:p,user:h,config:P,lock:c,pool:A,gasPrice:L,thisGasPrice:M,bridgeAuthority:m,userToken:u,bridgeToken:g,chainBridge:f,messenger:N,messengerGasUsage:Te,messengerConfig:be,sentMessageAccount:ve,otherBridgeToken:y}).preInstructions([x.web3.ComputeBudgetProgram.setComputeUnitLimit({units:xn})]).postInstructions(oe).transaction(),ie=Ne(this.solanaRpcUrl,h.toString()).connection;return H.recentBlockhash=(await ie.getLatestBlockhash()).blockhash,H.feePayer=h,await this.convertToVersionedTransaction(H,ie)}async convertToVersionedTransaction(e,n){let a=await n.getAddressLookupTable(new C.PublicKey(this.params.solanaLookUpTable)).then(s=>s.value);if(!a)throw new k("Cannot find allbridgeLookupTableAccount");let r=new x.web3.TransactionMessage({payerKey:e.feePayer,recentBlockhash:e.recentBlockhash,instructions:e.instructions}).compileToV0Message([a]);return new x.web3.VersionedTransaction(r)}async buildSwapAndBridgeWormholeTransaction(e){let{bridge:n,vusdAmount:a,nonce:r,recipient:s,receiveToken:o,poolAccount:A,lockAccount:c,bridgeAuthority:m,userToken:u,bridgeTokenAccount:g,chainBridgeAccount:f,otherBridgeTokenAccount:y,userAccount:h,destinationChainId:d,mint:p,config:P,configAccountInfo:T,gasPrice:L,thisGasPrice:M,message:S,extraGasInstruction:q}=e,N=this.params.wormholeMessengerProgramId,[Te]=C.PublicKey.findProgramAddressSync([Buffer.from("Bridge")],new C.PublicKey(N)),[be]=C.PublicKey.findProgramAddressSync([Buffer.from("fee_collector")],new C.PublicKey(N)),[ve]=C.PublicKey.findProgramAddressSync([Buffer.from("Sequence"),m.toBuffer()],new C.PublicKey(N)),oe=await Sn(d,T.wormholeMessengerProgramId),H=await Ue(T.wormholeMessengerProgramId),ie=C.Keypair.generate(),Ae=Ne(this.solanaRpcUrl,h.toString()),$=await Ae.connection.getAccountInfo(Te);if($==null)throw new k("Cannot fetch wormhole bridge account info");let Pe=new x.BN($.data.slice(16,24),"le").toString(),Se=C.SystemProgram.transfer({fromPubkey:h,toPubkey:be,lamports:+Pe}),ce=[];q&&ce.push(q);let w={mint:p,user:h,config:P,lock:c,pool:A,gasPrice:L,thisGasPrice:M,bridgeAuthority:m,userToken:u,bridgeToken:g,chainBridge:f,otherBridgeToken:y,messengerGasUsage:oe,wormholeProgram:N,bridge:Te,message:ie.publicKey,wormholeMessenger:T.wormholeMessengerProgramId,sequence:ve,feeCollector:be,wormholeMessengerConfig:H,clock:x.web3.SYSVAR_CLOCK_PUBKEY},Ut=await n.methods.swapAndBridgeWormhole({vusdAmount:a,nonce:r,destinationChainId:d,recipient:s,receiveToken:o}).accounts(w).preInstructions([x.web3.ComputeBudgetProgram.setComputeUnitLimit({units:xn}),Se]).postInstructions(ce).signers([ie]).transaction();return Ut.recentBlockhash=(await Ae.connection.getLatestBlockhash()).blockhash,Ut.feePayer=h,{transaction:await this.convertToVersionedTransaction(Ut,Ae.connection),messageAccount:ie}}async prepareSwapAndBridgeCctpData(e){let{contractAddress:n,amount:a,fromAccountAddress:r,fromTokenAddress:s,toChainId:o,toAccountAddress:A,toTokenAddress:c,extraGas:m}=e,u=n;if(!u)throw new re("Such route does not support CCTP protocol");let g=4,f=r,y=c,h=A,d=Ne(this.solanaRpcUrl,f),p=new x.Program(pa,u,d),P=new C.PublicKey(s),T=await na(P,p.programId),L=new C.PublicKey(f),M=await p.account.cctpBridge.fetch(T),S={};return S.cctpBridge=p,S.cctpBridgeAccount=T,S.cctpAddressAccount=new C.PublicKey(u),S.amount=new x.BN(a),S.recipient=Array.from(h),S.receiveToken=Array.from(y),S.userToken=await ue(L,P),S.bridgeAuthority=await $n(T,p.programId),S.bridgeTokenAccount=await aa(P,p.programId),S.chainBridgeAccount=await Pn(o,p.programId),S.userAccount=L,S.destinationChainId=o,S.mint=P,S.gasPrice=await Tt(o,M.gasOracleProgramId),S.thisGasPrice=await Tt(g,M.gasOracleProgramId),S.provider=d,m&&(S.extraGasInstruction=this.getExtraGasInstruction(m,S.userAccount,T)),S}async buildSwapAndBridgeCctpTransaction(e,n){let{cctpBridge:a,cctpBridgeAccount:r,amount:s,recipient:o,receiveToken:A,bridgeAuthority:c,userToken:m,bridgeTokenAccount:u,chainBridgeAccount:g,userAccount:f,destinationChainId:y,mint:h,gasPrice:d,thisGasPrice:p,extraGasInstruction:P,provider:T}=n,L=this.params.cctpParams.cctpDomains[e],M=this.params.cctpParams.cctpTransmitterProgramId,S=this.params.cctpParams.cctpTokenMessengerMinter;if(L==null||!M||!S)throw new k("CCTP is not configured");let q=new C.PublicKey(M),N=new C.PublicKey(S),{messageTransmitterAccount:Te,tokenMessenger:be,tokenMessengerEventAuthority:ve,tokenMinter:oe,localToken:H,remoteTokenMessengerKey:ie,authorityPda:Ae}=ra(L,h,q,N),$=[];P&&$.push(P);let Pe=C.Keypair.generate(),Se=ia(a.programId,Pe.publicKey),ce=await a.methods.bridge({amount:s,destinationChainId:y,recipient:o,receiveToken:A}).accounts({mint:h,user:f,cctpBridge:r,messageSentEventData:Pe.publicKey,lock:Se,cctpMessenger:N,messageTransmitterProgram:q,messageTransmitterAccount:Te,tokenMessenger:be,tokenMinter:oe,localToken:H,remoteTokenMessengerKey:ie,authorityPda:Ae,eventAuthority:ve,bridgeToken:u,gasPrice:d,thisGasPrice:p,chainBridge:g,userToken:m,bridgeAuthority:c}).preInstructions([x.web3.ComputeBudgetProgram.setComputeUnitLimit({units:2e6})]).postInstructions($).transaction(),w=T.connection;return ce.recentBlockhash=(await w.getLatestBlockhash()).blockhash,ce.feePayer=f,{transaction:await this.convertToVersionedTransaction(ce,w),messageSentEventDataKeypair:Pe}}send(e){throw new J}};var wa=require("big.js"),zt=require("stellar-sdk");var Qe=require("stellar-sdk");var Q=require("stellar-sdk");var pe=class{constructor(t){this.value=t}unwrapErr(){throw new Error("No error")}unwrap(){return this.value}isOk(){return!0}isErr(){return!this.isOk()}},se=class{constructor(t){this.error=t}unwrapErr(){return this.error}unwrap(){throw new Error(this.error.message)}isOk(){return!1}isErr(){return!this.isOk()}},Ti=/Error\(Contract, #(\d+)\)/,bi="GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF",E=class i{constructor(t){this.options=t;this.simulate=async()=>(this.simulation=await this.server.simulateTransaction(this.raw),Q.SorobanRpc.Api.isSimulationSuccess(this.simulation)&&(this.raw=Q.SorobanRpc.assembleTransaction(this.raw,this.simulation).build()),this);this.getAccount=()=>new Q.Account(bi,"0");this.server=new Q.SorobanRpc.Server(this.options.rpcUrl,{allowHttp:this.options.rpcUrl.startsWith("http://")})}static async fromSimulation(t){let e=new i(t),n=new Q.Contract(t.contractId);return e.raw=new Q.TransactionBuilder(e.getAccount(),{fee:t.fee?.toString(10)??Q.BASE_FEE,networkPassphrase:t.networkPassphrase}).addOperation(n.call(t.method,...t.args??[])).setTimeout(Q.TimeoutInfinite).build(),await e.simulate()}get simulationData(){if(this.simulationResult&&this.simulationTransactionData)return{result:this.simulationResult,transactionData:this.simulationTransactionData};let t=this.simulation;if(Q.SorobanRpc.Api.isSimulationError(t))throw new Error(`Transaction simulation failed: "${t.error}"`);if(!t.result)throw new Error(`Expected an invocation simulation, but got no 'result' field. Simulation: ${JSON.stringify(t,null,2)}`);return this.simulationResult=t.result,this.simulationTransactionData=t.transactionData.build(),{result:this.simulationResult,transactionData:this.simulationTransactionData}}get result(){try{return this.options.parseResultXdr(this.simulationData.result.retval)}catch(t){let e=this.parseError(t.toString());if(e)return e;throw t}}parseError(t){if(!this.options.errorTypes)return;let e=t.match(Ti);if(!e)return;let n=parseInt(e[1],10),a=this.options.errorTypes[n];if(a.message)return new se(a)}};var Z=require("stellar-sdk");var Fe=class i{constructor(t){this.options=t;this.simulate=async()=>(this.simulation=await this.server.simulateTransaction(this.raw),Z.SorobanRpc.Api.isSimulationSuccess(this.simulation)&&(this.raw=Z.SorobanRpc.assembleTransaction(this.raw,this.simulation).build()),this);this.server=new Z.SorobanRpc.Server(this.options.rpcUrl,{allowHttp:this.options.rpcUrl.startsWith("http://")})}static async xdrFromSimulation(t){let e=new i(t),n=new Z.Contract(t.contractId);e.raw=new Z.TransactionBuilder(await e.server.getAccount(t.account),{fee:t.fee?.toString(10)??Z.BASE_FEE,networkPassphrase:t.networkPassphrase}).addOperation(n.call(t.method,...t.args??[])).setTimeout(Z.TimeoutInfinite).build();let a=await e.simulate(),r=a.raw.operations[0];return a.raw=new Z.TransactionBuilder(await e.server.getAccount(t.account),{fee:a.raw.fee,networkPassphrase:t.networkPassphrase}).setTimeout(Z.TimeoutInfinite).addOperation(Z.Operation.invokeHostFunction({...r,auth:r.auth??[]})).build(),await a.simulate(),a.raw.toXDR()}};var Sa={0:{message:""},1:{message:""},2:{message:""},3:{message:""},4:{message:""},5:{message:""},6:{message:""},7:{message:""},8:{message:""},9:{message:""},103:{message:""},104:{message:""},105:{message:""},106:{message:""},107:{message:""},108:{message:""},109:{message:""},203:{message:""},204:{message:""},205:{message:""},206:{message:""},207:{message:""},208:{message:""},209:{message:""},210:{message:""},211:{message:""},212:{message:""},214:{message:""},215:{message:""},216:{message:""},217:{message:""},218:{message:""},300:{message:""},301:{message:""},302:{message:""},303:{message:""},400:{message:""}},kt=class{constructor(t){this.options=t;this.parsers={swapAndBridge:t=>t instanceof se?t:new pe(this.spec.funcResToNative("swap_and_bridge",t)),swap:t=>t instanceof se?t:new pe(this.spec.funcResToNative("swap",t))};this.swapAndBridge=async({sender:t,token:e,amount:n,recipient:a,destination_chain_id:r,receive_token:s,nonce:o,gas_amount:A,fee_token_amount:c},m={})=>await Fe.xdrFromSimulation({method:"swap_and_bridge",args:this.spec.funcArgsToScVals("swap_and_bridge",{sender:new Qe.Address(t),token:new Qe.Address(e),amount:n,recipient:a,destination_chain_id:r,receive_token:s,nonce:o,gas_amount:A,fee_token_amount:c}),account:t,...m,...this.options,errorTypes:Sa,parseResultXdr:this.parsers.swapAndBridge});this.swap=async({sender:t,amount:e,token:n,receive_token:a,recipient:r,receive_amount_min:s},o={})=>await Fe.xdrFromSimulation({method:"swap",args:this.spec.funcArgsToScVals("swap",{sender:new Qe.Address(t),amount:e,token:n,receive_token:a,recipient:new Qe.Address(r),receive_amount_min:s}),account:t,...o,...this.options,errorTypes:Sa,parseResultXdr:this.parsers.swap});this.spec=new Qe.ContractSpec(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAApnYXNfb3JhY2xlAAAAAAATAAAAAAAAAAxuYXRpdmVfdG9rZW4AAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9hbmRfYnJpZGdlAAAAAAkAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACXJlY2lwaWVudAAAAAAAA+4AAAAgAAAAAAAAABRkZXN0aW5hdGlvbl9jaGFpbl9pZAAAAAQAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAFbm9uY2UAAAAAAAAMAAAAAAAAAApnYXNfYW1vdW50AAAAAAAKAAAAAAAAABBmZWVfdG9rZW5fYW1vdW50AAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOcmVjZWl2ZV90b2tlbnMAAAAAAAkAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAA9zb3VyY2VfY2hhaW5faWQAAAAABAAAAAAAAAANcmVjZWl2ZV90b2tlbgAAAAAAA+4AAAAgAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAAAAAAJY2xhaW1hYmxlAAAAAAAAAQAAAAAAAAAJZXh0cmFfZ2FzAAAAAAAD6AAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAEc3dhcAAAAAYAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAA+4AAAAgAAAAAAAAAA1yZWNlaXZlX3Rva2VuAAAAAAAD7gAAACAAAAAAAAAACXJlY2lwaWVudAAAAAAAABMAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAJc3RvcF9zd2FwAAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc3RhcnRfc3dhcAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X2dhc19vcmFjbGUAAAAAAAEAAAAAAAAAC25ld19hZGRyZXNzAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X3JlYmFsYW5jZXIAAAAAAAEAAAAAAAAACnJlYmFsYW5jZXIAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X21lc3NlbmdlcgAAAAAAAAEAAAAAAAAACW1lc3NlbmdlcgAAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X2dhc191c2FnZQAAAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAJZ2FzX3VzYWdlAAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAPcmVnaXN0ZXJfYnJpZGdlAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAOYnJpZGdlX2FkZHJlc3MAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAQYWRkX2JyaWRnZV90b2tlbgAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAANdG9rZW5fYWRkcmVzcwAAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATcmVtb3ZlX2JyaWRnZV90b2tlbgAAAAACAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAIYWRkX3Bvb2wAAAACAAAAAAAAAARwb29sAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATd2l0aGRyYXdfZ2FzX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAfd2l0aGRyYXdfYnJpZGdpbmdfZmVlX2luX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAVaGFzX3Byb2Nlc3NlZF9tZXNzYWdlAAAAAAAAAQAAAAAAAAAHbWVzc2FnZQAAAAPuAAAAIAAAAAEAAAPpAAAAAQAAAAM=","AAAAAAAAAAAAAAAUaGFzX3JlY2VpdmVkX21lc3NhZ2UAAAABAAAAAAAAAAdtZXNzYWdlAAAAA+4AAAAgAAAAAQAAA+kAAAABAAAAAw==","AAAAAAAAAAAAAAAQZ2V0X3Bvb2xfYWRkcmVzcwAAAAEAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAKZ2V0X2NvbmZpZwAAAAAAAAAAAAEAAAPpAAAH0AAAAAZCcmlkZ2UAAAAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAUZ2V0X3RyYW5zYWN0aW9uX2Nvc3QAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAANZ2V0X2dhc191c2FnZQAAAAAAAAEAAAAAAAAACGNoYWluX2lkAAAABAAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAOZ2V0X2dhc19vcmFjbGUAAAAAAAAAAAABAAAD6QAAABMAAAAD","AAAAAAAAAAAAAAASZ2V0X2Fub3RoZXJfYnJpZGdlAAAAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAB9AAAAANQW5vdGhlckJyaWRnZQAAAAAAAAM=","AAAAAQAAAAAAAAAAAAAAB1N3YXBwZWQAAAAABgAAAAAAAAAOcmVjZWl2ZV9hbW91bnQAAAAAAAoAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAAEwAAAAAAAAALc2VuZF9hbW91bnQAAAAACgAAAAAAAAAKc2VuZF90b2tlbgAAAAAD7gAAACAAAAAAAAAABnNlbmRlcgAAAAAAEw==","AAAAAQAAAAAAAAAAAAAAClRva2Vuc1NlbnQAAAAAAAUAAAAAAAAABmFtb3VudAAAAAAACgAAAAAAAAAUZGVzdGluYXRpb25fY2hhaW5faWQAAAAEAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAADlRva2Vuc1JlY2VpdmVkAAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACWNsYWltYWJsZQAAAAAAAAEAAAAAAAAAB21lc3NhZ2UAAAAD7gAAACAAAAAAAAAABW5vbmNlAAAAAAAADAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAAClJlY2VpdmVGZWUAAAAAAAMAAAAAAAAAF2JyaWRnZV90cmFuc2FjdGlvbl9jb3N0AAAAAAoAAAAAAAAACWV4dHJhX2dhcwAAAAAAAAoAAAAAAAAAGG1lc3NhZ2VfdHJhbnNhY3Rpb25fY29zdAAAAAo=","AAAAAQAAAAAAAAAAAAAAFUJyaWRnaW5nRmVlRnJvbVRva2VucwAAAAAAAAIAAAAAAAAAEGZlZV90b2tlbl9hbW91bnQAAAAKAAAAAAAAAANnYXMAAAAACg==","AAAAAQAAAAAAAAAAAAAADUFub3RoZXJCcmlkZ2UAAAAAAAACAAAAAAAAAAdhZGRyZXNzAAAAA+4AAAAgAAAAAAAAAAZ0b2tlbnMAAAAAA+wAAAPuAAAAIAAAAAE=","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAABgAAAGBwcmVjb21wdXRlZCB2YWx1ZXMgb2YgdGhlIHNjYWxpbmcgZmFjdG9yIHJlcXVpcmVkIGZvciBwYXlpbmcgdGhlIGJyaWRnaW5nIGZlZSB3aXRoIHN0YWJsZSB0b2tlbnMAAAAeYnJpZGdpbmdfZmVlX2NvbnZlcnNpb25fZmFjdG9yAAAAAAPsAAAAEwAAAAoAAAAAAAAACGNhbl9zd2FwAAAAAQAAAGxwcmVjb21wdXRlZCB2YWx1ZXMgdG8gZGl2aWRlIGJ5IHRvIGNoYW5nZSB0aGUgcHJlY2lzaW9uIGZyb20gdGhlIEdhcyBPcmFjbGUgcHJlY2lzaW9uIHRvIHRoZSB0b2tlbiBwcmVjaXNpb24AAAAWZnJvbV9nYXNfb3JhY2xlX2ZhY3RvcgAAAAAD7AAAABMAAAAKAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAAVwb29scwAAAAAAA+wAAAPuAAAAIAAAABMAAAAAAAAACnJlYmFsYW5jZXIAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAwAAAAEAAAAAAAAAC090aGVyQnJpZGdlAAAAAAEAAAAEAAAAAQAAAAAAAAALU2VudE1lc3NhZ2UAAAAAAQAAA+4AAAAgAAAAAQAAAAAAAAAPUmVjZWl2ZWRNZXNzYWdlAAAAAAEAAAPuAAAAIA==","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAJQAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"])}};var jt=class extends le{constructor(e,n,a){super();this.nodeRpcUrlsConfig=e;this.params=n;this.api=a;this.chainType="SRB"}async buildRawTransactionSend(e){let n=await xe(this.chainType,e,this.api);return await this.buildRawTransactionSendFromParams(n)}async buildRawTransactionSendFromParams(e){let{amount:n,contractAddress:a,fromAccountAddress:r,fromTokenAddress:s,toChainId:o,toAccountAddress:A,toTokenAddress:c,fee:m,gasFeePaymentMethod:u,extraGas:g}=e,f=m;g&&(f=(0,wa.Big)(f).plus(g).toFixed());let y=this.getContract(kt,a),h;return u==="stablecoin"?h=await y.swapAndBridge({sender:r,token:zt.Address.contract(Buffer.from(s)).toString(),amount:BigInt(n),recipient:Buffer.from(A),destination_chain_id:+o,receive_token:Buffer.from(c),nonce:Bn(),gas_amount:BigInt(0),fee_token_amount:BigInt(f)}):h=await y.swapAndBridge({sender:r,token:zt.Address.contract(Buffer.from(s)).toString(),amount:BigInt(n),recipient:Buffer.from(A),destination_chain_id:+o,receive_token:Buffer.from(c),nonce:Bn(),gas_amount:BigInt(f),fee_token_amount:BigInt(0)}),h}async buildRawTransactionSwap(e){let n=Oe(this.chainType,e);return await this.buildRawTransactionSwapFromParams(n)}async buildRawTransactionSwapFromParams(e){let{amount:n,contractAddress:a,fromAccountAddress:r,fromTokenAddress:s,toAccountAddress:o,toTokenAddress:A,minimumReceiveAmount:c}=e;return await this.getContract(kt,a).swap({sender:r,amount:BigInt(n),token:zt.Address.contract(Buffer.from(s)).toBuffer(),receive_token:Buffer.from(A),recipient:o,receive_amount_min:BigInt(c)})}send(e){throw new J}getContract(e,n){let a={contractId:n,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new e(a)}};var ka=require("big.js");var Ca=W(require("bn.js"));function qt(i){return"0x"+new Ca.default(i).toString("hex")}function Ba(i){return new Promise(t=>setTimeout(()=>t(),i))}var rt=i=>(...t)=>new Promise((e,n)=>i(...t,(a,r)=>a?n(a):e(r)));async function $t(i,t){let e=await i.trx.sign(t);if(!e.signature)throw new Ge("Transaction was not signed properly");let a=(await i.trx.sendRawTransaction(e)).txid;return await Pi(i,a),{txId:a}}async function Pi(i,t,e=1e4){let n=Date.now();for(;;){if(Date.now()-n>e)throw new je("Transaction not found");let a=await i.trx.getUnconfirmedTransactionInfo(t);if(!a?.receipt){await Ba(2e3);continue}if(a.receipt.result==="SUCCESS")return a;throw new je(`Transaction status is ${a.receipt.result}`)}}var Rt=class extends le{constructor(e,n){super();this.tronWeb=e;this.api=n;this.chainType="TRX"}async send(e){let n=await xe(this.chainType,e,this.api),a=await this.buildRawTransactionSendFromParams(n);return await $t(this.tronWeb,a)}async buildRawTransactionSwap(e){let n=Oe(this.chainType,e);return await this.buildRawTransactionSwapFromParams(n)}async buildRawTransactionSwapFromParams(e){let{amount:n,contractAddress:a,fromAccountAddress:r,fromTokenAddress:s,toAccountAddress:o,toTokenAddress:A,minimumReceiveAmount:c}=e,m=[{type:"uint256",value:n},{type:"bytes32",value:s},{type:"bytes32",value:A},{type:"address",value:o},{type:"uint256",value:c}];return this.buildRawTransaction(a,"swap(uint256,bytes32,bytes32,address,uint256)",m,"0",r)}async buildRawTransactionSend(e){let n=await xe(this.chainType,e,this.api);return this.buildRawTransactionSendFromParams(n)}async buildRawTransactionSendFromParams(e){let{amount:n,contractAddress:a,fromAccountAddress:r,fromTokenAddress:s,toChainId:o,toAccountAddress:A,toTokenAddress:c,messenger:m,fee:u,gasFeePaymentMethod:g,extraGas:f}=e,y=u;f&&(y=(0,ka.Big)(y).plus(f).toFixed());let h=tt().toJSON().data,d,p,P;return m==3?(g==="stablecoin"?(d=[{type:"uint256",value:n},{type:"bytes32",value:A},{type:"uint256",value:o},{type:"uint256",value:y}],p="0"):(d=[{type:"uint256",value:n},{type:"bytes32",value:A},{type:"uint256",value:o},{type:"uint256",value:0}],p=y),P="bridge(uint256,bytes32,uint256,uint256)"):(g==="stablecoin"?(d=[{type:"bytes32",value:s},{type:"uint256",value:n},{type:"bytes32",value:A},{type:"uint256",value:o},{type:"bytes32",value:c},{type:"uint256",value:h},{type:"uint8",value:m},{type:"uint256",value:y}],p="0"):(d=[{type:"bytes32",value:s},{type:"uint256",value:n},{type:"bytes32",value:A},{type:"uint256",value:o},{type:"bytes32",value:c},{type:"uint256",value:h},{type:"uint8",value:m},{type:"uint256",value:0}],p=y),P="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)"),this.buildRawTransaction(a,P,d,p,r)}async buildRawTransaction(e,n,a,r,s){let o=await this.tronWeb.transactionBuilder.triggerSmartContract(e,n,{callValue:r},a,s);if(!o?.result?.result)throw new k("Unknown error: "+JSON.stringify(o,null,2));return o.transaction}};var en=class{constructor(t,e,n,a){this.api=t;this.nodeRpcUrlsConfig=e;this.params=n;this.tokenService=a;this.rawTxBuilder=new Kt(t,e,n,a)}async getAllowance(t,e){let n,a;e?(n=t,a=e):a=t;let r=wt(a.token,a.messenger);return await this.tokenService.getAllowance({...a,spender:r},n)}async checkAllowance(t,e){let n,a;e?(n=t,a=e):a=t;let r=wt(a.token,a.messenger);return this.tokenService.checkAllowance({...a,spender:r},n)}async approve(t,e){let n=wt(e.token,e.messenger);return this.tokenService.approve(t,{...e,spender:n})}async send(t,e){return v(e.amount),I("amount",e.amount,e.sourceToken.decimals),Qt(e.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,t).send(e)}};function wt(i,t){if(t&&t==3){if(i.cctpAddress)return i.cctpAddress;throw new re("Such route does not support CCTP protocol")}else return i.bridgeAddress}function Qt(i,t,e,n,a){switch(z[i].chainType){case"EVM":{if(a)return new St(a,t,e);{let r=e.getNodeRpcUrl(i);return new St(new Ma.default(r),t,e)}}case"TRX":{if(a)return new Rt(a,t);{let r=e.getNodeRpcUrl(i);return new Rt(new Ra.default({fullHost:r}),t)}}case"SOLANA":return new Ht(e.getNodeRpcUrl("SOL"),{wormholeMessengerProgramId:n.wormholeMessengerProgramId,solanaLookUpTable:n.solanaLookUpTable,cctpParams:n.cctpParams},t);case"SRB":return new jt(e,n,t)}}var Da=require("big.js"),Fa=W(require("tronweb")),Wa=W(require("web3"));var Me=require("big.js");function va(i,t,e,n,a){let r=B(i,3),s=(0,Me.Big)(r),o=(0,Me.Big)(e),A=(0,Me.Big)(n).plus(a),c,m;if(o.eq(0)||A.eq(0)){let g=s.div(2);c=(0,Me.Big)(n).plus(g),m=(0,Me.Big)(a).plus(g)}else c=(0,Me.Big)(n).plus(s.mul(n).div(A)),m=(0,Me.Big)(a).plus(s.mul(a).div(A));return(0,Me.Big)(Ln(t,c.toFixed(),m.toFixed())).minus(o).toFixed()}function Ia(i){let t=B(i,3);return(0,Me.Big)(t).round().toFixed()}var Ye=[{inputs:[{internalType:"address",name:"_router",type:"address"},{internalType:"uint256",name:"_a",type:"uint256"},{internalType:"contract ERC20",name:"_token",type:"address"},{internalType:"uint16",name:"_feeShareBP",type:"uint16"},{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"},{internalType:"string",name:"lpName",type:"string"},{internalType:"string",name:"lpSymbol",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"RewardsClaimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedFromVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedToVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"a",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"accRewardPerShareP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adjustTotalLpAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"adminFeeAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"balanceRatioMinBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canDeposit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canWithdraw",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"claimAdminFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"claimRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"d",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"feeShareBP",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"x",type:"uint256"}],name:"getY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"pendingReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"reserves",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"router",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_adminFeeShareBP",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"}],name:"setBalanceRatioMinBP",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"_feeShareBP",type:"uint16"}],name:"setFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_router",type:"address"}],name:"setRouter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapFromVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapToVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"token",outputs:[{internalType:"contract ERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"userRewardDebt",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"vUsdBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amountLp",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}];var ae=class{constructor(t){this.lpAmount=t.lpAmount,this.rewardDebt=t.rewardDebt}get userLiquidity(){return b(this.lpAmount,3).toFixed()}earned(t,e){let n=Gn(this.lpAmount,this.rewardDebt,t.accRewardPerShareP,t.p);return e?b(n,e).toFixed():n}};var de=class{};var Mt=class extends de{constructor(e,n){super();this.web3=e;this.api=n;this.chainType="EVM";this.P=52}async getUserBalanceInfo(e,n){let a;try{a=await ht(this.getUserBalanceInfoByBatch(e,n),`Cannot get UserBalanceInfo for ${n.name}`,5e3)}catch{a=await ht(this.getUserBalanceInfoPerProperty(e,n),`Cannot get UserBalanceInfo for ${n.name}`,5e3)}return a}async getUserBalanceInfoByBatch(e,n){let a=new this.web3.BatchRequest,r=new this.web3.eth.Contract(Ye,n.poolAddress),s=["userRewardDebt","balanceOf"].map(c=>rt(m=>a.add(r.methods[c](e).call.request({},m)))());a.execute();let[o,A]=await Promise.all(s);return new ae({lpAmount:A,rewardDebt:o})}async getUserBalanceInfoPerProperty(e,n){let a=await this.getPoolContract(n.poolAddress).methods.userRewardDebt(e).call(),r=await this.getPoolContract(n.poolAddress).methods.balanceOf(e).call();return new ae({lpAmount:r,rewardDebt:a})}async getPoolInfoFromChain(e){let n;try{n=await ht(this.getPoolInfoByBatch(e),`Cannot get PoolInfo for ${e.name}`,5e3)}catch{n=await ht(this.getPoolInfoPerProperty(e),`Cannot get PoolInfo for ${e.name}`,5e3)}return n}async getPoolInfoByBatch(e){let n=new this.web3.BatchRequest,a=new this.web3.eth.Contract(Ye,e.poolAddress),r=["a","d","tokenBalance","vUsdBalance","totalSupply","accRewardPerShareP"].map(h=>rt(d=>n.add(a.methods[h]().call.request({},d)))());n.execute();let[s,o,A,c,m,u]=await Promise.all(r),g=A.toString(),f=c.toString(),y=te({tokenBalance:g,vUsdBalance:f});return{aValue:s.toString(),dValue:o.toString(),tokenBalance:g,vUsdBalance:f,totalLpAmount:m.toString(),accRewardPerShareP:u.toString(),p:this.P,imbalance:y}}async getPoolInfoPerProperty(e){let n=this.getPoolContract(e.poolAddress),[a,r,s,o,A,c]=await Promise.all([n.methods.a().call(),n.methods.d().call(),n.methods.tokenBalance().call(),n.methods.vUsdBalance().call(),n.methods.totalSupply().call(),n.methods.accRewardPerShareP().call()]),m=te({tokenBalance:s,vUsdBalance:o});return{aValue:a,dValue:r,tokenBalance:s,vUsdBalance:o,totalLpAmount:A,accRewardPerShareP:c,p:this.P,imbalance:m}}async buildRawTransactionDeposit(e){return Promise.resolve({...this.buildTxParams(e),data:this.getPoolContract(e.token.poolAddress).methods.deposit(e.amount).encodeABI()})}async buildRawTransactionWithdraw(e){return Promise.resolve({...this.buildTxParams(e),data:this.getPoolContract(e.token.poolAddress).methods.withdraw(e.amount).encodeABI()})}async buildRawTransactionClaimRewards(e){return Promise.resolve({...this.buildTxParams(e),data:this.getPoolContract(e.token.poolAddress).methods.claimRewards().encodeABI()})}buildTxParams(e){return{from:e.accountAddress,to:e.token.poolAddress,value:"0"}}getContract(e,n){return new this.web3.eth.Contract(e,n)}getPoolContract(e){return this.getContract(Ye,e)}};var tn=class{constructor(t,e,n,a){this.api=t;this.nodeRpcUrlsConfig=e;this.params=n;this.tokenService=a}async approve(t,e){if(e){let n=t,a=e;return this.tokenService.buildRawTransactionApprove({...a,spender:a.token.poolAddress},n)}else{let n=t;return this.tokenService.buildRawTransactionApprove({...n,spender:n.token.poolAddress})}}async deposit(t,e){return v(t.amount),I("amount",t.amount,t.token.decimals),t.amount=B(t.amount,t.token.decimals).toFixed(),st(t.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,e).buildRawTransactionDeposit(t)}async withdraw(t,e){return v(t.amount),I("amount",t.amount,t.token.decimals),t.amount=B(t.amount,3).toFixed(),st(t.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,e).buildRawTransactionWithdraw(t)}async claimRewards(t,e){return st(t.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,e).buildRawTransactionClaimRewards(t)}};var fe=require("@project-serum/anchor"),ge=require("@solana/web3.js");var nn=class extends de{constructor(e,n){super();this.solanaRpcUrl=e;this.api=n;this.chainType="SOLANA";this.P=48}async getUserBalanceInfo(e,n){let a=this.buildAnchorProvider(e),r=this.getBridge(n.bridgeAddress,a),s=new ge.PublicKey(n.poolAddress),o=await r.account.pool.fetch(s);try{let A=await wn(new ge.PublicKey(e),o.mint,r.programId),{lpAmount:c,rewardDebt:m}=await r.account.userDeposit.fetch(A);return new ae({lpAmount:c.toString(),rewardDebt:m.toString()})}catch{return new ae({lpAmount:"0",rewardDebt:"0"})}}async getPoolInfoFromChain(e){let n=this.buildAnchorProvider(e.bridgeAddress),a=await this.getBridge(e.bridgeAddress,n).account.pool.fetch(e.poolAddress),r=a.vUsdBalance.toString(),s=a.tokenBalance.toString(),o=te({tokenBalance:s,vUsdBalance:r});return{dValue:a.d.toString(),aValue:a.a.toString(),totalLpAmount:a.totalLpAmount.toString(),vUsdBalance:r,tokenBalance:s,accRewardPerShareP:a.accRewardPerShareP.toString(),p:this.P,imbalance:o}}async buildRawTransactionDeposit(e){let{bridge:n,accounts:a,preInstructions:r}=await this.prepareDataForTransaction(e),s=await n.methods.deposit(new fe.BN(e.amount)).accounts(a).preInstructions(r).transaction();return s.recentBlockhash=(await this.buildAnchorProvider(e.accountAddress).connection.getLatestBlockhash()).blockhash,s.feePayer=new ge.PublicKey(e.accountAddress),await at(s,e.txFeeParams,this.solanaRpcUrl),s}async buildRawTransactionWithdraw(e){let{bridge:n,accounts:a,preInstructions:r}=await this.prepareDataForTransaction(e),s=await n.methods.withdraw(new fe.BN(e.amount)).accounts(a).preInstructions(r).transaction();return s.recentBlockhash=(await this.buildAnchorProvider(e.accountAddress).connection.getLatestBlockhash()).blockhash,s.feePayer=new ge.PublicKey(e.accountAddress),await at(s,e.txFeeParams,this.solanaRpcUrl),s}async buildRawTransactionClaimRewards(e){let{bridge:n,accounts:a,preInstructions:r}=await this.prepareDataForTransaction(e),s=await n.methods.claimRewards().accounts(a).preInstructions(r).transaction();return s.recentBlockhash=(await this.buildAnchorProvider(e.accountAddress).connection.getLatestBlockhash()).blockhash,s.feePayer=new ge.PublicKey(e.accountAddress),await at(s,e.txFeeParams,this.solanaRpcUrl),s}async prepareDataForTransaction(e){let n=this.buildAnchorProvider(e.accountAddress),a=this.getBridge(e.token.bridgeAddress,n),{accounts:r,preInstructions:s}=await this._getLPTransactionData(a,e.token.poolAddress,e.accountAddress,n);return{bridge:a,accounts:r,preInstructions:s}}getBridge(e,n){return new fe.Program(Ct,e,n)}buildAnchorProvider(e){let n=new ge.Connection(this.solanaRpcUrl,"confirmed"),a=new ge.PublicKey(e);return new fe.AnchorProvider(n,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}async _getLPTransactionData(e,n,a,r){let s=new ge.PublicKey(a),o=await Ue(e.programId),A=await $e(e.programId),c=new ge.PublicKey(n),u=(await e.account.pool.fetch(c)).mint,g=await ue(s,u),f=await et(u,e.programId),y=await wn(s,u,e.programId),h=[fe.web3.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await nt(g,r)}catch{let T=await fe.Spl.associatedToken(r).methods.create().accounts({mint:u,owner:s,associatedAccount:g}).instruction();h.push(T)}try{await e.account.userDeposit.fetch(y)}catch{let P=await e.methods.initDepositAccount().accounts({mint:u,user:s,userDeposit:y}).instruction();h.push(P)}return{accounts:{mint:u,user:s,config:o,pool:c,bridgeAuthority:A,userDeposit:y,userToken:g,bridgeToken:f},preInstructions:h}}};var Je=require("stellar-sdk");var vt={0:{message:""},1:{message:""},2:{message:""},3:{message:""},4:{message:""},5:{message:""},6:{message:""},7:{message:""},8:{message:""},9:{message:""},103:{message:""},104:{message:""},105:{message:""},106:{message:""},107:{message:""},108:{message:""},109:{message:""},203:{message:""},204:{message:""},205:{message:""},206:{message:""},207:{message:""},208:{message:""},209:{message:""},210:{message:""},211:{message:""},212:{message:""},214:{message:""},215:{message:""},216:{message:""},217:{message:""},218:{message:""},300:{message:""},301:{message:""},302:{message:""},303:{message:""},400:{message:""}},an=class{constructor(t){this.options=t;this.parsers={deposit:t=>t instanceof se?t:new pe(this.spec.funcResToNative("deposit",t)),withdraw:t=>t instanceof se?t:new pe(this.spec.funcResToNative("withdraw",t)),claimRewards:t=>t instanceof se?t:new pe(this.spec.funcResToNative("claim_rewards",t)),getPool:t=>t instanceof se?t:new pe(this.spec.funcResToNative("get_pool",t)),getUserDeposit:t=>t instanceof se?t:new pe(this.spec.funcResToNative("get_user_deposit",t))};this.depositXdr=async({sender:t,amount:e},n={})=>await Fe.xdrFromSimulation({method:"deposit",args:this.spec.funcArgsToScVals("deposit",{sender:new Je.Address(t),amount:e}),account:t,...n,...this.options,errorTypes:vt,parseResultXdr:this.parsers.deposit});this.withdrawXdr=async({sender:t,amount_lp:e},n={})=>await Fe.xdrFromSimulation({method:"withdraw",args:this.spec.funcArgsToScVals("withdraw",{sender:new Je.Address(t),amount_lp:e}),account:t,...n,...this.options,errorTypes:vt,parseResultXdr:this.parsers.withdraw});this.claimRewardsXdr=async({sender:t},e={})=>await Fe.xdrFromSimulation({method:"claim_rewards",args:this.spec.funcArgsToScVals("claim_rewards",{sender:new Je.Address(t)}),account:t,...e,...this.options,errorTypes:vt,parseResultXdr:this.parsers.claimRewards});this.getPool=async(t={})=>await E.fromSimulation({method:"get_pool",args:this.spec.funcArgsToScVals("get_pool",{}),...t,...this.options,errorTypes:vt,parseResultXdr:this.parsers.getPool});this.getUserDeposit=async({user:t},e={})=>await E.fromSimulation({method:"get_user_deposit",args:this.spec.funcArgsToScVals("get_user_deposit",{user:new Je.Address(t)}),...e,...this.options,errorTypes:vt,parseResultXdr:this.parsers.getUserDeposit});this.spec=new Je.ContractSpec(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABwAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAZicmlkZ2UAAAAAABMAAAAAAAAAAWEAAAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAADGZlZV9zaGFyZV9icAAAAAoAAAAAAAAAFGJhbGFuY2VfcmF0aW9fbWluX2JwAAAACgAAAAAAAAASYWRtaW5fZmVlX3NoYXJlX2JwAAAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAHZGVwb3NpdAAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAId2l0aGRyYXcAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAACWFtb3VudF9scAAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3dhcF90b192X3VzZAAAAAAAAAMAAAAAAAAABHVzZXIAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9mcm9tX3ZfdXNkAAAAAAUAAAAAAAAABHVzZXIAAAATAAAAAAAAAAt2dXNkX2Ftb3VudAAAAAAKAAAAAAAAABJyZWNlaXZlX2Ftb3VudF9taW4AAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAAAAAAJY2xhaW1hYmxlAAAAAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAANY2xhaW1fcmV3YXJkcwAAAAAAAAEAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAANY2xhaW1fYmFsYW5jZQAAAAAAAAEAAAAAAAAABHVzZXIAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAdgYWRtaW5gAAAAAA1zZXRfZmVlX3NoYXJlAAAAAAAAAQAAAAAAAAAMZmVlX3NoYXJlX2JwAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAWYWRqdXN0X3RvdGFsX2xwX2Ftb3VudAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAYc2V0X2JhbGFuY2VfcmF0aW9fbWluX2JwAAAAAQAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAMc3RvcF9kZXBvc2l0AAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAANc3RhcnRfZGVwb3NpdAAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3RvcF93aXRoZHJhdwAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAOc3RhcnRfd2l0aGRyYXcAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc2V0X2JyaWRnZQAAAAAAAQAAAAAAAAAGYnJpZGdlAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAATc2V0X2FkbWluX2ZlZV9zaGFyZQAAAAABAAAAAAAAABJhZG1pbl9mZWVfc2hhcmVfYnAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAPY2xhaW1fYWRtaW5fZmVlAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAZgdmlld2AAAAAAAA5wZW5kaW5nX3Jld2FyZAAAAAAAAQAAAAAAAAAEdXNlcgAAABMAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAAIZ2V0X3Bvb2wAAAAAAAAAAQAAA+kAAAfQAAAABFBvb2wAAAAD","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAKZ2V0X2JyaWRnZQAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAQZ2V0X3VzZXJfZGVwb3NpdAAAAAEAAAAAAAAABHVzZXIAAAATAAAAAQAAA+kAAAfQAAAAC1VzZXJEZXBvc2l0AAAAAAM=","AAAAAAAAAAAAAAAVZ2V0X2NsYWltYWJsZV9iYWxhbmNlAAAAAAAAAQAAAAAAAAAEdXNlcgAAABMAAAABAAAD6QAAAAoAAAAD","AAAAAQAAAAAAAAAAAAAAD1N3YXBwZWRGcm9tVlVzZAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAAC3Z1c2RfYW1vdW50AAAAAAo=","AAAAAQAAAAAAAAAAAAAADVN3YXBwZWRUb1ZVc2QAAAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAALdnVzZF9hbW91bnQAAAAACg==","AAAAAQAAAAAAAAAAAAAAB0RlcG9zaXQAAAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAACFdpdGhkcmF3AAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAADlJld2FyZHNDbGFpbWVkAAAAAAACAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAABHVzZXIAAAAT","AAAAAQAAAAAAAAAAAAAADkJhbGFuY2VDbGFpbWVkAAAAAAACAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAABHVzZXIAAAAT","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAgAAAAEAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAEAAAATAAAAAQAAAAAAAAAQQ2xhaW1hYmxlQmFsYW5jZQAAAAEAAAAT","AAAAAQAAAAAAAAAAAAAABFBvb2wAAAAPAAAAAAAAAAFhAAAAAAAACgAAAAAAAAAWYWNjX3Jld2FyZF9wZXJfc2hhcmVfcAAAAAAACgAAAAAAAAAQYWRtaW5fZmVlX2Ftb3VudAAAAAoAAAAAAAAAEmFkbWluX2ZlZV9zaGFyZV9icAAAAAAACgAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAAAAAAtjYW5fZGVwb3NpdAAAAAABAAAAAAAAAAxjYW5fd2l0aGRyYXcAAAABAAAAAAAAAAFkAAAAAAAACgAAAAAAAAAIZGVjaW1hbHMAAAAEAAAAAAAAAAxmZWVfc2hhcmVfYnAAAAAKAAAAAAAAAAhyZXNlcnZlcwAAAAoAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAANdG9rZW5fYmFsYW5jZQAAAAAAAAoAAAAAAAAAD3RvdGFsX2xwX2Ftb3VudAAAAAAKAAAAAAAAAA12X3VzZF9iYWxhbmNlAAAAAAAACg==","AAAAAQAAAAAAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAIAAAAAAAAACWxwX2Ftb3VudAAAAAAAAAoAAAAAAAAAC3Jld2FyZF9kZWJ0AAAAAAo=","AAAAAQAAAAAAAAAAAAAAEENsYWltYWJsZUJhbGFuY2UAAAABAAAAAAAAAAZhbW91bnQAAAAAAAo=","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAJQAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"])}};var rn=class extends de{constructor(e,n,a){super();this.nodeRpcUrlsConfig=e;this.params=n;this.api=a;this.chainType="SRB";this.P=48}async getUserBalanceInfo(e,n){let r=(await this.getContract(n.poolAddress).getUserDeposit({user:e})).result;if(r.isErr())throw new k;let s=r.unwrap();return new ae({lpAmount:s.lp_amount.toString(),rewardDebt:s.reward_debt.toString()})}async getPoolInfoFromChain(e){let a=(await this.getContract(e.poolAddress).getPool()).result;if(a.isErr())throw new k;let r=a.unwrap();return{aValue:r.a.toString(),accRewardPerShareP:r.acc_reward_per_share_p.toString(),dValue:r.d.toString(),tokenBalance:r.token_balance.toString(),p:this.P,totalLpAmount:r.total_lp_amount.toString(),vUsdBalance:r.v_usd_balance.toString(),imbalance:te({tokenBalance:r.token_balance.toString(),vUsdBalance:r.v_usd_balance.toString()})}}async buildRawTransactionDeposit(e){return await this.getContract(e.token.poolAddress).depositXdr({sender:e.accountAddress,amount:BigInt(e.amount)})}async buildRawTransactionWithdraw(e){return await this.getContract(e.token.poolAddress).withdrawXdr({sender:e.accountAddress,amount_lp:BigInt(e.amount)})}async buildRawTransactionClaimRewards(e){return await this.getContract(e.token.poolAddress).claimRewardsXdr({sender:e.accountAddress})}getContract(e){let n={contractId:e,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new an(n)}};var xa=W(require("web3"));var It=class i extends de{constructor(e,n,a){super();this.tronWeb=e;this.api=n;this.chainType="TRX";this.P=52;a&&(this.web3=new xa.default(a))}static{this.contracts=new Map}async getUserBalanceInfo(e,n){let a;if(this.web3)try{a=await this.getUserBalanceInfoByBatch(this.web3,e,n)}catch{a=await this.getUserBalanceInfoPerProperty(e,n)}else a=await this.getUserBalanceInfoPerProperty(e,n);return a}async getUserBalanceInfoByBatch(e,n,a){let r=new e.BatchRequest,s=new e.eth.Contract(Ye,bt(a.poolAddress)),o=bt(n),A=["userRewardDebt","balanceOf"].map(u=>rt(g=>r.add(s.methods[u](o).call.request({},g)))());r.execute();let[c,m]=await Promise.all(A);return new ae({lpAmount:m,rewardDebt:c})}async getUserBalanceInfoPerProperty(e,n){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(e);let a=await this.getContract(n.poolAddress),r=(await a.methods.userRewardDebt(e).call()).toString(),s=(await a.methods.balanceOf(e).call()).toString();return new ae({lpAmount:s,rewardDebt:r})}async getPoolInfoFromChain(e){let n;if(this.web3)try{n=await this.getPoolInfoByBatch(this.web3,e)}catch{n=await this.getPoolInfoPerProperty(e)}else n=await this.getPoolInfoPerProperty(e);return n}async getPoolInfoByBatch(e,n){let a=new e.BatchRequest,r=new e.eth.Contract(Ye,bt(n.poolAddress)),s=["a","d","tokenBalance","vUsdBalance","totalSupply","accRewardPerShareP"].map(d=>rt(p=>a.add(r.methods[d]().call.request({},p)))());a.execute();let[o,A,c,m,u,g]=await Promise.all(s),f=c.toString(),y=m.toString(),h=te({tokenBalance:f,vUsdBalance:y});return{aValue:o.toString(),dValue:A.toString(),tokenBalance:f,vUsdBalance:y,totalLpAmount:u.toString(),accRewardPerShareP:g.toString(),p:this.P,imbalance:h}}async getPoolInfoPerProperty(e){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(e.poolAddress);let n=await this.getContract(e.poolAddress),[a,r,s,o,A,c]=await Promise.all([n.methods.a().call(),n.methods.d().call(),n.methods.tokenBalance().call(),n.methods.vUsdBalance().call(),n.methods.totalSupply().call(),n.methods.accRewardPerShareP().call()]),m=s.toString(),u=o.toString(),g=te({tokenBalance:m,vUsdBalance:u});return{aValue:a.toString(),dValue:r.toString(),tokenBalance:m,vUsdBalance:u,totalLpAmount:A.toString(),accRewardPerShareP:c.toString(),p:this.P,imbalance:g}}buildRawTransactionDeposit(e){let{amount:n,accountAddress:a}=e,r=[{type:"uint256",value:n}];return this.buildRawTransaction(e.token.poolAddress,"deposit(uint256)",r,"0",a)}buildRawTransactionWithdraw(e){let{amount:n,accountAddress:a}=e,r=[{type:"uint256",value:n}];return this.buildRawTransaction(e.token.poolAddress,"withdraw(uint256)",r,"0",a)}buildRawTransactionClaimRewards(e){let{accountAddress:n}=e,a=[];return this.buildRawTransaction(e.token.poolAddress,"claimRewards()",a,"0",n)}async buildRawTransaction(e,n,a,r,s){let o=await this.tronWeb.transactionBuilder.triggerSmartContract(e,n,{callValue:r},a,s);if(!o?.result?.result)throw new k("Unknown error: "+JSON.stringify(o,null,2));return o.transaction}async getContract(e){if(i.contracts.has(e))return i.contracts.get(e);let n=await this.tronWeb.contract().at(e);return i.contracts.set(e,n),n}};var sn=class{constructor(t,e,n,a){this.api=t;this.nodeRpcUrlsConfig=e;this.params=n;this.tokenService=a;this.rawTxBuilder=new tn(t,e,this.params,a)}async getAllowance(t,e){if(e){let n=t,a=e;return await this.tokenService.getAllowance({...a,spender:a.token.poolAddress},n)}else{let n=t;return await this.tokenService.getAllowance({...n,spender:n.token.poolAddress})}}async checkAllowance(t,e){if(e){let n=t,a=e;return this.tokenService.checkAllowance({...a,spender:a.token.poolAddress},n)}else{let n=t;return this.tokenService.checkAllowance({...n,spender:n.token.poolAddress})}}async approve(t,e){return this.tokenService.approve(t,{...e,spender:e.token.poolAddress})}async getAmountToBeDeposited(t,e,n){v(t),I("amount",t,e.decimals);let a=await this.getPoolInfoFromChain(e,n),{vUsdBalance:r,tokenBalance:s,aValue:o,dValue:A}=a,c=va(t,o,A,s,r);return b(c,3).toFixed()}async getAmountToBeWithdrawn(t,e,n,a){v(t),I("amount",t,n.decimals);let r=await this.getPoolInfoFromChain(n,a),s=Ia(t),o=ee(s,n.decimals),c=(await this.getUserBalanceInfo(e,n,a)).earned(r)||"0",m=(0,Da.Big)(o).plus(c).toFixed();return b(m,n.decimals).toFixed()}async getUserBalanceInfo(t,e,n){return st(e.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).getUserBalanceInfo(t,e)}async getPoolInfoFromChain(t,e){let n=await st(t.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,e).getPoolInfoFromChain(t);return this.api.cachePut({chainSymbol:t.chainSymbol,poolAddress:t.poolAddress},n),n}};function st(i,t,e,n,a){switch(z[i].chainType){case"EVM":{if(a)return new Mt(a,t);{let r=e.getNodeRpcUrl(i);return new Mt(new Wa.default(r),t)}}case"TRX":{let r=e.getNodeRpcUrl(i),s=n.tronJsonRpc;if(a)return new It(a,t,s);{let o=new Fa.default({fullHost:r});return new It(o,t,s)}}case"SOLANA":{let r=e.getNodeRpcUrl(i);return new nn(r,t)}case"SRB":return new rn(e,n,t)}}var D=require("big.js");function Na(i,t,e){let n=wi(i,{decimals:t.decimals,feeShare:t.feeShare},t.poolInfo),a=Ci(n.amountIncludingCommissionInSystemPrecision,{decimals:e.decimals,feeShare:e.feeShare},e.poolInfo);return{swapToVUsdCalcResult:n,swapFromVUsdCalcResult:a}}function Oa(i,t,e){let n=Bi(i,{decimals:e.decimals,feeShare:e.feeShare},e.poolInfo),a=ki(n.amountIncludingCommissionInSystemPrecision,{decimals:t.decimals,feeShare:t.feeShare},t.poolInfo);return{swapToVUsdCalcResult:n,swapFromVUsdCalcResult:a}}function wi(i,{feeShare:t,decimals:e},n){let a=(0,D.Big)(i),r=a.times(t),s=a.minus(r);return{bridgeFeeInTokenPrecision:r.round().toFixed(),amountIncludingCommissionInSystemPrecision:Ea(Ze(s,e),n),amountExcludingCommissionInSystemPrecision:Ea(Ze(a,e),n)}}function Ea(i,t){if(i.eq(0))return"0";let e=(0,D.Big)(t.tokenBalance).plus(i),n=Be(e.toFixed(),t.aValue,t.dValue);return(0,D.Big)(t.vUsdBalance).minus(n).round().toFixed()}function Ci(i,{feeShare:t,decimals:e},n){if((0,D.Big)(i).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let r=(0,D.Big)(i).plus(n.vUsdBalance),s=Be(r,n.aValue,n.dValue),o=ee((0,D.Big)(n.tokenBalance).minus(s),e),A=(0,D.Big)(o).times(t),c=(0,D.Big)(o).minus(A).round();return{bridgeFeeInTokenPrecision:A.round().toFixed(),amountIncludingCommissionInTokenPrecision:c.toFixed(),amountExcludingCommissionInTokenPrecision:o.toFixed()}}function Bi(i,{feeShare:t,decimals:e},n){let a=(0,D.Big)(t).div((0,D.Big)(1).minus(t)),r=(0,D.Big)(i).times(a),s=(0,D.Big)(i).plus(r);return{bridgeFeeInTokenPrecision:r.round().toFixed(),amountIncludingCommissionInSystemPrecision:Ua(Ze(s,e),n),amountExcludingCommissionInSystemPrecision:Ua(Ze(i,e),n)}}function Ua(i,t){let e=(0,D.Big)(t.tokenBalance).minus(i),n=Be(e.toFixed(),t.aValue,t.dValue);return(0,D.Big)(n).minus(t.vUsdBalance).round().toFixed()}function ki(i,{feeShare:t,decimals:e},n){if((0,D.Big)(i).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let a=(0,D.Big)(n.vUsdBalance).minus(i),r=Be(a.toFixed(),n.aValue,n.dValue),s=(0,D.Big)(r).minus(n.tokenBalance),o=ee(s.toFixed(),e),A=(0,D.Big)(t).div((0,D.Big)(1).minus(t)),c=(0,D.Big)(o).times(A),m=(0,D.Big)(o).plus(c);return{bridgeFeeInTokenPrecision:c.round().toFixed(),amountIncludingCommissionInTokenPrecision:m.round().toFixed(),amountExcludingCommissionInTokenPrecision:o.toFixed()}}var We=require("big.js");function Va(i,t,e,n,a){let r=Ce(i,t,e),s=ee(r,t.decimals),o=ft(r,n,a),A=(0,We.Big)(i).times(t.feeShare),c=(0,We.Big)(o).div((0,We.Big)(1).minus(n.feeShare)).minus(o);return{sourceLPSwap:{fee:b(A,t.decimals).neg().round(t.decimals,We.Big.roundUp).toFixed(),swap:b((0,We.Big)(i).minus(s).minus(A),t.decimals).neg().round(t.decimals,We.Big.roundUp).toFixed()},destLPSwap:{fee:b(c,n.decimals).neg().round(n.decimals,We.Big.roundUp).toFixed(),swap:b(ee(r,n.decimals).minus(o).minus(c),n.decimals).neg().round(n.decimals,We.Big.roundUp).toFixed()}}}var ot=require("@solana/web3.js");var on=class{constructor(t,e){this.nodeRpcUrlsConfig=t;this.params=e}async addMemoToTx(t,e){if(e.length>28)throw new k("InvalidArgumentException memo cannot be more than 28 characters");let n=new ot.Connection(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),a=await Xe(t,n),r=ot.TransactionMessage.decompile(t.message,{addressLookupTableAccounts:a});r.instructions[r.instructions.length-1].keys.push({pubkey:new ot.PublicKey(Buffer.from(e)),isSigner:!1,isWritable:!1}),t.message=r.compileToV0Message(a)}};var R=require("stellar-sdk"),Gc=require("stellar-sdk/lib/horizon");var U=require("stellar-sdk");var j={},xt=class{constructor(t){this.options=t;this.parsers={initialize:()=>{},mint:()=>{},setAdmin:()=>{},allowance:t=>this.spec.funcResToNative("allowance",t),approve:()=>{},balance:t=>this.spec.funcResToNative("balance",t),spendableBalance:t=>this.spec.funcResToNative("spendable_balance",t),transfer:()=>{},transferFrom:()=>{},burn:()=>{},burnFrom:()=>{},decimals:t=>this.spec.funcResToNative("decimals",t),name:t=>this.spec.funcResToNative("name",t),symbol:t=>this.spec.funcResToNative("symbol",t)};this.initialize=async({admin:t,decimal:e,name:n,symbol:a},r={})=>await E.fromSimulation({method:"initialize",args:this.spec.funcArgsToScVals("initialize",{admin:new U.Address(t),decimal:e,name:n,symbol:a}),...r,...this.options,errorTypes:j,parseResultXdr:this.parsers.initialize});this.mint=async({to:t,amount:e},n={})=>await E.fromSimulation({method:"mint",args:this.spec.funcArgsToScVals("mint",{to:new U.Address(t),amount:e}),...n,...this.options,errorTypes:j,parseResultXdr:this.parsers.mint});this.setAdmin=async({new_admin:t},e={})=>await E.fromSimulation({method:"set_admin",args:this.spec.funcArgsToScVals("set_admin",{new_admin:new U.Address(t)}),...e,...this.options,errorTypes:j,parseResultXdr:this.parsers.setAdmin});this.allowance=async({from:t,spender:e},n={})=>await E.fromSimulation({method:"allowance",args:this.spec.funcArgsToScVals("allowance",{from:new U.Address(t),spender:new U.Address(e)}),...n,...this.options,errorTypes:j,parseResultXdr:this.parsers.allowance});this.approve=async({from:t,spender:e,amount:n,expiration_ledger:a},r={})=>await E.fromSimulation({method:"approve",args:this.spec.funcArgsToScVals("approve",{from:new U.Address(t),spender:new U.Address(e),amount:n,expiration_ledger:a}),...r,...this.options,errorTypes:j,parseResultXdr:this.parsers.approve});this.balance=async({id:t},e={})=>await E.fromSimulation({method:"balance",args:this.spec.funcArgsToScVals("balance",{id:new U.Address(t)}),...e,...this.options,errorTypes:j,parseResultXdr:this.parsers.balance});this.spendableBalance=async({id:t},e={})=>await E.fromSimulation({method:"spendable_balance",args:this.spec.funcArgsToScVals("spendable_balance",{id:new U.Address(t)}),...e,...this.options,errorTypes:j,parseResultXdr:this.parsers.spendableBalance});this.transfer=async({from:t,to:e,amount:n},a={})=>await E.fromSimulation({method:"transfer",args:this.spec.funcArgsToScVals("transfer",{from:new U.Address(t),to:new U.Address(e),amount:n}),...a,...this.options,errorTypes:j,parseResultXdr:this.parsers.transfer});this.transferFrom=async({spender:t,from:e,to:n,amount:a},r={})=>await E.fromSimulation({method:"transfer_from",args:this.spec.funcArgsToScVals("transfer_from",{spender:new U.Address(t),from:new U.Address(e),to:new U.Address(n),amount:a}),...r,...this.options,errorTypes:j,parseResultXdr:this.parsers.transferFrom});this.burn=async({from:t,amount:e},n={})=>await E.fromSimulation({method:"burn",args:this.spec.funcArgsToScVals("burn",{from:new U.Address(t),amount:e}),...n,...this.options,errorTypes:j,parseResultXdr:this.parsers.burn});this.burnFrom=async({spender:t,from:e,amount:n},a={})=>await E.fromSimulation({method:"burn_from",args:this.spec.funcArgsToScVals("burn_from",{spender:new U.Address(t),from:new U.Address(e),amount:n}),...a,...this.options,errorTypes:j,parseResultXdr:this.parsers.burnFrom});this.decimals=async(t={})=>await E.fromSimulation({method:"decimals",args:this.spec.funcArgsToScVals("decimals",{}),...t,...this.options,errorTypes:j,parseResultXdr:this.parsers.decimals});this.name=async(t={})=>await E.fromSimulation({method:"name",args:this.spec.funcArgsToScVals("name",{}),...t,...this.options,errorTypes:j,parseResultXdr:this.parsers.name});this.symbol=async(t={})=>await E.fromSimulation({method:"symbol",args:this.spec.funcArgsToScVals("symbol",{}),...t,...this.options,errorTypes:j,parseResultXdr:this.parsers.symbol});this.spec=new U.ContractSpec(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAdkZWNpbWFsAAAAAAQAAAAAAAAABG5hbWUAAAAQAAAAAAAAAAZzeW1ib2wAAAAAABAAAAAA","AAAAAAAAAAAAAAAEbWludAAAAAIAAAAAAAAAAnRvAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAA","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAA=","AAAAAAAAAAAAAAAJYWxsb3dhbmNlAAAAAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAEAAAAL","AAAAAAAAAAAAAAAHYXBwcm92ZQAAAAAEAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAAAAAAEWV4cGlyYXRpb25fbGVkZ2VyAAAAAAAABAAAAAA=","AAAAAAAAAAAAAAAHYmFsYW5jZQAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAL","AAAAAAAAAAAAAAARc3BlbmRhYmxlX2JhbGFuY2UAAAAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAL","AAAAAAAAAAAAAAAIdHJhbnNmZXIAAAADAAAAAAAAAARmcm9tAAAAEwAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAAAAAAANdHJhbnNmZXJfZnJvbQAAAAAAAAQAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAAAAAAEZnJvbQAAABMAAAAAAAAAAnRvAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAA","AAAAAAAAAAAAAAAEYnVybgAAAAIAAAAAAAAABGZyb20AAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAA","AAAAAAAAAAAAAAAJYnVybl9mcm9tAAAAAAAAAwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAAAAAAAIZGVjaW1hbHMAAAAAAAAAAQAAAAQ=","AAAAAAAAAAAAAAAEbmFtZQAAAAAAAAABAAAAEA==","AAAAAAAAAAAAAAAGc3ltYm9sAAAAAAAAAAAAAQAAABA=","AAAAAQAAAAAAAAAAAAAAEEFsbG93YW5jZURhdGFLZXkAAAACAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAHc3BlbmRlcgAAAAAT","AAAAAQAAAAAAAAAAAAAADkFsbG93YW5jZVZhbHVlAAAAAAACAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAAAAAAEWV4cGlyYXRpb25fbGVkZ2VyAAAAAAAABA==","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAABQAAAAEAAAAAAAAACUFsbG93YW5jZQAAAAAAAAEAAAfQAAAAEEFsbG93YW5jZURhdGFLZXkAAAABAAAAAAAAAAdCYWxhbmNlAAAAAAEAAAATAAAAAQAAAAAAAAAFTm9uY2UAAAAAAAABAAAAEwAAAAEAAAAAAAAABVN0YXRlAAAAAAAAAQAAABMAAAAAAAAAAAAAAAVBZG1pbgAAAA==","AAAAAQAAAAAAAAAAAAAADVRva2VuTWV0YWRhdGEAAAAAAAADAAAAAAAAAAdkZWNpbWFsAAAAAAQAAAAAAAAABG5hbWUAAAAQAAAAAAAAAAZzeW1ib2wAAAAAABA="])}};var Ri=100,Mi=180,An=class{constructor(t,e){this.nodeRpcUrlsConfig=t;this.params=e}async buildChangeTrustLineXdrTx(t){let n=await new R.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(t.sender),r=(await this.getContract(xt,t.tokenAddress).name()).result,[s,o]=r.split(":"),A=new R.Asset(s,o),c=R.Operation.changeTrust({asset:A,limit:t.limit});return new R.TransactionBuilder(n,{fee:Ri.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(c).setTimeout(Mi).build().toXDR()}async getBalanceLine(t,e){let a=(await this.getContract(xt,e).name()).result,[r,s]=a.split(":"),o=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new R.Horizon.Server(o).loadAccount(t)).balances.find(u=>(u.asset_type==="credit_alphanum4"||u.asset_type==="credit_alphanum12")&&u.asset_code==r&&u.asset_issuer==s)}async submitTransactionStellar(t){let e=new R.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),n=R.TransactionBuilder.fromXDR(t,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await e.submitTransaction(n)}async simulateAndCheckRestoreTxRequiredSoroban(t,e){let n=new R.SorobanRpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=await n.getAccount(e),r=R.TransactionBuilder.fromXDR(t,this.params.sorobanNetworkPassphrase),s=await n.simulateTransaction(r);if(R.SorobanRpc.Api.isSimulationRestore(s))return new R.TransactionBuilder(a,{fee:(+R.BASE_FEE+ +s.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(s.restorePreamble.transactionData.build()).addOperation(R.Operation.restoreFootprint({})).setTimeout(R.TimeoutInfinite).build().toXDR()}async sendTransactionSoroban(t){let e=new R.SorobanRpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),n=R.TransactionBuilder.fromXDR(t,this.params.sorobanNetworkPassphrase);return e.sendTransaction(n)}async confirmTx(t,e=15){let n=new R.SorobanRpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=await Hn(()=>n.getTransaction(t),r=>r.status===R.SorobanRpc.Api.GetTransactionStatus.NOT_FOUND,e);return a[a.length-1]}getContract(t,e){let n={contractId:e,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new t(n)}};var cn=class{constructor(t,e){this.nodeRpcUrlsConfig=t;this.srb=new An(t,e),this.sol=new on(t,e)}};var _e=(e=>(e.WITH_NATIVE_CURRENCY="native",e.WITH_STABLECOIN="stablecoin",e))(_e||{}),Pt=(e=>(e.INT="int",e.FLOAT="float",e))(Pt||{});var Za=require("big.js"),La=W(require("tronweb")),_a=W(require("web3"));var mn=W(require("erc-20-abi"));var Dn=require("big.js"),ye=class{async checkAllowance(t){let e=await this.getAllowance(t);return(0,Dn.Big)(e).gte((0,Dn.Big)(t.amount))}};var vi="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Ii="0xdac17f958d2ee523a2206206994597c13d831ec7",xi=1e5,Dt=class extends ye{constructor(e,n){super();this.web3=e;this.api=n;this.chainType="EVM"}getAllowance(e){let n=e.token.tokenAddress,a=e.owner,r=e.spender;return this.getAllowanceByTokenAddress(n,a,r)}getAllowanceByTokenAddress(e,n,a){return this.getContract(mn.default,e).methods.allowance(n,a).call()}async getTokenBalance(e){return await this.getContract(mn.default,e.token.tokenAddress).methods.balanceOf(e.account).call()}async getNativeTokenBalance(e){return await this.web3.eth.getBalance(e.account)}async approve(e){if(this.isUsdt(e.tokenAddress)&&await this.getAllowanceByTokenAddress(e.tokenAddress,e.owner,e.spender)!=="0"){let r=await this.buildRawTransactionApprove({...e,amount:"0"});await this.sendRawTransaction(r,e.chainSymbol)}let n=await this.buildRawTransactionApprove(e);return await this.sendRawTransaction(n,e.chainSymbol)}isUsdt(e){return e.toLowerCase()===Ii}async buildRawTransactionApprove(e){let{tokenAddress:n,spender:a,owner:r,amount:s}=e,A=await this.getContract(mn.default,n).methods.approve(a,s==null?vi:qt(s));return{from:r,to:n,value:"0",data:A.encodeABI()}}async sendRawTransaction(e,n){let a=e,r={maxPriorityFeePerGas:null,maxFeePerGas:null};n=="POL"?a.gas=xi:a.gas=await this.web3.eth.estimateGas(e);let{transactionHash:s}=await this.web3.eth.sendTransaction({...a,...r});return{txId:s}}getContract(e,n){return new this.web3.eth.Contract(e,n)}};var Ga=require("@project-serum/anchor"),He=require("@solana/web3.js");var un=class extends ye{constructor(e,n){super();this.solanaRpcUrl=e;this.api=n;this.chainType="SOLANA"}approve(e){throw new J}buildRawTransactionApprove(e){throw new J}buildAnchorProvider(e){let n=new He.Connection(this.solanaRpcUrl,"confirmed"),a=new He.PublicKey(e);return new Ga.AnchorProvider(n,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(e){throw new J}async getTokenBalance(e){let{account:n,token:a}=e;try{let r=await ue(new He.PublicKey(n),new He.PublicKey(a.tokenAddress));return(await nt(r,this.buildAnchorProvider(n))).amount.toString()}catch(r){if(r instanceof Error)return r.message.startsWith("Account does not exist"),"0";throw r}}async getNativeTokenBalance(e){return(await this.buildAnchorProvider(e.account).connection.getBalance(new He.PublicKey(e.account))).toString()}};var Ft=require("stellar-sdk"),gl=require("stellar-sdk/lib/horizon");var ln=class extends ye{constructor(e,n,a){super();this.nodeRpcUrlsConfig=e;this.params=n;this.api=a;this.chainType="SRB"}getAllowance(){throw new J}async getTokenBalance(e){if(!e.token.originTokenAddress)throw new k("OriginTokenAddress missing");let[n,a]=e.token.originTokenAddress.split(":"),r=new Ft.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),s;try{s=await r.loadAccount(e.account)}catch(c){if(c instanceof Ft.NotFoundError)return"0";throw c}let A=s.balances.find(c=>(c.asset_type==="credit_alphanum4"||c.asset_type==="credit_alphanum12")&&c.asset_code==n&&c.asset_issuer==a);return A?.balance?B(A.balance,V[z[e.token.chainSymbol].chainType]).toFixed():"0"}async getNativeTokenBalance(e){let s=(await new Ft.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(e.account)).balances.find(o=>o.asset_type==="native");return s?.balance?B(s.balance,V[z[e.chainSymbol].chainType]).toFixed():"0"}approve(){throw new J}buildRawTransactionApprove(){throw new J}};var Di="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Wt=class i extends ye{constructor(e,n){super();this.tronWeb=e;this.api=n;this.chainType="TRX"}static{this.contracts=new Map}async getAllowance(e){let{token:{tokenAddress:n},owner:a}=e;return(await(await this.getContract(n)).methods.allowance(a,e.spender).call()).toString()}async getTokenBalance(e){return(await(await this.getContract(e.token.tokenAddress)).balanceOf(e.account).call()).toString()}async getNativeTokenBalance(e){return(await this.tronWeb.trx.getBalance(e.account)).toString()}async approve(e){let n=await this.buildRawTransactionApprove(e);return await $t(this.tronWeb,n)}async buildRawTransactionApprove(e){let{tokenAddress:n,spender:a,owner:r,amount:s}=e,o=s==null?Di:qt(s),A=[{type:"address",value:a},{type:"uint256",value:o}];return this.buildRawTransaction(n,"approve(address,uint256)",A,"0",r)}async getContract(e){if(i.contracts.has(e))return i.contracts.get(e);let n=await this.tronWeb.contract().at(e);return i.contracts.set(e,n),n}async buildRawTransaction(e,n,a,r,s){let o=await this.tronWeb.transactionBuilder.triggerSmartContract(e,n,{callValue:r},a,s);if(!o?.result?.result)throw new k("Unknown error: "+JSON.stringify(o,null,2));return o.transaction}};var pn=class{constructor(t,e,n){this.api=t;this.nodeRpcUrlsConfig=e;this.params=n}async getAllowance(t,e){let n=await this.getChainTokenService(t.token.chainSymbol,t.owner,e).getAllowance(t);return b(n,t.token.decimals).toFixed()}async checkAllowance(t,e){return v(t.amount),I("amount",t.amount,t.token.decimals),this.getChainTokenService(t.token.chainSymbol,t.owner,e).checkAllowance(this.prepareCheckAllowanceParams(t))}async approve(t,e){return e.amount&&(v(e.amount),I("amount",e.amount,e.token.decimals)),this.getChainTokenService(e.token.chainSymbol,e.owner,t).approve(this.prepareApproveParams(e))}async buildRawTransactionApprove(t,e){return t.amount&&(v(t.amount),I("amount",t.amount,t.token.decimals)),this.getChainTokenService(t.token.chainSymbol,t.owner,e).buildRawTransactionApprove(this.prepareApproveParams(t))}async getTokenBalance(t,e){let n=await this.getChainTokenService(t.token.chainSymbol,t.account,e).getTokenBalance(t);return t.token.decimals?b(n,t.token.decimals).toFixed():n}async getNativeTokenBalance(t,e){let n=await this.getChainTokenService(t.chainSymbol,t.account,e).getNativeTokenBalance(t);return{int:n,float:b(n,V[z[t.chainSymbol].chainType]).toFixed()}}getChainTokenService(t,e,n){switch(z[t].chainType){case"EVM":{if(n)return new Dt(n,this.api);{let a=this.nodeRpcUrlsConfig.getNodeRpcUrl(t);return new Dt(new _a.default(a),this.api)}}case"TRX":{if(n)return new Wt(n,this.api);{let a=this.nodeRpcUrlsConfig.getNodeRpcUrl(t),r=new La.default({fullHost:a});return r.setAddress(e),new Wt(r,this.api)}}case"SOLANA":{let a=this.nodeRpcUrlsConfig.getNodeRpcUrl(t);return new un(a,this.api)}case"SRB":return new ln(this.nodeRpcUrlsConfig,this.params,this.api)}}prepareCheckAllowanceParams(t){return{...t,amount:B(t.amount,t.token.decimals)}}prepareApproveParams(t){return{tokenAddress:t.token.tokenAddress,owner:t.owner,spender:t.spender,chainSymbol:t.token.chainSymbol,amount:t.amount==null?void 0:(0,Za.Big)(t.amount).toFixed()}}};var Et=class{constructor(t){this.nodeRpcUrls=t}getNodeRpcUrl(t){let e=this.nodeRpcUrls[t];if(e!==void 0)return e;throw new pt(t)}},dn=class{constructor(t,e=At){let n=new Gt(e),a=new Zt(n),r=new Ot(a);this.api=new Lt(r),this.tokenService=new pn(this.api,t,e),this.bridge=new en(this.api,t,e,this.tokenService),this.pool=new sn(this.api,t,e,this.tokenService),this.params=e}async chainDetailsMap(){return this.api.getChainDetailsMap()}async tokens(){return this.api.tokens()}async tokensByChain(t){return(await this.api.getChainDetailsMap())[t].tokens}async getTransferStatus(t,e){return this.api.getTransferStatus(t,e)}async getGasBalance(t,e){return this.api.getGasBalance(t,e)}async checkAddress(t,e,n){return this.api.checkAddress(t,e,n)}async getPendingStatusInfo(t,e,n,a){v(t);let r;e=="float"?(I("amount",t,n.decimals),r=B(t,n.decimals).toFixed()):r=t;let s=Ce(r,n,await G(this.api,n)),o=await G(this.api,a),A=this.getAmountFromVUsdFormatted(s,a,o),c,m=await this.api.getPendingInfo();for(let u in m[a.chainSymbol])u.toLowerCase()===a.tokenAddress.toLowerCase()&&(c=m[a.chainSymbol][u]);if(c){let u=Nn(c.totalSentAmount,o),g=this.getAmountFromVUsdFormatted(s,a,u),f;return(0,he.Big)(g.int).gt(A.int)?f={min:A,max:g}:f={min:g,max:A},{pendingTxs:c.pendingTxs,pendingAmount:{int:Ee(c.totalSentAmount,3,a.decimals).toFixed(0),float:b(c.totalSentAmount,3).toFixed()},estimatedAmount:f}}return{pendingTxs:0,pendingAmount:{int:"0",float:"0"},estimatedAmount:{min:A,max:A}}}async getTokenBalance(t,e){return this.tokenService.getTokenBalance(t,e)}async getNativeTokenBalance(t,e){return this.tokenService.getNativeTokenBalance(t,e)}async calculateFeePercentOnSourceChain(t,e){v(t),I("amountFloat",t,e.decimals);let n=B(t,e.decimals);if(n.eq(0))return 0;let a=Ce(n,e,await G(this.api,e)),r=ee(a,e.decimals);return fn(n,r)}async calculateFeePercentOnDestinationChain(t,e,n){v(t),I("amountFloat",t,e.decimals);let a=B(t,e.decimals);if(a.eq(0))return 0;let r=Ce(a,e,await G(this.api,e)),s=ft(r,n,await G(this.api,n)),o=ee(r,n.decimals);return fn(o,s)}async getAmountToBeReceivedAndGasFeeOptions(t,e,n,a){return v(t),I("amountToSendFloat",t,e.decimals),{amountToSendFloat:(0,he.Big)(t).toFixed(),amountToBeReceivedFloat:await this.getAmountToBeReceived(t,e,n,a),gasFeeOptions:await this.getGasFeeOptions(e,n,a)}}async getAmountToSendAndGasFeeOptions(t,e,n,a){return v(t),I("amountToBeReceivedFloat",t,n.decimals),{amountToSendFloat:await this.getAmountToSend(t,e,n,a),amountToBeReceivedFloat:(0,he.Big)(t).toFixed(),gasFeeOptions:await this.getGasFeeOptions(e,n,a)}}async getAmountToBeReceived(t,e,n,a){let r=await G(this.api,e),s=await G(this.api,n);return this.getAmountToBeReceivedFromPools(t,e,n,r,s,a)}async getAmountToBeReceivedFromChain(t,e,n,a,r,s){let o=await this.pool.getPoolInfoFromChain(e,r),A=await this.pool.getPoolInfoFromChain(n,s);return this.getAmountToBeReceivedFromPools(t,e,n,o,A,a)}getAmountToBeReceivedFromPools(t,e,n,a,r,s){v(t),I("amountToSendFloat",t,e.decimals);let o=B(t,e.decimals);if(s&&s==3){if(!e.cctpAddress||!n.cctpAddress||!e.cctpFeeShare)throw new re("Such route does not support CCTP protocol");let c=o.mul((0,he.Big)(1).minus(e.cctpFeeShare)).round(0,he.Big.roundUp),m=Ee(c,e.decimals,n.decimals).round(0);return b(m,n.decimals).toFixed()}let A=Ce(o,e,a);return this.getAmountFromVUsdFormatted(A,n,r).float}async getAmountToSend(t,e,n,a){let r=await G(this.api,e),s=await G(this.api,n);return this.getAmountToSendFromPools(t,e,n,r,s,a)}async getAmountToSendFromChain(t,e,n,a,r,s){let o=await this.pool.getPoolInfoFromChain(e,r),A=await this.pool.getPoolInfoFromChain(n,s);return this.getAmountToSendFromPools(t,e,n,o,A,a)}getAmountToSendFromPools(t,e,n,a,r,s){v(t),I("amountToBeReceivedFloat",t,n.decimals);let o=B(t,n.decimals);if(s&&s==3){if(!e.cctpAddress||!n.cctpAddress||!e.cctpFeeShare)throw new re("Such route does not support CCTP protocol");let m=o.div((0,he.Big)(1).minus(e.cctpFeeShare)).round(0,he.Big.roundDown),u=Ee(m,n.decimals,e.decimals).round(0);return b(u,e.decimals).toFixed()}let A=Vn(o,n,r),c=On(A,e,a);if((0,he.Big)(c).lte(0))throw new we;return b(c,e.decimals).toFixed()}async getGasFeeOptions(t,e,n){return kn(t.allbridgeChainId,t.chainType,e.allbridgeChainId,t.decimals,n,this.api)}getAverageTransferTime(t,e,n){return t.transferTime?.[e.chainSymbol]?.[n]??null}async getPoolInfoByToken(t){return await this.api.getPoolInfoByKey({chainSymbol:t.chainSymbol,poolAddress:t.poolAddress})}async refreshPoolInfo(t){if(t){let n=(t instanceof Array?t:[t]).map(a=>({chainSymbol:a.chainSymbol,poolAddress:a.poolAddress}));return this.api.refreshPoolInfo(n)}return this.api.refreshPoolInfo()}aprInPercents(t){return Zn(t)}async getExtraGasMaxLimits(t,e){return await Rn(t,e,this.api)}async getVUsdFromAmount(t,e,n){v(t);let a;e=="float"?(I("amount",t,n.decimals),a=B(t,n.decimals).toFixed()):a=t;let r=Ce(a,n,await G(this.api,n));return{int:r,float:b(r,3).toFixed()}}async getAmountFromVUsd(t,e){return this.getAmountFromVUsdFormatted(t,e,await G(this.api,e))}getAmountFromVUsdFormatted(t,e,n){v(t);let a=ft(t,e,n);if((0,he.Big)(a).lt(0))throw new we;return{int:a,float:b(a,e.decimals).toFixed()}}async swapAndBridgeFeeCalculation(t,e,n){return Na(t,{decimals:e.decimals,feeShare:e.feeShare,poolInfo:await G(this.api,e)},{decimals:n.decimals,feeShare:n.feeShare,poolInfo:await G(this.api,n)})}async swapAndBridgeFeeCalculationReverse(t,e,n){let a=Oa(t,{decimals:e.decimals,feeShare:e.feeShare,poolInfo:await G(this.api,e)},{decimals:n.decimals,feeShare:n.feeShare,poolInfo:await G(this.api,n)}),r=a.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if((0,he.Big)(r).lt(0))throw new we;return a}async getSendAmountDetails(t,e,n,a){v(t);let r;return e=="float"?(I("amount",t,n.decimals),r=B(t,n.decimals).toFixed()):r=t,Va(r,n,await G(this.api,n),a,await G(this.api,a))}};function Fi(i){return"solanaRpcUrl"in i}var Fn=class{constructor(t,e=At){let n;Fi(t)?n=new Et({SOL:t.solanaRpcUrl,TRX:t.tronRpcUrl}):n=new Et(t),this.service=new dn(n,e),this.bridge=this.service.bridge,this.pool=this.service.pool,this.utils=new cn(n,e),this.params=e}async chainDetailsMap(){return this.service.chainDetailsMap()}async tokens(){return this.service.tokens()}async tokensByChain(t){return this.service.tokensByChain(t)}async getTransferStatus(t,e){return this.service.getTransferStatus(t,e)}async getGasBalance(t,e){return this.service.getGasBalance(t,e)}async checkAddress(t,e,n){return this.service.checkAddress(t,e,n)}async getPendingStatusInfo(t,e,n,a){return this.service.getPendingStatusInfo(t,e,n,a)}async getTokenBalance(t,e){return this.service.getTokenBalance(t,e)}async getNativeTokenBalance(t,e){return this.service.getNativeTokenBalance(t,e)}async calculateFeePercentOnSourceChain(t,e){return this.service.calculateFeePercentOnSourceChain(t,e)}async calculateFeePercentOnDestinationChain(t,e,n){return this.service.calculateFeePercentOnDestinationChain(t,e,n)}async getAmountToBeReceivedAndGasFeeOptions(t,e,n,a){return this.service.getAmountToBeReceivedAndGasFeeOptions(t,e,n,a)}async getAmountToSendAndGasFeeOptions(t,e,n,a){return this.service.getAmountToSendAndGasFeeOptions(t,e,n,a)}async getAmountToBeReceived(t,e,n,a){return this.service.getAmountToBeReceived(t,e,n,a)}async getAmountToBeReceivedFromChain(t,e,n,a,r,s){return this.service.getAmountToBeReceivedFromChain(t,e,n,a,r,s)}getAmountToBeReceivedFromPools(t,e,n,a,r,s){return this.service.getAmountToBeReceivedFromPools(t,e,n,a,r,s)}async getAmountToSend(t,e,n,a){return this.service.getAmountToSend(t,e,n,a)}async getAmountToSendFromChain(t,e,n,a,r,s){return this.service.getAmountToSendFromChain(t,e,n,a,r,s)}getAmountToSendFromPools(t,e,n,a,r,s){return this.service.getAmountToSendFromPools(t,e,n,a,r,s)}async getGasFeeOptions(t,e,n){return this.service.getGasFeeOptions(t,e,n)}getAverageTransferTime(t,e,n){return this.service.getAverageTransferTime(t,e,n)}async getPoolInfoByToken(t){return this.service.getPoolInfoByToken(t)}async refreshPoolInfo(t){return this.service.refreshPoolInfo(t)}aprInPercents(t){return this.service.aprInPercents(t)}async getExtraGasMaxLimits(t,e){return this.service.getExtraGasMaxLimits(t,e)}async getVUsdFromAmount(t,e,n){return this.service.getVUsdFromAmount(t,e,n)}async getAmountFromVUsd(t,e){return this.service.getAmountFromVUsd(t,e)}async swapAndBridgeFeeCalculation(t,e,n){return this.service.swapAndBridgeFeeCalculation(t,e,n)}async swapAndBridgeFeeCalculationReverse(t,e,n){return this.service.swapAndBridgeFeeCalculationReverse(t,e,n)}async getSendAmountDetails(t,e,n,a){return this.service.getSendAmountDetails(t,e,n,a)}};0&&(module.exports={AddressStatus,AllbridgeCoreSdk,AmountFormat,AmountNotEnoughError,ArgumentInvalidDecimalsError,CCTPDoesNotSupportedError,ChainSymbol,ChainType,ErrorCode,ExtraGasMaxLimitExceededError,FeePaymentMethod,InsufficientPoolLiquidityError,InvalidAmountError,InvalidGasFeePaymentOptionError,InvalidMessengerOptionError,InvalidTxError,JupiterError,Messenger,MethodNotSupportedError,NodeRpcUrlNotInitializedError,SdkError,SdkRootError,SolanaAutoTxFee,TimeoutError,TxTooLargeError,VerifyTxError,mainnet,nodeRpcUrlsDefault,nodeUrlsDefault,testnet,testnetNodeRpcUrlsDefault,testnetNodeUrlsDefault});
|
|
5
|
+
&onlyDirectRoutes=true`)}catch(A){throw A instanceof rt.AxiosError&&A.response&&A.response.data&&A.response.data.error?new Y(A.response.data.error):new Y("Cannot get route")}let r;try{r=await rt.default.post("https://quote-api.jup.ag/v6/swap",JSON.stringify({quoteResponse:a.data,userPublicKey:t,wrapAndUnwrapSol:!0}))}catch(A){throw A instanceof rt.AxiosError&&A.response&&A.response.data&&A.response.data.error?new Y(A.response.data.error):new Y("Cannot get swap transaction")}let s;if(r?.data?.swapTransaction)s=r.data.swapTransaction;else throw new Y("Cannot get swap transaction");let o=Buffer.from(s,"base64");return{tx:Ke.VersionedTransaction.deserialize(o)}}async amendJupiterWithSdkTx(t,e){try{let n=await Xe(t,this.connection),a=await Xe(e,this.connection),r=Ke.TransactionMessage.decompile(t.message,{addressLookupTableAccounts:n}),s=Ke.TransactionMessage.decompile(e.message,{addressLookupTableAccounts:a});return s.instructions.shift(),r.instructions.push(...s.instructions),n.push(...a),t.message=r.compileToV0Message(n),e.message.header.numRequiredSignatures===2&&t.signatures.length===1&&t.signatures.push(e.signatures[0]),t}catch(n){throw n instanceof Error&&n.message?new Y(`Some error occurred during creation final swap and bridge transaction. ${n.message}`):new Y("Some error occurred during creation final swap and bridge transaction")}}};var Dn=1e6,Ht=class extends le{constructor(e,n,a){super();this.solanaRpcUrl=e;this.params=n;this.api=a;this.chainType="SOLANA";this.jupiterService=new Jt(e)}async buildRawTransactionSwap(e){let n=Oe(this.chainType,e);return await this.buildSwapTransaction(n,e.sourceToken.poolAddress,e.destinationToken.poolAddress,e.txFeeParams)}async buildSwapTransaction(e,n,a,r){let{fromAccountAddress:s,amount:o,contractAddress:A,fromTokenAddress:c,toTokenAddress:m,toAccountAddress:u,minimumReceiveAmount:g}=e,f=s,y=A,h=c,d=m,p=a,P=u,T=new C.PublicKey(f),L=Ne(this.solanaRpcUrl,T.toString()),M=new x.Program(wt,y,L),S=await et(M.programId),q=await Ue(M.programId),N=new C.PublicKey(h),Te=await tt(N,M.programId),be=new C.PublicKey(n),ve=await ue(T,N),oe=new C.PublicKey(P),H=new C.PublicKey(d),ie=await tt(H,M.programId),Ae=new C.PublicKey(p),$=await ue(oe,H),Pe=[x.web3.ComputeBudgetProgram.setComputeUnitLimit({units:Dn})];try{await at($,L)}catch{let Ka=await x.Spl.associatedToken(L).methods.create().accounts({mint:H,owner:oe,associatedAccount:$}).instruction();Pe.push(Ka)}let Se=await M.methods.swap(new x.BN(o),new x.BN(g||0)).accounts({payer:T,config:q,bridgeAuthority:S,user:T,sendBridgeToken:Te,sendMint:N,sendPool:be,sendUserToken:ve,receiveBridgeToken:ie,receiveMint:H,receivePool:Ae,receiveUserToken:$}).preInstructions(Pe).transaction(),ce=L.connection;return Se.recentBlockhash=(await ce.getLatestBlockhash()).blockhash,Se.feePayer=T,await it(Se,r,this.solanaRpcUrl),await this.convertToVersionedTransaction(Se,ce)}async buildRawTransactionSend(e){let n=await xe(this.chainType,e,this.api),a=this.addPoolAddress(e,n),r=a.gasFeePaymentMethod=="stablecoin",s;if(r)try{let c=(0,De.Big)(a.fee);a.extraGas&&(c=c.plus(a.extraGas)),a=await this.convertStableCoinFeeAndExtraGasToNativeCurrency(e.sourceToken.decimals,a);let{tx:m}=await this.jupiterService.getJupiterSwapTx(e.fromAccountAddress,e.sourceToken.tokenAddress,c.toFixed(0));if(s=m,a.amount=(0,De.Big)(a.amount).minus(c).toFixed(0),(0,De.Big)(a.amount).lte(0))throw new Ve(`Amount not enough to pay fee, ${b((0,De.Big)(a.amount).minus(1).neg(),e.sourceToken.decimals).toFixed()} stables is missing`)}catch(c){throw c instanceof F?c:c instanceof Error&&c.message?new Y(`Some error occurred during creation Jupiter swap transaction. ${c.message}`):new Y("Some error occurred during creation Jupiter swap transaction")}let o,A;switch(n.messenger){case 1:{let c=await this.prepareSwapAndBridgeData(a);o=await this.buildSwapAndBridgeAllbridgeTransaction(c);break}case 2:{let c=await this.prepareSwapAndBridgeData(a),{transaction:m,messageAccount:u}=await this.buildSwapAndBridgeWormholeTransaction(c);o=m,A=u;break}case 3:{let c=await this.prepareSwapAndBridgeCctpData(a),{transaction:m,messageSentEventDataKeypair:u}=await this.buildSwapAndBridgeCctpTransaction(e.destinationToken.chainSymbol,c);o=m,A=u;break}}if(r){if(!s)throw new Y("Swap tx is absent");o=await this.jupiterService.amendJupiterWithSdkTx(s,o)}return await ba(o,e.txFeeParams,this.solanaRpcUrl),A&&o.sign([A]),o}addPoolAddress(e,n){return{...n,poolAddress:e.sourceToken.poolAddress}}async convertStableCoinFeeAndExtraGasToNativeCurrency(e,n){if(n.gasFeePaymentMethod=="stablecoin"){let a=(await this.api.getReceiveTransactionCost({sourceChainId:n.fromChainId,destinationChainId:n.toChainId,messenger:n.messenger})).sourceNativeTokenPrice;n.fee=(0,De.Big)(n.fee).div(a).mul((0,De.Big)(10).pow(V.SOLANA-e)).toFixed(0),n.extraGas&&(n.extraGas=(0,De.Big)(n.extraGas).div(a).mul((0,De.Big)(10).pow(V.SOLANA-e)).toFixed(0)),n.gasFeePaymentMethod="native"}return n}getExtraGasInstruction(e,n,a){return x.web3.SystemProgram.transfer({fromPubkey:n,toPubkey:a,lamports:+e})}async prepareSwapAndBridgeData(e){let{amount:n,contractAddress:a,fromChainId:r,fromAccountAddress:s,fromTokenAddress:o,toChainId:A,toAccountAddress:c,toTokenAddress:m,poolAddress:u,extraGas:g}=e,f=o,y=s,h=A,d=m,p=c,P=a,T=r,L=Ne(this.solanaRpcUrl,y),M=new x.Program(wt,P,L),S=Array.from(nt()),q=new C.PublicKey(u),N=await ya(n,M,q),Te=await $n(S,M.programId),be=await et(M.programId),ve=await ue(new C.PublicKey(y),new C.PublicKey(f)),oe=await tt(new C.PublicKey(f),M.programId),H=await Sn(h,M.programId),ie=await ta(h,Buffer.from(d),M.programId),Ae=await Ue(M.programId),$=await M.account.config.fetch(Ae),Pe=await ht(h,$.gasOracleProgramId),Se=await ht(T,$.gasOracleProgramId),ce=ha({amount:N,recipient:Buffer.from(p),nonce:Buffer.from(S),receiveToken:Buffer.from(d),destinationChainId:h,sourceChainId:T,chainBridge:(await et(M.programId)).toBuffer()}),w={};return w.bridge=M,w.amount=new x.BN(n),w.vusdAmount=new x.BN(N),w.nonce=S,w.recipient=Array.from(p),w.receiveToken=Array.from(d),w.poolAccount=q,w.lockAccount=Te,w.bridgeAuthority=be,w.userToken=ve,w.bridgeTokenAccount=oe,w.chainBridgeAccount=H,w.otherBridgeTokenAccount=ie,w.userAccount=new C.PublicKey(y),w.destinationChainId=h,w.mint=new C.PublicKey(f),w.config=Ae,w.configAccountInfo=$,w.gasPrice=Pe,w.thisGasPrice=Se,w.message=ce,g&&(w.extraGasInstruction=this.getExtraGasInstruction(g,w.userAccount,Ae)),w}async buildSwapAndBridgeAllbridgeTransaction(e){let{bridge:n,vusdAmount:a,nonce:r,recipient:s,receiveToken:o,poolAccount:A,lockAccount:c,bridgeAuthority:m,userToken:u,bridgeTokenAccount:g,chainBridgeAccount:f,otherBridgeTokenAccount:y,userAccount:h,destinationChainId:d,mint:p,config:P,configAccountInfo:T,gasPrice:L,thisGasPrice:M,message:S,extraGasInstruction:q}=e,N=T.allbridgeMessengerProgramId,Te=await wn(d,N),be=await Ue(N),ve=await na(S,N),oe=[];q&&oe.push(q);let H=await n.methods.swapAndBridge({vusdAmount:a,nonce:r,destinationChainId:d,recipient:s,receiveToken:o}).accounts({mint:p,user:h,config:P,lock:c,pool:A,gasPrice:L,thisGasPrice:M,bridgeAuthority:m,userToken:u,bridgeToken:g,chainBridge:f,messenger:N,messengerGasUsage:Te,messengerConfig:be,sentMessageAccount:ve,otherBridgeToken:y}).preInstructions([x.web3.ComputeBudgetProgram.setComputeUnitLimit({units:Dn})]).postInstructions(oe).transaction(),ie=Ne(this.solanaRpcUrl,h.toString()).connection;return H.recentBlockhash=(await ie.getLatestBlockhash()).blockhash,H.feePayer=h,await this.convertToVersionedTransaction(H,ie)}async convertToVersionedTransaction(e,n){let a=await n.getAddressLookupTable(new C.PublicKey(this.params.solanaLookUpTable)).then(s=>s.value);if(!a)throw new k("Cannot find allbridgeLookupTableAccount");let r=new x.web3.TransactionMessage({payerKey:e.feePayer,recentBlockhash:e.recentBlockhash,instructions:e.instructions}).compileToV0Message([a]);return new x.web3.VersionedTransaction(r)}async buildSwapAndBridgeWormholeTransaction(e){let{bridge:n,vusdAmount:a,nonce:r,recipient:s,receiveToken:o,poolAccount:A,lockAccount:c,bridgeAuthority:m,userToken:u,bridgeTokenAccount:g,chainBridgeAccount:f,otherBridgeTokenAccount:y,userAccount:h,destinationChainId:d,mint:p,config:P,configAccountInfo:T,gasPrice:L,thisGasPrice:M,message:S,extraGasInstruction:q}=e,N=this.params.wormholeMessengerProgramId,[Te]=C.PublicKey.findProgramAddressSync([Buffer.from("Bridge")],new C.PublicKey(N)),[be]=C.PublicKey.findProgramAddressSync([Buffer.from("fee_collector")],new C.PublicKey(N)),[ve]=C.PublicKey.findProgramAddressSync([Buffer.from("Sequence"),m.toBuffer()],new C.PublicKey(N)),oe=await wn(d,T.wormholeMessengerProgramId),H=await Ue(T.wormholeMessengerProgramId),ie=C.Keypair.generate(),Ae=Ne(this.solanaRpcUrl,h.toString()),$=await Ae.connection.getAccountInfo(Te);if($==null)throw new k("Cannot fetch wormhole bridge account info");let Pe=new x.BN($.data.slice(16,24),"le").toString(),Se=C.SystemProgram.transfer({fromPubkey:h,toPubkey:be,lamports:+Pe}),ce=[];q&&ce.push(q);let w={mint:p,user:h,config:P,lock:c,pool:A,gasPrice:L,thisGasPrice:M,bridgeAuthority:m,userToken:u,bridgeToken:g,chainBridge:f,otherBridgeToken:y,messengerGasUsage:oe,wormholeProgram:N,bridge:Te,message:ie.publicKey,wormholeMessenger:T.wormholeMessengerProgramId,sequence:ve,feeCollector:be,wormholeMessengerConfig:H,clock:x.web3.SYSVAR_CLOCK_PUBKEY},Et=await n.methods.swapAndBridgeWormhole({vusdAmount:a,nonce:r,destinationChainId:d,recipient:s,receiveToken:o}).accounts(w).preInstructions([x.web3.ComputeBudgetProgram.setComputeUnitLimit({units:Dn}),Se]).postInstructions(ce).signers([ie]).transaction();return Et.recentBlockhash=(await Ae.connection.getLatestBlockhash()).blockhash,Et.feePayer=h,{transaction:await this.convertToVersionedTransaction(Et,Ae.connection),messageAccount:ie}}async prepareSwapAndBridgeCctpData(e){let{contractAddress:n,amount:a,fromAccountAddress:r,fromTokenAddress:s,toChainId:o,toAccountAddress:A,toTokenAddress:c,extraGas:m}=e,u=n;if(!u)throw new re("Such route does not support CCTP protocol");let g=4,f=r,y=c,h=A,d=Ne(this.solanaRpcUrl,f),p=new x.Program(da,u,d),P=new C.PublicKey(s),T=await aa(P,p.programId),L=new C.PublicKey(f),M=await p.account.cctpBridge.fetch(T),S={};return S.cctpBridge=p,S.cctpBridgeAccount=T,S.cctpAddressAccount=new C.PublicKey(u),S.amount=new x.BN(a),S.recipient=Array.from(h),S.receiveToken=Array.from(y),S.userToken=await ue(L,P),S.bridgeAuthority=await ea(T,p.programId),S.bridgeTokenAccount=await ia(P,p.programId),S.chainBridgeAccount=await Sn(o,p.programId),S.userAccount=L,S.destinationChainId=o,S.mint=P,S.gasPrice=await ht(o,M.gasOracleProgramId),S.thisGasPrice=await ht(g,M.gasOracleProgramId),S.provider=d,m&&(S.extraGasInstruction=this.getExtraGasInstruction(m,S.userAccount,T)),S}async buildSwapAndBridgeCctpTransaction(e,n){let{cctpBridge:a,cctpBridgeAccount:r,amount:s,recipient:o,receiveToken:A,bridgeAuthority:c,userToken:m,bridgeTokenAccount:u,chainBridgeAccount:g,userAccount:f,destinationChainId:y,mint:h,gasPrice:d,thisGasPrice:p,extraGasInstruction:P,provider:T}=n,L=this.params.cctpParams.cctpDomains[e],M=this.params.cctpParams.cctpTransmitterProgramId,S=this.params.cctpParams.cctpTokenMessengerMinter;if(L==null||!M||!S)throw new k("CCTP is not configured");let q=new C.PublicKey(M),N=new C.PublicKey(S),{messageTransmitterAccount:Te,tokenMessenger:be,tokenMessengerEventAuthority:ve,tokenMinter:oe,localToken:H,remoteTokenMessengerKey:ie,authorityPda:Ae}=sa(L,h,q,N),$=[];P&&$.push(P);let Pe=C.Keypair.generate(),Se=ra(a.programId,Pe.publicKey),ce=await a.methods.bridge({amount:s,destinationChainId:y,recipient:o,receiveToken:A}).accounts({mint:h,user:f,cctpBridge:r,messageSentEventData:Pe.publicKey,lock:Se,cctpMessenger:N,messageTransmitterProgram:q,messageTransmitterAccount:Te,tokenMessenger:be,tokenMinter:oe,localToken:H,remoteTokenMessengerKey:ie,authorityPda:Ae,eventAuthority:ve,bridgeToken:u,gasPrice:d,thisGasPrice:p,chainBridge:g,userToken:m,bridgeAuthority:c}).preInstructions([x.web3.ComputeBudgetProgram.setComputeUnitLimit({units:2e6})]).postInstructions($).transaction(),w=T.connection;return ce.recentBlockhash=(await w.getLatestBlockhash()).blockhash,ce.feePayer=f,{transaction:await this.convertToVersionedTransaction(ce,w),messageSentEventDataKeypair:Pe}}send(e){throw new J}};var Ca=require("big.js"),zt=require("stellar-sdk");var Qe=require("stellar-sdk");var Q=require("stellar-sdk");var pe=class{constructor(t){this.value=t}unwrapErr(){throw new Error("No error")}unwrap(){return this.value}isOk(){return!0}isErr(){return!this.isOk()}},se=class{constructor(t){this.error=t}unwrapErr(){return this.error}unwrap(){throw new Error(this.error.message)}isOk(){return!1}isErr(){return!this.isOk()}},bi=/Error\(Contract, #(\d+)\)/,Pi="GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF",E=class i{constructor(t){this.options=t;this.simulate=async()=>(this.simulation=await this.server.simulateTransaction(this.raw),Q.SorobanRpc.Api.isSimulationSuccess(this.simulation)&&(this.raw=Q.SorobanRpc.assembleTransaction(this.raw,this.simulation).build()),this);this.getAccount=()=>new Q.Account(Pi,"0");this.server=new Q.SorobanRpc.Server(this.options.rpcUrl,{allowHttp:this.options.rpcUrl.startsWith("http://")})}static async fromSimulation(t){let e=new i(t),n=new Q.Contract(t.contractId);return e.raw=new Q.TransactionBuilder(e.getAccount(),{fee:t.fee?.toString(10)??Q.BASE_FEE,networkPassphrase:t.networkPassphrase}).addOperation(n.call(t.method,...t.args??[])).setTimeout(Q.TimeoutInfinite).build(),await e.simulate()}get simulationData(){if(this.simulationResult&&this.simulationTransactionData)return{result:this.simulationResult,transactionData:this.simulationTransactionData};let t=this.simulation;if(Q.SorobanRpc.Api.isSimulationError(t))throw new Error(`Transaction simulation failed: "${t.error}"`);if(!t.result)throw new Error(`Expected an invocation simulation, but got no 'result' field. Simulation: ${JSON.stringify(t,null,2)}`);return this.simulationResult=t.result,this.simulationTransactionData=t.transactionData.build(),{result:this.simulationResult,transactionData:this.simulationTransactionData}}get result(){try{return this.options.parseResultXdr(this.simulationData.result.retval)}catch(t){let e=this.parseError(t.toString());if(e)return e;throw t}}parseError(t){if(!this.options.errorTypes)return;let e=t.match(bi);if(!e)return;let n=parseInt(e[1],10),a=this.options.errorTypes[n];if(a.message)return new se(a)}};var Z=require("stellar-sdk");var Fe=class i{constructor(t){this.options=t;this.simulate=async()=>(this.simulation=await this.server.simulateTransaction(this.raw),Z.SorobanRpc.Api.isSimulationSuccess(this.simulation)&&(this.raw=Z.SorobanRpc.assembleTransaction(this.raw,this.simulation).build()),this);this.server=new Z.SorobanRpc.Server(this.options.rpcUrl,{allowHttp:this.options.rpcUrl.startsWith("http://")})}static async xdrFromSimulation(t){let e=new i(t),n=new Z.Contract(t.contractId);e.raw=new Z.TransactionBuilder(await e.server.getAccount(t.account),{fee:t.fee?.toString(10)??Z.BASE_FEE,networkPassphrase:t.networkPassphrase}).addOperation(n.call(t.method,...t.args??[])).setTimeout(Z.TimeoutInfinite).build();let a=await e.simulate(),r=a.raw.operations[0];return a.raw=new Z.TransactionBuilder(await e.server.getAccount(t.account),{fee:a.raw.fee,networkPassphrase:t.networkPassphrase}).setTimeout(Z.TimeoutInfinite).addOperation(Z.Operation.invokeHostFunction({...r,auth:r.auth??[]})).build(),await a.simulate(),a.raw.toXDR()}};var wa={0:{message:""},1:{message:""},2:{message:""},3:{message:""},4:{message:""},5:{message:""},6:{message:""},7:{message:""},8:{message:""},9:{message:""},103:{message:""},104:{message:""},105:{message:""},106:{message:""},107:{message:""},108:{message:""},109:{message:""},203:{message:""},204:{message:""},205:{message:""},206:{message:""},207:{message:""},208:{message:""},209:{message:""},210:{message:""},211:{message:""},212:{message:""},214:{message:""},215:{message:""},216:{message:""},217:{message:""},218:{message:""},300:{message:""},301:{message:""},302:{message:""},303:{message:""},400:{message:""}},Bt=class{constructor(t){this.options=t;this.parsers={swapAndBridge:t=>t instanceof se?t:new pe(this.spec.funcResToNative("swap_and_bridge",t)),swap:t=>t instanceof se?t:new pe(this.spec.funcResToNative("swap",t))};this.swapAndBridge=async({sender:t,token:e,amount:n,recipient:a,destination_chain_id:r,receive_token:s,nonce:o,gas_amount:A,fee_token_amount:c},m={})=>await Fe.xdrFromSimulation({method:"swap_and_bridge",args:this.spec.funcArgsToScVals("swap_and_bridge",{sender:new Qe.Address(t),token:new Qe.Address(e),amount:n,recipient:a,destination_chain_id:r,receive_token:s,nonce:o,gas_amount:A,fee_token_amount:c}),account:t,...m,...this.options,errorTypes:wa,parseResultXdr:this.parsers.swapAndBridge});this.swap=async({sender:t,amount:e,token:n,receive_token:a,recipient:r,receive_amount_min:s},o={})=>await Fe.xdrFromSimulation({method:"swap",args:this.spec.funcArgsToScVals("swap",{sender:new Qe.Address(t),amount:e,token:n,receive_token:a,recipient:new Qe.Address(r),receive_amount_min:s}),account:t,...o,...this.options,errorTypes:wa,parseResultXdr:this.parsers.swap});this.spec=new Qe.ContractSpec(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAApnYXNfb3JhY2xlAAAAAAATAAAAAAAAAAxuYXRpdmVfdG9rZW4AAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9hbmRfYnJpZGdlAAAAAAkAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACXJlY2lwaWVudAAAAAAAA+4AAAAgAAAAAAAAABRkZXN0aW5hdGlvbl9jaGFpbl9pZAAAAAQAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAFbm9uY2UAAAAAAAAMAAAAAAAAAApnYXNfYW1vdW50AAAAAAAKAAAAAAAAABBmZWVfdG9rZW5fYW1vdW50AAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOcmVjZWl2ZV90b2tlbnMAAAAAAAkAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAA9zb3VyY2VfY2hhaW5faWQAAAAABAAAAAAAAAANcmVjZWl2ZV90b2tlbgAAAAAAA+4AAAAgAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAAAAAAJY2xhaW1hYmxlAAAAAAAAAQAAAAAAAAAJZXh0cmFfZ2FzAAAAAAAD6AAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAEc3dhcAAAAAYAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAA+4AAAAgAAAAAAAAAA1yZWNlaXZlX3Rva2VuAAAAAAAD7gAAACAAAAAAAAAACXJlY2lwaWVudAAAAAAAABMAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAJc3RvcF9zd2FwAAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc3RhcnRfc3dhcAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X2dhc19vcmFjbGUAAAAAAAEAAAAAAAAAC25ld19hZGRyZXNzAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X3JlYmFsYW5jZXIAAAAAAAEAAAAAAAAACnJlYmFsYW5jZXIAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X21lc3NlbmdlcgAAAAAAAAEAAAAAAAAACW1lc3NlbmdlcgAAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X2dhc191c2FnZQAAAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAJZ2FzX3VzYWdlAAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAPcmVnaXN0ZXJfYnJpZGdlAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAOYnJpZGdlX2FkZHJlc3MAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAQYWRkX2JyaWRnZV90b2tlbgAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAANdG9rZW5fYWRkcmVzcwAAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATcmVtb3ZlX2JyaWRnZV90b2tlbgAAAAACAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAIYWRkX3Bvb2wAAAACAAAAAAAAAARwb29sAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATd2l0aGRyYXdfZ2FzX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAfd2l0aGRyYXdfYnJpZGdpbmdfZmVlX2luX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAVaGFzX3Byb2Nlc3NlZF9tZXNzYWdlAAAAAAAAAQAAAAAAAAAHbWVzc2FnZQAAAAPuAAAAIAAAAAEAAAPpAAAAAQAAAAM=","AAAAAAAAAAAAAAAUaGFzX3JlY2VpdmVkX21lc3NhZ2UAAAABAAAAAAAAAAdtZXNzYWdlAAAAA+4AAAAgAAAAAQAAA+kAAAABAAAAAw==","AAAAAAAAAAAAAAAQZ2V0X3Bvb2xfYWRkcmVzcwAAAAEAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAKZ2V0X2NvbmZpZwAAAAAAAAAAAAEAAAPpAAAH0AAAAAZCcmlkZ2UAAAAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAUZ2V0X3RyYW5zYWN0aW9uX2Nvc3QAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAANZ2V0X2dhc191c2FnZQAAAAAAAAEAAAAAAAAACGNoYWluX2lkAAAABAAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAOZ2V0X2dhc19vcmFjbGUAAAAAAAAAAAABAAAD6QAAABMAAAAD","AAAAAAAAAAAAAAASZ2V0X2Fub3RoZXJfYnJpZGdlAAAAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAB9AAAAANQW5vdGhlckJyaWRnZQAAAAAAAAM=","AAAAAQAAAAAAAAAAAAAAB1N3YXBwZWQAAAAABgAAAAAAAAAOcmVjZWl2ZV9hbW91bnQAAAAAAAoAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAAEwAAAAAAAAALc2VuZF9hbW91bnQAAAAACgAAAAAAAAAKc2VuZF90b2tlbgAAAAAD7gAAACAAAAAAAAAABnNlbmRlcgAAAAAAEw==","AAAAAQAAAAAAAAAAAAAAClRva2Vuc1NlbnQAAAAAAAUAAAAAAAAABmFtb3VudAAAAAAACgAAAAAAAAAUZGVzdGluYXRpb25fY2hhaW5faWQAAAAEAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAADlRva2Vuc1JlY2VpdmVkAAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACWNsYWltYWJsZQAAAAAAAAEAAAAAAAAAB21lc3NhZ2UAAAAD7gAAACAAAAAAAAAABW5vbmNlAAAAAAAADAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAAClJlY2VpdmVGZWUAAAAAAAMAAAAAAAAAF2JyaWRnZV90cmFuc2FjdGlvbl9jb3N0AAAAAAoAAAAAAAAACWV4dHJhX2dhcwAAAAAAAAoAAAAAAAAAGG1lc3NhZ2VfdHJhbnNhY3Rpb25fY29zdAAAAAo=","AAAAAQAAAAAAAAAAAAAAFUJyaWRnaW5nRmVlRnJvbVRva2VucwAAAAAAAAIAAAAAAAAAEGZlZV90b2tlbl9hbW91bnQAAAAKAAAAAAAAAANnYXMAAAAACg==","AAAAAQAAAAAAAAAAAAAADUFub3RoZXJCcmlkZ2UAAAAAAAACAAAAAAAAAAdhZGRyZXNzAAAAA+4AAAAgAAAAAAAAAAZ0b2tlbnMAAAAAA+wAAAPuAAAAIAAAAAE=","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAABgAAAGBwcmVjb21wdXRlZCB2YWx1ZXMgb2YgdGhlIHNjYWxpbmcgZmFjdG9yIHJlcXVpcmVkIGZvciBwYXlpbmcgdGhlIGJyaWRnaW5nIGZlZSB3aXRoIHN0YWJsZSB0b2tlbnMAAAAeYnJpZGdpbmdfZmVlX2NvbnZlcnNpb25fZmFjdG9yAAAAAAPsAAAAEwAAAAoAAAAAAAAACGNhbl9zd2FwAAAAAQAAAGxwcmVjb21wdXRlZCB2YWx1ZXMgdG8gZGl2aWRlIGJ5IHRvIGNoYW5nZSB0aGUgcHJlY2lzaW9uIGZyb20gdGhlIEdhcyBPcmFjbGUgcHJlY2lzaW9uIHRvIHRoZSB0b2tlbiBwcmVjaXNpb24AAAAWZnJvbV9nYXNfb3JhY2xlX2ZhY3RvcgAAAAAD7AAAABMAAAAKAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAAVwb29scwAAAAAAA+wAAAPuAAAAIAAAABMAAAAAAAAACnJlYmFsYW5jZXIAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAwAAAAEAAAAAAAAAC090aGVyQnJpZGdlAAAAAAEAAAAEAAAAAQAAAAAAAAALU2VudE1lc3NhZ2UAAAAAAQAAA+4AAAAgAAAAAQAAAAAAAAAPUmVjZWl2ZWRNZXNzYWdlAAAAAAEAAAPuAAAAIA==","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAJQAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"])}};var jt=class extends le{constructor(e,n,a){super();this.nodeRpcUrlsConfig=e;this.params=n;this.api=a;this.chainType="SRB"}async buildRawTransactionSend(e){let n=await xe(this.chainType,e,this.api);return await this.buildRawTransactionSendFromParams(n)}async buildRawTransactionSendFromParams(e){let{amount:n,contractAddress:a,fromAccountAddress:r,fromTokenAddress:s,toChainId:o,toAccountAddress:A,toTokenAddress:c,fee:m,gasFeePaymentMethod:u,extraGas:g}=e,f=m;g&&(f=(0,Ca.Big)(f).plus(g).toFixed());let y=this.getContract(Bt,a),h;return u==="stablecoin"?h=await y.swapAndBridge({sender:r,token:zt.Address.contract(Buffer.from(s)).toString(),amount:BigInt(n),recipient:Buffer.from(A),destination_chain_id:+o,receive_token:Buffer.from(c),nonce:kn(),gas_amount:BigInt(0),fee_token_amount:BigInt(f)}):h=await y.swapAndBridge({sender:r,token:zt.Address.contract(Buffer.from(s)).toString(),amount:BigInt(n),recipient:Buffer.from(A),destination_chain_id:+o,receive_token:Buffer.from(c),nonce:kn(),gas_amount:BigInt(f),fee_token_amount:BigInt(0)}),h}async buildRawTransactionSwap(e){let n=Oe(this.chainType,e);return await this.buildRawTransactionSwapFromParams(n)}async buildRawTransactionSwapFromParams(e){let{amount:n,contractAddress:a,fromAccountAddress:r,fromTokenAddress:s,toAccountAddress:o,toTokenAddress:A,minimumReceiveAmount:c}=e;return await this.getContract(Bt,a).swap({sender:r,amount:BigInt(n),token:zt.Address.contract(Buffer.from(s)).toBuffer(),receive_token:Buffer.from(A),recipient:o,receive_amount_min:BigInt(c)})}send(e){throw new J}getContract(e,n){let a={contractId:n,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new e(a)}};var Ra=require("big.js");var Ba=W(require("bn.js"));function qt(i){return"0x"+new Ba.default(i).toString("hex")}function ka(i){return new Promise(t=>setTimeout(()=>t(),i))}var st=i=>(...t)=>new Promise((e,n)=>i(...t,(a,r)=>a?n(a):e(r)));async function $t(i,t){let e=await i.trx.sign(t);if(!e.signature)throw new Ge("Transaction was not signed properly");let a=(await i.trx.sendRawTransaction(e)).txid;return await Si(i,a),{txId:a}}async function Si(i,t,e=1e4){let n=Date.now();for(;;){if(Date.now()-n>e)throw new je("Transaction not found");let a=await i.trx.getUnconfirmedTransactionInfo(t);if(!a?.receipt){await ka(2e3);continue}if(a.receipt.result==="SUCCESS")return a;throw new je(`Transaction status is ${a.receipt.result}`)}}var kt=class extends le{constructor(e,n){super();this.tronWeb=e;this.api=n;this.chainType="TRX"}async send(e){let n=await xe(this.chainType,e,this.api),a=await this.buildRawTransactionSendFromParams(n);return await $t(this.tronWeb,a)}async buildRawTransactionSwap(e){let n=Oe(this.chainType,e);return await this.buildRawTransactionSwapFromParams(n)}async buildRawTransactionSwapFromParams(e){let{amount:n,contractAddress:a,fromAccountAddress:r,fromTokenAddress:s,toAccountAddress:o,toTokenAddress:A,minimumReceiveAmount:c}=e,m=[{type:"uint256",value:n},{type:"bytes32",value:s},{type:"bytes32",value:A},{type:"address",value:o},{type:"uint256",value:c}];return this.buildRawTransaction(a,"swap(uint256,bytes32,bytes32,address,uint256)",m,"0",r)}async buildRawTransactionSend(e){let n=await xe(this.chainType,e,this.api);return this.buildRawTransactionSendFromParams(n)}async buildRawTransactionSendFromParams(e){let{amount:n,contractAddress:a,fromAccountAddress:r,fromTokenAddress:s,toChainId:o,toAccountAddress:A,toTokenAddress:c,messenger:m,fee:u,gasFeePaymentMethod:g,extraGas:f}=e,y=u;f&&(y=(0,Ra.Big)(y).plus(f).toFixed());let h=nt().toJSON().data,d,p,P;return m==3?(g==="stablecoin"?(d=[{type:"uint256",value:n},{type:"bytes32",value:A},{type:"uint256",value:o},{type:"uint256",value:y}],p="0"):(d=[{type:"uint256",value:n},{type:"bytes32",value:A},{type:"uint256",value:o},{type:"uint256",value:0}],p=y),P="bridge(uint256,bytes32,uint256,uint256)"):(g==="stablecoin"?(d=[{type:"bytes32",value:s},{type:"uint256",value:n},{type:"bytes32",value:A},{type:"uint256",value:o},{type:"bytes32",value:c},{type:"uint256",value:h},{type:"uint8",value:m},{type:"uint256",value:y}],p="0"):(d=[{type:"bytes32",value:s},{type:"uint256",value:n},{type:"bytes32",value:A},{type:"uint256",value:o},{type:"bytes32",value:c},{type:"uint256",value:h},{type:"uint8",value:m},{type:"uint256",value:0}],p=y),P="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)"),this.buildRawTransaction(a,P,d,p,r)}async buildRawTransaction(e,n,a,r,s){let o=await this.tronWeb.transactionBuilder.triggerSmartContract(e,n,{callValue:r},a,s);if(!o?.result?.result)throw new k("Unknown error: "+JSON.stringify(o,null,2));return o.transaction}};var en=class{constructor(t,e,n,a){this.api=t;this.nodeRpcUrlsConfig=e;this.params=n;this.tokenService=a;this.rawTxBuilder=new Kt(t,e,n,a)}async getAllowance(t,e){let n,a;e?(n=t,a=e):a=t;let r=St(a.token,a.messenger);return await this.tokenService.getAllowance({...a,spender:r},n)}async checkAllowance(t,e){let n,a;e?(n=t,a=e):a=t;let r=St(a.token,a.messenger);return this.tokenService.checkAllowance({...a,spender:r},n)}async approve(t,e){let n=St(e.token,e.messenger);return this.tokenService.approve(t,{...e,spender:n})}async send(t,e){return v(e.amount),I("amount",e.amount,e.sourceToken.decimals),Qt(e.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,t).send(e)}};function St(i,t){if(t&&t==3){if(i.cctpAddress)return i.cctpAddress;throw new re("Such route does not support CCTP protocol")}else return i.bridgeAddress}function Qt(i,t,e,n,a){switch(z[i].chainType){case"EVM":{if(a)return new Pt(a,t,e);{let r=e.getNodeRpcUrl(i);return new Pt(new va.default(r),t,e)}}case"TRX":{if(a)return new kt(a,t);{let r=e.getNodeRpcUrl(i);return new kt(new Ma.default({fullHost:r}),t)}}case"SOLANA":return new Ht(e.getNodeRpcUrl("SOL"),{wormholeMessengerProgramId:n.wormholeMessengerProgramId,solanaLookUpTable:n.solanaLookUpTable,cctpParams:n.cctpParams},t);case"SRB":return new jt(e,n,t)}}var Fa=require("big.js"),Wa=W(require("tronweb")),Ea=W(require("web3"));var Me=require("big.js");function Ia(i,t,e,n,a){let r=B(i,3),s=(0,Me.Big)(r),o=(0,Me.Big)(e),A=(0,Me.Big)(n).plus(a),c,m;if(o.eq(0)||A.eq(0)){let g=s.div(2);c=(0,Me.Big)(n).plus(g),m=(0,Me.Big)(a).plus(g)}else c=(0,Me.Big)(n).plus(s.mul(n).div(A)),m=(0,Me.Big)(a).plus(s.mul(a).div(A));return(0,Me.Big)(_n(t,c.toFixed(),m.toFixed())).minus(o).toFixed()}function xa(i){let t=B(i,3);return(0,Me.Big)(t).round().toFixed()}var Ye=[{inputs:[{internalType:"address",name:"_router",type:"address"},{internalType:"uint256",name:"_a",type:"uint256"},{internalType:"contract ERC20",name:"_token",type:"address"},{internalType:"uint16",name:"_feeShareBP",type:"uint16"},{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"},{internalType:"string",name:"lpName",type:"string"},{internalType:"string",name:"lpSymbol",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"RewardsClaimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedFromVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedToVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"a",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"accRewardPerShareP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adjustTotalLpAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"adminFeeAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"balanceRatioMinBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canDeposit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canWithdraw",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"claimAdminFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"claimRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"d",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"feeShareBP",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"x",type:"uint256"}],name:"getY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"pendingReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"reserves",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"router",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_adminFeeShareBP",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"}],name:"setBalanceRatioMinBP",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"_feeShareBP",type:"uint16"}],name:"setFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_router",type:"address"}],name:"setRouter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapFromVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapToVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"token",outputs:[{internalType:"contract ERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"userRewardDebt",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"vUsdBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amountLp",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}];var ae=class{constructor(t){this.lpAmount=t.lpAmount,this.rewardDebt=t.rewardDebt}get userLiquidity(){return b(this.lpAmount,3).toFixed()}earned(t,e){let n=Zn(this.lpAmount,this.rewardDebt,t.accRewardPerShareP,t.p);return e?b(n,e).toFixed():n}};var de=class{};var Rt=class extends de{constructor(e,n){super();this.web3=e;this.api=n;this.chainType="EVM";this.P=52}async getUserBalanceInfo(e,n){let a;try{a=await Lt(this.getUserBalanceInfoByBatch(e,n),`Cannot get UserBalanceInfo for ${n.name} on ${n.chainSymbol}`,5e3)}catch{a=await Pn(()=>this.getUserBalanceInfoPerProperty(e,n),`Cannot get UserBalanceInfo for ${n.name} on ${n.chainSymbol}`,3,5e3)}return a}async getUserBalanceInfoByBatch(e,n){let a=new this.web3.BatchRequest,r=new this.web3.eth.Contract(Ye,n.poolAddress),s=["userRewardDebt","balanceOf"].map(c=>st(m=>a.add(r.methods[c](e).call.request({},m)))());a.execute();let[o,A]=await Promise.all(s);return new ae({lpAmount:A,rewardDebt:o})}async getUserBalanceInfoPerProperty(e,n){let a=await this.getPoolContract(n.poolAddress).methods.userRewardDebt(e).call(),r=await this.getPoolContract(n.poolAddress).methods.balanceOf(e).call();return new ae({lpAmount:r,rewardDebt:a})}async getPoolInfoFromChain(e){let n;try{n=await Lt(this.getPoolInfoByBatch(e),`Cannot get PoolInfo for ${e.name} on ${e.chainSymbol}`,5e3)}catch{n=await Pn(()=>this.getPoolInfoPerProperty(e),`Cannot get PoolInfo for ${e.name} on ${e.chainSymbol}`,3,5e3)}return n}async getPoolInfoByBatch(e){let n=new this.web3.BatchRequest,a=new this.web3.eth.Contract(Ye,e.poolAddress),r=["a","d","tokenBalance","vUsdBalance","totalSupply","accRewardPerShareP"].map(h=>st(d=>n.add(a.methods[h]().call.request({},d)))());n.execute();let[s,o,A,c,m,u]=await Promise.all(r),g=A.toString(),f=c.toString(),y=te({tokenBalance:g,vUsdBalance:f});return{aValue:s.toString(),dValue:o.toString(),tokenBalance:g,vUsdBalance:f,totalLpAmount:m.toString(),accRewardPerShareP:u.toString(),p:this.P,imbalance:y}}async getPoolInfoPerProperty(e){let n=this.getPoolContract(e.poolAddress),[a,r,s,o,A,c]=await Promise.all([n.methods.a().call(),n.methods.d().call(),n.methods.tokenBalance().call(),n.methods.vUsdBalance().call(),n.methods.totalSupply().call(),n.methods.accRewardPerShareP().call()]),m=te({tokenBalance:s,vUsdBalance:o});return{aValue:a,dValue:r,tokenBalance:s,vUsdBalance:o,totalLpAmount:A,accRewardPerShareP:c,p:this.P,imbalance:m}}async buildRawTransactionDeposit(e){return Promise.resolve({...this.buildTxParams(e),data:this.getPoolContract(e.token.poolAddress).methods.deposit(e.amount).encodeABI()})}async buildRawTransactionWithdraw(e){return Promise.resolve({...this.buildTxParams(e),data:this.getPoolContract(e.token.poolAddress).methods.withdraw(e.amount).encodeABI()})}async buildRawTransactionClaimRewards(e){return Promise.resolve({...this.buildTxParams(e),data:this.getPoolContract(e.token.poolAddress).methods.claimRewards().encodeABI()})}buildTxParams(e){return{from:e.accountAddress,to:e.token.poolAddress,value:"0"}}getContract(e,n){return new this.web3.eth.Contract(e,n)}getPoolContract(e){return this.getContract(Ye,e)}};var tn=class{constructor(t,e,n,a){this.api=t;this.nodeRpcUrlsConfig=e;this.params=n;this.tokenService=a}async approve(t,e){if(e){let n=t,a=e;return this.tokenService.buildRawTransactionApprove({...a,spender:a.token.poolAddress},n)}else{let n=t;return this.tokenService.buildRawTransactionApprove({...n,spender:n.token.poolAddress})}}async deposit(t,e){return v(t.amount),I("amount",t.amount,t.token.decimals),t.amount=B(t.amount,t.token.decimals).toFixed(),ot(t.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,e).buildRawTransactionDeposit(t)}async withdraw(t,e){return v(t.amount),I("amount",t.amount,t.token.decimals),t.amount=B(t.amount,3).toFixed(),ot(t.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,e).buildRawTransactionWithdraw(t)}async claimRewards(t,e){return ot(t.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,e).buildRawTransactionClaimRewards(t)}};var fe=require("@project-serum/anchor"),ge=require("@solana/web3.js");var nn=class extends de{constructor(e,n){super();this.solanaRpcUrl=e;this.api=n;this.chainType="SOLANA";this.P=48}async getUserBalanceInfo(e,n){let a=this.buildAnchorProvider(e),r=this.getBridge(n.bridgeAddress,a),s=new ge.PublicKey(n.poolAddress),o=await r.account.pool.fetch(s);try{let A=await Cn(new ge.PublicKey(e),o.mint,r.programId),{lpAmount:c,rewardDebt:m}=await r.account.userDeposit.fetch(A);return new ae({lpAmount:c.toString(),rewardDebt:m.toString()})}catch{return new ae({lpAmount:"0",rewardDebt:"0"})}}async getPoolInfoFromChain(e){let n=this.buildAnchorProvider(e.bridgeAddress),a=await this.getBridge(e.bridgeAddress,n).account.pool.fetch(e.poolAddress),r=a.vUsdBalance.toString(),s=a.tokenBalance.toString(),o=te({tokenBalance:s,vUsdBalance:r});return{dValue:a.d.toString(),aValue:a.a.toString(),totalLpAmount:a.totalLpAmount.toString(),vUsdBalance:r,tokenBalance:s,accRewardPerShareP:a.accRewardPerShareP.toString(),p:this.P,imbalance:o}}async buildRawTransactionDeposit(e){let{bridge:n,accounts:a,preInstructions:r}=await this.prepareDataForTransaction(e),s=await n.methods.deposit(new fe.BN(e.amount)).accounts(a).preInstructions(r).transaction();return s.recentBlockhash=(await this.buildAnchorProvider(e.accountAddress).connection.getLatestBlockhash()).blockhash,s.feePayer=new ge.PublicKey(e.accountAddress),await it(s,e.txFeeParams,this.solanaRpcUrl),s}async buildRawTransactionWithdraw(e){let{bridge:n,accounts:a,preInstructions:r}=await this.prepareDataForTransaction(e),s=await n.methods.withdraw(new fe.BN(e.amount)).accounts(a).preInstructions(r).transaction();return s.recentBlockhash=(await this.buildAnchorProvider(e.accountAddress).connection.getLatestBlockhash()).blockhash,s.feePayer=new ge.PublicKey(e.accountAddress),await it(s,e.txFeeParams,this.solanaRpcUrl),s}async buildRawTransactionClaimRewards(e){let{bridge:n,accounts:a,preInstructions:r}=await this.prepareDataForTransaction(e),s=await n.methods.claimRewards().accounts(a).preInstructions(r).transaction();return s.recentBlockhash=(await this.buildAnchorProvider(e.accountAddress).connection.getLatestBlockhash()).blockhash,s.feePayer=new ge.PublicKey(e.accountAddress),await it(s,e.txFeeParams,this.solanaRpcUrl),s}async prepareDataForTransaction(e){let n=this.buildAnchorProvider(e.accountAddress),a=this.getBridge(e.token.bridgeAddress,n),{accounts:r,preInstructions:s}=await this._getLPTransactionData(a,e.token.poolAddress,e.accountAddress,n);return{bridge:a,accounts:r,preInstructions:s}}getBridge(e,n){return new fe.Program(wt,e,n)}buildAnchorProvider(e){let n=new ge.Connection(this.solanaRpcUrl,"confirmed"),a=new ge.PublicKey(e);return new fe.AnchorProvider(n,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}async _getLPTransactionData(e,n,a,r){let s=new ge.PublicKey(a),o=await Ue(e.programId),A=await et(e.programId),c=new ge.PublicKey(n),u=(await e.account.pool.fetch(c)).mint,g=await ue(s,u),f=await tt(u,e.programId),y=await Cn(s,u,e.programId),h=[fe.web3.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await at(g,r)}catch{let T=await fe.Spl.associatedToken(r).methods.create().accounts({mint:u,owner:s,associatedAccount:g}).instruction();h.push(T)}try{await e.account.userDeposit.fetch(y)}catch{let P=await e.methods.initDepositAccount().accounts({mint:u,user:s,userDeposit:y}).instruction();h.push(P)}return{accounts:{mint:u,user:s,config:o,pool:c,bridgeAuthority:A,userDeposit:y,userToken:g,bridgeToken:f},preInstructions:h}}};var Je=require("stellar-sdk");var Mt={0:{message:""},1:{message:""},2:{message:""},3:{message:""},4:{message:""},5:{message:""},6:{message:""},7:{message:""},8:{message:""},9:{message:""},103:{message:""},104:{message:""},105:{message:""},106:{message:""},107:{message:""},108:{message:""},109:{message:""},203:{message:""},204:{message:""},205:{message:""},206:{message:""},207:{message:""},208:{message:""},209:{message:""},210:{message:""},211:{message:""},212:{message:""},214:{message:""},215:{message:""},216:{message:""},217:{message:""},218:{message:""},300:{message:""},301:{message:""},302:{message:""},303:{message:""},400:{message:""}},an=class{constructor(t){this.options=t;this.parsers={deposit:t=>t instanceof se?t:new pe(this.spec.funcResToNative("deposit",t)),withdraw:t=>t instanceof se?t:new pe(this.spec.funcResToNative("withdraw",t)),claimRewards:t=>t instanceof se?t:new pe(this.spec.funcResToNative("claim_rewards",t)),getPool:t=>t instanceof se?t:new pe(this.spec.funcResToNative("get_pool",t)),getUserDeposit:t=>t instanceof se?t:new pe(this.spec.funcResToNative("get_user_deposit",t))};this.depositXdr=async({sender:t,amount:e},n={})=>await Fe.xdrFromSimulation({method:"deposit",args:this.spec.funcArgsToScVals("deposit",{sender:new Je.Address(t),amount:e}),account:t,...n,...this.options,errorTypes:Mt,parseResultXdr:this.parsers.deposit});this.withdrawXdr=async({sender:t,amount_lp:e},n={})=>await Fe.xdrFromSimulation({method:"withdraw",args:this.spec.funcArgsToScVals("withdraw",{sender:new Je.Address(t),amount_lp:e}),account:t,...n,...this.options,errorTypes:Mt,parseResultXdr:this.parsers.withdraw});this.claimRewardsXdr=async({sender:t},e={})=>await Fe.xdrFromSimulation({method:"claim_rewards",args:this.spec.funcArgsToScVals("claim_rewards",{sender:new Je.Address(t)}),account:t,...e,...this.options,errorTypes:Mt,parseResultXdr:this.parsers.claimRewards});this.getPool=async(t={})=>await E.fromSimulation({method:"get_pool",args:this.spec.funcArgsToScVals("get_pool",{}),...t,...this.options,errorTypes:Mt,parseResultXdr:this.parsers.getPool});this.getUserDeposit=async({user:t},e={})=>await E.fromSimulation({method:"get_user_deposit",args:this.spec.funcArgsToScVals("get_user_deposit",{user:new Je.Address(t)}),...e,...this.options,errorTypes:Mt,parseResultXdr:this.parsers.getUserDeposit});this.spec=new Je.ContractSpec(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABwAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAZicmlkZ2UAAAAAABMAAAAAAAAAAWEAAAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAADGZlZV9zaGFyZV9icAAAAAoAAAAAAAAAFGJhbGFuY2VfcmF0aW9fbWluX2JwAAAACgAAAAAAAAASYWRtaW5fZmVlX3NoYXJlX2JwAAAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAHZGVwb3NpdAAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAId2l0aGRyYXcAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAACWFtb3VudF9scAAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3dhcF90b192X3VzZAAAAAAAAAMAAAAAAAAABHVzZXIAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9mcm9tX3ZfdXNkAAAAAAUAAAAAAAAABHVzZXIAAAATAAAAAAAAAAt2dXNkX2Ftb3VudAAAAAAKAAAAAAAAABJyZWNlaXZlX2Ftb3VudF9taW4AAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAAAAAAJY2xhaW1hYmxlAAAAAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAANY2xhaW1fcmV3YXJkcwAAAAAAAAEAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAANY2xhaW1fYmFsYW5jZQAAAAAAAAEAAAAAAAAABHVzZXIAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAdgYWRtaW5gAAAAAA1zZXRfZmVlX3NoYXJlAAAAAAAAAQAAAAAAAAAMZmVlX3NoYXJlX2JwAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAWYWRqdXN0X3RvdGFsX2xwX2Ftb3VudAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAYc2V0X2JhbGFuY2VfcmF0aW9fbWluX2JwAAAAAQAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAMc3RvcF9kZXBvc2l0AAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAANc3RhcnRfZGVwb3NpdAAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3RvcF93aXRoZHJhdwAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAOc3RhcnRfd2l0aGRyYXcAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc2V0X2JyaWRnZQAAAAAAAQAAAAAAAAAGYnJpZGdlAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAATc2V0X2FkbWluX2ZlZV9zaGFyZQAAAAABAAAAAAAAABJhZG1pbl9mZWVfc2hhcmVfYnAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAPY2xhaW1fYWRtaW5fZmVlAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAZgdmlld2AAAAAAAA5wZW5kaW5nX3Jld2FyZAAAAAAAAQAAAAAAAAAEdXNlcgAAABMAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAAIZ2V0X3Bvb2wAAAAAAAAAAQAAA+kAAAfQAAAABFBvb2wAAAAD","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAKZ2V0X2JyaWRnZQAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAQZ2V0X3VzZXJfZGVwb3NpdAAAAAEAAAAAAAAABHVzZXIAAAATAAAAAQAAA+kAAAfQAAAAC1VzZXJEZXBvc2l0AAAAAAM=","AAAAAAAAAAAAAAAVZ2V0X2NsYWltYWJsZV9iYWxhbmNlAAAAAAAAAQAAAAAAAAAEdXNlcgAAABMAAAABAAAD6QAAAAoAAAAD","AAAAAQAAAAAAAAAAAAAAD1N3YXBwZWRGcm9tVlVzZAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAAC3Z1c2RfYW1vdW50AAAAAAo=","AAAAAQAAAAAAAAAAAAAADVN3YXBwZWRUb1ZVc2QAAAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAALdnVzZF9hbW91bnQAAAAACg==","AAAAAQAAAAAAAAAAAAAAB0RlcG9zaXQAAAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAACFdpdGhkcmF3AAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAADlJld2FyZHNDbGFpbWVkAAAAAAACAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAABHVzZXIAAAAT","AAAAAQAAAAAAAAAAAAAADkJhbGFuY2VDbGFpbWVkAAAAAAACAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAABHVzZXIAAAAT","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAgAAAAEAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAEAAAATAAAAAQAAAAAAAAAQQ2xhaW1hYmxlQmFsYW5jZQAAAAEAAAAT","AAAAAQAAAAAAAAAAAAAABFBvb2wAAAAPAAAAAAAAAAFhAAAAAAAACgAAAAAAAAAWYWNjX3Jld2FyZF9wZXJfc2hhcmVfcAAAAAAACgAAAAAAAAAQYWRtaW5fZmVlX2Ftb3VudAAAAAoAAAAAAAAAEmFkbWluX2ZlZV9zaGFyZV9icAAAAAAACgAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAAAAAAtjYW5fZGVwb3NpdAAAAAABAAAAAAAAAAxjYW5fd2l0aGRyYXcAAAABAAAAAAAAAAFkAAAAAAAACgAAAAAAAAAIZGVjaW1hbHMAAAAEAAAAAAAAAAxmZWVfc2hhcmVfYnAAAAAKAAAAAAAAAAhyZXNlcnZlcwAAAAoAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAANdG9rZW5fYmFsYW5jZQAAAAAAAAoAAAAAAAAAD3RvdGFsX2xwX2Ftb3VudAAAAAAKAAAAAAAAAA12X3VzZF9iYWxhbmNlAAAAAAAACg==","AAAAAQAAAAAAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAIAAAAAAAAACWxwX2Ftb3VudAAAAAAAAAoAAAAAAAAAC3Jld2FyZF9kZWJ0AAAAAAo=","AAAAAQAAAAAAAAAAAAAAEENsYWltYWJsZUJhbGFuY2UAAAABAAAAAAAAAAZhbW91bnQAAAAAAAo=","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAJQAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"])}};var rn=class extends de{constructor(e,n,a){super();this.nodeRpcUrlsConfig=e;this.params=n;this.api=a;this.chainType="SRB";this.P=48}async getUserBalanceInfo(e,n){let r=(await this.getContract(n.poolAddress).getUserDeposit({user:e})).result;if(r.isErr())throw new k;let s=r.unwrap();return new ae({lpAmount:s.lp_amount.toString(),rewardDebt:s.reward_debt.toString()})}async getPoolInfoFromChain(e){let a=(await this.getContract(e.poolAddress).getPool()).result;if(a.isErr())throw new k;let r=a.unwrap();return{aValue:r.a.toString(),accRewardPerShareP:r.acc_reward_per_share_p.toString(),dValue:r.d.toString(),tokenBalance:r.token_balance.toString(),p:this.P,totalLpAmount:r.total_lp_amount.toString(),vUsdBalance:r.v_usd_balance.toString(),imbalance:te({tokenBalance:r.token_balance.toString(),vUsdBalance:r.v_usd_balance.toString()})}}async buildRawTransactionDeposit(e){return await this.getContract(e.token.poolAddress).depositXdr({sender:e.accountAddress,amount:BigInt(e.amount)})}async buildRawTransactionWithdraw(e){return await this.getContract(e.token.poolAddress).withdrawXdr({sender:e.accountAddress,amount_lp:BigInt(e.amount)})}async buildRawTransactionClaimRewards(e){return await this.getContract(e.token.poolAddress).claimRewardsXdr({sender:e.accountAddress})}getContract(e){let n={contractId:e,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new an(n)}};var Da=W(require("web3"));var vt=class i extends de{constructor(e,n,a){super();this.tronWeb=e;this.api=n;this.chainType="TRX";this.P=52;a&&(this.web3=new Da.default(a))}static{this.contracts=new Map}async getUserBalanceInfo(e,n){let a;if(this.web3)try{a=await this.getUserBalanceInfoByBatch(this.web3,e,n)}catch{a=await this.getUserBalanceInfoPerProperty(e,n)}else a=await this.getUserBalanceInfoPerProperty(e,n);return a}async getUserBalanceInfoByBatch(e,n,a){let r=new e.BatchRequest,s=new e.eth.Contract(Ye,Tt(a.poolAddress)),o=Tt(n),A=["userRewardDebt","balanceOf"].map(u=>st(g=>r.add(s.methods[u](o).call.request({},g)))());r.execute();let[c,m]=await Promise.all(A);return new ae({lpAmount:m,rewardDebt:c})}async getUserBalanceInfoPerProperty(e,n){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(e);let a=await this.getContract(n.poolAddress),r=(await a.methods.userRewardDebt(e).call()).toString(),s=(await a.methods.balanceOf(e).call()).toString();return new ae({lpAmount:s,rewardDebt:r})}async getPoolInfoFromChain(e){let n;if(this.web3)try{n=await this.getPoolInfoByBatch(this.web3,e)}catch{n=await this.getPoolInfoPerProperty(e)}else n=await this.getPoolInfoPerProperty(e);return n}async getPoolInfoByBatch(e,n){let a=new e.BatchRequest,r=new e.eth.Contract(Ye,Tt(n.poolAddress)),s=["a","d","tokenBalance","vUsdBalance","totalSupply","accRewardPerShareP"].map(d=>st(p=>a.add(r.methods[d]().call.request({},p)))());a.execute();let[o,A,c,m,u,g]=await Promise.all(s),f=c.toString(),y=m.toString(),h=te({tokenBalance:f,vUsdBalance:y});return{aValue:o.toString(),dValue:A.toString(),tokenBalance:f,vUsdBalance:y,totalLpAmount:u.toString(),accRewardPerShareP:g.toString(),p:this.P,imbalance:h}}async getPoolInfoPerProperty(e){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(e.poolAddress);let n=await this.getContract(e.poolAddress),[a,r,s,o,A,c]=await Promise.all([n.methods.a().call(),n.methods.d().call(),n.methods.tokenBalance().call(),n.methods.vUsdBalance().call(),n.methods.totalSupply().call(),n.methods.accRewardPerShareP().call()]),m=s.toString(),u=o.toString(),g=te({tokenBalance:m,vUsdBalance:u});return{aValue:a.toString(),dValue:r.toString(),tokenBalance:m,vUsdBalance:u,totalLpAmount:A.toString(),accRewardPerShareP:c.toString(),p:this.P,imbalance:g}}buildRawTransactionDeposit(e){let{amount:n,accountAddress:a}=e,r=[{type:"uint256",value:n}];return this.buildRawTransaction(e.token.poolAddress,"deposit(uint256)",r,"0",a)}buildRawTransactionWithdraw(e){let{amount:n,accountAddress:a}=e,r=[{type:"uint256",value:n}];return this.buildRawTransaction(e.token.poolAddress,"withdraw(uint256)",r,"0",a)}buildRawTransactionClaimRewards(e){let{accountAddress:n}=e,a=[];return this.buildRawTransaction(e.token.poolAddress,"claimRewards()",a,"0",n)}async buildRawTransaction(e,n,a,r,s){let o=await this.tronWeb.transactionBuilder.triggerSmartContract(e,n,{callValue:r},a,s);if(!o?.result?.result)throw new k("Unknown error: "+JSON.stringify(o,null,2));return o.transaction}async getContract(e){if(i.contracts.has(e))return i.contracts.get(e);let n=await this.tronWeb.contract().at(e);return i.contracts.set(e,n),n}};var sn=class{constructor(t,e,n,a){this.api=t;this.nodeRpcUrlsConfig=e;this.params=n;this.tokenService=a;this.rawTxBuilder=new tn(t,e,this.params,a)}async getAllowance(t,e){if(e){let n=t,a=e;return await this.tokenService.getAllowance({...a,spender:a.token.poolAddress},n)}else{let n=t;return await this.tokenService.getAllowance({...n,spender:n.token.poolAddress})}}async checkAllowance(t,e){if(e){let n=t,a=e;return this.tokenService.checkAllowance({...a,spender:a.token.poolAddress},n)}else{let n=t;return this.tokenService.checkAllowance({...n,spender:n.token.poolAddress})}}async approve(t,e){return this.tokenService.approve(t,{...e,spender:e.token.poolAddress})}async getAmountToBeDeposited(t,e,n){v(t),I("amount",t,e.decimals);let a=await this.getPoolInfoFromChain(e,n),{vUsdBalance:r,tokenBalance:s,aValue:o,dValue:A}=a,c=Ia(t,o,A,s,r);return b(c,3).toFixed()}async getAmountToBeWithdrawn(t,e,n,a){v(t),I("amount",t,n.decimals);let r=await this.getPoolInfoFromChain(n,a),s=xa(t),o=ee(s,n.decimals),c=(await this.getUserBalanceInfo(e,n,a)).earned(r)||"0",m=(0,Fa.Big)(o).plus(c).toFixed();return b(m,n.decimals).toFixed()}async getUserBalanceInfo(t,e,n){return ot(e.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).getUserBalanceInfo(t,e)}async getPoolInfoFromChain(t,e){let n=await ot(t.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,e).getPoolInfoFromChain(t);return this.api.cachePut({chainSymbol:t.chainSymbol,poolAddress:t.poolAddress},n),n}};function ot(i,t,e,n,a){switch(z[i].chainType){case"EVM":{if(a)return new Rt(a,t);{let r=e.getNodeRpcUrl(i);return new Rt(new Ea.default(r),t)}}case"TRX":{let r=e.getNodeRpcUrl(i),s=n.tronJsonRpc;if(a)return new vt(a,t,s);{let o=new Wa.default({fullHost:r});return new vt(o,t,s)}}case"SOLANA":{let r=e.getNodeRpcUrl(i);return new nn(r,t)}case"SRB":return new rn(e,n,t)}}var D=require("big.js");function Oa(i,t,e){let n=Ci(i,{decimals:t.decimals,feeShare:t.feeShare},t.poolInfo),a=Bi(n.amountIncludingCommissionInSystemPrecision,{decimals:e.decimals,feeShare:e.feeShare},e.poolInfo);return{swapToVUsdCalcResult:n,swapFromVUsdCalcResult:a}}function Va(i,t,e){let n=ki(i,{decimals:e.decimals,feeShare:e.feeShare},e.poolInfo),a=Ri(n.amountIncludingCommissionInSystemPrecision,{decimals:t.decimals,feeShare:t.feeShare},t.poolInfo);return{swapToVUsdCalcResult:n,swapFromVUsdCalcResult:a}}function Ci(i,{feeShare:t,decimals:e},n){let a=(0,D.Big)(i),r=a.times(t),s=a.minus(r);return{bridgeFeeInTokenPrecision:r.round().toFixed(),amountIncludingCommissionInSystemPrecision:Ua(Ze(s,e),n),amountExcludingCommissionInSystemPrecision:Ua(Ze(a,e),n)}}function Ua(i,t){if(i.eq(0))return"0";let e=(0,D.Big)(t.tokenBalance).plus(i),n=Be(e.toFixed(),t.aValue,t.dValue);return(0,D.Big)(t.vUsdBalance).minus(n).round().toFixed()}function Bi(i,{feeShare:t,decimals:e},n){if((0,D.Big)(i).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let r=(0,D.Big)(i).plus(n.vUsdBalance),s=Be(r,n.aValue,n.dValue),o=ee((0,D.Big)(n.tokenBalance).minus(s),e),A=(0,D.Big)(o).times(t),c=(0,D.Big)(o).minus(A).round();return{bridgeFeeInTokenPrecision:A.round().toFixed(),amountIncludingCommissionInTokenPrecision:c.toFixed(),amountExcludingCommissionInTokenPrecision:o.toFixed()}}function ki(i,{feeShare:t,decimals:e},n){let a=(0,D.Big)(t).div((0,D.Big)(1).minus(t)),r=(0,D.Big)(i).times(a),s=(0,D.Big)(i).plus(r);return{bridgeFeeInTokenPrecision:r.round().toFixed(),amountIncludingCommissionInSystemPrecision:Na(Ze(s,e),n),amountExcludingCommissionInSystemPrecision:Na(Ze(i,e),n)}}function Na(i,t){let e=(0,D.Big)(t.tokenBalance).minus(i),n=Be(e.toFixed(),t.aValue,t.dValue);return(0,D.Big)(n).minus(t.vUsdBalance).round().toFixed()}function Ri(i,{feeShare:t,decimals:e},n){if((0,D.Big)(i).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let a=(0,D.Big)(n.vUsdBalance).minus(i),r=Be(a.toFixed(),n.aValue,n.dValue),s=(0,D.Big)(r).minus(n.tokenBalance),o=ee(s.toFixed(),e),A=(0,D.Big)(t).div((0,D.Big)(1).minus(t)),c=(0,D.Big)(o).times(A),m=(0,D.Big)(o).plus(c);return{bridgeFeeInTokenPrecision:c.round().toFixed(),amountIncludingCommissionInTokenPrecision:m.round().toFixed(),amountExcludingCommissionInTokenPrecision:o.toFixed()}}var We=require("big.js");function Ga(i,t,e,n,a){let r=Ce(i,t,e),s=ee(r,t.decimals),o=ft(r,n,a),A=(0,We.Big)(i).times(t.feeShare),c=(0,We.Big)(o).div((0,We.Big)(1).minus(n.feeShare)).minus(o);return{sourceLPSwap:{fee:b(A,t.decimals).neg().round(t.decimals,We.Big.roundUp).toFixed(),swap:b((0,We.Big)(i).minus(s).minus(A),t.decimals).neg().round(t.decimals,We.Big.roundUp).toFixed()},destLPSwap:{fee:b(c,n.decimals).neg().round(n.decimals,We.Big.roundUp).toFixed(),swap:b(ee(r,n.decimals).minus(o).minus(c),n.decimals).neg().round(n.decimals,We.Big.roundUp).toFixed()}}}var At=require("@solana/web3.js");var on=class{constructor(t,e){this.nodeRpcUrlsConfig=t;this.params=e}async addMemoToTx(t,e){if(e.length>28)throw new k("InvalidArgumentException memo cannot be more than 28 characters");let n=new At.Connection(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),a=await Xe(t,n),r=At.TransactionMessage.decompile(t.message,{addressLookupTableAccounts:a});r.instructions[r.instructions.length-1].keys.push({pubkey:new At.PublicKey(Buffer.from(e)),isSigner:!1,isWritable:!1}),t.message=r.compileToV0Message(a)}};var R=require("stellar-sdk"),Zc=require("stellar-sdk/lib/horizon");var U=require("stellar-sdk");var j={},It=class{constructor(t){this.options=t;this.parsers={initialize:()=>{},mint:()=>{},setAdmin:()=>{},allowance:t=>this.spec.funcResToNative("allowance",t),approve:()=>{},balance:t=>this.spec.funcResToNative("balance",t),spendableBalance:t=>this.spec.funcResToNative("spendable_balance",t),transfer:()=>{},transferFrom:()=>{},burn:()=>{},burnFrom:()=>{},decimals:t=>this.spec.funcResToNative("decimals",t),name:t=>this.spec.funcResToNative("name",t),symbol:t=>this.spec.funcResToNative("symbol",t)};this.initialize=async({admin:t,decimal:e,name:n,symbol:a},r={})=>await E.fromSimulation({method:"initialize",args:this.spec.funcArgsToScVals("initialize",{admin:new U.Address(t),decimal:e,name:n,symbol:a}),...r,...this.options,errorTypes:j,parseResultXdr:this.parsers.initialize});this.mint=async({to:t,amount:e},n={})=>await E.fromSimulation({method:"mint",args:this.spec.funcArgsToScVals("mint",{to:new U.Address(t),amount:e}),...n,...this.options,errorTypes:j,parseResultXdr:this.parsers.mint});this.setAdmin=async({new_admin:t},e={})=>await E.fromSimulation({method:"set_admin",args:this.spec.funcArgsToScVals("set_admin",{new_admin:new U.Address(t)}),...e,...this.options,errorTypes:j,parseResultXdr:this.parsers.setAdmin});this.allowance=async({from:t,spender:e},n={})=>await E.fromSimulation({method:"allowance",args:this.spec.funcArgsToScVals("allowance",{from:new U.Address(t),spender:new U.Address(e)}),...n,...this.options,errorTypes:j,parseResultXdr:this.parsers.allowance});this.approve=async({from:t,spender:e,amount:n,expiration_ledger:a},r={})=>await E.fromSimulation({method:"approve",args:this.spec.funcArgsToScVals("approve",{from:new U.Address(t),spender:new U.Address(e),amount:n,expiration_ledger:a}),...r,...this.options,errorTypes:j,parseResultXdr:this.parsers.approve});this.balance=async({id:t},e={})=>await E.fromSimulation({method:"balance",args:this.spec.funcArgsToScVals("balance",{id:new U.Address(t)}),...e,...this.options,errorTypes:j,parseResultXdr:this.parsers.balance});this.spendableBalance=async({id:t},e={})=>await E.fromSimulation({method:"spendable_balance",args:this.spec.funcArgsToScVals("spendable_balance",{id:new U.Address(t)}),...e,...this.options,errorTypes:j,parseResultXdr:this.parsers.spendableBalance});this.transfer=async({from:t,to:e,amount:n},a={})=>await E.fromSimulation({method:"transfer",args:this.spec.funcArgsToScVals("transfer",{from:new U.Address(t),to:new U.Address(e),amount:n}),...a,...this.options,errorTypes:j,parseResultXdr:this.parsers.transfer});this.transferFrom=async({spender:t,from:e,to:n,amount:a},r={})=>await E.fromSimulation({method:"transfer_from",args:this.spec.funcArgsToScVals("transfer_from",{spender:new U.Address(t),from:new U.Address(e),to:new U.Address(n),amount:a}),...r,...this.options,errorTypes:j,parseResultXdr:this.parsers.transferFrom});this.burn=async({from:t,amount:e},n={})=>await E.fromSimulation({method:"burn",args:this.spec.funcArgsToScVals("burn",{from:new U.Address(t),amount:e}),...n,...this.options,errorTypes:j,parseResultXdr:this.parsers.burn});this.burnFrom=async({spender:t,from:e,amount:n},a={})=>await E.fromSimulation({method:"burn_from",args:this.spec.funcArgsToScVals("burn_from",{spender:new U.Address(t),from:new U.Address(e),amount:n}),...a,...this.options,errorTypes:j,parseResultXdr:this.parsers.burnFrom});this.decimals=async(t={})=>await E.fromSimulation({method:"decimals",args:this.spec.funcArgsToScVals("decimals",{}),...t,...this.options,errorTypes:j,parseResultXdr:this.parsers.decimals});this.name=async(t={})=>await E.fromSimulation({method:"name",args:this.spec.funcArgsToScVals("name",{}),...t,...this.options,errorTypes:j,parseResultXdr:this.parsers.name});this.symbol=async(t={})=>await E.fromSimulation({method:"symbol",args:this.spec.funcArgsToScVals("symbol",{}),...t,...this.options,errorTypes:j,parseResultXdr:this.parsers.symbol});this.spec=new U.ContractSpec(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAdkZWNpbWFsAAAAAAQAAAAAAAAABG5hbWUAAAAQAAAAAAAAAAZzeW1ib2wAAAAAABAAAAAA","AAAAAAAAAAAAAAAEbWludAAAAAIAAAAAAAAAAnRvAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAA","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAA=","AAAAAAAAAAAAAAAJYWxsb3dhbmNlAAAAAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAEAAAAL","AAAAAAAAAAAAAAAHYXBwcm92ZQAAAAAEAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAAAAAAEWV4cGlyYXRpb25fbGVkZ2VyAAAAAAAABAAAAAA=","AAAAAAAAAAAAAAAHYmFsYW5jZQAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAL","AAAAAAAAAAAAAAARc3BlbmRhYmxlX2JhbGFuY2UAAAAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAL","AAAAAAAAAAAAAAAIdHJhbnNmZXIAAAADAAAAAAAAAARmcm9tAAAAEwAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAAAAAAANdHJhbnNmZXJfZnJvbQAAAAAAAAQAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAAAAAAEZnJvbQAAABMAAAAAAAAAAnRvAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAA","AAAAAAAAAAAAAAAEYnVybgAAAAIAAAAAAAAABGZyb20AAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAA","AAAAAAAAAAAAAAAJYnVybl9mcm9tAAAAAAAAAwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAAAAAAAIZGVjaW1hbHMAAAAAAAAAAQAAAAQ=","AAAAAAAAAAAAAAAEbmFtZQAAAAAAAAABAAAAEA==","AAAAAAAAAAAAAAAGc3ltYm9sAAAAAAAAAAAAAQAAABA=","AAAAAQAAAAAAAAAAAAAAEEFsbG93YW5jZURhdGFLZXkAAAACAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAHc3BlbmRlcgAAAAAT","AAAAAQAAAAAAAAAAAAAADkFsbG93YW5jZVZhbHVlAAAAAAACAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAAAAAAEWV4cGlyYXRpb25fbGVkZ2VyAAAAAAAABA==","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAABQAAAAEAAAAAAAAACUFsbG93YW5jZQAAAAAAAAEAAAfQAAAAEEFsbG93YW5jZURhdGFLZXkAAAABAAAAAAAAAAdCYWxhbmNlAAAAAAEAAAATAAAAAQAAAAAAAAAFTm9uY2UAAAAAAAABAAAAEwAAAAEAAAAAAAAABVN0YXRlAAAAAAAAAQAAABMAAAAAAAAAAAAAAAVBZG1pbgAAAA==","AAAAAQAAAAAAAAAAAAAADVRva2VuTWV0YWRhdGEAAAAAAAADAAAAAAAAAAdkZWNpbWFsAAAAAAQAAAAAAAAABG5hbWUAAAAQAAAAAAAAAAZzeW1ib2wAAAAAABA="])}};var Mi=100,vi=180,An=class{constructor(t,e){this.nodeRpcUrlsConfig=t;this.params=e}async buildChangeTrustLineXdrTx(t){let n=await new R.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(t.sender),r=(await this.getContract(It,t.tokenAddress).name()).result,[s,o]=r.split(":"),A=new R.Asset(s,o),c=R.Operation.changeTrust({asset:A,limit:t.limit});return new R.TransactionBuilder(n,{fee:Mi.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(c).setTimeout(vi).build().toXDR()}async getBalanceLine(t,e){let a=(await this.getContract(It,e).name()).result,[r,s]=a.split(":"),o=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new R.Horizon.Server(o).loadAccount(t)).balances.find(u=>(u.asset_type==="credit_alphanum4"||u.asset_type==="credit_alphanum12")&&u.asset_code==r&&u.asset_issuer==s)}async submitTransactionStellar(t){let e=new R.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),n=R.TransactionBuilder.fromXDR(t,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await e.submitTransaction(n)}async simulateAndCheckRestoreTxRequiredSoroban(t,e){let n=new R.SorobanRpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=await n.getAccount(e),r=R.TransactionBuilder.fromXDR(t,this.params.sorobanNetworkPassphrase),s=await n.simulateTransaction(r);if(R.SorobanRpc.Api.isSimulationRestore(s))return new R.TransactionBuilder(a,{fee:(+R.BASE_FEE+ +s.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(s.restorePreamble.transactionData.build()).addOperation(R.Operation.restoreFootprint({})).setTimeout(R.TimeoutInfinite).build().toXDR()}async sendTransactionSoroban(t){let e=new R.SorobanRpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),n=R.TransactionBuilder.fromXDR(t,this.params.sorobanNetworkPassphrase);return e.sendTransaction(n)}async confirmTx(t,e=15){let n=new R.SorobanRpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=await zn(()=>n.getTransaction(t),r=>r.status===R.SorobanRpc.Api.GetTransactionStatus.NOT_FOUND,e);return a[a.length-1]}getContract(t,e){let n={contractId:e,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new t(n)}};var cn=class{constructor(t,e){this.nodeRpcUrlsConfig=t;this.srb=new An(t,e),this.sol=new on(t,e)}};var _e=(e=>(e.WITH_NATIVE_CURRENCY="native",e.WITH_STABLECOIN="stablecoin",e))(_e||{}),bt=(e=>(e.INT="int",e.FLOAT="float",e))(bt||{});var La=require("big.js"),_a=W(require("tronweb")),Xa=W(require("web3"));var mn=W(require("erc-20-abi"));var Fn=require("big.js"),ye=class{async checkAllowance(t){let e=await this.getAllowance(t);return(0,Fn.Big)(e).gte((0,Fn.Big)(t.amount))}};var Ii="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",xi="0xdac17f958d2ee523a2206206994597c13d831ec7",Di=1e5,xt=class extends ye{constructor(e,n){super();this.web3=e;this.api=n;this.chainType="EVM"}getAllowance(e){let n=e.token.tokenAddress,a=e.owner,r=e.spender;return this.getAllowanceByTokenAddress(n,a,r)}getAllowanceByTokenAddress(e,n,a){return this.getContract(mn.default,e).methods.allowance(n,a).call()}async getTokenBalance(e){return await this.getContract(mn.default,e.token.tokenAddress).methods.balanceOf(e.account).call()}async getNativeTokenBalance(e){return await this.web3.eth.getBalance(e.account)}async approve(e){if(this.isUsdt(e.tokenAddress)&&await this.getAllowanceByTokenAddress(e.tokenAddress,e.owner,e.spender)!=="0"){let r=await this.buildRawTransactionApprove({...e,amount:"0"});await this.sendRawTransaction(r,e.chainSymbol)}let n=await this.buildRawTransactionApprove(e);return await this.sendRawTransaction(n,e.chainSymbol)}isUsdt(e){return e.toLowerCase()===xi}async buildRawTransactionApprove(e){let{tokenAddress:n,spender:a,owner:r,amount:s}=e,A=await this.getContract(mn.default,n).methods.approve(a,s==null?Ii:qt(s));return{from:r,to:n,value:"0",data:A.encodeABI()}}async sendRawTransaction(e,n){let a=e,r={maxPriorityFeePerGas:null,maxFeePerGas:null};n=="POL"?a.gas=Di:a.gas=await this.web3.eth.estimateGas(e);let{transactionHash:s}=await this.web3.eth.sendTransaction({...a,...r});return{txId:s}}getContract(e,n){return new this.web3.eth.Contract(e,n)}};var Za=require("@project-serum/anchor"),He=require("@solana/web3.js");var un=class extends ye{constructor(e,n){super();this.solanaRpcUrl=e;this.api=n;this.chainType="SOLANA"}approve(e){throw new J}buildRawTransactionApprove(e){throw new J}buildAnchorProvider(e){let n=new He.Connection(this.solanaRpcUrl,"confirmed"),a=new He.PublicKey(e);return new Za.AnchorProvider(n,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(e){throw new J}async getTokenBalance(e){let{account:n,token:a}=e;try{let r=await ue(new He.PublicKey(n),new He.PublicKey(a.tokenAddress));return(await at(r,this.buildAnchorProvider(n))).amount.toString()}catch(r){if(r instanceof Error)return r.message.startsWith("Account does not exist"),"0";throw r}}async getNativeTokenBalance(e){return(await this.buildAnchorProvider(e.account).connection.getBalance(new He.PublicKey(e.account))).toString()}};var Dt=require("stellar-sdk"),fl=require("stellar-sdk/lib/horizon");var ln=class extends ye{constructor(e,n,a){super();this.nodeRpcUrlsConfig=e;this.params=n;this.api=a;this.chainType="SRB"}getAllowance(){throw new J}async getTokenBalance(e){if(!e.token.originTokenAddress)throw new k("OriginTokenAddress missing");let[n,a]=e.token.originTokenAddress.split(":"),r=new Dt.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),s;try{s=await r.loadAccount(e.account)}catch(c){if(c instanceof Dt.NotFoundError)return"0";throw c}let A=s.balances.find(c=>(c.asset_type==="credit_alphanum4"||c.asset_type==="credit_alphanum12")&&c.asset_code==n&&c.asset_issuer==a);return A?.balance?B(A.balance,V[z[e.token.chainSymbol].chainType]).toFixed():"0"}async getNativeTokenBalance(e){let s=(await new Dt.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(e.account)).balances.find(o=>o.asset_type==="native");return s?.balance?B(s.balance,V[z[e.chainSymbol].chainType]).toFixed():"0"}approve(){throw new J}buildRawTransactionApprove(){throw new J}};var Fi="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Ft=class i extends ye{constructor(e,n){super();this.tronWeb=e;this.api=n;this.chainType="TRX"}static{this.contracts=new Map}async getAllowance(e){let{token:{tokenAddress:n},owner:a}=e;return(await(await this.getContract(n)).methods.allowance(a,e.spender).call()).toString()}async getTokenBalance(e){return(await(await this.getContract(e.token.tokenAddress)).balanceOf(e.account).call()).toString()}async getNativeTokenBalance(e){return(await this.tronWeb.trx.getBalance(e.account)).toString()}async approve(e){let n=await this.buildRawTransactionApprove(e);return await $t(this.tronWeb,n)}async buildRawTransactionApprove(e){let{tokenAddress:n,spender:a,owner:r,amount:s}=e,o=s==null?Fi:qt(s),A=[{type:"address",value:a},{type:"uint256",value:o}];return this.buildRawTransaction(n,"approve(address,uint256)",A,"0",r)}async getContract(e){if(i.contracts.has(e))return i.contracts.get(e);let n=await this.tronWeb.contract().at(e);return i.contracts.set(e,n),n}async buildRawTransaction(e,n,a,r,s){let o=await this.tronWeb.transactionBuilder.triggerSmartContract(e,n,{callValue:r},a,s);if(!o?.result?.result)throw new k("Unknown error: "+JSON.stringify(o,null,2));return o.transaction}};var pn=class{constructor(t,e,n){this.api=t;this.nodeRpcUrlsConfig=e;this.params=n}async getAllowance(t,e){let n=await this.getChainTokenService(t.token.chainSymbol,t.owner,e).getAllowance(t);return b(n,t.token.decimals).toFixed()}async checkAllowance(t,e){return v(t.amount),I("amount",t.amount,t.token.decimals),this.getChainTokenService(t.token.chainSymbol,t.owner,e).checkAllowance(this.prepareCheckAllowanceParams(t))}async approve(t,e){return e.amount&&(v(e.amount),I("amount",e.amount,e.token.decimals)),this.getChainTokenService(e.token.chainSymbol,e.owner,t).approve(this.prepareApproveParams(e))}async buildRawTransactionApprove(t,e){return t.amount&&(v(t.amount),I("amount",t.amount,t.token.decimals)),this.getChainTokenService(t.token.chainSymbol,t.owner,e).buildRawTransactionApprove(this.prepareApproveParams(t))}async getTokenBalance(t,e){let n=await this.getChainTokenService(t.token.chainSymbol,t.account,e).getTokenBalance(t);return t.token.decimals?b(n,t.token.decimals).toFixed():n}async getNativeTokenBalance(t,e){let n=await this.getChainTokenService(t.chainSymbol,t.account,e).getNativeTokenBalance(t);return{int:n,float:b(n,V[z[t.chainSymbol].chainType]).toFixed()}}getChainTokenService(t,e,n){switch(z[t].chainType){case"EVM":{if(n)return new xt(n,this.api);{let a=this.nodeRpcUrlsConfig.getNodeRpcUrl(t);return new xt(new Xa.default(a),this.api)}}case"TRX":{if(n)return new Ft(n,this.api);{let a=this.nodeRpcUrlsConfig.getNodeRpcUrl(t),r=new _a.default({fullHost:a});return r.setAddress(e),new Ft(r,this.api)}}case"SOLANA":{let a=this.nodeRpcUrlsConfig.getNodeRpcUrl(t);return new un(a,this.api)}case"SRB":return new ln(this.nodeRpcUrlsConfig,this.params,this.api)}}prepareCheckAllowanceParams(t){return{...t,amount:B(t.amount,t.token.decimals)}}prepareApproveParams(t){return{tokenAddress:t.token.tokenAddress,owner:t.owner,spender:t.spender,chainSymbol:t.token.chainSymbol,amount:t.amount==null?void 0:(0,La.Big)(t.amount).toFixed()}}};var Wt=class{constructor(t){this.nodeRpcUrls=t}getNodeRpcUrl(t){let e=this.nodeRpcUrls[t];if(e!==void 0)return e;throw new pt(t)}},dn=class{constructor(t,e=ct){let n=new Vt(e),a=new Gt(n),r=new Nt(a);this.api=new Zt(r),this.tokenService=new pn(this.api,t,e),this.bridge=new en(this.api,t,e,this.tokenService),this.pool=new sn(this.api,t,e,this.tokenService),this.params=e}async chainDetailsMap(){return this.api.getChainDetailsMap()}async tokens(){return this.api.tokens()}async tokensByChain(t){return(await this.api.getChainDetailsMap())[t].tokens}async getTransferStatus(t,e){return this.api.getTransferStatus(t,e)}async getGasBalance(t,e){return this.api.getGasBalance(t,e)}async checkAddress(t,e,n){return this.api.checkAddress(t,e,n)}async getPendingStatusInfo(t,e,n,a){v(t);let r;e=="float"?(I("amount",t,n.decimals),r=B(t,n.decimals).toFixed()):r=t;let s=Ce(r,n,await G(this.api,n)),o=await G(this.api,a),A=this.getAmountFromVUsdFormatted(s,a,o),c,m=await this.api.getPendingInfo();for(let u in m[a.chainSymbol])u.toLowerCase()===a.tokenAddress.toLowerCase()&&(c=m[a.chainSymbol][u]);if(c){let u=On(c.totalSentAmount,o),g=this.getAmountFromVUsdFormatted(s,a,u),f;return(0,he.Big)(g.int).gt(A.int)?f={min:A,max:g}:f={min:g,max:A},{pendingTxs:c.pendingTxs,pendingAmount:{int:Ee(c.totalSentAmount,3,a.decimals).toFixed(0),float:b(c.totalSentAmount,3).toFixed()},estimatedAmount:f}}return{pendingTxs:0,pendingAmount:{int:"0",float:"0"},estimatedAmount:{min:A,max:A}}}async getTokenBalance(t,e){return this.tokenService.getTokenBalance(t,e)}async getNativeTokenBalance(t,e){return this.tokenService.getNativeTokenBalance(t,e)}async calculateFeePercentOnSourceChain(t,e){v(t),I("amountFloat",t,e.decimals);let n=B(t,e.decimals);if(n.eq(0))return 0;let a=Ce(n,e,await G(this.api,e)),r=ee(a,e.decimals);return fn(n,r)}async calculateFeePercentOnDestinationChain(t,e,n){v(t),I("amountFloat",t,e.decimals);let a=B(t,e.decimals);if(a.eq(0))return 0;let r=Ce(a,e,await G(this.api,e)),s=ft(r,n,await G(this.api,n)),o=ee(r,n.decimals);return fn(o,s)}async getAmountToBeReceivedAndGasFeeOptions(t,e,n,a){return v(t),I("amountToSendFloat",t,e.decimals),{amountToSendFloat:(0,he.Big)(t).toFixed(),amountToBeReceivedFloat:await this.getAmountToBeReceived(t,e,n,a),gasFeeOptions:await this.getGasFeeOptions(e,n,a)}}async getAmountToSendAndGasFeeOptions(t,e,n,a){return v(t),I("amountToBeReceivedFloat",t,n.decimals),{amountToSendFloat:await this.getAmountToSend(t,e,n,a),amountToBeReceivedFloat:(0,he.Big)(t).toFixed(),gasFeeOptions:await this.getGasFeeOptions(e,n,a)}}async getAmountToBeReceived(t,e,n,a){let r=await G(this.api,e),s=await G(this.api,n);return this.getAmountToBeReceivedFromPools(t,e,n,r,s,a)}async getAmountToBeReceivedFromChain(t,e,n,a,r,s){let o=await this.pool.getPoolInfoFromChain(e,r),A=await this.pool.getPoolInfoFromChain(n,s);return this.getAmountToBeReceivedFromPools(t,e,n,o,A,a)}getAmountToBeReceivedFromPools(t,e,n,a,r,s){v(t),I("amountToSendFloat",t,e.decimals);let o=B(t,e.decimals);if(s&&s==3){if(!e.cctpAddress||!n.cctpAddress||!e.cctpFeeShare)throw new re("Such route does not support CCTP protocol");let c=o.mul((0,he.Big)(1).minus(e.cctpFeeShare)).round(0,he.Big.roundUp),m=Ee(c,e.decimals,n.decimals).round(0);return b(m,n.decimals).toFixed()}let A=Ce(o,e,a);return this.getAmountFromVUsdFormatted(A,n,r).float}async getAmountToSend(t,e,n,a){let r=await G(this.api,e),s=await G(this.api,n);return this.getAmountToSendFromPools(t,e,n,r,s,a)}async getAmountToSendFromChain(t,e,n,a,r,s){let o=await this.pool.getPoolInfoFromChain(e,r),A=await this.pool.getPoolInfoFromChain(n,s);return this.getAmountToSendFromPools(t,e,n,o,A,a)}getAmountToSendFromPools(t,e,n,a,r,s){v(t),I("amountToBeReceivedFloat",t,n.decimals);let o=B(t,n.decimals);if(s&&s==3){if(!e.cctpAddress||!n.cctpAddress||!e.cctpFeeShare)throw new re("Such route does not support CCTP protocol");let m=o.div((0,he.Big)(1).minus(e.cctpFeeShare)).round(0,he.Big.roundDown),u=Ee(m,n.decimals,e.decimals).round(0);return b(u,e.decimals).toFixed()}let A=Gn(o,n,r),c=Vn(A,e,a);if((0,he.Big)(c).lte(0))throw new we;return b(c,e.decimals).toFixed()}async getGasFeeOptions(t,e,n){return Rn(t.allbridgeChainId,t.chainType,e.allbridgeChainId,t.decimals,n,this.api)}getAverageTransferTime(t,e,n){return t.transferTime?.[e.chainSymbol]?.[n]??null}async getPoolInfoByToken(t){return await this.api.getPoolInfoByKey({chainSymbol:t.chainSymbol,poolAddress:t.poolAddress})}async refreshPoolInfo(t){if(t){let n=(t instanceof Array?t:[t]).map(a=>({chainSymbol:a.chainSymbol,poolAddress:a.poolAddress}));return this.api.refreshPoolInfo(n)}return this.api.refreshPoolInfo()}aprInPercents(t){return Ln(t)}async getExtraGasMaxLimits(t,e){return await Mn(t,e,this.api)}async getVUsdFromAmount(t,e,n){v(t);let a;e=="float"?(I("amount",t,n.decimals),a=B(t,n.decimals).toFixed()):a=t;let r=Ce(a,n,await G(this.api,n));return{int:r,float:b(r,3).toFixed()}}async getAmountFromVUsd(t,e){return this.getAmountFromVUsdFormatted(t,e,await G(this.api,e))}getAmountFromVUsdFormatted(t,e,n){v(t);let a=ft(t,e,n);if((0,he.Big)(a).lt(0))throw new we;return{int:a,float:b(a,e.decimals).toFixed()}}async swapAndBridgeFeeCalculation(t,e,n){return Oa(t,{decimals:e.decimals,feeShare:e.feeShare,poolInfo:await G(this.api,e)},{decimals:n.decimals,feeShare:n.feeShare,poolInfo:await G(this.api,n)})}async swapAndBridgeFeeCalculationReverse(t,e,n){let a=Va(t,{decimals:e.decimals,feeShare:e.feeShare,poolInfo:await G(this.api,e)},{decimals:n.decimals,feeShare:n.feeShare,poolInfo:await G(this.api,n)}),r=a.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if((0,he.Big)(r).lt(0))throw new we;return a}async getSendAmountDetails(t,e,n,a){v(t);let r;return e=="float"?(I("amount",t,n.decimals),r=B(t,n.decimals).toFixed()):r=t,Ga(r,n,await G(this.api,n),a,await G(this.api,a))}};function Wi(i){return"solanaRpcUrl"in i}var Wn=class{constructor(t,e=ct){let n;Wi(t)?n=new Wt({SOL:t.solanaRpcUrl,TRX:t.tronRpcUrl}):n=new Wt(t),this.service=new dn(n,e),this.bridge=this.service.bridge,this.pool=this.service.pool,this.utils=new cn(n,e),this.params=e}async chainDetailsMap(){return this.service.chainDetailsMap()}async tokens(){return this.service.tokens()}async tokensByChain(t){return this.service.tokensByChain(t)}async getTransferStatus(t,e){return this.service.getTransferStatus(t,e)}async getGasBalance(t,e){return this.service.getGasBalance(t,e)}async checkAddress(t,e,n){return this.service.checkAddress(t,e,n)}async getPendingStatusInfo(t,e,n,a){return this.service.getPendingStatusInfo(t,e,n,a)}async getTokenBalance(t,e){return this.service.getTokenBalance(t,e)}async getNativeTokenBalance(t,e){return this.service.getNativeTokenBalance(t,e)}async calculateFeePercentOnSourceChain(t,e){return this.service.calculateFeePercentOnSourceChain(t,e)}async calculateFeePercentOnDestinationChain(t,e,n){return this.service.calculateFeePercentOnDestinationChain(t,e,n)}async getAmountToBeReceivedAndGasFeeOptions(t,e,n,a){return this.service.getAmountToBeReceivedAndGasFeeOptions(t,e,n,a)}async getAmountToSendAndGasFeeOptions(t,e,n,a){return this.service.getAmountToSendAndGasFeeOptions(t,e,n,a)}async getAmountToBeReceived(t,e,n,a){return this.service.getAmountToBeReceived(t,e,n,a)}async getAmountToBeReceivedFromChain(t,e,n,a,r,s){return this.service.getAmountToBeReceivedFromChain(t,e,n,a,r,s)}getAmountToBeReceivedFromPools(t,e,n,a,r,s){return this.service.getAmountToBeReceivedFromPools(t,e,n,a,r,s)}async getAmountToSend(t,e,n,a){return this.service.getAmountToSend(t,e,n,a)}async getAmountToSendFromChain(t,e,n,a,r,s){return this.service.getAmountToSendFromChain(t,e,n,a,r,s)}getAmountToSendFromPools(t,e,n,a,r,s){return this.service.getAmountToSendFromPools(t,e,n,a,r,s)}async getGasFeeOptions(t,e,n){return this.service.getGasFeeOptions(t,e,n)}getAverageTransferTime(t,e,n){return this.service.getAverageTransferTime(t,e,n)}async getPoolInfoByToken(t){return this.service.getPoolInfoByToken(t)}async refreshPoolInfo(t){return this.service.refreshPoolInfo(t)}aprInPercents(t){return this.service.aprInPercents(t)}async getExtraGasMaxLimits(t,e){return this.service.getExtraGasMaxLimits(t,e)}async getVUsdFromAmount(t,e,n){return this.service.getVUsdFromAmount(t,e,n)}async getAmountFromVUsd(t,e){return this.service.getAmountFromVUsd(t,e)}async swapAndBridgeFeeCalculation(t,e,n){return this.service.swapAndBridgeFeeCalculation(t,e,n)}async swapAndBridgeFeeCalculationReverse(t,e,n){return this.service.swapAndBridgeFeeCalculationReverse(t,e,n)}async getSendAmountDetails(t,e,n,a){return this.service.getSendAmountDetails(t,e,n,a)}};0&&(module.exports={AddressStatus,AllbridgeCoreSdk,AmountFormat,AmountNotEnoughError,ArgumentInvalidDecimalsError,CCTPDoesNotSupportedError,ChainSymbol,ChainType,ErrorCode,ExtraGasMaxLimitExceededError,FeePaymentMethod,InsufficientPoolLiquidityError,InvalidAmountError,InvalidGasFeePaymentOptionError,InvalidMessengerOptionError,InvalidTxError,JupiterError,Messenger,MethodNotSupportedError,NodeRpcUrlNotInitializedError,SdkError,SdkRootError,SolanaAutoTxFee,TimeoutError,TxTooLargeError,VerifyTxError,mainnet,nodeRpcUrlsDefault,nodeUrlsDefault,testnet,testnetNodeRpcUrlsDefault,testnetNodeUrlsDefault});
|
|
6
6
|
//# sourceMappingURL=index.js.map
|