/**
 * @license
 * Copyright Endlessjs. All Rights Reserved.
 * Licensed under the MIT License. See License.txt in the project root for license information.
 */
import { Observable } from 'rxjs';
import { ElJSThemeOptions } from './js-themes/theme.options';
import { ElJSThemesRegistry } from './js-themes-registry.service';
import { ElMediaBreakpointsService, ElMediaBreakpoint } from './breakpoints.service';
/**
 * Main Endlessjs service. Includes various helper methods.
 */
export declare class ElThemeService {
    protected options: any;
    private breakpointService;
    private jsThemesRegistry;
    currentTheme: string;
    private themeChanges$;
    private appendLayoutClass$;
    private removeLayoutClass$;
    private changeWindowWidth$;
    constructor(options: any, breakpointService: ElMediaBreakpointsService, jsThemesRegistry: ElJSThemesRegistry);
    /**
     * Change current application theme
     * @param {string} name
     */
    changeTheme(name: string): void;
    changeWindowWidth(width: number): void;
    /**
     * Returns a theme object with variables (color/paddings/etc) on a theme change.
     * Once subscribed - returns current theme.
     *
     * @returns {Observable<ElJSThemeOptions>}
     */
    getJsTheme(): Observable<ElJSThemeOptions>;
    /**
     * Triggers media query breakpoint change
     * Returns a pair where the first item is previous media breakpoint and the second item is current breakpoit.
     * ```ts
     *  [{ name: 'xs', width: 0 }, { name: 'md', width: 768 }] // change from `xs` to `md`
     * ```
     * @returns {Observable<[ElMediaBreakpoint, ElMediaBreakpoint]>}
     */
    onMediaQueryChange(): Observable<ElMediaBreakpoint[]>;
    /**
     * Triggered when current theme is changed
     * @returns {Observable<any>}
     */
    onThemeChange(): Observable<any>;
    /**
     * Append a class to el-layout
     * @param {string} className
     */
    appendLayoutClass(className: string): void;
    /**
     * Triggered when a new class is added to el-layout through `appendLayoutClass` method
     * @returns {Observable<any>}
     */
    onAppendLayoutClass(): Observable<any>;
    /**
     * Removes a class from el-layout
     * @param {string} className
     */
    removeLayoutClass(className: string): void;
    /**
     * Triggered when a class is removed from el-layout through `removeLayoutClass` method
     * @returns {Observable<any>}
     */
    onRemoveLayoutClass(): Observable<any>;
}
