import { findADfromBS, findBSfromAD } from '../utils/calendar';
import { ILang, formatADDate } from '../utils/commons';
type LangReturnType<T extends ILang> = T extends 'en' ? number : string;
type ADReturnType<T extends ILang> = T extends 'en' ? {
    year: number;
    month: number;
    date: number;
    toString: () => string;
} : {
    year: string;
    month: string;
    date: string;
    toString: () => string;
};
interface DateObject {
    year: number;
    month: number;
    date: number;
    day: number;
}
interface NepaliDateObject {
    year: string;
    month: string;
    date: string;
    day: string;
}
type IManipulateDate = 'day' | 'week' | 'month' | 'year' | 'd' | 'w' | 'm' | 'y';
declare class NepaliDate {
    #private;
    constructor();
    constructor(date: string | Date | NepaliDate);
    constructor(year: number, monthIndex: number, date: number);
    format(format?: string, lang?: ILang): string;
    toString(lang?: ILang): string;
    toJson(lang?: 'en'): DateObject;
    toJson(lang?: 'np'): NepaliDateObject;
    toAD<T extends ILang = 'en'>(lang?: T): ADReturnType<T>;
    toADasDate(): Date;
    getFullYear<T extends ILang = 'en'>(lang?: T): LangReturnType<T>;
    getMonth<T extends ILang = 'en'>(lang?: T): LangReturnType<T>;
    getMonthName(lang?: ILang): string;
    getDate<T extends ILang = 'en'>(lang?: T): LangReturnType<T>;
    getDay<T extends ILang = 'en'>(lang?: T): LangReturnType<T>;
    getDayName(lang?: ILang): string;
    getDayNameFull(lang?: ILang): string;
    subtract(value: number, type: IManipulateDate): NepaliDate;
    add(value: number, type: IManipulateDate): NepaliDate;
    setDate(date: number): void;
    setMonth(month: number): void;
    setFullYear(year: number): void;
    static now(lang?: ILang): {
        day: number;
        toString: () => string;
        year: number;
        month: number;
        date: number;
    } | {
        year: string;
        month: string;
        date: string;
        day: string;
        toString: () => string;
    };
}
export { findADfromBS as toAD, findBSfromAD as toBS, formatADDate };
export default NepaliDate;
