@pontem/liquidswap-widget
Version:
Liquidswap widget as custom web component
1,541 lines • 1.52 MB
JavaScript
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