import { Theme } from '../theme';
import * as i0 from "@angular/core";
/**
 * RbThemeRegistryService is an injectable service that allows for
 * registering and unregistering themes, as well as providing access
 * to the currently registered themes.
 * It also provides an observable of themes that can be used
 * to notify subscribers of changes to the registered themes.
 *
 * @internal
 * @group Services
 */
export declare class ThemeRegistryService {
    #private;
    /**
     * The observable that emits the collection of registered themes when it changes.
     */
    readonly themes$: import("rxjs").Observable<Theme[]>;
    /**
     * Registers a new theme and emits the changed collection of themes.
     *
     * If a theme with the same ID is already registered,
     * the registered theme will be merged with the new one.
     *
     * Themes without ID will be ignored.
     *
     * @param {Theme | undefined | null} theme - The new theme to register
     */
    register(theme: Theme | undefined | null): void;
    /**
     * Removes the provided theme from the registry and emits the changed collection of themes.
     *
     * @param {Theme} theme - The theme to remove.
     */
    unregister(theme: Theme): void;
    /**
     * Returns the collection of registered themes.
     *
     * @returns {Theme[]} A new array with all currently registered themes
     * @remarks A new array is created every time this getter is called.
     */
    get themes(): Theme[];
    /**
     * Returns the theme with the given ID, or null if no such theme is registered.
     *
     * @param {string | null} id - The ID of the theme to retrieve
     */
    get(id: string | null): Theme | null;
    /**
     * Returns whether a theme with the given ID is currently registered.
     *
     * @param {string | null} id - The ID of the theme to check.
     */
    has(id: string | null): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<ThemeRegistryService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ThemeRegistryService>;
}
