UNPKG

@pontem/liquidswap-widget

Version:
1,541 lines 1.52 MB
import { o as D, c as m, r as PM, D as YM, b as bM, d as W, t as QA, a as n, e, u as M, f as C, g as z, w as R, h as BA, i as x, j as gM, k as st, l as ct, s as nM, m as K, n as sA, S as CA, p as hA, q as VM, v as mM, x as YA, y as cM, z as lM, A as uM, B as bA, C as UA, E as tt, F as OA, G as V, H as X, I as gt, J as TM, K as kA, L as dM, M as SA, N as xM, O as zM, P as fA, Q as H, R as XM, T as ZM, U as J, V as KM, W as xt, X as zt, Y as FA, Z as _M, _ as ot, $ as RA, a0 as Ut, a1 as vA, a2 as LM, a3 as GA, a4 as HA, a5 as qM, a6 as JA, a7 as NM, a8 as $M, a9 as WA, aa as tA, ab as MA, ac as PA, ad as VA, ae as XA, af as MM, ag as ZA, ah as KA, ai as AA, aj as _A, ak as oA, al as qA, am as $A, an as to, ao as Mo, ap as UM, aq as Ao, ar as oo, as as ro, at as eo, au as io, av as ao, aw as go } from "./vendor-b6cd281f.js"; import "./__commonjsHelpers__-c5d32002.js"; const no = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzk4MjhfODM5MDApIj4KPHBhdGggZD0iTTE1IDRIMjBWOSIgc3Ryb2tlPSIjRDRDNEVEIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTQgMTBMMjAgNCIgc3Ryb2tlPSIjRDRDNEVEIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNOSAyMEw0IDIwTDQgMTUiIHN0cm9rZT0iI0Q0QzRFRCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEwIDE0TDQgMjAiIHN0cm9rZT0iI0Q0QzRFRCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF85ODI4XzgzOTAwIj4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=", rA = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEzLjM1NTIgOS42NTUwMkMxNC4wMzIxIDguMTUwNzUgMTYuMTM2NSA4LjA2NjU0IDE2LjkzMTUgOS41MTE5MUwyNC4zNjk4IDIzLjAzNjJDMjUuMTAyOSAyNC4zNjkxIDI0LjEzODYgMjYgMjIuNjE3NCAyNkg5LjA5MzExQzcuNjQxNzkgMjYgNi42NzM3IDI0LjUwMjggNy4yNjkyNiAyMy4xNzkzTDEzLjM1NTIgOS42NTUwMloiIGZpbGw9IiNFNUU0RkEiIGZpbGwtb3BhY2l0eT0iMC4yIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjMuMDU1NSAyMy43NTkxTDE1LjYxNzEgMTAuMjM0OEMxNS40MTg0IDkuODczNDUgMTQuODkyMyA5Ljg5NDUgMTQuNzIzMSAxMC4yNzA2TDguNjM3MTUgMjMuNzk0OUM4LjQ4ODI1IDI0LjEyNTcgOC43MzAyOCAyNC41IDkuMDkzMTEgMjQuNUgyMi42MTc0QzIyLjk5NzcgMjQuNSAyMy4yMzg4IDI0LjA5MjMgMjMuMDU1NSAyMy43NTkxWk0xNi45MzE1IDkuNTExOTFDMTYuMTM2NSA4LjA2NjU0IDE0LjAzMjEgOC4xNTA3NSAxMy4zNTUyIDkuNjU1MDJMNy4yNjkyNiAyMy4xNzkzQzYuNjczNyAyNC41MDI4IDcuNjQxNzkgMjYgOS4wOTMxMSAyNkgyMi42MTc0QzI0LjEzODYgMjYgMjUuMTAyOSAyNC4zNjkxIDI0LjM2OTggMjMuMDM2MkwxNi45MzE1IDkuNTExOTFaIiBmaWxsPSIjRTVFNEZBIi8+Cjwvc3ZnPgo=", eA = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggb3BhY2l0eT0iMC4yIiBkPSJNMjUgMjFDMTQgMjEgMTEuMDAwMiAxNS41IDExIDZMNy41IDhMNyAxMy41VjIzTDkgMjUuNUgyM0wyNSAyMy41VjIxWiIgZmlsbD0iI0U1RTRGQSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjc3NzcgNy41SDIyQzIzLjM4MDcgNy41IDI0LjUgOC42MTkyOSAyNC41IDEwVjIwLjI0NjFDMTkuNDEyIDIwLjE2NDcgMTYuMzE3IDE4LjgzMiAxNC40NTI2IDE2LjU4MzhDMTIuNzEzOSAxNC40ODcgMTEuOTI4NyAxMS40NjA5IDExLjc3NzcgNy41Wk0xMC4yNzY2IDcuNUMxMC40MjcxIDExLjYyNjQgMTEuMjQ0MiAxNS4wNjQ2IDEzLjI5OCAxNy41NDEzQzE1LjU1MzUgMjAuMjYxMSAxOS4xNjI0IDIxLjY2NDUgMjQuNSAyMS43NDYyVjIyQzI0LjUgMjMuMzgwNyAyMy4zODA3IDI0LjUgMjIgMjQuNUgxMEM4LjYxOTI5IDI0LjUgNy41IDIzLjM4MDcgNy41IDIyVjEwQzcuNSA4LjYxOTI5IDguNjE5MjkgNy41IDEwIDcuNUgxMC4yNzY2Wk0xMS43NTAyIDZIMTBDNy43OTA4NiA2IDYgNy43OTA4NiA2IDEwVjIyQzYgMjQuMjA5MSA3Ljc5MDg2IDI2IDEwIDI2SDIyQzI0LjIwOTEgMjYgMjYgMjQuMjA5MSAyNiAyMlYxMEMyNiA3Ljc5MDg2IDI0LjIwOTEgNiAyMiA2SDExLjc1MDJaIiBmaWxsPSIjRTVFNEZBIi8+Cjwvc3ZnPgo=", co = { name: "Tooltip", props: { tooltipText: { default: "Tooltip text" }, position: { default: "top" } } }, No = (A, t) => { const o = A.__vccOpts || A; for (const [r, i] of t) o[r] = i; return o; }, Io = ["tooltip", "position"]; function jo(A, t, o, r, i, g) { return D(), m("span", { tooltip: o.tooltipText, position: o.position, class: "tooltip__custom" }, [ PM(A.$slots, "default") ], 8, Io); } const bt = /* @__PURE__ */ No(co, [["render", jo]]); function at(A) { return YM.isDecimal(A) ? A : new YM(A === void 0 ? 0 : A); } function Qt(A) { return at(10).pow(at(A).abs()); } const Eo = /^[-+]?[0-9A-Fa-f]+\.?[0-9A-Fa-f]*?$/; function uo(A, t = { leadingZero: !0 }) { if (typeof A != "string") return !1; let o = A; if (t.leadingZero) if (A.startsWith("0x")) o = o.substring(2); else return !1; return Eo.test(o); } function iA(A, t = { leadingZero: !0 }) { if (typeof A != "string") return !1; let o = A.replace(/\s/g, ""); const r = o.match(/</g)?.length ?? 0, i = o.match(/>/g)?.length ?? 0; if (r !== i) return !1; const a = o.match(/(<.+>)$/)?.[1]?.match( /(\w+::\w+::\w+)(?:<.*?>(?!>))?/g ); if (a && (o = o.slice(0, o.indexOf("<")), !a.every((I) => { const N = I.match(/</g)?.length ?? 0, E = I.match(/>/g)?.length ?? 0; let u = I; return N !== E && (u = u.slice(0, -(E - N))), iA(u, t); }))) return !1; const j = o.split("::"); return j.length !== 3 ? !1 : uo(j[0], t) && j[1].length >= 1 && j[2].length >= 1; } const Gt = 0, wM = 1, aA = 2; function OM(A, t) { return A === t ? Gt : A < t ? wM : aA; } function To(A, t) { const o = OM(A.length, t.length); if (o != Gt) return o; let r = 0; for (; r < A.length && r < t.length; ) { const i = OM(A.charCodeAt(r), t.charCodeAt(r)); if (i != Gt) return i; r++; } return Gt; } function Do(A, t) { if (A.startsWith("0x") && (A = A.substring(2)), A.length != 64) for (; A.length < 64; ) A = "0" + A; if (t.startsWith("0x") && (t = t.substring(2)), t.length != 64) for (; t.length < 64; ) t = "0" + t; const o = bM.Buffer.from(A, "hex"), r = bM.Buffer.from(t, "hex"); for (let i = 0; i < 32; i++) { if (o[i] < r[i]) return wM; if (o[i] > r[i]) return aA; } return Gt; } function po(A, t) { const o = A.split("::").reverse(), r = t.split("::").reverse(), i = o.pop(), g = r.pop(); for (let a = 0; a < 2; a++) { const j = To(o[a], r[a]); if (j != Gt) return j; } return Do(i, g); } function Ft(A, t) { return po(A, t) == wM; } function yM(A) { if (typeof A != "object") return A; for (const t in A) { const o = t.replace(/([A-Z])/g, function(r) { return "_" + r.toLowerCase(); }); o != t && A.hasOwnProperty(t) && (A[o] = A[t], delete A[t]), typeof A[o] == "object" && (A[o] = yM(A[o])); } return A; } function gA(A) { return JSON.parse(A.message).message.split("Validation Code:").pop().split("_").join(" ").toLowerCase(); } function mo() { } const lo = 1e4, xo = 1e3, zo = 2e3, IM = 3e3, Lo = 3e3, yt = process.env.VUE_APP_MODULES_ACCOUNT || "0x190d44266241744264b964a37b8f09863167a12d3e70cda39376cfb4e3561e12", ht = process.env.VUE_APP_MODULES_V05_ACCOUNT || "0x163df34fccbf003ce219d3f1d9e70d140b60622cb9dd47599c25fb2f797ba6e", kt = process.env.VUE_APP_RESOURCES_ACCOUNT || "0x05a97986a9d031c4567e15b797be516910cfcb4156312482efc6a19c0a30c948", vt = process.env.VUE_APP_RESOURCES_V05_ACCOUNT || "0x61d2c22a6cb7831bee0f48363b0eec92369357aece0d1142062f7d5d85c7bef8", wo = process.env.VUE_APP_COINS_ACCOUNT || "0x43417434fd869edee76cca2a4d2301e528a1551b1d719b75c350c3c97d15b8b9", yo = "0x1::coin::CoinInfo", Qo = "0x1::coin::CoinStore", Ht = `${yt}::curves::Uncorrelated`, Jt = `${ht}::curves::Uncorrelated`, St = `${yt}::curves::Stable`, ft = `${ht}::curves::Stable`, kM = 7e3, DM = { Scripts: `${yt}::scripts_v2`, Faucet: `${wo}::faucet`, LiquidityPool: `${kt}::liquidity_pool`, CoinInfo: `${yo}`, CoinStore: `${Qo}` }, Bo = "devops.mom", so = {}.VITE_LIQUIDSWAP_API_URL_PROD || "https://api.liquidswap.com", Co = {}.VITE_LIQUIDSWAP_API_URL_DEMO || "https://liquidswap-api.dev.devops.mom", ho = window.location.host.endsWith( Bo ) ? Co : so, nA = 1, Vt = 2, Zt = "0x1::aptos_coin::AptosCoin", SM = "0x73eb84966be67e4697fc5ae75173ca6c35089e802650f75422ab49a8729704ec::coin::DooDoo", Yo = [ { id: nA, title: "Aptos Mainnet", shortTitle: "Aptos", restUrl: "https://api.mainnet.aptoslabs.com/v1", defaultToken: "0x1::aptos_coin::AptosCoin", modules: DM }, { id: Vt, title: "Aptos Testnet", shortTitle: "Aptos", restUrl: "https://api.testnet.aptoslabs.com/v1", defaultToken: "0x1::aptos_coin::AptosCoin", modules: DM } ], dt = nA, ut = 0, nt = 0.5, bo = [ut, nt], Uo = "https://chrome.google.com/webstore/detail/pontem-aptos-wallet/phkbamefinggmakgklpkljjmgibohnba", cA = "https://control.pontem.network/api", wt = "AG-BYJWTTY7YBILH4XFSKYABAUYOHZCIM8QN"; function Yt(A, ...t) { const o = Array.isArray(t[t.length - 1]) ? t.pop() : []; let i = [A, ...t].filter(Boolean).join("::"); return o && o.length && (i += `<${o.join(",")}>`), i; } function jM(A) { return A.split("::")[0]; } function $(A, t) { return t === nt ? A === "stable" ? ft : Jt : A === "unstable" || A === "uncorrelated" ? Ht : St; } function Kt(A) { if (A === St || A === ft) return "stable"; if (A === Ht || A === Jt) return "uncorrelated"; throw new Error("Wrong curve type passed"); } function Oo(A) { if (A === void 0 || A === ut) return yt; if (A === nt) return ht; throw new Error("Unknown contract version requested"); } function AM(A) { if (A === void 0 || A === ut) return kt; if (A === nt) return vt; throw new Error("Unknown contract version requested"); } function ko(A) { if ([ft, Jt].includes(A)) return nt; if ([St, Ht].includes(A)) return ut; throw new Error(`Unknown curve passed: ${A}`); } const So = { class: "curve-container" }, fo = /* @__PURE__ */ e("div", { class: "label" }, [ /* @__PURE__ */ e("span", { class: "label-text" }, "Curve Type") ], -1), Fo = { class: "curve-container__curve" }, Ro = { key: 0, style: { marginTop: "-2px", marginBottom: "2px" }, src: rA, alt: "stable curve" }, vo = { key: 1, src: eA, alt: "uncorrelated curve" }, Go = /* @__PURE__ */ e("i", { class: "pi pi-info-circle", style: { paddingTop: "2px" } }, null, -1), Ho = /* @__PURE__ */ W({ __name: "CurveInfo", props: { type: null, version: null }, setup(A) { const t = A, { type: o, version: r } = QA(t), i = n(() => $("stable", r.value)), g = n( () => o.value === i.value ? "stable" : "uncorrelated" ); return (a, j) => (D(), m("div", So, [ fo, e("div", Fo, [ M(o) === M(i) ? (D(), m("img", Ro)) : (D(), m("img", vo)), e("p", null, C(M(o) === M(i) ? "Stable" : "Uncorrelated"), 1), z(bt, { position: "top-left", "tooltip-text": `Using formula optimized for ${M(g)} tokens swaps` }, { default: R(() => [ Go ]), _: 1 }, 8, ["tooltip-text"]) ]) ])); } }); function Wt(A) { const t = { 1: "https://api.mainnet.aptoslabs.com/v1", 2: "https://api.testnet.aptoslabs.com/v1", // 4: 'https://testnet-node.devops.mom/v1', 33: "https://fullnode.devnet.aptoslabs.com/v1" }; if (!Object.keys(t).includes(A)) throw new Error("Unknown network id"); return t[A]; } const fM = () => window.matchMedia("screen and (max-width: 768px)").matches, Pt = ({ nodeUrl: A, nodeOptions: t, networkOptions: o }) => new CA({ nodeUrl: A, nodeOptions: t, networkOptions: o }), it = BA(() => { const A = x(!1), t = x("pending"), o = x(null), r = x(null), i = x(null), g = x(Pt({ nodeUrl: Wt(`${dt}`), nodeOptions: { TOKEN: wt, WITH_CREDENTIALS: !0, HEADERS: { API_KEY: wt } }, networkOptions: { resourceAccount: kt, moduleAccount: yt, resourceAccountV05: vt, moduleAccountV05: ht, modules: { CoinStore: "0x1::coin::CoinStore", CoinInfo: "0x1::coin::CoinInfo", Scripts: `${yt}::scripts_v2` } } })), a = g.value.client, j = g.value.curves, c = g.value.networkOptions, I = c.modules, N = gM( "pontem", { account: void 0, defaultToken: Zt, reset: !1, isMobile: fM() }, void 0, { serializer: hA.object } ), E = x(dt), u = st(Yo), l = ct.useWalletProviderStore(), { account: d, network: p, wallet: L } = nM(l), y = x(), U = x(), k = n(() => A.value ? y.value : d.value?.address), h = n(() => A.value ? U.value?.name : p.value?.name), _ = n( () => A ? U.value?.chainId : p.value?.chainId || `${dt}` ), Z = n( () => u.find((f) => f.id === E.value) ), T = n(() => N.value.defaultToken), O = n(() => N.value.account), w = n(() => A.value ? "Pontem" : L.value?.adapter.name), b = st({ coinList: !1, connectWallet: !1, invalidNetwork: !1, swapConfirm: !1, priceImpact: !1 }); function s() { N.value.defaultToken = Zt, k.value ? (w.value.toLowerCase() !== "pontem" ? h.value.toLowerCase() === ct.WalletAdapterNetwork.Mainnet ? (E.value = dt, g.value = Pt({ nodeUrl: Wt(`${dt}`), nodeOptions: { TOKEN: wt, WITH_CREDENTIALS: !0, HEADERS: { API_KEY: wt } }, networkOptions: { resourceAccount: kt, moduleAccount: yt, resourceAccountV05: vt, moduleAccountV05: ht } })) : h.value.toLowerCase().indexOf(ct.WalletAdapterNetwork.Testnet) !== -1 ? (E.value = Vt, g.value = Pt({ nodeUrl: Wt(`${Vt}`), nodeOptions: { TOKEN: wt, WITH_CREDENTIALS: !0, HEADERS: { API_KEY: wt } }, networkOptions: { resourceAccount: kt, moduleAccount: yt, resourceAccountV05: vt, moduleAccountV05: ht } })) : E.value = 0 : h.value.toLowerCase().indexOf(ct.WalletAdapterNetwork.Testnet) !== -1 ? (E.value = Vt, g.value = Pt({ nodeUrl: Wt(`${Vt}`), nodeOptions: { TOKEN: wt, WITH_CREDENTIALS: !0, HEADERS: { API_KEY: wt } }, networkOptions: { resourceAccount: kt, moduleAccount: yt, resourceAccountV05: vt, moduleAccountV05: ht } })) : _.value !== void 0 && !isNaN(parseInt(_.value)) && E.value !== parseInt(_.value) && (E.value = parseInt(_.value), parseInt(_.value) === dt && (g.value = Pt({ nodeUrl: Wt(`${dt}`), nodeOptions: { TOKEN: wt, WITH_CREDENTIALS: !0, HEADERS: { API_KEY: wt } }, networkOptions: { resourceAccount: kt, moduleAccount: yt, resourceAccountV05: vt, moduleAccountV05: ht } }))), E.value === dt ? b.invalidNetwork = !1 : b.invalidNetwork = !0, N.value.account = { address: k.value, type: `${w.value}` }, N.value.defaultToken = Zt) : (b.invalidNetwork = !1, N.value.account = void 0); } K([A, y, U, p, d, _, w, k, h], () => { s(); }); function B(f) { b[f] = !0; } return window.addEventListener("resize", () => { N.value.isMobile = fM(); }), { sdk: g, client: a, curves: j, defaultToken: T, network: Z, account: O, networkId: sA(E), dialogs: b, showDialog: B, modules: I, networkOptions: c, insideNativeWallet: A, dappWalletAccount: y, dappNetworkData: U, dappStatusTransaction: t, dappTransactionHash: o, walletName: w, promotedToken: r, feeData: i }; }), NA = { // layerzero: 'lz', wormhole: "wh", celer: "cl", amnis: "am" }; function Jo(A) { return `${NA[A.source] ?? ""}${A.symbol}`; } const QM = { layerzero: "Layer Zero", wormhole: "Wormhole", chainx: "ChainX", celer: "Celer", multichain: "Multichain", amnis: "Amnis" }; function Wo(A) { const t = QM[A.source] ?? ""; return t.length ? `${t} • ${A.name}` : `${A.name}`; } function oM(A) { const t = QM[A.source] ?? ""; return t.length ? `${A.symbol} • ${t}` : `${A.symbol}`; } function IA(A) { return QM[A.source] ?? ""; } const Po = Object.values(NA); function Vo(A) { if (!A) return ""; for (const t of Po) if (A.startsWith(t)) return A.substring(t.length); return A; } const jA = { /** Pools */ poolsRegistered: "/pools/registered", /** Coins */ coinsRegistered: "/coins/registered" }, Xo = { "Content-Type": "application/json", Accept: "application/json" }, Zo = 5e3; async function EA(A, t = {}) { const { method: o = "GET", headers: r = {}, ...i } = t; return (await VM(`${ho}${A}`, { headers: { ...Xo, ...r }, method: o, timeout: Zo, ...i })).data; } async function Ko(A) { const t = { params: A }; try { return await EA( jA.coinsRegistered, t ); } catch (o) { return console.log("getRegisteredCoins error:", o), []; } } async function _o(A) { try { return await EA(jA.poolsRegistered, { params: A }); } catch (t) { return console.log("getRegisteredPools error:", t), []; } } const FM = ["import", "pool"], jt = mM("tokensStore", () => { const A = it(), { client: t, modules: o } = it(), r = st({}), i = x(!1), g = gM( "customTokens", { tokens: [], version: 1 }, window.localStorage, { writeDefaults: !0 } ), a = x([ { source: "pontem", name: "Aptos Coin", chainId: dt, decimals: 8, symbol: "APT", type: Zt } ]), j = /* @__PURE__ */ new Set([Zt]); function c(T) { a.value.push(T), T?.caution || j.add(T.type); } function I(T) { return j.has(T); } async function N() { const T = await Ko({ networkId: dt }); return T.forEach(c), await Z(T, A.network.value?.id); } async function E() { return await Promise.all([ u(), N() ]); } async function u() { if (g.value) try { const { tokens: T } = g.value; if (!T) return; const O = T.filter((w) => FM.includes(w.source)); return await Promise.all( O.map((w) => d(w)) ); } catch (T) { console.error("tokensStore:loadFromLocalStorage", T); } finally { i.value = !0; } } function l(T, O) { const w = Object.keys(T).filter( (s) => FM.includes(T[s].source) ); if (!O && w.length == 0) return; let { version: b } = g.value; b = b ?? "1", g.value = { version: b, tokens: w.map((s) => T[s]) }; } K(r, (T) => { l(T); }); const d = async (T) => { const O = Yt(o.CoinInfo, [T.type]), w = await t.getAccountResource( jM(T.type), O ); if (!w) return; const b = { type: T.type, name: w.data.name, symbol: w.data.symbol, decimals: +w.data.decimals, chainId: T.chainId, source: T.source, order: T.order }; return y(b, { rewrite: !0 }); }, p = n( () => (T) => T ? r[T] : void 0 ); function L(T) { return T && r[T] ? r[T] : void 0; } async function y(T, { rewrite: O = !1 }) { const { type: w } = T; return !O && r[w] ? (!r[w].order && YA(T?.order) && (r[w].order = T.order), r[w]) : (T?.unsafe || (r[w] = { type: w, chainId: T.chainId, // * address: T.address, // * decimals: +T.decimals, // * name: T.name, // * symbol: T.symbol, // * source: T.source, order: T.order || 1e3, caution: T.caution || !1, alias: Jo(T), title: Wo(T), logo: T.logo_url || "" }), r[w]); } function U(T, O) { if (r[T]) return O ? { cancel: mo, request: Promise.resolve(r[T]) } : Promise.resolve(r[T]); const w = t.getAccountResource( jM(T), Yt(o.CoinInfo, [T]) ); return (O ? w.request : w).then((s) => { if (!s) return; const { data: B } = s; return y( { type: T, name: B.name, symbol: B.symbol, decimals: +B.decimals, chainId: A.networkId.value, caution: !0, source: "import", order: 1e3 }, { rewrite: !1 } ); }), O ? { request: w.request, cancel: w.cancel } : w; } async function k(T, O) { if (r[T] && !O) return r[T]; const w = Yt(o.CoinInfo, [T]), b = await t.getAccountResource( jM(T), w ); return b ? { type: T, chainId: A.networkId.value, name: b.data.name, symbol: b.data.symbol, decimals: +b.data.decimals, caution: !0, source: "import" } : void 0; } const h = n( () => Object.keys(r).filter((T) => r[T].source === "import").map((T) => L(T)).filter(Boolean) ); function _(T) { delete r[T.type], l(r, !0); } function Z(T, O) { const w = T.filter((b) => b.chainId === O).map( (b) => y(b, { // safe: true, rewrite: !0 }) ); return Promise.all(w); } return K( A.network, async (T) => { T && await Z(a.value, T.id); }, { immediate: !0 } ), { getToken: L, tokens: r, token: p, registerToken: y, searchToken: U, getTokenInfo: k, importedTokens: h, removeToken: _, isReady: i, isTokenVerified: I, fetchCoinsList: N, fetchCoinsData: E }; }); function Xt(A, t, o, r) { const [i, g] = Ft(A, t) ? [A, t] : [t, A], a = Oo(r); return Yt( Yt(a, "liquidity_pool", "LiquidityPool"), [i, g, o] ); } function qo(A, t, o, r) { const [i, g] = Ft(A, t) ? [A, t] : [t, A], a = AM(r); return Yt( a, "lp_coin", "LP", [i, g, o] ); } function $o(A) { return Yt(DM.CoinInfo, [A]); } function tr(A) { return A.length === 0 ? [] : A.split("<")[2].split(">")[0].replaceAll(" ", "").split(","); } function Mr(A, t) { if (!A || !t) return ""; const o = jt(), [r, i] = Ft(A, t) ? [A, t] : [t, A], g = o.getToken(r), a = o.getToken(i); if (!g || !a) return ""; const { alias: j } = g, { alias: c } = a; return `${j}/${c}`; } const qt = mM("poolsStore", () => { const A = it(), { client: t, sdk: o } = A, r = x(!0), i = st({}), g = st({}), a = x(!1), j = { stable: /* @__PURE__ */ new Set(), uncorrelated: /* @__PURE__ */ new Set() }, c = gM("pontemPools", { pools: [], version: 1 }, window.localStorage, { writeDefaults: !0 }), I = x([]); async function N() { const T = await _o({ networkId: dt }); T && U(T); } cM(() => E()); async function E() { if (c.value) try { const { pools: T } = c.value; if (!T) return; for (const O of T) (O.addedX > 0 || O.addedY > 0) && await L(O); a.value = !0; } catch { } } async function u() { if (!A.account.value?.address) return; const { networkId: T } = A; (await t.getAccountResources(A.account.value.address)).forEach((w) => { if (w.type.indexOf("::stake::") !== -1 || w.type.indexOf("lp_coin") === -1) return; const [b, s, B] = tr(w.type), f = ko(B), Mt = Xt(b, s, B, f); i[Mt] || y( { coinX: b, coinY: s, curve: B, networkId: M(T), contract: f }, {} ), i[Mt] && (i[Mt].lp = +w.data.coin.value); }); } function l(T, O) { const w = Object.keys(T).filter((s) => T[s].addedX > 0 || T[s].addedY > 0); if (!O && w.length == 0) return; let { version: b } = c.value; b = b ?? "1", c.value = { version: b, pools: w.map((s) => T[s]) }; } K(i, (T) => l(T)); async function d(T, O, w) { const b = AM(w), s = await t.getAccountResource(b, T); s && (O.reserveX = +s.data.coin_x_reserve.value, O.reserveY = +s.data.coin_y_reserve.value); } async function p(T, O, w) { try { const b = AM(w), s = await t.getAccountResource(b, T); if (!s || !s?.data?.supply?.vec[0]) return; O.lp = +s.data.supply.vec[0].integer.vec[0].value; } catch { } } const L = async (T) => { const { coinX: O, coinY: w, curve: b, contract: s } = T, B = $("stable", s), f = b === "stable" || b === B ? B : $("unstable", s), Mt = Xt(O, w, f, s), et = $o(qo(O, w, f, s)); return await Promise.all([d(Mt, T, s), p(et, T, s)]), T; }; async function y(T, { rewrite: O = !1, isDefault: w = !1, lazy: b = !0 }) { const { coinX: s, coinY: B, curve: f, networkId: Mt, contract: et } = T, Ct = Ft(s, B), [Et, pt] = Ct ? [s, B] : [B, s], mt = ["stable", "uncorrelated"].includes(f) ? $(f === "stable" ? "stable" : "unstable", et) : f, Lt = Xt(Et, pt, mt, et); let q = !1; try { const At = await o.value.Swap.getLiquidityPoolResource({ fromToken: Et, toToken: pt, curveType: f, version: et }); At && At.liquidityPoolResource && (q = !0); } catch (At) { console.error("Error loading the pool:", At); } if (!q) return; if (!O && i[Lt]) return i[Lt]; w && ["stable", "uncorrelated"].includes(f) && j[f].add(`${Et}-${pt}-${et}`); const F = Mr(Et, pt), Y = st({ title: F, coinX: Et, coinY: pt, curve: mt, reserveX: 0, reserveY: 0, addedX: 0, addedY: 0, lp: 0, networkId: Mt, isDefault: w, contract: et }); i[Lt] = Y; const G = `${F}-${f}-${et}`; return g[G] = Lt, b ? L(Y) : await L(Y), Y; } function U(T) { if (!T || !Array.isArray(T)) return; const O = { rewrite: !0, isDefault: !0 }, { networkId: w } = A; T.map((b) => { const { coinX: s, coinY: B, curve: f, version: Mt } = b; y( { coinX: s.type, coinY: B.type, curve: f, networkId: w.value, contract: Number(Mt) }, O ); }), u(); } const k = n(() => async (T, O, w, b) => { const s = Xt(T, O, w, b); let B = i[s]; if (!B) { const { networkId: f } = A; B = await y( { coinX: T, coinY: O, curve: w, networkId: f.value, contract: b }, { rewrite: !0, lazy: !1 } ); } return B; }), h = n( () => Object.keys(i).filter((T) => i[T].isDefault).map((T) => i[T]) ); function _(T, O, w) { if (!T || !O) return !1; const [b, s] = Ft(T, O) ? [T, O] : [O, T], B = `${b}-${s}-${w}`; return j.stable.has(B) ? $("stable", w) : j.uncorrelated.has(B) ? $("unstable", w) : !1; } const Z = n(() => Object.values(i)); return { isLoading: r, isReady: a, getPool: k, getCurveType: _, fetchPoolsList: N, pools: I, poolsMap: i, poolsTitleMap: g, defaultPools: h, poolsMapAsArray: Z }; }), Rt = /* @__PURE__ */ new Map(); async function BM(A, t, o) { const r = o?.time || 0; if (Rt.has(A)) { const i = Rt.get(A); if (Date.now() - i.time < r) return i.promise; } if (o?.args) { const { args: i } = o; return Rt.set(A, { time: Date.now(), promise: t(...i) }), Rt.get(A).promise; } return Rt.set(A, { time: Date.now(), promise: t() }), Rt.get(A).promise; } function tM(A, t) { return `${A.fromCoin}|${A.toCoin}|${A.curve}|${t}`; } const lt = st({}); function sM() { const t = it().sdk; function o(I, N) { const E = tM(I, N); return lt[E] ?? {}; } function r(I, N) { return o(I, N).exists; } function i(I, N) { return o(I, N).isFetching; } async function g(I, N) { const E = tM(I, N); lt[E] || (lt[E] = { exists: !1, isFetching: !1 }), lt[E].isFetching = !0; const u = Kt(I.curve), l = await t.value.Swap.getLiquidityPoolResource({ fromToken: I.fromCoin, toToken: I.toCoin, curveType: u, version: N == ut ? ut : nt }); return lt[E].isFetching = !1, !!l.liquidityPoolResource; } async function a(I, N) { const E = tM(I, N); lt[E] || (lt[E] = { exists: !1, isFetching: !1 }); const u = await g(I, N); lt[E].exists = u; } function j(I, N) { const E = tM(I, N); lt[E] || (lt[E] = { exists: !1, isFetching: !1 }), lt[E].exists = !1; } function c(I, N, E, u) { K( [I.token, N.token, E.value, u.value], async () => { !I.token || !N.token ? j( { fromCoin: I.token ?? "", toCoin: N.token ?? "", curve: E.value }, u?.value ) : await a( { fromCoin: I.token, toCoin: N.token, curve: E.value }, u.value ); }, { immediate: !0 } ); } return { isFetching: i, poolExists: r, check: a, watch: c, reset: j }; } function Ar(A = ut) { const t = x(A); return { version: n({ get() { return t.value; }, set(r) { if (!bo.includes(r)) throw new Error("Trying to switch on wrong swap contract version"); t.value = r; } }) }; } const RM = 5e-3, Tt = mM("swapStore", () => { const A = st({ token: void 0, amount: void 0, reserve: 0, usdEquivalent: void 0 }), t = st({ token: void 0, amount: void 0, reserve: 0, usdEquivalent: void 0 }), { version: o } = Ar(), r = qt(), i = it(), { sdk: g } = i, a = x("stable"), j = x("high"), c = sM(), I = x(!0), N = x(RM), E = x(0), u = x(0), l = x(0), d = x(0), p = x("from"), L = x("from"), y = x(), U = x(!1), k = gM("is-frontrun-enable", !1), h = jt(), _ = i.client, Z = n(() => i.feeData.value?.feeBasisPoint), T = n(() => i.networkId), O = n(() => r.getCurveType(A.token, t.token, o.value)); K(I, (q) => { q && (N.value = RM); }), K([h.tokens], () => { A.token = h.getToken(A.token)?.type || i.defaultToken.value, t.token = A.token !== h.getToken(t.token)?.type ? h.getToken(t.token)?.type : void 0; }), lM(() => w()); function w() { o.value = ut, A.token = i.defaultToken.value, t.token = void 0, A.amount = void 0, A.reserve = 0, t.amount = void 0, t.reserve = 0, y.value = void 0, A.usdEquivalent = void 0, t.usdEquivalent = void 0; } function b(q, F, Y) { if (!q || !F || !Y) return q; const G = h.tokens[F].decimals, Q = h.tokens[Y].decimals - G; return Q > 0 ? +at(q).div(Qt(Q)).toFixed(0) : Q < 0 ? +at(q).mul(Qt(Q)).toFixed(0) : q; } function s() { const q = { ...A }; A.token = t.token, A.amount = b(t.amount, q.token, t.token), t.amount = b(q.amount, t.token, q.token), t.token = q.token, p.value = p.value === "from" ? "to" : "from"; } async function B(q = !1) { if (A.token && t.token && a.value) { L.value = p.value, q || (U.value = !0); const F = L.value, Y = Ft(A.token, t.token), [G, At] = Y ? [A.token, t.token] : [t.token, A.token], Q = Xt(G, At, a.value, o.value), v = AM(o.value); try { const Nt = await BM( ["calc", v, Q].join("-"), () => _.getAccountResource(v, Q), { time: 2e3 } ), Dt = +Nt.data.coin_x_reserve.value, Ot = +Nt.data.coin_y_reserve.value; u.value = Nt.data.fee, Z.value && (u.value = at(Nt.data.fee).plus(Z.value).toNumber()), A.reserve = Y ? Dt : Ot, t.reserve = Y ? Ot : Dt; } catch { A.reserve = 0, t.reserve = 0, u.value = 0, U.value = !1; return; } let S; if (!A.amount && !t.amount) { q || (U.value = !1); return; } if (Z.value) try { S = await g.value.Swap.calculateRates({ fromToken: A.token, toToken: t.token, interactiveToken: F, curveType: Kt(a.value), amount: F === "from" ? A.amount : t.amount, version: o.value, additionalFee: +Z.value }); } catch { } else try { S = await g.value.Swap.calculateRates({ fromToken: A.token, toToken: t.token, interactiveToken: F, curveType: Kt(a.value), amount: F === "from" ? A.amount : t.amount, version: o.value }); } catch { } if (y.value = t.amount && t.reserve < t.amount ? "Insufficient funds in Liquidity Pool" : void 0, at(S).lessThanOrEqualTo(0) || !bA(Number(S))) { q || (U.value = !1); return; } F === "from" ? (t.amount = +Number(Number(S).toFixed(0)), E.value = A.amount / t.amount) : A.amount = +Number(Number(S).toFixed(0)); const rt = at(t.amount).div(Qt(h.tokens[t.token].decimals)), P = at(A.amount).div(Qt(h.tokens[A.token].decimals)); E.value = +Number( rt.div(P).mul(Qt(h.tokens[t.token].decimals)).toFixed(0) ), l.value = u.value * 100 / lo, d.value = A?.amount && A.amount > 0 ? A.amount * l.value * 0.01 : 0, q || (U.value = !1); } else A.reserve = 0, t.reserve = 0; } async function f() { !A?.token || !t?.token || !a.value || await c.check( { fromCoin: A.token, toCoin: t.token, curve: a.value }, o.value ); } uM( () => [o, A.amount, A.reserve, A.token, t.amount, t.reserve, t.token, a], async (q) => { await f(), B(!1); }, { debounce: 500, maxWait: void 0, deep: !0, immediate: !0 } ); const Mt = n(() => { const F = N.value * 1e4; return L.value === "from" && t.amount !== void 0 ? o.value === nt || a.value === $("unstable", o.value) ? t.amount - t.amount * F / 1e4 : t.amount - 1 : L.value === "to" && A.amount !== void 0 ? o.value === nt || a.value === $("unstable", o.value) ? A.amount + A.amount * F / 1e4 : A.amount : 0; }), et = n( () => !!A.token && !!t.token && !c.isFetching( { fromCoin: A.token, toCoin: t.token, curve: a.value ?? "" }, o.value ) && !c.poolExists( { fromCoin: A.token, toCoin: t.token, curve: a.value ?? "" }, o.value ) ), Ct = n(() => c.isFetching || U.value), Et = n(() => { if (!A?.amount || !A.reserve || !t.reserve) return 0; const F = A.reserve * t.reserve / (A.reserve + A.amount), Y = t.reserve - F, G = A.amount / Y; return (1 - A.reserve / t.reserve / G) * 100; }), pt = Intl.NumberFormat("en", { notation: "compact", minimumFractionDigits: 2, maximumFractionDigits: 2 }), mt = n(() => pt.format(Et.value)), Lt = n(() => +mt.value <= 10 ? "normal" : +mt.value >= 10 && +mt.value < 20 ? "warning" : "alert"); return K( () => i.walletName.value, () => { i.walletName.value !== ct.PontemWalletName && (k.value = !1); }, { immediate: !0 } ), { check: f, isBusy: Ct, isPoolAbsence: et, convertRate: E, convertFee: l, convertFeeAmount: d, fromCurrency: A, interactiveField: p, isUpdatingRate: U, lastInteractiveField: L, networkId: T, slippage: N, slippageAmount: Mt, slippageIsDefault: I, toCurrency: t, curve: a, toggleCurrencies: s, refetchRates: B, poolExists: c.poolExists, convertError: y, stableSwapType: j, priceImpact: Et, priceImpactFormatted: mt, priceImpactState: Lt, version: o, predefinedCurve: O, isFrontrunEnable: k }; }), or = { class: "stable-switch-container" }, rr = ["disabled"], er = /* @__PURE__ */ e("img", { src: eA, alt: "uncorrelated curve" }, null, -1), ir = /* @__PURE__ */ e("p", null, "Uncorrelated", -1), ar = /* @__PURE__ */ e("i", { class: "pi pi-info-circle", style: { paddingTop: "2px" } }, null, -1), gr = ["disabled"], nr = /* @__PURE__ */ e("img", { style: { marginTop: "-2px", marginBottom: "2px" }, src: rA, alt: "stable curve" }, null, -1), cr = /* @__PURE__ */ e("p", null, "Stable", -1), Nr = /* @__PURE__ */ e("i", { class: "pi pi-info-circle", style: { paddingTop: "2px" } }, null, -1), Ir = /* @__PURE__ */ W({ __name: "CurveSwitch", props: { curve: null, version: null }, setup(A) { const t = UA(), o = Tt(), r = jt(), i = sM(), g = n(() => o.version), a = n(() => $("stable", g.value)), j = n(() => $("unstable", g.value)), c = n(() => o.isBusy !== void 0 ? o.isBusy.value : !1), I = n(() => p("stable", 0)), N = n(() => p("stable", 0.5)), E = n(() => I.value && N.value), u = n(() => p("unstable", 0)), l = n(() => p("unstable", 0.5)), d = n( () => u.value && l.value ); K( [() => o.fromCurrency.token, () => o.toCurrency.token, () => o.curve, () => o.version], () => { o.curve === a.value && (r.tokens[o.fromCurrency.token]?.decimals > 8 || r.tokens[o.toCurrency.token]?.decimals > 8) && (t.removeGroup("tr"), t.add({ severity: "warn", summary: "Warning!", detail: "If one of the token in stable swap pair has more than 8 decimals it could bring inaccuracy for swaps logic, be careful.", life: 3e3, group: "tr" })), L("stable", 0), L("stable", 0.5), L("unstable", 0), L("unstable", 0.5); }, { deep: !0 } ); function p(U, k) { const h = $(U, k); return !!o.fromCurrency.token && !!o.toCurrency.token && !i.isFetching( { fromCoin: o.fromCurrency.token ?? "", toCoin: o.toCurrency.token ?? "", curve: h }, k ) && !i.poolExists( { fromCoin: o.fromCurrency.token ?? "", toCoin: o.toCurrency.token ?? "", curve: h }, k ); } async function L(U, k) { const h = $(U, k); !o.fromCurrency.token || !o.toCurrency.token || !h || await i.check( { fromCoin: o.fromCurrency.token, toCoin: o.toCurrency.token, curve: h }, k ); } const y = (U) => { c.value !== !0 && (o.curve = U); }; return (U, k) => (D(), m("div", or, [ e("div", { class: tt(["stable-switch-container__switch", { isSelected: M(o).curve === M(j), busy: M(c) }]), "data-tid": "curve-switch-uncorrelated", disabled: M(d), onClick: k[0] || (k[0] = (h) => !M(d) && y(M(j))) }, [ er, ir, z(bt, { position: "top", tooltipText: "Using x*y=K formula" }, { default: R(() => [ ar ]), _: 1 }) ], 10, rr), e("div", { class: tt([{ isSelected: M(o).curve === M(a), busy: M(c) }, "stable-switch-container__switch"]), disabled: M(E), "data-tid": "curve-switch-stable", onClick: k[1] || (k[1] = (h) => !M(E) && y(M(a))) }, [ nr, cr, z(bt, { position: "top-left", tooltipText: "Using formula optimized for stable tokens swaps" }, { default: R(() => [ Nr ]), _: 1 }) ], 10, gr), z(M(OA), { position: "top-right", group: "tr" }) ])); } }), jr = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTExLjIyNjMgMTMuNDQyOFY0LjM2NDI5IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMy45NDQ3IDEwLjcxMjFMMTEuMjI2MiAxMy40NDMyTDguNTA3NjkgMTAuNzEyMSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNNC42MDczMSAyLjU1NTI1VjExLjYzMzgiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEuODg4OTIgNS4yODZMNC42MDc0MyAyLjU1NDg5TDcuMzI1OTUgNS4yODYiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9zdmc+Cg==", Er = /* @__PURE__ */ e("img", { src: jr }, null, -1), ur = /* @__PURE__ */ e("i", { class: "pi pi-arrow-down" }, null, -1), Tr = /* @__PURE__ */ W({ __name: "InputToggle", props: { onClick: null }, setup(A) { const t = A; return (o, r) => (D(), V(M(X), { class: "swap-toggle", type: "button", onClick: t.onClick }, { default: R(() => [ Er, ur ]), _: 1 }, 8, ["onClick"])); } }), Dr = (A) => A.length === 1 ? A : (A.match( /^-?(((\d{1,3}),?)+\.*?)*?\d*?(?=\.?0*$)/ ) || [""])[0]; function uA(A, t = { decimals: 1, suffix: "", bridge: "" }) { const o = x(""); function r(i, g, a, j) { let c = +(i || 0) / Math.pow(10, g), I = g, N = ""; c > 10 ? I = 2 : c >= 1 ? I = 4 : c >= 0.1 && (I = 6), c === 0 ? I = 0 : c < 1 / Math.pow(10, g) && (I = g, c = +Number(1 / Math.pow(10, g)), N = "~"), I = I > g ? g : I; const E = Intl.NumberFormat("en", { notation: "standard", minimumFractionDigits: I, maximumFractionDigits: I }), u = [a, j].filter(Boolean).join(" • "); o.value = [ N + Dr(E.format(c)), u ].filter(Boolean).join(" "); } return gt(A) || gt(t.decimals) || gt(t.suffix) || gt(t.bridge) ? TM(() => { r( M(A), M(t.decimals), M(t.suffix), M(t.bridge) ); }) : r( M(A), M(t.decimals), M(t.suffix), M(t.bridge) ), o; } function It(A, t, o) { const r = jt(), { useSuffix: i = !0, useBridge: g = !1, _decimals: a } = o || {}, j = n(() => { const u = M(t) ? r.getToken(M(t)) : void 0; return u ? u.symbol : ""; }), c = n(() => { const u = M(t) ? r.getToken(M(t)) : void 0; return u ? IA(u) : ""; }), I = n(() => { const u = M(t) ? r.getToken(M(t)) : void 0; return u ? Vo(u.alias) : j.value; }), N = n(() => { const u = M(t) ? r.getToken(M(t)) : void 0; return u ? u.decimals : a || 8; }), E = uA(A, { decimals: N, suffix: i ? j : "", bridge: g ? c : "" }); return { alias: I, symbol: j, decimals: N, formatted: E }; } const pr = /* @__PURE__ */ W({ __name: "IdentificationIcon", props: { address: null, useHash: { type: Boolean }, size: null }, setup(A) { const t = A, o = x(), r = kA(t, "address"); function i(a) { if (!a) return 0; const j = a.length; let c = 0, I = 0; if (j > 0) for (; I < j; ) c = (c << 5) - c + a.charCodeAt(I++) | 0; return c; } const g = n(() => { const a = +(t?.size || 40); return SA(a, i(r.value)); }); return K( g, () => { g.value && xM(() => { o.value && (o.value.innerHTML = "", o.value?.appendChild(g.value)); }); }, { immediate: !0, flush: "post" } ), (a, j) => (D(), m("div", { ref_key: "iconRef", ref: o, class: "identicon", style: dM({ width: `${A.size}px`, height: `${A.size}px`, maxWidth: `${A.size}px` }) }, null, 4)); } }), mr = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE2IDMyQzI0Ljg2NjcgMzIgMzIgMjQuODY2NyAzMiAxNkMzMiA3LjEzMzI4IDI0Ljg2NjcgMCAxNiAwQzcuMTMzMjggMCAwIDcuMTMzMjggMCAxNkMwIDI0Ljg2NjcgNy4xMzMyOCAzMiAxNiAzMloiIGZpbGw9IiM4RDI5QzEiLz4KPHJlY3QgeD0iOC45Mjg5MiIgeT0iMTYiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCIgcng9IjIiIHRyYW5zZm9ybT0icm90YXRlKC00NSA4LjkyODkyIDE2KSIgZmlsbD0id2hpdGUiLz4KPGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTQiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1vcGFjaXR5PSIwLjIiIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4K", Bt = /* @__PURE__ */ W({ __name: "TokenIcon", props: { logo: null, type: null, size: null, class: null }, setup(A) { const t = A, o = x(!1), r = n( () => t.logo ? { src: o.value ? mr : t.logo, size: t.size, class: t.class } : { size: t.size, address: t.type, class: t.class } ), i = () => { o.value = !0; }; return (g, a) => (D(), V(fA(t.logo ? "img" : M(pr)), zM(M(r), { onError: i }), null, 16)); } }), lr = { class: "reserves-header" }, dr = /* @__PURE__ */ e("span", { class: "reserves-heading" }, "Currency Reserves", -1), xr = { class: "reserves-container" }, zr = { class: "reserves-content" }, Lr = { class: "reserves-row" }, wr = { class: "swap-tokens__symbol" }, yr = { class: "reserves-row" }, Qr = { class: "swap-tokens__symbol" }, Br = /* @__PURE__ */ W({ __name: "ReservesContainer", props: { type: null }, setup(A) { const t = A, o = Tt(), r = qt(), i = jt(), g = n(() => o.version); cM(async () => { await j(); }); const a = x({ coinX: "", coinY: "", reserveX: 0, reserveY: 0 }); async function j() { try { const h = await r.getPool( o.fromCurrency.token, o.toCurrency.token, o.curve, g.value ); a.value.coinX = h.coinX, a.value.coinY = h.coinY, a.value.reserveX = h.reserveX, a.value.reserveY = h.reserveY; } catch { } } K( [ () => o.fromCurrency.token, () => o.toCurrency.token, () => o.curve, () => g.value ], async () => await j(), { deep: !0 } ); const c = n(() => { if (o.toCurrency.token) return i.getToken(o.toCurrency.token); }), I = n(() => { if (o.toCurrency.token) return i.getToken(o.fromCurrency.token); }), N = n( () => o.fromCurrency?.reserve && o.toCurrency?.reserve && (o.fromCurrency.reserve > 0 || o.toCurrency.reserve > 0) ), E = n( () => N.value && Ft(`${o.fromCurrency.token}`, `${o.toCurrency.token}`) ), u = n(() => E.value ? "coinX" : "coinY"), l = n(() => E.value ? "coinY" : "coinX"), d = n(() => E.value ? "reserveX" : "reserveY"), p = n(() => E.value ? "reserveY" : "reserveX"), L = n(() => { const h = a?.value?.[u.value] ? a.value[d.value] : 0; return It(h, a.value[u.value], { useSuffix: !1 }); }), y = n(() => { const h = a?.value?.[l.value] ? a.value[p.value] : 0; return It(h, a.value[l.value], { useSuffix: !1 }); }), U = x(!1), k = n({ get() { return U.value ? 0 : void 0; }, set(h) { xM(() => { U.value = h === 0; }); } }); return (h, _) => M(N) ? (D(), V(M(ZM), { key: 0, activeIndex: M(k), "onUpdate:activeIndex": _[0] || (_[0] = (Z) => gt(k) ? k.value = Z : null), lazy: "", class: "swap-info-tab" }, { default: R(() => [ z(M(XM), null, { header: R(() => [ e("div", lr, [ dr, e("span", null, [ e("i", { class: tt(["pi pi-chevron-down", [U.value ? "pi-chevron-up" : "pi-chevron-down"]]) }, null, 2) ]) ]) ]), default: R(() => [ e("div", xr, [ e("div", zr, [ e("div", Lr, [ e("div", wr, [ z(M(Bt), { logo: M(I)?.logo, type: M(I)?.type, class: "img", size: "24" }, null, 8, ["logo", "type"]), H(" " + C(M(oM)(M(I))), 1) ]), e("span", null, C(M(L).formatted.value), 1) ]), e("div", yr, [ e("div", Qr, [ z(M(Bt), { logo: M(c)?.logo, type: M(c)?.type, class: "img", size: "24" }, null, 8, ["logo", "type"]), H(" " + C(M(oM)(M(c))), 1) ]), e("span", { class: tt({ "insufficient-reserves": t.type == "swap" && M(o).convertError }) }, C(M(y).formatted.value), 3) ]) ]) ]) ]), _: 1 }) ]), _: 1 }, 8, ["activeIndex"])) : J("", !0); } }); function vM(A) { const t = KM(); if (t) return n({ get() { return t.props[A]; }, set(o) { return t.emit(`update:${A}`, o); } }); } const sr = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTgiIGhlaWdodD0iOTgiIHZpZXdCb3g9IjAgMCA5OCA5OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQ5IDAuMjVDMzkuMzU4MiAwLjI1IDI5LjkzMjkgMy4xMDkxNCAyMS45MTYgOC40NjU4NkMxMy44OTkxIDEzLjgyMjYgNy42NTA2NyAyMS40MzYzIDMuOTYwODkgMzAuMzQ0MkMwLjI3MTEyMyAzOS4yNTIxIC0wLjY5NDI5IDQ5LjA1NDEgMS4xODY3NCA1OC41MTA3QzMuMDY3NzcgNjcuOTY3MiA3LjcxMDc2IDc2LjY1MzYgMTQuNTI4NiA4My40NzE1QzIxLjM0NjQgOTAuMjg5MyAzMC4wMzI4IDk0LjkzMjMgMzkuNDg5NCA5Ni44MTMzQzQ4Ljk0NTkgOTguNjk0MyA1OC43NDc5IDk3LjcyODkgNjcuNjU1OCA5NC4wMzkxQzc2LjU2MzcgOTAuMzQ5MyA4NC4xNzc0IDg0LjEwMDkgODkuNTM0MiA3Ni4wODRDOTQuODkwOSA2OC4wNjcxIDk3Ljc1IDU4LjY0MTggOTcuNzUgNDlDOTcuNzM1MSAzNi4wNzUzIDkyLjU5NDEgMjMuNjg0MiA4My40NTUgMTQuNTQ1Qzc0LjMxNTggNS40MDU4OCA2MS45MjQ3IDAuMjY0OTM4IDQ5IDAuMjVaTTcyLjIxNzggNDAuNDYzNkw0NC43MTU0IDY2LjcxMzZDNDQuMDE2MSA2Ny4zNzkgNDMuMDg3OCA2Ny43NSA0Mi4xMjI2IDY3Ljc1QzQxLjE1NzQgNjcuNzUgNDAuMjI5MSA2Ny4zNzkgMzkuNTI5OCA2Ni43MTM2TDI1Ljc4MjIgNTMuNTg4NkMyNS4wNjQgNTIuOTAwNiAyNC42NDgyIDUxLjk1NTcgMjQuNjI2MiA1MC45NjE0QzI0LjYwNDIgNDkuOTY3IDI0Ljk3NzggNDkuMDA0NiAyNS42NjQ4IDQ4LjI4NTVDMjYuMzUxOSA0Ny41NjY0IDI3LjI5NjMgNDcuMTQ5NCAyOC4yOTA2IDQ3LjEyNjJDMjkuMjg0OSA0Ny4xMDI5IDMwL