import { Destroyable } from '@dereekb/util';
import { ObservableOrValue } from '@dereekb/rxjs';
import { Observable } from 'rxjs';
import { ScreenMediaWidthType, ScreenMediaHeightType } from './screen';
import * as i0 from "@angular/core";
/**
 * ScreenMediaService configuration.
 */
export declare abstract class DbxScreenMediaServiceConfig {
    /**
     * The maximum size of a micro screen. Any size bigger than this is considered a small screen or larger.
     */
    abstract microScreenWidthMax: number;
    /**
     * The maximum size of a small screen. Any size bigger than this is considered a tablet screen or larger.
     */
    abstract smallScreenWidthMax: number;
    /**
     * The maximum size of a tablet screen. Any size bigger than this is considered a large screen or larger.
     */
    abstract tabletScreenWidthMax: number;
    /**
     * The maximum size of a large screen. Any size bigger than this is considered full.
     */
    abstract largeScreenWidthMax: number;
    /**
     * The maximum size of a tiny screen. Any size bigger than this is considered normal.
     */
    abstract tinyScreenHeightMax: number;
}
export declare const DEFAULT_SCREEN_MEDIA_SERVICE_CONFIG: DbxScreenMediaServiceConfig;
/**
 * Service that emits the current view type based on the configuration.
 */
export declare class DbxScreenMediaService implements Destroyable {
    private readonly _media;
    private readonly _microQuery;
    private readonly _smallQuery;
    private readonly _tabletQuery;
    private readonly _largeQuery;
    private readonly _tinyHeightQuery;
    private readonly _updateWidth;
    private readonly _updateHeight;
    readonly widthType$: Observable<ScreenMediaWidthType>;
    readonly heightType$: Observable<ScreenMediaHeightType>;
    constructor(config: DbxScreenMediaServiceConfig);
    destroy(): void;
    /**
     * Returns an observable that detects whether or no the current width is greater or equal to the given breakpoint.
     *
     * @param inputBreakpoint
     * @returns
     */
    isBreakpointActive(inputBreakpoint: ObservableOrValue<ScreenMediaWidthType>): Observable<boolean>;
    private _readWidthType;
    private _readHeightType;
    static ɵfac: i0.ɵɵFactoryDeclaration<DbxScreenMediaService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DbxScreenMediaService>;
}
