import { Repository, DataSource } from 'typeorm';
import { Job } from './entities/job.entity';
import { Company } from '../companies/entities/company.entity';
import { CompanyAuditStage } from '../company-audit-stages/entities/company-audit-stage.entity';
import { Template } from '../template/entities/template.entity';
import { Standard } from '../standards/entities/standard.entity';
import { User } from '../user/entities/user.entity';
import { CreateJobDto } from './dto/create-job.dto';
import { UserDto } from '../user/dto/user.dto';
export declare class JobsService {
    private readonly jobRepo;
    private readonly companyRepo;
    private readonly stageRepo;
    private readonly templateRepo;
    private readonly standardRepo;
    private readonly userRepo;
    private readonly jobRepository;
    private readonly dataSource;
    constructor(jobRepo: Repository<Job>, companyRepo: Repository<Company>, stageRepo: Repository<CompanyAuditStage>, templateRepo: Repository<Template>, standardRepo: Repository<Standard>, userRepo: Repository<User>, jobRepository: Repository<Job>, dataSource: DataSource);
    getNextJobNumber(): Promise<string>;
    private readonly INITIAL_NUMBERS;
    private readonly PREFIX_MAP;
    private generateJobCodeForStandard;
    create(dto: CreateJobDto): Promise<{
        id: number;
        jobCodes: string[];
        stage: import("./entities/job.entity").StageEnum;
        stages: {
            stageName: import("./entities/job.entity").StageEnum;
            md: string;
            docReview: Date | undefined;
            date: Date;
            auditBy: User;
        }[];
        template: {
            id: number;
            name: string;
            stageName: import("../template/entities/template.entity").AuditStageName;
            version: string;
            filePath: string;
            isActive: boolean;
            contents: import("../template_contents/entities/template_content.entity").TemplateContent[];
        };
        companySnapshot: {
            companyName: string;
            companyAddress: string;
            companyScope: string;
            companycity: string;
            companycontact_person: string;
            companydesignation: string;
            companyemail: string;
            companymobile: string;
            companytelephone: string | null;
            companyFax: string | null;
            companyvalidity: string;
            companyaccreditation: string;
            companycertification_body: string;
            companyRefrence: string | null;
        };
        standards: {
            id: number;
            name: string;
            title: string;
        }[];
        company: {
            id: number;
            name: string;
            address: string;
            scope_of_work: string;
            city: string;
            contact_person: string;
            designation: string;
            email: string;
            mobile: string;
            telephone: string | null;
            fax: string | null;
            validity: string;
            accreditation: string;
            certification_body: string;
            reference_number: string | null;
        };
        date: Date;
        docReview: Date | undefined;
        numEmployees: number;
        naceEacCodes: string;
        md: string;
        mdRisk: import("./entities/job.entity").RiskLevel;
        createdAt: Date;
        updatedAt: Date;
        expectedSurveillanceDate: Date;
        expectedIADate: Date;
        expectedMRMDate: Date;
        expectedInitialInquiryDate: Date;
        expectedInitial_Stage1_Date: Date;
        prepareDate: Date;
        approvedDate: Date;
    }>;
    findAll({ page, limit }?: {
        page?: number;
        limit?: number;
    }): Promise<{
        data: {
            company: {
                id: number;
                name: string;
            };
            id: number;
            jobCodes: string[];
            stage: import("./entities/job.entity").StageEnum;
            stages: {
                stageName: import("./entities/job.entity").StageEnum;
                md: string;
                docReview: Date | undefined;
                date: Date;
                auditBy: User;
            }[];
            template: {
                url: string;
                id: number;
                name: string;
                stageName: string;
                version: string;
                filePath: string;
                isActive: boolean;
                contents: any[];
            };
            companySnapshot: any;
            standards: {
                id: number;
                name: string;
                title: string;
            }[];
            leadAuditor: UserDto;
            date: Date;
            docReview: Date | undefined;
            numEmployees: number;
            naceEacCodes: string;
            md: string;
            mdRisk: import("./entities/job.entity").RiskLevel;
            scheduleSlot: "MORNING" | "AFTERNOON" | "FULL";
            expectedSurveillanceDate: Date;
            expectedIADate: Date;
            expectedMRMDate: Date;
            expectedInitialInquiryDate: Date;
            expectedInitial_Stage1_Date: Date;
            prepareDate: Date;
            approvedDate: Date;
            createdAt: Date;
            updatedAt: Date;
        }[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
            hasNextPage: boolean;
            hasPrevPage: boolean;
        };
    }>;
    findAllWithFilters(filters: {
        companyName?: string;
        templateName?: string;
        stage?: string;
        startDate?: string;
        endDate?: string;
    }): Promise<{
        id: number;
        jobCodes: string[];
        company: {
            id: number;
            name: string;
        };
        stage: import("./entities/job.entity").StageEnum;
        template: {
            id: number;
            name: string;
            stageName: string;
            version: string;
            filePath: string;
            isActive: boolean;
            contents: any[];
        };
        standards: {
            id: number;
            name: string;
            title: string;
        }[];
        leadAuditor: {
            id: number;
            firstName: string;
            lastName: string;
        } | null;
        date: Date;
        docReview: Date | undefined;
        numEmployees: number;
        naceEacCodes: string;
        md: string;
        mdRisk: import("./entities/job.entity").RiskLevel;
        scheduleSlot: "MORNING" | "AFTERNOON" | "FULL";
        createdAt: Date;
        updatedAt: Date;
    }[]>;
    findOne(id: number): Promise<{
        company: {
            id: number;
            name: string;
        };
        id: number;
        jobCodes: string[];
        stage: import("./entities/job.entity").StageEnum;
        stages: {
            stageName: import("./entities/job.entity").StageEnum;
            md: string;
            docReview: Date | undefined;
            date: Date;
            auditBy: User;
        }[];
        template: {
            url: string;
            id: number;
            name: string;
            stageName: string;
            version: string;
            filePath: string;
            isActive: boolean;
            contents: any[];
        };
        companySnapshot: any;
        standards: {
            id: number;
            name: string;
            title: string;
        }[];
        leadAuditor: UserDto;
        date: Date;
        docReview: Date | undefined;
        numEmployees: number;
        naceEacCodes: string;
        md: string;
        mdRisk: import("./entities/job.entity").RiskLevel;
        scheduleSlot: "MORNING" | "AFTERNOON" | "FULL";
        expectedSurveillanceDate: Date;
        expectedIADate: Date;
        expectedMRMDate: Date;
        expectedInitialInquiryDate: Date;
        createdAt: Date;
        updatedAt: Date;
    }>;
    remove(id: number): Promise<{
        message: string;
    }>;
    findByCompanyId(companyId: number): Promise<Job[]>;
    findByJobCode(jobCode: string): Promise<Job>;
}
