import { z } from "zod";
export declare const RoleSchema: z.ZodEnum<{
    athlete: "athlete";
    coach: "coach";
    admin: "admin";
}>;
export type Role = z.infer<typeof RoleSchema>;
export declare const ClassTypeSchema: z.ZodEnum<{
    hyrox: "hyrox";
    strength: "strength";
    run: "run";
    open: "open";
}>;
export type ClassType = z.infer<typeof ClassTypeSchema>;
export declare const SessionStatusSchema: z.ZodEnum<{
    scheduled: "scheduled";
    cancelled: "cancelled";
    completed: "completed";
}>;
export type SessionStatus = z.infer<typeof SessionStatusSchema>;
export declare const BookingStatusSchema: z.ZodEnum<{
    cancelled: "cancelled";
    confirmed: "confirmed";
    waitlisted: "waitlisted";
    no_show: "no_show";
    attended: "attended";
}>;
export type BookingStatus = z.infer<typeof BookingStatusSchema>;
export declare const PublicUserSchema: z.ZodObject<{
    id: z.ZodString;
    email: z.ZodString;
    name: z.ZodNullable<z.ZodString>;
    role: z.ZodEnum<{
        athlete: "athlete";
        coach: "coach";
        admin: "admin";
    }>;
}, z.core.$strip>;
export type PublicUser = z.infer<typeof PublicUserSchema>;
export declare const ClassTemplateSchema: z.ZodObject<{
    id: z.ZodString;
    name: z.ZodString;
    description: z.ZodNullable<z.ZodString>;
    type: z.ZodEnum<{
        hyrox: "hyrox";
        strength: "strength";
        run: "run";
        open: "open";
    }>;
    defaultCapacity: z.ZodNumber;
    defaultDurationMin: z.ZodNumber;
    archived: z.ZodBoolean;
    createdAt: z.ZodString;
    updatedAt: z.ZodString;
}, z.core.$strip>;
export type ClassTemplate = z.infer<typeof ClassTemplateSchema>;
export declare const CreateClassTemplateInput: z.ZodObject<{
    name: z.ZodString;
    description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    type: z.ZodEnum<{
        hyrox: "hyrox";
        strength: "strength";
        run: "run";
        open: "open";
    }>;
    defaultCapacity: z.ZodDefault<z.ZodNumber>;
    defaultDurationMin: z.ZodDefault<z.ZodNumber>;
}, z.core.$strip>;
export type CreateClassTemplateInput = z.infer<typeof CreateClassTemplateInput>;
export declare const UpdateClassTemplateInput: z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    type: z.ZodOptional<z.ZodEnum<{
        hyrox: "hyrox";
        strength: "strength";
        run: "run";
        open: "open";
    }>>;
    defaultCapacity: z.ZodOptional<z.ZodNumber>;
    defaultDurationMin: z.ZodOptional<z.ZodNumber>;
    archived: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strip>;
