@allbridge/bridge-core-sdk 3.16.0-beta.1 → 3.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/browser/index.js +3 -3
  2. package/dist/browser/index.js.map +4 -4
  3. package/dist/cjs/index.js +4 -4
  4. package/dist/cjs/index.js.map +4 -4
  5. package/dist/esm/index.js +4 -4
  6. package/dist/esm/index.js.map +4 -4
  7. package/dist/src/services/bridge/srb/index.js +11 -10
  8. package/dist/src/services/bridge/srb/index.js.map +1 -1
  9. package/dist/src/services/bridge/utils.js +1 -1
  10. package/dist/src/services/bridge/utils.js.map +1 -1
  11. package/dist/src/services/liquidity-pool/srb/index.js +17 -14
  12. package/dist/src/services/liquidity-pool/srb/index.js.map +1 -1
  13. package/dist/src/services/models/srb/bridge-contract.d.ts +801 -0
  14. package/dist/src/services/models/srb/{bridge.js → bridge-contract.js} +49 -97
  15. package/dist/src/services/models/srb/bridge-contract.js.map +1 -0
  16. package/dist/src/services/models/srb/gas-oracle-contract.d.ts +350 -0
  17. package/dist/src/services/models/srb/gas-oracle-contract.js +87 -0
  18. package/dist/src/services/models/srb/gas-oracle-contract.js.map +1 -0
  19. package/dist/src/services/models/srb/messenger-contract.d.ts +573 -0
  20. package/dist/src/services/models/srb/messenger-contract.js +111 -0
  21. package/dist/src/services/models/srb/messenger-contract.js.map +1 -0
  22. package/dist/src/services/models/srb/pool-contract.d.ts +690 -0
  23. package/dist/src/services/models/srb/pool-contract.js +125 -0
  24. package/dist/src/services/models/srb/pool-contract.js.map +1 -0
  25. package/dist/src/services/models/srb/token-contract.d.ts +437 -160
  26. package/dist/src/services/models/srb/token-contract.js +41 -288
  27. package/dist/src/services/models/srb/token-contract.js.map +1 -1
  28. package/dist/src/services/models/srb/utils.d.ts +6 -0
  29. package/dist/src/services/models/srb/utils.js +35 -0
  30. package/dist/src/services/models/srb/utils.js.map +1 -0
  31. package/dist/src/services/token/srb/index.js +1 -1
  32. package/dist/src/services/token/srb/index.js.map +1 -1
  33. package/dist/src/utils/srb/index.d.ts +5 -6
  34. package/dist/src/utils/srb/index.js +1 -1
  35. package/dist/src/utils/srb/index.js.map +1 -1
  36. package/dist/src/version.d.ts +1 -1
  37. package/dist/src/version.js +1 -1
  38. package/dist/src/version.js.map +1 -1
  39. package/package.json +2 -2
  40. package/dist/src/services/models/srb/bridge.d.ts +0 -169
  41. package/dist/src/services/models/srb/bridge.js.map +0 -1
  42. package/dist/src/services/models/srb/pool.d.ts +0 -293
  43. package/dist/src/services/models/srb/pool.js +0 -233
  44. package/dist/src/services/models/srb/pool.js.map +0 -1
  45. package/dist/src/services/utils/srb/assembled-tx.d.ts +0 -73
  46. package/dist/src/services/utils/srb/assembled-tx.js +0 -143
  47. package/dist/src/services/utils/srb/assembled-tx.js.map +0 -1
  48. package/dist/src/services/utils/srb/build-tx.d.ts +0 -48
  49. package/dist/src/services/utils/srb/build-tx.js +0 -62
  50. package/dist/src/services/utils/srb/build-tx.js.map +0 -1
  51. package/dist/src/services/utils/srb/method-options.d.ts +0 -47
  52. package/dist/src/services/utils/srb/method-options.js +0 -5
  53. package/dist/src/services/utils/srb/method-options.js.map +0 -1
