import * as plugins from './domtools.plugins.js';
import { type TViewport } from './domtools.css.breakpoints.js';
import { Scroller } from './domtools.classes.scroller.js';
import { WebSetup } from '@push.rocks/websetup';
import { ThemeManager } from './domtools.classes.thememanager.js';
import { Keyboard } from './domtools.classes.keyboard.js';
export interface IDomToolsState {
    virtualViewport: TViewport;
    jwt: string;
}
export interface IDomToolsContructorOptions {
    ignoreGlobal?: boolean;
}
export declare class DomTools {
    /**
     * setups domtools
     */
    static setupDomTools(optionsArg?: IDomToolsContructorOptions): Promise<DomTools>;
    /**
     * if you can, use the static asysnc .setupDomTools() function instead since it is safer to use.
     */
    static getGlobalDomToolsSync(): DomTools;
    elements: {
        headElement: HTMLElement;
        bodyElement: HTMLElement;
    };
    websetup: WebSetup;
    smartstate: plugins.smartstate.Smartstate<string>;
    domToolsStatePart: Promise<plugins.smartstate.StatePart<string, IDomToolsState>>;
    router: plugins.smartrouter.SmartRouter;
    convenience: {
        typedrequest: typeof plugins.typedrequest;
        smartdelay: typeof plugins.smartdelay;
        smartjson: typeof plugins.smartjson;
        smarturl: typeof plugins.smarturl;
    };
    deesComms: plugins.deesComms.DeesComms;
    scroller: Scroller;
    themeManager: ThemeManager;
    keyboard: Keyboard;
    domToolsReady: plugins.smartpromise.Deferred<unknown>;
    domReady: plugins.smartpromise.Deferred<unknown>;
    globalStylesReady: plugins.smartpromise.Deferred<unknown>;
    constructor(optionsArg: IDomToolsContructorOptions);
    private runOnceTrackerStringMap;
    private runOnceResultMap;
    /**
     * run a function once and always get the Promise of the first execution
     * @param identifierArg the indentifier arg identifies functions. functions with the same identifier are considered equal
     * @param funcArg the actual func arg to run
     */
    runOnce<T>(identifierArg: string, funcArg: () => Promise<T>): Promise<unknown>;
    /**
     * allows to set global styles
     * @param stylesText the css text you want to set
     */
    setGlobalStyles(stylesText: string): Promise<void>;
    /**
     * allows to set global styles
     * @param stylesText the css text you want to set
     */
    setExternalScript(scriptLinkArg: string): Promise<void>;
    /**
     * allows setting external css files
     * @param cssLinkArg a url to an external stylesheet
     */
    setExternalCss(cssLinkArg: string): Promise<void>;
    /**
     * allows setting of website infos
     * @param optionsArg the website info
     */
    setWebsiteInfo(optionsArg: plugins.websetup.IWebSetupConstructorOptions): Promise<void>;
}
