import { Time } from 'jmini';
import { ReactElement } from '../../../@declares';
import React from 'react';
import { TimeTypes } from '.';
declare namespace TimeSelector {
    type EventType = 'init' | 'override' | 'update' | 'commit';
    type Value = string;
    type ClanedarType = 'calendar' | 'drum';
    type Input = {
        pickerId?: string;
        sheetID?: string;
        restrict: TimeTypes.Restrict;
        defaultValue?: string | string[];
        era?: TimeTypes.Era;
        min?: string;
        max?: string;
        periodPresets?: {
            label: ReactElement;
            from: Time.Chains | Value;
            to: Time.Chains | Value;
        }[];
        onValueUpdate(p: {
            value: Value | [Value, Value];
            era: TimeTypes.Era;
            eventType: EventType;
        }): void;
    };
    type Status = {
        eventType: EventType;
        from: Time.Chains;
        min?: Time.Chains;
        max?: Time.Chains;
    };
    namespace Status {
        type Month = Status & {
            display: Time.Chains;
        };
        type Date = Status & {
            era: TimeTypes.Era;
            display: Time.Chains;
        };
        type Period = Status & {
            display: Time.Chains;
            to: Time.Chains;
            forcus: number;
        };
    }
    type Fn = {
        picker: {
            open(p: Input & {
                sheetID?: string;
            }): void;
            close(sheetID: string): void;
        };
    };
    type Methods = Fn & React.FC<Input>;
}
declare const TimeSelector: TimeSelector.Methods;
export { TimeSelector, TimeSelector as default };
