import dayjs from 'dayjs';
import { TdCalendarProps } from '../type';
export declare function useState(props: TdCalendarProps): {
    state: {
        realFirstDayOfWeek: number;
        curDate?: {
            clone: () => dayjs.Dayjs;
            isValid: () => boolean;
            year: {
                (): number;
                (value: number): dayjs.Dayjs;
            };
            month: {
                (): number;
                (value: number): dayjs.Dayjs;
            };
            date: {
                (): number;
                (value: number): dayjs.Dayjs;
            };
            day: {
                (): number;
                (value: number): dayjs.Dayjs;
            };
            hour: {
                (): number;
                (value: number): dayjs.Dayjs;
            };
            minute: {
                (): number;
                (value: number): dayjs.Dayjs;
            };
            second: {
                (): number;
                (value: number): dayjs.Dayjs;
            };
            millisecond: {
                (): number;
                (value: number): dayjs.Dayjs;
            };
            set: (unit: dayjs.UnitType, value: number) => dayjs.Dayjs;
            get: (unit: dayjs.UnitType) => number;
            add: {
                (value: number, unit?: dayjs.ManipulateType): dayjs.Dayjs;
                (value: number, unit: dayjs.QUnitType): dayjs.Dayjs;
            };
            subtract: {
                (value: number, unit?: dayjs.ManipulateType): dayjs.Dayjs;
                (value: number, unit: dayjs.QUnitType): dayjs.Dayjs;
            };
            startOf: {
                (unit: dayjs.OpUnitType): dayjs.Dayjs;
                (unit: dayjs.QUnitType | dayjs.OpUnitType): dayjs.Dayjs;
            };
            endOf: {
                (unit: dayjs.OpUnitType): dayjs.Dayjs;
                (unit: dayjs.QUnitType | dayjs.OpUnitType): dayjs.Dayjs;
            };
            format: (template?: string) => string;
            diff: (date?: dayjs.ConfigType, unit?: dayjs.QUnitType | dayjs.OpUnitType, float?: boolean) => number;
            valueOf: () => number;
            unix: () => number;
            daysInMonth: () => number;
            toDate: () => Date;
            toJSON: () => string;
            toISOString: () => string;
            toString: () => string;
            utcOffset: () => number;
            isBefore: {
                (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType): boolean;
                (date?: dayjs.ConfigType, unit?: dayjs.QUnitType): boolean;
            };
            isSame: {
                (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType): boolean;
                (date?: dayjs.ConfigType, unit?: dayjs.QUnitType): boolean;
            };
            isAfter: {
                (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType): boolean;
                (date?: dayjs.ConfigType, unit?: dayjs.QUnitType): boolean;
            };
            locale: {
                (): string;
                (preset: string | ILocale, object?: Partial<ILocale>): dayjs.Dayjs;
            };
            isoWeeksInYear: () => number;
            isLeapYear: () => boolean;
            isBetween: (a: dayjs.ConfigType, b: dayjs.ConfigType, c?: dayjs.OpUnitType | null, d?: "()" | "[]" | "[)" | "(]") => boolean;
            week: {
                (): number;
                (value: number): dayjs.Dayjs;
            };
            weekYear: () => number;
            localeData: () => dayjs.InstanceLocaleDataReturn;
            quarter: {
                (): number;
                (quarter: number): dayjs.Dayjs;
            };
        };
        curDateList?: {
            clone: () => dayjs.Dayjs;
            isValid: () => boolean;
            year: {
                (): number;
                (value: number): dayjs.Dayjs;
            };
            month: {
                (): number;
                (value: number): dayjs.Dayjs;
            };
            date: {
                (): number;
                (value: number): dayjs.Dayjs;
            };
            day: {
                (): number;
                (value: number): dayjs.Dayjs;
            };
            hour: {
                (): number;
                (value: number): dayjs.Dayjs;
            };
            minute: {
                (): number;
                (value: number): dayjs.Dayjs;
            };
            second: {
                (): number;
                (value: number): dayjs.Dayjs;
            };
            millisecond: {
                (): number;
                (value: number): dayjs.Dayjs;
            };
            set: (unit: dayjs.UnitType, value: number) => dayjs.Dayjs;
            get: (unit: dayjs.UnitType) => number;
            add: {
                (value: number, unit?: dayjs.ManipulateType): dayjs.Dayjs;
                (value: number, unit: dayjs.QUnitType): dayjs.Dayjs;
            };
            subtract: {
                (value: number, unit?: dayjs.ManipulateType): dayjs.Dayjs;
                (value: number, unit: dayjs.QUnitType): dayjs.Dayjs;
            };
            startOf: {
                (unit: dayjs.OpUnitType): dayjs.Dayjs;
                (unit: dayjs.QUnitType | dayjs.OpUnitType): dayjs.Dayjs;
            };
            endOf: {
                (unit: dayjs.OpUnitType): dayjs.Dayjs;
                (unit: dayjs.QUnitType | dayjs.OpUnitType): dayjs.Dayjs;
            };
            format: (template?: string) => string;
            diff: (date?: dayjs.ConfigType, unit?: dayjs.QUnitType | dayjs.OpUnitType, float?: boolean) => number;
            valueOf: () => number;
            unix: () => number;
            daysInMonth: () => number;
            toDate: () => Date;
            toJSON: () => string;
            toISOString: () => string;
            toString: () => string;
            utcOffset: () => number;
            isBefore: {
                (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType): boolean;
                (date?: dayjs.ConfigType, unit?: dayjs.QUnitType): boolean;
            };
            isSame: {
                (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType): boolean;
                (date?: dayjs.ConfigType, unit?: dayjs.QUnitType): boolean;
            };
            isAfter: {
                (date?: dayjs.ConfigType, unit?: dayjs.OpUnitType): boolean;
                (date?: dayjs.ConfigType, unit?: dayjs.QUnitType): boolean;
            };
            locale: {
                (): string;
                (preset: string | ILocale, object?: Partial<ILocale>): dayjs.Dayjs;
            };
            isoWeeksInYear: () => number;
            isLeapYear: () => boolean;
            isBetween: (a: dayjs.ConfigType, b: dayjs.ConfigType, c?: dayjs.OpUnitType | null, d?: "()" | "[]" | "[)" | "(]") => boolean;
            week: {
                (): number;
                (value: number): dayjs.Dayjs;
            };
            weekYear: () => number;
            localeData: () => dayjs.InstanceLocaleDataReturn;
            quarter: {
                (): number;
                (quarter: number): dayjs.Dayjs;
            };
        }[];
        curSelectedYear: number | null;
        curSelectedMonth: number | null;
        curSelectedMode: string | null;
        isShowWeekend: boolean;
        controlSize: import("../..").SizeEnum;
    };
    toToday: () => void;
    checkDayVisible: (day: number) => boolean;
};
