import { z } from "zod";
import type { CabinClass } from "../fare/types.ts";
import { ScheduleLookup } from "../schedule/lookup.ts";
import type { RebookingOption, RebookingProvider } from "./disruption.ts";
export interface ScheduleFareRebookingProviderConfig {
    /** Tax region for fare calculation (e.g. "AU", "US", "UK"). */
    taxRegion: string;
    /** Whether the route is domestic (affects tax calculation). */
    isDomestic: boolean;
    /** Default cabin class when not specified. Defaults to "economy". */
    defaultCabinClass?: CabinClass;
    /** ISO 3166-1 alpha-2 region for holiday surcharge lookups. */
    holidayRegion?: string;
    /** When true, apply holiday surcharges to rebooking fare calculations. */
    holidaySurcharges?: boolean;
}
export declare const ScheduleFareRebookingProviderConfigSchema: z.ZodObject<{
    taxRegion: z.ZodString;
    isDomestic: z.ZodBoolean;
    defaultCabinClass: z.ZodDefault<z.ZodEnum<{
        economy: "economy";
        business: "business";
        "premium-economy": "premium-economy";
        first: "first";
    }>>;
    holidayRegion: z.ZodOptional<z.ZodString>;
    holidaySurcharges: z.ZodDefault<z.ZodBoolean>;
}, z.core.$strip>;
/**
 * Concrete `RebookingProvider` that finds rebooking options
 * by querying a `ScheduleLookup` for available flights on the
 * same route, then calculating fares for each.
 *
 * ```ts
 * const provider = new ScheduleFareRebookingProvider(lookup, {
 *   taxRegion: "AU",
 *   isDomestic: true,
 * });
 *
 * const options = provider.findOptions({
 *   origin: "SYD",
 *   destination: "MEL",
 *   date: "2026-06-15",
 * });
 * ```
 */
export declare class ScheduleFareRebookingProvider implements RebookingProvider {
    private readonly lookup;
    private readonly config;
    constructor(lookup: ScheduleLookup, config: ScheduleFareRebookingProviderConfig);
    /**
     * Find rebooking options for a given route and date.
     *
     * 1. Queries ScheduleLookup for flights on the route/date
     * 2. For each flight, creates a FareComponent and calculates fare
     * 3. Returns sorted by departure time (earliest first)
     */
    findOptions(params: {
        origin: string;
        destination: string;
        date: string;
        cabinClass?: CabinClass;
    }): RebookingOption[];
    private entryToOption;
    /**
     * Estimate a base fare amount based on block time and cabin class.
     * Heuristic for mock/testing. Production would use ATPCO fares.
     */
    private estimateBaseAmount;
}
//# sourceMappingURL=rebooking.d.ts.map