import { default as preloaders } from './preloaders';
import { Options as TopNoticeOptions } from '../../components/core/notice/utils';
import { Style as TopNoticeStyle } from '../../components/core/notice/item/types';
/**
 * Статический класс с текущим состоянимем UI
 *
 * @docs https://ui.topvisor.com/?path=/docs/core-core--docs
 */
export default class Core {
    static state: {
        documentClassModificators: Map<string | number, string> & Omit<Map<string | number, string>, keyof Map<any, any>>;
        dateFormat: string;
        currency: "USD" | "RUB" | "EUR";
        timezoneOffset: number;
        isMobile: boolean;
        isMobileUA: boolean;
        isRetina: boolean;
        isApp: boolean;
        isLandscape: boolean;
        isPortrait: boolean;
        size: number;
        isHidden: boolean;
    };
    static preloaders: typeof preloaders;
    static widthForMobile: number;
    static themeName: string;
    static matchMediaIsMobile?: MediaQueryList;
    static $?: JQueryStatic | undefined;
    static Events: {
        addOnReize: (listener: (this: HTMLElement, e: UIEvent & {
            topEvent: {
                widthDiff: number;
                hightDiff: number;
            };
        }) => void) => void;
        removeOnResize: (listener: (this: HTMLElement, e: UIEvent & {
            topEvent: {
                widthDiff: number;
                hightDiff: number;
            };
        }) => void) => void;
    };
    /**
     * Различные флаги, необходимые для работы UI
     */
    static flags: {
        needLoadNotice: boolean;
    };
    static _setState(): void;
    private static useDocumentClassModificators;
    private static useIsHidden;
    private static setStateByWindowSize;
    private static onResize;
    /**
     * Сохранить информацию об устройстве в cookie
     */
    private static saveToCookie;
    /**
     * Добавить установку класса при нажатии ctrl (cmd) / alt
     */
    private static useCtrlClasses;
    /**
     * Вывести на экране сообщение в стилизации под push уведомление
     *
     * Для удобства работы со словарем, принимает один парамтер `text` и первую строку из него использует как `title`.
     * Данное поведение можно изменить, передав в параметрах `options.title`
     *
     * Для вывода используется компонент TopNotice, требует его подклчючения
     *
     * @docs https://ui.topvisor.com/?path=/docs/components-core-notice--docs
     */
    static notice: (text: string, style: TopNoticeStyle, options?: TopNoticeOptions) => Promise<void>;
    /**
     * Вставить css стили на страницу по ссылке с автоматическим добавлением правил media
     *
     * Правила media:
     * - Файлы *.m.css будут грузиться, только на экранах с шириной менее, чем Core.widthForMobile
     * - Файлы *.pc.css будут грузиться, только на экранах с шириной более, чем Core.widthForMobile
     *
     * Настройкой Core.widthForMobile можно управлять через plugin: @topvisor/ui/plugin/core
     *
     * @param fileNames - список ссылок на css файлы
     * @param useSync - использовать синхронную загрузку css, только для css с того же домена. В синхронном режиме стили предзагружаются независимо от
     * media
     */
    static insertCSSLinkToPage: (fileNames: Array<string>, useSync?: boolean) => Promise<unknown[]>;
    private static _insertToPage;
    /**
     * Вставить css стили на страницу с автоматическим добавлением правил media
     *
     * Загрузка с Vite:
     *
     * ```js
     * import style from '/style.css?inline';
     *
     * insertToPageAsInine(style);
     * ```
     *
     * Загрузка с fetch:
     *
     * ```js
     * const style = await fetch('./style.css');
     *
     * insertToPageAsInine(style);
     * ```
     *
     * @param style - css стили в строке
     * @param type - если указать 'm' или 'pc', то стили будут применяться по условию в зависимости от настройки this.widthForMobile
     *
     * @see insertToPage
     */
    static insertStyleToPage: (style: string, type?: "" | "m" | "pc") => void;
}
