import { AnimationEvent } from '@angular/animations';
import { ConfigurableFocusTrapFactory, FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';
import { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, DomPortal, TemplatePortal } from '@angular/cdk/portal';
import { ChangeDetectorRef, ComponentRef, ElementRef, EmbeddedViewRef, EventEmitter } from '@angular/core';
import { CovalentSideSheetConfig } from './side-sheet.config';
import * as i0 from "@angular/core";
export declare function _getFocusedElementPierceShadowDom(): HTMLElement | null;
/**
 * Base class for the `CovalentSideSheetContainer`. The base class does not implement
 * animations as these are left to implementers of the side-sheet container.
 */
export declare abstract class _CovalentSideSheetContainerBase extends BasePortalOutlet {
    protected _elementRef: ElementRef;
    protected _focusTrapFactory: ConfigurableFocusTrapFactory;
    protected _changeDetectorRef: ChangeDetectorRef;
    /** The side-sheet configuration. */
    _config: CovalentSideSheetConfig;
    private _focusMonitor?;
    protected _document: Document;
    /** The portal outlet inside of this container into which the side-sheet content will be loaded. */
    _portalOutlet: CdkPortalOutlet;
    /** The class that traps and manages focus within the side-sheet. */
    private _focusTrap;
    /** Emits when an animation state changes. */
    _animationStateChanged: EventEmitter<{
        state: "opened" | "opening" | "closing" | "closed";
        totalTime: number;
    }>;
    /** Element that was focused before the side-sheet was opened. Save this to restore upon close. */
    private _elementFocusedBeforeSideSheetWasOpened;
    /**
     * Type of interaction that led to the side-sheet being closed. This is used to determine
     * whether the focus style will be applied when returning focus to its original location
     * after the side-sheet is closed.
     */
    _closeInteractionType: FocusOrigin | null;
    /** ID of the element that should be considered as the side-sheet's label. */
    _ariaLabelledBy: string | null;
    /** ID for the container DOM element. */
    _id: string;
    constructor(_elementRef: ElementRef, _focusTrapFactory: ConfigurableFocusTrapFactory, _changeDetectorRef: ChangeDetectorRef, _document: any, 
    /** The side-sheet configuration. */
    _config: CovalentSideSheetConfig, _focusMonitor?: FocusMonitor | undefined);
    /** Starts the side-sheet exit animation. */
    abstract _startExitAnimation(): void;
    /** Initializes the side-sheet container with the attached content. */
    _initializeWithAttachedContent(): void;
    /**
     * Attach a ComponentPortal as content to this side-sheet container.
     * @param portal Portal to be attached as the side-sheet content.
     */
    attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T>;
    /**
     * Attach a TemplatePortal as content to this side-sheet container.
     * @param portal Portal to be attached as the side-sheet content.
     */
    attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C>;
    /**
     * Attaches a DOM portal to the side-sheet container.
     * @param portal Portal to be attached.
     * @deprecated To be turned into a method.
     */
    attachDomPortal: (portal: DomPortal) => void;
    /** Moves focus back into the side-sheet if it was moved out. */
    _recaptureFocus(): void;
    /**
     * Moves the focus inside the focus trap. When autoFocus is not set to 'side-sheet', if focus
     * cannot be moved then focus will go to the side-sheet container.
     */
    protected _trapFocus(): void;
    /** Restores focus to the element that was focused before the side-sheet opened. */
    protected _restoreFocus(): void;
    /** Sets up the focus trap. */
    private _setupFocusTrap;
    /** Captures the element that was focused before the side-sheet was opened. */
    private _capturePreviouslyFocusedElement;
    /** Focuses the side-sheet container. */
    private _focusSideSheetContainer;
    /** Returns whether focus is inside the side-sheet. */
    private _containsFocus;
    static ɵfac: i0.ɵɵFactoryDeclaration<_CovalentSideSheetContainerBase, [null, null, null, { optional: true; }, null, null]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<_CovalentSideSheetContainerBase, never, never, {}, {}, never, never, true, never>;
}
/**
 * Internal component that wraps the generated side-sheet content.
 * This animation below is the only reason for duplicating most of the Material dialog code
 */
export declare class CovalentSideSheetContainerComponent extends _CovalentSideSheetContainerBase {
    /** State of the side-sheet animation. */
    _state: 'void' | 'enter' | 'exit';
    tdSideSheetContainerClass: boolean;
    tabIndex: number;
    arialModal: boolean;
    idAttr: string;
    roleAttr: import("@angular/material/dialog.d-B5HZULyo").D | undefined;
    arialLabelByAttr: string | null;
    arialDescribeByAttr: string | null;
    arialLabelAttr: string | null | undefined;
    get sideSheetAnimationState(): "enter" | "void" | "exit";
    onAnimateStart($event: AnimationEvent): void;
    onAnimateDone($event: AnimationEvent): void;
    /** Callback, invoked whenever an animation on the host completes. */
    _onAnimationDone({ toState, totalTime }: AnimationEvent): void;
    /** Callback, invoked when an animation on the host starts. */
    _onAnimationStart({ toState, totalTime }: AnimationEvent): void;
    /** Starts the side-sheet exit animation. */
    _startExitAnimation(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<CovalentSideSheetContainerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CovalentSideSheetContainerComponent, "td-side-sheet-container", never, {}, {}, never, never, true, never>;
}
