export interface IUser {
  id: string;
  email: string;
  password?: string;
}

export interface ICaregiver extends IUser {
  firstName: string;
  lastName: string;
  phone: string;
  role: 'caregiver' | 'admin';
  createdAt: string;
}

export interface IPatient extends Omit<IUser, 'password'> {
  firstName: string;
  lastName: string;
  phone: string;
  address: string;
  caregiverId: string;
  callSchedule: ICallSchedule[];
  status: PatientStatus;
}

export type PatientStatus = 'active' | 'inactive';
export type CallStatus = 'scheduled' | 'completed' | 'failed';
export type CallFrequency = 'daily' | 'weekly' | 'monthly';

export interface ICallSchedule {
  id: string;
  patientId: string;
  scheduledTime: string;
  frequency: CallFrequency;
  scriptId: string;
  status: CallStatus;
}

export interface ICallScript {
  id: string;
  name: string;
  content: string;
  variables: string[];
  createdBy: string;
  updatedAt: string;
}

export interface ILoginFormData {
  email: string;
  password: string;
}

export interface IAuthState {
  isAuthenticated: boolean;
  user: ICaregiver | null;
  loading: boolean;
  error: string | null;
}

export interface IPatientsState {
  patients: IPatient[];
  loading: boolean;
  error: string | null;
}