/// <reference types="react" />
import * as React from "react";
import { DomFieldProps } from "../contracts/field";
import { BaseDomField, BaseDomFieldState } from "../abstractions/base-dom-field";
import { FieldOnChangeCallback } from "../contracts/field";
import { HTMLElementProps } from "../contracts/field";
export declare type SelectValue = string | string[];
export declare type SelectOnChangeCallback = FieldOnChangeCallback<HTMLSelectElement>;
/**
 * Override the differences between extended interfaces.
 */
export interface SelectProps extends DomFieldProps, HTMLElementProps<HTMLSelectElement> {
    name: string;
    onFocus?: React.FocusEventHandler<HTMLSelectElement>;
    onBlur?: React.FocusEventHandler<HTMLSelectElement>;
    onChange?: SelectOnChangeCallback;
    defaultValue?: SelectValue;
    initialValue?: SelectValue;
    value?: SelectValue;
    ref?: React.Ref<Select>;
}
export interface SelectState extends BaseDomFieldState {
    RenderValue: SelectValue;
}
export declare class Select extends BaseDomField<SelectProps, SelectState> {
    protected readonly RawInitialValue: SelectValue | undefined;
    protected GetValueFromEvent(event: React.ChangeEvent<HTMLSelectElement>): SelectValue;
    protected OnChangeHandler: React.ChangeEventHandler<HTMLSelectElement>;
    protected readonly RawDefaultValue: SelectValue;
    protected readonly Value: SelectValue;
    renderField(): JSX.Element | null;
}
