import dayjs from 'dayjs';
import type { 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: "Q" | "s" | "day" | "hour" | "minute" | "month" | "second" | "year" | "years" | "quarter" | "quarters" | "months" | "week" | "weeks" | "days" | "hours" | "minutes" | "seconds" | "D" | "M" | "y" | "date" | "d" | "h" | "m" | "ms" | "millisecond" | "milliseconds" | "dates" | "w"): dayjs.Dayjs;
            };
            endOf: {
                (unit: dayjs.OpUnitType): dayjs.Dayjs;
                (unit: "Q" | "s" | "day" | "hour" | "minute" | "month" | "second" | "year" | "years" | "quarter" | "quarters" | "months" | "week" | "weeks" | "days" | "hours" | "minutes" | "seconds" | "D" | "M" | "y" | "date" | "d" | "h" | "m" | "ms" | "millisecond" | "milliseconds" | "dates" | "w"): dayjs.Dayjs;
            };
            format: (template?: string) => string;
            diff: (date?: string | number | Date | dayjs.Dayjs, unit?: "Q" | "s" | "day" | "hour" | "minute" | "month" | "second" | "year" | "years" | "quarter" | "quarters" | "months" | "week" | "weeks" | "days" | "hours" | "minutes" | "seconds" | "D" | "M" | "y" | "date" | "d" | "h" | "m" | "ms" | "millisecond" | "milliseconds" | "dates" | "w", float?: boolean) => number;
            valueOf: () => number;
            unix: () => number;
            daysInMonth: () => number;
            toDate: () => Date;
            toJSON: () => string;
            toISOString: () => string;
            toString: () => string;
            utcOffset: () => number;
            isBefore: {
                (date: string | number | Date | dayjs.Dayjs, unit?: dayjs.OpUnitType): boolean;
                (date: string | number | Date | dayjs.Dayjs, unit?: dayjs.QUnitType): boolean;
            };
            isSame: {
                (date: string | number | Date | dayjs.Dayjs, unit?: dayjs.OpUnitType): boolean;
                (date: string | number | Date | dayjs.Dayjs, unit?: dayjs.QUnitType): boolean;
            };
            isAfter: {
                (date: string | number | Date | dayjs.Dayjs, unit?: dayjs.OpUnitType): boolean;
                (date: string | number | Date | dayjs.Dayjs, unit?: dayjs.QUnitType): boolean;
            };
            locale: {
                (): string;
                (preset: string | ILocale, object?: Partial<ILocale>): dayjs.Dayjs;
            };
            isoWeeksInYear: () => number;
            isLeapYear: () => boolean;
            isBetween: (a: string | number | Date | dayjs.Dayjs, b: string | number | Date | dayjs.Dayjs, c?: dayjs.OpUnitType, 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: "Q" | "s" | "day" | "hour" | "minute" | "month" | "second" | "year" | "years" | "quarter" | "quarters" | "months" | "week" | "weeks" | "days" | "hours" | "minutes" | "seconds" | "D" | "M" | "y" | "date" | "d" | "h" | "m" | "ms" | "millisecond" | "milliseconds" | "dates" | "w"): dayjs.Dayjs;
            };
            endOf: {
                (unit: dayjs.OpUnitType): dayjs.Dayjs;
                (unit: "Q" | "s" | "day" | "hour" | "minute" | "month" | "second" | "year" | "years" | "quarter" | "quarters" | "months" | "week" | "weeks" | "days" | "hours" | "minutes" | "seconds" | "D" | "M" | "y" | "date" | "d" | "h" | "m" | "ms" | "millisecond" | "milliseconds" | "dates" | "w"): dayjs.Dayjs;
            };
            format: (template?: string) => string;
            diff: (date?: string | number | Date | dayjs.Dayjs, unit?: "Q" | "s" | "day" | "hour" | "minute" | "month" | "second" | "year" | "years" | "quarter" | "quarters" | "months" | "week" | "weeks" | "days" | "hours" | "minutes" | "seconds" | "D" | "M" | "y" | "date" | "d" | "h" | "m" | "ms" | "millisecond" | "milliseconds" | "dates" | "w", float?: boolean) => number;
            valueOf: () => number;
            unix: () => number;
            daysInMonth: () => number;
            toDate: () => Date;
            toJSON: () => string;
            toISOString: () => string;
            toString: () => string;
            utcOffset: () => number;
            isBefore: {
                (date: string | number | Date | dayjs.Dayjs, unit?: dayjs.OpUnitType): boolean;
                (date: string | number | Date | dayjs.Dayjs, unit?: dayjs.QUnitType): boolean;
            };
            isSame: {
                (date: string | number | Date | dayjs.Dayjs, unit?: dayjs.OpUnitType): boolean;
                (date: string | number | Date | dayjs.Dayjs, unit?: dayjs.QUnitType): boolean;
            };
            isAfter: {
                (date: string | number | Date | dayjs.Dayjs, unit?: dayjs.OpUnitType): boolean;
                (date: string | number | Date | dayjs.Dayjs, unit?: dayjs.QUnitType): boolean;
            };
            locale: {
                (): string;
                (preset: string | ILocale, object?: Partial<ILocale>): dayjs.Dayjs;
            };
            isoWeeksInYear: () => number;
            isLeapYear: () => boolean;
            isBetween: (a: string | number | Date | dayjs.Dayjs, b: string | number | Date | dayjs.Dayjs, c?: dayjs.OpUnitType, d?: "()" | "[]" | "[)" | "(]") => boolean;
            week: {
                (): number;
                (value: number): dayjs.Dayjs;
            };
            weekYear: () => number;
            localeData: () => dayjs.InstanceLocaleDataReturn;
            quarter: {
                (): number;
                (quarter: number): dayjs.Dayjs;
            };
        }[];
        curSelectedYear: number;
        curSelectedMonth: number;
        curSelectedMode: string;
        isShowWeekend: boolean;
        controlSize: import("../..").SizeEnum;
    };
    toToday: () => void;
    checkDayVisible: (day: number) => boolean;
};
