import { EarthlyBranchName, HeavenlyStemName } from '../../i18n';
/**
 * 农历日期对象
 *
 * @property
 * - lunarYear 年
 * - lunarMonth 月
 * - lunarDay 日
 * - isLeap 月份是否闰月
 *
 * @function toString() 输出 YYYY-M-D 或 农历中文 字符串
 */
export type LunarDate = {
    /** 农历年 */
    lunarYear: number;
    /** 农历月 */
    lunarMonth: number;
    /** 农历日 */
    lunarDay: number;
    /** 是否闰月 */
    isLeap: boolean;
    /**
     * 转化为字符串
     *
     * @param toCnStr 是否使用中文字符串, 若该参数为false则字符串中不会携带闰月信息
     * @returns string
     * @example
     * lunarYear = 2023;
     * lunarMonth = 6;
     * lunarDay = 12;
     * isLeap = true;
     *
     * toString(); // 2023-6-12
     * toString(true); // 二〇二三年(闰)二月十一
     */
    toString: (toCnStr?: boolean) => string;
};
/**
 * 阳历日期对象
 *
 * @property
 * - solarYear 年
 * - solarMonth 月
 * - solarDay 日
 *
 * @function toString() 将对象以 YYYY-M-D 格式字符串输出
 */
export type SolarDate = {
    /** 公历年 */
    solarYear: number;
    /** 公历月 */
    solarMonth: number;
    /** 公历日 */
    solarDay: number;
    /**
     * 转化为字符串
     *
     * @returns string
     * @example
     * solarYear = 2023;
     * solarMonth = 6;
     * solarDay = 12;
     *
     * toString(); // 2023-6-12
     */
    toString: () => string;
};
/** [天干，地支] */
export type HeavenlyStemAndEarthlyBranch = [HeavenlyStemName, EarthlyBranchName];
/**
 * 干支纪年日期对象
 *
 * @property
 * - yearly 年柱[天干，地支]
 * - monthly 月柱[天干，地支]
 * - monthly 月柱[天干，地支]
 * - daily 日柱[天干，地支]
 * - hourly 时柱[天干，地支]
 *
 * @function toString() 将对象以干支纪年字符串输出
 */
export type HeavenlyStemAndEarthlyBranchDate = {
    /** 年柱[天干，地支] */
    yearly: HeavenlyStemAndEarthlyBranch;
    /** 月柱[天干，地支] */
    monthly: HeavenlyStemAndEarthlyBranch;
    /** 日柱[天干，地支] */
    daily: HeavenlyStemAndEarthlyBranch;
    /** 时柱[天干，地支] */
    hourly: HeavenlyStemAndEarthlyBranch;
    /**
     * 获取四柱的字符串
     *
     * @returns 四柱字符串，用空格隔开
     * @example
     * yearly = ['癸', '卯'];
     * monthly = ['戊', '午'];
     * daily = ['癸', '亥'];
     * hourly = ['甲', '寅'];
     * toString(); // 癸卯 戊午 癸亥 甲寅
     */
    toString: () => string;
};