package/dist/cjs/index.js CHANGED
@@ -1,6 +1,6 @@
1
- "use strict";var Ha=Object.create;var Ut=Object.defineProperty;var ja=Object.getOwnPropertyDescriptor;var za=Object.getOwnPropertyNames;var qa=Object.getPrototypeOf,$a=Object.prototype.hasOwnProperty;var ei=(i,t)=>{for(var e in t)Ut(i,e,{get:t[e],enumerable:!0})},Nn=(i,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of za(t))!$a.call(i,a)&&a!==e&&Ut(i,a,{get:()=>t[a],enumerable:!(n=ja(t,a))||n.enumerable});return i};var O=(i,t,e)=>(e=i!=null?Ha(qa(i)):{},Nn(t||!i||!i.__esModule?Ut(e,"default",{value:i,enumerable:!0}):e,i)),ti=i=>Nn(Ut({},"__esModule",{value:!0}),i);var Gi={};ei(Gi,{AddressStatus:()=>Vt,AllbridgeCoreSdk:()=>Un,AmountFormat:()=>bt,AmountNotEnoughError:()=>Ge,ArgumentInvalidDecimalsError:()=>pt,CCTPDoesNotSupportedError:()=>re,ChainSymbol:()=>me,ChainType:()=>N,ErrorCode:()=>Vn,ExtraGasMaxLimitExceededError:()=>lt,FeePaymentMethod:()=>Ke,InsufficientPoolLiquidityError:()=>we,InvalidAmountError:()=>ut,InvalidGasFeePaymentOptionError:()=>ze,InvalidMessengerOptionError:()=>fn,InvalidTxError:()=>Ze,JupiterError:()=>Y,Messenger:()=>ke,MethodNotSupportedError:()=>J,NodeRpcUrlNotInitializedError:()=>dt,SdkError:()=>k,SdkRootError:()=>F,SolanaAutoTxFee:()=>Jt,TimeoutError:()=>$e,TxTooLargeError:()=>gt,VerifyTxError:()=>qe,mainnet:()=>mt,nodeRpcUrlsDefault:()=>si,nodeUrlsDefault:()=>ri,testnet:()=>ni,testnetNodeRpcUrlsDefault:()=>ii,testnetNodeUrlsDefault:()=>ai});module.exports=ti(Gi);var ni={coreApiUrl:"https://core-dev.a11bd.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"",wormholeMessengerProgramId:"3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5",solanaLookUpTable:"C3jAxHRTZjM2Bs7EqPir4nvrT8zKtpcW7RvGR9R2qKtN",sorobanNetworkPassphrase:"Test SDF Network ; September 2015",tronJsonRpc:"https://nile.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{SPL:0,ARB:3,AMO:7}}},ai={solanaRpcUrl:"https://api.devnet.solana.com",tronRpcUrl:"https://nile.trongrid.io"},ii={SOL:"https://api.devnet.solana.com",TRX:"https://nile.trongrid.io",SRB:"https://soroban-testnet.stellar.org",STLR:"https://horizon-testnet.stellar.org"};var mt={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"https://quote-api.jup.ag/v6",wormholeMessengerProgramId:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",solanaLookUpTable:"2JcBAEVnAwVo4u8d61iqgHPrzZuugur7cVTjWubsVLHj",sorobanNetworkPassphrase:"Public Global Stellar Network ; September 2015",tronJsonRpc:"https://api.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{ETH:0,AVA:1,OPT:2,ARB:3,SOL:5,BAS:6,POL:7}}},ri={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},si={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org"};var he=require("big.js");var Nt=class{constructor(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 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=O(require("axios"));var On="3.16.0-beta.1";var me=(p=>(p.GRL="GRL",p.SPL="SPL",p.HOL="HOL",p.BSC="BSC",p.ETH="ETH",p.BAS="BAS",p.SOL="SOL",p.TRX="TRX",p.POL="POL",p.MUM="MUM",p.AMO="AMO",p.ARB="ARB",p.CEL="CEL",p.AVA="AVA",p.SRB="SRB",p.STLR="STLR",p.OPT="OPT",p))(me||{}),N=(a=>(a.EVM="EVM",a.SOLANA="SOLANA",a.TRX="TRX",a.SRB="SRB",a))(N||{}),V={EVM:18,SOLANA:9,TRX:6,SRB:7},j={GRL:{chainSymbol:"GRL",chainId:"0x5",name:"Goerli",chainType:"EVM"},SPL:{chainSymbol:"SPL",chainId:"0xaa36a7",name:"Sepolia",chainType:"EVM"},HOL:{chainSymbol:"HOL",chainId:"0x4268",name:"Hole\u0161ky",chainType:"EVM"},BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},MUM:{chainSymbol:"MUM",chainId:"0x13881",name:"Mumbai",chainType:"EVM"},AMO:{chainSymbol:"AMO",chainId:"0x13882",name:"Amoy",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"}};var l=require("big.js"),Ot=O(require("bn.js"));var F=class extends Error{constructor(t,e){super(e),this.errorCode=t}},k=class extends F{constructor(t){super("SdkError",t)}},ut=class extends F{constructor(t){super("InvalidAmountError",t)}},Ge=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)}},fn=class extends F{constructor(t){super("InvalidMessengerOptionError",t)}},J=class extends F{constructor(t){super("MethodNotSupportedError",t)}},qe=class extends F{constructor(t){super("VerifyTxError",t)}},Ze=class extends F{constructor(t){super("InvalidTxError",t)}},lt=class extends F{constructor(t){super("ExtraGasMaxLimitExceededError",t)}},pt=class extends F{constructor(t,e,n){super("ArgumentInvalidDecimalsError",`Argument '${t}' decimals '${e}' cannot be greater than '${n}'`)}},$e=class extends F{constructor(t){super("TimeoutError",t)}},dt=class extends F{constructor(t){super("NodeRpcUrlNotInitializedError",`For chain '${t}' Node RPC URL not initialized`)}},re=class extends F{constructor(t){super("CCTPDoesNotSupportedError",t)}},gt=class extends F{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},Vn=(d=>(d.SDK_ERROR="SdkError",d.INVALID_AMOUNT_ERROR="InvalidAmountError",d.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",d.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",d.JUPITER_ERROR="JupiterError",d.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",d.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",d.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",d.VERIFY_TX_ERROR="VerifyTxError",d.INVALID_TX_ERROR="InvalidTxError",d.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",d.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",d.TIMEOUT_ERROR="TimeoutError",d.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",d.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",d.TX_TOO_LARGE="TxTooLargeError",d))(Vn||{});function yn(i,t){return(0,l.Big)(100).minus((0,l.Big)(100).times(t).div(i)).toNumber()}function _e(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(ft(n))}function ft(i){return(0,l.Big)(10).pow(i)}function B(i,t){return(0,l.Big)(i).times(ft(t))}function b(i,t){let e=(0,l.Big)(i);return e.eq(0)?(0,l.Big)(0):(0,l.Big)(e).div(ft(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=_e(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 yt(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 Gn(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 Zn(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 _n(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=_e(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 Ln(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 Xn(i){return(0,l.Big)(i).gt(0)?`${Number((0,l.Big)(i).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function Kn(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 Vt=(s=>(s.OK="OK",s.INVALID="INVALID",s.FORBIDDEN="FORBIDDEN",s.UNINITIALIZED="UNINITIALIZED",s.CONTRACT_ADDRESS="CONTRACT_ADDRESS",s.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",s))(Vt||{});var ke=(n=>(n[n.ALLBRIDGE=1]="ALLBRIDGE",n[n.WORMHOLE=2]="WORMHOLE",n[n.CCTP=3]="CCTP",n))(ke||{});function Qn(i){return Object.entries(i).reduce((t,e)=>{let n=e[0],a=e[1],r=ui(n,a);return r&&(t[n]=r),t},{})}function Yn(i){let t={};for(let[e,n]of Object.entries(i)){let a=e;for(let r of n.tokens){let s=et({chainSymbol:a,poolAddress:r.poolAddress}),o=te(r.poolInfo);t[s]={...r.poolInfo,imbalance:o}}}return t}function oi(i,t){let{name:e,...n}=i,{poolInfo:a,...r}=t;return{...r,...n,chainName:e}}function Ai(i){switch(i){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;default:return null}}function ci(i){return Object.entries(i).reduce((t,[e,n])=>(t[e]=mi(n),t),{})}function mi(i){return Object.entries(i).reduce((t,[e,n])=>{let a=Ai(e);return a&&(t[a]=n),t},{})}function ui(i,t){let e=j[i];if(!e)return null;let n={...e,allbridgeChainId:t.chainId,bridgeAddress:t.bridgeAddress,transferTime:ci(t.transferTime),txCostAmount:t.txCostAmount,confirmations:t.confirmations};return{...n,tokens:t.tokens.map(a=>oi(n,a))}}function et(i){return i.chainSymbol+"_"+i.poolAddress}function Jn(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 Hn(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[et({chainSymbol:a,poolAddress:r})]=s}return t}var Gt=class{constructor(t){this.api=jn.default.create({baseURL:t.coreApiUrl,headers:{Accept:"application/json",...t.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+On},params:t.coreApiQueryParams})}async getTokenInfo(){let{data:t}=await this.api.get("/token-info");return{chainDetailsMap:Qn(t),poolInfoMap:Yn(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 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 Hn(n)}};var li=(i,t)=>i!==null&&Object.prototype.hasOwnProperty.call(i,t),zn="__cache__",hn=function(i){return typeof i!="string"?zn+JSON.stringify(i):zn+i},Tn=class{constructor(t={defaultTtl:60*1e3}){this.cache={},this.defaultTtl=t.defaultTtl||60*1e3}put(t,e,n){let a=(n?n.ttl:void 0)||this.defaultTtl,r=(n?n.callback:void 0)||function(){},s=hn(t),o=this.cache[s];o&&clearTimeout(o.handle);let A=setTimeout(()=>this.remove(t),a);this.cache[s]={handle:A,data:e,callback:r}}get(t){let e=this.cache[hn(t)];return e&&e.data}remove(t){let e=hn(t),n=this.cache[e];n&&(clearTimeout(n.handle),delete this.cache[e],n.callback(t,n.data))}clear(){for(let t in this.cache)li(this.cache,t)&&clearTimeout(this.cache[t].handle);this.cache={}}size(){return Object.keys(this.cache).length}},Le=Tn;var bn=20*1e3,pi=55*1e3,Zt=class{constructor(t){this.apiClient=t;this.tokenInfoCache=new Le({defaultTtl:pi}),this.receivedTransactionCache=new Le({defaultTtl:bn}),this.pendingInfoCache=new Le({defaultTtl:bn}),this.gasBalanceCache=new Le({defaultTtl:bn})}getTokenInfo(){let 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 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 di=55*1e3,_t=class{constructor(t){this.client=t;this.poolInfoCache=new Pn}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)}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[et(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(Jn(n.chainDetailsMap))}this.poolInfoCache.putAll(e)}cachePut(t,e){this.poolInfoCache.put(et(t),e)}},Pn=class{constructor(){this.cache=new Le({defaultTtl:di})}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=et(t);return this.cache.get(e)}};var Ia=O(require("tronweb")),xa=O(require("web3"));var Sn=require("big.js");async function G(i,t){return await i.getPoolInfoByKey({chainSymbol:t.chainSymbol,poolAddress:t.poolAddress})}function R(i){if((0,Sn.Big)(i).lte(0))throw new ut("Amount must be greater than zero")}function I(i,t,e){let n=(0,Sn.Big)(t).toFixed();if(n.split(".").length==2&&n.split(".")[1].length>e)throw new pt(i,n.split(".")[1].length,e)}async function Lt(i,t,e){return await Promise.race([i,new Promise((n,a)=>{setTimeout(()=>a(new $e(t)),e)})])}async function wn(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 $e(t)}}async function qn(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 Kt=O(require("@project-serum/anchor")),xn=require("@solana/web3.js"),ga=require("big.js");var $n=[{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"uint256",name:"_chainPrecision",type:"uint256"},{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"},{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"},{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"gas",type:"uint256"}],name:"BridgingFeeFromTokens",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"bridgeTransactionCost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"messageTransactionCost",type:"uint256"}],name:"ReceiveFee",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Received",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes32",name:"sendToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"sendAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receiveAmount",type:"uint256"}],name:"Swapped",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{indexed:!1,internalType:"bytes32",name:"message",type:"bytes32"}],name:"TokensReceived",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"addBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract Pool",name:"pool",type:"address"},{internalType:"bytes32",name:"token",type:"bytes32"}],name:"addPool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"canSwap",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"address",name:"tokenAddress",type:"address"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageGasUsage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"hasReceivedMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"}],name:"hasSentMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"hashMessage",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"otherBridgeTokens",outputs:[{internalType:"bool",name:"isSupported",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"otherBridges",outputs:[{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"tokenId",type:"bytes32"}],name:"pools",outputs:[{internalType:"contract Pool",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"processedMessages",outputs:[{internalType:"uint256",name:"isProcessed",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],name:"registerBridge",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"removeBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"sentMessages",outputs:[{internalType:"uint256",name:"isSent",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"}],name:"setAllbridgeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_rebalancer",type:"address"}],name:"setRebalancer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"}],name:"setWormholeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"feeTokenAmount",type:"uint256"}],name:"swapAndBridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"withdrawBridgingFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGasTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}];var ea=[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"address",name:"cctpMessenger_",type:"address"},{internalType:"address",name:"cctpTransmitter_",type:"address"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedExtraGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"RecipientReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"}],name:"TokensSentExtras",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridgeWithWalletAddress",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"changeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getDomainByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint64",name:"nonce",type:"uint64"}],name:"isMessageProcessed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bytes",name:"message",type:"bytes"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"domain",type:"uint32"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}];var X=O(require("@project-serum/anchor")),K=require("@solana/web3.js");async function ue(i,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 ta(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 tt(i){let t=await Ue(i),[e]=await K.PublicKey.findProgramAddress([t.toBuffer()],i);return e}async function na(i,t){let[e]=await K.PublicKey.findProgramAddress([i.toBuffer()],t);return e}async function nt(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("token"),i.toBytes()],t);return e}async function aa(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 Cn(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([i])],t);return e}async function Bn(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([i])],t);return e}async function ia(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("sent_message"),i],t);return e}async function kn(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 ra(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("cctp_bridge"),i.toBytes()],t);return e}async function sa(i,t){let[e]=await K.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("token"),i.toBytes()],t);return e}function oa(i,t){let[e]=K.PublicKey.findProgramAddressSync([X.utils.bytes.utf8.encode("lock"),t.toBuffer()],i);return e}function Aa(i,t,e,n){let a=Xe("message_transmitter",e),r=Xe("token_messenger",n),s=Xe("__event_authority",n),o=Xe("token_minter",n),A=Xe("local_token",n,[t]),c=Xe("remote_token_messenger",n,[i.toString()]),m=Xe("sender_authority",n);return{messageTransmitterAccount:a,tokenMessenger:r,tokenMessengerEventAuthority:s,tokenMinter:o,localToken:A,remoteTokenMessengerKey:c,authorityPda:m}}function Xe(i,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 ca=require("@project-serum/anchor"),Xt=require("@solana/web3.js");function Ne(i,t){let e=new Xt.Connection(i,"confirmed"),n=new Xt.PublicKey(t);return new ca.AnchorProvider(e,{publicKey:n},{preflightCommitment:"confirmed",commitment:"confirmed"})}var le=class{};var ma=require("@solana/web3.js"),Me=require("big.js"),Mn=O(require("randombytes")),ua=require("stellar-sdk"),la=O(require("tronweb"));function Ie(i,t,e){let n;switch(t){case"EVM":{n=yi(i);break}case"SOLANA":{n=new ma.PublicKey(i).toBuffer();break}case"TRX":{n=hi(i);break}case"SRB":{n=new ua.Address(i).toBuffer();break}}switch(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 pa(i){return Buffer.from(i.replace(/^0x/i,""),"hex")}function yi(i){let e=pa(i);return Buffer.concat([Buffer.alloc(32-e.length,0),e],32)}function hi(i){let t=Tt(i),e=pa(t);return Ti(e,32)}function Tt(i){return Buffer.from(la.utils.crypto.decodeBase58Address(i)).toString("hex").replace(/^41/,"0x")}function Ti(i,t){if(i.length>=t)return i;let e=Buffer.alloc(t,0);return i.copy(e,t-i.length),e}function at(){return(0,Mn.default)(32)}function vn(){let i=(0,Mn.default)(32).readBigInt64BE();return i<0?i*-1n:i}function Oe(i,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=j[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 Pi(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"&&bi(n.amount,r.decimals,n.fee,n.extraGas),n}function bi(i,t,e,n){let a=(0,Me.Big)(i).minus(e).minus(n??0);if(a.lte(0))throw new Ge(`Amount not enough to pay fee, ${b((0,Me.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 Me.Big(s.fee).mul(s.sourceNativeTokenPrice),V[t],n).toFixed(0,Me.Big.roundUp);o.stablecoin={int:A,float:b(A,n).toFixed()}}return o}async function Pi(i,t,e,n,a){let s=(await In(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,Me.Big)(i).gt(o))throw new lt(`Extra gas ${i} in int format, exceeded limit ${o} for '${t}' payment method`)}async function In(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,Me.Big)(s).div(a.exchangeRate).toFixed(V[i.chainType],Me.Big.roundDown),A=B(o,V[i.chainType]).toFixed(0);if(n.native={int:A,float:o},a.sourceNativeTokenPrice){let c=(0,Me.Big)(o).mul(a.sourceNativeTokenPrice).toFixed(i.decimals,Me.Big.roundDown);n.stablecoin={int:B(c,i.decimals).toFixed(0),float:c}}return{extraGasMax:n,destinationChain:{gasAmountMax:{int:r,float:s},swap:{int: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 da(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"+at().toString("hex"),d,p,P=g;if(y&&(P=(0,ga.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(ea,s),u,g;if(e.destinationToken.chainType==="SOLANA"){let f,y=new xn.PublicKey(e.toAccountAddress),h=new xn.PublicKey(e.destinationToken.tokenAddress),d=await ue(y,h),p=Ne(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),e.toAccountAddress);Kt.setProvider(p);let P=await Kt.Spl.token(p).account.token.fetchNullable(d);if(P?.authority.equals(y))f=Ie(d.toBase58(),"SOLANA",this.chainType);else{let T=await p.connection.getTokenAccountsByOwner(y,{mint:h});if(T.value.length===0&&!P)f=Ie(d.toBase58(),"SOLANA",this.chainType);else if(T.value.length>0)f=Ie(T.value[0].pubkey.toBase58(),"SOLANA",this.chainType);else throw new k("Associated account has wrong owner")}c==="stablecoin"?(u=m.methods.bridgeWithWalletAddress(r,f,A,o,a),g="0"):(u=m.methods.bridgeWithWalletAddress(r,f,A,o,0),g=a)}else c==="stablecoin"?(u=m.methods.bridge(r,A,o,a),g="0"):(u=m.methods.bridge(r,A,o,0),g=a);return{sendMethod:u,value:g}}async sendRawTransaction(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($n,e)}};var Qt=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 R(t.amount),I("amount",t.amount,t.sourceToken.decimals),da(t)?Yt(t.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,e).buildRawTransactionSend(t):Yt(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 fa={version:"0.1.0",name:"cctp_bridge",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"bridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"cctpMessenger",isMut:!1,isSigner:!1},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"messageTransmitterAccount",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"remoteTokenMessengerKey",isMut:!1,isSigner:!1},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"setAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setCctpTokenMessengerMinter",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]}],accounts:[{name:"cctpBridge",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"admin",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"adminFeeShareBp",type:"u64"},{name:"adminFeeAmount",type:"u64"}]}},{name:"chainBridge",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"amount",type:"u64"},{name:"adminFee",type:"u64"},{name:"relayerFee",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"slot",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"amount",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"gasOracleProgramId",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"}]}}],errors:[{code:6e3,name:"ValueTooHigh",msg:"Value is too high"}]};var ya=require("@project-serum/anchor"),ha=O(require("big.js")),Ct=O(require("web3"));async function it(i,t){return await ya.Spl.token(t).account.token.fetch(i)}async function Ta(i,t,e){let n=await t.account.pool.fetch(e),a=n.decimals,r=(0,ha.default)(n.feeShareBp.toString()).div(1e4).toFixed(),s={aValue:n.a.toString(),dValue:n.d.toString(),totalLpAmount:n.totalLpAmount.toString(),tokenBalance:n.tokenBalance.toString(),vUsdBalance:n.vUsdBalance.toString(),accRewardPerShareP:n.accRewardPerShareP.toString()};return Ce(i,{decimals:a,feeShare:r},s)}function ba(i){let 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 Ze("messageWithSigner cannot be undefined");let f=Ct.default.utils.keccak256(Buffer.from(g.replace("0x",""),"hex")),y=Buffer.from(f.replace("0x",""),"hex");return y[0]=u[0],y[1]=u[1],y}var ne=require("@solana/web3.js"),Pa=require("big.js");var Dn=require("@solana/web3.js");async function Qe(i,t){return await Promise.all(i.message.addressTableLookups.map(async e=>new Dn.AddressLookupTableAccount({key:e.accountKey,state:Dn.AddressLookupTableAccount.deserialize(await t.getAccountInfo(e.accountKey).then(n=>{if(!n)throw new k("Cannot get AccountInfo");return n.data}))})))}var Jt="AUTO";async function rt(i,t,e){let n=new ne.Connection(e,"confirmed"),a=(await n.simulateTransaction(i)).value.unitsConsumed;await wa(i.instructions,a,t,n)}async function Sa(i,t,e){let n=new ne.Connection(e,"confirmed"),a=await Qe(i,n),r=ne.TransactionMessage.decompile(i.message,{addressLookupTableAccounts:a});if(i.serialize().length>1232)throw new gt;await wa(r.instructions,769230,t,n),i.message=r.compileToV0Message(a)}async function wa(i,t,e,n){if(t>0){let a=Si(t,i);if(e?.solana){let r=e.solana;if(r===Jt)await Fn(i,n);else if("pricePerUnitInMicroLamports"in r)await Fn(i,n,r.pricePerUnitInMicroLamports);else{let s=(0,Pa.Big)(r.extraFeeInLamports).div(a).mul(ft(6)).toFixed(0);await Fn(i,n,s)}}}}function Si(i,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 Fn(i,t,e){let n=i.findIndex(s=>s.programId.equals(ne.ComputeBudgetProgram.programId)&&ne.ComputeBudgetInstruction.decodeInstructionType(s)==="SetComputeUnitPrice"),a=BigInt(e||await wi(t)),r=ne.ComputeBudgetProgram.setComputeUnitPrice({microLamports:a});return n>=0?i[n]=r:i.push(r),a.toString()}async function wi(i){let t=await i.getRecentPrioritizationFees(),e=0;for(let n of t)e+=n.prioritizationFee;return(e/t.length).toFixed(0)}var Ca=require("@solana/spl-token"),Ye=require("@solana/web3.js"),st=O(require("axios"));var Ht=class{constructor(t,e){this.connection=new Ye.Connection(t),this.jupiterUrl=e.replace(/\/$/,"")}async getJupiterSwapTx(t,e,n){let a;try{a=await st.default.get(`${this.jupiterUrl}/quote?inputMint=${e}
2
- &outputMint=${Ca.NATIVE_MINT.toString()}
3
- &amount=${n}
1
+ "use strict";var Ua=Object.create;var Rt=Object.defineProperty;var Va=Object.getOwnPropertyDescriptor;var Oa=Object.getOwnPropertyNames;var Ea=Object.getPrototypeOf,Xa=Object.prototype.hasOwnProperty;var Ya=(r,a)=>{for(var n in a)Rt(r,n,{get:a[n],enumerable:!0})},vn=(r,a,n,i)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of Oa(a))!Xa.call(r,s)&&s!==n&&Rt(r,s,{get:()=>a[s],enumerable:!(i=Va(a,s))||i.enumerable});return r};var _=(r,a,n)=>(n=r!=null?Ua(Ea(r)):{},vn(a||!r||!r.__esModule?Rt(n,"default",{value:r,enumerable:!0}):n,r)),La=r=>vn(Rt({},"__esModule",{value:!0}),r);var Gi={};Ya(Gi,{AddressStatus:()=>kt,AllbridgeCoreSdk:()=>In,AmountFormat:()=>lt,AmountNotEnoughError:()=>Ge,ArgumentInvalidDecimalsError:()=>st,CCTPDoesNotSupportedError:()=>ne,ChainSymbol:()=>re,ChainType:()=>D,ErrorCode:()=>Mn,ExtraGasMaxLimitExceededError:()=>it,FeePaymentMethod:()=>Ue,InsufficientPoolLiquidityError:()=>he,InvalidAmountError:()=>at,InvalidGasFeePaymentOptionError:()=>Xe,InvalidMessengerOptionError:()=>rn,InvalidTxError:()=>Ze,JupiterError:()=>L,Messenger:()=>Pe,MethodNotSupportedError:()=>J,NodeRpcUrlNotInitializedError:()=>rt,SdkError:()=>v,SdkRootError:()=>Z,SolanaAutoTxFee:()=>_t,TimeoutError:()=>Le,TxTooLargeError:()=>ot,VerifyTxError:()=>Ye,mainnet:()=>nt,nodeRpcUrlsDefault:()=>za,nodeUrlsDefault:()=>Ha,testnet:()=>Ja,testnetNodeRpcUrlsDefault:()=>Qa,testnetNodeUrlsDefault:()=>Ka});module.exports=La(Gi);var Ja={coreApiUrl:"https://core-dev.a11bd.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"",wormholeMessengerProgramId:"3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5",solanaLookUpTable:"C3jAxHRTZjM2Bs7EqPir4nvrT8zKtpcW7RvGR9R2qKtN",sorobanNetworkPassphrase:"Test SDF Network ; September 2015",tronJsonRpc:"https://nile.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{SPL:0,ARB:3,AMO:7}}},Ka={solanaRpcUrl:"https://api.devnet.solana.com",tronRpcUrl:"https://nile.trongrid.io"},Qa={SOL:"https://api.devnet.solana.com",TRX:"https://nile.trongrid.io",SRB:"https://soroban-testnet.stellar.org",STLR:"https://horizon-testnet.stellar.org"};var nt={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"https://quote-api.jup.ag/v6",wormholeMessengerProgramId:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",solanaLookUpTable:"2JcBAEVnAwVo4u8d61iqgHPrzZuugur7cVTjWubsVLHj",sorobanNetworkPassphrase:"Public Global Stellar Network ; September 2015",tronJsonRpc:"https://api.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{ETH:0,AVA:1,OPT:2,ARB:3,SOL:5,BAS:6,POL:7}}},Ha={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},za={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org"};var de=require("big.js");var It=class{constructor(a){this.apiClient=a}async getChainDetailsMap(){return(await this.apiClient.getTokenInfo()).chainDetailsMap}async tokens(){let a=await this.getChainDetailsMap();return Object.values(a).flatMap(n=>n.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(a,n){return this.apiClient.getGasBalance(a,n)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(a,n){return await this.apiClient.getTransferStatus(a,n)}async getReceiveTransactionCost(a){return await this.apiClient.getReceiveTransactionCost(a)}async getPoolInfoMap(a){return await this.apiClient.getPoolInfoMap(a)}};var On=_(require("axios"));var kn="3.16.0";var re=(g=>(g.GRL="GRL",g.SPL="SPL",g.HOL="HOL",g.BSC="BSC",g.ETH="ETH",g.BAS="BAS",g.SOL="SOL",g.TRX="TRX",g.POL="POL",g.MUM="MUM",g.AMO="AMO",g.ARB="ARB",g.CEL="CEL",g.AVA="AVA",g.SRB="SRB",g.STLR="STLR",g.OPT="OPT",g))(re||{}),D=(s=>(s.EVM="EVM",s.SOLANA="SOLANA",s.TRX="TRX",s.SRB="SRB",s))(D||{}),U={EVM:18,SOLANA:9,TRX:6,SRB:7},Q={GRL:{chainSymbol:"GRL",chainId:"0x5",name:"Goerli",chainType:"EVM"},SPL:{chainSymbol:"SPL",chainId:"0xaa36a7",name:"Sepolia",chainType:"EVM"},HOL:{chainSymbol:"HOL",chainId:"0x4268",name:"Hole\u0161ky",chainType:"EVM"},BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},MUM:{chainSymbol:"MUM",chainId:"0x13881",name:"Mumbai",chainType:"EVM"},AMO:{chainSymbol:"AMO",chainId:"0x13882",name:"Amoy",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"}};var p=require("big.js"),vt=_(require("bn.js"));var Z=class extends Error{constructor(a,n){super(n),this.errorCode=a}},v=class extends Z{constructor(a){super("SdkError",a)}},at=class extends Z{constructor(a){super("InvalidAmountError",a)}},Ge=class extends Z{constructor(a){super("AmountNotEnoughError",a)}},he=class extends Z{constructor(a){super("InsufficientPoolLiquidityError",a)}},L=class extends Z{constructor(a){super("JupiterError",a)}},Xe=class extends Z{constructor(a){super("InvalidGasFeePaymentOptionError",a)}},rn=class extends Z{constructor(a){super("InvalidMessengerOptionError",a)}},J=class extends Z{constructor(a){super("MethodNotSupportedError",a)}},Ye=class extends Z{constructor(a){super("VerifyTxError",a)}},Ze=class extends Z{constructor(a){super("InvalidTxError",a)}},it=class extends Z{constructor(a){super("ExtraGasMaxLimitExceededError",a)}},st=class extends Z{constructor(a,n,i){super("ArgumentInvalidDecimalsError",`Argument '${a}' decimals '${n}' cannot be greater than '${i}'`)}},Le=class extends Z{constructor(a){super("TimeoutError",a)}},rt=class extends Z{constructor(a){super("NodeRpcUrlNotInitializedError",`For chain '${a}' Node RPC URL not initialized`)}},ne=class extends Z{constructor(a){super("CCTPDoesNotSupportedError",a)}},ot=class extends Z{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},Mn=(f=>(f.SDK_ERROR="SdkError",f.INVALID_AMOUNT_ERROR="InvalidAmountError",f.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",f.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",f.JUPITER_ERROR="JupiterError",f.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",f.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",f.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",f.VERIFY_TX_ERROR="VerifyTxError",f.INVALID_TX_ERROR="InvalidTxError",f.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",f.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",f.TIMEOUT_ERROR="TimeoutError",f.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",f.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",f.TX_TOO_LARGE="TxTooLargeError",f))(Mn||{});function on(r,a){return(0,p.Big)(100).minus((0,p.Big)(100).times(a).div(r)).toNumber()}function Ne(r,a){return ke(r,a,3).round(0,p.Big.roundDown)}function j(r,a){return ke(r,3,a)}function ke(r,a,n){let i=(0,p.Big)(n).minus(a).toNumber();return(0,p.Big)(r).times(At(i))}function At(r){return(0,p.Big)(10).pow(r)}function I(r,a){return(0,p.Big)(r).times(At(a))}function S(r,a){let n=(0,p.Big)(r);return n.eq(0)?(0,p.Big)(0):(0,p.Big)(n).div(At(a))}function q(r){return S((0,p.Big)(r.tokenBalance).minus(r.vUsdBalance).toFixed(),3).div(2).toFixed()}function be(r,{feeShare:a,decimals:n},i){let s=(0,p.Big)(r);if(s.lte(0))return"0";let o=s.times(a),A=s.minus(o),c=Ne(A,n),m=(0,p.Big)(i.tokenBalance).plus(c),u=Te(m,i.aValue,i.dValue);return(0,p.Big)(i.vUsdBalance).minus(u).round(0,p.Big.roundDown).toFixed()}function ct(r,{feeShare:a,decimals:n},i){let s=(0,p.Big)(r);if(s.lte(0))return(0,p.Big)(0).toFixed();let o=s.plus(i.vUsdBalance),A=Te(o,i.aValue,i.dValue),c=j((0,p.Big)(i.tokenBalance).minus(A),n),m=(0,p.Big)(c).times(a);return(0,p.Big)(c).minus(m).round(0,p.Big.roundDown).toFixed()}function xn(r,a){let n=(0,p.Big)(r);if(n.lte(0))return a;let i=n.plus(a.vUsdBalance),s=Te(i,a.aValue,a.dValue);return{aValue:a.aValue,dValue:a.dValue,tokenBalance:s.toFixed(0),vUsdBalance:i.toFixed(0)}}function Wn(r,{feeShare:a,decimals:n},i){if((0,p.Big)(r).lte(0))return(0,p.Big)(0);let s=(0,p.Big)(i.vUsdBalance).minus(r);if(s.lte(0))throw new he;let o=Te(s,i.aValue,i.dValue),A=(0,p.Big)(o).minus(i.tokenBalance),c=j(A,n),m=(0,p.Big)(a).div((0,p.Big)(1).minus(a)),u=(0,p.Big)(c).times(m).round(0,p.Big.roundUp);return(0,p.Big)(c).plus(u).round(0,p.Big.roundDown)}function Fn(r,{feeShare:a,decimals:n},i){if((0,p.Big)(r).lte(0))return(0,p.Big)(0);let s=(0,p.Big)(a).div((0,p.Big)(1).minus(a)),o=(0,p.Big)(r).times(s).round(0,p.Big.roundUp),A=(0,p.Big)(r).plus(o),c=Ne(A,n),m=(0,p.Big)(i.tokenBalance).minus(c);if(m.lte(0))throw new he;let u=Te(m,i.aValue,i.dValue);return(0,p.Big)(u).minus(i.vUsdBalance).round(0,p.Big.roundDown)}function Te(r,a,n){let i=(0,p.Big)(4).times(a).times((0,p.Big)(n).minus(r)).minus(n),s=(0,p.Big)(n).pow(3),o=i.pow(2),A=(0,p.Big)(r).times((0,p.Big)(r).times(o).plus((0,p.Big)(4).times(a).times(s))).sqrt().round(0,p.Big.roundDown),c=(0,p.Big)(8).times(a).times(r),m=i.times(r).plus(A).div(c).round(0,p.Big.roundDown);return m.eq(0)?(0,p.Big)(0):m.plus(1)}function Gn(r,a,n,i){let s=new vt.default(r),o=new vt.default(n),A=new vt.default(a);return s.mul(o).shrn(i).sub(A).toString()}function Zn(r){return(0,p.Big)(r).gt(0)?`${Number((0,p.Big)(r).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function Nn(r,a,n){let i=(0,p.Big)(a).times(n),s=(0,p.Big)(a).plus(n),o=(0,p.Big)(8).times(r).times(i).times(s),A=i.times((0,p.Big)(16).times(r).minus(4)).div(3),c=o.times(o),m=A.times(A).times(A),u=c.plus(m),l=(0,p.Big)(u).sqrt(),d=(0,p.Big)(Math.cbrt(+o.plus(l).toFixed())),y=(0,p.Big)(Math.cbrt(+o.minus(l).toFixed()));return d.plus(y).toFixed()}var kt=(A=>(A.OK="OK",A.INVALID="INVALID",A.FORBIDDEN="FORBIDDEN",A.UNINITIALIZED="UNINITIALIZED",A.CONTRACT_ADDRESS="CONTRACT_ADDRESS",A.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",A))(kt||{});var Pe=(i=>(i[i.ALLBRIDGE=1]="ALLBRIDGE",i[i.WORMHOLE=2]="WORMHOLE",i[i.CCTP=3]="CCTP",i))(Pe||{});function Dn(r){return Object.entries(r).reduce((a,n)=>{let i=n[0],s=n[1],o=ti(i,s);return o&&(a[i]=o),a},{})}function _n(r){let a={};for(let[n,i]of Object.entries(r)){let s=n;for(let o of i.tokens){let A=Je({chainSymbol:s,poolAddress:o.poolAddress}),c=q(o.poolInfo);a[A]={...o.poolInfo,imbalance:c}}}return a}function ja(r,a){let{name:n,...i}=r,{poolInfo:s,...o}=a;return{...o,...i,chainName:n}}function qa(r){switch(r){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;default:return null}}function $a(r){return Object.entries(r).reduce((a,[n,i])=>(a[n]=ei(i),a),{})}function ei(r){return Object.entries(r).reduce((a,[n,i])=>{let s=qa(n);return s&&(a[s]=i),a},{})}function ti(r,a){let n=Q[r];if(!n)return null;let i={...n,allbridgeChainId:a.chainId,bridgeAddress:a.bridgeAddress,transferTime:$a(a.transferTime),txCostAmount:a.txCostAmount,confirmations:a.confirmations};return{...i,tokens:a.tokens.map(s=>ja(i,s))}}function Je(r){return r.chainSymbol+"_"+r.poolAddress}function Un(r){let a=[];for(let[n,i]of Object.entries(r)){let s=n;for(let o of i.tokens)a.push({chainSymbol:s,poolAddress:o.poolAddress})}return a}function Vn(r){let a={};for(let[n,i]of Object.entries(r)){let s=n;for(let[o,A]of Object.entries(i))A.imbalance=q(A),a[Je({chainSymbol:s,poolAddress:o})]=A}return a}var Mt=class{constructor(a){this.api=On.default.create({baseURL:a.coreApiUrl,headers:{Accept:"application/json",...a.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+kn},params:a.coreApiQueryParams})}async getTokenInfo(){let{data:a}=await this.api.get("/token-info");return{chainDetailsMap:Dn(a),poolInfoMap:_n(a)}}async getPendingInfo(){let{data:a}=await this.api.get("/pending-info");return a}async getGasBalance(a,n){let{data:i}=await this.api.get(`/check/${a}/${n}`);return i}async getTransferStatus(a,n){let{data:i}=await this.api.get(`/chain/${a}/${n}`);return i}async getReceiveTransactionCost(a){let{data:n}=await this.api.post("/receive-fee",a,{headers:{"Content-Type":"application/json"}});return{exchangeRate:n.exchangeRate,fee:n.fee,sourceNativeTokenPrice:n.sourceNativeTokenPrice}}async getPoolInfoMap(a){let n=a instanceof Array?a:[a],{data:i}=await this.api.post("/pool-info",{pools:n},{headers:{"Content-Type":"application/json"}});return Vn(i)}};var ni=(r,a)=>r!==null&&Object.prototype.hasOwnProperty.call(r,a),En="__cache__",An=function(r){return typeof r!="string"?En+JSON.stringify(r):En+r},cn=class{constructor(a={defaultTtl:60*1e3}){this.cache={},this.defaultTtl=a.defaultTtl||60*1e3}put(a,n,i){let s=(i?i.ttl:void 0)||this.defaultTtl,o=(i?i.callback:void 0)||function(){},A=An(a),c=this.cache[A];c&&clearTimeout(c.handle);let m=setTimeout(()=>this.remove(a),s);this.cache[A]={handle:m,data:n,callback:o}}get(a){let n=this.cache[An(a)];return n&&n.data}remove(a){let n=An(a),i=this.cache[n];i&&(clearTimeout(i.handle),delete this.cache[n],i.callback(a,i.data))}clear(){for(let a in this.cache)ni(this.cache,a)&&clearTimeout(this.cache[a].handle);this.cache={}}size(){return Object.keys(this.cache).length}},De=cn;var mn=20*1e3,ai=55*1e3,xt=class{constructor(a){this.apiClient=a;this.tokenInfoCache=new De({defaultTtl:ai}),this.receivedTransactionCache=new De({defaultTtl:mn}),this.pendingInfoCache=new De({defaultTtl:mn}),this.gasBalanceCache=new De({defaultTtl:mn})}getTokenInfo(){let a="TOKEN_INFO_CACHE_KEY",n=this.tokenInfoCache.get(a);if(n)return n;let i=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(a,i),i}async getGasBalance(a,n){let i=`GAS_BALANCE_${a}_${n}`,s=this.gasBalanceCache.get(i);if(s)return s;let o=this.apiClient.getGasBalance(a,n);return this.gasBalanceCache.put(i,o),o}async getPendingInfo(){let a="PENDING_INFO_CACHE_KEY",n=this.pendingInfoCache.get(a);if(n)return n;let i=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(a,i),i}async getReceiveTransactionCost(a){let n=`RECEIVE_TX_COST_${a.sourceChainId}_${a.destinationChainId}_${a.messenger}`,i=this.receivedTransactionCache.get(n);if(i)return i;let s=await this.apiClient.getReceiveTransactionCost(a);return this.receivedTransactionCache.put(n,s),s}async getTransferStatus(a,n){return this.apiClient.getTransferStatus(a,n)}async getPoolInfoMap(a){return this.apiClient.getPoolInfoMap(a)}};var ii=55*1e3,Wt=class{constructor(a){this.client=a;this.poolInfoCache=new un}async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(a,n){return this.client.getTransferStatus(a,n)}getReceiveTransactionCost(a){return this.client.getReceiveTransactionCost(a)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(a,n){return this.client.getGasBalance(a,n)}async getPoolInfoByKey(a){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let n=this.poolInfoCache.get(a);if(n)return n;{let i=await this.client.getPoolInfoMap(a);return this.poolInfoCache.putAll(i),i[Je(a)]}}async refreshPoolInfo(a){let n;if(a)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),n=await this.client.getPoolInfoMap(a);else{let i=await this.client.getChainDetailsMapAndPoolInfoMap();n=await this.client.getPoolInfoMap(Un(i.chainDetailsMap))}this.poolInfoCache.putAll(n)}cachePut(a,n){this.poolInfoCache.put(Je(a),n)}},un=class{constructor(){this.cache=new De({defaultTtl:ii})}putAll(a){for(let[n,i]of Object.entries(a))this.cache.put(n,i)}putAllIfNotExists(a){for(let[n,i]of Object.entries(a))this.cache.get(n)||this.cache.put(n,i)}put(a,n){this.cache.put(a,n)}get(a){let n=Je(a);return this.cache.get(n)}};var Ta=_(require("tronweb")),Pa=_(require("web3"));var ln=require("big.js");async function V(r,a){return await r.getPoolInfoByKey({chainSymbol:a.chainSymbol,poolAddress:a.poolAddress})}function x(r){if((0,ln.Big)(r).lte(0))throw new at("Amount must be greater than zero")}function W(r,a,n){let i=(0,ln.Big)(a).toFixed();if(i.split(".").length==2&&i.split(".")[1].length>n)throw new st(r,i.split(".")[1].length,n)}async function Ft(r,a,n){return await Promise.race([r,new Promise((i,s)=>{setTimeout(()=>s(new Le(a)),n)})])}async function dn(r,a,n,i){if(n<1)throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${n} was received.`);let s=0;for(;;)try{return await Ft(r(),a,i)}catch{if(++s>=n)throw new Le(a)}}async function Xn(r,a,n,i=1.5,s=!1){let o=[],A=0;if(o.push(await r()),!a(o[o.length-1]))return o;let c=new Date(Date.now()+n*1e3).valueOf(),m=1e3,u=m;for(;Date.now()<c&&a(o[o.length-1]);)A++,s&&console.info(`Waiting ${m}ms before trying again (bringing the total wait time to ${u}ms so far, of total ${n*1e3}ms)`),await new Promise(l=>setTimeout(l,m)),m=m*i,new Date(Date.now()+m).valueOf()>c&&(m=c-Date.now(),s&&console.info(`was gonna wait too long; new waitTime: ${m}ms`)),u=m+u,o.push(await r(o[o.length-1])),s&&a(o[o.length-1])&&console.info(`${A}. Called ${r.name}; ${o.length} prev attempts. Most recent: ${JSON.stringify(o[o.length-1],null,2)}`);return o}var Zt=_(require("@project-serum/anchor")),Pn=require("@solana/web3.js"),ra=require("big.js");var Yn=[{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"uint256",name:"_chainPrecision",type:"uint256"},{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"},{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"},{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"gas",type:"uint256"}],name:"BridgingFeeFromTokens",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"bridgeTransactionCost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"messageTransactionCost",type:"uint256"}],name:"ReceiveFee",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Received",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes32",name:"sendToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"sendAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receiveAmount",type:"uint256"}],name:"Swapped",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{indexed:!1,internalType:"bytes32",name:"message",type:"bytes32"}],name:"TokensReceived",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"addBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract Pool",name:"pool",type:"address"},{internalType:"bytes32",name:"token",type:"bytes32"}],name:"addPool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"canSwap",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"address",name:"tokenAddress",type:"address"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageGasUsage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"hasReceivedMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"}],name:"hasSentMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"hashMessage",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"otherBridgeTokens",outputs:[{internalType:"bool",name:"isSupported",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"otherBridges",outputs:[{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"tokenId",type:"bytes32"}],name:"pools",outputs:[{internalType:"contract Pool",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"processedMessages",outputs:[{internalType:"uint256",name:"isProcessed",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],name:"registerBridge",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"removeBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"sentMessages",outputs:[{internalType:"uint256",name:"isSent",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"}],name:"setAllbridgeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_rebalancer",type:"address"}],name:"setRebalancer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"}],name:"setWormholeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"feeTokenAmount",type:"uint256"}],name:"swapAndBridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"withdrawBridgingFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGasTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}];var Ln=[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"address",name:"cctpMessenger_",type:"address"},{internalType:"address",name:"cctpTransmitter_",type:"address"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedExtraGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"RecipientReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"}],name:"TokensSentExtras",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridgeWithWalletAddress",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"changeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getDomainByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint64",name:"nonce",type:"uint64"}],name:"isMessageProcessed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bytes",name:"message",type:"bytes"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"domain",type:"uint32"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}];var X=_(require("@project-serum/anchor")),Y=require("@solana/web3.js");async function oe(r,a){return X.utils.token.associatedAddress({mint:a,owner:r})}async function Me(r){let[a]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("config")],r);return a}async function Jn(r,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("lock"),Uint8Array.from(r)],a);return n}async function mt(r,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([r])],a);return n}async function Ke(r){let a=await Me(r),[n]=await Y.PublicKey.findProgramAddress([a.toBuffer()],r);return n}async function Kn(r,a){let[n]=await Y.PublicKey.findProgramAddress([r.toBuffer()],a);return n}async function Qe(r,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("token"),r.toBytes()],a);return n}async function Qn(r,a,n){let[i]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("other_bridge_token"),Buffer.from([r]),a],n);return i}async function pn(r,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([r])],a);return n}async function gn(r,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([r])],a);return n}async function Hn(r,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("sent_message"),r],a);return n}async function fn(r,a,n){let[i]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("user_deposit"),a.toBytes(),r.toBytes()],n);return i}async function zn(r,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("cctp_bridge"),r.toBytes()],a);return n}async function jn(r,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("token"),r.toBytes()],a);return n}function qn(r,a){let[n]=Y.PublicKey.findProgramAddressSync([X.utils.bytes.utf8.encode("lock"),a.toBuffer()],r);return n}function $n(r,a,n,i){let s=_e("message_transmitter",n),o=_e("token_messenger",i),A=_e("__event_authority",i),c=_e("token_minter",i),m=_e("local_token",i,[a]),u=_e("remote_token_messenger",i,[r.toString()]),l=_e("sender_authority",i);return{messageTransmitterAccount:s,tokenMessenger:o,tokenMessengerEventAuthority:A,tokenMinter:c,localToken:m,remoteTokenMessengerKey:u,authorityPda:l}}function _e(r,a,n=[]){let i=[Buffer.from(X.utils.bytes.utf8.encode(r))];for(let o of n)typeof o=="string"?i.push(Buffer.from(X.utils.bytes.utf8.encode(o))):Array.isArray(o)?i.push(Buffer.from(o)):Buffer.isBuffer(o)?i.push(o):i.push(o.toBuffer());return Y.PublicKey.findProgramAddressSync(i,a)[0]}var ea=require("@project-serum/anchor"),Gt=require("@solana/web3.js");function xe(r,a){let n=new Gt.Connection(r,"confirmed"),i=new Gt.PublicKey(a);return new ea.AnchorProvider(n,{publicKey:i},{preflightCommitment:"confirmed",commitment:"confirmed"})}var Ae=class{};var ta=require("@solana/web3.js"),na=require("@stellar/stellar-sdk"),Se=require("big.js"),yn=_(require("randombytes")),aa=_(require("tronweb"));function Be(r,a,n){let i;switch(a){case"EVM":{i=oi(r);break}case"SOLANA":{i=new ta.PublicKey(r).toBuffer();break}case"TRX":{i=Ai(r);break}case"SRB":{i=new na.Address(r).toBuffer();break}}switch(n){case"EVM":return"0x"+i.toString("hex");case"SOLANA":return Array.from(i);case"TRX":return i.toJSON().data;case"SRB":return i.toJSON().data}}function ia(r){return Buffer.from(r.replace(/^0x/i,""),"hex")}function oi(r){let n=ia(r);return Buffer.concat([Buffer.alloc(32-n.length,0),n],32)}function Ai(r){let a=ut(r),n=ia(a);return ci(n,32)}function ut(r){return Buffer.from(aa.utils.crypto.decodeBase58Address(r)).toString("hex").replace(/^41/,"0x")}function ci(r,a){if(r.length>=a)return r;let n=Buffer.alloc(a,0);return r.copy(n,a-r.length),n}function He(){return(0,yn.default)(32)}function hn(){let r=(0,yn.default)(32).readBigInt64BE();return r<0?r*-1n:r}function We(r,a){let n={},i=a.sourceToken;return n.amount=I(a.amount,i.decimals).toFixed(),n.contractAddress=i.bridgeAddress,n.fromAccountAddress=a.fromAccountAddress,n.fromTokenAddress=Be(i.tokenAddress,r,r),n.toAccountAddress=a.toAccountAddress,n.toTokenAddress=Be(a.destinationToken.tokenAddress,r,r),n.minimumReceiveAmount=a.minimumReceiveAmount?I(a.minimumReceiveAmount,a.destinationToken.decimals).toFixed():"0",n}async function Re(r,a,n){let i={};i.fromChainId=a.sourceToken.allbridgeChainId,i.fromChainSymbol=a.sourceToken.chainSymbol;let s=Q[a.destinationToken.chainSymbol].chainType;i.fromTokenAddress=a.sourceToken.tokenAddress,i.toChainId=a.destinationToken.allbridgeChainId,i.toTokenAddress=a.destinationToken.tokenAddress,a.gasFeePaymentMethod==="stablecoin"?i.gasFeePaymentMethod="stablecoin":i.gasFeePaymentMethod="native";let o=a.sourceToken;if(a.messenger===3){if(!o.cctpAddress||!a.destinationToken.cctpAddress)throw new ne("Such route does not support CCTP protocol");i.contractAddress=o.cctpAddress}else i.contractAddress=o.bridgeAddress;i.messenger=a.messenger,i.fromAccountAddress=a.fromAccountAddress,i.amount=I(a.amount,o.decimals).toFixed();let{fee:A,feeFormat:c}=a;if(!A){let d=(await bn(i.fromChainId,a.sourceToken.chainType,i.toChainId,o.decimals,i.messenger,n))[i.gasFeePaymentMethod];if(!d)throw new Xe;A=d.int,c="int"}if(c=="float")switch(i.gasFeePaymentMethod){case"native":i.fee=I(A,U[o.chainType]).toFixed(0);break;case"stablecoin":i.fee=I(A,o.decimals).toFixed(0);break}else i.fee=A;let{extraGas:m,extraGasFormat:u}=a;if(m&&+m>0){if(u=="float")switch(i.gasFeePaymentMethod){case"native":i.extraGas=I(m,U[o.chainType]).toFixed(0);break;case"stablecoin":i.extraGas=I(m,o.decimals).toFixed(0);break}else i.extraGas=m;await ui(i.extraGas,i.gasFeePaymentMethod,o,a.destinationToken,n)}return i.fromTokenAddress=Be(i.fromTokenAddress,r,r),i.toAccountAddress=Be(a.toAccountAddress,s,r),i.toTokenAddress=Be(i.toTokenAddress,s,r),i.gasFeePaymentMethod=="stablecoin"&&mi(i.amount,o.decimals,i.fee,i.extraGas),i}function mi(r,a,n,i){let s=(0,Se.Big)(r).minus(n).minus(i??0);if(s.lte(0))throw new Ge(`Amount not enough to pay fee, ${S((0,Se.Big)(s).minus(1).neg(),a).toFixed()} stables is missing`)}async function bn(r,a,n,i,s,o){let A=await o.getReceiveTransactionCost({sourceChainId:r,destinationChainId:n,messenger:s}),c={native:{int:A.fee,float:S(A.fee,U[a]).toFixed()}};if(A.sourceNativeTokenPrice){let m=ke(new Se.Big(A.fee).mul(A.sourceNativeTokenPrice),U[a],i).toFixed(0,Se.Big.roundUp);c.stablecoin={int:m,float:S(m,i).toFixed()}}return c}async function ui(r,a,n,i,s){let A=(await Tn(n,i,s)).extraGasMax[a];if(!A)throw new Xe(`Impossible to pay extra gas by '${a}' payment method`);let c=A.int;if((0,Se.Big)(r).gt(c))throw new it(`Extra gas ${r} in int format, exceeded limit ${c} for '${a}' payment method`)}async function Tn(r,a,n){let i={},s=await n.getReceiveTransactionCost({sourceChainId:r.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:1}),o=a.txCostAmount.maxAmount,A=S(o,U[a.chainType]).toFixed(),c=(0,Se.Big)(A).div(s.exchangeRate).toFixed(U[r.chainType],Se.Big.roundDown),m=I(c,U[r.chainType]).toFixed(0);if(i.native={int:m,float:c},s.sourceNativeTokenPrice){let u=(0,Se.Big)(c).mul(s.sourceNativeTokenPrice).toFixed(r.decimals,Se.Big.roundDown);i.stablecoin={int:I(u,r.decimals).toFixed(0),float:u}}return{extraGasMax:i,destinationChain:{gasAmountMax:{int:o,float:A},swap:{int:a.txCostAmount.swap,float:S(a.txCostAmount.swap,U[a.chainType]).toFixed()},transfer:{int:a.txCostAmount.transfer,float:S(a.txCostAmount.transfer,U[a.chainType]).toFixed()}},exchangeRate:s.exchangeRate,sourceNativeTokenPrice:s.sourceNativeTokenPrice}}function sa(r){return r.sourceToken.chainSymbol!==r.destinationToken.chainSymbol}var dt=class extends Ae{constructor(n,i,s){super();this.web3=n;this.api=i;this.nodeRpcUrlsConfig=s;this.chainType="EVM"}async send(n){let i=await this.buildRawTransactionSend(n);return this.sendRawTransaction(i)}async buildRawTransactionSwap(n){let i=We(this.chainType,n);return await this.buildRawTransactionSwapFromParams(i)}async buildRawTransactionSwapFromParams(n){let{amount:i,contractAddress:s,fromAccountAddress:o,fromTokenAddress:A,toAccountAddress:c,toTokenAddress:m,minimumReceiveAmount:u}=n,d=this.getBridgeContract(s).methods.swap(i,A,m,c,u);return Promise.resolve({from:o,to:s,data:d.encodeABI()})}async buildRawTransactionSend(n){let i=await Re(this.chainType,n,this.api),{amount:s,contractAddress:o,fromAccountAddress:A,fromTokenAddress:c,toChainId:m,toAccountAddress:u,toTokenAddress:l,messenger:d,fee:y,gasFeePaymentMethod:h,extraGas:b}=i,T="0x"+He().toString("hex"),f,g,w=y;if(b&&(w=(0,ra.Big)(w).plus(b).toFixed()),d===3){let P=await this.buildRawTransactionCctpSend(n,i,w);f=P.sendMethod,g=P.value}else{let P=this.getBridgeContract(o);h==="stablecoin"?(f=P.methods.swapAndBridge(c,s,u,m,l,T,d,w),g="0"):(f=P.methods.swapAndBridge(c,s,u,m,l,T,d,0),g=w)}return Promise.resolve({from:A,to:o,value:g,data:f.encodeABI()})}async buildRawTransactionCctpSend(n,i,s){let{amount:o,contractAddress:A,toChainId:c,toAccountAddress:m,gasFeePaymentMethod:u}=i,l=this.getContract(Ln,A),d,y;if(n.destinationToken.chainType==="SOLANA"){let h,b=new Pn.PublicKey(n.toAccountAddress),T=new Pn.PublicKey(n.destinationToken.tokenAddress),f=await oe(b,T),g=xe(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),n.toAccountAddress);Zt.setProvider(g);let w=await Zt.Spl.token(g).account.token.fetchNullable(f);if(w?.authority.equals(b))h=Be(f.toBase58(),"SOLANA",this.chainType);else{let P=await g.connection.getTokenAccountsByOwner(b,{mint:T});if(P.value.length===0&&!w)h=Be(f.toBase58(),"SOLANA",this.chainType);else if(P.value.length>0)h=Be(P.value[0].pubkey.toBase58(),"SOLANA",this.chainType);else throw new v("Associated account has wrong owner")}u==="stablecoin"?(d=l.methods.bridgeWithWalletAddress(o,h,m,c,s),y="0"):(d=l.methods.bridgeWithWalletAddress(o,h,m,c,0),y=s)}else u==="stablecoin"?(d=l.methods.bridge(o,m,c,s),y="0"):(d=l.methods.bridge(o,m,c,0),y=s);return{sendMethod:d,value:y}}async sendRawTransaction(n){let i=await this.web3.eth.estimateGas(n),s={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:o}=await this.web3.eth.sendTransaction({...n,gas:i,...s});return{txId:o}}getContract(n,i){return new this.web3.eth.Contract(n,i)}getBridgeContract(n){return this.getContract(Yn,n)}};var Nt=class{constructor(a,n,i,s){this.api=a;this.nodeRpcUrlsConfig=n;this.params=i;this.tokenService=s}async approve(a,n){let i,s;n?(i=a,s=n):s=a;let o=pt(s.token,s.messenger);return this.tokenService.buildRawTransactionApprove({...s,spender:o},i)}async send(a,n){return x(a.amount),W("amount",a.amount,a.sourceToken.decimals),sa(a)?Dt(a.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionSend(a):Dt(a.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionSwap(a)}};var F=require("@project-serum/anchor"),R=require("@solana/web3.js"),Ie=require("big.js");var gt={version:"0.1.0",name:"bridge",instructions:[{name:"initialize",accounts:[{name:"admin",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializePool",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"token",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializePoolArgs"}}]},{name:"initDepositAccount",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"deposit",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdraw",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amountLp",type:"u64"}]},{name:"swapAndBridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"messenger",isMut:!1,isSigner:!1},{name:"messengerConfig",isMut:!0,isSigner:!1},{name:"sentMessageAccount",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swapAndBridgeWormhole",accounts:[{name:"user",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"wormholeMessenger",isMut:!1,isSigner:!1},{name:"wormholeMessengerConfig",isMut:!0,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"bridge",isMut:!0,isSigner:!1},{name:"message",isMut:!0,isSigner:!0},{name:"sequence",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swap",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"sendMint",isMut:!1,isSigner:!1},{name:"receiveMint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"sendPool",isMut:!0,isSigner:!1},{name:"receivePool",isMut:!0,isSigner:!1},{name:"sendBridgeToken",isMut:!0,isSigner:!1},{name:"receiveBridgeToken",isMut:!0,isSigner:!1},{name:"sendUserToken",isMut:!0,isSigner:!1},{name:"receiveUserToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"},{name:"receiveAmountMin",type:"u64"}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"receiveAndSwap",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"receiveAndSwapWormhole",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"claimRewards",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAdmin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAdmin",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"startBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"stopBridge",accounts:[{name:"stopAuthority",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"setRebalancer",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"rebalancer",isMut:!1,isSigner:!1}],args:[]},{name:"setStopAuthority",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAuthority",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"setAllbridgeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setWormholeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setPoolFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setBalanceRatioMin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"balanceRatioMinBp",type:"u16"}]},{name:"setPoolAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"addOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"removeOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"adjustTotalLpAmount",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"chainBridge",type:{kind:"struct",fields:[{name:"address",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"config",type:{kind:"struct",fields:[{name:"admin",type:"publicKey"},{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"rebalancer",type:"publicKey"},{name:"stopAuthority",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"canSwap",type:"bool"},{name:"canDeposit",type:"bool"},{name:"canWithdraw",type:"bool"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"sentTokenAddress",type:"publicKey"},{name:"amount",type:"u64"},{name:"vusdAmount",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"nonce",type:{array:["u8",32]}},{name:"messenger",type:{defined:"Messenger"}},{name:"slot",type:"u64"},{name:"fee",type:"u64"}]}},{name:"otherBridgeToken",type:{kind:"struct",fields:[]}},{name:"pool",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"a",type:"u64"},{name:"d",type:"u64"},{name:"tokenBalance",type:"u64"},{name:"vUsdBalance",type:"u64"},{name:"reserves",type:"u64"},{name:"decimals",type:"u8"},{name:"totalLpAmount",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"accRewardPerShareP",type:"u128"},{name:"adminFeeAmount",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"unlock",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"fee",type:"u64"},{name:"vUsdAmount",type:"u64"},{name:"slot",type:"u64"}]}},{name:"userDeposit",type:{kind:"struct",fields:[{name:"userAddress",type:"publicKey"},{name:"mint",type:"publicKey"},{name:"lpAmount",type:"u64"},{name:"rewardDebt",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"}]}},{name:"InitializePoolArgs",type:{kind:"struct",fields:[{name:"a",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"vusdAmount",type:"u64"}]}},{name:"UnlockArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"recipient",type:"publicKey"},{name:"sourceChainId",type:"u8"},{name:"receiveToken",type:"publicKey"},{name:"messenger",type:{defined:"Messenger"}},{name:"hash",type:{array:["u8",32]}},{name:"receiveAmountMin",type:"u64"}]}},{name:"RewardError",type:{kind:"enum",variants:[{name:"FeeTooHigh"}]}},{name:"Messenger",type:{kind:"enum",variants:[{name:"None"},{name:"Allbridge"},{name:"Wormhole"}]}},{name:"ActionType",type:{kind:"enum",variants:[{name:"Deposit"},{name:"Withdraw"},{name:"Swap"}]}}],errors:[{code:6e3,name:"AccountAlreadyInitialized",msg:"This account has already been initialized"},{code:6001,name:"AdminAuthorityInvalid",msg:"This instruction requires admin authority"},{code:6002,name:"InvalidSignature",msg:"Provided signature has wrong signer or message"},{code:6003,name:"InvalidHash",msg:"Wrong unlock message hash"},{code:6004,name:"PoolOverflow",msg:"PoolInfo overflow"},{code:6005,name:"ReservesExhausted",msg:"Reserves exhausted"},{code:6006,name:"ZeroAmount",msg:"Zero amount"},{code:6007,name:"ZeroChanges",msg:"Zero changes"},{code:6008,name:"HighVusdAmount",msg:"vUSD amount is too high"},{code:6009,name:"BalanceRatioExceeded",msg:"Balance ratio exceeded"},{code:6010,name:"InsufficientReceivedAmount",msg:"Received insufficient amount"},{code:6011,name:"ForbiddenAction",msg:"ForbiddenAction"},{code:6012,name:"ValueTooHigh",msg:"Value is too high"}]};var oa={version:"0.1.0",name:"cctp_bridge",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"bridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"cctpMessenger",isMut:!1,isSigner:!1},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"messageTransmitterAccount",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"remoteTokenMessengerKey",isMut:!1,isSigner:!1},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"setAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setCctpTokenMessengerMinter",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]}],accounts:[{name:"cctpBridge",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"admin",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"adminFeeShareBp",type:"u64"},{name:"adminFeeAmount",type:"u64"}]}},{name:"chainBridge",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"amount",type:"u64"},{name:"adminFee",type:"u64"},{name:"relayerFee",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"slot",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"amount",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"gasOracleProgramId",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"}]}}],errors:[{code:6e3,name:"ValueTooHigh",msg:"Value is too high"}]};var Aa=require("@project-serum/anchor"),ca=_(require("big.js")),ft=_(require("web3"));async function ze(r,a){return await Aa.Spl.token(a).account.token.fetch(r)}async function ma(r,a,n){let i=await a.account.pool.fetch(n),s=i.decimals,o=(0,ca.default)(i.feeShareBp.toString()).div(1e4).toFixed(),A={aValue:i.a.toString(),dValue:i.d.toString(),totalLpAmount:i.totalLpAmount.toString(),tokenBalance:i.tokenBalance.toString(),vUsdBalance:i.vUsdBalance.toString(),accRewardPerShareP:i.accRewardPerShareP.toString()};return be(r,{decimals:s,feeShare:o},A)}function ua(r){let a=r.amount,n="0x"+r.recipient.toString("hex"),i=r.sourceChainId,s=r.destinationChainId,o="0x"+r.receiveToken.toString("hex"),A="0x"+r.nonce.toString("hex"),c=1,m="0x"+r.chainBridge.toString("hex"),u=ft.default.utils.encodePacked({t:"uint256",v:a},{t:"bytes32",v:n},{t:"uint256",v:i},{t:"bytes32",v:o},{t:"uint256",v:A},{t:"uint8",v:c});if(!u)throw new v("message cannot be undefined");let l=ft.default.utils.keccak256(Buffer.from(u.replace("0x",""),"hex")),d=Buffer.from(l.replace("0x",""),"hex");d[0]=i,d[1]=s;let y=ft.default.utils.encodePacked({t:"bytes32",v:"0x"+d.toString("hex")},{t:"bytes32",v:m});if(!y)throw new Ze("messageWithSigner cannot be undefined");let h=ft.default.utils.keccak256(Buffer.from(y.replace("0x",""),"hex")),b=Buffer.from(h.replace("0x",""),"hex");return b[0]=d[0],b[1]=d[1],b}var $=require("@solana/web3.js"),la=require("big.js");var Sn=require("@solana/web3.js");async function Ve(r,a){return await Promise.all(r.message.addressTableLookups.map(async n=>new Sn.AddressLookupTableAccount({key:n.accountKey,state:Sn.AddressLookupTableAccount.deserialize(await a.getAccountInfo(n.accountKey).then(i=>{if(!i)throw new v("Cannot get AccountInfo");return i.data}))})))}var _t="AUTO";async function je(r,a,n){let i=new $.Connection(n,"confirmed"),s=(await i.simulateTransaction(r)).value.unitsConsumed;await pa(r.instructions,s,a,i)}async function da(r,a,n){let i=new $.Connection(n,"confirmed"),s=await Ve(r,i),o=$.TransactionMessage.decompile(r.message,{addressLookupTableAccounts:s});if(r.serialize().length>1232)throw new ot;await pa(o.instructions,769230,a,i),r.message=o.compileToV0Message(s)}async function pa(r,a,n,i){if(a>0){let s=li(a,r);if(n?.solana){let o=n.solana;if(o===_t)await wn(r,i);else if("pricePerUnitInMicroLamports"in o)await wn(r,i,o.pricePerUnitInMicroLamports);else{let A=(0,la.Big)(o.extraFeeInLamports).div(s).mul(At(6)).toFixed(0);await wn(r,i,A)}}}}function li(r,a){let n=a.findIndex(o=>o.programId.equals($.ComputeBudgetProgram.programId)&&$.ComputeBudgetInstruction.decodeInstructionType(o)==="SetComputeUnitLimit"),i=Number((r*1.3).toFixed(0)),s=$.ComputeBudgetProgram.setComputeUnitLimit({units:i});return n>=0?a[n]=s:a.push(s),i.toString()}async function wn(r,a,n){let i=r.findIndex(A=>A.programId.equals($.ComputeBudgetProgram.programId)&&$.ComputeBudgetInstruction.decodeInstructionType(A)==="SetComputeUnitPrice"),s=BigInt(n||await di(a)),o=$.ComputeBudgetProgram.setComputeUnitPrice({microLamports:s});return i>=0?r[i]=o:r.push(o),s.toString()}async function di(r){let a=await r.getRecentPrioritizationFees(),n=0;for(let i of a)n+=i.prioritizationFee;return(n/a.length).toFixed(0)}var ga=require("@solana/spl-token"),Oe=require("@solana/web3.js"),qe=_(require("axios"));var Ut=class{constructor(a,n){this.connection=new Oe.Connection(a),this.jupiterUrl=n.replace(/\/$/,"")}async getJupiterSwapTx(a,n,i){let s;try{s=await qe.default.get(`${this.jupiterUrl}/quote?inputMint=${n}
2
+ &outputMint=${ga.NATIVE_MINT.toString()}
3
+ &amount=${i}
4
4
  &slippageBps=100
5
- &onlyDirectRoutes=true`)}catch(A){throw A instanceof st.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 st.default.post(`${this.jupiterUrl}/swap`,JSON.stringify({quoteResponse:a.data,userPublicKey:t,wrapAndUnwrapSol:!0}))}catch(A){throw A instanceof st.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:Ye.VersionedTransaction.deserialize(o)}}async amendJupiterWithSdkTx(t,e){try{let n=await Qe(t,this.connection),a=await Qe(e,this.connection),r=Ye.TransactionMessage.decompile(t.message,{addressLookupTableAccounts:n}),s=Ye.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 Wn=1e6,jt=class extends le{constructor(e,n,a){super();this.solanaRpcUrl=e;this.params=n;this.api=a;this.chainType="SOLANA";this.jupiterService=new Ht(e,n.jupiterUrl)}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),_=Ne(this.solanaRpcUrl,T.toString()),v=new x.Program(wt,y,_),S=await tt(v.programId),q=await Ue(v.programId),U=new C.PublicKey(h),Te=await nt(U,v.programId),be=new C.PublicKey(n),Re=await ue(T,U),oe=new C.PublicKey(P),H=new C.PublicKey(d),ie=await nt(H,v.programId),Ae=new C.PublicKey(p),$=await ue(oe,H),Pe=[x.web3.ComputeBudgetProgram.setComputeUnitLimit({units:Wn})];try{await it($,_)}catch{let Ja=await x.Spl.associatedToken(_).methods.create().accounts({mint:H,owner:oe,associatedAccount:$}).instruction();Pe.push(Ja)}let Se=await v.methods.swap(new x.BN(o),new x.BN(g||0)).accounts({payer:T,config:q,bridgeAuthority:S,user:T,sendBridgeToken:Te,sendMint:U,sendPool:be,sendUserToken:Re,receiveBridgeToken:ie,receiveMint:H,receivePool:Ae,receiveUserToken:$}).preInstructions(Pe).transaction(),ce=_.connection;return Se.recentBlockhash=(await ce.getLatestBlockhash()).blockhash,Se.feePayer=T,await rt(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 Ge(`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 Sa(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,_=Ne(this.solanaRpcUrl,y),v=new x.Program(wt,P,_),S=Array.from(at()),q=new C.PublicKey(u),U=await Ta(n,v,q),Te=await ta(S,v.programId),be=await tt(v.programId),Re=await ue(new C.PublicKey(y),new C.PublicKey(f)),oe=await nt(new C.PublicKey(f),v.programId),H=await Cn(h,v.programId),ie=await aa(h,Buffer.from(d),v.programId),Ae=await Ue(v.programId),$=await v.account.config.fetch(Ae),Pe=await ht(h,$.gasOracleProgramId),Se=await ht(T,$.gasOracleProgramId),ce=ba({amount:U,recipient:Buffer.from(p),nonce:Buffer.from(S),receiveToken:Buffer.from(d),destinationChainId:h,sourceChainId:T,chainBridge:(await tt(v.programId)).toBuffer()}),w={};return w.bridge=v,w.amount=new x.BN(n),w.vusdAmount=new x.BN(U),w.nonce=S,w.recipient=Array.from(p),w.receiveToken=Array.from(d),w.poolAccount=q,w.lockAccount=Te,w.bridgeAuthority=be,w.userToken=Re,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:_,thisGasPrice:v,message:S,extraGasInstruction:q}=e,U=T.allbridgeMessengerProgramId,Te=await Bn(d,U),be=await Ue(U),Re=await ia(S,U),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:_,thisGasPrice:v,bridgeAuthority:m,userToken:u,bridgeToken:g,chainBridge:f,messenger:U,messengerGasUsage:Te,messengerConfig:be,sentMessageAccount:Re,otherBridgeToken:y}).preInstructions([x.web3.ComputeBudgetProgram.setComputeUnitLimit({units:Wn})]).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:_,thisGasPrice:v,message:S,extraGasInstruction:q}=e,U=this.params.wormholeMessengerProgramId,[Te]=C.PublicKey.findProgramAddressSync([Buffer.from("Bridge")],new C.PublicKey(U)),[be]=C.PublicKey.findProgramAddressSync([Buffer.from("fee_collector")],new C.PublicKey(U)),[Re]=C.PublicKey.findProgramAddressSync([Buffer.from("Sequence"),m.toBuffer()],new C.PublicKey(U)),oe=await Bn(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:_,thisGasPrice:v,bridgeAuthority:m,userToken:u,bridgeToken:g,chainBridge:f,otherBridgeToken:y,messengerGasUsage:oe,wormholeProgram:U,bridge:Te,message:ie.publicKey,wormholeMessenger:T.wormholeMessengerProgramId,sequence:Re,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:Wn}),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(fa,u,d),P=new C.PublicKey(s),T=await ra(P,p.programId),_=new C.PublicKey(f),v=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(_,P),S.bridgeAuthority=await na(T,p.programId),S.bridgeTokenAccount=await sa(P,p.programId),S.chainBridgeAccount=await Cn(o,p.programId),S.userAccount=_,S.destinationChainId=o,S.mint=P,S.gasPrice=await ht(o,v.gasOracleProgramId),S.thisGasPrice=await ht(g,v.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,_=this.params.cctpParams.cctpDomains[e],v=this.params.cctpParams.cctpTransmitterProgramId,S=this.params.cctpParams.cctpTokenMessengerMinter;if(_==null||!v||!S)throw new k("CCTP is not configured");let q=new C.PublicKey(v),U=new C.PublicKey(S),{messageTransmitterAccount:Te,tokenMessenger:be,tokenMessengerEventAuthority:Re,tokenMinter:oe,localToken:H,remoteTokenMessengerKey:ie,authorityPda:Ae}=Aa(_,h,q,U),$=[];P&&$.push(P);let Pe=C.Keypair.generate(),Se=oa(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:U,messageTransmitterProgram:q,messageTransmitterAccount:Te,tokenMessenger:be,tokenMinter:oe,localToken:H,remoteTokenMessengerKey:ie,authorityPda:Ae,eventAuthority:Re,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 ka=require("big.js"),zt=require("stellar-sdk");var Je=require("stellar-sdk");var Q=require("stellar-sdk");var pe=class{constructor(t){this.value=t}unwrapErr(){throw new Error("No error")}unwrap(){return"value"in this.value?this.value.value:this.value}isOk(){return!0}isErr(){return!this.isOk()}},se=class{constructor(t){this.error=t}unwrapErr(){return"error"in this.error?this.error.error:this.error}unwrap(){throw new Error(this.error.message)}isOk(){return!1}isErr(){return!this.isOk()}},Ci=/Error\(Contract, #(\d+)\)/,Bi="GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF",W=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(Ci);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 Ba={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 Je.Address(t),token:new Je.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:Ba,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 Je.Address(t),amount:e,token:n,receive_token:a,recipient:new Je.Address(r),receive_amount_min:s}),account:t,...o,...this.options,errorTypes:Ba,parseResultXdr:this.parsers.swap});this.spec=new Je.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 qt=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,ka.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:vn(),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:vn(),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 Ma=O(require("bn.js"));function $t(i){return"0x"+new Ma.default(i).toString("hex")}function va(i){return new Promise(t=>setTimeout(()=>t(),i))}var ot=i=>(...t)=>new Promise((e,n)=>i(...t,(a,r)=>a?n(a):e(r)));async function en(i,t){let e=await i.trx.sign(t);if(!e.signature)throw new Ze("Transaction was not signed properly");let a=(await i.trx.sendRawTransaction(e)).txid;return await ki(i,a),{txId:a}}async function ki(i,t,e=1e4){let n=Date.now();for(;;){if(Date.now()-n>e)throw new qe("Transaction not found");let a=await i.trx.getUnconfirmedTransactionInfo(t);if(!a?.receipt){await va(2e3);continue}if(a.receipt.result==="SUCCESS")return a;throw new qe(`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 en(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=at().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 tn=class{constructor(t,e,n,a){this.api=t;this.nodeRpcUrlsConfig=e;this.params=n;this.tokenService=a;this.rawTxBuilder=new Qt(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 R(e.amount),I("amount",e.amount,e.sourceToken.decimals),Yt(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 Yt(i,t,e,n,a){switch(j[i].chainType){case"EVM":{if(a)return new Pt(a,t,e);{let r=e.getNodeRpcUrl(i);return new Pt(new xa.default(r),t,e)}}case"TRX":{if(a)return new kt(a,t);{let r=e.getNodeRpcUrl(i);return new kt(new Ia.default({fullHost:r}),t)}}case"SOLANA":return new jt(e.getNodeRpcUrl("SOL"),{wormholeMessengerProgramId:n.wormholeMessengerProgramId,solanaLookUpTable:n.solanaLookUpTable,cctpParams:n.cctpParams,jupiterUrl:n.jupiterUrl},t);case"SRB":return new qt(e,n,t)}}var Ea=require("big.js"),Ua=O(require("tronweb")),Na=O(require("web3"));var ve=require("big.js");function Da(i,t,e,n,a){let r=B(i,3),s=(0,ve.Big)(r),o=(0,ve.Big)(e),A=(0,ve.Big)(n).plus(a),c,m;if(o.eq(0)||A.eq(0)){let g=s.div(2);c=(0,ve.Big)(n).plus(g),m=(0,ve.Big)(a).plus(g)}else c=(0,ve.Big)(n).plus(s.mul(n).div(A)),m=(0,ve.Big)(a).plus(s.mul(a).div(A));return(0,ve.Big)(Kn(t,c.toFixed(),m.toFixed())).minus(o).toFixed()}function Fa(i){let t=B(i,3);return(0,ve.Big)(t).round().toFixed()}var Ve=[{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=Ln(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 Lt(this.getUserBalanceInfoByBatch(e,n),`Cannot get UserBalanceInfo for ${n.name} on ${n.chainSymbol}`,5e3)}catch{a=await wn(()=>this.getUserBalanceInfoPerProperty(e,n),`Cannot get UserBalanceInfo for ${n.name} on ${n.chainSymbol}`,5,2e3)}return a}async getUserBalanceInfoByBatch(e,n){let a=new this.web3.BatchRequest,r=new this.web3.eth.Contract(Ve,n.poolAddress),s=["userRewardDebt","balanceOf"].map(c=>ot(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 wn(()=>this.getPoolInfoPerProperty(e),`Cannot get PoolInfo for ${e.name} on ${e.chainSymbol}`,5,2e3)}return n}async getPoolInfoByBatch(e){let n=new this.web3.BatchRequest,a=new this.web3.eth.Contract(Ve,e.poolAddress),r=["a","d","tokenBalance","vUsdBalance","totalSupply","accRewardPerShareP"].map(h=>ot(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=await n.methods.a().call(),r=await n.methods.d().call(),s=await n.methods.tokenBalance().call(),o=await n.methods.vUsdBalance().call(),A=await n.methods.totalSupply().call(),c=await 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(Ve,e)}};var nn=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 R(t.amount),I("amount",t.amount,t.token.decimals),t.amount=B(t.amount,t.token.decimals).toFixed(),At(t.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,e).buildRawTransactionDeposit(t)}async withdraw(t,e){return R(t.amount),I("amount",t.amount,t.token.decimals),t.amount=B(t.amount,3).toFixed(),At(t.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,e).buildRawTransactionWithdraw(t)}async claimRewards(t,e){return At(t.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,e).buildRawTransactionClaimRewards(t)}};var fe=require("@project-serum/anchor"),ge=require("@solana/web3.js");var an=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 kn(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 rt(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 rt(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 rt(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 tt(e.programId),c=new ge.PublicKey(n),u=(await e.account.pool.fetch(c)).mint,g=await ue(s,u),f=await nt(u,e.programId),y=await kn(s,u,e.programId),h=[fe.web3.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await it(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 He=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:""}},rn=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 He.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 He.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 He.Address(t)}),account:t,...e,...this.options,errorTypes:vt,parseResultXdr:this.parsers.claimRewards});this.getPool=async(t={})=>await W.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 W.fromSimulation({method:"get_user_deposit",args:this.spec.funcArgsToScVals("get_user_deposit",{user:new He.Address(t)}),...e,...this.options,errorTypes:vt,parseResultXdr:this.parsers.getUserDeposit});this.spec=new He.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 sn=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 rn(n)}};var Wa=O(require("web3"));var Rt=class extends de{constructor(e,n,a){super();this.tronWeb=e;this.api=n;this.chainType="TRX";this.P=52;a&&(this.web3=new Wa.default(a))}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(Ve,Tt(a.poolAddress)),o=Tt(n),A=["userRewardDebt","balanceOf"].map(u=>ot(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(Ve,Tt(n.poolAddress)),s=["a","d","tokenBalance","vUsdBalance","totalSupply","accRewardPerShareP"].map(d=>ot(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){return await this.tronWeb.contract(Ve,e)}};var on=class{constructor(t,e,n,a){this.api=t;this.nodeRpcUrlsConfig=e;this.params=n;this.tokenService=a;this.rawTxBuilder=new nn(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){R(t),I("amount",t,e.decimals);let a=await this.getPoolInfoFromChain(e,n),{vUsdBalance:r,tokenBalance:s,aValue:o,dValue:A}=a,c=Da(t,o,A,s,r);return b(c,3).toFixed()}async getAmountToBeWithdrawn(t,e,n,a){R(t),I("amount",t,n.decimals);let r=await this.getPoolInfoFromChain(n,a),s=Fa(t),o=ee(s,n.decimals),c=(await this.getUserBalanceInfo(e,n,a)).earned(r)||"0",m=(0,Ea.Big)(o).plus(c).toFixed();return b(m,n.decimals).toFixed()}async getUserBalanceInfo(t,e,n){return At(e.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).getUserBalanceInfo(t,e)}async getPoolInfoFromChain(t,e){let n=await At(t.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,e).getPoolInfoFromChain(t);return this.api.cachePut({chainSymbol:t.chainSymbol,poolAddress:t.poolAddress},n),n}};function At(i,t,e,n,a){switch(j[i].chainType){case"EVM":{if(a)return new Mt(a,t);{let r=e.getNodeRpcUrl(i);return new Mt(new Na.default(r),t)}}case"TRX":{let r=e.getNodeRpcUrl(i),s=n.tronJsonRpc;if(a)return new Rt(a,t,s);{let o=new Ua.default({fullHost:r});return new Rt(o,t,s)}}case"SOLANA":{let r=e.getNodeRpcUrl(i);return new an(r,t)}case"SRB":return new sn(e,n,t)}}var D=require("big.js");function Ga(i,t,e){let n=vi(i,{decimals:t.decimals,feeShare:t.feeShare},t.poolInfo),a=Ri(n.amountIncludingCommissionInSystemPrecision,{decimals:e.decimals,feeShare:e.feeShare},e.poolInfo);return{swapToVUsdCalcResult:n,swapFromVUsdCalcResult:a}}function Za(i,t,e){let n=Ii(i,{decimals:e.decimals,feeShare:e.feeShare},e.poolInfo),a=xi(n.amountIncludingCommissionInSystemPrecision,{decimals:t.decimals,feeShare:t.feeShare},t.poolInfo);return{swapToVUsdCalcResult:n,swapFromVUsdCalcResult:a}}function vi(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:Oa(_e(s,e),n),amountExcludingCommissionInSystemPrecision:Oa(_e(a,e),n)}}function Oa(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 Ri(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 Ii(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:Va(_e(s,e),n),amountExcludingCommissionInSystemPrecision:Va(_e(i,e),n)}}function Va(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 xi(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 _a(i,t,e,n,a){let r=Ce(i,t,e),s=ee(r,t.decimals),o=yt(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 ct=require("@solana/web3.js");var An=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 ct.Connection(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),a=await Qe(t,n),r=ct.TransactionMessage.decompile(t.message,{addressLookupTableAccounts:a});r.instructions[r.instructions.length-1].keys.push({pubkey:new ct.PublicKey(Buffer.from(e)),isSigner:!1,isWritable:!1}),t.message=r.compileToV0Message(a)}};var M=require("stellar-sdk"),Jc=require("stellar-sdk/lib/horizon");var E=require("stellar-sdk");var z={},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 W.fromSimulation({method:"initialize",args:this.spec.funcArgsToScVals("initialize",{admin:new E.Address(t),decimal:e,name:n,symbol:a}),...r,...this.options,errorTypes:z,parseResultXdr:this.parsers.initialize});this.mint=async({to:t,amount:e},n={})=>await W.fromSimulation({method:"mint",args:this.spec.funcArgsToScVals("mint",{to:new E.Address(t),amount:e}),...n,...this.options,errorTypes:z,parseResultXdr:this.parsers.mint});this.setAdmin=async({new_admin:t},e={})=>await W.fromSimulation({method:"set_admin",args:this.spec.funcArgsToScVals("set_admin",{new_admin:new E.Address(t)}),...e,...this.options,errorTypes:z,parseResultXdr:this.parsers.setAdmin});this.allowance=async({from:t,spender:e},n={})=>await W.fromSimulation({method:"allowance",args:this.spec.funcArgsToScVals("allowance",{from:new E.Address(t),spender:new E.Address(e)}),...n,...this.options,errorTypes:z,parseResultXdr:this.parsers.allowance});this.approve=async({from:t,spender:e,amount:n,expiration_ledger:a},r={})=>await W.fromSimulation({method:"approve",args:this.spec.funcArgsToScVals("approve",{from:new E.Address(t),spender:new E.Address(e),amount:n,expiration_ledger:a}),...r,...this.options,errorTypes:z,parseResultXdr:this.parsers.approve});this.balance=async({id:t},e={})=>await W.fromSimulation({method:"balance",args:this.spec.funcArgsToScVals("balance",{id:new E.Address(t)}),...e,...this.options,errorTypes:z,parseResultXdr:this.parsers.balance});this.spendableBalance=async({id:t},e={})=>await W.fromSimulation({method:"spendable_balance",args:this.spec.funcArgsToScVals("spendable_balance",{id:new E.Address(t)}),...e,...this.options,errorTypes:z,parseResultXdr:this.parsers.spendableBalance});this.transfer=async({from:t,to:e,amount:n},a={})=>await W.fromSimulation({method:"transfer",args:this.spec.funcArgsToScVals("transfer",{from:new E.Address(t),to:new E.Address(e),amount:n}),...a,...this.options,errorTypes:z,parseResultXdr:this.parsers.transfer});this.transferFrom=async({spender:t,from:e,to:n,amount:a},r={})=>await W.fromSimulation({method:"transfer_from",args:this.spec.funcArgsToScVals("transfer_from",{spender:new E.Address(t),from:new E.Address(e),to:new E.Address(n),amount:a}),...r,...this.options,errorTypes:z,parseResultXdr:this.parsers.transferFrom});this.burn=async({from:t,amount:e},n={})=>await W.fromSimulation({method:"burn",args:this.spec.funcArgsToScVals("burn",{from:new E.Address(t),amount:e}),...n,...this.options,errorTypes:z,parseResultXdr:this.parsers.burn});this.burnFrom=async({spender:t,from:e,amount:n},a={})=>await W.fromSimulation({method:"burn_from",args:this.spec.funcArgsToScVals("burn_from",{spender:new E.Address(t),from:new E.Address(e),amount:n}),...a,...this.options,errorTypes:z,parseResultXdr:this.parsers.burnFrom});this.decimals=async(t={})=>await W.fromSimulation({method:"decimals",args:this.spec.funcArgsToScVals("decimals",{}),...t,...this.options,errorTypes:z,parseResultXdr:this.parsers.decimals});this.name=async(t={})=>await W.fromSimulation({method:"name",args:this.spec.funcArgsToScVals("name",{}),...t,...this.options,errorTypes:z,parseResultXdr:this.parsers.name});this.symbol=async(t={})=>await W.fromSimulation({method:"symbol",args:this.spec.funcArgsToScVals("symbol",{}),...t,...this.options,errorTypes:z,parseResultXdr:this.parsers.symbol});this.spec=new E.ContractSpec(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAdkZWNpbWFsAAAAAAQAAAAAAAAABG5hbWUAAAAQAAAAAAAAAAZzeW1ib2wAAAAAABAAAAAA","AAAAAAAAAAAAAAAEbWludAAAAAIAAAAAAAAAAnRvAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAA","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAA=","AAAAAAAAAAAAAAAJYWxsb3dhbmNlAAAAAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAEAAAAL","AAAAAAAAAAAAAAAHYXBwcm92ZQAAAAAEAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAAAAAAEWV4cGlyYXRpb25fbGVkZ2VyAAAAAAAABAAAAAA=","AAAAAAAAAAAAAAAHYmFsYW5jZQAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAL","AAAAAAAAAAAAAAARc3BlbmRhYmxlX2JhbGFuY2UAAAAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAL","AAAAAAAAAAAAAAAIdHJhbnNmZXIAAAADAAAAAAAAAARmcm9tAAAAEwAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAAAAAAANdHJhbnNmZXJfZnJvbQAAAAAAAAQAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAAAAAAEZnJvbQAAABMAAAAAAAAAAnRvAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAA","AAAAAAAAAAAAAAAEYnVybgAAAAIAAAAAAAAABGZyb20AAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAA","AAAAAAAAAAAAAAAJYnVybl9mcm9tAAAAAAAAAwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAAAAAAAIZGVjaW1hbHMAAAAAAAAAAQAAAAQ=","AAAAAAAAAAAAAAAEbmFtZQAAAAAAAAABAAAAEA==","AAAAAAAAAAAAAAAGc3ltYm9sAAAAAAAAAAAAAQAAABA=","AAAAAQAAAAAAAAAAAAAAEEFsbG93YW5jZURhdGFLZXkAAAACAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAHc3BlbmRlcgAAAAAT","AAAAAQAAAAAAAAAAAAAADkFsbG93YW5jZVZhbHVlAAAAAAACAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAAAAAAEWV4cGlyYXRpb25fbGVkZ2VyAAAAAAAABA==","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAABQAAAAEAAAAAAAAACUFsbG93YW5jZQAAAAAAAAEAAAfQAAAAEEFsbG93YW5jZURhdGFLZXkAAAABAAAAAAAAAAdCYWxhbmNlAAAAAAEAAAATAAAAAQAAAAAAAAAFTm9uY2UAAAAAAAABAAAAEwAAAAEAAAAAAAAABVN0YXRlAAAAAAAAAQAAABMAAAAAAAAAAAAAAAVBZG1pbgAAAA==","AAAAAQAAAAAAAAAAAAAADVRva2VuTWV0YWRhdGEAAAAAAAADAAAAAAAAAAdkZWNpbWFsAAAAAAQAAAAAAAAABG5hbWUAAAAQAAAAAAAAAAZzeW1ib2wAAAAAABA="])}};var Di=100,Fi=180,cn=class{constructor(t,e){this.nodeRpcUrlsConfig=t;this.params=e}async buildChangeTrustLineXdrTx(t){let n=await new M.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(t.sender),r=(await this.getContract(It,t.tokenAddress).name()).result,[s,o]=r.split(":"),A=new M.Asset(s,o),c=M.Operation.changeTrust({asset:A,limit:t.limit});return new M.TransactionBuilder(n,{fee:Di.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(c).setTimeout(Fi).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 M.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 M.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),n=M.TransactionBuilder.fromXDR(t,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await e.submitTransaction(n)}async simulateAndCheckRestoreTxRequiredSoroban(t,e){let n=new M.SorobanRpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=await n.getAccount(e),r=M.TransactionBuilder.fromXDR(t,this.params.sorobanNetworkPassphrase),s=await n.simulateTransaction(r);if(M.SorobanRpc.Api.isSimulationRestore(s))return new M.TransactionBuilder(a,{fee:(+M.BASE_FEE+ +s.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(s.restorePreamble.transactionData.build()).addOperation(M.Operation.restoreFootprint({})).setTimeout(M.TimeoutInfinite).build().toXDR()}async sendTransactionSoroban(t){let e=new M.SorobanRpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),n=M.TransactionBuilder.fromXDR(t,this.params.sorobanNetworkPassphrase);return e.sendTransaction(n)}async confirmTx(t,e=15){let n=new M.SorobanRpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=await qn(()=>n.getTransaction(t),r=>r.status===M.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 mn=class{constructor(t,e){this.nodeRpcUrlsConfig=t;this.srb=new cn(t,e),this.sol=new An(t,e)}};var Ke=(e=>(e.WITH_NATIVE_CURRENCY="native",e.WITH_STABLECOIN="stablecoin",e))(Ke||{}),bt=(e=>(e.INT="int",e.FLOAT="float",e))(bt||{});var Ka=require("big.js"),Qa=O(require("tronweb")),Ya=O(require("web3"));var un=O(require("erc-20-abi"));var En=require("big.js"),ye=class{async checkAllowance(t){let e=await this.getAllowance(t);return(0,En.Big)(e).gte((0,En.Big)(t.amount))}};var Wi="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Ei="0xdac17f958d2ee523a2206206994597c13d831ec7",Ui=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(un.default,e).methods.allowance(n,a).call()}async getTokenBalance(e){return await this.getContract(un.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()===Ei}async buildRawTransactionApprove(e){let{tokenAddress:n,spender:a,owner:r,amount:s}=e,A=await this.getContract(un.default,n).methods.approve(a,s==null?Wi:$t(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=Ui: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 La=require("@project-serum/anchor"),je=require("@solana/web3.js");var ln=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 je.Connection(this.solanaRpcUrl,"confirmed"),a=new je.PublicKey(e);return new La.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 je.PublicKey(n),new je.PublicKey(a.tokenAddress));return(await it(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 je.PublicKey(e.account))).toString()}};var Dt=require("stellar-sdk"),Bl=require("stellar-sdk/lib/horizon");var pn=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[j[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[j[e.chainSymbol].chainType]).toFixed():"0"}approve(){throw new J}buildRawTransactionApprove(){throw new J}};var Xa=[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",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:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{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:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",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:"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:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],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"}];var Oi="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",Ft=class extends ye{constructor(e,n){super();this.tronWeb=e;this.api=n;this.chainType="TRX"}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 en(this.tronWeb,n)}async buildRawTransactionApprove(e){let{tokenAddress:n,spender:a,owner:r,amount:s}=e,o=s==null?Oi:$t(s),A=[{type:"address",value:a},{type:"uint256",value:o}];return this.buildRawTransaction(n,"approve(address,uint256)",A,"0",r)}async getContract(e){return await this.tronWeb.contract(Xa,e)}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 dn=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 R(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&&(R(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&&(R(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[j[t.chainSymbol].chainType]).toFixed()}}getChainTokenService(t,e,n){switch(j[t].chainType){case"EVM":{if(n)return new xt(n,this.api);{let a=this.nodeRpcUrlsConfig.getNodeRpcUrl(t);return new xt(new Ya.default(a),this.api)}}case"TRX":{if(n)return new Ft(n,this.api);{let a=this.nodeRpcUrlsConfig.getNodeRpcUrl(t),r=new Qa.default({fullHost:a});return r.setAddress(e),new Ft(r,this.api)}}case"SOLANA":{let a=this.nodeRpcUrlsConfig.getNodeRpcUrl(t);return new ln(a,this.api)}case"SRB":return new pn(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,Ka.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 dt(t)}},gn=class{constructor(t,e=mt){let n=new Gt(e),a=new Zt(n),r=new Nt(a);this.api=new _t(r),this.tokenService=new dn(this.api,t,e),this.bridge=new tn(this.api,t,e,this.tokenService),this.pool=new on(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(){return new Promise(t=>{t({status:"OK",gasBalance:null})})}async getPendingStatusInfo(t,e,n,a){R(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=Gn(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){R(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 yn(n,r)}async calculateFeePercentOnDestinationChain(t,e,n){R(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=yt(r,n,await G(this.api,n)),o=ee(r,n.decimals);return yn(o,s)}async getAmountToBeReceivedAndGasFeeOptions(t,e,n,a){return R(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 R(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){R(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){R(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=_n(o,n,r),c=Zn(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 Xn(t)}async getExtraGasMaxLimits(t,e){return await In(t,e,this.api)}async getVUsdFromAmount(t,e,n){R(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){R(t);let a=yt(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 Ga(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=Za(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){R(t);let r;return e=="float"?(I("amount",t,n.decimals),r=B(t,n.decimals).toFixed()):r=t,_a(r,n,await G(this.api,n),a,await G(this.api,a))}};function Vi(i){return"solanaRpcUrl"in i}var Un=class{constructor(t,e=mt){let n;Vi(t)?n=new Wt({SOL:t.solanaRpcUrl,TRX:t.tronRpcUrl}):n=new Wt(t),this.service=new gn(n,e),this.bridge=this.service.bridge,this.pool=this.service.pool,this.utils=new mn(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 await this.service.checkAddress()}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(m){throw m instanceof qe.AxiosError&&m.response&&m.response.data&&m.response.data.error?new L(m.response.data.error):new L("Cannot get route")}let o;try{o=await qe.default.post(`${this.jupiterUrl}/swap`,JSON.stringify({quoteResponse:s.data,userPublicKey:a,wrapAndUnwrapSol:!0}))}catch(m){throw m instanceof qe.AxiosError&&m.response&&m.response.data&&m.response.data.error?new L(m.response.data.error):new L("Cannot get swap transaction")}let A;if(o?.data?.swapTransaction)A=o.data.swapTransaction;else throw new L("Cannot get swap transaction");let c=Buffer.from(A,"base64");return{tx:Oe.VersionedTransaction.deserialize(c)}}async amendJupiterWithSdkTx(a,n){try{let i=await Ve(a,this.connection),s=await Ve(n,this.connection),o=Oe.TransactionMessage.decompile(a.message,{addressLookupTableAccounts:i}),A=Oe.TransactionMessage.decompile(n.message,{addressLookupTableAccounts:s});return A.instructions.shift(),o.instructions.push(...A.instructions),i.push(...s),a.message=o.compileToV0Message(i),n.message.header.numRequiredSignatures===2&&a.signatures.length===1&&a.signatures.push(n.signatures[0]),a}catch(i){throw i instanceof Error&&i.message?new L(`Some error occurred during creation final swap and bridge transaction. ${i.message}`):new L("Some error occurred during creation final swap and bridge transaction")}}};var Cn=1e6,Vt=class extends Ae{constructor(n,i,s){super();this.solanaRpcUrl=n;this.params=i;this.api=s;this.chainType="SOLANA";this.jupiterService=new Ut(n,i.jupiterUrl)}async buildRawTransactionSwap(n){let i=We(this.chainType,n);return await this.buildSwapTransaction(i,n.sourceToken.poolAddress,n.destinationToken.poolAddress,n.txFeeParams)}async buildSwapTransaction(n,i,s,o){let{fromAccountAddress:A,amount:c,contractAddress:m,fromTokenAddress:u,toTokenAddress:l,toAccountAddress:d,minimumReceiveAmount:y}=n,h=A,b=m,T=u,f=l,g=s,w=d,P=new R.PublicKey(h),O=xe(this.solanaRpcUrl,P.toString()),k=new F.Program(gt,b,O),C=await Ke(k.programId),H=await Me(k.programId),N=new R.PublicKey(T),pe=await Qe(N,k.programId),ge=new R.PublicKey(i),Ce=await oe(P,N),ae=new R.PublicKey(w),K=new R.PublicKey(f),te=await Qe(K,k.programId),ie=new R.PublicKey(g),z=await oe(ae,K),fe=[F.web3.ComputeBudgetProgram.setComputeUnitLimit({units:Cn})];try{await ze(z,O)}catch{let _a=await F.Spl.associatedToken(O).methods.create().accounts({mint:K,owner:ae,associatedAccount:z}).instruction();fe.push(_a)}let ye=await k.methods.swap(new F.BN(c),new F.BN(y||0)).accounts({payer:P,config:H,bridgeAuthority:C,user:P,sendBridgeToken:pe,sendMint:N,sendPool:ge,sendUserToken:Ce,receiveBridgeToken:te,receiveMint:K,receivePool:ie,receiveUserToken:z}).preInstructions(fe).transaction(),se=O.connection;return ye.recentBlockhash=(await se.getLatestBlockhash()).blockhash,ye.feePayer=P,await je(ye,o,this.solanaRpcUrl),await this.convertToVersionedTransaction(ye,se)}async buildRawTransactionSend(n){let i=await Re(this.chainType,n,this.api),s=this.addPoolAddress(n,i),o=s.gasFeePaymentMethod=="stablecoin",A;if(o)try{let u=(0,Ie.Big)(s.fee);s.extraGas&&(u=u.plus(s.extraGas)),s=await this.convertStableCoinFeeAndExtraGasToNativeCurrency(n.sourceToken.decimals,s);let{tx:l}=await this.jupiterService.getJupiterSwapTx(n.fromAccountAddress,n.sourceToken.tokenAddress,u.toFixed(0));if(A=l,s.amount=(0,Ie.Big)(s.amount).minus(u).toFixed(0),(0,Ie.Big)(s.amount).lte(0))throw new Ge(`Amount not enough to pay fee, ${S((0,Ie.Big)(s.amount).minus(1).neg(),n.sourceToken.decimals).toFixed()} stables is missing`)}catch(u){throw u instanceof Z?u:u instanceof Error&&u.message?new L(`Some error occurred during creation Jupiter swap transaction. ${u.message}`):new L("Some error occurred during creation Jupiter swap transaction")}let c,m;switch(i.messenger){case 1:{let u=await this.prepareSwapAndBridgeData(s);c=await this.buildSwapAndBridgeAllbridgeTransaction(u);break}case 2:{let u=await this.prepareSwapAndBridgeData(s),{transaction:l,messageAccount:d}=await this.buildSwapAndBridgeWormholeTransaction(u);c=l,m=d;break}case 3:{let u=await this.prepareSwapAndBridgeCctpData(s),{transaction:l,messageSentEventDataKeypair:d}=await this.buildSwapAndBridgeCctpTransaction(n.destinationToken.chainSymbol,u);c=l,m=d;break}}if(o){if(!A)throw new L("Swap tx is absent");c=await this.jupiterService.amendJupiterWithSdkTx(A,c)}return await da(c,n.txFeeParams,this.solanaRpcUrl),m&&c.sign([m]),c}addPoolAddress(n,i){return{...i,poolAddress:n.sourceToken.poolAddress}}async convertStableCoinFeeAndExtraGasToNativeCurrency(n,i){if(i.gasFeePaymentMethod=="stablecoin"){let s=(await this.api.getReceiveTransactionCost({sourceChainId:i.fromChainId,destinationChainId:i.toChainId,messenger:i.messenger})).sourceNativeTokenPrice;i.fee=(0,Ie.Big)(i.fee).div(s).mul((0,Ie.Big)(10).pow(U.SOLANA-n)).toFixed(0),i.extraGas&&(i.extraGas=(0,Ie.Big)(i.extraGas).div(s).mul((0,Ie.Big)(10).pow(U.SOLANA-n)).toFixed(0)),i.gasFeePaymentMethod="native"}return i}getExtraGasInstruction(n,i,s){return F.web3.SystemProgram.transfer({fromPubkey:i,toPubkey:s,lamports:+n})}async prepareSwapAndBridgeData(n){let{amount:i,contractAddress:s,fromChainId:o,fromAccountAddress:A,fromTokenAddress:c,toChainId:m,toAccountAddress:u,toTokenAddress:l,poolAddress:d,extraGas:y}=n,h=c,b=A,T=m,f=l,g=u,w=s,P=o,O=xe(this.solanaRpcUrl,b),k=new F.Program(gt,w,O),C=Array.from(He()),H=new R.PublicKey(d),N=await ma(i,k,H),pe=await Jn(C,k.programId),ge=await Ke(k.programId),Ce=await oe(new R.PublicKey(b),new R.PublicKey(h)),ae=await Qe(new R.PublicKey(h),k.programId),K=await pn(T,k.programId),te=await Qn(T,Buffer.from(f),k.programId),ie=await Me(k.programId),z=await k.account.config.fetch(ie),fe=await mt(T,z.gasOracleProgramId),ye=await mt(P,z.gasOracleProgramId),se=ua({amount:N,recipient:Buffer.from(g),nonce:Buffer.from(C),receiveToken:Buffer.from(f),destinationChainId:T,sourceChainId:P,chainBridge:(await Ke(k.programId)).toBuffer()}),B={};return B.bridge=k,B.amount=new F.BN(i),B.vusdAmount=new F.BN(N),B.nonce=C,B.recipient=Array.from(g),B.receiveToken=Array.from(f),B.poolAccount=H,B.lockAccount=pe,B.bridgeAuthority=ge,B.userToken=Ce,B.bridgeTokenAccount=ae,B.chainBridgeAccount=K,B.otherBridgeTokenAccount=te,B.userAccount=new R.PublicKey(b),B.destinationChainId=T,B.mint=new R.PublicKey(h),B.config=ie,B.configAccountInfo=z,B.gasPrice=fe,B.thisGasPrice=ye,B.message=se,y&&(B.extraGasInstruction=this.getExtraGasInstruction(y,B.userAccount,ie)),B}async buildSwapAndBridgeAllbridgeTransaction(n){let{bridge:i,vusdAmount:s,nonce:o,recipient:A,receiveToken:c,poolAccount:m,lockAccount:u,bridgeAuthority:l,userToken:d,bridgeTokenAccount:y,chainBridgeAccount:h,otherBridgeTokenAccount:b,userAccount:T,destinationChainId:f,mint:g,config:w,configAccountInfo:P,gasPrice:O,thisGasPrice:k,message:C,extraGasInstruction:H}=n,N=P.allbridgeMessengerProgramId,pe=await gn(f,N),ge=await Me(N),Ce=await Hn(C,N),ae=[];H&&ae.push(H);let K=await i.methods.swapAndBridge({vusdAmount:s,nonce:o,destinationChainId:f,recipient:A,receiveToken:c}).accounts({mint:g,user:T,config:w,lock:u,pool:m,gasPrice:O,thisGasPrice:k,bridgeAuthority:l,userToken:d,bridgeToken:y,chainBridge:h,messenger:N,messengerGasUsage:pe,messengerConfig:ge,sentMessageAccount:Ce,otherBridgeToken:b}).preInstructions([F.web3.ComputeBudgetProgram.setComputeUnitLimit({units:Cn})]).postInstructions(ae).transaction(),te=xe(this.solanaRpcUrl,T.toString()).connection;return K.recentBlockhash=(await te.getLatestBlockhash()).blockhash,K.feePayer=T,await this.convertToVersionedTransaction(K,te)}async convertToVersionedTransaction(n,i){let s=await i.getAddressLookupTable(new R.PublicKey(this.params.solanaLookUpTable)).then(A=>A.value);if(!s)throw new v("Cannot find allbridgeLookupTableAccount");let o=new F.web3.TransactionMessage({payerKey:n.feePayer,recentBlockhash:n.recentBlockhash,instructions:n.instructions}).compileToV0Message([s]);return new F.web3.VersionedTransaction(o)}async buildSwapAndBridgeWormholeTransaction(n){let{bridge:i,vusdAmount:s,nonce:o,recipient:A,receiveToken:c,poolAccount:m,lockAccount:u,bridgeAuthority:l,userToken:d,bridgeTokenAccount:y,chainBridgeAccount:h,otherBridgeTokenAccount:b,userAccount:T,destinationChainId:f,mint:g,config:w,configAccountInfo:P,gasPrice:O,thisGasPrice:k,message:C,extraGasInstruction:H}=n,N=this.params.wormholeMessengerProgramId,[pe]=R.PublicKey.findProgramAddressSync([Buffer.from("Bridge")],new R.PublicKey(N)),[ge]=R.PublicKey.findProgramAddressSync([Buffer.from("fee_collector")],new R.PublicKey(N)),[Ce]=R.PublicKey.findProgramAddressSync([Buffer.from("Sequence"),l.toBuffer()],new R.PublicKey(N)),ae=await gn(f,P.wormholeMessengerProgramId),K=await Me(P.wormholeMessengerProgramId),te=R.Keypair.generate(),ie=xe(this.solanaRpcUrl,T.toString()),z=await ie.connection.getAccountInfo(pe);if(z==null)throw new v("Cannot fetch wormhole bridge account info");let fe=new F.BN(z.data.slice(16,24),"le").toString(),ye=R.SystemProgram.transfer({fromPubkey:T,toPubkey:ge,lamports:+fe}),se=[];H&&se.push(H);let B={mint:g,user:T,config:w,lock:u,pool:m,gasPrice:O,thisGasPrice:k,bridgeAuthority:l,userToken:d,bridgeToken:y,chainBridge:h,otherBridgeToken:b,messengerGasUsage:ae,wormholeProgram:N,bridge:pe,message:te.publicKey,wormholeMessenger:P.wormholeMessengerProgramId,sequence:Ce,feeCollector:ge,wormholeMessengerConfig:K,clock:F.web3.SYSVAR_CLOCK_PUBKEY},Bt=await i.methods.swapAndBridgeWormhole({vusdAmount:s,nonce:o,destinationChainId:f,recipient:A,receiveToken:c}).accounts(B).preInstructions([F.web3.ComputeBudgetProgram.setComputeUnitLimit({units:Cn}),ye]).postInstructions(se).signers([te]).transaction();return Bt.recentBlockhash=(await ie.connection.getLatestBlockhash()).blockhash,Bt.feePayer=T,{transaction:await this.convertToVersionedTransaction(Bt,ie.connection),messageAccount:te}}async prepareSwapAndBridgeCctpData(n){let{contractAddress:i,amount:s,fromAccountAddress:o,fromTokenAddress:A,toChainId:c,toAccountAddress:m,toTokenAddress:u,extraGas:l}=n,d=i;if(!d)throw new ne("Such route does not support CCTP protocol");let y=4,h=o,b=u,T=m,f=xe(this.solanaRpcUrl,h),g=new F.Program(oa,d,f),w=new R.PublicKey(A),P=await zn(w,g.programId),O=new R.PublicKey(h),k=await g.account.cctpBridge.fetch(P),C={};return C.cctpBridge=g,C.cctpBridgeAccount=P,C.cctpAddressAccount=new R.PublicKey(d),C.amount=new F.BN(s),C.recipient=Array.from(T),C.receiveToken=Array.from(b),C.userToken=await oe(O,w),C.bridgeAuthority=await Kn(P,g.programId),C.bridgeTokenAccount=await jn(w,g.programId),C.chainBridgeAccount=await pn(c,g.programId),C.userAccount=O,C.destinationChainId=c,C.mint=w,C.gasPrice=await mt(c,k.gasOracleProgramId),C.thisGasPrice=await mt(y,k.gasOracleProgramId),C.provider=f,l&&(C.extraGasInstruction=this.getExtraGasInstruction(l,C.userAccount,P)),C}async buildSwapAndBridgeCctpTransaction(n,i){let{cctpBridge:s,cctpBridgeAccount:o,amount:A,recipient:c,receiveToken:m,bridgeAuthority:u,userToken:l,bridgeTokenAccount:d,chainBridgeAccount:y,userAccount:h,destinationChainId:b,mint:T,gasPrice:f,thisGasPrice:g,extraGasInstruction:w,provider:P}=i,O=this.params.cctpParams.cctpDomains[n],k=this.params.cctpParams.cctpTransmitterProgramId,C=this.params.cctpParams.cctpTokenMessengerMinter;if(O==null||!k||!C)throw new v("CCTP is not configured");let H=new R.PublicKey(k),N=new R.PublicKey(C),{messageTransmitterAccount:pe,tokenMessenger:ge,tokenMessengerEventAuthority:Ce,tokenMinter:ae,localToken:K,remoteTokenMessengerKey:te,authorityPda:ie}=$n(O,T,H,N),z=[];w&&z.push(w);let fe=R.Keypair.generate(),ye=qn(s.programId,fe.publicKey),se=await s.methods.bridge({amount:A,destinationChainId:b,recipient:c,receiveToken:m}).accounts({mint:T,user:h,cctpBridge:o,messageSentEventData:fe.publicKey,lock:ye,cctpMessenger:N,messageTransmitterProgram:H,messageTransmitterAccount:pe,tokenMessenger:ge,tokenMinter:ae,localToken:K,remoteTokenMessengerKey:te,authorityPda:ie,eventAuthority:Ce,bridgeToken:d,gasPrice:f,thisGasPrice:g,chainBridge:y,userToken:l,bridgeAuthority:u}).preInstructions([F.web3.ComputeBudgetProgram.setComputeUnitLimit({units:2e6})]).postInstructions(z).transaction(),B=P.connection;return se.recentBlockhash=(await B.getLatestBlockhash()).blockhash,se.feePayer=h,{transaction:await this.convertToVersionedTransaction(se,B),messageSentEventDataKeypair:fe}}send(n){throw new J}};var Ot=require("@stellar/stellar-sdk"),fa=require("big.js");var t=require("@stellar/stellar-sdk"),pi=t.contract.Spec,gi=t.contract.Client;var yt=class extends gi{constructor(n){super(new pi(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAApnYXNfb3JhY2xlAAAAAAATAAAAAAAAAAxuYXRpdmVfdG9rZW4AAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9hbmRfYnJpZGdlAAAAAAkAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACXJlY2lwaWVudAAAAAAAA+4AAAAgAAAAAAAAABRkZXN0aW5hdGlvbl9jaGFpbl9pZAAAAAQAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAFbm9uY2UAAAAAAAAMAAAAAAAAAApnYXNfYW1vdW50AAAAAAAKAAAAAAAAABBmZWVfdG9rZW5fYW1vdW50AAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOcmVjZWl2ZV90b2tlbnMAAAAAAAgAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAA9zb3VyY2VfY2hhaW5faWQAAAAABAAAAAAAAAANcmVjZWl2ZV90b2tlbgAAAAAAA+4AAAAgAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAAAAAAJZXh0cmFfZ2FzAAAAAAAD6AAAAAoAAAABAAAD6QAAA+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=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAB1N3YXBwZWQAAAAABgAAAAAAAAAOcmVjZWl2ZV9hbW91bnQAAAAAAAoAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAAEwAAAAAAAAALc2VuZF9hbW91bnQAAAAACgAAAAAAAAAKc2VuZF90b2tlbgAAAAAD7gAAACAAAAAAAAAABnNlbmRlcgAAAAAAEw==","AAAAAQAAAAAAAAAAAAAAClRva2Vuc1NlbnQAAAAAAAUAAAAAAAAABmFtb3VudAAAAAAACgAAAAAAAAAUZGVzdGluYXRpb25fY2hhaW5faWQAAAAEAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAADlRva2Vuc1JlY2VpdmVkAAAAAAAEAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAB21lc3NhZ2UAAAAD7gAAACAAAAAAAAAABW5vbmNlAAAAAAAADAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAAClJlY2VpdmVGZWUAAAAAAAMAAAAAAAAAF2JyaWRnZV90cmFuc2FjdGlvbl9jb3N0AAAAAAoAAAAAAAAACWV4dHJhX2dhcwAAAAAAAAoAAAAAAAAAGG1lc3NhZ2VfdHJhbnNhY3Rpb25fY29zdAAAAAo=","AAAAAQAAAAAAAAAAAAAAFUJyaWRnaW5nRmVlRnJvbVRva2VucwAAAAAAAAIAAAAAAAAAEGZlZV90b2tlbl9hbW91bnQAAAAKAAAAAAAAAANnYXMAAAAACg==","AAAAAQAAAAAAAAAAAAAADUFub3RoZXJCcmlkZ2UAAAAAAAACAAAAAAAAAAdhZGRyZXNzAAAAA+4AAAAgAAAAAAAAAAZ0b2tlbnMAAAAAA+wAAAPuAAAAIAAAAAE=","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAABgAAAGBwcmVjb21wdXRlZCB2YWx1ZXMgb2YgdGhlIHNjYWxpbmcgZmFjdG9yIHJlcXVpcmVkIGZvciBwYXlpbmcgdGhlIGJyaWRnaW5nIGZlZSB3aXRoIHN0YWJsZSB0b2tlbnMAAAAeYnJpZGdpbmdfZmVlX2NvbnZlcnNpb25fZmFjdG9yAAAAAAPsAAAAEwAAAAoAAAAAAAAACGNhbl9zd2FwAAAAAQAAAGxwcmVjb21wdXRlZCB2YWx1ZXMgdG8gZGl2aWRlIGJ5IHRvIGNoYW5nZSB0aGUgcHJlY2lzaW9uIGZyb20gdGhlIEdhcyBPcmFjbGUgcHJlY2lzaW9uIHRvIHRoZSB0b2tlbiBwcmVjaXNpb24AAAAWZnJvbV9nYXNfb3JhY2xlX2ZhY3RvcgAAAAAD7AAAABMAAAAKAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAAVwb29scwAAAAAAA+wAAAPuAAAAIAAAABMAAAAAAAAACnJlYmFsYW5jZXIAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAwAAAAEAAAAAAAAAC090aGVyQnJpZGdlAAAAAAEAAAAEAAAAAQAAAAAAAAALU2VudE1lc3NhZ2UAAAAAAQAAA+4AAAAgAAAAAQAAAAAAAAAPUmVjZWl2ZWRNZXNzYWdlAAAAAAEAAAPuAAAAIA==","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),n);this.options=n;this.fromJSON={initialize:this.txFromJSON,swap_and_bridge:this.txFromJSON,receive_tokens:this.txFromJSON,swap:this.txFromJSON,stop_swap:this.txFromJSON,start_swap:this.txFromJSON,set_gas_oracle:this.txFromJSON,set_stop_authority:this.txFromJSON,set_rebalancer:this.txFromJSON,set_messenger:this.txFromJSON,set_gas_usage:this.txFromJSON,register_bridge:this.txFromJSON,add_bridge_token:this.txFromJSON,remove_bridge_token:this.txFromJSON,add_pool:this.txFromJSON,withdraw_gas_tokens:this.txFromJSON,withdraw_bridging_fee_in_tokens:this.txFromJSON,has_processed_message:this.txFromJSON,has_received_message:this.txFromJSON,get_pool_address:this.txFromJSON,get_config:this.txFromJSON,get_stop_authority:this.txFromJSON,get_transaction_cost:this.txFromJSON,get_gas_usage:this.txFromJSON,get_admin:this.txFromJSON,get_gas_oracle:this.txFromJSON,get_another_bridge:this.txFromJSON,set_admin:this.txFromJSON,upgrade:this.txFromJSON}}};var Et=class extends Ae{constructor(n,i,s){super();this.nodeRpcUrlsConfig=n;this.params=i;this.api=s;this.chainType="SRB"}async buildRawTransactionSend(n){let i=await Re(this.chainType,n,this.api);return await this.buildRawTransactionSendFromParams(i)}async buildRawTransactionSendFromParams(n){let{amount:i,contractAddress:s,fromAccountAddress:o,fromTokenAddress:A,toChainId:c,toAccountAddress:m,toTokenAddress:u,fee:l,gasFeePaymentMethod:d,extraGas:y}=n,h=l;y&&(h=(0,fa.Big)(h).plus(y).toFixed());let b=this.getContract(yt,s,o),T;return d==="stablecoin"?T=await b.swap_and_bridge({sender:o,token:Ot.Address.contract(Buffer.from(A)).toString(),amount:BigInt(i),recipient:Buffer.from(m),destination_chain_id:+c,receive_token:Buffer.from(u),nonce:hn(),gas_amount:BigInt(0),fee_token_amount:BigInt(h)}):T=await b.swap_and_bridge({sender:o,token:Ot.Address.contract(Buffer.from(A)).toString(),amount:BigInt(i),recipient:Buffer.from(m),destination_chain_id:+c,receive_token:Buffer.from(u),nonce:hn(),gas_amount:BigInt(h),fee_token_amount:BigInt(0)}),T.toXDR()}async buildRawTransactionSwap(n){let i=We(this.chainType,n);return await this.buildRawTransactionSwapFromParams(i)}async buildRawTransactionSwapFromParams(n){let{amount:i,contractAddress:s,fromAccountAddress:o,fromTokenAddress:A,toAccountAddress:c,toTokenAddress:m,minimumReceiveAmount:u}=n;return(await this.getContract(yt,s,o).swap({sender:o,amount:BigInt(i),token:Ot.Address.contract(Buffer.from(A)).toBuffer(),receive_token:Buffer.from(m),recipient:c,receive_amount_min:BigInt(u)})).toXDR()}send(n){throw new J}getContract(n,i,s){let o={publicKey:s,contractId:i,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new n(o)}};var ba=require("big.js");var ya=_(require("bn.js"));function Xt(r){return"0x"+new ya.default(r).toString("hex")}function ha(r){return new Promise(a=>setTimeout(()=>a(),r))}var $e=r=>(...a)=>new Promise((n,i)=>r(...a,(s,o)=>s?i(s):n(o)));async function Yt(r,a){let n=await r.trx.sign(a);if(!n.signature)throw new Ze("Transaction was not signed properly");let s=(await r.trx.sendRawTransaction(n)).txid;return await fi(r,s),{txId:s}}async function fi(r,a,n=1e4){let i=Date.now();for(;;){if(Date.now()-i>n)throw new Ye("Transaction not found");let s=await r.trx.getUnconfirmedTransactionInfo(a);if(!s?.receipt){await ha(2e3);continue}if(s.receipt.result==="SUCCESS")return s;throw new Ye(`Transaction status is ${s.receipt.result}`)}}var ht=class extends Ae{constructor(n,i){super();this.tronWeb=n;this.api=i;this.chainType="TRX"}async send(n){let i=await Re(this.chainType,n,this.api),s=await this.buildRawTransactionSendFromParams(i);return await Yt(this.tronWeb,s)}async buildRawTransactionSwap(n){let i=We(this.chainType,n);return await this.buildRawTransactionSwapFromParams(i)}async buildRawTransactionSwapFromParams(n){let{amount:i,contractAddress:s,fromAccountAddress:o,fromTokenAddress:A,toAccountAddress:c,toTokenAddress:m,minimumReceiveAmount:u}=n,l=[{type:"uint256",value:i},{type:"bytes32",value:A},{type:"bytes32",value:m},{type:"address",value:c},{type:"uint256",value:u}];return this.buildRawTransaction(s,"swap(uint256,bytes32,bytes32,address,uint256)",l,"0",o)}async buildRawTransactionSend(n){let i=await Re(this.chainType,n,this.api);return this.buildRawTransactionSendFromParams(i)}async buildRawTransactionSendFromParams(n){let{amount:i,contractAddress:s,fromAccountAddress:o,fromTokenAddress:A,toChainId:c,toAccountAddress:m,toTokenAddress:u,messenger:l,fee:d,gasFeePaymentMethod:y,extraGas:h}=n,b=d;h&&(b=(0,ba.Big)(b).plus(h).toFixed());let T=He().toJSON().data,f,g,w;return l==3?(y==="stablecoin"?(f=[{type:"uint256",value:i},{type:"bytes32",value:m},{type:"uint256",value:c},{type:"uint256",value:b}],g="0"):(f=[{type:"uint256",value:i},{type:"bytes32",value:m},{type:"uint256",value:c},{type:"uint256",value:0}],g=b),w="bridge(uint256,bytes32,uint256,uint256)"):(y==="stablecoin"?(f=[{type:"bytes32",value:A},{type:"uint256",value:i},{type:"bytes32",value:m},{type:"uint256",value:c},{type:"bytes32",value:u},{type:"uint256",value:T},{type:"uint8",value:l},{type:"uint256",value:b}],g="0"):(f=[{type:"bytes32",value:A},{type:"uint256",value:i},{type:"bytes32",value:m},{type:"uint256",value:c},{type:"bytes32",value:u},{type:"uint256",value:T},{type:"uint8",value:l},{type:"uint256",value:0}],g=b),w="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)"),this.buildRawTransaction(s,w,f,g,o)}async buildRawTransaction(n,i,s,o,A){let c=await this.tronWeb.transactionBuilder.triggerSmartContract(n,i,{callValue:o},s,A);if(!c?.result?.result)throw new v("Unknown error: "+JSON.stringify(c,null,2));return c.transaction}};var Lt=class{constructor(a,n,i,s){this.api=a;this.nodeRpcUrlsConfig=n;this.params=i;this.tokenService=s;this.rawTxBuilder=new Nt(a,n,i,s)}async getAllowance(a,n){let i,s;n?(i=a,s=n):s=a;let o=pt(s.token,s.messenger);return await this.tokenService.getAllowance({...s,spender:o},i)}async checkAllowance(a,n){let i,s;n?(i=a,s=n):s=a;let o=pt(s.token,s.messenger);return this.tokenService.checkAllowance({...s,spender:o},i)}async approve(a,n){let i=pt(n.token,n.messenger);return this.tokenService.approve(a,{...n,spender:i})}async send(a,n){return x(n.amount),W("amount",n.amount,n.sourceToken.decimals),Dt(n.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,a).send(n)}};function pt(r,a){if(a&&a==3){if(r.cctpAddress)return r.cctpAddress;throw new ne("Such route does not support CCTP protocol")}else return r.bridgeAddress}function Dt(r,a,n,i,s){switch(Q[r].chainType){case"EVM":{if(s)return new dt(s,a,n);{let o=n.getNodeRpcUrl(r);return new dt(new Pa.default(o),a,n)}}case"TRX":{if(s)return new ht(s,a);{let o=n.getNodeRpcUrl(r);return new ht(new Ta.default({fullHost:o}),a)}}case"SOLANA":return new Vt(n.getNodeRpcUrl("SOL"),{wormholeMessengerProgramId:i.wormholeMessengerProgramId,solanaLookUpTable:i.solanaLookUpTable,cctpParams:i.cctpParams,jupiterUrl:i.jupiterUrl},a);case"SRB":return new Et(n,i,a)}}var Ba=require("big.js"),Ra=_(require("tronweb")),Ia=_(require("web3"));var we=require("big.js");function Sa(r,a,n,i,s){let o=I(r,3),A=(0,we.Big)(o),c=(0,we.Big)(n),m=(0,we.Big)(i).plus(s),u,l;if(c.eq(0)||m.eq(0)){let y=A.div(2);u=(0,we.Big)(i).plus(y),l=(0,we.Big)(s).plus(y)}else u=(0,we.Big)(i).plus(A.mul(i).div(m)),l=(0,we.Big)(s).plus(A.mul(s).div(m));return(0,we.Big)(Nn(a,u.toFixed(),l.toFixed())).minus(c).toFixed()}function wa(r){let a=I(r,3);return(0,we.Big)(a).round().toFixed()}var Fe=[{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 ee=class{constructor(a){this.lpAmount=a.lpAmount,this.rewardDebt=a.rewardDebt}get userLiquidity(){return S(this.lpAmount,3).toFixed()}earned(a,n){let i=Gn(this.lpAmount,this.rewardDebt,a.accRewardPerShareP,a.p);return n?S(i,n).toFixed():i}};var ce=class{};var bt=class extends ce{constructor(n,i){super();this.web3=n;this.api=i;this.chainType="EVM";this.P=52}async getUserBalanceInfo(n,i){let s;try{s=await Ft(this.getUserBalanceInfoByBatch(n,i),`Cannot get UserBalanceInfo for ${i.name} on ${i.chainSymbol}`,5e3)}catch{s=await dn(()=>this.getUserBalanceInfoPerProperty(n,i),`Cannot get UserBalanceInfo for ${i.name} on ${i.chainSymbol}`,5,2e3)}return s}async getUserBalanceInfoByBatch(n,i){let s=new this.web3.BatchRequest,o=new this.web3.eth.Contract(Fe,i.poolAddress),A=["userRewardDebt","balanceOf"].map(u=>$e(l=>s.add(o.methods[u](n).call.request({},l)))());s.execute();let[c,m]=await Promise.all(A);return new ee({lpAmount:m,rewardDebt:c})}async getUserBalanceInfoPerProperty(n,i){let s=await this.getPoolContract(i.poolAddress).methods.userRewardDebt(n).call(),o=await this.getPoolContract(i.poolAddress).methods.balanceOf(n).call();return new ee({lpAmount:o,rewardDebt:s})}async getPoolInfoFromChain(n){let i;try{i=await Ft(this.getPoolInfoByBatch(n),`Cannot get PoolInfo for ${n.name} on ${n.chainSymbol}`,5e3)}catch{i=await dn(()=>this.getPoolInfoPerProperty(n),`Cannot get PoolInfo for ${n.name} on ${n.chainSymbol}`,5,2e3)}return i}async getPoolInfoByBatch(n){let i=new this.web3.BatchRequest,s=new this.web3.eth.Contract(Fe,n.poolAddress),o=["a","d","tokenBalance","vUsdBalance","totalSupply","accRewardPerShareP"].map(T=>$e(f=>i.add(s.methods[T]().call.request({},f)))());i.execute();let[A,c,m,u,l,d]=await Promise.all(o),y=m.toString(),h=u.toString(),b=q({tokenBalance:y,vUsdBalance:h});return{aValue:A.toString(),dValue:c.toString(),tokenBalance:y,vUsdBalance:h,totalLpAmount:l.toString(),accRewardPerShareP:d.toString(),p:this.P,imbalance:b}}async getPoolInfoPerProperty(n){let i=this.getPoolContract(n.poolAddress),s=await i.methods.a().call(),o=await i.methods.d().call(),A=await i.methods.tokenBalance().call(),c=await i.methods.vUsdBalance().call(),m=await i.methods.totalSupply().call(),u=await i.methods.accRewardPerShareP().call(),l=q({tokenBalance:A,vUsdBalance:c});return{aValue:s,dValue:o,tokenBalance:A,vUsdBalance:c,totalLpAmount:m,accRewardPerShareP:u,p:this.P,imbalance:l}}async buildRawTransactionDeposit(n){return Promise.resolve({...this.buildTxParams(n),data:this.getPoolContract(n.token.poolAddress).methods.deposit(n.amount).encodeABI()})}async buildRawTransactionWithdraw(n){return Promise.resolve({...this.buildTxParams(n),data:this.getPoolContract(n.token.poolAddress).methods.withdraw(n.amount).encodeABI()})}async buildRawTransactionClaimRewards(n){return Promise.resolve({...this.buildTxParams(n),data:this.getPoolContract(n.token.poolAddress).methods.claimRewards().encodeABI()})}buildTxParams(n){return{from:n.accountAddress,to:n.token.poolAddress,value:"0"}}getContract(n,i){return new this.web3.eth.Contract(n,i)}getPoolContract(n){return this.getContract(Fe,n)}};var Jt=class{constructor(a,n,i,s){this.api=a;this.nodeRpcUrlsConfig=n;this.params=i;this.tokenService=s}async approve(a,n){if(n){let i=a,s=n;return this.tokenService.buildRawTransactionApprove({...s,spender:s.token.poolAddress},i)}else{let i=a;return this.tokenService.buildRawTransactionApprove({...i,spender:i.token.poolAddress})}}async deposit(a,n){return x(a.amount),W("amount",a.amount,a.token.decimals),a.amount=I(a.amount,a.token.decimals).toFixed(),et(a.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionDeposit(a)}async withdraw(a,n){return x(a.amount),W("amount",a.amount,a.token.decimals),a.amount=I(a.amount,3).toFixed(),et(a.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionWithdraw(a)}async claimRewards(a,n){return et(a.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionClaimRewards(a)}};var ue=require("@project-serum/anchor"),me=require("@solana/web3.js");var Kt=class extends ce{constructor(n,i){super();this.solanaRpcUrl=n;this.api=i;this.chainType="SOLANA";this.P=48}async getUserBalanceInfo(n,i){let s=this.buildAnchorProvider(n),o=this.getBridge(i.bridgeAddress,s),A=new me.PublicKey(i.poolAddress),c=await o.account.pool.fetch(A);try{let m=await fn(new me.PublicKey(n),c.mint,o.programId),{lpAmount:u,rewardDebt:l}=await o.account.userDeposit.fetch(m);return new ee({lpAmount:u.toString(),rewardDebt:l.toString()})}catch{return new ee({lpAmount:"0",rewardDebt:"0"})}}async getPoolInfoFromChain(n){let i=this.buildAnchorProvider(n.bridgeAddress),s=await this.getBridge(n.bridgeAddress,i).account.pool.fetch(n.poolAddress),o=s.vUsdBalance.toString(),A=s.tokenBalance.toString(),c=q({tokenBalance:A,vUsdBalance:o});return{dValue:s.d.toString(),aValue:s.a.toString(),totalLpAmount:s.totalLpAmount.toString(),vUsdBalance:o,tokenBalance:A,accRewardPerShareP:s.accRewardPerShareP.toString(),p:this.P,imbalance:c}}async buildRawTransactionDeposit(n){let{bridge:i,accounts:s,preInstructions:o}=await this.prepareDataForTransaction(n),A=await i.methods.deposit(new ue.BN(n.amount)).accounts(s).preInstructions(o).transaction();return A.recentBlockhash=(await this.buildAnchorProvider(n.accountAddress).connection.getLatestBlockhash()).blockhash,A.feePayer=new me.PublicKey(n.accountAddress),await je(A,n.txFeeParams,this.solanaRpcUrl),A}async buildRawTransactionWithdraw(n){let{bridge:i,accounts:s,preInstructions:o}=await this.prepareDataForTransaction(n),A=await i.methods.withdraw(new ue.BN(n.amount)).accounts(s).preInstructions(o).transaction();return A.recentBlockhash=(await this.buildAnchorProvider(n.accountAddress).connection.getLatestBlockhash()).blockhash,A.feePayer=new me.PublicKey(n.accountAddress),await je(A,n.txFeeParams,this.solanaRpcUrl),A}async buildRawTransactionClaimRewards(n){let{bridge:i,accounts:s,preInstructions:o}=await this.prepareDataForTransaction(n),A=await i.methods.claimRewards().accounts(s).preInstructions(o).transaction();return A.recentBlockhash=(await this.buildAnchorProvider(n.accountAddress).connection.getLatestBlockhash()).blockhash,A.feePayer=new me.PublicKey(n.accountAddress),await je(A,n.txFeeParams,this.solanaRpcUrl),A}async prepareDataForTransaction(n){let i=this.buildAnchorProvider(n.accountAddress),s=this.getBridge(n.token.bridgeAddress,i),{accounts:o,preInstructions:A}=await this._getLPTransactionData(s,n.token.poolAddress,n.accountAddress,i);return{bridge:s,accounts:o,preInstructions:A}}getBridge(n,i){return new ue.Program(gt,n,i)}buildAnchorProvider(n){let i=new me.Connection(this.solanaRpcUrl,"confirmed"),s=new me.PublicKey(n);return new ue.AnchorProvider(i,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}async _getLPTransactionData(n,i,s,o){let A=new me.PublicKey(s),c=await Me(n.programId),m=await Ke(n.programId),u=new me.PublicKey(i),d=(await n.account.pool.fetch(u)).mint,y=await oe(A,d),h=await Qe(d,n.programId),b=await fn(A,d,n.programId),T=[ue.web3.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await ze(y,o)}catch{let P=await ue.Spl.associatedToken(o).methods.create().accounts({mint:d,owner:A,associatedAccount:y}).instruction();T.push(P)}try{await n.account.userDeposit.fetch(b)}catch{let w=await n.methods.initDepositAccount().accounts({mint:d,user:A,userDeposit:b}).instruction();T.push(w)}return{accounts:{mint:d,user:A,config:c,pool:u,bridgeAuthority:m,userDeposit:b,userToken:y,bridgeToken:h},preInstructions:T}}};var WA=require("@stellar/stellar-sdk");var e=require("@stellar/stellar-sdk"),hi=e.contract.Spec,bi=e.contract.Client;var Qt=class extends bi{constructor(n){super(new hi(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABwAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAZicmlkZ2UAAAAAABMAAAAAAAAAAWEAAAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAADGZlZV9zaGFyZV9icAAAAAoAAAAAAAAAFGJhbGFuY2VfcmF0aW9fbWluX2JwAAAACgAAAAAAAAASYWRtaW5fZmVlX3NoYXJlX2JwAAAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAHZGVwb3NpdAAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAId2l0aGRyYXcAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAACWFtb3VudF9scAAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3dhcF90b192X3VzZAAAAAAAAAMAAAAAAAAABHVzZXIAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9mcm9tX3ZfdXNkAAAAAAQAAAAAAAAABHVzZXIAAAATAAAAAAAAAAt2dXNkX2Ftb3VudAAAAAAKAAAAAAAAABJyZWNlaXZlX2Ftb3VudF9taW4AAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAANY2xhaW1fcmV3YXJkcwAAAAAAAAEAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","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=","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAD1N3YXBwZWRGcm9tVlVzZAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAAC3Z1c2RfYW1vdW50AAAAAAo=","AAAAAQAAAAAAAAAAAAAADVN3YXBwZWRUb1ZVc2QAAAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAALdnVzZF9hbW91bnQAAAAACg==","AAAAAQAAAAAAAAAAAAAAB0RlcG9zaXQAAAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAACFdpdGhkcmF3AAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAADlJld2FyZHNDbGFpbWVkAAAAAAACAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAABHVzZXIAAAAT","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAQAAAAEAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAEAAAAT","AAAAAQAAAAAAAAAAAAAABFBvb2wAAAAPAAAAAAAAAAFhAAAAAAAACgAAAAAAAAAWYWNjX3Jld2FyZF9wZXJfc2hhcmVfcAAAAAAACgAAAAAAAAAQYWRtaW5fZmVlX2Ftb3VudAAAAAoAAAAAAAAAEmFkbWluX2ZlZV9zaGFyZV9icAAAAAAACgAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAAAAAAtjYW5fZGVwb3NpdAAAAAABAAAAAAAAAAxjYW5fd2l0aGRyYXcAAAABAAAAAAAAAAFkAAAAAAAACgAAAAAAAAAIZGVjaW1hbHMAAAAEAAAAAAAAAAxmZWVfc2hhcmVfYnAAAAAKAAAAAAAAAAhyZXNlcnZlcwAAAAoAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAANdG9rZW5fYmFsYW5jZQAAAAAAAAoAAAAAAAAAD3RvdGFsX2xwX2Ftb3VudAAAAAAKAAAAAAAAAA12X3VzZF9iYWxhbmNlAAAAAAAACg==","AAAAAQAAAAAAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAIAAAAAAAAACWxwX2Ftb3VudAAAAAAAAAoAAAAAAAAAC3Jld2FyZF9kZWJ0AAAAAAo=","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),n);this.options=n;this.fromJSON={initialize:this.txFromJSON,deposit:this.txFromJSON,withdraw:this.txFromJSON,swap_to_v_usd:this.txFromJSON,swap_from_v_usd:this.txFromJSON,claim_rewards:this.txFromJSON,set_fee_share:this.txFromJSON,adjust_total_lp_amount:this.txFromJSON,set_balance_ratio_min_bp:this.txFromJSON,stop_deposit:this.txFromJSON,start_deposit:this.txFromJSON,stop_withdraw:this.txFromJSON,start_withdraw:this.txFromJSON,set_stop_authority:this.txFromJSON,set_bridge:this.txFromJSON,set_admin:this.txFromJSON,set_admin_fee_share:this.txFromJSON,claim_admin_fee:this.txFromJSON,pending_reward:this.txFromJSON,get_pool:this.txFromJSON,get_admin:this.txFromJSON,get_stop_authority:this.txFromJSON,get_bridge:this.txFromJSON,get_user_deposit:this.txFromJSON,upgrade:this.txFromJSON}}};var Ht=class extends ce{constructor(n,i,s){super();this.nodeRpcUrlsConfig=n;this.params=i;this.api=s;this.chainType="SRB";this.P=48}async getUserBalanceInfo(n,i){let o=(await this.getContract(i.poolAddress).get_user_deposit({user:n})).result;if(o.isErr())throw new v;let A=o.unwrap();return new ee({lpAmount:A.lp_amount.toString(),rewardDebt:A.reward_debt.toString()})}async getPoolInfoFromChain(n){let s=(await this.getContract(n.poolAddress).get_pool()).result;if(s.isErr())throw new v;let o=s.unwrap();return{aValue:o.a.toString(),accRewardPerShareP:o.acc_reward_per_share_p.toString(),dValue:o.d.toString(),tokenBalance:o.token_balance.toString(),p:this.P,totalLpAmount:o.total_lp_amount.toString(),vUsdBalance:o.v_usd_balance.toString(),imbalance:q({tokenBalance:o.token_balance.toString(),vUsdBalance:o.v_usd_balance.toString()})}}async buildRawTransactionDeposit(n){let i=this.getContract(n.token.poolAddress,n.accountAddress);return console.log("sender",n.accountAddress),console.log("poolAddress",n.token.poolAddress),(await i.deposit({sender:n.accountAddress,amount:BigInt(n.amount)})).toXDR()}async buildRawTransactionWithdraw(n){return(await this.getContract(n.token.poolAddress,n.accountAddress).withdraw({sender:n.accountAddress,amount_lp:BigInt(n.amount)})).toXDR()}async buildRawTransactionClaimRewards(n){return(await this.getContract(n.token.poolAddress,n.accountAddress).claim_rewards({sender:n.accountAddress})).toXDR()}getContract(n,i){let s={publicKey:i,contractId:n,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new Qt(s)}};var Ca=_(require("web3"));var Tt=class extends ce{constructor(n,i,s){super();this.tronWeb=n;this.api=i;this.chainType="TRX";this.P=52;s&&(this.web3=new Ca.default(s))}async getUserBalanceInfo(n,i){let s;if(this.web3)try{s=await this.getUserBalanceInfoByBatch(this.web3,n,i)}catch{s=await this.getUserBalanceInfoPerProperty(n,i)}else s=await this.getUserBalanceInfoPerProperty(n,i);return s}async getUserBalanceInfoByBatch(n,i,s){let o=new n.BatchRequest,A=new n.eth.Contract(Fe,ut(s.poolAddress)),c=ut(i),m=["userRewardDebt","balanceOf"].map(d=>$e(y=>o.add(A.methods[d](c).call.request({},y)))());o.execute();let[u,l]=await Promise.all(m);return new ee({lpAmount:l,rewardDebt:u})}async getUserBalanceInfoPerProperty(n,i){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(n);let s=await this.getContract(i.poolAddress),o=(await s.methods.userRewardDebt(n).call()).toString(),A=(await s.methods.balanceOf(n).call()).toString();return new ee({lpAmount:A,rewardDebt:o})}async getPoolInfoFromChain(n){let i;if(this.web3)try{i=await this.getPoolInfoByBatch(this.web3,n)}catch{i=await this.getPoolInfoPerProperty(n)}else i=await this.getPoolInfoPerProperty(n);return i}async getPoolInfoByBatch(n,i){let s=new n.BatchRequest,o=new n.eth.Contract(Fe,ut(i.poolAddress)),A=["a","d","tokenBalance","vUsdBalance","totalSupply","accRewardPerShareP"].map(f=>$e(g=>s.add(o.methods[f]().call.request({},g)))());s.execute();let[c,m,u,l,d,y]=await Promise.all(A),h=u.toString(),b=l.toString(),T=q({tokenBalance:h,vUsdBalance:b});return{aValue:c.toString(),dValue:m.toString(),tokenBalance:h,vUsdBalance:b,totalLpAmount:d.toString(),accRewardPerShareP:y.toString(),p:this.P,imbalance:T}}async getPoolInfoPerProperty(n){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(n.poolAddress);let i=await this.getContract(n.poolAddress),[s,o,A,c,m,u]=await Promise.all([i.methods.a().call(),i.methods.d().call(),i.methods.tokenBalance().call(),i.methods.vUsdBalance().call(),i.methods.totalSupply().call(),i.methods.accRewardPerShareP().call()]),l=A.toString(),d=c.toString(),y=q({tokenBalance:l,vUsdBalance:d});return{aValue:s.toString(),dValue:o.toString(),tokenBalance:l,vUsdBalance:d,totalLpAmount:m.toString(),accRewardPerShareP:u.toString(),p:this.P,imbalance:y}}buildRawTransactionDeposit(n){let{amount:i,accountAddress:s}=n,o=[{type:"uint256",value:i}];return this.buildRawTransaction(n.token.poolAddress,"deposit(uint256)",o,"0",s)}buildRawTransactionWithdraw(n){let{amount:i,accountAddress:s}=n,o=[{type:"uint256",value:i}];return this.buildRawTransaction(n.token.poolAddress,"withdraw(uint256)",o,"0",s)}buildRawTransactionClaimRewards(n){let{accountAddress:i}=n,s=[];return this.buildRawTransaction(n.token.poolAddress,"claimRewards()",s,"0",i)}async buildRawTransaction(n,i,s,o,A){let c=await this.tronWeb.transactionBuilder.triggerSmartContract(n,i,{callValue:o},s,A);if(!c?.result?.result)throw new v("Unknown error: "+JSON.stringify(c,null,2));return c.transaction}async getContract(n){return await this.tronWeb.contract(Fe,n)}};var zt=class{constructor(a,n,i,s){this.api=a;this.nodeRpcUrlsConfig=n;this.params=i;this.tokenService=s;this.rawTxBuilder=new Jt(a,n,this.params,s)}async getAllowance(a,n){if(n){let i=a,s=n;return await this.tokenService.getAllowance({...s,spender:s.token.poolAddress},i)}else{let i=a;return await this.tokenService.getAllowance({...i,spender:i.token.poolAddress})}}async checkAllowance(a,n){if(n){let i=a,s=n;return this.tokenService.checkAllowance({...s,spender:s.token.poolAddress},i)}else{let i=a;return this.tokenService.checkAllowance({...i,spender:i.token.poolAddress})}}async approve(a,n){return this.tokenService.approve(a,{...n,spender:n.token.poolAddress})}async getAmountToBeDeposited(a,n,i){x(a),W("amount",a,n.decimals);let s=await this.getPoolInfoFromChain(n,i),{vUsdBalance:o,tokenBalance:A,aValue:c,dValue:m}=s,u=Sa(a,c,m,A,o);return S(u,3).toFixed()}async getAmountToBeWithdrawn(a,n,i,s){x(a),W("amount",a,i.decimals);let o=await this.getPoolInfoFromChain(i,s),A=wa(a),c=j(A,i.decimals),u=(await this.getUserBalanceInfo(n,i,s)).earned(o)||"0",l=(0,Ba.Big)(c).plus(u).toFixed();return S(l,i.decimals).toFixed()}async getUserBalanceInfo(a,n,i){return et(n.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).getUserBalanceInfo(a,n)}async getPoolInfoFromChain(a,n){let i=await et(a.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).getPoolInfoFromChain(a);return this.api.cachePut({chainSymbol:a.chainSymbol,poolAddress:a.poolAddress},i),i}};function et(r,a,n,i,s){switch(Q[r].chainType){case"EVM":{if(s)return new bt(s,a);{let o=n.getNodeRpcUrl(r);return new bt(new Ia.default(o),a)}}case"TRX":{let o=n.getNodeRpcUrl(r),A=i.tronJsonRpc;if(s)return new Tt(s,a,A);{let c=new Ra.default({fullHost:o});return new Tt(c,a,A)}}case"SOLANA":{let o=n.getNodeRpcUrl(r);return new Kt(o,a)}case"SRB":return new Ht(n,i,a)}}var G=require("big.js");function Ma(r,a,n){let i=Ti(r,{decimals:a.decimals,feeShare:a.feeShare},a.poolInfo),s=Pi(i.amountIncludingCommissionInSystemPrecision,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo);return{swapToVUsdCalcResult:i,swapFromVUsdCalcResult:s}}function xa(r,a,n){let i=Si(r,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo),s=wi(i.amountIncludingCommissionInSystemPrecision,{decimals:a.decimals,feeShare:a.feeShare},a.poolInfo);return{swapToVUsdCalcResult:i,swapFromVUsdCalcResult:s}}function Ti(r,{feeShare:a,decimals:n},i){let s=(0,G.Big)(r),o=s.times(a),A=s.minus(o);return{bridgeFeeInTokenPrecision:o.round().toFixed(),amountIncludingCommissionInSystemPrecision:va(Ne(A,n),i),amountExcludingCommissionInSystemPrecision:va(Ne(s,n),i)}}function va(r,a){if(r.eq(0))return"0";let n=(0,G.Big)(a.tokenBalance).plus(r),i=Te(n.toFixed(),a.aValue,a.dValue);return(0,G.Big)(a.vUsdBalance).minus(i).round().toFixed()}function Pi(r,{feeShare:a,decimals:n},i){if((0,G.Big)(r).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let o=(0,G.Big)(r).plus(i.vUsdBalance),A=Te(o,i.aValue,i.dValue),c=j((0,G.Big)(i.tokenBalance).minus(A),n),m=(0,G.Big)(c).times(a),u=(0,G.Big)(c).minus(m).round();return{bridgeFeeInTokenPrecision:m.round().toFixed(),amountIncludingCommissionInTokenPrecision:u.toFixed(),amountExcludingCommissionInTokenPrecision:c.toFixed()}}function Si(r,{feeShare:a,decimals:n},i){let s=(0,G.Big)(a).div((0,G.Big)(1).minus(a)),o=(0,G.Big)(r).times(s),A=(0,G.Big)(r).plus(o);return{bridgeFeeInTokenPrecision:o.round().toFixed(),amountIncludingCommissionInSystemPrecision:ka(Ne(A,n),i),amountExcludingCommissionInSystemPrecision:ka(Ne(r,n),i)}}function ka(r,a){let n=(0,G.Big)(a.tokenBalance).minus(r),i=Te(n.toFixed(),a.aValue,a.dValue);return(0,G.Big)(i).minus(a.vUsdBalance).round().toFixed()}function wi(r,{feeShare:a,decimals:n},i){if((0,G.Big)(r).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let s=(0,G.Big)(i.vUsdBalance).minus(r),o=Te(s.toFixed(),i.aValue,i.dValue),A=(0,G.Big)(o).minus(i.tokenBalance),c=j(A.toFixed(),n),m=(0,G.Big)(a).div((0,G.Big)(1).minus(a)),u=(0,G.Big)(c).times(m),l=(0,G.Big)(c).plus(u);return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInTokenPrecision:l.round().toFixed(),amountExcludingCommissionInTokenPrecision:c.toFixed()}}var ve=require("big.js");function Wa(r,a,n,i,s){let o=be(r,a,n),A=j(o,a.decimals),c=ct(o,i,s),m=(0,ve.Big)(r).times(a.feeShare),u=(0,ve.Big)(c).div((0,ve.Big)(1).minus(i.feeShare)).minus(c);return{sourceLPSwap:{fee:S(m,a.decimals).neg().round(a.decimals,ve.Big.roundUp).toFixed(),swap:S((0,ve.Big)(r).minus(A).minus(m),a.decimals).neg().round(a.decimals,ve.Big.roundUp).toFixed()},destLPSwap:{fee:S(u,i.decimals).neg().round(i.decimals,ve.Big.roundUp).toFixed(),swap:S(j(o,i.decimals).minus(c).minus(u),i.decimals).neg().round(i.decimals,ve.Big.roundUp).toFixed()}}}var tt=require("@solana/web3.js");var jt=class{constructor(a,n){this.nodeRpcUrlsConfig=a;this.params=n}async addMemoToTx(a,n){if(n.length>28)throw new v("InvalidArgumentException memo cannot be more than 28 characters");let i=new tt.Connection(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),s=await Ve(a,i),o=tt.TransactionMessage.decompile(a.message,{addressLookupTableAccounts:s});o.instructions[o.instructions.length-1].keys.push({pubkey:new tt.PublicKey(Buffer.from(n)),isSigner:!1,isWritable:!1}),a.message=o.compileToV0Message(s)}};var M=require("@stellar/stellar-sdk");var il=require("@stellar/stellar-sdk"),Ci=il.contract.Spec,Bi=il.contract.Client;var Pt=class extends Bi{constructor(n){super(new Ci(["AAAAAAAAAYlSZXR1cm5zIHRoZSBhbGxvd2FuY2UgZm9yIGBzcGVuZGVyYCB0byB0cmFuc2ZlciBmcm9tIGBmcm9tYC4KClRoZSBhbW91bnQgcmV0dXJuZWQgaXMgdGhlIGFtb3VudCB0aGF0IHNwZW5kZXIgaXMgYWxsb3dlZCB0byB0cmFuc2ZlcgpvdXQgb2YgZnJvbSdzIGJhbGFuY2UuIFdoZW4gdGhlIHNwZW5kZXIgdHJhbnNmZXJzIGFtb3VudHMsIHRoZSBhbGxvd2FuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQgdHJhbnNmZXJlZC4KCiMgQXJndW1lbnRzCgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHRvIGJlIGRyYXduIGZyb20uCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3Mgc3BlbmRpbmcgdGhlIHRva2VucyBoZWxkIGJ5IGBmcm9tYC4AAAAAAAAJYWxsb3dhbmNlAAAAAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAEAAAAL","AAAAAAAAAIlSZXR1cm5zIHRydWUgaWYgYGlkYCBpcyBhdXRob3JpemVkIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBmb3Igd2hpY2ggdG9rZW4gYXV0aG9yaXphdGlvbiBpcyBiZWluZyBjaGVja2VkLgAAAAAAAAphdXRob3JpemVkAAAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAB","AAAAAAAAA55TZXQgdGhlIGFsbG93YW5jZSBieSBgYW1vdW50YCBmb3IgYHNwZW5kZXJgIHRvIHRyYW5zZmVyL2J1cm4gZnJvbQpgZnJvbWAuCgpUaGUgYW1vdW50IHNldCBpcyB0aGUgYW1vdW50IHRoYXQgc3BlbmRlciBpcyBhcHByb3ZlZCB0byB0cmFuc2ZlciBvdXQgb2YKZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byB0cmFuc2ZlciBhbW91bnRzLCBhbmQKd2hlbiBhbiBhbW91bnQgaXMgdHJhbnNmZXJyZWQgdGhlIGFsbG93YW5jZSB3aWxsIGJlIHJlZHVjZWQgYnkgdGhlCmFtb3VudCB0cmFuc2ZlcmVkLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgdG8gYmUgZHJhd24gZnJvbS4KKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBiZWluZyBhdXRob3JpemVkIHRvIHNwZW5kIHRoZSB0b2tlbnMgaGVsZCBieQpgZnJvbWAuCiogYGFtb3VudGAgLSBUaGUgdG9rZW5zIHRvIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGBzcGVuZGVyYC4KKiBgZXhwaXJhdGlvbl9sZWRnZXJgIC0gVGhlIGxlZGdlciBudW1iZXIgd2hlcmUgdGhpcyBhbGxvd2FuY2UgZXhwaXJlcy4gQ2Fubm90CmJlIGxlc3MgdGhhbiB0aGUgY3VycmVudCBsZWRnZXIgbnVtYmVyIHVubGVzcyB0aGUgYW1vdW50IGlzIGJlaW5nIHNldCB0byAwLgpBbiBleHBpcmVkIGVudHJ5ICh3aGVyZSBleHBpcmF0aW9uX2xlZGdlciA8IHRoZSBjdXJyZW50IGxlZGdlciBudW1iZXIpCnNob3VsZCBiZSB0cmVhdGVkIGFzIGEgMCBhbW91bnQgYWxsb3dhbmNlLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImFwcHJvdmUiLCBmcm9tOiBBZGRyZXNzLApzcGVuZGVyOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6IGkxMjgsIGV4cGlyYXRpb25fbGVkZ2VyOiB1MzJdYAAAAAAAB2FwcHJvdmUAAAAABAAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAAAAABFleHBpcmF0aW9uX2xlZGdlcgAAAAAAAAQAAAAA","AAAAAAAAAJhSZXR1cm5zIHRoZSBiYWxhbmNlIG9mIGBpZGAuCgojIEFyZ3VtZW50cwoKKiBgaWRgIC0gVGhlIGFkZHJlc3MgZm9yIHdoaWNoIGEgYmFsYW5jZSBpcyBiZWluZyBxdWVyaWVkLiBJZiB0aGUKYWRkcmVzcyBoYXMgbm8gZXhpc3RpbmcgYmFsYW5jZSwgcmV0dXJucyAwLgAAAAdiYWxhbmNlAAAAAAEAAAAAAAAAAmlkAAAAAAATAAAAAQAAAAs=","AAAAAAAAAWRCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLgoKUmVkdWNlcyBmcm9tJ3MgYmFsYW5jZSBieSB0aGUgYW1vdW50LCB3aXRob3V0IHRyYW5zZmVycmluZyB0aGUgYmFsYW5jZQp0byBhbm90aGVyIGhvbGRlcidzIGJhbGFuY2UuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIG9mIHRva2VucyB3aGljaCB3aWxsIGJlCmJ1cm5lZCBmcm9tLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgYnVybmVkLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImJ1cm4iLCBmcm9tOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6CmkxMjhdYAAAAARidXJuAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAtxCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSBvZiBgc3BlbmRlcmAuCgpSZWR1Y2VzIGZyb20ncyBiYWxhbmNlIGJ5IHRoZSBhbW91bnQsIHdpdGhvdXQgdHJhbnNmZXJyaW5nIHRoZSBiYWxhbmNlCnRvIGFub3RoZXIgaG9sZGVyJ3MgYmFsYW5jZS4KClRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byBidXJuIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZSwgaWYKdGhlIGFtb3VudCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGFsbG93YW5jZSB0aGF0IHRoZSBzcGVuZGVyIGhhcwpvbiB0aGUgZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyJ3MgYWxsb3dhbmNlIG9uIGZyb20ncyBiYWxhbmNlIHdpbGwgYmUKcmVkdWNlZCBieSB0aGUgYW1vdW50LgoKIyBBcmd1bWVudHMKCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3MgYXV0aG9yaXppbmcgdGhlIGJ1cm4sIGFuZCBoYXZpbmcgaXRzIGFsbG93YW5jZQpjb25zdW1lZCBkdXJpbmcgdGhlIGJ1cm4uCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQpidXJuZWQgZnJvbS4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIGJ1cm5lZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJidXJuIiwgZnJvbTogQWRkcmVzc10sIGRhdGEgPSBbYW1vdW50OgppMTI4XWAAAAAJYnVybl9mcm9tAAAAAAAAAwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAVNDbGF3YmFjayBgYW1vdW50YCBmcm9tIGBmcm9tYCBhY2NvdW50LiBgYW1vdW50YCBpcyBidXJuZWQgaW4gdGhlCmNsYXdiYWNrIHByb2Nlc3MuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIGZyb20gd2hpY2ggdGhlIGNsYXdiYWNrIHdpbGwKdGFrZSB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSBjbGF3ZWQgYmFjay4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJjbGF3YmFjayIsIGFkbWluOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAACGNsYXdiYWNrAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAIBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdXNlZCB0byByZXByZXNlbnQgYW1vdW50cyBvZiB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAhkZWNpbWFscwAAAAAAAAABAAAABA==","AAAAAAAAAPVNaW50cyBgYW1vdW50YCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgbWludGVkIHRva2Vucy4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIG1pbnRlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJtaW50IiwgYWRtaW46IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwgZGF0YQo9IFthbW91bnQ6IGkxMjhdYAAAAAAAAARtaW50AAAAAgAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAFlSZXR1cm5zIHRoZSBuYW1lIGZvciB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAAAAARuYW1lAAAAAAAAAAEAAAAQ","AAAAAAAAAQxTZXRzIHRoZSBhZG1pbmlzdHJhdG9yIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyBgbmV3X2FkbWluYC4KCiMgQXJndW1lbnRzCgoqIGBuZXdfYWRtaW5gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCBoZW5jZWZvcnRoIGJlIHRoZSBhZG1pbmlzdHJhdG9yCm9mIHRoaXMgdG9rZW4gY29udHJhY3QuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2FkbWluIiwgYWRtaW46IEFkZHJlc3NdLCBkYXRhID0KW25ld19hZG1pbjogQWRkcmVzc11gAAAACXNldF9hZG1pbgAAAAAAAAEAAAAAAAAACW5ld19hZG1pbgAAAAAAABMAAAAA","AAAAAAAAAEZSZXR1cm5zIHRoZSBhZG1pbiBvZiB0aGUgY29udHJhY3QuCgojIFBhbmljcwoKSWYgdGhlIGFkbWluIGlzIG5vdCBzZXQuAAAAAAAFYWRtaW4AAAAAAAAAAAAAAQAAABM=","AAAAAAAAAVBTZXRzIHdoZXRoZXIgdGhlIGFjY291bnQgaXMgYXV0aG9yaXplZCB0byB1c2UgaXRzIGJhbGFuY2UuIElmCmBhdXRob3JpemVkYCBpcyB0cnVlLCBgaWRgIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBiZWluZyAoZGUtKWF1dGhvcml6ZWQuCiogYGF1dGhvcml6ZWAgLSBXaGV0aGVyIG9yIG5vdCBgaWRgIGNhbiB1c2UgaXRzIGJhbGFuY2UuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2F1dGhvcml6ZWQiLCBpZDogQWRkcmVzc10sIGRhdGEgPQpbYXV0aG9yaXplOiBib29sXWAAAAAOc2V0X2F1dGhvcml6ZWQAAAAAAAIAAAAAAAAAAmlkAAAAAAATAAAAAAAAAAlhdXRob3JpemUAAAAAAAABAAAAAA==","AAAAAAAAAFtSZXR1cm5zIHRoZSBzeW1ib2wgZm9yIHRoaXMgdG9rZW4uCgojIFBhbmljcwoKSWYgdGhlIGNvbnRyYWN0IGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuAAAAAAZzeW1ib2wAAAAAAAAAAAABAAAAEA==","AAAAAAAAAWRUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQp3aXRoZHJhd24gZnJvbS4KKiBgdG9gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCByZWNlaXZlIHRoZSB0cmFuc2ZlcnJlZCB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSB0cmFuc2ZlcnJlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJ0cmFuc2ZlciIsIGZyb206IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwKZGF0YSA9IFthbW91bnQ6IGkxMjhdYAAAAAh0cmFuc2ZlcgAAAAMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAzNUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSB0aGF0CmBzcGVuZGVyYCBoYXMgb24gYGZyb21gJ3MgYmFsYW5jZS4gQXV0aG9yaXplZCBieSBzcGVuZGVyCihgc3BlbmRlci5yZXF1aXJlX2F1dGgoKWApLgoKVGhlIHNwZW5kZXIgd2lsbCBiZSBhbGxvd2VkIHRvIHRyYW5zZmVyIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZQppZiB0aGUgYW1vdW50IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgYWxsb3dhbmNlIHRoYXQgdGhlIHNwZW5kZXIKaGFzIG9uIHRoZSBmcm9tJ3MgYmFsYW5jZS4gVGhlIHNwZW5kZXIncyBhbGxvd2FuY2Ugb24gZnJvbSdzIGJhbGFuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQuCgojIEFyZ3VtZW50cwoKKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBhdXRob3JpemluZyB0aGUgdHJhbnNmZXIsIGFuZCBoYXZpbmcgaXRzCmFsbG93YW5jZSBjb25zdW1lZCBkdXJpbmcgdGhlIHRyYW5zZmVyLgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHdoaWNoIHdpbGwgYmUKd2l0aGRyYXduIGZyb20uCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgdHJhbnNmZXJyZWQgdG9rZW5zLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgdHJhbnNmZXJyZWQuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsidHJhbnNmZXIiLCBmcm9tOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAADXRyYW5zZmVyX2Zyb20AAAAAAAAEAAAAAAAAAAdzcGVuZGVyAAAAABMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA=="]),n);this.options=n;this.fromJSON={allowance:this.txFromJSON,authorized:this.txFromJSON,approve:this.txFromJSON,balance:this.txFromJSON,burn:this.txFromJSON,burn_from:this.txFromJSON,clawback:this.txFromJSON,decimals:this.txFromJSON,mint:this.txFromJSON,name:this.txFromJSON,set_admin:this.txFromJSON,admin:this.txFromJSON,set_authorized:this.txFromJSON,symbol:this.txFromJSON,transfer:this.txFromJSON,transfer_from:this.txFromJSON}}};var Ri=100,Ii=180,qt=class{constructor(a,n){this.nodeRpcUrlsConfig=a;this.params=n}async buildChangeTrustLineXdrTx(a){let i=await new M.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(a.sender),o=(await this.getContract(Pt,a.tokenAddress).name()).result,[A,c]=o.split(":"),m=new M.Asset(A,c),u=M.Operation.changeTrust({asset:m,limit:a.limit});return new M.TransactionBuilder(i,{fee:Ri.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(u).setTimeout(Ii).build().toXDR()}async getBalanceLine(a,n){let s=(await this.getContract(Pt,n).name()).result,[o,A]=s.split(":"),c=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new M.Horizon.Server(c).loadAccount(a)).balances.find(d=>(d.asset_type==="credit_alphanum4"||d.asset_type==="credit_alphanum12")&&d.asset_code==o&&d.asset_issuer==A)}async submitTransactionStellar(a){let n=new M.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),i=M.TransactionBuilder.fromXDR(a,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await n.submitTransaction(i)}async simulateAndCheckRestoreTxRequiredSoroban(a,n){let i=new M.SorobanRpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await i.getAccount(n),o=M.TransactionBuilder.fromXDR(a,this.params.sorobanNetworkPassphrase),A=await i.simulateTransaction(o);if(M.SorobanRpc.Api.isSimulationRestore(A))return new M.TransactionBuilder(s,{fee:(+M.BASE_FEE+ +A.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(A.restorePreamble.transactionData.build()).addOperation(M.Operation.restoreFootprint({})).setTimeout(M.TimeoutInfinite).build().toXDR()}async sendTransactionSoroban(a){let n=new M.SorobanRpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),i=M.TransactionBuilder.fromXDR(a,this.params.sorobanNetworkPassphrase);return n.sendTransaction(i)}async confirmTx(a,n=15){let i=new M.SorobanRpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await Xn(()=>i.getTransaction(a),o=>o.status===M.SorobanRpc.Api.GetTransactionStatus.NOT_FOUND,n);return s[s.length-1]}getContract(a,n){let i={contractId:n,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new a(i)}};var $t=class{constructor(a,n){this.nodeRpcUrlsConfig=a;this.srb=new qt(a,n),this.sol=new jt(a,n)}};var Ue=(n=>(n.WITH_NATIVE_CURRENCY="native",n.WITH_STABLECOIN="stablecoin",n))(Ue||{}),lt=(n=>(n.INT="int",n.FLOAT="float",n))(lt||{});var Za=require("big.js"),Na=_(require("tronweb")),Da=_(require("web3"));var en=_(require("erc-20-abi"));var Bn=require("big.js"),le=class{async checkAllowance(a){let n=await this.getAllowance(a);return(0,Bn.Big)(n).gte((0,Bn.Big)(a.amount))}};var vi="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",ki="0xdac17f958d2ee523a2206206994597c13d831ec7",Mi=1e5,St=class extends le{constructor(n,i){super();this.web3=n;this.api=i;this.chainType="EVM"}getAllowance(n){let i=n.token.tokenAddress,s=n.owner,o=n.spender;return this.getAllowanceByTokenAddress(i,s,o)}getAllowanceByTokenAddress(n,i,s){return this.getContract(en.default,n).methods.allowance(i,s).call()}async getTokenBalance(n){return await this.getContract(en.default,n.token.tokenAddress).methods.balanceOf(n.account).call()}async getNativeTokenBalance(n){return await this.web3.eth.getBalance(n.account)}async approve(n){if(this.isUsdt(n.tokenAddress)&&await this.getAllowanceByTokenAddress(n.tokenAddress,n.owner,n.spender)!=="0"){let o=await this.buildRawTransactionApprove({...n,amount:"0"});await this.sendRawTransaction(o,n.chainSymbol)}let i=await this.buildRawTransactionApprove(n);return await this.sendRawTransaction(i,n.chainSymbol)}isUsdt(n){return n.toLowerCase()===ki}async buildRawTransactionApprove(n){let{tokenAddress:i,spender:s,owner:o,amount:A}=n,m=await this.getContract(en.default,i).methods.approve(s,A==null?vi:Xt(A));return{from:o,to:i,value:"0",data:m.encodeABI()}}async sendRawTransaction(n,i){let s=n,o={maxPriorityFeePerGas:null,maxFeePerGas:null};i=="POL"?s.gas=Mi:s.gas=await this.web3.eth.estimateGas(n);let{transactionHash:A}=await this.web3.eth.sendTransaction({...s,...o});return{txId:A}}getContract(n,i){return new this.web3.eth.Contract(n,i)}};var Fa=require("@project-serum/anchor"),Ee=require("@solana/web3.js");var tn=class extends le{constructor(n,i){super();this.solanaRpcUrl=n;this.api=i;this.chainType="SOLANA"}approve(n){throw new J}buildRawTransactionApprove(n){throw new J}buildAnchorProvider(n){let i=new Ee.Connection(this.solanaRpcUrl,"confirmed"),s=new Ee.PublicKey(n);return new Fa.AnchorProvider(i,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(n){throw new J}async getTokenBalance(n){let{account:i,token:s}=n;try{let o=await oe(new Ee.PublicKey(i),new Ee.PublicKey(s.tokenAddress));return(await ze(o,this.buildAnchorProvider(i))).amount.toString()}catch(o){if(o instanceof Error)return o.message.startsWith("Account does not exist"),"0";throw o}}async getNativeTokenBalance(n){return(await this.buildAnchorProvider(n.account).connection.getBalance(new Ee.PublicKey(n.account))).toString()}};var Rn=require("@stellar/stellar-sdk");var nn=class extends le{constructor(n,i,s){super();this.nodeRpcUrlsConfig=n;this.params=i;this.api=s;this.chainType="SRB"}getAllowance(){throw new J}async getTokenBalance(n){if(!n.token.originTokenAddress)throw new v("OriginTokenAddress missing");let[i,s]=n.token.originTokenAddress.split(":"),o=new Rn.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),A;try{A=await o.loadAccount(n.account)}catch(u){if(u instanceof Rn.NotFoundError)return"0";throw u}let m=A.balances.find(u=>(u.asset_type==="credit_alphanum4"||u.asset_type==="credit_alphanum12")&&u.asset_code==i&&u.asset_issuer==s);return m?.balance?I(m.balance,U[Q[n.token.chainSymbol].chainType]).toFixed():"0"}async getNativeTokenBalance(n){let A=(await new Rn.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(n.account)).balances.find(c=>c.asset_type==="native");return A?.balance?I(A.balance,U[Q[n.chainSymbol].chainType]).toFixed():"0"}approve(){throw new J}buildRawTransactionApprove(){throw new J}};var Ga=[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",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:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{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:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",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:"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:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],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"}];var Wi="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",wt=class extends le{constructor(n,i){super();this.tronWeb=n;this.api=i;this.chainType="TRX"}async getAllowance(n){let{token:{tokenAddress:i},owner:s}=n;return(await(await this.getContract(i)).methods.allowance(s,n.spender).call()).toString()}async getTokenBalance(n){return(await(await this.getContract(n.token.tokenAddress)).balanceOf(n.account).call()).toString()}async getNativeTokenBalance(n){return(await this.tronWeb.trx.getBalance(n.account)).toString()}async approve(n){let i=await this.buildRawTransactionApprove(n);return await Yt(this.tronWeb,i)}async buildRawTransactionApprove(n){let{tokenAddress:i,spender:s,owner:o,amount:A}=n,c=A==null?Wi:Xt(A),m=[{type:"address",value:s},{type:"uint256",value:c}];return this.buildRawTransaction(i,"approve(address,uint256)",m,"0",o)}async getContract(n){return await this.tronWeb.contract(Ga,n)}async buildRawTransaction(n,i,s,o,A){let c=await this.tronWeb.transactionBuilder.triggerSmartContract(n,i,{callValue:o},s,A);if(!c?.result?.result)throw new v("Unknown error: "+JSON.stringify(c,null,2));return c.transaction}};var an=class{constructor(a,n,i){this.api=a;this.nodeRpcUrlsConfig=n;this.params=i}async getAllowance(a,n){let i=await this.getChainTokenService(a.token.chainSymbol,a.owner,n).getAllowance(a);return S(i,a.token.decimals).toFixed()}async checkAllowance(a,n){return x(a.amount),W("amount",a.amount,a.token.decimals),this.getChainTokenService(a.token.chainSymbol,a.owner,n).checkAllowance(this.prepareCheckAllowanceParams(a))}async approve(a,n){return n.amount&&(x(n.amount),W("amount",n.amount,n.token.decimals)),this.getChainTokenService(n.token.chainSymbol,n.owner,a).approve(this.prepareApproveParams(n))}async buildRawTransactionApprove(a,n){return a.amount&&(x(a.amount),W("amount",a.amount,a.token.decimals)),this.getChainTokenService(a.token.chainSymbol,a.owner,n).buildRawTransactionApprove(this.prepareApproveParams(a))}async getTokenBalance(a,n){let i=await this.getChainTokenService(a.token.chainSymbol,a.account,n).getTokenBalance(a);return a.token.decimals?S(i,a.token.decimals).toFixed():i}async getNativeTokenBalance(a,n){let i=await this.getChainTokenService(a.chainSymbol,a.account,n).getNativeTokenBalance(a);return{int:i,float:S(i,U[Q[a.chainSymbol].chainType]).toFixed()}}getChainTokenService(a,n,i){switch(Q[a].chainType){case"EVM":{if(i)return new St(i,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(a);return new St(new Da.default(s),this.api)}}case"TRX":{if(i)return new wt(i,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(a),o=new Na.default({fullHost:s});return o.setAddress(n),new wt(o,this.api)}}case"SOLANA":{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(a);return new tn(s,this.api)}case"SRB":return new nn(this.nodeRpcUrlsConfig,this.params,this.api)}}prepareCheckAllowanceParams(a){return{...a,amount:I(a.amount,a.token.decimals)}}prepareApproveParams(a){return{tokenAddress:a.token.tokenAddress,owner:a.owner,spender:a.spender,chainSymbol:a.token.chainSymbol,amount:a.amount==null?void 0:(0,Za.Big)(a.amount).toFixed()}}};var Ct=class{constructor(a){this.nodeRpcUrls=a}getNodeRpcUrl(a){let n=this.nodeRpcUrls[a];if(n!==void 0)return n;throw new rt(a)}},sn=class{constructor(a,n=nt){let i=new Mt(n),s=new xt(i),o=new It(s);this.api=new Wt(o),this.tokenService=new an(this.api,a,n),this.bridge=new Lt(this.api,a,n,this.tokenService),this.pool=new zt(this.api,a,n,this.tokenService),this.params=n}async chainDetailsMap(){return this.api.getChainDetailsMap()}async tokens(){return this.api.tokens()}async tokensByChain(a){return(await this.api.getChainDetailsMap())[a].tokens}async getTransferStatus(a,n){return this.api.getTransferStatus(a,n)}async getGasBalance(a,n){return this.api.getGasBalance(a,n)}async checkAddress(){return new Promise(a=>{a({status:"OK",gasBalance:null})})}async getPendingStatusInfo(a,n,i,s){x(a);let o;n=="float"?(W("amount",a,i.decimals),o=I(a,i.decimals).toFixed()):o=a;let A=be(o,i,await V(this.api,i)),c=await V(this.api,s),m=this.getAmountFromVUsdFormatted(A,s,c),u,l=await this.api.getPendingInfo();for(let d in l[s.chainSymbol])d.toLowerCase()===s.tokenAddress.toLowerCase()&&(u=l[s.chainSymbol][d]);if(u){let d=xn(u.totalSentAmount,c),y=this.getAmountFromVUsdFormatted(A,s,d),h;return(0,de.Big)(y.int).gt(m.int)?h={min:m,max:y}:h={min:y,max:m},{pendingTxs:u.pendingTxs,pendingAmount:{int:ke(u.totalSentAmount,3,s.decimals).toFixed(0),float:S(u.totalSentAmount,3).toFixed()},estimatedAmount:h}}return{pendingTxs:0,pendingAmount:{int:"0",float:"0"},estimatedAmount:{min:m,max:m}}}async getTokenBalance(a,n){return this.tokenService.getTokenBalance(a,n)}async getNativeTokenBalance(a,n){return this.tokenService.getNativeTokenBalance(a,n)}async calculateFeePercentOnSourceChain(a,n){x(a),W("amountFloat",a,n.decimals);let i=I(a,n.decimals);if(i.eq(0))return 0;let s=be(i,n,await V(this.api,n)),o=j(s,n.decimals);return on(i,o)}async calculateFeePercentOnDestinationChain(a,n,i){x(a),W("amountFloat",a,n.decimals);let s=I(a,n.decimals);if(s.eq(0))return 0;let o=be(s,n,await V(this.api,n)),A=ct(o,i,await V(this.api,i)),c=j(o,i.decimals);return on(c,A)}async getAmountToBeReceivedAndGasFeeOptions(a,n,i,s){return x(a),W("amountToSendFloat",a,n.decimals),{amountToSendFloat:(0,de.Big)(a).toFixed(),amountToBeReceivedFloat:await this.getAmountToBeReceived(a,n,i,s),gasFeeOptions:await this.getGasFeeOptions(n,i,s)}}async getAmountToSendAndGasFeeOptions(a,n,i,s){return x(a),W("amountToBeReceivedFloat",a,i.decimals),{amountToSendFloat:await this.getAmountToSend(a,n,i,s),amountToBeReceivedFloat:(0,de.Big)(a).toFixed(),gasFeeOptions:await this.getGasFeeOptions(n,i,s)}}async getAmountToBeReceived(a,n,i,s){let o=await V(this.api,n),A=await V(this.api,i);return this.getAmountToBeReceivedFromPools(a,n,i,o,A,s)}async getAmountToBeReceivedFromChain(a,n,i,s,o,A){let c=await this.pool.getPoolInfoFromChain(n,o),m=await this.pool.getPoolInfoFromChain(i,A);return this.getAmountToBeReceivedFromPools(a,n,i,c,m,s)}getAmountToBeReceivedFromPools(a,n,i,s,o,A){x(a),W("amountToSendFloat",a,n.decimals);let c=I(a,n.decimals);if(A&&A==3){if(!n.cctpAddress||!i.cctpAddress||!n.cctpFeeShare)throw new ne("Such route does not support CCTP protocol");let u=c.mul((0,de.Big)(1).minus(n.cctpFeeShare)).round(0,de.Big.roundUp),l=ke(u,n.decimals,i.decimals).round(0);return S(l,i.decimals).toFixed()}let m=be(c,n,s);return this.getAmountFromVUsdFormatted(m,i,o).float}async getAmountToSend(a,n,i,s){let o=await V(this.api,n),A=await V(this.api,i);return this.getAmountToSendFromPools(a,n,i,o,A,s)}async getAmountToSendFromChain(a,n,i,s,o,A){let c=await this.pool.getPoolInfoFromChain(n,o),m=await this.pool.getPoolInfoFromChain(i,A);return this.getAmountToSendFromPools(a,n,i,c,m,s)}getAmountToSendFromPools(a,n,i,s,o,A){x(a),W("amountToBeReceivedFloat",a,i.decimals);let c=I(a,i.decimals);if(A&&A==3){if(!n.cctpAddress||!i.cctpAddress||!n.cctpFeeShare)throw new ne("Such route does not support CCTP protocol");let l=c.div((0,de.Big)(1).minus(n.cctpFeeShare)).round(0,de.Big.roundDown),d=ke(l,i.decimals,n.decimals).round(0);return S(d,n.decimals).toFixed()}let m=Fn(c,i,o),u=Wn(m,n,s);if((0,de.Big)(u).lte(0))throw new he;return S(u,n.decimals).toFixed()}async getGasFeeOptions(a,n,i){return bn(a.allbridgeChainId,a.chainType,n.allbridgeChainId,a.decimals,i,this.api)}getAverageTransferTime(a,n,i){return a.transferTime?.[n.chainSymbol]?.[i]??null}async getPoolInfoByToken(a){return await this.api.getPoolInfoByKey({chainSymbol:a.chainSymbol,poolAddress:a.poolAddress})}async refreshPoolInfo(a){if(a){let i=(a instanceof Array?a:[a]).map(s=>({chainSymbol:s.chainSymbol,poolAddress:s.poolAddress}));return this.api.refreshPoolInfo(i)}return this.api.refreshPoolInfo()}aprInPercents(a){return Zn(a)}async getExtraGasMaxLimits(a,n){return await Tn(a,n,this.api)}async getVUsdFromAmount(a,n,i){x(a);let s;n=="float"?(W("amount",a,i.decimals),s=I(a,i.decimals).toFixed()):s=a;let o=be(s,i,await V(this.api,i));return{int:o,float:S(o,3).toFixed()}}async getAmountFromVUsd(a,n){return this.getAmountFromVUsdFormatted(a,n,await V(this.api,n))}getAmountFromVUsdFormatted(a,n,i){x(a);let s=ct(a,n,i);if((0,de.Big)(s).lt(0))throw new he;return{int:s,float:S(s,n.decimals).toFixed()}}async swapAndBridgeFeeCalculation(a,n,i){return Ma(a,{decimals:n.decimals,feeShare:n.feeShare,poolInfo:await V(this.api,n)},{decimals:i.decimals,feeShare:i.feeShare,poolInfo:await V(this.api,i)})}async swapAndBridgeFeeCalculationReverse(a,n,i){let s=xa(a,{decimals:n.decimals,feeShare:n.feeShare,poolInfo:await V(this.api,n)},{decimals:i.decimals,feeShare:i.feeShare,poolInfo:await V(this.api,i)}),o=s.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if((0,de.Big)(o).lt(0))throw new he;return s}async getSendAmountDetails(a,n,i,s){x(a);let o;return n=="float"?(W("amount",a,i.decimals),o=I(a,i.decimals).toFixed()):o=a,Wa(o,i,await V(this.api,i),s,await V(this.api,s))}};function Fi(r){return"solanaRpcUrl"in r}var In=class{constructor(a,n=nt){let i;Fi(a)?i=new Ct({SOL:a.solanaRpcUrl,TRX:a.tronRpcUrl}):i=new Ct(a),this.service=new sn(i,n),this.bridge=this.service.bridge,this.pool=this.service.pool,this.utils=new $t(i,n),this.params=n}async chainDetailsMap(){return this.service.chainDetailsMap()}async tokens(){return this.service.tokens()}async tokensByChain(a){return this.service.tokensByChain(a)}async getTransferStatus(a,n){return this.service.getTransferStatus(a,n)}async getGasBalance(a,n){return this.service.getGasBalance(a,n)}async checkAddress(a,n,i){return await this.service.checkAddress()}async getPendingStatusInfo(a,n,i,s){return this.service.getPendingStatusInfo(a,n,i,s)}async getTokenBalance(a,n){return this.service.getTokenBalance(a,n)}async getNativeTokenBalance(a,n){return this.service.getNativeTokenBalance(a,n)}async calculateFeePercentOnSourceChain(a,n){return this.service.calculateFeePercentOnSourceChain(a,n)}async calculateFeePercentOnDestinationChain(a,n,i){return this.service.calculateFeePercentOnDestinationChain(a,n,i)}async getAmountToBeReceivedAndGasFeeOptions(a,n,i,s){return this.service.getAmountToBeReceivedAndGasFeeOptions(a,n,i,s)}async getAmountToSendAndGasFeeOptions(a,n,i,s){return this.service.getAmountToSendAndGasFeeOptions(a,n,i,s)}async getAmountToBeReceived(a,n,i,s){return this.service.getAmountToBeReceived(a,n,i,s)}async getAmountToBeReceivedFromChain(a,n,i,s,o,A){return this.service.getAmountToBeReceivedFromChain(a,n,i,s,o,A)}getAmountToBeReceivedFromPools(a,n,i,s,o,A){return this.service.getAmountToBeReceivedFromPools(a,n,i,s,o,A)}async getAmountToSend(a,n,i,s){return this.service.getAmountToSend(a,n,i,s)}async getAmountToSendFromChain(a,n,i,s,o,A){return this.service.getAmountToSendFromChain(a,n,i,s,o,A)}getAmountToSendFromPools(a,n,i,s,o,A){return this.service.getAmountToSendFromPools(a,n,i,s,o,A)}async getGasFeeOptions(a,n,i){return this.service.getGasFeeOptions(a,n,i)}getAverageTransferTime(a,n,i){return this.service.getAverageTransferTime(a,n,i)}async getPoolInfoByToken(a){return this.service.getPoolInfoByToken(a)}async refreshPoolInfo(a){return this.service.refreshPoolInfo(a)}aprInPercents(a){return this.service.aprInPercents(a)}async getExtraGasMaxLimits(a,n){return this.service.getExtraGasMaxLimits(a,n)}async getVUsdFromAmount(a,n,i){return this.service.getVUsdFromAmount(a,n,i)}async getAmountFromVUsd(a,n){return this.service.getAmountFromVUsd(a,n)}async swapAndBridgeFeeCalculation(a,n,i){return this.service.swapAndBridgeFeeCalculation(a,n,i)}async swapAndBridgeFeeCalculationReverse(a,n,i){return this.service.swapAndBridgeFeeCalculationReverse(a,n,i)}async getSendAmountDetails(a,n,i,s){return this.service.getSendAmountDetails(a,n,i,s)}};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