import { EventEmitter } from '../../../stencil-public-runtime';
import type { BasePdsProps } from "../../../utils/interfaces";
import type { PdsFilterOpenEventDetail, PdsFilterCloseEventDetail, PdsFilterClearEventDetail, PdsFilterVariant } from './filter-interface';
/**
 * Individual filter component with cross-browser popover positioning.
 *
 * Uses a hybrid approach for optimal cross-browser compatibility:
 * - Modern browsers: CSS anchor positioning + JavaScript flip classes
 * - Fallback browsers: JavaScript positioning with viewport boundary detection
 *
 * @part button - Exposes the trigger button element for styling.
 * @part button-content - Exposes the button content container for styling.
 * @part button-text - Exposes the button text for styling.
 * @part icon - Exposes the icon component for styling.
 * @part popover - Exposes the popover container for styling.
 * @slot (default) - Popover content that will be displayed when the filter is open.
 */
export declare class PdsFilter implements BasePdsProps {
    el: HTMLPdsFilterElement;
    private popoverEl;
    private scrollRAF;
    private lastScrollTime;
    /**
     * A unique identifier used for the underlying component `id` attribute.
     */
    componentId: string;
    /**
     * The variant style of the filter trigger.
     * @defaultValue 'default'
     */
    variant: PdsFilterVariant;
    /**
     * The name of the icon to display in the trigger button.
     * For 'clear' variant, this is ignored as it always shows trash icon.
     */
    icon?: string;
    /**
     * The text content displayed in the trigger button.
     */
    text?: string;
    /**
     * State to track if the popover is open.
     */
    isOpen: boolean;
    /**
     * Event emitted when the filter popover is opened.
     */
    pdsFilterOpen: EventEmitter<PdsFilterOpenEventDetail>;
    /**
     * Event emitted when the filter popover is closed.
     */
    pdsFilterClose: EventEmitter<PdsFilterCloseEventDetail>;
    /**
     * Event emitted when the clear variant is clicked.
     */
    pdsFilterClear: EventEmitter<PdsFilterClearEventDetail>;
    /**
     * Component lifecycle: Clean up when disconnected from DOM.
     * Prevents memory leaks by canceling pending operations and closing popovers.
     */
    disconnectedCallback(): void;
    componentDidRender(): void;
    /**
     * Handle native popover toggle events directly on the element
     * This is needed for browsers with native Popover API support
     */
    private handleNativePopoverToggle;
    /**
     * Reposition popovers on window resize.
     */
    handleWindowResize(): void;
    /**
     * Reposition popovers on scroll with performance throttling.
     */
    handleWindowScroll(): void;
    /**
     * Closes other open filter popovers to ensure only one is open at a time.
     */
    private closeOtherPopovers;
    /**
     * Adjusts popover position to keep it within viewport bounds.
     * Uses CSS anchor positioning for modern browsers, JavaScript for fallback browsers.
     */
    private adjustPopoverPosition;
    /**
     * Opens the filter popover programmatically.
     * Note: Clear variant does not support popover functionality.
     */
    showFilter(): Promise<void>;
    /**
     * Closes the filter popover programmatically.
     * Note: Clear variant does not support popover functionality.
     */
    hideFilter(): Promise<void>;
    /**
     * Listen for popover toggle events for browsers without native Popover API (fallback).
     * Native API browsers use direct element listeners to avoid conflicts.
     */
    handlePopoverToggle(event: Event): void;
    /**
     * Listen for clicks to detect outside dismissal.
     */
    handleDocumentClick(event: Event): void;
    /**
     * Listen for Escape key to ensure close event fires.
     */
    handleEscapeKey(event: KeyboardEvent): void;
    /**
     * Handle keyboard interactions for clear variant only.
     */
    private handleKeyDown;
    /**
     * Handle trigger button click. Clear variant emits event, others toggle popover.
     */
    private handleClick;
    /**
     * Get the appropriate icon for the variant.
     */
    private getIcon;
    /**
     * Get CSS classes for the trigger button.
     */
    private getTriggerClasses;
    /**
     * Render the trigger icon.
     */
    private renderIcon;
    /**
     * Render the dropdown icon for selected variant.
     */
    private renderDropdownIcon;
    render(): any;
}
