import { Component, type JSX } from 'react';
import type { IobTheme } from '../types';
export interface ScheduleConfig {
    time: {
        exactTime: boolean;
        start: string;
        end: string;
        mode: string;
        interval: number;
    };
    period: {
        once: string;
        days: number;
        dows: string;
        dates: string;
        weeks: number;
        months: string | number;
        years: number;
        yearMonth: number;
        yearDate: number;
    };
    valid: {
        from: string;
        to?: string;
    };
}
interface ScheduleProps {
    schedule: string | ScheduleConfig;
    onChange: (schedule: string, desc?: string) => void;
    theme: IobTheme;
}
interface ScheduleState {
    schedule: ScheduleConfig;
    desc: string;
}
export declare class Schedule extends Component<ScheduleProps, ScheduleState> {
    private readonly refFrom;
    private readonly refTo;
    private readonly refOnce;
    private timerOnce;
    private timerFrom;
    private timerTo;
    constructor(props: ScheduleProps);
    onChange(schedule: ScheduleConfig, force?: boolean): void;
    static state2text(schedule: string | ScheduleConfig): string;
    getTimePeriodElements(): JSX.Element;
    getTimeExactElements(): JSX.Element;
    static getDivider(): JSX.Element;
    getPeriodModes(): JSX.Element[];
    getPeriodSettingsMinutes(fromTo: boolean): JSX.Element;
    getPeriodSettingsWeekdays(): JSX.Element[];
    getPeriodSettingsDaily(): JSX.Element[] | null;
    getPeriodSettingsWeekly(): JSX.Element[] | null;
    getPeriodSettingsDates(): JSX.Element | null;
    getPeriodSettingsMonthly(): JSX.Element[] | null;
    getPeriodSettingsYearly(): JSX.Element[] | null;
    static now2string(isEnd?: boolean): string;
    static string2date(str: string): Date;
    getValidSettings(): JSX.Element;
    render(): JSX.Element;
}
export {};
