/**
 * DerechohabienteService - Servicio de gestión de derechohabientes INFONAVIT
 *
 * Gestión de trabajadores con crédito INFONAVIT.
 *
 * @module Infonavit
 */
import { Repository } from 'typeorm';
import { Derechohabiente, DerechohabienteStatus } from '../entities/derechohabiente.entity';
import { HistoricoPuntos } from '../entities/historico-puntos.entity';
import { ServiceContext, PaginatedResult } from '../../../shared/services/base.service';
export interface CreateDerechohabienteDto {
    nss: string;
    curp: string;
    rfc?: string;
    firstName: string;
    lastName: string;
    secondLastName?: string;
    phone?: string;
    email?: string;
    address?: string;
    creditPoints?: number;
    notes?: string;
}
export interface UpdateDerechohabienteDto {
    phone?: string;
    email?: string;
    address?: string;
    notes?: string;
}
export interface PrecalificationDto {
    precalificationDate: Date;
    precalificationAmount: number;
    creditType: string;
    creditPoints: number;
}
export interface DerechohabienteFilters {
    nss?: string;
    curp?: string;
    status?: DerechohabienteStatus;
    search?: string;
    minPoints?: number;
}
export declare class DerechohabienteService {
    private readonly derechohabienteRepository;
    private readonly historicoPuntosRepository;
    constructor(derechohabienteRepository: Repository<Derechohabiente>, historicoPuntosRepository: Repository<HistoricoPuntos>);
    findWithFilters(ctx: ServiceContext, filters?: DerechohabienteFilters, page?: number, limit?: number): Promise<PaginatedResult<Derechohabiente>>;
    findById(ctx: ServiceContext, id: string): Promise<Derechohabiente | null>;
    findByNss(ctx: ServiceContext, nss: string): Promise<Derechohabiente | null>;
    findWithDetails(ctx: ServiceContext, id: string): Promise<Derechohabiente | null>;
    create(ctx: ServiceContext, dto: CreateDerechohabienteDto): Promise<Derechohabiente>;
    update(ctx: ServiceContext, id: string, dto: UpdateDerechohabienteDto): Promise<Derechohabiente | null>;
    updatePoints(ctx: ServiceContext, id: string, newPoints: number, source: string, notes?: string): Promise<Derechohabiente | null>;
    precalify(ctx: ServiceContext, id: string, dto: PrecalificationDto): Promise<Derechohabiente | null>;
    qualify(ctx: ServiceContext, id: string): Promise<Derechohabiente | null>;
    softDelete(ctx: ServiceContext, id: string): Promise<boolean>;
    getPointsHistory(ctx: ServiceContext, derechohabienteId: string): Promise<HistoricoPuntos[]>;
}
//# sourceMappingURL=derechohabiente.service.d.ts.map