var __assign = (this && this.__assign) || function () {
    __assign = Object.assign || function(t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
            s = arguments[i];
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
                t[p] = s[p];
        }
        return t;
    };
    return __assign.apply(this, arguments);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
var __generator = (this && this.__generator) || function (thisArg, body) {
    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
    return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
    function verb(n) { return function (v) { return step([n, v]); }; }
    function step(op) {
        if (f) throw new TypeError("Generator is already executing.");
        while (g && (g = 0, op[0] && (_ = 0)), _) try {
            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
            if (y = 0, t) op = [op[0] & 2, t.value];
            switch (op[0]) {
                case 0: case 1: t = op; break;
                case 4: _.label++; return { value: op[1], done: false };
                case 5: _.label++; y = op[1]; op = [0]; continue;
                case 7: op = _.ops.pop(); _.trys.pop(); continue;
                default:
                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
                    if (t[2]) _.ops.pop();
                    _.trys.pop(); continue;
            }
            op = body.call(thisArg, _);
        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
    }
};
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
        if (ar || !(i in from)) {
            if (!ar) ar = Array.prototype.slice.call(from, 0, i);
            ar[i] = from[i];
        }
    }
    return to.concat(ar || Array.prototype.slice.call(from));
};
var _a, _b;
import { useRouter } from "next/router";
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, } from "react";
import { WalletProvider as MystenWalletProvider, SuiClientProvider, createNetworkConfig, } from "@mysten/dapp-kit";
import { useAccounts, useConnectWallet, useCurrentAccount, useCurrentWallet, useDisconnectWallet, useSignTransaction, useSwitchAccount, useWallets, } from "@mysten/dapp-kit";
import { SUI_DECIMALS } from "@mysten/sui/utils";
import * as Sentry from "@sentry/nextjs";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import BigNumber from "bignumber.js";
import { useLDClient } from "launchdarkly-react-client-sdk";
import { executeAuction } from "shio-sdk";
import { API_URL, formatAddress, isInMsafeApp } from "@suilend/frontend-sui";
import { showErrorToast, showInfoToast } from "../lib";
import { useSettingsContext } from "./SettingsContext";
export var WalletType;
(function (WalletType) {
    WalletType["EXTENSION"] = "extension";
    WalletType["WEB"] = "web";
})(WalletType || (WalletType = {}));
var WalletName;
(function (WalletName) {
    WalletName["SLUSH"] = "Slush";
    WalletName["BACKPACK"] = "Backpack";
    WalletName["PHANTOM"] = "Phantom";
    WalletName["NIGHTLY"] = "Nightly";
    WalletName["SUIET"] = "Suiet";
    WalletName["BYBIT_WALLET"] = "Bybit Wallet";
    WalletName["GATE_WALLET"] = "Gate Wallet";
    WalletName["OKX_WALLET"] = "OKX Wallet";
    WalletName["MSAFE_WALLET"] = "MSafe Wallet";
})(WalletName || (WalletName = {}));
export var DEFAULT_EXTENSION_WALLET_NAMES = [
    WalletName.SLUSH,
    WalletName.BACKPACK,
    WalletName.PHANTOM,
    WalletName.NIGHTLY,
    WalletName.SUIET,
    WalletName.BYBIT_WALLET,
    WalletName.GATE_WALLET,
    WalletName.OKX_WALLET,
    WalletName.MSAFE_WALLET,
];
var WEB_WALLET_NAMES = [];
var WALLET_LOGO_MAP = (_a = {},
    _a[WalletName.SLUSH] = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgMjRDMCAxMC43NDUyIDEwLjc0NTIgMCAyNCAwQzM3LjI1NDggMCA0OCAxMC43NDUyIDQ4IDI0QzQ4IDM3LjI1NDggMzcuMjU0OCA0OCAyNCA0OEMxMC43NDUyIDQ4IDAgMzcuMjU0OCAwIDI0WiIgZmlsbD0iIzBDMEExRiIvPgo8cGF0aCBkPSJNMTMuMTM1OCAzMi4xMDg1QzE0LjE3MDEgMzUuOTY4MyAxOC4wMzMxIDM5LjQ2MjQgMjYuMDI1NSAzNy4zMjA4QzMzLjY1MTUgMzUuMjc3NCAzOC40MzA5IDI5LjAwNCAzNy4xOTE2IDI0LjM3ODlDMzYuNzYzNiAyMi43ODE3IDM1LjQ3NDYgMjEuNzAwNiAzMy40ODcyIDIxLjg3NjVMMTUuNzE2NSAyMy4zNTcyQzE0LjU5NzMgMjMuNDQzIDE0LjA4NDIgMjMuMjU5NiAxMy43ODgxIDIyLjU1NDNDMTMuNTAxIDIxLjg4MjMgMTMuNjY0NiAyMS4xNjA5IDE1LjAxNjMgMjAuNDc3N0wyOC41NDAxIDEzLjUzNzRDMjkuNTc2NyAxMy4wMSAzMC4yNjcxIDEyLjc4OTMgMzAuODk4IDEzLjAxMjZDMzEuMjkzNCAxMy4xNTYzIDMxLjU1MzggMTMuNzI4NCAzMS4zMTQ3IDE0LjQzNDRMMzAuNDM3OCAxNy4wMjMyQzI5LjM2MTcgMjAuMjAwMiAzMS42NjUzIDIwLjkzODIgMzIuOTY0MSAyMC41OTAyQzM0LjkyODkgMjAuMDYzNyAzNS4zOTExIDE4LjE5MjMgMzQuNzU4MSAxNS44Mjk5QzMzLjE1MzMgOS44NDA1NCAyNi43OTkgOC45MDQxMSAyMS4wMzc4IDEwLjQ0NzhDMTUuMTc2NyAxMi4wMTgzIDEwLjA5NiAxNi43Njc2IDExLjY0NzQgMjIuNTU3M0MxMi4wMTI5IDIzLjkyMTYgMTMuMjY4NyAyNS4wMTE2IDE0LjcyMzIgMjQuOTc4NUwxNi45NDM4IDI0Ljk3MzFDMTcuNDAwNCAyNC45NjI1IDE3LjIzNiAyNSAxOC4xMTcgMjQuOTI3MUMxOC45OTggMjQuODU0MSAyMS4zNTA5IDI0LjU2NDYgMjEuMzUwOSAyNC41NjQ2TDMyLjg5NjIgMjMuMjU4TDMzLjE5MzcgMjMuMjE0OEMzMy44Njg5IDIzLjA5OTcgMzQuMzc5MiAyMy4yNzUgMzQuODEwNiAyNC4wMTgzQzM1LjQ1NjMgMjUuMTMwNCAzNC40NzEyIDI1Ljk2OTEgMzMuMjkyIDI2Ljk3MzFDMzMuMjYwNSAyNyAzMy4yMjg4IDI3LjAyNyAzMy4xOTcgMjcuMDU0MUwyMy4wNDgyIDM1LjgwMDVDMjEuMzA4NyAzNy4zMDA4IDIwLjA4NjcgMzYuNzM2NyAxOS42NTg4IDM1LjEzOTVMMTguMTQzMSAyOS40ODI5QzE3Ljc2ODcgMjguMDg1NCAxNi40MDQxIDI2Ljk4ODkgMTQuODA1NiAyNy40MTcyQzEyLjgwNzUgMjcuOTUyNiAxMi42NDU1IDMwLjI3ODQgMTMuMTM1OCAzMi4xMDg1WiIgZmlsbD0iI0ZCRkFGRiIvPgo8L3N2Zz4K",
    _a[WalletName.BACKPACK] = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJcAAACXCAYAAAAYn8l5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAgdSURBVHgB7d1dchPXFgXgtVvi1n27er1VkMgjQAwgUjMCfEeAGQHcEWBGgD0CzAgCI7DsDCBmBFZsqvKqx1TZOjvntERiHExwYJ+zu3t9L3aByyW5l87/j4Aap3U9GQATDZhUot/HfxorMBLFKH4/uvbjSxUsJX5N3weVdwPF4mKAk635fA5qCHoqhml0Z4UdrfQRFBP8NUD/nGAuQd4OBnjz3/l8gZ7qXbhiqOqh6vMYqBo5xKBpkNff/TQ/QM/0JlzvY7Wnqi+zheqa+IdeXFTyv1htnqAnehGu8+n0eXyru3BAoXurqnoRQ7ZEx3U6XLEKHMcq8FWp0uomqRQbVPKw6+2xzoYrBWugehh7e2M4lAKGWE3e7XA12clweQ/WFcthJQ+6WoJV6KCWBCsZrYIepmERdFDnwnU2nb5sSbAacaA2tQt/RAd1KlxpDEsgz9A2scPxyw91+1733+hUm+tsNju9RakVp3DEdDhAVD81dXST5WUlW10aohiiI87qekeCjq/80xIi86D4RSqkHtnyDnDyW/ya+wE2U02bucpUDcb5y3EluB//awzVyebHRlVAKr120RGdKbnOZ7PDNIGcghQf5LwtPbAUvPgJn4SAOgXuUvCkDwOsREREREREREREbdHHNfTjzbe3mZq5rcXm67LPA6JdXc+VQjO5s8IEld7XtGVsvU1sjPziNFQTtmYLWqgwj98v+rCWvjPhSiVSDNO2yVYxA2klqgpONMjbO4P2TFfdRqvDdW3vYY026+AWtFaGq5nsDeEp1mu3OrWKs1lbH4M2EHnR9tKsVeHqcqg+RQQHbQ5Za8J1Pp0+3ew97Hyorom9Td27d3z8Ai3jPlxe9x7m1sYd267X0L+fTh8Pg/7c92AlzUaO+LdY7x5vB7cll6ct+N60Zce2y3C9n81eqWIHdKM27Nh2Vy0yWF9mvdFDD1PTAU65KrkYrH9GoDt3j49fwxk34Wp2Svvc0Nrsb5TNZHQqMUQ/2sLmgseAuQiXu8a7yDzO+73+3Ba1dJhciBPicTL8MVRreBAb+fccnclaPFxndb0twcVZCXGwUvYvK+zddplMc6pOwG4sPUq3f1ydmlM0XG6OOool1VDw5Gsfiof3sxlsfeBhHVnR3mIaeS9/Io28uHc0/yZjRvGBLr47OtpKJSAK8XRqTrFwpbMdyo+8x2Adz3fxjcXf+Sz9bpTi5NScItWij+rQJlhXnU/rvfikn6KM4u2vIiVX0/gt2S4RHFgHK2lKMGmWNZcwukwT/gVlD1cqtUr2qpp5OclXZV2KPMH6Gpf8YvV49kNsfhSSPVyp1EJBQfMuvkuN/FCwgV+JPi915mrWcHkotUqsUQ9x7AyFSq/Ue9wcKpdd1nB5KLVQQBpziqVXsamZKnYqSpRe2cKV3lwstR6hoLSFC4VUFd6gnFGJ0itbuAbANgquf09VYslu+WbOr9io+aBAcyRbuETLzrvFaukdCpM/t/lnl9pe53VdI6Ms4WrOZyg8Gh//uMVXbK5KBzzdM5lRlnDFKrFGaYriE7lA4degmORs2GcJV+kqsXkNpR/sWunXMKpW+Vb6moer+aQ42Bqm4uI+oDEKq6p8PfYcJdcEPhTfqS0edotnrBrNwxXHV2o4EKdB7qOwOJj5PcprbuxABvbhEp3BAy1bgqYeczqEDg6ETB94+2pR/VSLucd5rnLRY97I9YE3DdembndzKk3JXquHHvMftBvVopdSq6GK7RITuB4Gka8Z/frnwcNmTMNVrXyFKxoNQsh+SsxQ9SWcucjwwbctucTfQW1pV3fOttdmI8o2nNGV/ZibdbU4hkMS9FWO6nFdHWr2kvKLSMvDFXslHsZ1/mKzt+/QMmBuNvzeYCD6HxhzfbKgqdhjSgGzaNh6D1aikDGMmYYrxxv4KjFgq/BtAxaDVXsPVkPVvFnQ35JrI1WRl0FPv/as0VTFpmOghqEFwUKeec4haEN2309nOwo9GFbV6y9dEh1DNRmG8AhB0xZ+d73jkky385/N6lOPB6V9EcH8ykVQH63DGjRHRmLSTKP4md66lbTk+u5xOjTFDkuum8QR9QpaVwGfPOtB1j9Dn9H7NhfZYbjIDMNFZhguMsNwkRmGi8wwXGSG4SIzDBeZYbjIDMNFZhguMsNwkRmGi8wwXGSG4SIzDBeZYbjIDMNFZhguMsNwkRmGi8wwXGSG4SIzDBeZYbh6SkUWMGZ7hJKi2O2o9Hka7J+Nabiau52l/FV09DEVvMtx17fpKTcfnE/rXRV93IZzqzpuGR/5/r3j+S4yyBKuD9IBaf92dOlB35S8hpmIiIiIiIiIiIiIrsk2Qr+5IWwMjtCXdLI1ny+RiXm4UqgGAXsCR3c895gIDi5E/p8jZKbhaoKl+jMnrJ0RnFyKPLQOmOmSm2EITxkshxSTKuAZjJmGSyDu7namtQr6CMZsFwsKr4jzKsd9i1xDT2YYLjLDcJEZhovMMFxkhuEiMwwXmWG4yAzDRWYYLjLDcJEZhovMMFxkhuEiMwwXmWG4yAzDRWYYLjLDcJEZhovMMFxkhuEiMwwXmWG4yAzDRWYYLjLDcJEZhovMGJ9yowuQS62/bzGoHIFcCgFvYcz6vsUDkEv/GuANjJmGa6u5gk32Qc7Ifo7r8cwb9JcVdlWwALkgwCI9E2RgHq50qOtK5CEDVl4K1qCyP2j3gyxDEal6jAF7oBBeqF6M7F9U8iDnbbFZryFOTut6nE4SrgT3oToBLz2wsoTICRRHsRrcy3m5wQe/A/gfCSdYaThuAAAAAElFTkSuQmCC",
    _a[WalletName.PHANTOM] = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTA4IiBoZWlnaHQ9IjEwOCIgdmlld0JveD0iMCAwIDEwOCAxMDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxMDgiIGhlaWdodD0iMTA4IiByeD0iMjYiIGZpbGw9IiNBQjlGRjIiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00Ni41MjY3IDY5LjkyMjlDNDIuMDA1NCA3Ni44NTA5IDM0LjQyOTIgODUuNjE4MiAyNC4zNDggODUuNjE4MkMxOS41ODI0IDg1LjYxODIgMTUgODMuNjU2MyAxNSA3NS4xMzQyQzE1IDUzLjQzMDUgNDQuNjMyNiAxOS44MzI3IDcyLjEyNjggMTkuODMyN0M4Ny43NjggMTkuODMyNyA5NCAzMC42ODQ2IDk0IDQzLjAwNzlDOTQgNTguODI1OCA4My43MzU1IDc2LjkxMjIgNzMuNTMyMSA3Ni45MTIyQzcwLjI5MzkgNzYuOTEyMiA2OC43MDUzIDc1LjEzNDIgNjguNzA1MyA3Mi4zMTRDNjguNzA1MyA3MS41NzgzIDY4LjgyNzUgNzAuNzgxMiA2OS4wNzE5IDY5LjkyMjlDNjUuNTg5MyA3NS44Njk5IDU4Ljg2ODUgODEuMzg3OCA1Mi41NzU0IDgxLjM4NzhDNDcuOTkzIDgxLjM4NzggNDUuNjcxMyA3OC41MDYzIDQ1LjY3MTMgNzQuNDU5OEM0NS42NzEzIDcyLjk4ODQgNDUuOTc2OCA3MS40NTU2IDQ2LjUyNjcgNjkuOTIyOVpNODMuNjc2MSA0Mi41Nzk0QzgzLjY3NjEgNDYuMTcwNCA4MS41NTc1IDQ3Ljk2NTggNzkuMTg3NSA0Ny45NjU4Qzc2Ljc4MTYgNDcuOTY1OCA3NC42OTg5IDQ2LjE3MDQgNzQuNjk4OSA0Mi41Nzk0Qzc0LjY5ODkgMzguOTg4NSA3Ni43ODE2IDM3LjE5MzEgNzkuMTg3NSAzNy4xOTMxQzgxLjU1NzUgMzcuMTkzMSA4My42NzYxIDM4Ljk4ODUgODMuNjc2MSA0Mi41Nzk0Wk03MC4yMTAzIDQyLjU3OTVDNzAuMjEwMyA0Ni4xNzA0IDY4LjA5MTYgNDcuOTY1OCA2NS43MjE2IDQ3Ljk2NThDNjMuMzE1NyA0Ny45NjU4IDYxLjIzMyA0Ni4xNzA0IDYxLjIzMyA0Mi41Nzk1QzYxLjIzMyAzOC45ODg1IDYzLjMxNTcgMzcuMTkzMSA2NS43MjE2IDM3LjE5MzFDNjguMDkxNiAzNy4xOTMxIDcwLjIxMDMgMzguOTg4NSA3MC4yMTAzIDQyLjU3OTVaIiBmaWxsPSIjRkZGREY4Ii8+Cjwvc3ZnPgo=",
    _a[WalletName.NIGHTLY] = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyOC4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iV2Fyc3R3YV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgdmlld0JveD0iMCAwIDg1MS41IDg1MS41IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA4NTEuNSA4NTEuNTsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzYwNjdGOTt9DQoJLnN0MXtmaWxsOiNGN0Y3Rjc7fQ0KPC9zdHlsZT4NCjxnPg0KCTxnIGlkPSJXYXJzdHdhXzJfMDAwMDAwMTQ2MDk2NTQyNTMxODA5NDY0NjAwMDAwMDg2NDc4NTIwMDIxMTY5MTg2ODhfIj4NCgkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTEyNCwwaDYwMy42YzY4LjUsMCwxMjQsNTUuNSwxMjQsMTI0djYwMy42YzAsNjguNS01NS41LDEyNC0xMjQsMTI0SDEyNGMtNjguNSwwLTEyNC01NS41LTEyNC0xMjRWMTI0DQoJCQlDMCw1NS41LDU1LjUsMCwxMjQsMHoiLz4NCgk8L2c+DQoJPGcgaWQ9IldhcnN0d2FfMyI+DQoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik02MjMuNSwxNzAuM2MtMzcuNCw1Mi4yLTg0LjIsODguNC0xMzkuNSwxMTIuNmMtMTkuMi01LjMtMzguOS04LTU4LjMtNy44Yy0xOS40LTAuMi0zOS4xLDIuNi01OC4zLDcuOA0KCQkJYy01NS4zLTI0LjMtMTAyLjEtNjAuMy0xMzkuNS0xMTIuNmMtMTEuMywyOC40LTU0LjgsMTI2LjQtMi42LDI2My40YzAsMC0xNi43LDcxLjUsMTQsMTMyLjljMCwwLDQ0LjQtMjAuMSw3OS43LDguMg0KCQkJYzM2LjksMjkuOSwyNS4xLDU4LjcsNTEuMSw4My41YzIyLjQsMjIuOSw1NS43LDIyLjksNTUuNywyMi45czMzLjMsMCw1NS43LTIyLjhjMjYtMjQuNywxNC4zLTUzLjUsNTEuMS04My41DQoJCQljMzUuMi0yOC4zLDc5LjctOC4yLDc5LjctOC4yYzMwLjYtNjEuNCwxNC0xMzIuOSwxNC0xMzIuOUM2NzguMywyOTYuNyw2MzQuOSwxOTguNyw2MjMuNSwxNzAuM3ogTTI1My4xLDQxNC44DQoJCQljLTI4LjQtNTguMy0zNi4yLTEzOC4zLTE4LjMtMjAxLjVjMjMuNyw2MCw1NS45LDg2LjksOTQuMiwxMTUuM0MzMTIuOCwzNjIuMywyODIuMywzOTQuMSwyNTMuMSw0MTQuOHogTTMzNC44LDUxNy41DQoJCQljLTIyLjQtOS45LTI3LjEtMjkuNC0yNy4xLTI5LjRjMzAuNS0xOS4yLDc1LjQtNC41LDc2LjgsNDAuOUMzNjAuOSw1MTQuNywzNTMsNTI1LjQsMzM0LjgsNTE3LjV6IE00MjUuNyw2NzguNw0KCQkJYy0xNiwwLTI5LTExLjUtMjktMjUuNnMxMy0yNS42LDI5LTI1LjZzMjksMTEuNSwyOSwyNS42QzQ1NC43LDY2Ny4zLDQ0MS43LDY3OC43LDQyNS43LDY3OC43eiBNNTE2LjcsNTE3LjUNCgkJCWMtMTguMiw4LTI2LTIuOC00OS43LDExLjVjMS41LTQ1LjQsNDYuMi02MC4xLDc2LjgtNDAuOUM1NDMuOCw0ODgsNTM5LDUwNy42LDUxNi43LDUxNy41eiBNNTk4LjMsNDE0LjgNCgkJCWMtMjkuMS0yMC43LTU5LjctNTIuNC03Ni04Ni4yYzM4LjMtMjguNCw3MC42LTU1LjQsOTQuMi0xMTUuM0M2MzQuNiwyNzYuNSw2MjYuOCwzNTYuNiw1OTguMyw0MTQuOHoiLz4NCgk8L2c+DQo8L2c+DQo8L3N2Zz4NCg==",
    _a[WalletName.SUIET] = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3Qgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiByeD0iMjQiIGZpbGw9InVybCgjcGFpbnQwX3JhZGlhbF8zMDVfMTI1MTYpIi8+PHBhdGggZD0iTTUxLjUgNDMuNmMtMy45IDAtNy42LTMuOS05LjUtNi40LTEuOSAyLjUtNS42IDYuNC05LjUgNi40LTQgMC03LjctMy45LTkuNS02LjQtMS44IDIuNS01LjUgNi40LTkuNSA2LjQtLjggMC0xLjUtLjYtMS41LTEuNSAwLS44LjctMS41IDEuNS0xLjUgMy4yIDAgNy4xLTUuMSA4LjItNi45LjMtLjQuOC0uNyAxLjMtLjdzMSAuMiAxLjMuN2MxLjEgMS44IDUgNi45IDguMiA2LjkgMy4xIDAgNy4xLTUuMSA4LjItNi45LjMtLjQuOC0uNyAxLjMtLjdzMSAuMiAxLjIuN2MxLjEgMS44IDUgNi45IDguMiA2LjkuOSAwIDEuNi43IDEuNiAxLjUgMCAuOS0uNiAxLjUtMS41IDEuNXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNNTEuNSA1Mi4zYy0zLjkgMC03LjYtMy45LTkuNS02LjQtMS45IDIuNS01LjYgNi40LTkuNSA2LjQtNCAwLTcuNy0zLjktOS41LTYuNC0xLjggMi41LTUuNSA2LjQtOS41IDYuNC0uOCAwLTEuNS0uNi0xLjUtMS41IDAtLjguNy0xLjUgMS41LTEuNSAzLjIgMCA3LjEtNS4xIDguMi02LjkuMy0uNC44LS43IDEuMy0uN3MxIC4zIDEuMy43YzEuMSAxLjggNSA2LjkgOC4yIDYuOSAzLjEgMCA3LjEtNS4xIDguMi02LjkuMy0uNC44LS43IDEuMy0uN3MxIC4zIDEuMi43YzEuMSAxLjggNSA2LjkgOC4yIDYuOS45IDAgMS42LjcgMS42IDEuNSAwIC45LS42IDEuNS0xLjUgMS41ek0xNC42IDM2LjdjLS44IDAtMS40LS41LTEuNi0xLjNsLS4zLTMuNmMwLTEwLjkgOC45LTE5LjggMTkuOC0xOS44IDExIDAgMTkuOCA4LjkgMTkuOCAxOS44bC0uMyAzLjZjLS4xLjgtLjkgMS40LTEuNyAxLjItLjktLjEtMS41LS45LTEuMy0xLjhsLjMtM2MwLTkuMi03LjUtMTYuOC0xNi44LTE2LjgtOS4yIDAtMTYuNyA3LjUtMTYuNyAxNi44bC4yIDMuMWMuMi44LS4zIDEuNi0xLjEgMS44aC0uM3oiIGZpbGw9IiNmZmYiLz48ZGVmcz48cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50MF9yYWRpYWxfMzA1XzEyNTE2IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDUyLjc1ODAzIDUxLjM1OCAtNTEuNDM5NDcgNTIuODQxNzIgMCA3LjQwNykiPjxzdG9wIHN0b3AtY29sb3I9IiMwMDU4REQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM2N0M4RkYiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48L3N2Zz4=",
    _a[WalletName.BYBIT_WALLET] = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODgiIGhlaWdodD0iODgiIHZpZXdCb3g9IjAgMCA4OCA4OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgMTguN0MwIDguMzcyMjcgOC4zNzIyOCAwIDE4LjcgMEg2OS4zQzc5LjYyNzcgMCA4OCA4LjM3MjI4IDg4IDE4LjdWNjkuM0M4OCA3OS42Mjc3IDc5LjYyNzcgODggNjkuMyA4OEgxOC43QzguMzcyMjcgODggMCA3OS42Mjc3IDAgNjkuM1YxOC43WiIgZmlsbD0iIzQwNDM0NyIvPgo8cGF0aCBkPSJNNy41NzYxNyAyNi44MDY3QzYuNzg1MTYgMjQuMDc4NyA4LjQ3NzUgMjEuMjUzMSAxMS4yNTU5IDIwLjY2M0w1Ny42MDg3IDEwLjgxNzNDNTkuODA5IDEwLjM1IDYyLjA0NDMgMTEuNDQ0MyA2My4wMjQ3IDEzLjQ2ODlMODMuODQ0MyA1Ni40NjU3TDI1LjE3NzYgODcuNTEwMUw3LjU3NjE3IDI2LjgwNjdaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMzEyXzE3NTM0KSIvPgo8cGF0aCBkPSJNOC4xODI0MiAzMC4xNjE4QzcuMzUwNDkgMjcuMjgzOCA5LjI3OTI1IDI0LjM0MTMgMTIuMjUwMiAyMy45NTU5TDczLjY4NjUgMTUuOTg4MUM3Ni4yMzkxIDE1LjY1NzEgNzguNjExMSAxNy4zNjE4IDc5LjExMTEgMTkuODg2N0w4OC4wMDAzIDY0Ljc3NzFMMjQuNjg5MiA4Ny4yNjY1TDguMTgyNDIgMzAuMTYxOFoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0wIDM0LjIyMjJDMCAyOC44MjIxIDQuMzc3NjYgMjQuNDQ0NSA5Ljc3Nzc4IDI0LjQ0NDVINjguNDQ0NEM3OS4yNDQ3IDI0LjQ0NDUgODggMzMuMTk5OCA4OCA0NFY2OC40NDQ1Qzg4IDc5LjI0NDcgNzkuMjQ0NyA4OCA2OC40NDQ0IDg4SDE5LjU1NTZDOC43NTUzMiA4OCAwIDc5LjI0NDcgMCA2OC40NDQ1VjM0LjIyMjJaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNTguMjIwMSA2MS4xOTU5VjQyLjg3NTVINjEuNzkzN1Y2MS4xOTU5SDU4LjIyMDFaIiBmaWxsPSIjRjdBNjAwIi8+CjxwYXRoIGQ9Ik0xNy40Mzk1IDY2LjY2MzdIOS43Nzc5NVY0OC4zNDM0SDE3LjEzMTNDMjAuNzA0OSA0OC4zNDM0IDIyLjc4NzQgNTAuMzUwNSAyMi43ODc0IDUzLjQ4OTNDMjIuNzg3NCA1NS41MjE1IDIxLjQ1MDQgNTYuODM0NSAyMC41MjU3IDU3LjI3MjFDMjEuNjMxNSA1Ny43ODY5IDIzLjA0NTYgNTguOTQzOCAyMy4wNDU2IDYxLjM4ODVDMjMuMDQ1NiA2NC44MTA4IDIwLjcwNDkgNjYuNjYzNyAxNy40Mzk1IDY2LjY2MzdaTTE2Ljg0ODEgNTEuNTM0M0gxMy4zNTE2VjU1Ljc1NDhIMTYuODQ4MUMxOC4zNjQyIDU1Ljc1NDggMTkuMjEzOCA1NC45MDY0IDE5LjIxMzggNTMuNjQ1NUMxOS4yMTM4IDUyLjM4MjYgMTguMzY2MiA1MS41MzQzIDE2Ljg0ODEgNTEuNTM0M1pNMTcuMDc5MyA1OC45NzA4SDEzLjM1MTZWNjMuNDcyOEgxNy4wNzkzQzE4LjY5OTQgNjMuNDcyOCAxOS40NyA2Mi40NDMyIDE5LjQ3IDYxLjIwOTJDMTkuNDcyIDU5Ljk3MzMgMTguNjk5NCA1OC45NzA4IDE3LjA3OTMgNTguOTcwOFoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0zMi44OTI1IDU5LjE1MDFWNjYuNjYzN0gyOS4zNDM5VjU5LjE1MDFMMjMuODQxOSA0OC4zNDM0SDI3LjcyMzhMMzEuMTQzMiA1NS43Mjc4TDM0LjUxMDcgNDguMzQzNEgzOC4zOTI2TDMyLjg5MjUgNTkuMTUwMVoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik00OC41NjMzIDY2LjY2MzdINDAuOTAxN1Y0OC4zNDM0SDQ4LjI1NTFDNTEuODI4NyA0OC4zNDM0IDUzLjkxMTIgNTAuMzUwNSA1My45MTEyIDUzLjQ4OTNDNTMuOTExMiA1NS41MjE1IDUyLjU3NDIgNTYuODM0NSA1MS42NDk1IDU3LjI3MjFDNTIuNzU1MyA1Ny43ODY5IDU0LjE2OTMgNTguOTQzOCA1NC4xNjkzIDYxLjM4ODVDNTQuMTY3NCA2NC44MTA4IDUxLjgyNjggNjYuNjYzNyA0OC41NjMzIDY2LjY2MzdaTTQ3Ljk3MTkgNTEuNTM0M0g0NC40NzUzVjU1Ljc1NDhINDcuOTcxOUM0OS40ODggNTUuNzU0OCA1MC4zMzc2IDU0LjkwNjQgNTAuMzM3NiA1My42NDU1QzUwLjMzNTcgNTIuMzgyNiA0OS40ODggNTEuNTM0MyA0Ny45NzE5IDUxLjUzNDNaTTQ4LjIwMzEgNTguOTcwOEg0NC40NzUzVjYzLjQ3MjhINDguMjAzMUM0OS44MjMyIDYzLjQ3MjggNTAuNTkzOCA2Mi40NDMyIDUwLjU5MzggNjEuMjA5MkM1MC41OTM4IDU5Ljk3MzQgNDkuODIxMyA1OC45NzA4IDQ4LjIwMzEgNTguOTcwOFoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik03My40MzkgNTEuNTM0M1Y2Ni42NjM3SDY5Ljg2NTRWNTEuNTM0M0g2NS4wODM5VjQ4LjM0MzRINzguMjIyNFY1MS41MzQzSDczLjQzOVoiIGZpbGw9IndoaXRlIi8+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMzEyXzE3NTM0IiB4MT0iNy4zMzMwOCIgeTE9IjI1LjU5NCIgeDI9Ijg0LjYzODEiIHkyPSIyMS43MjE2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiNGRkQ3NDgiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRjdBNjAwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==",
    _a[WalletName.GATE_WALLET] = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAP1BMVEUAAAAX5aIjVOYjVeYjVOYjU+UjVOYgUN8jVeYkVOcgWOcoWOcjVOYjVeYjVOcjVOYkVOYjU+YY5KIjVOYX5aFnl2IZAAAAE3RSTlMAn+/fn5CAEGBAICDPr3C/v1Bg8gPz/wAAAYNJREFUWMOtl9lywzAIRYkQ2mzZSen/f2uX6UzGt7IJVc87R4sRYDpjKdJXVqU/UYX1B/KTU9Ank+F+wRZUJwRtV8S7/JRAVKcEUecEq84Jos4Jks4JNp0TtDApYB0R7pLKDXkbxJdRdK+ZPnlHboMDDDYgX9GvCkQRrkQXAvMGYyaPoCiQiFwCxvXJJ6h4/uwURBAs5BQwHsApaLgBr+CBG3AK8B1Xt6AfXwA5BVjJ7l4BfgTxCyCLZwXlvwV29cEjuOs3XqK3ATJ8xp1Mjg18xUTKZHGsX53ESGWjfCS81O7soQ9qapzBfP0MDcG1AR50herZQDSKKpJ5tFpA6+tTCI9ni2RkMT6dPGptA3JUICwnYuVlkEGsiBA9twBEUGTRi2U2HRDrM7r2oL8p+MKQsEsqJckedATDiOAlLDDmedmwzjhJRpJZRGPYtliNRLeIRqpbiPHLYxDg/mFmNbkvdEVh7/JIk3ARnjLZtMLucKRGVoClkov2SH391vDapZze3Ac97ZDnSKHPHwAAAABJRU5ErkJggg==",
    _a[WalletName.OKX_WALLET] = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJDSURBVHgB7Zq9jtpAEMfHlhEgQLiioXEkoAGECwoKxMcTRHmC5E3IoyRPkPAEkI7unJYmTgEFTYwA8a3NTKScLnCHN6c9r1e3P2llWQy7M/s1Gv1twCP0ej37dDq9x+Zut1t3t9vZjDEHIiSRSPg4ZpDL5fxkMvn1cDh8m0wmfugfO53OoFQq/crn8wxfY9EymQyrVCqMfHvScZx1p9ls3pFxXBy/bKlUipGPrVbLuQqAfsCliq3zl0H84zwtjQrOw4Mt1W63P5LvBm2d+Xz+YzqdgkqUy+WgWCy+Mc/nc282m4FqLBYL+3g8fjDxenq72WxANZbLJeA13zDX67UDioL5ybXwafMYu64Ltn3bdDweQ5R97fd7GyhBQMipx4POeEDHIu2LfDdBIGGz+hJ9CQ1ABjoA2egAZPM6AgiCAEQhsi/C4jHyPA/6/f5NG3Ks2+3CYDC4aTccDrn6ojG54MnEvG00GoVmWLIRNZ7wTCwDHYBsdACy0QHIhiuRETxlICWpMMhGZHmqS8qH6JLyGegAZKMDkI0uKf8X4SWlaZo+Pp1bRrwlJU8ZKLIvUjKh0WiQ3sRUbNVq9c5Ebew7KEo2m/1p4jJ4qAmDaqDQBzj5XyiAT4VCQezJigAU+IDU+z8vJFnGWeC+bKQV/5VZ71FV6L7PA3gg3tXrdQ+DgLhC+75Wq3no69P3MC0NFQpx2lL04Ql9gHK1bRDjsSBIvScBnDTk1WrlGIZBorIDEYJj+rhdgnQ67VmWRe0zlplXl81vcyEt0rSoYDUAAAAASUVORK5CYII=",
    _a[WalletName.MSAFE_WALLET] = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQ3IiBoZWlnaHQ9IjE3MCIgdmlld0JveD0iMCAwIDI0NyAxNzAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAyLjU5MyAyMy4wMTNDMTA3LjQ5OSAyNi4wNTU4IDExMC43OTQgMzAuODc4NSAxNDAuOTEyIDc5LjEwMzlDMTcyLjQxOSAxMjkuNTUyIDE3My44NjQgMTMyLjExNCAxNzMuODY0IDEzNy41MzZDMTczLjg2NCAxNDIuNDUxIDE3My4zNCAxNDMuNzI1IDE2OS45MTcgMTQ3LjExMkMxNjYuNDc2IDE1MC41MTggMTY1LjIyMiAxNTEuMDE5IDE2MC4xMzggMTUxLjAxOUMxNTUuNTg0IDE1MS4wMTkgMTUzLjUzNiAxNTAuMzc4IDE1MC43OTcgMTQ4LjA5N0MxNDguODY4IDE0Ni40OTEgMTM5Ljg2MiAxMzMuMTc1IDEzMC43ODUgMTE4LjUwOEMxMDMuNzE5IDc0Ljc3NDEgOTAuMDYxIDUzLjE2NzYgODkuNzI2NyA1My41NTQ5Qzg2LjY2ODUgNTcuMTAzMyA3OC42NjEgNzIuMzY1NiA3OC42NjEgNzQuNjQ0M0M3OC42NjEgNzYuNTM4IDg0LjQ0NjMgODcuMzAwNCA5My43MjA1IDEwMi42NThDMTAyLjAwMyAxMTYuMzc0IDEwOS41OTQgMTI5LjUyNCAxMTAuNTg5IDEzMS44ODFDMTE0LjQ2NCAxNDEuMDYyIDEwNy43NTQgMTUxLjAxOSA5Ny42ODc3IDE1MS4wMTlDOTQuODQwOSAxNTEuMDE5IDkxLjIxNTEgMTUwLjE3OCA4OS42MzAzIDE0OS4xNTFDODguMDQ1NSAxNDguMTIyIDgwLjk3OTUgMTM3Ljc4IDczLjkyODcgMTI2LjE2OUM2Ni44Nzc4IDExNC41NTYgNjAuNjc0NSAxMDUuMDU1IDYwLjE0MjggMTA1LjA1NUM1OS42MTEgMTA1LjA1NSA1My42OTMzIDExNC4yMzQgNDYuOTkzMSAxMjUuNDUyQzQwLjI5MjkgMTM2LjY2OSAzMy43MjYyIDE0Ni44MTUgMzIuNDAxNSAxNDcuOTk1QzMxLjA3NjcgMTQ5LjE3NiAyNy43MDYzIDE1MC4zOTYgMjQuOTEyOSAxNTAuNzA5QzE1LjgzODQgMTUxLjcyMSA5IDE0NS44NzggOSAxMzcuMTFDOSAxMzIuODQyIDkuMDQ4NzYgMTMyLjc1MiA0My41MzU2IDc0LjAyOTVDNTcuODI1NCA0OS42OTczIDcxLjIyMTIgMjguMDc5MyA3My4zMDQxIDI1Ljk4OTFDODEuMDc3MSAxOC4xODc5IDkyLjg4IDE2Ljk4OTQgMTAyLjU5MyAyMy4wMTNaTTE2Ni45MDEgMjMuMDIzM0MxNzAuMzA4IDI2LjQ4MjEgMjMzLjQ5OSAxMjcuMTE2IDIzNS40NDcgMTMyLjE4NUMyMzguMjU4IDEzOS41MDQgMjM1LjI3NyAxNDYuMzEyIDIyNy42NjUgMTQ5Ljk2QzIyMy41NDcgMTUxLjkzMyAyMjIuMDczIDE1Mi4xMSAyMTguMjQ1IDE1MS4wODlDMjE1Ljc0OSAxNTAuNDI0IDIxMi44NjYgMTQ4Ljk2IDIxMS44MzggMTQ3LjgzNUMyMTAuODA5IDE0Ni43MSAxOTQuNzk2IDEyMS41IDE3Ni4yNTMgOTEuODExOEMxNDAuMDU0IDMzLjg1NyAxNDAuMDQ0IDMzLjgzNTIgMTQ0LjI3NCAyNS43Mzk4QzE0OC4yNjMgMTguMTAxNyAxNjAuNTk0IDE2LjYyMjggMTY2LjkwMSAyMy4wMjMzWiIgZmlsbD0iIzQ4QjVBNyIvPgo8L3N2Zz4K",
    _a);
