import * as _angular_core from '@angular/core';
import { EventEmitter } from '@angular/core';
import { ControlValueAccessor, Validators, NgControl } from '@angular/forms';
import { isInvalid } from '@masterteam/components';
import { TreeNode, OverlayOptions } from 'primeng/api';
import { TreeSelect } from 'primeng/treeselect';

declare class TreeSelectField implements ControlValueAccessor {
    readonly treeSelect: _angular_core.Signal<TreeSelect | undefined>;
    readonly field: _angular_core.InputSignal<boolean>;
    readonly hint: _angular_core.InputSignal<string | undefined>;
    readonly label: _angular_core.InputSignal<string>;
    readonly placeholder: _angular_core.InputSignal<string>;
    readonly class: _angular_core.InputSignal<string>;
    readonly readonly: _angular_core.InputSignal<boolean>;
    readonly required: _angular_core.InputSignal<boolean>;
    readonly pInputs: _angular_core.InputSignal<Partial<TreeSelect> | undefined>;
    readonly options: _angular_core.InputSignal<TreeNode<any>[] | undefined>;
    readonly selectionMode: _angular_core.InputSignal<"single" | "multiple" | "checkbox">;
    readonly display: _angular_core.InputSignal<"comma" | "chip">;
    readonly scrollHeight: _angular_core.InputSignal<string>;
    readonly panelStyleClass: _angular_core.InputSignal<string | undefined>;
    readonly containerStyleClass: _angular_core.InputSignal<string | undefined>;
    readonly overlayOptions: _angular_core.InputSignal<OverlayOptions | undefined>;
    readonly filter: _angular_core.InputSignal<boolean>;
    readonly filterBy: _angular_core.InputSignal<string>;
    readonly filterMode: _angular_core.InputSignal<string>;
    readonly filterPlaceholder: _angular_core.InputSignal<string | undefined>;
    readonly filterLocale: _angular_core.InputSignal<string | undefined>;
    readonly filterInputAutoFocus: _angular_core.InputSignal<boolean>;
    readonly showClear: _angular_core.InputSignal<boolean>;
    readonly resetFilterOnHide: _angular_core.InputSignal<boolean>;
    readonly propagateSelectionDown: _angular_core.InputSignal<boolean>;
    readonly propagateSelectionUp: _angular_core.InputSignal<boolean>;
    readonly virtualScroll: _angular_core.InputSignal<boolean | undefined>;
    readonly virtualScrollItemSize: _angular_core.InputSignal<number | undefined>;
    readonly loading: _angular_core.InputSignal<boolean | undefined>;
    readonly loadingMode: _angular_core.InputSignal<"mask" | "icon">;
    readonly size: _angular_core.InputSignal<"small" | "large" | undefined>;
    readonly variant: _angular_core.InputSignal<"filled" | "outlined" | undefined>;
    readonly fluid: _angular_core.InputSignal<boolean>;
    readonly appendTo: _angular_core.InputSignal<unknown>;
    readonly selectedLabelPath: _angular_core.InputSignal<string | undefined>;
    readonly onChange: EventEmitter<unknown>;
    protected get hostClass(): string;
    protected readonly inputId: _angular_core.Signal<string | undefined>;
    protected readonly resolvedValue: _angular_core.Signal<unknown>;
    protected readonly requiredValidator: typeof Validators.required;
    protected readonly value: _angular_core.WritableSignal<unknown>;
    protected readonly disabled: _angular_core.WritableSignal<boolean>;
    protected readonly isInvalid: typeof isInvalid;
    protected onTouched: () => void;
    private onModelChange;
    readonly ngControl: NgControl | null;
    constructor();
    protected openTreeSelect(): void;
    protected onValueChange(value: unknown): void;
    protected getSelectionDisplayLabel(): string | null;
    protected getContainerStyleClass(): string | undefined;
    writeValue(value: unknown): void;
    registerOnChange(fn: (value: unknown) => void): void;
    registerOnTouched(fn: () => void): void;
    setDisabledState(disabled: boolean): void;
    private resolveValue;
    private resolveSingleValue;
    private readSelectionLabel;
    private joinLabels;
    private readNodeLabel;
    private findTreeNode;
    private getTreeNodeKey;
    private isTreeNodeValue;
    private isSelectionMap;
    private isSelectionEntrySelected;
    private resolveNestedValue;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<TreeSelectField, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<TreeSelectField, "mt-treeselect-field", never, { "field": { "alias": "field"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "pInputs": { "alias": "pInputs"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "display": { "alias": "display"; "required": false; "isSignal": true; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; "isSignal": true; }; "panelStyleClass": { "alias": "panelStyleClass"; "required": false; "isSignal": true; }; "containerStyleClass": { "alias": "containerStyleClass"; "required": false; "isSignal": true; }; "overlayOptions": { "alias": "overlayOptions"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "filterBy": { "alias": "filterBy"; "required": false; "isSignal": true; }; "filterMode": { "alias": "filterMode"; "required": false; "isSignal": true; }; "filterPlaceholder": { "alias": "filterPlaceholder"; "required": false; "isSignal": true; }; "filterLocale": { "alias": "filterLocale"; "required": false; "isSignal": true; }; "filterInputAutoFocus": { "alias": "filterInputAutoFocus"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "resetFilterOnHide": { "alias": "resetFilterOnHide"; "required": false; "isSignal": true; }; "propagateSelectionDown": { "alias": "propagateSelectionDown"; "required": false; "isSignal": true; }; "propagateSelectionUp": { "alias": "propagateSelectionUp"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualScrollItemSize": { "alias": "virtualScrollItemSize"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingMode": { "alias": "loadingMode"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "fluid": { "alias": "fluid"; "required": false; "isSignal": true; }; "appendTo": { "alias": "appendTo"; "required": false; "isSignal": true; }; "selectedLabelPath": { "alias": "selectedLabelPath"; "required": false; "isSignal": true; }; }, { "onChange": "onChange"; }, never, never, true, never>;
}

export { TreeSelectField };
