UNPKG

astros-bridge-sdk-dev

Version:
205 lines (204 loc) 5.36 kB
import { createSwapFromSuiMoveCalls as m, swapFromSolana as h, addresses as w, swapFromEvm as k } from "@mayanfinance/swap-sdk"; import { Contract as T, parseUnits as b } from "ethers"; import _ from "axios"; const v = [ "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 y(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 m( r, e, o, d, null, n ), f = await t.sui.signTransaction({ transaction: i }); s = (await n.executeTransactionBlock({ transactionBlock: f.bytes, signature: [f.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 h( 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 f = new T( i.realOriginContractAddress || i.contract, v, n.signer ), l = await f.allowance( e, w.MAYAN_FORWARDER_CONTRACT ), u = b( String(r.effectiveAmountIn), i.decimals ); if (l < u && !await (await f.approve( w.MAYAN_FORWARDER_CONTRACT, u )).wait()) throw new Error("Failed to approve allowance"); } const p = await k( 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 g = { /** Base URL for the bridge API */ baseUrl: "https://open-aggregator-api.naviprotocol.io", /** API key for authentication (optional) */ apiKey: "" }, c = _.create({ baseURL: g.baseUrl, timeout: 3e4 }); function R(a) { Object.assign(g, a), c.defaults.baseURL = g.baseUrl, g.apiKey ? c.defaults.headers.common["x-navi-token"] = g.apiKey : delete c.defaults.headers.common["x-navi-token"]; } async function F() { return (await c.get("/chains/list")).data.data.chains; } async function O(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 C(a, e) { return (await c.get("/coins/search", { params: { chain: a, keyword: e, page: 1, pageSize: 30, scene: "bridge" } })).data.data.list; } async function B(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 U(a) { return (await c.get(`/bridge-swap/transaction/${a}`)).data.data.transaction; } async function D(a, e = 1, o = 10) { return (await c.get("/bridge-swap/transactions/list", { params: { address: a, page: e, limit: o } })).data.data; } async function N(a, e, o, t, d) { const r = (/* @__PURE__ */ new Date()).toISOString(), s = await y(a, e, o, t, d), n = (/* @__PURE__ */ 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 }; } export { R as config, B as getQuote, F as getSupportChains, O as getSupportTokens, U as getTransaction, D as getWalletTransactions, C as searchSupportTokens, N as swap }; //# sourceMappingURL=index.esm.js.map