/**
 * Copyright Aquera Inc 2023
 *
 * This source code is licensed under the BSD-3-Clause license found in the
 * LICENSE file in the root directory of this source tree.
 */
import { TemplateResult, PropertyValues } from 'lit';
import NileElement from '../internal/nile-element';
import type { CSSResultGroup } from 'lit';
import type { NileMenu } from '../nile-menu';
import type { NilePopup } from '../nile-popup';
import '../nile-popup';
/**
 * Nile icon component.
 *
 * @tag nile-dropdown
 * @summary Dropdowns expose additional content that "drops down" in a panel.
 * @dependency nile-popup
 *
 * @slot - The dropdown's main content.
 * @slot trigger - The dropdown's trigger, usually a `<nile-button>` element.
 *
 * @event nile-show - Emitted when the dropdown opens.
 * @event nile-after-show - Emitted after the dropdown opens and all animations are complete.
 * @event nile-hide - Emitted when the dropdown closes.
 * @event nile-after-hide - Emitted after the dropdown closes and all animations are complete.
 *
 * @csspart base - The component's base wrapper.
 * @csspart trigger - The container that wraps the trigger.
 * @csspart panel - The panel that gets shown when the dropdown is open.
 *
 * @animation dropdown.show - The animation to use when showing the dropdown.
 * @animation dropdown.hide - The animation to use when hiding the dropdown.
 */
export declare class NileDropdown extends NileElement {
    static styles: CSSResultGroup;
    popup: NilePopup;
    trigger: HTMLSlotElement;
    panel: HTMLSlotElement;
    /**
     * Indicates whether or not the dropdown is open. You can toggle this attribute to show and hide the dropdown, or you
     * can use the `show()` and `hide()` methods and this attribute will reflect the dropdown's open state.
     */
    open: boolean;
    /**
     * The preferred placement of the dropdown panel. Note that the actual placement may vary as needed to keep the panel
     * inside of the viewport.
     */
    placement: 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'right' | 'right-start' | 'right-end' | 'left' | 'left-start' | 'left-end';
    /** Disables the dropdown so the panel will not open. */
    disabled: boolean;
    /**
     * By default, the dropdown is closed when an item is selected. This attribute will keep it open instead. Useful for
     * dropdowns that allow for multiple interactions.
     */
    stayOpenOnSelect: boolean;
    /**
     * The dropdown will close when the user interacts outside of this element (e.g. clicking). Useful for composing other
     * components that use a dropdown internally.
     */
    containingElement?: HTMLElement;
    /** The distance in pixels from which to offset the panel away from its trigger. */
    distance: number;
    noOpenOnClick: boolean;
    /** The distance in pixels from which to offset the panel along its trigger. */
    skidding: number;
    /** Syncs the popup's width or height to that of the anchor element. */
    sync: 'width' | 'height' | 'both';
    /**
     * Enable this option to prevent the panel from being clipped when the component is placed inside a container with
     * `overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.
     */
    hoist: boolean;
    /**
     * Enable portal mode to render the dropdown panel in a portal outside the component's DOM tree.
     * This provides better positioning control and prevents clipping issues in complex layouts.
     */
    portal: boolean;
    enableVisibilityEffect: boolean;
    enableTabClose: boolean;
    private portalManager;
    private visibilityManager?;
    connectedCallback(): void;
    protected firstUpdated(_changed: PropertyValues): Promise<void>;
    disconnectedCallback(): void;
    focusOnTrigger(): void;
    getMenu(): NileMenu | undefined;
    handleKeyDown(event: KeyboardEvent): void;
    handleDocumentKeyDown(event: KeyboardEvent): void;
    handleDocumentMouseDown(event: MouseEvent): void;
    handlePanelSelect(event: any): void;
    handleTriggerClick(): void;
    handleTriggerKeyDown(event: KeyboardEvent): void;
    handleTriggerKeyUp(event: KeyboardEvent): void;
    handleTriggerSlotChange(): void;
    private isTriggerDisabled;
    updateAccessibleTrigger(): void;
    /** Shows the dropdown panel. */
    show(): Promise<void>;
    /** Hides the dropdown panel */
    hide(): Promise<void>;
    /**
     * Instructs the dropdown menu to reposition. Useful when the position or size of the trigger changes when the menu
     * is activated.
     */
    reposition(): void;
    addOpenListeners(): void;
    removeOpenListeners(): void;
    private _triggerDisabledByDropdown;
    protected updated(changedProperties: PropertyValues): void;
    private updateTriggerDisabledState;
    handleOpenChange(): Promise<void>;
    render(): TemplateResult<1>;
}
export default NileDropdown;
declare global {
    interface HTMLElementTagNameMap {
        'nile-dropdown': NileDropdown;
    }
}
