import type { HolidayImpact, SeasonDefinition } from "./types.ts";
/** Compute IATA season dates for a given year. */
export declare function iataSeasonDates(year: number): {
    summer: SeasonDefinition;
    winter: SeasonDefinition;
};
export interface DstTransitionInfo {
    zone: string;
    springForward: string | null;
    fallBack: string | null;
}
/**
 * Find DST transition dates for a given IANA timezone in a given year.
 * Returns approximate dates by checking mid-March and mid-October/November.
 */
export declare function dstTransitionsForYear(zone: string, year: number): DstTransitionInfo;
export interface HolidayProvider {
    region: string;
    holidays(year: number): Array<{
        date: string;
        name: string;
    }>;
}
/**
 * Get public holidays for a region and year.
 */
export declare function publicHolidays(region: string, year: number): Array<{
    date: string;
    name: string;
}>;
/**
 * Check if a date is a public holiday in a given region.
 */
export declare function isPublicHoliday(date: string, region: string): boolean;
/**
 * Register a custom holiday provider for a region.
 */
export declare function registerHolidayProvider(provider: HolidayProvider): void;
export interface DateHolidaysProviderOpts {
    /** State / province (e.g. "NSW", "CA") */
    state?: string;
    /** Region within a state */
    region?: string;
    /** Holiday types to include. Defaults to ["public"]. */
    types?: Array<"public" | "bank" | "optional" | "school">;
}
/**
 * HolidayProvider backed by the `date-holidays` library.
 * Provides accurate, computed holiday dates for 100+ countries,
 * replacing the approximate hardcoded providers.
 *
 * @example
 * ```ts
 * const auProvider = new DateHolidaysProvider("AU", { state: "NSW" });
 * registerHolidayProvider(auProvider);
 * ```
 */
export declare class DateHolidaysProvider implements HolidayProvider {
    readonly region: string;
    private readonly opts;
    constructor(country: string, opts?: DateHolidaysProviderOpts);
    holidays(year: number): Array<{
        date: string;
        name: string;
    }>;
}
/**
 * Replace the hardcoded AU/US/UK holiday providers with accurate
 * date-holidays–backed providers. Call once at app startup if you want
 * precise holiday dates instead of the approximate built-in data.
 *
 * Existing hardcoded providers are overwritten via registerHolidayProvider.
 */
export declare function initDateHolidaysProviders(): void;
export declare function isHolidayAffected(date: string, // YYYY-MM-DD
region: string): {
    impact: HolidayImpact;
    holidayName: string | null;
};
//# sourceMappingURL=calendar.d.ts.map