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);
};
import BigNumber from "bignumber.js";
import { toast as sonnerToast } from "sonner";
import { TOAST_DURATION_MS, TX_TOAST_DURATION as TX_TOAST_DURATION_MS, formatToken, } from "@suilend/frontend-sui";
var onDismiss = function (callback) {
    for (var i = 0; i < 10; i++)
        sonnerToast.dismiss();
    setTimeout(function () {
        callback();
    }, 250);
};
export var showSuccessToast = function (title, data, isTxn) {
    onDismiss(function () {
        return sonnerToast.success(title, __assign(__assign({}, (data || {})), { duration: isTxn ? TX_TOAST_DURATION_MS : TOAST_DURATION_MS }));
    });
};
export var showInfoToast = function (title, data) {
    onDismiss(function () {
        return sonnerToast.info(title, __assign(__assign({}, (data || {})), { duration: TOAST_DURATION_MS }));
    });
};
export var showWarningToast = function (title, data) {
    onDismiss(function () {
        return sonnerToast.warning(title, __assign(__assign({}, (data || {})), { duration: TOAST_DURATION_MS }));
    });
};
export var showErrorToast = function (title, err, data, isTxn) {
    var description = (err === null || err === void 0 ? void 0 : err.message) || "An unknown error occurred";
    // RPC errors
    if (description.toLowerCase().includes("Invalid u256 value".toLowerCase()))
        return;
    // Insufficient SUI balance to pay for gas
    if (description.toLowerCase().includes("Balance of gas object".toLowerCase())) {
        var match = description.match(/Balance of gas object (\d+) is lower than the needed amount: (\d+)/);
        if (match) {
            var balanceRaw = match[1], neededAmountRaw = match[2];
            description = "Insufficient SUI balance to pay for gas. Balance: ".concat(formatToken(new BigNumber(balanceRaw).div(Math.pow(10, 9)), { dp: 9, trimTrailingZeros: true }), " SUI. Required: ").concat(formatToken(new BigNumber(neededAmountRaw).div(Math.pow(10, 9)), { dp: 9, trimTrailingZeros: true }), " SUI");
        }
    }
    if (description[0].toLowerCase() === description[0])
        description = "".concat(description[0].toUpperCase()).concat(description.slice(1));
    onDismiss(function () {
        return sonnerToast.error(title, __assign(__assign({}, (data || {})), { description: description, duration: isTxn ? TX_TOAST_DURATION_MS : TOAST_DURATION_MS }));
    });
};
