/**
 * PuestoService - Servicio para catálogo de puestos
 *
 * Gestión de puestos de trabajo con CRUD básico.
 *
 * @module HR
 */
import { Repository } from 'typeorm';
import { Puesto } from '../entities/puesto.entity';
import { ServiceContext, PaginatedResult } from '../../../shared/services/base.service';
export interface CreatePuestoDto {
    codigo: string;
    nombre: string;
    descripcion?: string;
    nivelRiesgo?: string;
    requiereCapacitacionEspecial?: boolean;
}
export interface UpdatePuestoDto {
    nombre?: string;
    descripcion?: string;
    nivelRiesgo?: string;
    requiereCapacitacionEspecial?: boolean;
    activo?: boolean;
}
export interface PuestoFilters {
    activo?: boolean;
    nivelRiesgo?: string;
    search?: string;
}
export declare class PuestoService {
    private readonly repository;
    constructor(repository: Repository<Puesto>);
    findAll(ctx: ServiceContext, filters?: PuestoFilters, page?: number, limit?: number): Promise<PaginatedResult<Puesto>>;
    findById(ctx: ServiceContext, id: string): Promise<Puesto | null>;
    findByCodigo(ctx: ServiceContext, codigo: string): Promise<Puesto | null>;
    create(ctx: ServiceContext, dto: CreatePuestoDto): Promise<Puesto>;
    update(ctx: ServiceContext, id: string, dto: UpdatePuestoDto): Promise<Puesto | null>;
    toggleActive(ctx: ServiceContext, id: string): Promise<Puesto | null>;
    getActiveCount(ctx: ServiceContext): Promise<number>;
}
//# sourceMappingURL=puesto.service.d.ts.map