import { z } from "zod";
export declare const CrewRoleSchema: z.ZodEnum<{
    captain: "captain";
    "first-officer": "first-officer";
    "cabin-senior": "cabin-senior";
    "cabin-crew": "cabin-crew";
    engineer: "engineer";
}>;
export type CrewRole = z.infer<typeof CrewRoleSchema>;
export declare const CrewStatusSchema: z.ZodEnum<{
    "on-duty": "on-duty";
    "off-duty": "off-duty";
    rest: "rest";
    positioning: "positioning";
    deadheading: "deadheading";
    sick: "sick";
    standby: "standby";
}>;
export type CrewStatus = z.infer<typeof CrewStatusSchema>;
export declare const CrewMemberSchema: z.ZodObject<{
    crewId: z.ZodString;
    firstName: z.ZodString;
    lastName: z.ZodString;
    role: z.ZodEnum<{
        captain: "captain";
        "first-officer": "first-officer";
        "cabin-senior": "cabin-senior";
        "cabin-crew": "cabin-crew";
        engineer: "engineer";
    }>;
    airline: z.ZodString;
    base: z.ZodString;
    currentLocation: z.ZodString;
    status: z.ZodEnum<{
        "on-duty": "on-duty";
        "off-duty": "off-duty";
        rest: "rest";
        positioning: "positioning";
        deadheading: "deadheading";
        sick: "sick";
        standby: "standby";
    }>;
    dutyRemainingMinutes: z.ZodNumber;
    flightHoursDuty: z.ZodNumber;
    maxFlightHoursDuty: z.ZodDefault<z.ZodNumber>;
    isLegal: z.ZodBoolean;
    lastRestEnd: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export type CrewMember = z.infer<typeof CrewMemberSchema>;
export declare const CrewAssignmentSchema: z.ZodObject<{
    flightNumber: z.ZodString;
    airline: z.ZodString;
    date: z.ZodString;
    crew: z.ZodArray<z.ZodObject<{
        crewId: z.ZodString;
        firstName: z.ZodString;
        lastName: z.ZodString;
        role: z.ZodEnum<{
            captain: "captain";
            "first-officer": "first-officer";
            "cabin-senior": "cabin-senior";
            "cabin-crew": "cabin-crew";
            engineer: "engineer";
        }>;
        airline: z.ZodString;
        base: z.ZodString;
        currentLocation: z.ZodString;
        status: z.ZodEnum<{
            "on-duty": "on-duty";
            "off-duty": "off-duty";
            rest: "rest";
            positioning: "positioning";
            deadheading: "deadheading";
            sick: "sick";
            standby: "standby";
        }>;
        dutyRemainingMinutes: z.ZodNumber;
        flightHoursDuty: z.ZodNumber;
        maxFlightHoursDuty: z.ZodDefault<z.ZodNumber>;
        isLegal: z.ZodBoolean;
        lastRestEnd: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
    isLegal: z.ZodBoolean;
    issues: z.ZodDefault<z.ZodArray<z.ZodString>>;
}, z.core.$strip>;
export type CrewAssignment = z.infer<typeof CrewAssignmentSchema>;
export declare class CrewTracker {
    private readonly crew;
    /** Register a crew member. Validates input with Zod. */
    register(member: Omit<CrewMember, "isLegal">): CrewMember;
    /** Get a crew member by ID. */
    get(crewId: string): CrewMember | undefined;
    /** Update crew member status. Validates status with Zod. */
    updateStatus(crewId: string, status: CrewStatus): CrewMember | undefined;
    /** Update crew location after a flight leg. */
    updateLocation(crewId: string, newLocation: string, flightMinutes: number): CrewMember | undefined;
    /** Place crew on rest. */
    startRest(crewId: string): CrewMember | undefined;
    /** End rest period — reset duty tracking. */
    endRest(crewId: string): CrewMember | undefined;
    /** Validate crew assignment for a flight. */
    validateAssignment(flightNumber: string, airline: string, date: string, crewIds: string[]): CrewAssignment;
    /** Find available standby crew at an airport. */
    findStandby(airport: string, role?: CrewRole): CrewMember[];
    /** Get all crew. */
    getAll(): CrewMember[];
    /** Count crew by status. */
    countByStatus(): Record<string, number>;
    private computeLegality;
}
//# sourceMappingURL=crew.d.ts.map