import * as _angular_core from '@angular/core';
import { OnInit } from '@angular/core';
import { ControlValueAccessor, Validators, NgControl } from '@angular/forms';
import { AutoComplete } from 'primeng/autocomplete';
import { isInvalid } from '@masterteam/components';
import { HttpContext } from '@angular/common/http';

interface User {
    isExternal: boolean;
    id: string;
    displayName: string;
    userName: string;
    photo: string;
}
declare class UserSearchField implements ControlValueAccessor, OnInit {
    readonly hint: _angular_core.InputSignal<string | undefined>;
    readonly label: _angular_core.InputSignal<string | undefined>;
    readonly placeholder: _angular_core.InputSignal<string | undefined>;
    readonly class: _angular_core.InputSignal<string>;
    readonly readonly: _angular_core.InputSignal<boolean>;
    readonly required: _angular_core.InputSignal<boolean>;
    readonly apiUrl: _angular_core.InputSignal<string>;
    readonly dataKey: _angular_core.InputSignal<string>;
    readonly paramName: _angular_core.InputSignal<string>;
    readonly context: _angular_core.InputSignal<HttpContext | undefined>;
    styleClass: string;
    requiredValidator: typeof Validators.required;
    value: _angular_core.WritableSignal<User | null>;
    disabled: _angular_core.WritableSignal<boolean>;
    loading: _angular_core.WritableSignal<boolean>;
    readonly size: _angular_core.InputSignal<"small" | "large" | undefined>;
    filteredUsers: _angular_core.WritableSignal<User[]>;
    private searchTerms;
    readonly autocomplete: _angular_core.Signal<AutoComplete | undefined>;
    onTouched: () => void;
    onModelChange: (value: any) => void;
    ngControl: NgControl | null;
    private http;
    isInvalid: typeof isInvalid;
    constructor();
    ngOnInit(): void;
    search(event: {
        query: string;
    }): void;
    onFocus(): void;
    onSelect(event: {
        originalEvent: Event;
        value: User;
    }): void;
    onClear(): void;
    writeValue(value: User | null): void;
    registerOnChange(fn: (value: User | null) => void): void;
    registerOnTouched(fn: any): void;
    setDisabledState(disabled: boolean): void;
    getUsers(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<UserSearchField, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<UserSearchField, "mt-user-search-field", never, { "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; }; "apiUrl": { "alias": "apiUrl"; "required": true; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": false; "isSignal": true; }; "paramName": { "alias": "paramName"; "required": false; "isSignal": true; }; "context": { "alias": "context"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

export { UserSearchField };
export type { User };
