import * as _angular_core from '@angular/core';
import { PipeTransform, AfterViewInit, ElementRef, TemplateRef } from '@angular/core';
import { FormGroup, FormControl, FormGroupDirective, NgForm } from '@angular/forms';
import { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
import { MatChipInputEvent } from '@angular/material/chips';
import { ErrorStateMatcher } from '@angular/material/core';
import { MatFormFieldAppearance, FloatLabelType } from '@angular/material/form-field';
import { SdViewDefDirective, SdLabelDefDirective } from '@sdcorejs/angular/forms/directives';
import { SdViewed, SdViewedInput, SdFormControl } from '@sdcorejs/angular/forms/models';
import { Size } from '@sdcorejs/utils/models';

declare class SdRemovableChipPipe implements PipeTransform {
    constructor();
    transform(item: any, removable: boolean | ((item: any) => boolean)): boolean;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdRemovableChipPipe, never>;
    static ɵpipe: _angular_core.ɵɵPipeDeclaration<SdRemovableChipPipe, "sdRemovableChip", true>;
}

declare class SdChipErrorStateMatcher implements ErrorStateMatcher {
    private formControl;
    constructor(formControl: FormControl);
    isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean;
}
declare class SdChip implements AfterViewInit {
    #private;
    autoIdInput: _angular_core.InputSignalWithTransform<string | undefined, string | null | undefined>;
    autoId: _angular_core.Signal<string | undefined>;
    readonly dataDisabled: _angular_core.Signal<"true" | "false">;
    readonly dataEmpty: _angular_core.Signal<"true" | "false">;
    readonly dataValue: _angular_core.Signal<string>;
    readonly dataCount: _angular_core.Signal<string>;
    readonly dataRequired: _angular_core.Signal<"true" | "false">;
    readonly dataErrorMessage: _angular_core.Signal<string | null>;
    name: _angular_core.InputSignalWithTransform<string | undefined, string | null | undefined>;
    appearance: _angular_core.InputSignalWithTransform<MatFormFieldAppearance, MatFormFieldAppearance | null | undefined>;
    floatLabel: _angular_core.InputSignalWithTransform<FloatLabelType, FloatLabelType | null | undefined>;
    size: _angular_core.InputSignalWithTransform<Size, Size | null | undefined>;
    form: _angular_core.InputSignalWithTransform<FormGroup<any> | undefined, any>;
    label: _angular_core.InputSignalWithTransform<string, string | null | undefined>;
    placeholder: _angular_core.InputSignalWithTransform<string | undefined, string | null | undefined>;
    removable: _angular_core.InputSignalWithTransform<boolean | ((item: any) => boolean), boolean | ((item: any) => boolean) | null | undefined>;
    hideInlineError: _angular_core.InputSignalWithTransform<boolean, unknown>;
    required: _angular_core.InputSignalWithTransform<boolean, unknown>;
    min: _angular_core.InputSignalWithTransform<number, number | null | undefined>;
    max: _angular_core.InputSignalWithTransform<number, number | null | undefined>;
    addable: _angular_core.InputSignalWithTransform<boolean, unknown>;
    disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** Display mode: `false` edit · `true` static view · `'inline'` interactive (disabled `'inline'` → static). */
    viewed: _angular_core.InputSignalWithTransform<SdViewed, SdViewedInput>;
    /** `true` when the static view should render (`viewed===true`, or disabled `'inline'`). */
    readonly isViewed: _angular_core.Signal<boolean>;
    hyperlink: _angular_core.InputSignalWithTransform<string | undefined, string | null | undefined>;
    model: _angular_core.ModelSignal<(string | number)[] | undefined>;
    sdChange: _angular_core.OutputEmitterRef<any[]>;
    input: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
    sdViewDef: _angular_core.Signal<SdViewDefDirective<any, any> | undefined>;
    sdLabelDef: _angular_core.Signal<SdLabelDefDirective | undefined>;
    sdLabelTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
    sdValueTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
    isFocused: boolean;
    readonly separatorKeysCodes: number[];
    readonly selectable = true;
    constructor();
    get formControl(): SdFormControl;
    get inputControl(): FormControl<any>;
    readonly errorMessage: _angular_core.Signal<string | undefined>;
    get matcher(): SdChipErrorStateMatcher;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    onAdd: (event: MatChipInputEvent) => void;
    onClickChip: (event: Event, item: any) => void;
    onRemove: (item: any) => void;
    onSelect: (event: MatAutocompleteSelectedEvent) => void;
    onFocus: () => void;
    onBlur: () => void;
    onClick: () => void;
    focus: () => void;
    onClear: ($event?: any) => void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdChip, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdChip, "sd-chip", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "hideInlineError": { "alias": "hideInlineError"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "addable": { "alias": "addable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "viewed": { "alias": "viewed"; "required": false; "isSignal": true; }; "hyperlink": { "alias": "hyperlink"; "required": false; "isSignal": true; }; "model": { "alias": "model"; "required": false; "isSignal": true; }; }, { "model": "modelChange"; "sdChange": "sdChange"; }, ["sdViewDef", "sdLabelDef", "sdLabelTemplate", "sdValueTemplate"], never, true, never>;
}

export { SdChip, SdRemovableChipPipe };
