import { OnInit, ComponentFactory, TemplateRef, Injector, ApplicationRef, Renderer2, ElementRef, ChangeDetectorRef, OnDestroy, AfterContentInit } from '@angular/core';
import { AnimationEvent } from '@angular/animations';
import { LyOverlayRef, LyTheme2, ThemeVariables, LyClasses, StyleCollection, StyleTemplate, ThemeRef, StyleRenderer, WithStyles } from '@alyle/ui';
import { Subject } from 'rxjs';
import { LyDialogRef } from './dialog-ref';
import { Color } from '@alyle/ui/color';
import { FocusTrapFactory } from '@angular/cdk/a11y';
import * as i0 from "@angular/core";
export interface LyDialogTheme {
    /** Styles for Dialog Component. */
    root?: StyleCollection<((classes: LyClasses<typeof STYLES>) => StyleTemplate)> | ((classes: LyClasses<typeof STYLES>) => StyleTemplate);
    /** Styles that apply when a color is set. */
    color?: (classes: LyClasses<typeof STYLES>, color: Color) => StyleTemplate;
}
export interface LyDialogVariables {
    dialog?: LyDialogTheme;
}
/** @docs-private */
declare const STYLES: (theme: ThemeVariables & LyDialogVariables, ref: ThemeRef) => {
    root: () => (_className: string) => string;
};
/** @docs-private */
export declare class LyDialogContainer implements WithStyles, OnInit, AfterContentInit, OnDestroy {
    readonly sRenderer: StyleRenderer;
    private _appRef;
    private _overlayRef;
    private _theme;
    private _el;
    private _cd;
    private _renderer;
    private _trapFactory;
    /** @docs-private */
    readonly classes: LyClasses<(theme: ThemeVariables & LyDialogVariables, ref: ThemeRef) => {
        root: () => (_className: string) => string;
    }>;
    private _embeddedViewRef;
    private _componentRef;
    private _focusTrap;
    /** Previously focused element to restore focus to upon destroy when using autoCapture. */
    private _previouslyFocusedElement;
    /** @internal */
    readonly _afterOpened: Subject<void>;
    /** @internal */
    readonly _beforeClosed: Subject<any>;
    /** @internal */
    readonly _afterClosed: Subject<any>;
    /**
     * State of the dialog animation.
     * @internal
     */
    _state: 'void' | 'enter' | 'exit';
    /** @internal */
    private readonly viewContainerRef;
    /** @internal */
    private _componentFactoryOrTemplate;
    private _newInjector;
    constructor(sRenderer: StyleRenderer, _appRef: ApplicationRef, _overlayRef: LyOverlayRef, _theme: LyTheme2, _el: ElementRef<HTMLElement>, _cd: ChangeDetectorRef, _renderer: Renderer2, _trapFactory: FocusTrapFactory);
    ngOnInit(): void;
    ngAfterContentInit(): void;
    ngOnDestroy(): void;
    /** @internal */
    _init(componentFactoryOrTemplate: ComponentFactory<any> | TemplateRef<any>, newInjector: Injector): void;
    /**
     * Start to close, starts the dialog exit animation.
     * @internal
     */
    _startClose(): void;
    _onAnimationStart(event: AnimationEvent): void;
    /** @internal */
    _onAnimationDone(event: AnimationEvent): void;
    private _destroy;
    /** @internal */
    _getHostElement(): HTMLElement;
    private _captureFocus;
    static ɵfac: i0.ɵɵFactoryDeclaration<LyDialogContainer, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LyDialogContainer, "ly-dialog-container", never, {}, {}, never, never, false, never>;
}
export declare class LyDialogContext {
    private _injector;
    $implicit: any;
    dialogRef: LyDialogRef;
    get data(): unknown;
    constructor(_injector: Injector);
}
export {};
