export interface LeaveType {
  id: string;
  name: string;
  code: string;
  description?: string | null;
  default_days: number;
  min_days_per_request: number;
  max_days_per_request?: number | null;
  requires_attachment: boolean;
  requires_reason: boolean;
  is_paid: boolean;
  carry_forward_allowed: boolean;
  max_carry_forward_days?: number | null;
  advance_notice_days: number;
  applicable_gender: 'all' | 'male' | 'female';
  is_active: boolean;
  sort_order: number;
  color_code?: string | null;
  country_code: string;
  entitlements_count?: number;
  created_at?: string;
  updated_at?: string;
}

export interface CreateLeaveTypePayload {
  name: string;
  code: string;
  description?: string | null;
  default_days: number;
  min_days_per_request?: number;
  max_days_per_request?: number | null;
  requires_attachment?: boolean;
  requires_reason?: boolean;
  is_paid?: boolean;
  carry_forward_allowed?: boolean;
  max_carry_forward_days?: number | null;
  advance_notice_days?: number;
  applicable_gender?: 'all' | 'male' | 'female';
  is_active?: boolean;
  sort_order?: number;
  color_code?: string | null;
  country_code?: string;
}

export interface UpdateLeaveTypePayload extends Partial<CreateLeaveTypePayload> {
  id: string;
}

export interface DeleteLeaveTypePayload {
  message: string;
  id?: string;
}
