/**
 * @license
 * Copyright Akveo. All Rights Reserved.
 * Licensed under the MIT License. See License.txt in the project root for license information.
 */
import { Type } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/publish';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/pairwise';
import 'rxjs/add/operator/distinctUntilChanged';
import 'rxjs/add/operator/debounceTime';
import { NgaThemeConfig } from './themeConfig.service';
import { NgaMediaBreakpointsService, NgaMediaBreakpoint } from './breakpoints.service';
export declare class NgaThemeService {
    protected options: any;
    private breakpointService;
    private themeConfig;
    currentTheme: string;
    private themeChanges$;
    private appendToLayoutTop$;
    private createLayoutTop$;
    private appendLayoutClass$;
    private removeLayoutClass$;
    private changeWindowWidth$;
    constructor(options: any, breakpointService: NgaMediaBreakpointsService, themeConfig: NgaThemeConfig);
    changeTheme(name: string): void;
    changeWindowWidth(width: number): void;
    appendToLayoutTop<T>(component: Type<T>): Observable<any>;
    getConfig(): Observable<any>;
    clearLayoutTop(): Observable<any>;
    /**
     * Triggers media query breakpoint change
     * Returns a pair where the first item is previous media breakpoint and the second item is current breakpoit.
     * ```
     *  [{ name: 'xs', width: 0 }, { name: 'md', width: 768 }] // change from `xs` to `md`
     * ```
     * @returns {Observable<[NgaMediaBreakpoint, NgaMediaBreakpoint]>}
     */
    onMediaQueryChange(): Observable<[NgaMediaBreakpoint, NgaMediaBreakpoint]>;
    onThemeChange(): Observable<any>;
    onAppendToTop(): Observable<any>;
    onClearLayoutTop(): Observable<any>;
    appendLayoutClass(className: string): void;
    onAppendLayoutClass(): Observable<any>;
    removeLayoutClass(className: string): void;
    onRemoveLayoutClass(): Observable<any>;
}
