import { Subject, Observable } from 'rxjs';
import { ValidatorFn, AsyncValidatorFn } from "@angular/forms";
import { DynFormControl } from "./dyn-form-control";
export declare class DynAutoCompleteControl extends DynFormControl {
    type: string;
    loader: AutoCompleteCriteriaLoader;
    selectOptions$: Subject<any[]>;
    total: number;
    items: any[];
    constructor(options?: {}, validator?: ValidatorFn | ValidatorFn[] | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null);
    loadValues(value: any): void;
    displayFn(item: any): any;
}
export interface AutoCompleteLoadFn {
    (criteria: any): Observable<Object>;
}
export interface ArrayAutoCompleteFilterLoadFn {
    (item: any, value: any): boolean;
}
export interface AutoCompleteCriteriaLoader {
    codeProperty: string;
    valueProperty: string;
    prepare(criteria: any): Observable<Object>;
    processResponse(response: any): any;
}
export declare class ArrayAutoCompleteLoader implements AutoCompleteCriteriaLoader {
    items: any[];
    filterFn: ArrayAutoCompleteFilterLoadFn;
    size: number;
    page: number;
    codeProperty: string;
    valueProperty: string;
    constructor(items: any[], filterFn: ArrayAutoCompleteFilterLoadFn, options: any);
    prepare(value: any): Observable<Object>;
    processResponse(response: any): any;
}
export declare class ObservableAutoCompleteLoader implements AutoCompleteCriteriaLoader {
    loadFn: AutoCompleteLoadFn;
    size: number;
    page: number;
    codeProperty: string;
    valueProperty: string;
    constructor(loadFn: AutoCompleteLoadFn, options?: any);
    prepare(value: any): Observable<Object>;
    processResponse(response: any): {
        total: any;
        items: any;
    };
}
export declare class KeywordAutoCompleteCriteriaLoader implements AutoCompleteCriteriaLoader {
    loadFn: AutoCompleteLoadFn;
    size: number;
    page: number;
    inclusive: boolean;
    keywordProperty: string;
    codeProperty: string;
    valueProperty: string;
    constructor(loadFn: AutoCompleteLoadFn, options?: any);
    resolveContext(value: any): {
        size: number;
        page: number;
        inclusive: boolean;
        criteria: any[];
    };
    prepare(value: any): Observable<Object>;
    processResponse(response: any): {
        total: any;
        items: any;
    };
}
