import { ListOption } from '../list';
import { RenderResult } from '@dojo/framework/core/interfaces';
export interface TimePickerProperties {
    /** Set the disabled property of the control */
    disabled?: boolean;
    /** Callback to determine if a particular time entry should be disabled */
    timeDisabled?: (time: Date) => boolean;
    /** The name of the field */
    name?: string;
    /** The initial selected value */
    initialValue?: string;
    /** Controlled value property */
    value?: string;
    /** Called when the value changes */
    onValue?(value: string): void;
    /** Indicates the input is required to complete the form */
    required?: boolean;
    /** Callabck when valid state has changed */
    onValidate?(valid: boolean, message: string): void;
    /** The maximum time to display in the menu (defaults to '23:59:59') */
    max?: string;
    /** The minimum time to display in the menu (defaults to '00:00:00') */
    min?: string;
    /** The number of seconds between each option in the menu (defaults to 1800) */
    step?: number;
    /** How the time is formatted. 24 hour, 12 hour */
    format?: '24' | '12';
    /** Property to determine how many items to render. Defaults to 10 */
    itemsInView?: number;
    /** The kind of time picker input */
    kind?: 'outlined' | 'filled';
}
export interface TimePickerChildren {
    /** The label to be displayed above the input */
    label?: RenderResult;
}
export interface TimePickerICache {
    value?: string;
    lastValue: string;
    nextValue: string;
    inputValue: string;
    validationMessage: string | undefined;
    focusNode: 'input' | 'menu';
    inputValid?: boolean;
    inputValidMessage?: string;
    isValid?: boolean;
    initialValue?: string;
    min: string;
    max: string;
    step: number;
    options: (ListOption & {
        dt: number;
    })[];
    dirty: boolean;
    callOnValue: void;
}
export interface TimeParser {
    regex: RegExp;
    positions: {
        hour?: number;
        minute?: number;
        second?: number;
        amPm?: number;
    };
}
export declare function parseTime(time: string | undefined, hour12: boolean): Date | undefined;
export declare function format24HourTime(dt: Date): string;
export declare const TimePicker: import("@dojo/framework/core/interfaces").OptionalWNodeFactory<{
    properties: TimePickerProperties & import("@dojo/framework/core/interfaces").WidgetProperties & {
        variant?: "default" | "inherit" | undefined;
    } & import("@dojo/framework/core/middleware/theme").ThemeProperties & import("@dojo/framework/core/interfaces").FocusProperties & import("@dojo/framework/core/interfaces").I18nProperties;
    children: string | number | boolean | import("@dojo/framework/core/interfaces").VNode | import("@dojo/framework/core/interfaces").WNode<any> | import("@dojo/framework/core/interfaces").DNode<any>[] | TimePickerChildren;
}>;
export default TimePicker;
