import { EventDispatcher } from "@ribajs/events";
import { Bs5Service } from "./bs5.service.js";
import type { ThemeChoice, ThemeData, ThemeChangedCallback } from "../types/index.js";
export declare class ThemeService {
    protected eventDispatcher: EventDispatcher;
    protected static instance?: ThemeService;
    protected bs5: Bs5Service;
    current: ThemeChoice;
    protected constructor();
    static getSingleton(): ThemeService;
    static setSingleton(): ThemeService;
    protected addEventListeners(): void;
    init(): ThemeData;
    select(choice: ThemeChoice, selectEl: HTMLSelectElement): void;
    protected getDefaultData(): ThemeData;
    protected triggerChange(e?: MediaQueryListEvent, oldValue?: ThemeData): ThemeData;
    onceChange(cb: ThemeChangedCallback, thisContext?: any): void;
    onChange(cb: ThemeChangedCallback, thisContext?: any): void;
    offChange(cb?: ThemeChangedCallback, thisContext?: any): void;
    set(newColorScheme: ThemeChoice): ThemeData;
    getScheme(choice?: ThemeChoice): ThemeData;
}
