import { SyntheticEventTarget } from '../../../esl-utils/dom/events';
import { ESLMediaChangeEvent } from './media-query-base';
import type { IMediaQueryCondition } from './media-query-base';
/**
 * Abstract multiple media conditions container
 * @author Alexey Stsefanovich (ala'n)
 *
 * Observe all child items. Dispatch changes when the whole condition result is changed
 */
declare abstract class MediaQueryContainer extends SyntheticEventTarget<ESLMediaChangeEvent> implements IMediaQueryCondition {
    protected readonly items: IMediaQueryCondition[];
    protected _matches: boolean;
    constructor(items?: IMediaQueryCondition[]);
    addEventListener(callback: EventListener): void;
    addEventListener(type: 'change', callback: EventListener): void;
    removeEventListener(callback: EventListener): void;
    removeEventListener(type: 'change', callback: EventListener): void;
    optimize(): IMediaQueryCondition;
    get matches(): boolean;
    /** Handles query change and dispatches it on top level in case result value is changed */
    protected _onChange(): void;
}
/** Conjunction (AND) group of media conditions */
export declare class MediaQueryConjunction extends MediaQueryContainer {
    get matches(): boolean;
    optimize(): IMediaQueryCondition;
    toString(): string;
}
/** Disjunction (OR) group of media conditions */
export declare class MediaQueryDisjunction extends MediaQueryContainer {
    get matches(): boolean;
    optimize(): IMediaQueryCondition;
    toString(pretty?: boolean): string;
}
export {};
