import { Availability } from '@dvn/takvim/api/models';
import { Unavailability } from '@dvn/takvim/api/models/Unavailability';
import { Slot } from '@dvn/takvim/models/Slot';
/**
 * Generates the availabilities from the raw availability list by using their recurrence.
 * Recurring availabilities are populated for every week/month until the maxMonthForRecurrence is reached.
 * @param availabilities
 * @param maxMonthForRecurrence
 * @param startDate used for calculating the end month
 */
export declare const generateAvailabilities: (availabilities: Availability[], unavailabilitiesOfOtherUser?: Unavailability[], maxMonthForRecurrence?: number, startDate?: Date) => Availability[];
/**
 * Returns the earliest start time and latest end time of the given availabilities.
 * @param availabilities
 */
export declare const getTimeFrameOfAvailabilities: (availabilities: Availability[]) => {
  startDate: Date;
  endDate: Date;
};
export declare const generateSlotsForAvailabilities: (availabilities: Availability[], unavailabilitiesOfCurrentUser: Unavailability[], unavailabilitiesOfOtherUser: Unavailability[]) => Slot[];
export declare const doTimesIntersect: (start1: Date, end1: Date, start2: Date, end2: Date) => boolean;
export declare const generateSlotsForAvailability: (availability: Availability) => Slot[];
export declare const filterConflictingSlots: (slots: Slot[], unavailabilitiesOfCurrentUser: Unavailability[], unavailabilitiesOfOtherUser: Unavailability[]) => Slot[];
