import { DateTime } from 'luxon';
export type DayOfWeek = 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday';
export type Holiday = `${3 | 2 | 1 | 0}${number}/${1 | 0}${number}`;
export declare class BusinessTime {
    private businessTimezone;
    private businessDays;
    private holidays;
    private startOfDayTime;
    private endOfDayTime;
    static computeWorkingHours: (startHour: number, endHour: number) => number;
    constructor({ businessTimezone, businessDays, businessHours, holidays, }: {
        businessTimezone: string;
        businessDays: DayOfWeek[];
        businessHours: number[];
        holidays: Holiday[];
    });
    computeWorkingHours: () => number;
    isBusinessDay(datetime: DateTime): boolean;
    computeBusinessDaysInInterval({ start, end, }: {
        start: DateTime;
        end: DateTime;
    }): number;
    computeBusinessHoursInInterval({ start, end, }: {
        start: DateTime;
        end: DateTime;
    }): number;
    computeBusinessMinutesInInterval({ start, end, }: {
        start: DateTime;
        end: DateTime;
    }): number;
    computeBusinessSecondsInInterval({ start, end, }: {
        start: DateTime;
        end: DateTime;
    }): number;
    computeBusinessTimeInInterval({ start, end, unit, }: {
        start: DateTime;
        end: DateTime;
        unit: 'hours' | 'minutes' | 'seconds';
    }): number;
    /**
     * Move the date in a business time (moveBehind = false)
     * e.g. 06:00 => 10:00 of the current day
     * e.g. 22:00 => 10:00 of the next day
     *
     * Move the date in a business time (moveBehind = true)
     * e.g. 06:00 => 19:00 of the previous day
     * e.g. 22:00 => 19:00 of the current day
     *
     * Warning ⚠️ _moveDateInBusinessTime doesn't retain the original timezone of the datetime in input, but it returns a datetime with the same timezone used to compute business times.
     * It follows that behaviour because this method should be private and used only as helper. It is public only for testing purpose.
     */
    _moveDateInBusinessTime({ datetime, moveBehind, }: {
        datetime: DateTime;
        moveBehind?: boolean;
    }): DateTime<true> | DateTime<false>;
    addBusinessHoursToDate({ datetime, hours, }: {
        datetime: DateTime;
        hours: number;
    }): DateTime<boolean>;
    addBusinessSecondsToDate({ datetime, seconds, }: {
        datetime: DateTime;
        seconds: number;
    }): DateTime<boolean>;
    removeBusinessHoursFromDate({ datetime, hours, }: {
        datetime: DateTime;
        hours: number;
    }): DateTime<boolean>;
    removeBusinessSecondsFromDate({ datetime, seconds, }: {
        datetime: DateTime;
        seconds: number;
    }): DateTime<boolean>;
    hoursToDays(hours: number): number;
}
