import { HttpStatus } from '@nestjs/common';
import { PermissionUserContext } from '../../common/access-control/permission-context.types';
import { PermissionResolverService } from '../../common/access-control/permission-resolver.service';
import { DatabaseService, HashService, MailService } from '../../config';
import { NotificationsService } from '../notifications/notifications.service';
import { OnboardingService } from '../onboarding/onboarding.service';
import { assignRecruitmentTasksDto, bulkUpdateApplicationStatusDto, cancelInterviewDto, createJobApplicationDto, createJobPostingDto, createRecruitmentTaskDto, createTenantApiKeyDto, jobApplicationFilterDto, jobPostingFilterDto, publicApplyDto, recruitmentTaskFilterDto, scheduleInterviewDto, submitRecruitmentTaskDto, updateApplicationStatusDto, updateJobApplicationDto, updateJobPostingDto, updateRecruitmentTaskDto } from './recruitment.dto';
export declare class RecruitmentService {
    private readonly db;
    private readonly permissionResolver;
    private readonly notificationsService;
    private readonly hashService;
    private readonly mailService;
    private readonly onboardingService;
    constructor(db: DatabaseService, permissionResolver: PermissionResolverService, notificationsService: NotificationsService, hashService: HashService, mailService: MailService, onboardingService: OnboardingService);
    private buildPagination;
    private getPermissions;
    private normalizeRoleOverview;
    private ensureUniqueJobSlug;
    private resolveOwnerByOrgSlug;
    createJobPosting(data: createJobPostingDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    getJobPostings(query: jobPostingFilterDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: {
            pagination: {
                total_items: number;
                total_pages: number;
                current_page: number;
                items_per_page: number;
                has_next_page: boolean;
                has_previous_page: boolean;
                next_page: number;
                previous_page: number;
            };
        };
    }>;
    getJobPostingById(id: string, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    updateJobPosting(id: string, data: updateJobPostingDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    deleteJobPosting(id: string, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    createApplication(data: createJobApplicationDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: {
            onboarding_record_id: string;
        };
    }>;
    getApplications(query: jobApplicationFilterDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: {
            pagination: {
                total_items: number;
                total_pages: number;
                current_page: number;
                items_per_page: number;
                has_next_page: boolean;
                has_previous_page: boolean;
                next_page: number;
                previous_page: number;
            };
        };
    }>;
    getApplicationById(id: string, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    private handleCandidateHiring;
    updateApplication(id: string, data: updateJobApplicationDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: {
            onboarding_record_id: string;
        };
    }>;
    updateApplicationStatus(id: string, data: updateApplicationStatusDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        status: HttpStatus;
        message: string;
        details: {
            onboarding_record_id: string;
        };
    }>;
    deleteApplication(id: string, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
    }>;
    bulkUpdateApplicationStatus(data: bulkUpdateApplicationStatusDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: {
            updated_count: number;
        };
        message: string;
        status: HttpStatus;
        details: {
            onboarding_record_id: string;
        };
    }>;
    createTask(data: createRecruitmentTaskDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    updateTask(id: string, data: updateRecruitmentTaskDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    deleteTask(id: string, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    assignBulkTasks(data: assignRecruitmentTasksDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any[];
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    getTasks(query: recruitmentTaskFilterDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: {
            pagination: {
                total_items: number;
                total_pages: number;
                current_page: number;
                items_per_page: number;
                has_next_page: boolean;
                has_previous_page: boolean;
                next_page: number;
                previous_page: number;
            };
        };
    }>;
    sendTaskEmail(id: string, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: {
            task_url: string;
        };
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    getStats(owner_id: string, ctx: PermissionUserContext): Promise<{
        data: {
            open_positions: any;
            active_candidates: any;
            interviews_scheduled: any;
            avg_time_to_hire_days: number;
        };
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    createApiKey(data: createTenantApiKeyDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    listApiKeys(owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    revokeApiKey(id: string, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    validateApiKey(ownerId: string, apiKey: string): Promise<any>;
    getPublicJobs(orgSlug: string): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    getPublicJob(orgSlug: string, jobSlug: string): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    publicApply(orgSlug: string, jobSlug: string, data: publicApplyDto): Promise<{
        data: {
            id: any;
        };
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    publicApiListJobs(ownerId: string): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    publicApiCreateApplication(ownerId: string, payload: publicApplyDto & {
        job_posting_id: string;
    }): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    getTaskByToken(token: string): Promise<{
        data: {
            id: any;
            title: any;
            description: any;
            due_date: any;
            status: any;
            candidate_name: any;
            job_title: any;
        };
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    submitTaskByToken(token: string, data: submitRecruitmentTaskDto): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    private parseDurationMinutes;
    private createGoogleMeetEvent;
    private createZoomMeetingEvent;
    scheduleInterview(data: scheduleInterviewDto, owner_id: string, permCtx: PermissionUserContext): Promise<{
        data: {
            scheduled_count: number;
            emails_sent: string[];
        };
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    cancelInterview(data: cancelInterviewDto, owner_id: string, permCtx: PermissionUserContext): Promise<{
        data: {
            cancelled_count: number;
            emails_sent: string[];
        };
        message: string;
        status: HttpStatus;
        details: any;
    }>;
}
