import { EntityAccessor, Environment, Filter, SugaredQualifiedEntityList, SugaredQualifiedFieldList, SugaredRelativeSingleField } from '@contember/binding';
import { ReactElement, ReactNode } from 'react';
import { ChoiceFieldData } from './ChoiceFieldData';
import { SelectFuseOptionsProps } from './hooks/useFuseFilteredOptions';
/** @deprecated */
interface LegacyChoiceFieldWithOptionRenderer {
    renderOption: (entityAccessor: EntityAccessor) => ReactNode;
    options: string | SugaredQualifiedEntityList['entities'] | SugaredQualifiedEntityList;
    optionsStaticRender: ReactElement | ((environment: Environment) => ReactElement);
}
export declare type OptionsAsEntityList = string | SugaredQualifiedEntityList['entities'] | SugaredQualifiedEntityList;
export declare type OptionsAsFieldList = string | SugaredQualifiedFieldList['fields'] | SugaredQualifiedFieldList;
export declare type SearchByFields = SugaredRelativeSingleField['field'] | SugaredRelativeSingleField['field'][];
export declare type BaseDynamicChoiceFieldOptions = {
    options: OptionsAsEntityList;
    optionLabel: ReactNode;
} | {
    options: OptionsAsFieldList;
} | LegacyChoiceFieldWithOptionRenderer;
export declare type BaseDynamicChoiceField = BaseDynamicChoiceFieldOptions & SelectFuseOptionsProps<EntityAccessor> & {
    searchByFields?: SearchByFields;
    createNewForm?: ReactElement;
    lazy?: LazyChoiceFieldSettings;
    renderedOptionsLimit?: number;
    transformOptions?: (data: ChoiceFieldData.Options<EntityAccessor>, input: string | undefined) => ChoiceFieldData.Options<EntityAccessor>;
};
export declare type LazyChoiceFieldSettings = undefined | boolean | {
    limit?: number;
    initialLimit?: number;
    createFilter?: (input: string) => Filter;
    inputDebounceDelay?: number;
};
export {};
//# sourceMappingURL=BaseDynamicChoiceField.d.ts.map