import { MessageDisplayLocation } from '../form-field';
import { MessageTypes } from '../message';
import { ValueOf } from '../types';
export type NumbersOrWildcard = '*' | string | number;
export type ArrayOfNumbersOrWildcard = Array<NumbersOrWildcard>;
export type Schedule = {
    minute?: Array<number | string>;
    hour?: Array<number | string>;
    dayOfMonth?: Array<number | string>;
    month?: Array<number | string>;
    dayOfWeek?: Array<number | string>;
};
export type ScheduleValidity = {
    type?: MessageTypes;
    value?: string | boolean | string[];
    validValues?: string;
    displayLocation?: MessageDisplayLocation;
    getType?: (value: string) => string;
    values?: Array<number | string | '*'>;
    min?: number;
    max?: number;
    field?: string;
    allowAll?: boolean;
};
export type LabelTexts = {
    minute?: string;
    hour?: string;
    dayOfMonth: string;
    month: string;
    dayOfWeek: string;
    minutesPastHour: string;
    time: string;
    days: string;
    months: string;
    frequency: string;
};
export declare const FREQUENCIES: {
    readonly HOURLY: "HOURLY";
    readonly DAILY: "DAILY";
    readonly WEEKLY: "WEEKLY";
    readonly MONTHLY: "MONTHLY";
    readonly QUARTERLY: "QUARTERLY";
    readonly YEARLY: "YEARLY";
};
export type Frequency = ValueOf<typeof FREQUENCIES>;
export declare function useDaysOfWeek(): {
    index: number;
    key: string;
    label: string;
}[];
export declare function useMonths(): {
    JANUARY: {
        index: number;
        key: string;
        label: string;
    };
    FEBRUARY: {
        index: number;
        key: string;
        label: string;
    };
    MARCH: {
        index: number;
        key: string;
        label: string;
    };
    APRIL: {
        index: number;
        key: string;
        label: string;
    };
    MAY: {
        index: number;
        key: string;
        label: string;
    };
    JUNE: {
        index: number;
        key: string;
        label: string;
    };
    JULY: {
        index: number;
        key: string;
        label: string;
    };
    AUGUST: {
        index: number;
        key: string;
        label: string;
    };
    SEPTEMBER: {
        index: number;
        key: string;
        label: string;
    };
    OCTOBER: {
        index: number;
        key: string;
        label: string;
    };
    NOVEMBER: {
        index: number;
        key: string;
        label: string;
    };
    DECEMBER: {
        index: number;
        key: string;
        label: string;
    };
};
export type DateItem = {
    index: number;
    key: string;
    label: string;
};
export type Months = {
    JANUARY: DateItem;
    FEBRUARY: DateItem;
    MARCH: DateItem;
    APRIL: DateItem;
    MAY: DateItem;
    JUNE: DateItem;
    JULY: DateItem;
    AUGUST: DateItem;
    SEPTEMBER: DateItem;
    OCTOBER: DateItem;
    NOVEMBER: DateItem;
    DECEMBER: DateItem;
};
export declare const DEFAULT_SCHEDULES: {
    HOURLY: {
        minute: number[];
        hour: string[];
        dayOfWeek: string[];
        dayOfMonth: string[];
        month: string[];
    };
    DAILY: {
        minute: number[];
        hour: number[];
        dayOfWeek: string[];
        dayOfMonth: string[];
        month: string[];
    };
    WEEKLY: {
        minute: number[];
        hour: number[];
        dayOfWeek: number[];
        dayOfMonth: string[];
        month: string[];
    };
    MONTHLY: {
        minute: number[];
        hour: number[];
        dayOfWeek: string[];
        dayOfMonth: number[];
        month: string[];
    };
    QUARTERLY: {
        minute: number[];
        hour: number[];
        dayOfWeek: string[];
        dayOfMonth: number[];
        month: number[];
    };
    YEARLY: {
        minute: number[];
        hour: number[];
        dayOfWeek: string[];
        dayOfMonth: number[];
        month: number[];
    };
};
export declare const FIELD_BOUNDARIES: {
    minute: {
        min: number;
        max: number;
    };
    hour: {
        min: number;
        max: number;
    };
    dayOfMonth: {
        min: number;
        max: number;
    };
    month: {
        min: number;
        max: number;
    };
    dayOfWeek: {
        min: number;
        max: number;
    };
};
export declare const DEFAULT_SCHEDULE: {
    minute: number[];
    hour: number[];
    dayOfWeek: string[];
    dayOfMonth: string[];
    month: string[];
};
export declare function useFrequencyOptions(): ({
    key: "HOURLY";
    title: string;
    testId: string;
} | {
    key: "DAILY";
    title: string;
    testId: string;
} | {
    key: "WEEKLY";
    title: string;
    testId: string;
} | {
    key: "MONTHLY";
    title: string;
    testId: string;
} | {
    key: "QUARTERLY";
    title: string;
    testId: string;
} | {
    key: "YEARLY";
    title: string;
    testId: string;
})[];
export declare const SWITCHER_TYPES: {
    readonly TABS: "tabs";
    readonly BUTTON: "button";
};
export type UpdatedSchedule = {
    newSchedule: Schedule;
    errors: Array<ScheduleValidity>;
};
export type SimpleSchedulerModalTexts = {
    title: string;
    confirmButtonText: string;
    dismissButtonText: string;
    content: string;
    labelText: string;
};
export type AdvancedSchedulerInfoTexts = {
    minute?: string;
    hour?: string;
    dayOfMonth: string;
    month: string;
    dayOfWeek: string;
};
export declare const TAB_KEYS: {
    readonly SIMPLE: "SIMPLE";
    readonly ADVANCED: "ADVANCED";
};
export type ContainerProps = {
    onUpdateSchedule: ({ newSchedule, errors, }: {
        newSchedule: Schedule;
        errors?: Array<ScheduleValidity> | null;
    }) => void;
    isDisabled: boolean;
    validationTexts: {
        timeError: string;
        minuteError: string;
    };
    initialSchedule: Schedule;
    schedulerKey: string;
    validateArrayOfRangedNumbersOrAll: (validity: ScheduleValidity) => ScheduleValidity | undefined;
    advancedSchedulerInfoTexts: AdvancedSchedulerInfoTexts;
    labelTexts: LabelTexts;
    frequencyOptions: Array<{
        key: string;
        title: string;
    }>;
    daysOfWeek: Array<DateItem>;
    months: Months;
    onUseSimpleScheduler: () => void;
};
export type TabTexts = {
    simpleScheduleLabel: string;
    advancedScheduleLabel: string;
    simpleScheduleTooltip?: string;
    advancedScheduleTooltip?: string;
};
export declare const useDefaultTexts: () => {
    defaultSimpleSchedulerToggleButtonText: string;
    defaultAdvancedSchedulerToggleButtonText: string;
    defaultSimpleSchedulerModalTexts: {
        title: string;
        confirmButtonText: string;
        dismissButtonText: string;
        content: string;
        labelText: string;
    };
    defaultLabelTexts: {
        minute: string;
        hour: string;
        dayOfMonth: string;
        month: string;
        dayOfWeek: string;
        minutesPastHour: string;
        time: string;
        days: string;
        months: string;
        frequency: string;
    };
    defaultAdvancedSchedulerInfoTexts: {
        dayOfMonth: string;
        month: string;
        dayOfWeek: string;
    };
    defaultValidationTexts: {
        timeError: string;
        minuteError: string;
    };
    defaultTabTexts: {
        simpleScheduleLabel: string;
        advancedScheduleLabel: string;
        simpleScheduleTooltip: string;
    };
};
