declare type ConfigType = string | number | Date | Dayjs | null | undefined;

declare class Dayjs {
    private _date;
    private static daysOfWeek;
    constructor(date?: ConfigType);
    toDate(): Date;
    isValid(): boolean;
    diff(date: string | number | Date | Dayjs | null | undefined, unit?: 'day' | 'month' | 'year'): number;
    startOf(unit?: 'year' | 'month' | 'day'): Dayjs;
    endOf(unit?: 'year' | 'month' | 'day'): Dayjs;
    add(value: number, unit: 'year' | 'month' | 'day'): Dayjs;
    subtract(value: number, unit: 'year' | 'month' | 'day'): Dayjs;
    format(formatStr: string): string;
    year(): number;
    year(year: number): Dayjs;
    month(): number;
    month(month: number): Dayjs;
    date(): number;
    date(day: number): Dayjs;
    day(): number;
    day(day: number): Dayjs;
    isBefore(date: string | number | Date | Dayjs | null | undefined): boolean;
    isAfter(date: string | number | Date | Dayjs | null | undefined): boolean;
    isSame(date: string | number | Date | Dayjs | null | undefined, unit?: 'year' | 'month' | 'day'): boolean;
    isBetween(startDate: string | number | Date | Dayjs | null | undefined, endDate: string | number | Date | Dayjs | null | undefined, unit?: 'year' | 'month' | 'day'): boolean;
}

declare const _default: {
    getLunarFestivals: (start?: ConfigType, end?: ConfigType) => {
        date: string;
        name: string[];
    }[];
    default: {
        getLunarFestivals: (start?: ConfigType, end?: ConfigType) => {
            date: string;
            name: string[];
        }[];
    };
    monthDays: (y: number, m: number) => number;
    getLunarYears: (startYear: number, endYear: number) => {
        year: number;
        lunarYear: string;
        lunarYearCN: string;
    }[];
    getYearLeapMonth: (year: number) => {
        year: number;
        leapMonth: number | undefined;
        leapMonthCN: string | undefined;
        days: number;
    };
    getLunarDate: (date: ConfigType) => LunarDateDetail;
    getLunarDatesInRange: (startDate: ConfigType, endDate: ConfigType) => LunarDateDetail[];
    getSolarDateFromLunar: (lunarDate: ConfigType) => {
        date: string;
        leapMonthDate?: string;
    };
    getSolarTermDate: (year: number, month: number, term: SolarTermKey) => string;
    getSolarTerms: (start?: ConfigType, end?: ConfigType) => SolarTerm_2.SolarTerm[];
    getSolarTermsInRange: (start?: ConfigType, end?: ConfigType) => SolarTerm_2.SolarTerm[];
    isHoliday: (date: ConfigType) => boolean;
    isWorkday: (date: ConfigType) => boolean;
    isInLieu: (date: ConfigType) => boolean;
    getDayDetail: (date: ConfigType) => {
        work: boolean;
        name: string;
        date: string;
    };
    getHolidaysInRange: (startInput: ConfigType, endInput: ConfigType, includeWeekends?: boolean) => string[];
    getWorkdaysInRange: (startInput: ConfigType, endInput: ConfigType, includeWeekends?: boolean) => string[];
    findWorkday: (deltaDays?: number, date?: ConfigType) => string;
};
export default _default;

export declare const findWorkday: (deltaDays?: number, date?: ConfigType) => string;

/** 获取工作日详情 */
export declare const getDayDetail: (date: ConfigType) => {
    work: boolean;
    name: string;
    date: string;
};

/** 获取节假日 */
export declare const getHolidaysInRange: (startInput: ConfigType, endInput: ConfigType, includeWeekends?: boolean) => string[];

/**
 * 计算指定日期的农历元素
 * @param date 指定日期
 * @returns 农历信息
 */
export declare const getLunarDate: (date: ConfigType) => LunarDateDetail;

/**
 * 获取范围内所有日期的农历信息
 * @param startDate 开始日期
 * @param endDate 结束日期
 * @returns 范围内所有日期的农历信息
 */
export declare const getLunarDatesInRange: (startDate: ConfigType, endDate: ConfigType) => LunarDateDetail[];

