import { Destroyable, type Maybe } from '@dereekb/util';
import { ObservableOrValue } from '@dereekb/rxjs';
import { Observable } from 'rxjs';
import { InjectionToken } from '@angular/core';
import { DbxStyleClass, DbxStyleClassCleanSuffix, DbxStyleClassSuffix, DbxStyleConfig } from './style';
import * as i0 from "@angular/core";
export declare const DBX_STYLE_DEFAULT_CONFIG_TOKEN: InjectionToken<unknown>;
/**
 * Used for managing styles within an app.
 */
export declare class DbxStyleService implements Destroyable {
    private readonly _defaultConfig;
    private readonly _config;
    private readonly _styleClassSuffix;
    readonly config$: Observable<DbxStyleConfig>;
    readonly styleClassSuffix$: Observable<Maybe<string>>;
    readonly styleClassName$: Observable<string>;
    /**
     * Returns the style class given the input configuration.
     *
     * @param configObs Observable containing the configuration to use.
     * @returns DbxStyleClass
     */
    getStyleClassWithConfig(configObs: Observable<DbxStyleConfig>): Observable<DbxStyleClass>;
    /**
     * Toggles the dark suffix on/off for the service.
     *
     * @param toggle Whether to toggle the suffix on or off
     */
    toggleDarkSuffix(toggle?: Maybe<boolean>): void;
    /**
     * Toggles the arbitrary suffix on/off for the service.
     *
     * @param suffix The suffix to toggle
     * @param toggle Whether to toggle the suffix on or off
     */
    toggleSuffix(suffix: DbxStyleClassSuffix, toggle?: Maybe<boolean>): void;
    get currentStyleClassSuffix(): Maybe<DbxStyleClassCleanSuffix>;
    setStyleClassSuffix(suffix: Maybe<DbxStyleClassSuffix>): void;
    setDefaultConfig(defaultConfig: DbxStyleConfig): void;
    setConfig(config: ObservableOrValue<DbxStyleConfig>): void;
    destroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DbxStyleService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DbxStyleService>;
}
