import * as _angular_core from '@angular/core';
import { OnInit, OnChanges, ChangeDetectorRef, EventEmitter, SimpleChanges } from '@angular/core';
import { ControlValueAccessor, Validators, NgControl } from '@angular/forms';
import { Select } from 'primeng/select';
import { isInvalid } from '@masterteam/components';

declare class SelectField implements ControlValueAccessor, OnInit, OnChanges {
    cdr: ChangeDetectorRef;
    dropdown: Select;
    readonly field: _angular_core.InputSignal<boolean>;
    readonly label: _angular_core.InputSignal<string>;
    readonly placeholder: _angular_core.InputSignal<string>;
    readonly hasPlaceholderPrefix: _angular_core.InputSignal<boolean>;
    readonly class: _angular_core.InputSignal<string>;
    readonly readonly: _angular_core.InputSignal<boolean>;
    readonly pInputs: _angular_core.InputSignal<Partial<Select> | undefined>;
    readonly options: _angular_core.InputSignal<any[] | undefined>;
    readonly optionValue: _angular_core.InputSignal<string | undefined>;
    readonly optionLabel: _angular_core.InputSignal<string | undefined>;
    readonly filter: _angular_core.InputSignal<boolean | undefined>;
    readonly filterBy: _angular_core.InputSignal<string | undefined>;
    readonly dataKey: _angular_core.InputSignal<string | undefined>;
    readonly showClear: _angular_core.InputSignal<boolean | undefined>;
    readonly clearAfterSelect: _angular_core.InputSignal<boolean | undefined>;
    readonly required: _angular_core.InputSignal<boolean>;
    readonly group: _angular_core.InputSignal<boolean>;
    readonly size: _angular_core.InputSignal<string>;
    readonly optionGroupLabel: _angular_core.InputSignal<string>;
    readonly optionGroupChildren: _angular_core.InputSignal<string>;
    readonly loading: _angular_core.InputSignal<boolean>;
    readonly optionIcon: _angular_core.InputSignal<string>;
    readonly optionIconColor: _angular_core.InputSignal<string>;
    readonly optionIconShape: _angular_core.InputSignal<string>;
    readonly optionAvatarShape: _angular_core.InputSignal<"circle" | "square">;
    readonly optionGroupIcon: _angular_core.InputSignal<string>;
    readonly optionGroupIconColor: _angular_core.InputSignal<string>;
    readonly optionGroupIconShape: _angular_core.InputSignal<string>;
    readonly optionGroupAvatarShape: _angular_core.InputSignal<"circle" | "square">;
    onChange: EventEmitter<any>;
    styleClass: string;
    requiredValidator: typeof Validators.required;
    value: _angular_core.WritableSignal<any>;
    disabled: _angular_core.WritableSignal<boolean>;
    onTouched: () => void;
    onModelChange: (value: any) => void;
    ngControl: NgControl | null;
    isInvalid: typeof isInvalid;
    constructor();
    applyInputsToDropdown(): void;
    ngOnInit(): void;
    onValueChange(value: any): void;
    ngOnChanges(changes: SimpleChanges): void;
    writeValue(value: string): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState(disabled: boolean): void;
    isGrouped(): boolean;
    clearSelection(): void;
    getOptionLabelValue(option: any): string;
    getOptionIcon(option: any): string | undefined;
    getOptionAvatarBackground(option: any): string | null;
    getOptionAvatarColor(option: any): string | null;
    getOptionAvatarShape(option: any): 'circle' | 'square';
    getGroupLabelValue(group: any): string;
    getGroupIcon(group: any): string | undefined;
    getGroupAvatarBackground(group: any): string | null;
    getGroupAvatarColor(group: any): string | null;
    getGroupAvatarShape(group: any): 'circle' | 'square';
    private getOptionColor;
    private getGroupColor;
    private getAvatarBackgroundByColor;
    private getAvatarColorByColor;
    private normalizeAvatarShape;
    /**
     * Resolves a nested dot-notation path (e.g. "name.display") on an object.
     * Falls back to direct property access for non-nested keys.
     */
    private resolveNestedValue;
    private resolveOption;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectField, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectField, "mt-select-field", never, { "field": { "alias": "field"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "hasPlaceholderPrefix": { "alias": "hasPlaceholderPrefix"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "pInputs": { "alias": "pInputs"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "optionValue": { "alias": "optionValue"; "required": false; "isSignal": true; }; "optionLabel": { "alias": "optionLabel"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "filterBy": { "alias": "filterBy"; "required": false; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "clearAfterSelect": { "alias": "clearAfterSelect"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "group": { "alias": "group"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "optionGroupLabel": { "alias": "optionGroupLabel"; "required": false; "isSignal": true; }; "optionGroupChildren": { "alias": "optionGroupChildren"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "optionIcon": { "alias": "optionIcon"; "required": false; "isSignal": true; }; "optionIconColor": { "alias": "optionIconColor"; "required": false; "isSignal": true; }; "optionIconShape": { "alias": "optionIconShape"; "required": false; "isSignal": true; }; "optionAvatarShape": { "alias": "optionAvatarShape"; "required": false; "isSignal": true; }; "optionGroupIcon": { "alias": "optionGroupIcon"; "required": false; "isSignal": true; }; "optionGroupIconColor": { "alias": "optionGroupIconColor"; "required": false; "isSignal": true; }; "optionGroupIconShape": { "alias": "optionGroupIconShape"; "required": false; "isSignal": true; }; "optionGroupAvatarShape": { "alias": "optionGroupAvatarShape"; "required": false; "isSignal": true; }; }, { "onChange": "onChange"; }, never, never, true, never>;
}

export { SelectField };
