import { ReactNode } from 'react';
import { FieldPath, FieldPathValue, FieldValues, Validate } from 'react-hook-form';
import { PageSelectOption } from '../../PageInputs/PageSelectOption';
export interface SelectOptionObject {
    toString(): string;
    compareTo?(selectOption: unknown): boolean;
}
export type PageFormSelectProps<TFieldValues extends FieldValues = FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>, TSelection = unknown> = {
    id?: string;
    name: TFieldName;
    label?: string;
    labelHelpTitle?: string;
    labelHelp?: string | string[] | ReactNode;
    additionalControls?: ReactNode;
    placeholderText?: string;
    footer?: ReactNode;
    options: PageSelectOption<TSelection>[];
    helperText?: string;
    isDisabled?: boolean;
    isReadOnly?: boolean;
    isRequired?: boolean;
    onChange?: (option?: TSelection) => void;
    validate?: Validate<FieldPathValue<TFieldValues, TFieldName>, TFieldValues> | Record<string, Validate<FieldPathValue<TFieldValues, TFieldName>, TFieldValues>>;
    defaultValue?: FieldPathValue<TFieldValues, TFieldName>;
    enableReset?: boolean;
    enableUndo?: boolean;
};
export declare function PageFormSelect<TFieldValues extends FieldValues = FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>, TSelection = unknown>(props: PageFormSelectProps<TFieldValues, TFieldName, TSelection>): import("react/jsx-runtime").JSX.Element;
