import * as _siemens_element_translate_ng_translate from '@siemens/element-translate-ng/translate';
import { TranslatableString } from '@siemens/element-translate-ng/translate';
import * as _angular_core from '@angular/core';
import { BackgroundColorVariant } from '@siemens/element-ng/common';

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */

/**
 * @deprecated FilterStatusType has been deprecated as it no longer has any visual effect on filter pills.
 * This type will be removed in the next major version. Please remove any usage of the `status` property
 * from your Filter objects as it is now ignored by the component.
 */
type FilterStatusType = 'default' | 'success' | 'info' | 'warning' | 'danger' | 'inactive';
interface Filter {
    /**
     * Identification name of filter pill.
     * Is not shown to the user, please specify either a {@link title} or a {@link description}.
     */
    filterName: string;
    /**
     * Shown title of filter pill.
     * Can be left empty if {@link description} is used.
     */
    title?: TranslatableString;
    /**
     * Short description of filter pill.
     * Can be left empty if {@link title} is used to align the title to middle of pill.
     */
    description?: TranslatableString;
    /**
     * @deprecated The status property has been deprecated as it no longer has any visual effect on filter pills.
     * This property will be removed in the next major version. Please remove this property from your Filter
     * objects as it is now ignored by the filter component.
     */
    status?: FilterStatusType;
}

declare class SiFilterBarComponent {
    /**
     * Custom text if no filters are selected.
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_FILTER_BAR.NO_FILTERS:No filters applied`)
     * ```
     */
    readonly filterDefaultText: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
    /**
     * Array of filter items to show
     *
     * @defaultValue []
     */
    readonly filters: _angular_core.ModelSignal<Filter[]>;
    /**
     * Text for reset button
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_FILTER_BAR.RESET_FILTERS:Reset filters`)
     * ```
     */
    readonly resetText: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
    /**
     * Set false to hide reset filters button
     *
     * @defaultValue true
     */
    readonly allowReset: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Color to use for component background
     *
     * @defaultValue 'base-1'
     */
    readonly colorVariant: _angular_core.InputSignal<BackgroundColorVariant>;
    /**
     * Set to true to disable component
     *
     * @defaultValue false
     */
    readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Custom text for the collapsed filters.
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_FILTER_BAR.COLLAPSED_FILTERS_DESCRIPTION:+ {{count}} filters`)
     * ```
     */
    readonly collapsedFiltersDescription: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
    /**
     * Output callback to be executed when the reset filter is clicked
     */
    readonly resetFilters: _angular_core.OutputEmitterRef<void>;
    private readonly collapsableListDirective;
    protected deleteFilters(deletedPill: Filter): void;
    protected onResetFilters(): void;
    protected deleteOverflowFilter(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiFilterBarComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiFilterBarComponent, "si-filter-bar", never, { "filterDefaultText": { "alias": "filterDefaultText"; "required": false; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "resetText": { "alias": "resetText"; "required": false; "isSignal": true; }; "allowReset": { "alias": "allowReset"; "required": false; "isSignal": true; }; "colorVariant": { "alias": "colorVariant"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "collapsedFiltersDescription": { "alias": "collapsedFiltersDescription"; "required": false; "isSignal": true; }; }, { "filters": "filtersChange"; "resetFilters": "resetFilters"; }, never, never, true, never>;
}

declare class SiFilterBarModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiFilterBarModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<SiFilterBarModule, never, [typeof SiFilterBarComponent], [typeof SiFilterBarComponent]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<SiFilterBarModule>;
}

declare class SiFilterPillComponent {
    protected readonly icons: Record<"elementCancel", string>;
    /**
     * Settings of the filter pill.
     */
    readonly filter: _angular_core.InputSignal<Filter>;
    /** @defaultValue false */
    readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** @defaultValue 0 */
    readonly totalPills: _angular_core.InputSignal<number>;
    /**
     * Output callback event which will provide you the name of the deleted filter
     * pill if a filter was deleted.
     */
    readonly deleteFilters: _angular_core.OutputEmitterRef<Filter>;
    protected deleteClicked(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiFilterPillComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiFilterPillComponent, "si-filter-pill", never, { "filter": { "alias": "filter"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "totalPills": { "alias": "totalPills"; "required": false; "isSignal": true; }; }, { "deleteFilters": "deleteFilters"; }, never, never, true, never>;
}

export { SiFilterBarComponent, SiFilterBarModule, SiFilterPillComponent };
export type { Filter, FilterStatusType };
