type Prayer = "fajr" | "dhuhr" | "asr" | "maghrib" | "isha";
type Coordinates = {
    longitude: number;
    latitude: number;
};
type Options = {
    convention?: Convention;
    hanafiAsr?: boolean;
};
type FormattedTime = {
    date: Date;
    formatted12H: string;
    formatted24H: string;
};
type PrayerTimes = {
    fajr: FormattedTime;
    dhuhr: FormattedTime;
    asr: FormattedTime;
    maghrib: FormattedTime;
    isha: FormattedTime;
};
type ExtraInfo = {
    sunrise: FormattedTime;
    midnight: FormattedTime;
    dayOfYear: number | string;
    dayLength: string;
    nextPrayer: {
        name: Prayer;
        remainingSeconds: number;
    };
};
type PrayerTimesResult = {
    data: {
        prayers: PrayerTimes;
        extras: ExtraInfo;
    } | null;
    error: Error | null;
};
type Convention = "Muslim World League" | "Islamic Society of North America (ISNA)" | "Egyptian General Authority of Survey" | "Umm al-Qura University, Makkah" | "University of Islamic Sciences, Karachi" | "Institute of Geophysics, University of Tehran" | "Shia Ithna Ashari, Leva Research Institute, Qum";

/**
 * Calculates the Islamic prayer times for a given date and geographical location.
 *
 * This function computes the prayer times for Fajr, Dhuhr, Asr, Maghrib, and Isha,
 * as well as additional information such as sunrise, midnight, and the day length.
 * It also calculates the next prayer time based on the current date.
 * The calculation is influenced by the provided coordinates (latitude and longitude),
 * and optional settings for conventions (e.g., calculation methods) and Asr prayer calculation
 * (using the Hanafi method).
 *
 * @param date - The date for which the prayer times should be calculated. It must be a valid Date object.
 * @param coordinates - The geographical coordinates (longitude and latitude) of the location.
 * @param options - Optional settings that may influence the calculation methods, such as:
 *   - `convention`: Specifies the convention for Fajr and Isha calculation.
 *   - `hanafiAsr`: If true, the Hanafi method for Asr prayer calculation will be used.
 *
 * @returns An object containing the prayer times (`prayers`), additional information (`extras`), and any errors encountered:
 *   - `data`: An object with `prayers` (formatted prayer times) and `extras` (sunrise, midnight, day length, and next prayer).
 *   - `error`: An error object if calculation fails, or null if no error occurred.
 *
 * @throws {Error} If the input date is invalid, coordinates are out of range, or the location is in an unsupported polar region.
 */
declare function getPrayerTimes(date: Date, coordinates: Coordinates, options: Options | undefined): PrayerTimesResult;

export { getPrayerTimes };