var WALLET_DOWNLOAD_URLS_MAP = (_b = {},
    _b[WalletName.SLUSH] = {
        iOS: "https://apps.apple.com/us/app/slush-a-sui-wallet/id6476572140",
        android: "https://play.google.com/store/apps/details?id=com.mystenlabs.suiwallet",
        extension: "https://chromewebstore.google.com/detail/slush-%E2%80%94-a-sui-wallet/opcgpfmipidbgpenhmajoajpbobppdil",
    },
    _b[WalletName.BACKPACK] = {
        iOS: "https://apps.apple.com/us/app/backpack-buy-trade-crypto/id6445964121",
        android: "https://play.google.com/store/apps/details?id=app.backpack.mobile",
        extension: "https://chromewebstore.google.com/detail/backpack/aflkmfhebedbjioipglgcbcmnbpgliof",
    },
    _b[WalletName.PHANTOM] = {
        iOS: "https://apps.apple.com/us/app/phantom-crypto-wallet/id1598432977",
        android: "https://play.google.com/store/apps/details?id=app.phantom",
        extension: "https://chromewebstore.google.com/detail/phantom/bfnaelmomeimhlpmgjnjophhpkkoljpa",
    },
    _b[WalletName.NIGHTLY] = {
        iOS: "https://apps.apple.com/us/app/nightly-multichain-wallet/id6444768157",
        android: "https://play.google.com/store/apps/details?id=com.nightlymobile",
        extension: "https://chromewebstore.google.com/detail/nightly/fiikommddbeccaoicoejoniammnalkfa",
    },
    _b[WalletName.SUIET] = {
        iOS: undefined,
        android: undefined,
        extension: "https://chromewebstore.google.com/detail/suiet-sui-wallet/khpkpbbcccdmmclmpigdgddabeilkdpd",
    },
    _b[WalletName.BYBIT_WALLET] = {
        iOS: "https://apps.apple.com/us/app/bybit-buy-trade-crypto/id1488296980",
        android: "https://play.google.com/store/apps/details?id=com.bybit.app",
        extension: "https://chromewebstore.google.com/detail/bybit-wallet/pdliaogehgdbhbnmkklieghmmjkpigpa",
    },
    _b[WalletName.GATE_WALLET] = {
        iOS: "https://apps.apple.com/us/app/gate-io-buy-bitcoin-crypto/id1294998195",
        android: "https://play.google.com/store/apps/details?id=com.gateio.gateio",
        extension: "https://chromewebstore.google.com/detail/gate-wallet/cpmkedoipcpimgecpmgpldfpohjplkpp",
    },
    _b[WalletName.OKX_WALLET] = {
        iOS: "https://apps.apple.com/us/app/okx-buy-bitcoin-btc-crypto/id1327268470",
        android: "https://play.google.com/store/apps/details?id=com.okinc.okex.gp",
        extension: "https://chromewebstore.google.com/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge",
    },
    _b[WalletName.MSAFE_WALLET] = {
        iOS: undefined,
        android: undefined,
        extension: "https://sui.m-safe.io",
    },
    _b);
