import {
  PensionAllocationMode,
  PensionAllocationProfile,
  PensionPool,
} from './PensionConfig';

export type CalculationType = 'percentage' | 'fixed_amount';

export interface StatutoryConfiguration {
  id: string;
  country_code: string;
  name: string;
  code: string;
  type: 'employee' | 'employer' | 'both';
  calculation_type: CalculationType;
  rate: string;
  fixed_amount: string | null;
  base: 'basic_salary' | 'gross_salary';
  floor_amount: string | null;
  cap_amount: string | null;
  cap_basis?: 'base' | 'contribution';
  is_pension_source?: boolean;
  is_paye_deductible?: boolean;
  pension_allocation_mode?: PensionAllocationMode;
  pension_pool_id?: string | null;
  pension_allocation_profile_id?: string | null;
  pension_pool?: PensionPool | null;
  pension_allocation_profile?: PensionAllocationProfile | null;
  effective_date: string;
  end_date: string | null;
  is_active: boolean;
  created_at: string;
  updated_at: string;
}

export interface CreateStatutoryConfigurationPayload {
  country_code?: string;
  name: string;
  code: string;
  type: 'employee' | 'employer' | 'both';
  calculation_type?: CalculationType;
  rate?: number | null;
  fixed_amount?: number | null;
  base?: 'basic_salary' | 'gross_salary';
  floor_amount?: number | null;
  cap_amount?: number | null;
  cap_basis?: 'base' | 'contribution';
  is_pension_source?: boolean;
  is_paye_deductible?: boolean;
  pension_allocation_mode?: PensionAllocationMode;
  pension_pool_id?: string | null;
  pension_allocation_profile_id?: string | null;
  effective_date: string;
  end_date?: string | null;
  is_active?: boolean;
}

export interface UpdateStatutoryConfigurationPayload
  extends Partial<CreateStatutoryConfigurationPayload> {
  id: string;
}

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