import moment from 'moment';
/**
 * Helper class that provides common date constants and helpful date functions
 */
export declare class DateTimeHelper {
    static beginningOfTime: Date;
    /** 3000-01-01 */
    static endOfTime: Date;
    /** Default effective date for new AccountMeter relationships: 2010-01-01 */
    static defaultAccountMeterEffectiveDate: Date;
    /** The default date that a newly created account becomes effective: 2010-01-01 */
    static defaultAccountServiceEffectiveDate: Date;
    /** Minimum date for all datepickers: 1980-01-01 */
    static minDatePickerDate: Date;
    /** Maximum date for all datepickers: 3000-01-01 11:59:59 PM to allow for local time offset working in for 3000-01-01 dates, which we store in the db to represent "end of time" */
    static maxDatePickerDate: Date;
    /** Timestamp formats */
    static defaultDateFormat: string;
    static defaultTimeFormat: string;
    static defaultTimestampFormat: string;
    /** List of valid bill import date formats
     *  Warning! Do not use these for actual formatting of dates
     */
    static billImportFormatDateFormats: {
        label: string;
        value: string;
    }[];
    /**
     * User input formats that we will parse into a date
     * when the users date format preference has month before day
     */
    static monthFirstParseFormats: string[];
    /**
     * User input formats that we will parse into a date
     * when the users date format preference has day before month
     */
    static dateFirstParseFormats: string[];
    /**
     * Format to display the time portion of a datetime
     */
    static timeFormat: string;
    /**
     * Return true if @see date is equal to the @see endOfTime
     */
    static isEndOfTime(date: Date | moment.Moment | string): boolean;
    /**
     * Compare two dates and return true if they represent the same year, month, and day (time is ignored).
     */
    static isSameDay(date1: Date | moment.Moment | string, date2: Date | moment.Moment | string): boolean;
    /**
     * Get the parse formats based on the given date format. If no date format is
     * given, or we don't recognize the format, return the month first parse formats.
     *
     */
    static getParseFormats(dateFormat?: string | null): string[];
    /**
     * Get relationship start date (favoring date in partialFormState if exists)
     * * return default account-meter effective date if no start date found
     *
     */
    static getAccountMeterStartDate(partialFormState: any, accountMeter: {
        startDate: Date | null | undefined;
    }): Date;
    /**
     * Get relationship end date (favoring date in partialFormState if exists)
     * * return null if no stored date or end date is 1/1/3000
     */
    static getAccountMeterEndDate(partialFormState: any, accountMeter: {
        endDate: Date | null | undefined;
    }): Date | null;
    static isDateBetween(date: Date, startDate?: Date | null, endDate?: Date | null, includeStart?: boolean, includeEnd?: boolean): boolean;
    static stringToDate(dateString: string | null | undefined): Date | null | undefined;
}
