import type { Request } from 'express';

export type Role = 'owner' | 'admin' | 'manager' | 'accounts' | 'sales' | 'office_staff' | 'store' | 'service_manager' | 'engineer';

export interface AuthUser {
  id: string;
  name: string;
  email: string;
  phone: string | null;
  role: Role;
  forcePasswordChange: boolean;
  employeeCode: string | null;
}

export interface AuthedRequest extends Request {
  auth?: AuthUser;
}

export interface ServicePartInput {
  productId: string;
  quantity: number;
  billingType?: 'warranty' | 'free' | 'chargeable';
  unitPrice?: number;
  note?: string;
}

export interface SyncAction {
  clientActionId: string;
  type: 'ticket.start' | 'ticket.note' | 'ticket.complete';
  payload: Record<string, unknown>;
  queuedAt: string;
}
