import { EventEmitter, ComponentInterface } from '../../stencil-public-runtime';
import { StorageMethods } from '../../utils/store/component-store';
/**
 * Drawers slide in from a container to expose additional options and information.
 *
 * @version 5.0.0
 * @status stable
 *
 * @slot - The drawer's main content
 * @slot label - The drawer's label. Alternatively, you can use the `label` attribute
 * @slot header-actions - Optional actions to add to the header. Works best with `<nano-icon-button>`
 * @slot handle - The drawer's resize handle, used to resize the drawer when `resizable` is set
 * @slot footer - The drawer's footer, usually one or more buttons representing various options
 *
 * @part base - The component's base wrapper
 * @part overlay - The overlay that covers the screen behind the drawer
 * @part panel - The drawer's panel (where the drawer and its content are rendered)
 * @part header - The drawer's header. This element wraps the title and header actions
 * @part header-actions - Optional actions to add to the header. Works best with `<nano-icon-button>`
 * @part handle - The resize handle, used to resize the drawer when `resizable` is set
 * @part title - The drawer's title
 * @part close-button - The close button, an `<nano-icon-button>`
 * @part close-button__base - The close button's exported `base` part
 * @part body - The drawer's body
 * @part footer - The drawer's footer
 */
export declare class Drawer implements ComponentInterface {
    host: HTMLNanoDrawerElement;
    private originalTrigger;
    private drawer;
    private overlay;
    private modal;
    private slotCtrl;
    get panel(): HTMLElement;
    set panel(ele: HTMLElement);
    private _panel;
    noDismiss: boolean;
    isOpen: boolean;
    /**
     * Indicates whether or not the drawer is open. You can toggle this attribute to show and hide the drawer, or you can
     * use the `show()` and `hide()` methods and this attribute will reflect the drawer's open state.
     */
    open: boolean;
    /**
     * The drawer's label as displayed in the header. You should always include a relevant label even when using
     * `no-header`, as it is required for proper accessibility. If you need to display HTML, use the `label` slot instead.
     */
    label: string;
    /** The direction from which the drawer will open. */
    placement: 'top' | 'end' | 'bottom' | 'start';
    /**
     * By default, the drawer slides out of its containing block (usually the viewport). To make the drawer slide out of
     * its parent element, set this attribute and add `position: relative` to the parent.
     */
    contained: boolean;
    /**
     * Removes the header. This will also remove the default close button, so please ensure you provide an easy,
     * accessible way for users to dismiss the drawer.
     */
    noHeader: boolean;
    /** Store search queries (against this ID) to the component store. Use in conjunction with storeMethod */
    storeId?: string;
    /** The method of storage. Either session storage, url hash (after the '#') or url query (after the '?'). */
    storeMethod: StorageMethods;
    /** An alternative to `preventDefault()` on the `nanoRequestClose` event. This will hide the close button and disable clicks on the overlay or presses the `Escape` key  */
    noUserDismiss: boolean;
    /** Relocate the dialog to the root of the DOM. Useful for elements bound via css `transform: ...` */
    hoist: boolean;
    /** Makes the drawer resizable */
    resizable: boolean;
    handleHoistChange(): void;
    /** Emitted when the drawer opens. */
    nanoShow: EventEmitter;
    /** Emitted when the drawer closes. */
    nanoHide: EventEmitter;
    /** Emitted after the drawer closes and all animations are complete. */
    nanoAfterHide: EventEmitter;
    /** Emitted after the drawer opens and all animations are complete. */
    nanoAfterShow: EventEmitter;
    /**
     * Emitted when the drawer opens and is ready to receive focus. Calling
     * `event.preventDefault()` will prevent focusing and allow you to set it on a different element, such as an input.
     */
    nanoInitialFocus: EventEmitter;
    /**
     * Emitted when the user attempts to
     * close the drawer by clicking the close button, clicking the overlay, or pressing escape. Calling
     * `event.preventDefault()` will keep the drawer open. Avoid using this unless closing the drawer will result in
     * destructive behavior such as data loss.
     */
    nanoRequestClose: EventEmitter<{
        source: 'close-button' | 'keyboard' | 'overlay';
    }>;
    /**
     * Shows the drawer.
     * @returns a promise that resolves when the drawer has finished opening
     */
    show(): Promise<void>;
    /**
     * Hides the drawer
     * @returns a promise that resolves when the drawer has finished closing
     */
    hide(): Promise<void>;
    private requestClose;
    handleNoModalChange(): void;
    handleOpenChange(): Promise<void>;
    private addOpenListeners;
    private removeOpenListeners;
    private handleDocumentKeyDown;
    private handleTransitionEnd;
    get panelSize(): number;
    set panelSize(size: number);
    private handleKeyDown;
    private handleDrag;
    connectedCallback(): void;
    disconnectedCallback(): void;
    componentWillLoad(): void;
    componentDidLoad(): void;
    render(): any;
}
