import { z } from "zod";
export declare const GdsErrorCodeSchema: z.ZodEnum<{
    AUTH_EXPIRED: "AUTH_EXPIRED";
    AUTH_INVALID: "AUTH_INVALID";
    RATE_LIMITED: "RATE_LIMITED";
    SERVICE_UNAVAILABLE: "SERVICE_UNAVAILABLE";
    TIMEOUT: "TIMEOUT";
    INVALID_REQUEST: "INVALID_REQUEST";
    CARRIER_NOT_SUPPORTED: "CARRIER_NOT_SUPPORTED";
    ROUTE_NOT_FOUND: "ROUTE_NOT_FOUND";
    FARE_NOT_AVAILABLE: "FARE_NOT_AVAILABLE";
    BOOKING_CONFLICT: "BOOKING_CONFLICT";
    CIRCUIT_OPEN: "CIRCUIT_OPEN";
    UNKNOWN: "UNKNOWN";
}>;
export type GdsErrorCode = z.infer<typeof GdsErrorCodeSchema>;
export declare const GdsErrorSchema: z.ZodObject<{
    code: z.ZodEnum<{
        AUTH_EXPIRED: "AUTH_EXPIRED";
        AUTH_INVALID: "AUTH_INVALID";
        RATE_LIMITED: "RATE_LIMITED";
        SERVICE_UNAVAILABLE: "SERVICE_UNAVAILABLE";
        TIMEOUT: "TIMEOUT";
        INVALID_REQUEST: "INVALID_REQUEST";
        CARRIER_NOT_SUPPORTED: "CARRIER_NOT_SUPPORTED";
        ROUTE_NOT_FOUND: "ROUTE_NOT_FOUND";
        FARE_NOT_AVAILABLE: "FARE_NOT_AVAILABLE";
        BOOKING_CONFLICT: "BOOKING_CONFLICT";
        CIRCUIT_OPEN: "CIRCUIT_OPEN";
        UNKNOWN: "UNKNOWN";
    }>;
    message: z.ZodString;
    provider: z.ZodString;
    retryable: z.ZodBoolean;
    retryAfterMs: z.ZodOptional<z.ZodNumber>;
    originalError: z.ZodOptional<z.ZodUnknown>;
}, z.core.$strip>;
export type GdsError = z.infer<typeof GdsErrorSchema>;
/**
 * Classify an unknown error from a GDS provider into our error taxonomy.
 */
export declare function classifyGdsError(error: unknown, provider: string): GdsError;
/**
 * Typed error class for GDS errors.
 */
export declare class GdsErrorClass extends Error {
    readonly code: GdsErrorCode;
    readonly provider: string;
    readonly retryable: boolean;
    readonly retryAfterMs?: number | undefined;
    readonly originalError?: unknown | undefined;
    constructor(code: GdsErrorCode, message: string, provider: string, retryable: boolean, retryAfterMs?: number | undefined, originalError?: unknown | undefined);
    toJSON(): GdsError;
    static fromJSON(data: GdsError): GdsErrorClass;
}
//# sourceMappingURL=errors.d.ts.map