import { default as CxButton } from '../../../atoms/src/components/button/button.ts';
import { default as CxCard } from '../../../atoms/src/components/card/card.ts';
import { default as CxGrid } from '../../../atoms/src/components/grid/grid.ts';
import { default as CxGridItem } from '../../../atoms/src/components/grid-item/grid-item.ts';
import { default as CxIcon } from '../../../atoms/src/components/icon/icon.ts';
import { default as CxInput } from '../../../atoms/src/components/input/input.ts';
import { default as CxOption } from '../../../atoms/src/components/option/option.ts';
import { default as CxSelect } from '../../../atoms/src/components/select/select.ts';
import { default as CxSpace } from '../../../atoms/src/components/space/space.ts';
import { default as CxTypography } from '../../../atoms/src/components/typography/typography.ts';
import { default as CortexElement } from '../../../base/src/cortex-element.ts';
import { CSSResultGroup, TemplateResult } from 'lit';

export type DashboardFilterOption = {
    disabled?: boolean;
    label: string;
    value: string;
};
/** Raw option row keyed by source column names (used when {@link DashboardFilterControl.optionColumnMapping} is set). */
export type DashboardFilterOptionRow = Record<string, unknown>;
export type DashboardFilterControl = {
    controlId: string;
    controlType: string;
    /**
     * ID generated by cx-table
     */
    id: string;
    label: string;
    maxOptionsVisible?: number;
    /**
     * Maps option fields to column names on each {@link DashboardFilterControl.options} row.
     * Omitted keys fall back to columns named `disabled`, `label`, and `value`.
     */
    optionColumnMapping: Partial<Record<keyof DashboardFilterOption, string>>;
    /** Pre-shaped options, or raw rows when `optionColumnMapping` is non-empty. */
    options?: DashboardFilterOption[] | DashboardFilterOptionRow[];
    placeholder?: string;
    type?: string;
};
/**
 * @summary Dashboard filter panel (Filters & Controls) with date range, category, status and actions.
 *
 * @event cx-dashboard-filter-change - Emitted when the user applies filters.
 * @event cx-dashboard-filter-reset - Emitted when the user resets filters.
 */
export default class CxDashboardFilter extends CortexElement {
    static readonly styles: CSSResultGroup;
    static readonly dependencies: {
        'cx-button': typeof CxButton;
        'cx-card': typeof CxCard;
        'cx-grid': typeof CxGrid;
        'cx-grid-item': typeof CxGridItem;
        'cx-icon': typeof CxIcon;
        'cx-input': typeof CxInput;
        'cx-option': typeof CxOption;
        'cx-select': typeof CxSelect;
        'cx-space': typeof CxSpace;
        'cx-typography': typeof CxTypography;
    };
    private readonly localize;
    private readonly hasSlotController;
    /** Title of the filter panel. */
    panelTitle: string;
    /** Controls to show in the filter panel. */
    controls: DashboardFilterControl[];
    /** Whether to show the reset button. */
    showResetButton: boolean;
    noControlsLabel: string;
    /** Default value for the filter panel. */
    defaultValue: Record<string, unknown>;
    /** Data for the filter panel. */
    value: Record<string, unknown>;
    runFirstUpdated(): void;
    private handleChange;
    private handleReset;
    private handleApply;
    render(): TemplateResult;
}
declare global {
    interface HTMLElementTagNameMap {
        'cx-dashboard-filter': CxDashboardFilter;
    }
}
