import { AfterViewInit, EventEmitter, TemplateRef } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { KeyFilterPattern } from 'primeng/keyfilter';
import { ChipAddEvent } from '../models/chip-models';
import * as i0 from "@angular/core";
/**
 * @description Componente de entrada de tags/chips que permite adicionar e remover
 * itens de texto livremente ou a partir de uma lista. Suporta templates personalizados
 * para renderização de cada chip, filtro de teclas, limite de itens e duplicação configurável.
 * Implementa {@link ControlValueAccessor} para uso em formulários Angular.
 *
 * @example
 * ```html
 * <s-chips
 *   formControlName="tags"
 *   placeholder="Adicionar tag..."
 *   [max]="10"
 *   [allowDuplicated]="false"
 *   (added)="onAdded($event)" />
 * ```
 *
 * @category Inputs
 */
export declare class ChipsComponent implements AfterViewInit, ControlValueAccessor {
    private readonly cdr;
    newItem: string;
    chipTemplate?: TemplateRef<any>;
    /** @description Desabilita a interação com o componente. @default false */
    disabled: boolean;
    /** @description Chave do objeto usada para exibição quando os itens são objetos complexos. @default '' */
    field: string;
    /** @description Lista de chips atualmente exibidos. @default [] */
    value: any[];
    /** @description Texto de placeholder exibido no campo de entrada quando vazio. */
    placeholder: string | undefined;
    /** @description Número máximo de chips permitidos. @default Infinity */
    max: number;
    /** @description Comprimento máximo do texto de cada chip. @default Infinity */
    maxLength: number;
    /** @description Identificador do elemento `<input>` interno. Gerado automaticamente se não informado. */
    inputId: string;
    /** @description Permite a adição de chips com valor duplicado. @default true */
    allowDuplicated: boolean;
    /** @description Quando `false`, a comparação de duplicatas é case-insensitive. @default false */
    caseSensitiveDuplication: boolean;
    /** @description Adiciona o chip ao pressionar Tab. @default true */
    addOnTab: boolean;
    /** @description Adiciona o chip ao perder o foco (blur). @default true */
    addOnBlur: boolean;
    /** @description Caractere separador que, quando digitado, confirma a adição de um novo chip. @default '' */
    separator: string;
    /** @description Coloca o foco automaticamente no campo de entrada ao renderizar o componente. @default false */
    autofocus: boolean;
    /** @description Texto informativo exibido abaixo do campo de entrada. @default '' */
    infoLabel: string;
    /** @description Expressão regular ou padrão predefinido (PrimeNG KeyFilterPattern) para filtrar teclas aceitas. */
    keyFilter?: RegExp | KeyFilterPattern;
    /** @description Exibe tooltip ao passar o mouse sobre chips com texto truncado. @default true */
    showTooltip: boolean;
    /** @description Número máximo de caracteres exibidos diretamente no chip sem aplicar truncamento. @default 20 */
    maxLengthRenderWithoutTooltip: number;
    /** @description Emitido quando um novo chip é adicionado com sucesso. */
    added: EventEmitter<ChipAddEvent>;
    /** @description Emitido quando um chip é removido pelo usuário. */
    removed: EventEmitter<import("../models/chip-models").ChipEvent>;
    /** @description Emitido quando o campo de entrada recebe foco. */
    focused: EventEmitter<FocusEvent>;
    /** @description Emitido quando o campo de entrada perde o foco. */
    focusLost: EventEmitter<FocusEvent>;
    /** @description Emitido quando o usuário clica em um chip existente. */
    chipClicked: EventEmitter<import("../models/chip-models").ChipEvent>;
    /** @description Emitido sempre que a lista de chips é alterada (adição ou remoção). */
    valueChange: EventEmitter<any[] | string[]>;
    private readonly templates;
    private readonly input;
    isFocused: boolean;
    onChange: (value: string[] | any[]) => void;
    onTouched: (value: string[] | any[]) => void;
    private isTabEventActive;
    ngAfterViewInit(): void;
    writeValue(obj: string[] | any[]): void;
    registerOnChange(fn: (value: string[] | any[]) => void): void;
    registerOnTouched(fn: () => void): void;
    setDisabledState(isDisabled: boolean): void;
    onKeydown($event: KeyboardEvent): void;
    onInputFocus($event: FocusEvent): void;
    onInputLostFocus($event: FocusEvent): void;
    removeItem({ itemIndex, event }: {
        itemIndex: number;
        event: Event;
    }): void;
    onChipClicked({ event, data }: {
        event: Event;
        data: string | Object;
    }): void;
    private addItem;
    private hasValueToAdd;
    private isMaxReached;
    private isValidItemLength;
    private getMappedValues;
    private getValueToAdd;
    private hasDuplicatedItem;
    private storeValue;
    static ɵfac: i0.ɵɵFactoryDeclaration<ChipsComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ChipsComponent, "s-chips", never, { "disabled": { "alias": "disabled"; "required": false; }; "field": { "alias": "field"; "required": false; }; "value": { "alias": "value"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "max": { "alias": "max"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "allowDuplicated": { "alias": "allowDuplicated"; "required": false; }; "caseSensitiveDuplication": { "alias": "caseSensitiveDuplication"; "required": false; }; "addOnTab": { "alias": "addOnTab"; "required": false; }; "addOnBlur": { "alias": "addOnBlur"; "required": false; }; "separator": { "alias": "separator"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "infoLabel": { "alias": "infoLabel"; "required": false; }; "keyFilter": { "alias": "keyFilter"; "required": false; }; "showTooltip": { "alias": "showTooltip"; "required": false; }; "maxLengthRenderWithoutTooltip": { "alias": "maxLengthRenderWithoutTooltip"; "required": false; }; }, { "added": "added"; "removed": "removed"; "focused": "focused"; "focusLost": "focusLost"; "chipClicked": "chipClicked"; "valueChange": "valueChange"; }, ["templates"], never, false, never>;
}
