import { ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { ControlValueAccessor, FormGroup } from '@angular/forms';
import { TranslateService } from '@ngx-translate/core';
import { LoadingStateIndicators } from '@seniorsistemas/angular-components/loading-state';
import { LocalizedBignumberOptions } from '@seniorsistemas/angular-components/locale';
import { SortMeta } from 'primeng/api';
import { AutoComplete, AutoCompleteCompleteEvent } from 'primeng/autocomplete';
import { Table, TableLazyLoadEvent } from 'primeng/table';
import { ExpandedDynamicType } from '../../configurations/structure/row';
import { DynamicStructure } from '../../configurations/structure/structure';
import { BignumberFieldConfig } from '../../form-field/configurations/fields/bignumber-field';
import { CurrencyFieldConfig } from '../../form-field/configurations/fields/currency-field';
import { DynamicType } from '../../form-field/configurations/fields/field';
import { NumberFieldConfig } from '../../form-field/configurations/fields/number-field';
import { SelectFieldConfig } from '../../form-field/configurations/fields/select-field';
import { TextFieldConfig } from '../../form-field/configurations/fields/text-field';
import { LookupAlertConfig } from './models/lookup-alert-config';
import { LookupSearchRequest } from './models/lookup-api.model';
import { DefaultFilter } from './types/default-filter';
import { LabelOptions } from './types/label-options';
import { LookupGridFields } from './types/lookup-models';
import * as i0 from "@angular/core";
export declare class LookupComponent implements ControlValueAccessor, OnChanges, OnInit, OnDestroy {
    private readonly hotkeysService;
    protected readonly translateService: TranslateService;
    protected readonly changeDetectorRef: ChangeDetectorRef;
    private readonly MAP_FORM_DIALOG_CONTROLS;
    private readonly lookupDialogContainer;
    protected rowType: string;
    indicatorLogo: LoadingStateIndicators;
    static nextId: number;
    protected hasSearched: boolean;
    alertConfig?: LookupAlertConfig;
    formControlName?: string;
    id: string;
    autocompleteForceSelection: boolean;
    maxlength: number | null;
    multiple: boolean;
    dataKey: string;
    disabled: boolean;
    showSearch: boolean;
    lookupSuggestions: any[];
    lookupDisplayField?: string;
    lookupDisplayFieldTooltip: boolean;
    lookupEmptyMessage?: string;
    lookupAppendTo?: string | undefined;
    searchEmptyDescription?: string;
    searchGridData: any[];
    searchTotalRecords: number;
    searchFields: (DynamicType & {
        customName?: string;
    } & Pick<ExpandedDynamicType, 'size'>)[];
    searchGridFields: LookupGridFields[];
    multiSortMeta: SortMeta[];
    placeholder?: string;
    sortableColumnsDisabled: string[];
    lookupRowProps: string[];
    defaultFilter: DefaultFilter[];
    showAddOption: boolean;
    showEditOption: boolean;
    showRemoveOption: boolean;
    dialogFullScreen: import("@angular/core").InputSignal<boolean>;
    onLookupRequest: EventEmitter<string>;
    onSearchRequest: EventEmitter<LookupSearchRequest>;
    onFocus: EventEmitter<any>;
    onBlur: EventEmitter<any>;
    onKeyUp: EventEmitter<any>;
    onSelect: EventEmitter<any>;
    onUnselect: EventEmitter<any>;
    onClear: EventEmitter<any>;
    onAdd: EventEmitter<any>;
    onEdit: EventEmitter<unknown>;
    onRemove: EventEmitter<unknown[]>;
    onClearButtonClick: EventEmitter<void>;
    table: Table | null;
    autocomplete: AutoComplete | null;
    labelOptions?: Partial<LabelOptions>;
    value: any;
    loading: boolean;
    animating: boolean;
    dialogVisible: boolean;
    collapsed: boolean;
    selected: any[];
    formGroupDialog: FormGroup<any>;
    transitionOptions: string;
    protected searchFieldsDynamicStructure: DynamicStructure[];
    private onChange?;
    private onTouched?;
    private originalFormValues;
    private readonly ngUnsubscribe;
    ngOnInit(): void;
    printRecordTotalizer(): string;
    private _convertToMomentHourFormat;
    private _convertToMomentDateFormat;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    getGridData(): any[];
    getLookupSuggestions(): any[];
    protected makeSearchRequestParams(event: TableLazyLoadEvent): LookupSearchRequest;
    lazyLoadGrid(event: TableLazyLoadEvent): void;
    onCompleteMethod(event: AutoCompleteCompleteEvent): void;
    setDefaultFilters(): void;
    showDialog(): Promise<void>;
    setInputs(componentRef: any, configs: any, form: any): void;
    onVisibleChange(visibilityState: boolean): void;
    hideDialog(): void;
    search(): void;
    clear(): void;
    protected resetTable(): void;
    select(): void;
    onSelectionChange(selected: any): void;
    registerOnChange(onChange: Function): void;
    registerOnTouched(onTouched: Function): void;
    writeValue(value: any): void;
    setDisabledState(disabled: boolean): void;
    getFieldValue(obj: any, path: string): any;
    getBadgeFromValue(value: unknown, field: SelectFieldConfig): Partial<Pick<import("@seniorsistemas/angular-components/badge").BadgeComponent, "type" | "iconClass" | "color" | "iconPosition">> | undefined;
    getLabelForValue(value: unknown, field: SelectFieldConfig): string;
    isBooleanValue(obj: any, path: string): boolean;
    getBooleanLabel(obj: any, path: string, optionsLabel: BooleanOptionsLabel | undefined): string | undefined;
    isNumber(obj: any, path: string): boolean;
    hasRenderableValue(obj: any, path: string): boolean;
    setHotkeys(): void;
    private newHotkey;
    filterToggle(): void;
    onToggleDone(): void;
    /**
     * Calculate the table column size. The minimum value is 14.286em, which is equals to 200px duo to the current font size.
     * @param label Column name.
     */
    getColWidth(label: string): string;
    getScale(scale: any): number;
    private isFunction;
    getDoubleMaskConfig(col: NumberFieldConfig | BignumberFieldConfig): LocalizedBignumberOptions;
    getMoneyMaskConfig(col: CurrencyFieldConfig): LocalizedBignumberOptions;
    getIntegerMaskConfig(col: BignumberFieldConfig | NumberFieldConfig): LocalizedBignumberOptions;
    getNumberMaskConfig(col: NumberFieldConfig | BignumberFieldConfig): LocalizedBignumberOptions;
    parseValueMaskValue(col: DynamicType, rowData: any): any;
    fieldHasMask(field: DynamicType): field is NumberFieldConfig | BignumberFieldConfig | TextFieldConfig;
    onTableRowDoubleClick(rowData: any): void;
    private _setFocusFilter;
    private _subscribeEvents;
    static ɵfac: i0.ɵɵFactoryDeclaration<LookupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LookupComponent, "s-lookup", never, { "alertConfig": { "alias": "alertConfig"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "id": { "alias": "id"; "required": false; }; "autocompleteForceSelection": { "alias": "autocompleteForceSelection"; "required": false; }; "maxlength": { "alias": "maxlength"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "dataKey": { "alias": "dataKey"; "required": true; }; "disabled": { "alias": "disabled"; "required": false; }; "showSearch": { "alias": "showSearch"; "required": false; }; "lookupSuggestions": { "alias": "lookupSuggestions"; "required": false; }; "lookupDisplayField": { "alias": "lookupDisplayField"; "required": false; }; "lookupDisplayFieldTooltip": { "alias": "lookupDisplayFieldTooltip"; "required": false; }; "lookupEmptyMessage": { "alias": "lookupEmptyMessage"; "required": false; }; "lookupAppendTo": { "alias": "lookupAppendTo"; "required": false; }; "searchEmptyDescription": { "alias": "searchEmptyDescription"; "required": false; }; "searchGridData": { "alias": "searchGridData"; "required": false; }; "searchTotalRecords": { "alias": "searchTotalRecords"; "required": false; }; "searchFields": { "alias": "searchFields"; "required": false; }; "searchGridFields": { "alias": "searchGridFields"; "required": false; }; "multiSortMeta": { "alias": "multiSortMeta"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "sortableColumnsDisabled": { "alias": "sortableColumnsDisabled"; "required": false; }; "lookupRowProps": { "alias": "lookupRowProps"; "required": false; }; "defaultFilter": { "alias": "defaultFilter"; "required": false; }; "showAddOption": { "alias": "showAddOption"; "required": false; }; "showEditOption": { "alias": "showEditOption"; "required": false; }; "showRemoveOption": { "alias": "showRemoveOption"; "required": false; }; "dialogFullScreen": { "alias": "dialogFullScreen"; "required": false; "isSignal": true; }; "labelOptions": { "alias": "labelOptions"; "required": false; }; }, { "onLookupRequest": "onLookupRequest"; "onSearchRequest": "onSearchRequest"; "onFocus": "onFocus"; "onBlur": "onBlur"; "onKeyUp": "onKeyUp"; "onSelect": "onSelect"; "onUnselect": "onUnselect"; "onClear": "onClear"; "onAdd": "onAdd"; "onEdit": "onEdit"; "onRemove": "onRemove"; "onClearButtonClick": "onClearButtonClick"; }, never, never, true, never>;
    static ngAcceptInputType_lookupAppendTo: string | undefined;
}
export interface BooleanOptionsLabelConfig {
    true: string;
    false: string;
    empty?: string;
    clear?: string;
}
export declare class BooleanOptionsLabel {
    true: string;
    false: string;
    empty?: string;
    clear?: string;
    constructor(config: BooleanOptionsLabelConfig);
}
