import { InsuranceClaim, ClaimStatus } from '../entities/insurance-claim.entity';

export const INSURANCE_CLAIM_REPOSITORY = Symbol('IInsuranceClaimRepository');

export interface IInsuranceClaimRepository {
  create(data: Partial<InsuranceClaim>): InsuranceClaim;
  save(claim: InsuranceClaim): Promise<InsuranceClaim>;
  findById(id: string): Promise<InsuranceClaim | null>;
  count(options?: { where?: Record<string, any> }): Promise<number>;

  /** Paginated list with optional status filter */
  findPaginated(
    page: number,
    limit: number,
    filters?: { status?: string },
  ): Promise<[InsuranceClaim[], number]>;

  /** Sum amount for a given claim status */
  sumAmountByStatus(status: ClaimStatus): Promise<string>;
}
