export interface LeaveEntitlement {
  id: string;
  leave_type_id: string;
  employee_category_id?: string | null;
  year: number;
  entitled_days: number;
  is_active: boolean;
  leave_type?: {
    id: string;
    name: string;
    code: string;
  };
  employee_category?: {
    id: string;
    name: string;
  };
  created_at?: string;
  updated_at?: string;
}

export interface LeaveEntitlementFilters {
  year?: number;
  leave_type_id?: string;
  employee_category_id?: string | null;
}

export interface CreateLeaveEntitlementPayload {
  leave_type_id: string;
  employee_category_id?: string | null;
  year: number;
  entitled_days: number;
  is_active?: boolean;
}

export interface UpdateLeaveEntitlementPayload extends Partial<CreateLeaveEntitlementPayload> {
  id: string;
}

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

export interface EntitlementSyncPayload {
  year: number;
}

export interface EntitlementSyncResult {
  message: string;
  data: {
    year: number;
    created_count: number;
    updated_count: number;
    total_processed: number;
  };
}

export interface EntitlementCarryForwardPayload {
  year: number;
}

export interface EntitlementCarryForwardResult {
  message: string;
  data: {
    year: number;
    previous_year: number;
    processed_count: number;
  };
}
