import { ReactElement, ReactNode } from 'react';
import { FieldPath, FieldValues } from 'react-hook-form';
export interface PageFormAsyncSelectProps<TFieldValues extends FieldValues = FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>, SelectionType = unknown> {
    id?: string;
    name: TFieldName;
    variant?: 'single' | 'typeahead' | 'typeaheadMulti';
    label: string;
    labelHelpTitle?: string;
    labelHelp?: string | string[] | ReactNode;
    placeholder: string;
    loadingPlaceholder: string;
    loadingErrorText: string;
    additionalControls?: ReactElement;
    query: (page: number) => Promise<{
        total: number;
        values: SelectionType[];
    }>;
    valueToString: (value: SelectionType | undefined) => string;
    valueToDescription?: (value: SelectionType | undefined) => ReactNode;
    isRequired?: boolean;
    isReadOnly?: boolean;
    openSelectDialog?: (onSelect: (value: SelectionType | null) => void, defaultSelection?: SelectionType) => void;
    limit: number;
}
export declare function PageFormAsyncSelect<TFieldValues extends FieldValues = FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>, SelectionType = any>(props: PageFormAsyncSelectProps<TFieldValues, TFieldName, SelectionType>): import("react/jsx-runtime").JSX.Element;
export interface AsyncSelectProps<SelectionType> {
    id?: string;
    value: SelectionType | undefined;
    valueToString: (value: SelectionType | undefined) => string;
    valueToDescription?: (value: SelectionType | undefined) => ReactNode;
    onSelect: (value: SelectionType | null) => void;
    query: (pageSize: number) => Promise<{
        total: number;
        values: SelectionType[];
    }>;
    placeholder: string;
    variant?: 'single' | 'typeahead' | 'typeaheadMulti';
    loadingPlaceholder: string;
    labeledBy?: string;
    isReadOnly?: boolean;
    helperTextInvalid?: string;
    validated?: 'success' | 'warning' | 'error' | 'default';
    showRefreshButton?: boolean;
    isRequired?: boolean;
    limit: number;
    loadingError?: boolean;
    openSelectDialog?: (onSelect: (value: SelectionType | null) => void, defaultSelection?: SelectionType) => void;
}
export declare function AsyncSelect<SelectionType>(props: AsyncSelectProps<SelectionType>): import("react/jsx-runtime").JSX.Element;
