export type UserRole = "admin" | "operator" | "viewer";
export type EquipmentStatus = "active" | "service" | "retired";
export interface UserPreferences {
    equipmentCategoryOrder: string[];
    equipmentItemOrder: string[];
}
export interface AuthUser {
    id: string;
    name: string;
    email: string;
    role: UserRole;
    isActive: boolean;
}
export interface AuthSession {
    token: string;
    user: AuthUser;
}
export interface EquipmentCategory {
    id: string;
    name: string;
    itemCount: number;
    activeItemCount: number;
    createdAt: string;
    updatedAt: string;
}
export interface EquipmentItem {
    id: string;
    categoryId: string;
    categoryName: string;
    name: string;
    serialNumber: string | null;
    assetTag: string | null;
    suggestedDayRate: number | null;
    status: EquipmentStatus;
    notes: string | null;
    isVisibleOnTimeline: boolean;
    createdAt: string;
    updatedAt: string;
}
export interface RentalBooking {
    id: string;
    equipmentItemId: string;
    customerName: string;
    orderNumber: string | null;
    projectNumber: string | null;
    projectName: string | null;
    notes: string | null;
    startDate: string;
    endDate: string;
    startTime: string | null;
    endTime: string | null;
    dayRate: number | null;
    totalPrice: number | null;
    createdBy: string | null;
    createdByName: string | null;
    createdAt: string;
    updatedAt: string;
}
export interface TimelineItem extends EquipmentItem {
    bookings: RentalBooking[];
}
export interface TimelineGroup {
    categoryId: string;
    categoryName: string;
    totalItems: number;
    visibleItems: number;
    items: TimelineItem[];
}
export interface TimelineFilters {
    from: string;
    to: string;
    categoryIds: string[];
    status: EquipmentStatus | "all";
    search: string;
    customerName: string;
    includeInactive: boolean;
}
export interface TimelineResponse {
    range: {
        from: string;
        to: string;
        dayCount: number;
    };
    filters: TimelineFilters;
    groups: TimelineGroup[];
}
export declare const USER_ROLE_OPTIONS: Array<{
    value: UserRole;
    label: string;
}>;
export declare const EQUIPMENT_STATUS_OPTIONS: Array<{
    value: EquipmentStatus;
    label: string;
}>;
export declare const addDays: (date: string, days: number) => string;
export declare const BOOKING_TIME_PATTERN: RegExp;
export declare const DEFAULT_BOOKING_START_TIME = "00:00";
export declare const DEFAULT_BOOKING_END_TIME = "23:59";
export declare const normalizeBookingTime: (value?: string | null) => string | null;
export declare const getBookingStartStamp: (booking: Pick<RentalBooking, "startDate" | "startTime">) => number;
export declare const getBookingEndStamp: (booking: Pick<RentalBooking, "endDate" | "endTime">) => number;
export declare const bookingIntervalsOverlap: (left: Pick<RentalBooking, "startDate" | "endDate" | "startTime" | "endTime">, right: Pick<RentalBooking, "startDate" | "endDate" | "startTime" | "endTime">) => boolean;
export declare const bookingConflictOnDay: (left: Pick<RentalBooking, "startDate" | "endDate" | "startTime" | "endTime">, right: Pick<RentalBooking, "startDate" | "endDate" | "startTime" | "endTime">, day: string) => boolean;
export declare const enumerateDays: (from: string, to: string) => string[];
export declare const dayDiffInclusive: (from: string, to: string) => number;
export declare const roundCurrency: (value: number) => number;
export declare const calculateBookingTotalPrice: (startDate: string, endDate: string, dayRate?: number | null) => number | null;
export declare const bookingHasManualTotalPrice: (booking: Pick<RentalBooking, "startDate" | "endDate" | "dayRate" | "totalPrice">) => boolean;
//# sourceMappingURL=index.d.ts.map