UNPKG

astros-bridge-sdk-dev

Version:
3 lines (2 loc) 4.07 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("@mayanfinance/swap-sdk"),m=require("ethers"),h=require("axios"),T=["function allowance(address owner, address spender) view returns (uint256)","function approve(address spender, uint256 amount) returns (bool)","function balanceOf(address account) view returns (uint256)"];async function k(a,e,o,t,d){if(!a)throw new Error("No route found");const r=a.info_for_bridge;let s;if(a.from_token.chainId===1999){if(!t.sui)throw new Error("Sui wallet connection not found");const n=t.sui.provider,i=await g.createSwapFromSuiMoveCalls(r,e,o,d,null,n),u=await t.sui.signTransaction({transaction:i});s=(await n.executeTransactionBlock({transactionBlock:u.bytes,signature:[u.signature],options:{showEffects:!0,showEvents:!0,showBalanceChanges:!0}})).digest,await n.waitForTransaction({digest:s})}else if(a.from_token.chainId===0){if(!t.solana)throw new Error("Solana wallet connection not found");const n=t.solana;s=(await g.swapFromSolana(r,e,o,d,n.signTransaction,n.connection,n.extraRpcs,n.sendOptions,n.jitoOptions)).signature}else{if(!t.evm)throw new Error("EVM wallet connection not found");const n=t.evm,i=r.fromToken;if(i.standard==="erc20"){const u=new m.Contract(i.realOriginContractAddress||i.contract,T,n.signer),w=await u.allowance(e,g.addresses.MAYAN_FORWARDER_CONTRACT),f=m.parseUnits(String(r.effectiveAmountIn),i.decimals);if(w<f&&!await(await u.approve(g.addresses.MAYAN_FORWARDER_CONTRACT,f)).wait())throw new Error("Failed to approve allowance")}const p=await g.swapFromEvm(r,e,o,d,n.signer,n.permit,n.overrides,null);s=typeof p=="string"?p:p.hash,await n.waitForTransaction({hash:s,confirmations:3})}return await new Promise(n=>{setTimeout(()=>{n(!0)},2e3)}),s}const l={baseUrl:"https://open-aggregator-api.naviprotocol.io",apiKey:""},c=h.create({baseURL:l.baseUrl,timeout:3e4});function b(a){Object.assign(l,a),c.defaults.baseURL=l.baseUrl,l.apiKey?c.defaults.headers.common["x-navi-token"]=l.apiKey:delete c.defaults.headers.common["x-navi-token"]}async function _(){return(await c.get("/chains/list")).data.data.chains}async function S(a,e=1,o=100){return(await c.get("/coins/support-token-list",{params:{chain:a,page:e,pageSize:o,scene:"bridge"}})).data.data.list}async function v(a,e){return(await c.get("/coins/search",{params:{chain:a,keyword:e,page:1,pageSize:30,scene:"bridge"}})).data.data.list}async function y(a,e,o,t){const r=(await c.get("/bridge-swap/find_routes",{params:{from:a.address,to:e.address,fromChain:a.chainId,toChain:e.chainId,amount:o,slippageBps:t==null?void 0:t.slippageBps,referrerBps:t==null?void 0:t.referrerBps}})).data.data;return r.routes.forEach(s=>{s.from_token.chain&&(s.from_token.chainId=parseInt(s.from_token.chain)),s.to_token.chain&&(s.to_token.chainId=parseInt(s.to_token.chain))}),r}async function A(a){return(await c.get(`/bridge-swap/transaction/${a}`)).data.data.transaction}async function I(a,e=1,o=10){return(await c.get("/bridge-swap/transactions/list",{params:{address:a,page:e,limit:o}})).data.data}async function E(a,e,o,t,d){const r=new Date().toISOString(),s=await k(a,e,o,t,d),n=new Date().toISOString(),i={address:a.from_token.address,symbol:a.from_token.symbol,decimals:a.from_token.decimals},p={address:a.to_token.address,symbol:a.to_token.symbol,decimals:a.to_token.decimals};return{id:s,status:"processing",lastUpdateAt:n,sourceChainId:a.from_token.chainId,destChainId:a.to_token.chainId,walletSourceAddress:e,walletDestAddress:o,totalFeeAmount:a.total_fee,sourceToken:a.from_token,destToken:a.to_token,bridgeFromAmount:a.amount_in,bridgeToAmount:a.amount_out,bridgeStartAt:r,bridgeEndAt:n,bridgeFeeAmount:"0",bridgeSourceTxHash:s,bridgeDestTxHash:"",bridgeRefundTxHash:"",bridgeStatus:"processing",bridgeProvider:"mayan",bridgeFromToken:i,bridgeToToken:p,hasSwap:!1}}exports.config=b;exports.getQuote=y;exports.getSupportChains=_;exports.getSupportTokens=S;exports.getTransaction=A;exports.getWalletTransactions=I;exports.searchSupportTokens=v;exports.swap=E; //# sourceMappingURL=index.cjs.js.map