/**
 * 获取农历节日（包含固定节日和特殊计算节日）
 * @param start 开始日期
 * @param end 结束日期
 */
export declare const getLunarFestivals: (start?: ConfigType, end?: ConfigType) => {
    date: string;
    name: string[];
}[];

/**
 * 获取指定范围内的所有农历年份 信息
 * @param startYear 起始农历年份
 * @param endYear 结束农历年份
 * @returns 农历年份列表
 */
export declare const getLunarYears: (startYear: number, endYear: number) => {
    year: number;
    lunarYear: string;
    lunarYearCN: string;
}[];

/**
 * 根据阴历日期查询阳历日期
 * @param lunarDate 农历日期
 * @param isLeapMonth 是否闰月
 * @returns 阳历日期
 */
export declare const getSolarDateFromLunar: (lunarDate: ConfigType) => {
    date: string;
    leapMonthDate?: string;
};

export declare const getSolarTermDate: (year: number, month: number, term: SolarTermKey) => string;

/**
 * 获取指定日期范围内的节气（仅节气当日）
 * @param start 开始日期
 * @param end 不传只查当天
 * @returns Array of solar terms => 节气开始日数组
 */
export declare const getSolarTerms: (start?: ConfigType, end?: ConfigType) => SolarTerm[];

/**
 * 获取指定日期范围内的所有每日节气信息
 * @param start 开始日期
 * @param end 不传只查当天
 * @returns Array of solar terms => 节气日数组
 */
export declare const getSolarTermsInRange: (start?: ConfigType, end?: ConfigType) => SolarTerm[];

/** 获取工作日 */
export declare const getWorkdaysInRange: (startInput: ConfigType, endInput: ConfigType, includeWeekends?: boolean) => string[];

/**
 * 获取指定阳历年份的闰月
 * @param year 年份
 * @returns 农历闰月月份
 */
export declare const getYearLeapMonth: (year: number) => {
    year: number;
    leapMonth: number | undefined;
    leapMonthCN: string | undefined;
    days: number;
};

/** 是否节假日 */
export declare const isHoliday: (date: ConfigType) => boolean;

/** 是否调休日 - 是节假日，但后续有需要补班 */
export declare const isInLieu: (date: ConfigType) => boolean;

/** 是否工作日 */
export declare const isWorkday: (date: ConfigType) => boolean;

declare interface LunarDateDetail {
    /** 阳历日期 */
    date: string;
    /** 农历年份 */
    lunarYear: number;
    /** 农历月份 */
    lunarMon: number;
    /** 农历日期 */
    lunarDay: number;
    /** 是否闰月 */
    isLeap: boolean;
    /** 年柱，天干地支表示的年份 */
    yearCyl: string;
    /** 月柱，天干地支表示的月份 */
    monCyl: string;
    /** 日柱，天干地支表示的日期 */
    dayCyl: string;
    /** 生肖 */
    zodiac: string;
    /** 农历年份的中文写法 */
    lunarYearCN: string;
    /** 农历月份的中文写法 */
    lunarMonCN: string;
    /** 农历日期的中文写法 */
    lunarDayCN: string;
}

/**
 * 获取指定年月的阴历天数
 * @param y 农历年份
 * @param m 农历月份
 * @returns 月份天数
 */
export declare const monthDays: (y: number, m: number) => number;

export declare interface SolarTerm {
    date: string;
    term: SolarTermKey;
    name: string;
    index?: number;
}

declare namespace SolarTerm_2 {
    export {
        SolarTerm,
        getSolarTermDate,
        getSolarTerms,
        getSolarTermsInRange
    }
}

declare type SolarTermKey = 'the_beginning_of_spring' | 'rain_water' | 'the_waking_of_insects' | 'the_spring_equinox' | 'pure_brightness' | 'grain_rain' | 'the_beginning_of_summer' | 'lesser_fullness_of_grain' | 'grain_in_beard' | 'the_summer_solstice' | 'lesser_heat' | 'greater_heat' | 'the_beginning_of_autumn' | 'the_end_of_heat' | 'white_dew' | 'the_autumn_equinox' | 'code_dew' | 'frost_descent' | 'the_beginning_of_winter' | 'lesser_snow' | 'greater_snow' | 'the_winter_solstice' | 'lesser_cold' | 'greater_cold';

export { }