export var WalletContextQueryParams;
(function (WalletContextQueryParams) {
    WalletContextQueryParams["WALLET"] = "wallet";
})(WalletContextQueryParams || (WalletContextQueryParams = {}));
var WalletContext = createContext({
    isImpersonating: false,
    isConnectWalletDropdownOpen: false,
    setIsConnectWalletDropdownOpen: function () {
        throw new Error("WalletContextProvider not initialized");
    },
    wallets: [],
    wallet: undefined,
    connectWallet: function () {
        throw new Error("WalletContextProvider not initialized");
    },
    disconnectWallet: function () {
        throw new Error("WalletContextProvider not initialized");
    },
    accounts: [],
    account: undefined,
    switchAccount: function () {
        throw new Error("WalletContextProvider not initialized");
    },
    address: undefined,
    dryRunTransaction: function () { return __awaiter(void 0, void 0, void 0, function () {
        return __generator(this, function (_a) {
            throw new Error("WalletContextProvider not initialized");
        });
    }); },
    signExecuteAndWaitForTransaction: function () { return __awaiter(void 0, void 0, void 0, function () {
        return __generator(this, function (_a) {
            throw new Error("WalletContextProvider not initialized");
        });
    }); },
});
export var useWalletContext = function () { return useContext(WalletContext); };
function Inner(_a) {
    var _b;
    var _this = this;
    var _c;
    var appName = _a.appName, children = _a.children;
    var router = useRouter();
    var queryParams = (_b = {},
        _b[WalletContextQueryParams.WALLET] = router.query[WalletContextQueryParams.WALLET],
        _b);
    var suiClient = useSettingsContext().suiClient;
    // Impersonated address
    var impersonatedAddress = queryParams[WalletContextQueryParams.WALLET];
    // Wallets
    var wallets__installed = useWallets();
    var getInstalledWallet = useCallback(function (name) { return wallets__installed.find(function (w) { return w.name === name; }); }, [wallets__installed]);
    var wallets__extension_default = useMemo(function () {
        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
        var msafeWallet = {
            name: WalletName.MSAFE_WALLET,
            iconUrl: (_b = (_a = getInstalledWallet(WalletName.MSAFE_WALLET)) === null || _a === void 0 ? void 0 : _a.icon) !== null && _b !== void 0 ? _b : WALLET_LOGO_MAP[WalletName.MSAFE_WALLET],
            type: WalletType.EXTENSION,
            downloadUrls: WALLET_DOWNLOAD_URLS_MAP[WalletName.MSAFE_WALLET],
        };
        if (isInMsafeApp())
            return [msafeWallet];
        return [
            {
                name: WalletName.SLUSH,
                iconUrl: (_d = (_c = getInstalledWallet(WalletName.SLUSH)) === null || _c === void 0 ? void 0 : _c.icon) !== null && _d !== void 0 ? _d : WALLET_LOGO_MAP[WalletName.SLUSH],
                type: WalletType.EXTENSION,
                downloadUrls: WALLET_DOWNLOAD_URLS_MAP[WalletName.SLUSH],
            },
            {
                name: WalletName.BACKPACK,
                iconUrl: (_f = (_e = getInstalledWallet(WalletName.BACKPACK)) === null || _e === void 0 ? void 0 : _e.icon) !== null && _f !== void 0 ? _f : WALLET_LOGO_MAP[WalletName.BACKPACK],
                type: WalletType.EXTENSION,
                downloadUrls: WALLET_DOWNLOAD_URLS_MAP[WalletName.BACKPACK],
            },
            {
                name: WalletName.PHANTOM,
                iconUrl: (_h = (_g = getInstalledWallet(WalletName.PHANTOM)) === null || _g === void 0 ? void 0 : _g.icon) !== null && _h !== void 0 ? _h : WALLET_LOGO_MAP[WalletName.PHANTOM],
                type: WalletType.EXTENSION,
                downloadUrls: WALLET_DOWNLOAD_URLS_MAP[WalletName.PHANTOM],
            },
            {
                name: WalletName.NIGHTLY,
                iconUrl: (_k = (_j = getInstalledWallet(WalletName.NIGHTLY)) === null || _j === void 0 ? void 0 : _j.icon) !== null && _k !== void 0 ? _k : WALLET_LOGO_MAP[WalletName.NIGHTLY],
                type: WalletType.EXTENSION,
                downloadUrls: WALLET_DOWNLOAD_URLS_MAP[WalletName.NIGHTLY],
            },
            {
                name: WalletName.SUIET,
                iconUrl: (_m = (_l = getInstalledWallet(WalletName.SUIET)) === null || _l === void 0 ? void 0 : _l.icon) !== null && _m !== void 0 ? _m : WALLET_LOGO_MAP[WalletName.SUIET],
                type: WalletType.EXTENSION,
                downloadUrls: WALLET_DOWNLOAD_URLS_MAP[WalletName.SUIET],
            },
            {
                name: WalletName.BYBIT_WALLET,
                iconUrl: (_p = (_o = getInstalledWallet(WalletName.BYBIT_WALLET)) === null || _o === void 0 ? void 0 : _o.icon) !== null && _p !== void 0 ? _p : WALLET_LOGO_MAP[WalletName.BYBIT_WALLET],
                type: WalletType.EXTENSION,
                downloadUrls: WALLET_DOWNLOAD_URLS_MAP[WalletName.BYBIT_WALLET],
            },
            {
                name: WalletName.GATE_WALLET,
                iconUrl: (_r = (_q = getInstalledWallet(WalletName.GATE_WALLET)) === null || _q === void 0 ? void 0 : _q.icon) !== null && _r !== void 0 ? _r : WALLET_LOGO_MAP[WalletName.GATE_WALLET],
                type: WalletType.EXTENSION,
                downloadUrls: WALLET_DOWNLOAD_URLS_MAP[WalletName.GATE_WALLET],
            },
            {
                name: WalletName.OKX_WALLET,
                iconUrl: (_t = (_s = getInstalledWallet(WalletName.OKX_WALLET)) === null || _s === void 0 ? void 0 : _s.icon) !== null && _t !== void 0 ? _t : WALLET_LOGO_MAP[WalletName.OKX_WALLET],
                type: WalletType.EXTENSION,
                downloadUrls: WALLET_DOWNLOAD_URLS_MAP[WalletName.OKX_WALLET],
            },
            msafeWallet,
        ];
    }, [getInstalledWallet]);
    var wallets__extension_installed_default = useMemo(function () {
        return wallets__extension_default
            .filter(function (w) {
            return w.name === WalletName.MSAFE_WALLET
                ? isInMsafeApp()
                : !!getInstalledWallet(w.name);
        })
            .map(function (w) { return (__assign(__assign({}, w), { isInstalled: true, raw: getInstalledWallet(w.name) })); });
    }, [wallets__extension_default, getInstalledWallet]);
    var wallets__extension_installed_notDefault = useMemo(function () {
        if (isInMsafeApp())
            return [];
        return wallets__installed
            .filter(function (w) { return !DEFAULT_EXTENSION_WALLET_NAMES.includes(w.name); })
            .filter(function (w) { return !WEB_WALLET_NAMES.includes(w.name); })
            .map(function (w) { return ({
            name: w.name,
            isInstalled: true,
            iconUrl: w.icon,
            type: WalletType.EXTENSION,
            raw: w,
        }); });
    }, [wallets__installed]);
    var wallets__extension_notInstalled_default = useMemo(function () {
        return wallets__extension_default
            .filter(function (w) {
            return w.name === WalletName.MSAFE_WALLET
                ? !isInMsafeApp()
                : !getInstalledWallet(w.name);
        })
            .map(function (w) { return (__assign(__assign({}, w), { isInstalled: false })); });
    }, [wallets__extension_default, getInstalledWallet]);
    var wallets__web = useMemo(function () {
        if (isInMsafeApp())
            return [];
        return [];
    }, []);
    var wallets = useMemo(function () { return __spreadArray(__spreadArray(__spreadArray(__spreadArray([], wallets__extension_installed_default, true), wallets__extension_installed_notDefault, true), wallets__extension_notInstalled_default, true), wallets__web, true); }, [
        wallets__extension_installed_default,
        wallets__extension_installed_notDefault,
        wallets__extension_notInstalled_default,
        wallets__web,
    ]);
    // Wallet
    var _d = useState(false), isConnectWalletDropdownOpen = _d[0], setIsConnectWalletDropdownOpen = _d[1];
    var rawWallet = useCurrentWallet().currentWallet;
    var wallet = useMemo(function () {
        return rawWallet ? wallets.find(function (w) { return w.name === rawWallet.name; }) : undefined;
    }, [rawWallet, wallets]);
    var connectWallet = useConnectWallet().mutate;
    var connectWalletWrapper = useCallback(function (_wallet) {
        try {
            if (!_wallet.raw)
                throw new Error("Missing wallet");
            connectWallet({ wallet: _wallet.raw }, {
                onSuccess: function () {
                    showInfoToast("Connected ".concat(_wallet.name));
                    setIsConnectWalletDropdownOpen(false);
                },
                onError: function (err) {
                    showErrorToast("Failed to connect ".concat(_wallet.name), err);
                    console.error(err);
                },
            });
        }
        catch (err) {
            showErrorToast("Failed to connect ".concat(_wallet.name), err);
            console.error(err);
        }
    }, [connectWallet]);
    var disconnectWallet = useDisconnectWallet().mutate;
    var disconnectWalletWrapper = useCallback(function () {
        try {
            disconnectWallet(undefined, {
                onSuccess: function () {
                    showInfoToast("Disconnected wallet");
                },
                onError: function (err) {
                    showErrorToast("Failed to disconnect wallet", err);
                    console.error(err);
                },
            });
        }
        catch (err) {
            showErrorToast("Failed to disconnect wallet", err);
            console.error(err);
        }
    }, [disconnectWallet]);
    // Accounts
    var accounts = useAccounts();
    var account = (_c = useCurrentAccount()) !== null && _c !== void 0 ? _c : undefined;
    var switchAccount = useSwitchAccount().mutate;
    var switchAccountWrapper = useCallback(function (_account, addressNameServiceName) {
        var _a, _b;
        var accountLabel = (_b = (_a = _account === null || _account === void 0 ? void 0 : _account.label) !== null && _a !== void 0 ? _a : addressNameServiceName) !== null && _b !== void 0 ? _b : formatAddress(_account.address);
        try {
            switchAccount({ account: _account }, {
                onSuccess: function () {
                    showInfoToast("Switched to ".concat(accountLabel), {
                        description: (_account === null || _account === void 0 ? void 0 : _account.label)
                            ? (addressNameServiceName !== null && addressNameServiceName !== void 0 ? addressNameServiceName : formatAddress(_account.address))
                            : undefined,
                    });
                },
                onError: function (err) {
                    showErrorToast("Failed to switch to ".concat(accountLabel), err);
                },
            });
        }
        catch (err) {
            showErrorToast("Failed to switch to ".concat(accountLabel), err);
            console.error(err);
        }
    }, [switchAccount]);
    // Sentry
    useEffect(function () {
        if (impersonatedAddress || !(account === null || account === void 0 ? void 0 : account.address))
            Sentry.setUser(null);
        else {
            Sentry.setUser({ id: account === null || account === void 0 ? void 0 : account.address });
            Sentry.setTag("wallet", wallet === null || wallet === void 0 ? void 0 : wallet.name);
        }
    }, [impersonatedAddress, account === null || account === void 0 ? void 0 : account.address, wallet === null || wallet === void 0 ? void 0 : wallet.name]);
    // LaunchDarkly
    var ldClient = useLDClient();
    var ldKeyRef = useRef(undefined);
    useEffect(function () {
        if (!ldClient)
            return;
        var key = impersonatedAddress !== null && impersonatedAddress !== void 0 ? impersonatedAddress : account === null || account === void 0 ? void 0 : account.address;
        if (ldKeyRef.current === key)
            return;
        (function () { return __awaiter(_this, void 0, void 0, function () {
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0: return [4 /*yield*/, ldClient.identify(!key ? { anonymous: true } : { key: key })];
                    case 1:
                        _a.sent();
                        ldKeyRef.current = key;
                        return [2 /*return*/];
                }
            });
        }); })();
    }, [ldClient, impersonatedAddress, account === null || account === void 0 ? void 0 : account.address]);
    // Wallet name logging
    useEffect(function () {
        if (impersonatedAddress || !(account === null || account === void 0 ? void 0 : account.address))
            return;
        if (!(wallet === null || wallet === void 0 ? void 0 : wallet.name))
            return;
        (function () { return __awaiter(_this, void 0, void 0, function () {
            var err_1;
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0:
                        _a.trys.push([0, 2, , 3]);
                        return [4 /*yield*/, fetch("".concat(API_URL, "/events/logs/wallet-connect"), {
                                method: "POST",
                                body: JSON.stringify({
                                    address: account.address,
                                    walletName: wallet.name,
                                    project: appName,
                                }),
                                headers: {
                                    "Content-Type": "application/json",
                                },
                            })];
                    case 1:
                        _a.sent();
                        return [3 /*break*/, 3];
                    case 2:
                        err_1 = _a.sent();
                        console.error(err_1);
                        return [3 /*break*/, 3];
                    case 3: return [2 /*return*/];
                }
            });
        }); })();
    }, [impersonatedAddress, account === null || account === void 0 ? void 0 : account.address, wallet === null || wallet === void 0 ? void 0 : wallet.name, appName]);
    // Tx
    var gasBudget = useSettingsContext().gasBudget;
    var signTransaction = useSignTransaction().mutateAsync;
    var dryRunTransaction = useCallback(function (transaction_1) {
        var args_1 = [];
        for (var _i = 1; _i < arguments.length; _i++) {
            args_1[_i - 1] = arguments[_i];
        }
        return __awaiter(_this, __spreadArray([transaction_1], args_1, true), void 0, function (transaction, setGasBudget) {
            var _address, inspectResults, err_2;
            if (setGasBudget === void 0) { setGasBudget = true; }
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0:
                        _address = impersonatedAddress !== null && impersonatedAddress !== void 0 ? impersonatedAddress : account === null || account === void 0 ? void 0 : account.address;
                        if (setGasBudget && gasBudget !== "")
                            transaction.setGasBudget(+new BigNumber(gasBudget)
                                .times(Math.pow(10, SUI_DECIMALS))
                                .integerValue(BigNumber.ROUND_DOWN));
                        _a.label = 1;
                    case 1:
                        _a.trys.push([1, 3, , 4]);
                        return [4 /*yield*/, suiClient.devInspectTransactionBlock({
                                sender: _address !== null && _address !== void 0 ? _address : "0x0000000000000000000000000000000000000000000000000000000000000000",
                                transactionBlock: transaction,
                            })];
                    case 2:
                        inspectResults = _a.sent();
                        console.log("WalletContext - dryRunTransaction:", inspectResults);
                        if (inspectResults.error)
                            throw new Error(inspectResults.error);
                        return [2 /*return*/, inspectResults];
                    case 3:
                        err_2 = _a.sent();
                        Sentry.captureException(err_2, {
                            tags: {
                                simulation: true,
                            },
                        });
                        console.error(err_2);
                        throw err_2;
                    case 4: return [2 /*return*/];
                }
            });
        });
    }, [impersonatedAddress, account === null || account === void 0 ? void 0 : account.address, gasBudget, suiClient]);
    var signExecuteAndWaitForTransaction = useCallback(function (transaction, options) { return __awaiter(_this, void 0, void 0, function () {
        var _address, signedTransaction, err_3, res1, res2, err_4;
        var _a, _b;
        return __generator(this, function (_c) {
            switch (_c.label) {
                case 0:
                    if (gasBudget !== "")
                        transaction.setGasBudget(+new BigNumber(gasBudget)
                            .times(Math.pow(10, SUI_DECIMALS))
                            .integerValue(BigNumber.ROUND_DOWN));
                    _address = impersonatedAddress !== null && impersonatedAddress !== void 0 ? impersonatedAddress : account === null || account === void 0 ? void 0 : account.address;
                    if (_address) {
                        try {
                            dryRunTransaction(transaction, false); // Do not await
                        }
                        catch (err) { }
                    }
                    _c.label = 1;
                case 1:
                    _c.trys.push([1, 9, , 10]);
                    return [4 /*yield*/, signTransaction({
                            transaction: transaction,
                            chain: "sui:mainnet",
                        })];
                case 2:
                    signedTransaction = _c.sent();
                    if (!(options === null || options === void 0 ? void 0 : options.auction)) return [3 /*break*/, 6];
                    _c.label = 3;
                case 3:
                    _c.trys.push([3, 5, , 6]);
                    return [4 /*yield*/, executeAuction(signedTransaction.bytes, signedTransaction.signature)];
                case 4:
                    _c.sent();
                    return [3 /*break*/, 6];
                case 5:
                    err_3 = _c.sent();
                    return [3 /*break*/, 6];
                case 6: return [4 /*yield*/, suiClient.executeTransactionBlock({
                        transactionBlock: signedTransaction.bytes,
                        signature: signedTransaction.signature,
                    })];
                case 7:
                    res1 = _c.sent();
                    return [4 /*yield*/, suiClient.waitForTransaction({
                            digest: res1.digest,
                            options: {
                                showBalanceChanges: true,
                                showEffects: true,
                                showEvents: true,
                                showObjectChanges: true,
                            },
                        })];
                case 8:
                    res2 = _c.sent();
                    if (((_a = res2.effects) === null || _a === void 0 ? void 0 : _a.status) !== undefined &&
                        res2.effects.status.status === "failure")
                        throw new Error((_b = res2.effects.status.error) !== null && _b !== void 0 ? _b : "Transaction failed");
                    return [2 /*return*/, res2];
                case 9:
                    err_4 = _c.sent();
                    Sentry.captureException(err_4);
                    console.error(err_4);
                    throw err_4;
                case 10: return [2 /*return*/];
            }
        });
    }); }, [
        gasBudget,
        impersonatedAddress,
        account === null || account === void 0 ? void 0 : account.address,
        dryRunTransaction,
        suiClient,
        signTransaction,
    ]);
    // Context
    var contextValue = useMemo(function () { return ({
        isImpersonating: !!impersonatedAddress,
        isConnectWalletDropdownOpen: isConnectWalletDropdownOpen,
        setIsConnectWalletDropdownOpen: setIsConnectWalletDropdownOpen,
        wallets: wallets,
        wallet: wallet,
        connectWallet: connectWalletWrapper,
        disconnectWallet: disconnectWalletWrapper,
        accounts: accounts,
        account: account,
        switchAccount: switchAccountWrapper,
        address: impersonatedAddress !== null && impersonatedAddress !== void 0 ? impersonatedAddress : account === null || account === void 0 ? void 0 : account.address,
        dryRunTransaction: dryRunTransaction,
        signExecuteAndWaitForTransaction: signExecuteAndWaitForTransaction,
    }); }, [
        impersonatedAddress,
        isConnectWalletDropdownOpen,
        wallets,
        wallet,
        connectWalletWrapper,
        disconnectWalletWrapper,
        accounts,
        account,
        switchAccountWrapper,
        dryRunTransaction,
        signExecuteAndWaitForTransaction,
    ]);
    return (<WalletContext.Provider value={contextValue}>
      {children}
    </WalletContext.Provider>);
}
export function WalletContextProvider(_a) {
    var appName = _a.appName, children = _a.children;
    var rpc = useSettingsContext().rpc;
    var networkConfig = createNetworkConfig({
        mainnet: { url: rpc.url },
    }).networkConfig;
    var queryClient = new QueryClient();
    return (<QueryClientProvider client={queryClient}>
      <SuiClientProvider networks={networkConfig} defaultNetwork="mainnet">
        <MystenWalletProvider preferredWallets={DEFAULT_EXTENSION_WALLET_NAMES} autoConnect slushWallet={{ name: appName }}>
          <Inner appName={appName}>{children}</Inner>
        </MystenWalletProvider>
      </SuiClientProvider>
    </QueryClientProvider>);
}
