/**
 * Class representing a Nepali date (Bikram Sambat)
 * Provides methods to create, manipulate and format Nepali dates
 */
export declare class NepaliDate {
    /** JavaScript Date object representing the equivalent Gregorian date */
    timestamp: Date;
    /** Nepali year (BS) */
    year: number;
    /** Nepali month (0-11) */
    month: number;
    /** Nepali day of month (1-32) */
    day: number;
    /**
     * Creates a NepaliDate instance for the current date
     */
    constructor();
    /**
     * Creates a NepaliDate instance from various input types
     * @param date Source date as Date, NepaliDate, timestamp number, or date string
     */
    constructor(date: Date | NepaliDate | number | string);
    /**
     * Creates a NepaliDate instance with the specified year, month, and day
     * @param year Nepali year
     * @param month Nepali month (0-11)
     * @param day Nepali day (1-32)
     */
    constructor(year: number, month: number, day: number);
    /**
     * Sets the internal properties based on the provided English (Gregorian) date
     * @param date JavaScript Date object
     * @private
     */
    private setEnglishDate;
    /**
     * Returns the equivalent English (Gregorian) date
     * @returns JavaScript Date object representing the equivalent Gregorian date
     */
    getEnglishDate(): Date;
    /**
     * Parses a date string and updates the current instance
     * @param dateString Date string in format YYYY-MM-DD, YYYY/MM/DD, or YYYY.MM.DD
     * @throws Error if the date format is invalid or date is out of range
     */
    parse(dateString: string): void;
    /**
     * Returns the Nepali year
     * @returns Nepali year
     */
    getYear(): number;
    /**
     * Returns the Nepali month (0-11)
     * @returns Nepali month (0-11)
     */
    getMonth(): number;
    /**
     * Returns the Nepali day of month
     * @returns Nepali day of month (1-32)
     */
    getDate(): number;
    /**
     * Returns the day of week (0-6, 0 = Sunday)
     * @returns Day of week (0-6, 0 = Sunday)
     */
    getDay(): number;
    /**
     * Returns the hour (0-23)
     * @returns Hour (0-23)
     */
    getHours(): number;
    /**
     * Returns the minutes (0-59)
     * @returns Minutes (0-59)
     */
    getMinutes(): number;
    /**
     * Returns the seconds (0-59)
     * @returns Seconds (0-59)
     */
    getSeconds(): number;
    /**
     * Returns the milliseconds (0-999)
     * @returns Milliseconds (0-999)
     */
    getMilliseconds(): number;
    /**
     * Returns the timestamp (milliseconds since Unix Epoch)
     * @returns Timestamp in milliseconds
     */
    getTime(): number;
    /**
     * Sets the Nepali year
     * @param year Nepali year
     */
    setYear(year: number): void;
    /**
     * Sets the Nepali month
     * @param month Nepali month (0-11)
     */
    setMonth(month: number): void;
    /**
     * Sets the Nepali day of month
     * @param day Nepali day of month (1-32)
     */
    setDate(day: number): void;
    /**
     * Sets the Nepali date components and updates the internal timestamp
     * @param year Nepali year
     * @param month Nepali month (0-11)
     * @param date Nepali day (1-32)
     */
    set(year: number, month: number, date: number): void;
    /**
     * Formats the Nepali date according to the specified format string
     * @param formatStr Format string (see DateFormatter for syntax)
     * @returns Formatted date string
     */
    format(formatStr: string): string;
    /**
     * Returns the string representation of the Nepali date
     * @returns Date string in format YYYY/MM/DD where MM is 1-indexed
     */
    toString(): string;
    /**
     * Adds the specified number of days to the current Nepali date
     * @param days Number of days to add (can be negative)
     * @returns A new NepaliDate instance with the added days
     */
    addDays(days: number): NepaliDate;
    /**
     * Adds the specified number of months to the current Nepali date
     * @param months Number of months to add (can be negative)
     * @returns A new NepaliDate instance with the added months
     */
    addMonths(months: number): NepaliDate;
    /**
     * Adds the specified number of years to the current Nepali date
     * @param years Number of years to add (can be negative)
     * @returns A new NepaliDate instance with the added years
     */
    addYears(years: number): NepaliDate;
    /**
     * Returns the earliest date supported by the NepaliDate class
     * @returns JavaScript Date object representing the minimum supported date
     */
    static minimum(): Date;
    /**
     * Returns the latest date supported by the NepaliDate class
     * @returns JavaScript Date object representing the maximum supported date
     */
    static maximum(): Date;
    /**
     * Returns the number of days in the current month
     * @returns Number of days in the month
     */
    daysInMonth(): number;
    /**
     * Checks if the current year is a leap year in the Nepali calendar
     * @returns true if the year is a leap year, false otherwise
     */
    isLeapYear(): boolean;
    /**
     * Calculates the number of weeks in the current month
     * @returns Number of weeks in the month
     */
    getWeeksInMonth(): number;
    /**
     * Calculates the difference between two dates in the specified unit
     * @param date NepaliDate to compare with
     * @param unit Unit for the difference calculation ('year', 'month', or 'day')
     * @returns Difference value in the specified unit
     */
    diff(date: NepaliDate, unit: 'year' | 'month' | 'day'): number;
    /**
     * Returns a new NepaliDate representing the start of the current day (00:00:00)
     * @returns A new NepaliDate set to the start of the day
     */
    startOfDay(): NepaliDate;
    /**
     * Returns a new NepaliDate representing the end of the current day (23:59:59.999)
     * @returns A new NepaliDate set to the end of the day
     */
    endOfDay(): NepaliDate;
    /**
     * Returns a new NepaliDate representing the start of the week containing this date
     * By default, weeks start on Sunday (day 0)
     * @param startOfWeek Day to consider as start of week (0-6, where 0 = Sunday, 1 = Monday, etc.)
     * @returns A new NepaliDate set to the first day of the week
     */
    startOfWeek(startOfWeek?: number): NepaliDate;
    /**
     * Returns a new NepaliDate representing the end of the week containing this date
     * By default, weeks end on Saturday (day 6)
     * @param startOfWeek Day to consider as start of week (0-6, where 0 = Sunday, 1 = Monday, etc.)
     * @returns A new NepaliDate set to the last day of the week
     */
    endOfWeek(startOfWeek?: number): NepaliDate;
    /**
     * Returns a new NepaliDate representing the start of the current month (1st day)
     * @returns A new NepaliDate set to the first day of the month
     */
    startOfMonth(): NepaliDate;
    /**
     * Returns a new NepaliDate representing the end of the current month (last day)
     * @returns A new NepaliDate set to the last day of the month
     */
    endOfMonth(): NepaliDate;
    /**
     * Returns a new NepaliDate representing the start of the current year (1st Baisakh)
     * @returns A new NepaliDate set to the first day of the year
     */
    startOfYear(): NepaliDate;
    /**
     * Returns a new NepaliDate representing the end of the current year (last day of Chaitra)
     * @returns A new NepaliDate set to the last day of the year
     */
    endOfYear(): NepaliDate;
    /**
     * Returns the name of the specified Nepali month
     * @param month Month index (0-11)
     * @param short Whether to return the short form of the month name
     * @returns Month name in Nepali or English
     */
    static getMonthName(month: number, short?: boolean, nepali?: boolean): string;
    /**
     * Returns the name of the specified day of week
     * @param day Day of week (0-6, where 0 is Sunday)
     * @param short Whether to return the short form of the day name
     * @returns Day name in Nepali or English
     */
    static getDayName(day: number, short?: boolean, nepali?: boolean): string;
    /**
     * Checks if the specified Nepali date is valid
     * @param year Nepali year to validate
     * @param month Nepali month to validate (0-11)
     * @param day Nepali day to validate
     * @returns true if the date is valid, false otherwise
     */
    static isValid(year: number, month: number, day: number): boolean;
    /**
     * Checks if the current NepaliDate instance contains a valid date
     * @returns true if the date is valid, false otherwise
     */
    isValid(): boolean;
    /**
     * Generate calendar days for a given month, including trailing/leading days from adjacent months
     * @param year Nepali year
     * @param month Nepali month (0-11)
     * @returns An object containing the calendar days for the previous month, current month, and next month.
     * The object also includes the remaining days and the day objects for each month,
     * with each day object containing the date and a flag indicating whether it is part of the current month.
     */
    static getCalendarDays(year: number, month: number): {
        prevRemainingDays: number;
        prevMonth: {
            year: number;
            month: number;
            days: number[];
        };
        currentMonth: {
            year: number;
            month: number;
            days: number[];
        };
        nextMonth: {
            year: number;
            month: number;
            days: number[];
        };
        remainingDays: number;
    };
    /**
     * Creates a copy of the current NepaliDate instance
     * @returns A new NepaliDate instance with the same date and time
     */
    clone(): NepaliDate;
    /**
     * Checks if this date comes after the specified date
     * @param date Date to compare with
     * @returns true if this date is after the specified date, false otherwise
     */
    isAfter(date: NepaliDate): boolean;
    /**
     * Checks if this date comes before the specified date
     * @param date Date to compare with
     * @returns true if this date is before the specified date, false otherwise
     */
    isBefore(date: NepaliDate): boolean;
    /**
     * Checks if this date is equal to the specified date
     * @param date Date to compare with
     * @returns true if dates are exactly equal (year, month, day), false otherwise
     */
    isEqual(date: NepaliDate): boolean;
    /**
     * Checks if this date is the same as the specified date for the given unit
     * @param date Date to compare with
     * @param unit Unit to use for comparison ('year', 'month', or 'day')
     * @returns true if dates are the same for the specified unit, false otherwise
     */
    isSame(date: NepaliDate, unit: 'year' | 'month' | 'day'): boolean;
    /**
     * Returns the start and end dates for a specific quarter in the specified year
     * @param quarter Quarter number (1-4)
     * @param year Nepali year (defaults to current year if not specified)
     * @returns Object containing start and end dates for the specified quarter
     * @throws Error if quarter is not between 1 and 4
     */
    static getQuarter(quarter: number, year?: number): {
        start: NepaliDate;
        end: NepaliDate;
    };
    /**
     * Returns the quarter number (1-4) for the current date
     * @returns Quarter number (1-4)
     */
    getCurrentQuarter(): number;
    /**
     * Returns all quarters for a specified fiscal year
     * @param year Fiscal year (defaults to current fiscal year if not specified)
     * @returns Object containing start and end dates for each quarter of the fiscal year
     */
    static getQuarters(year?: number): {
        Q1: {
            start: NepaliDate;
            end: NepaliDate;
        };
        Q2: {
            start: NepaliDate;
            end: NepaliDate;
        };
        Q3: {
            start: NepaliDate;
            end: NepaliDate;
        };
        Q4: {
            start: NepaliDate;
            end: NepaliDate;
        };
    };
    /**
     * Returns the current fiscal year based on the current date
     * Nepali fiscal year starts from Shrawan 1st (month 3, day 1)
     * @returns Current fiscal year
     */
    static getCurrentFiscalYear(): number;
    /**
     * Returns the start and end dates for a specific fiscal year quarter
     * @param quarter Fiscal year quarter number (1-4)
     * @param fiscalYear Fiscal year (defaults to current fiscal year if not specified)
     * @returns Object containing start and end dates for the specified fiscal year quarter
     * @throws Error if quarter is not between 1 and 4
     */
    static getFiscalYearQuarter(quarter: number, fiscalYear?: number): {
        start: NepaliDate;
        end: NepaliDate;
    };
    /**
     * Returns the current fiscal year quarter number (1-4) for the current date
     * @returns Current fiscal year quarter number (1-4)
     */
    getCurrentFiscalYearQuarter(): number;
    /**
     * Returns the start and end dates of the current fiscal year quarter
     * @returns Object containing start and end dates of the current fiscal year quarter
     */
    getCurrentFiscalYearQuarterDates(): {
        start: NepaliDate;
        end: NepaliDate;
    };
    /**
     * Returns all quarters for a specified fiscal year
     * @param fiscalYear Fiscal year (defaults to current fiscal year if not specified)
     * @returns Object containing start and end dates for each quarter of the fiscal year
     */
    static getFiscalYearQuarters(fiscalYear?: number): {
        Q1: {
            start: NepaliDate;
            end: NepaliDate;
        };
        Q2: {
            start: NepaliDate;
            end: NepaliDate;
        };
        Q3: {
            start: NepaliDate;
            end: NepaliDate;
        };
        Q4: {
            start: NepaliDate;
            end: NepaliDate;
        };
    };
}
