import { z } from 'zod';

/**
 * @fileoverview WSDOT Travel Times API Input Schemas
 *
 * This module provides Zod schemas for validating input parameters for the WSDOT
 * Travel Times API endpoints.
 */

/**
 * Schema for GetTravelTimeById input parameters
 *
 * Provides current travel times for many popular travel routes around Washington State. Coverage Area: Seattle, Tacoma, and Snoqualmie Pass areas.
 */
declare const travelTimeByIdInputSchema: z.ZodObject<{
    TravelTimeID: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
    TravelTimeID: number;
}, {
    TravelTimeID: number;
}>;
type TravelTimeByIdInput = z.infer<typeof travelTimeByIdInputSchema>;
/**
 * Schema for GetTravelTimes input parameters
 *
 * Provides current travel times for many popular travel routes around Washington State. Coverage Area: Seattle, Tacoma, and Snoqualmie Pass areas.
 */
declare const travelTimesInputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
type TravelTimesInput = z.infer<typeof travelTimesInputSchema>;

/**
 * @fileoverview WSDOT Travel Times API Output Schemas
 *
 * This module provides Zod schemas for validating responses from the WSDOT
 * Travel Times API, which provides current travel times for covered routes
 * in Seattle, Tacoma, and Snoqualmie Pass areas.
 */

/**
 * Schema for TravelTimeRoute - represents a travel time route
 *
 * Provides current travel times for many popular travel routes around Washington State. Coverage Area: Seattle, Tacoma, and Snoqualmie Pass areas.
 */
declare const travelTimeRouteSchema: z.ZodObject<{
    AverageTime: z.ZodNumber;
    CurrentTime: z.ZodNumber;
    Description: z.ZodNullable<z.ZodString>;
    Distance: z.ZodNumber;
    EndPoint: z.ZodNullable<z.ZodObject<{
        Description: z.ZodNullable<z.ZodString>;
        Direction: z.ZodNullable<z.ZodString>;
        Latitude: z.ZodNumber;
        Longitude: z.ZodNumber;
        MilePost: z.ZodNumber;
        RoadName: z.ZodNullable<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        Description: string | null;
        Direction: string | null;
        Latitude: number;
        Longitude: number;
        MilePost: number;
        RoadName: string | null;
    }, {
        Description: string | null;
        Direction: string | null;
        Latitude: number;
        Longitude: number;
        MilePost: number;
        RoadName: string | null;
    }>>;
    Name: z.ZodNullable<z.ZodString>;
    StartPoint: z.ZodNullable<z.ZodObject<{
        Description: z.ZodNullable<z.ZodString>;
        Direction: z.ZodNullable<z.ZodString>;
        Latitude: z.ZodNumber;
        Longitude: z.ZodNumber;
        MilePost: z.ZodNumber;
        RoadName: z.ZodNullable<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        Description: string | null;
        Direction: string | null;
        Latitude: number;
        Longitude: number;
        MilePost: number;
        RoadName: string | null;
    }, {
        Description: string | null;
        Direction: string | null;
        Latitude: number;
        Longitude: number;
        MilePost: number;
        RoadName: string | null;
    }>>;
    TimeUpdated: z.ZodDate;
    TravelTimeID: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
    Description: string | null;
    TimeUpdated: Date;
    TravelTimeID: number;
    AverageTime: number;
    CurrentTime: number;
    Distance: number;
    EndPoint: {
        Description: string | null;
        Direction: string | null;
        Latitude: number;
        Longitude: number;
        MilePost: number;
        RoadName: string | null;
    } | null;
    Name: string | null;
    StartPoint: {
        Description: string | null;
        Direction: string | null;
        Latitude: number;
        Longitude: number;
        MilePost: number;
        RoadName: string | null;
    } | null;
}, {
    Description: string | null;
    TimeUpdated: Date;
    TravelTimeID: number;
    AverageTime: number;
    CurrentTime: number;
    Distance: number;
    EndPoint: {
        Description: string | null;
        Direction: string | null;
        Latitude: number;
        Longitude: number;
        MilePost: number;
        RoadName: string | null;
    } | null;
    Name: string | null;
    StartPoint: {
        Description: string | null;
        Direction: string | null;
        Latitude: number;
        Longitude: number;
        MilePost: number;
        RoadName: string | null;
    } | null;
}>;
type TravelTimeRoute = z.infer<typeof travelTimeRouteSchema>;

export { type TravelTimeByIdInput, type TravelTimeRoute, type TravelTimesInput, travelTimeByIdInputSchema, travelTimeRouteSchema, travelTimesInputSchema };