export type UpdateClassTemplateInput = z.infer<typeof UpdateClassTemplateInput>;
export declare const ClassSessionSchema: z.ZodObject<{
    id: z.ZodString;
    templateId: z.ZodString;
    coachUserId: z.ZodString;
    startsAt: z.ZodString;
    endsAt: z.ZodString;
    capacity: z.ZodNumber;
    waitlistCapacity: z.ZodNumber;
    status: z.ZodEnum<{
        scheduled: "scheduled";
        cancelled: "cancelled";
        completed: "completed";
    }>;
    notes: z.ZodNullable<z.ZodString>;
}, z.core.$strip>;
export type ClassSession = z.infer<typeof ClassSessionSchema>;
export declare const ClassSessionWithDetailsSchema: z.ZodObject<{
    id: z.ZodString;
    templateId: z.ZodString;
    coachUserId: z.ZodString;
    startsAt: z.ZodString;
    endsAt: z.ZodString;
    capacity: z.ZodNumber;
    waitlistCapacity: z.ZodNumber;
    status: z.ZodEnum<{
        scheduled: "scheduled";
        cancelled: "cancelled";
        completed: "completed";
    }>;
    notes: z.ZodNullable<z.ZodString>;
    template: z.ZodObject<{
        id: z.ZodString;
        name: z.ZodString;
        type: z.ZodEnum<{
            hyrox: "hyrox";
            strength: "strength";
            run: "run";
            open: "open";
        }>;
    }, z.core.$strip>;
    coach: z.ZodObject<{
        id: z.ZodString;
        name: z.ZodNullable<z.ZodString>;
    }, z.core.$strip>;
    confirmedCount: z.ZodNumber;
    waitlistCount: z.ZodNumber;
    myBookingStatus: z.ZodNullable<z.ZodEnum<{
        confirmed: "confirmed";
        waitlisted: "waitlisted";
    }>>;
    myBookingId: z.ZodNullable<z.ZodString>;
}, z.core.$strip>;
export type ClassSessionWithDetails = z.infer<typeof ClassSessionWithDetailsSchema>;
export declare const CreateClassSessionInput: z.ZodObject<{
    templateId: z.ZodString;
    coachUserId: z.ZodOptional<z.ZodString>;
    startsAt: z.ZodString;
    endsAt: z.ZodString;
    capacity: z.ZodOptional<z.ZodNumber>;
    waitlistCapacity: z.ZodDefault<z.ZodNumber>;
    notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
}, z.core.$strip>;
export type CreateClassSessionInput = z.infer<typeof CreateClassSessionInput>;
export declare const UpdateClassSessionInput: z.ZodObject<{
    startsAt: z.ZodOptional<z.ZodString>;
    endsAt: z.ZodOptional<z.ZodString>;
    capacity: z.ZodOptional<z.ZodNumber>;
    waitlistCapacity: z.ZodOptional<z.ZodNumber>;
    notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    status: z.ZodOptional<z.ZodEnum<{
        scheduled: "scheduled";
        cancelled: "cancelled";
        completed: "completed";
    }>>;
    coachUserId: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export type UpdateClassSessionInput = z.infer<typeof UpdateClassSessionInput>;
export declare const ListSessionsQuery: z.ZodObject<{
    from: z.ZodOptional<z.ZodString>;
    to: z.ZodOptional<z.ZodString>;
    status: z.ZodOptional<z.ZodEnum<{
        scheduled: "scheduled";
        cancelled: "cancelled";
        completed: "completed";
    }>>;
}, z.core.$strip>;
export type ListSessionsQuery = z.infer<typeof ListSessionsQuery>;
export declare const BookingSchema: z.ZodObject<{
    id: z.ZodString;
    sessionId: z.ZodString;
    userId: z.ZodString;
    status: z.ZodEnum<{
        cancelled: "cancelled";
        confirmed: "confirmed";
        waitlisted: "waitlisted";
        no_show: "no_show";
        attended: "attended";
    }>;
    bookedAt: z.ZodString;
    cancelledAt: z.ZodNullable<z.ZodString>;
    promotedAt: z.ZodNullable<z.ZodString>;
}, z.core.$strip>;
export type Booking = z.infer<typeof BookingSchema>;
export declare const BookingWithSessionSchema: z.ZodObject<{
    id: z.ZodString;
    sessionId: z.ZodString;
    userId: z.ZodString;
    status: z.ZodEnum<{
        cancelled: "cancelled";
        confirmed: "confirmed";
        waitlisted: "waitlisted";
        no_show: "no_show";
        attended: "attended";
    }>;
    bookedAt: z.ZodString;
    cancelledAt: z.ZodNullable<z.ZodString>;
    promotedAt: z.ZodNullable<z.ZodString>;
    session: z.ZodObject<{
        id: z.ZodString;
        startsAt: z.ZodString;
        endsAt: z.ZodString;
        template: z.ZodObject<{
            id: z.ZodString;
            name: z.ZodString;
            type: z.ZodEnum<{
                hyrox: "hyrox";
                strength: "strength";
                run: "run";
                open: "open";
            }>;
        }, z.core.$strip>;
    }, z.core.$strip>;
}, z.core.$strip>;
export type BookingWithSession = z.infer<typeof BookingWithSessionSchema>;
//# sourceMappingURL=types.d.ts.map