/// <reference types="react" />
import { ReactElement } from '../../../@declares';
import Tooltips from '../../Tooltips';
import { InputTypes } from '..';
export declare namespace TimeTypes {
    type Era = 'clock' | 'year' | 'meiji' | 'taisho' | 'shouwa' | 'heisei' | 'reiwa';
    type Restrict = 'clock' | 'date' | 'week' | 'month' | 'year' | 'dates' | 'months' | 'dateWareki';
    type Range = {
        type: 'hour' | 'minute' | 'date' | 'month' | 'year' | 'week' | 'dateWareki';
        from: number;
        length: number;
        region?: number;
    };
    type Picker = {
        sheetID?: string;
        restrict: Restrict;
        defaultValue: string | string[];
        era?: Era;
        min?: string;
        max?: string;
        onValueUpdate(value: string | [string, string], era: Era): void;
    };
    type Focus = {
        active: boolean;
        index: number;
        prevIndex: number;
    };
}
declare namespace Time {
    type Methods = {
        Clock: (props: Input) => JSX.Element;
        Date: (props: Input) => JSX.Element;
        Week: (props: Input) => JSX.Element;
        Month: (props: Input) => JSX.Element;
        Year: (props: Input) => JSX.Element;
        DateWareki: (props: DateWareki) => JSX.Element;
        Periods: {
            Date: (props: Period) => JSX.Element;
            Month: (props: Period) => JSX.Element;
        };
        fn: FNs;
    };
    type FNs = {
        picker: {
            launch(p: TimeTypes.Picker & Omit<Tooltips.Input, 'content'>): void;
            remove(sheetID: string): void;
        };
    };
    type Era = TimeTypes.Era;
    type Restrict = TimeTypes.Restrict;
    type Input = InputTypes.CoreInput & React.DOMAttributes<HTMLInputElement> & {
        label?: ReactElement;
        tone?: InputTypes.BoxTone;
        tabIndex?: number;
        id?: string;
        disabled?: boolean;
        value?: string | [string, string];
        min?: string;
        max?: string;
        leftIndicator?: ReactElement | false;
        rightIndicator?: ReactElement | false;
        leftIcon?: ReactElement | false;
        rightIcon?: ReactElement | false;
    };
    type Origin = Input & {
        restrict: Restrict;
        era?: Era;
    };
    type DateWareki = Input & {
        value?: string;
        defaultEra?: 'year' | 'wareki';
    };
    type Period = Omit<Input, 'value'> & {
        value?: [string, string];
    };
    type Range = TimeTypes.Range;
    type WrapperStates = {
        rootStates: Origin;
        val_status: InputTypes.Status.Time;
        set_status: React.Dispatch<React.SetStateAction<InputTypes.Status.Time>>;
        val_validate: InputTypes.Validation.Result;
        set_validate: React.Dispatch<React.SetStateAction<InputTypes.Validation.Result>>;
        val_era: Era;
        set_era: React.Dispatch<React.SetStateAction<Era>>;
        val_focus: TimeTypes.Focus;
        set_focus: React.Dispatch<React.SetStateAction<TimeTypes.Focus>>;
    };
}
declare const Time: Time.Methods & {
    Origin: (props: Time.Origin) => JSX.Element;
};
export { Time, Time as default };
