import { UserPrincipal } from '../common/auth/principal';
import { AnswerInterviewDto, ChecklistDto, ConfigureInterviewDto, MockStartDto, NotesDto, SetupInterviewDto } from './dto/interview.dto';
import { FeatureFlagsService } from '../platform-config/feature-flags.service';
import { InterviewCoachService } from './interview.service';
export declare class InterviewController {
    private readonly coach;
    private readonly features;
    constructor(coach: InterviewCoachService, features: FeatureFlagsService);
    setup(principal: UserPrincipal, dto: SetupInterviewDto): Promise<{
        data: {
            id: string;
            roleTitle: string;
            companyName: string | null;
            jobId: string | null;
            publicCode: string | null;
            job: string | number | boolean | import("@prisma/client/runtime/library").JsonObject | import("@prisma/client/runtime/library").JsonArray | {
                publicCode: string | null;
                description: string | null;
                id: string;
                title: string;
                companyName: string | null;
                city: string | null;
                region: string | null;
                postcode: string | null;
                workMode: import(".prisma/client").$Enums.WorkMode | null;
                employmentType: import(".prisma/client").$Enums.EmploymentType | null;
                experienceLevel: import(".prisma/client").$Enums.ExperienceLevel | null;
                salaryMin: number | null;
                salaryMax: number | null;
                currency: string | null;
                salaryPeriod: import(".prisma/client").$Enums.SalaryPeriod | null;
                category: string | null;
                locationText: string | null;
                sponsorsVisa: boolean;
                perkLabel: string | null;
                isDemo: boolean;
                publishedAt: Date | null;
                applicationUrl: string | null;
                source: string;
                sourceDisplay: string;
                applyMethod: import("../jobs/apply-route").ApplyMethod;
            } | null;
            analysis: {
                summary: {} | null;
                skills: string[];
                responsibilities: string[];
                likelyCategories: string[];
                readinessHints: string[];
                companyPrep: {} | null;
            };
            interviewType: string | null;
            interviewStage: string | null;
            interviewFormat: string | null;
            platform: string | null;
            scheduledAt: Date | null;
            difficulty: string | null;
            confidence: string | null;
            goals: import("@prisma/client/runtime/library").JsonValue;
            persona: string;
            mode: string;
            resumeId: string | null;
            readinessScore: number | null;
            overallScore: number | null;
            status: string;
            progress: import("@prisma/client/runtime/library").JsonValue;
            checklist: string | number | boolean | import("@prisma/client/runtime/library").JsonObject | import("@prisma/client/runtime/library").JsonArray | {
                id: string;
                label: string;
                done: boolean;
            }[];
            notes: string | null;
            audioConsentAt: Date | null;
            plan: string | number | boolean | import("@prisma/client/runtime/library").JsonObject | import("@prisma/client/runtime/library").JsonArray | null;
            topics: {
                id: string;
                topic: string;
                category: string;
                importance: number;
                score: number | null;
            }[];
            questions: {
                id: string;
                prompt: string;
                category: string;
                difficulty: string;
                topic: string | null;
                status: string;
                isFollowUp: boolean;
                parentQuestionId: string | null;
                estimatedSeconds: number | null;
                sortOrder: number;
                attempts: number;
                latestScore: number | null;
            }[];
            progressCounts: {
                answered: number;
                total: number;
            };
            report: {
                overallScore: number;
            } | null;
            createdAt: Date;
            updatedAt: Date;
        };
        message: string;
    }>;
    searchJobs(principal: UserPrincipal, q?: string): Promise<{
        data: {
            items: {
                publicCode: string | null;
                skills: string[];
                bookmarked: boolean;
                applied: boolean;
                applicationStatus: import(".prisma/client").$Enums.ApplicationStatus;
                id: string;
                title: string;
                companyName: string | null;
                city: string | null;
                region: string | null;
                postcode: string | null;
                workMode: import(".prisma/client").$Enums.WorkMode | null;
                employmentType: import(".prisma/client").$Enums.EmploymentType | null;
                experienceLevel: import(".prisma/client").$Enums.ExperienceLevel | null;
                salaryMin: number | null;
                salaryMax: number | null;
                currency: string | null;
                salaryPeriod: import(".prisma/client").$Enums.SalaryPeriod | null;
                category: string | null;
                locationText: string | null;
                sponsorsVisa: boolean;
                perkLabel: string | null;
                isDemo: boolean;
                publishedAt: Date | null;
                applicationUrl: string | null;
                source: string;
                sourceDisplay: string;
                applyMethod: import("../jobs/apply-route").ApplyMethod;
            }[];
        };
        message: string;
    }>;
    byCode(code: string): Promise<{
        data: {
            publicCode: string | null;
            description: string | null;
            skills: string[];
            id: string;
            title: string;
            companyName: string | null;
            city: string | null;
            region: string | null;
            postcode: string | null;
            workMode: import(".prisma/client").$Enums.WorkMode | null;
            employmentType: import(".prisma/client").$Enums.EmploymentType | null;
            experienceLevel: import(".prisma/client").$Enums.ExperienceLevel | null;
            salaryMin: number | null;
            salaryMax: number | null;
            currency: string | null;
            salaryPeriod: import(".prisma/client").$Enums.SalaryPeriod | null;
            category: string | null;
            locationText: string | null;
            sponsorsVisa: boolean;
            perkLabel: string | null;
            isDemo: boolean;
            publishedAt: Date | null;
            applicationUrl: string | null;
            source: string;
            sourceDisplay: string;
            applyMethod: import("../jobs/apply-route").ApplyMethod;
        };
        message: string;
    }>;
    applications(principal: UserPrincipal): Promise<{
        data: {
            applications: {
                id: string;
                status: import(".prisma/client").$Enums.ApplicationStatus;
                updatedAt: Date;
                job: {
                    publicCode: string | null;
                    id: string;
                    title: string;
                    companyName: string | null;
                    city: string | null;
                    region: string | null;
                    postcode: string | null;
                    workMode: import(".prisma/client").$Enums.WorkMode | null;
                    employmentType: import(".prisma/client").$Enums.EmploymentType | null;
                    experienceLevel: import(".prisma/client").$Enums.ExperienceLevel | null;
                    salaryMin: number | null;
                    salaryMax: number | null;
                    currency: string | null;
                    salaryPeriod: import(".prisma/client").$Enums.SalaryPeriod | null;
                    category: string | null;
                    locationText: string | null;
                    sponsorsVisa: boolean;
                    perkLabel: string | null;
                    isDemo: boolean;
                    publishedAt: Date | null;
                    applicationUrl: string | null;
                    source: string;
                    sourceDisplay: string;
                    applyMethod: import("../jobs/apply-route").ApplyMethod;
                };
            }[];
            saved: {
                publicCode: string | null;
                id: string;
                title: string;
                companyName: string | null;
                city: string | null;
                region: string | null;
                postcode: string | null;
                workMode: import(".prisma/client").$Enums.WorkMode | null;
                employmentType: import(".prisma/client").$Enums.EmploymentType | null;
                experienceLevel: import(".prisma/client").$Enums.ExperienceLevel | null;
                salaryMin: number | null;
                salaryMax: number | null;
                currency: string | null;
                salaryPeriod: import(".prisma/client").$Enums.SalaryPeriod | null;
                category: string | null;
                locationText: string | null;
                sponsorsVisa: boolean;
                perkLabel: string | null;
                isDemo: boolean;
                publishedAt: Date | null;
                applicationUrl: string | null;
                source: string;
                sourceDisplay: string;
                applyMethod: import("../jobs/apply-route").ApplyMethod;
            }[];
        };
        message: string;
    }>;
    list(principal: UserPrincipal): Promise<{
        data: {
            items: {
                id: string;
                roleTitle: string;
                companyName: string | null;
                status: string;
                readinessScore: number | null;
                overallScore: number | null;
                scheduledAt: Date | null;
                updatedAt: Date;
                questionCount: number;
            }[];
        };
        message: string;
    }>;
    get(principal: UserPrincipal, id: string): Promise<{
        data: {
            id: string;
            roleTitle: string;
            companyName: string | null;
            jobId: string | null;
            publicCode: string | null;
            job: string | number | boolean | import("@prisma/client/runtime/library").JsonObject | import("@prisma/client/runtime/library").JsonArray | {
                publicCode: string | null;
                description: string | null;
                id: string;
                title: string;
                companyName: string | null;
                city: string | null;
                region: string | null;
                postcode: string | null;
                workMode: import(".prisma/client").$Enums.WorkMode | null;
                employmentType: import(".prisma/client").$Enums.EmploymentType | null;
                experienceLevel: import(".prisma/client").$Enums.ExperienceLevel | null;
                salaryMin: number | null;
                salaryMax: number | null;
                currency: string | null;
                salaryPeriod: import(".prisma/client").$Enums.SalaryPeriod | null;
                category: string | null;
                locationText: string | null;
                sponsorsVisa: boolean;
                perkLabel: string | null;
                isDemo: boolean;
                publishedAt: Date | null;
                applicationUrl: string | null;
                source: string;
                sourceDisplay: string;
                applyMethod: import("../jobs/apply-route").ApplyMethod;
            } | null;
            analysis: {
                summary: {} | null;
                skills: string[];
                responsibilities: string[];
                likelyCategories: string[];
                readinessHints: string[];
                companyPrep: {} | null;
            };
            interviewType: string | null;
            interviewStage: string | null;
            interviewFormat: string | null;
            platform: string | null;
            scheduledAt: Date | null;
            difficulty: string | null;
            confidence: string | null;
            goals: import("@prisma/client/runtime/library").JsonValue;
            persona: string;
            mode: string;
            resumeId: string | null;
            readinessScore: number | null;
            overallScore: number | null;
            status: string;
            progress: import("@prisma/client/runtime/library").JsonValue;
            checklist: string | number | boolean | import("@prisma/client/runtime/library").JsonObject | import("@prisma/client/runtime/library").JsonArray | {
                id: string;
                label: string;
                done: boolean;
            }[];
            notes: string | null;
            audioConsentAt: Date | null;
            plan: string | number | boolean | import("@prisma/client/runtime/library").JsonObject | import("@prisma/client/runtime/library").JsonArray | null;
            topics: {
                id: string;
                topic: string;
                category: string;
                importance: number;
                score: number | null;
            }[];
            questions: {
                id: string;
                prompt: string;
                category: string;
                difficulty: string;
                topic: string | null;
                status: string;
                isFollowUp: boolean;
                parentQuestionId: string | null;
                estimatedSeconds: number | null;
                sortOrder: number;
                attempts: number;
                latestScore: number | null;
            }[];
            progressCounts: {
                answered: number;
                total: number;
            };
            report: {
                overallScore: number;
            } | null;
            createdAt: Date;
            updatedAt: Date;
        };
        message: string;
    }>;
    configure(principal: UserPrincipal, id: string, dto: ConfigureInterviewDto): Promise<{
        data: {
            id: string;
            roleTitle: string;
            companyName: string | null;
            jobId: string | null;
            publicCode: string | null;
            job: string | number | boolean | import("@prisma/client/runtime/library").JsonObject | import("@prisma/client/runtime/library").JsonArray | {
                publicCode: string | null;
                description: string | null;
                id: string;
                title: string;
                companyName: string | null;
                city: string | null;
                region: string | null;
                postcode: string | null;
                workMode: import(".prisma/client").$Enums.WorkMode | null;
                employmentType: import(".prisma/client").$Enums.EmploymentType | null;
                experienceLevel: import(".prisma/client").$Enums.ExperienceLevel | null;
                salaryMin: number | null;
                salaryMax: number | null;
                currency: string | null;
                salaryPeriod: import(".prisma/client").$Enums.SalaryPeriod | null;
                category: string | null;
                locationText: string | null;
                sponsorsVisa: boolean;
                perkLabel: string | null;
                isDemo: boolean;
                publishedAt: Date | null;
                applicationUrl: string | null;
                source: string;
                sourceDisplay: string;
                applyMethod: import("../jobs/apply-route").ApplyMethod;
            } | null;
            analysis: {
                summary: {} | null;
                skills: string[];
                responsibilities: string[];
                likelyCategories: string[];
                readinessHints: string[];
                companyPrep: {} | null;
            };
            interviewType: string | null;
            interviewStage: string | null;
            interviewFormat: string | null;
            platform: string | null;
            scheduledAt: Date | null;
            difficulty: string | null;
            confidence: string | null;
            goals: import("@prisma/client/runtime/library").JsonValue;
            persona: string;
            mode: string;
            resumeId: string | null;
            readinessScore: number | null;
            overallScore: number | null;
            status: string;
            progress: import("@prisma/client/runtime/library").JsonValue;
            checklist: string | number | boolean | import("@prisma/client/runtime/library").JsonObject | import("@prisma/client/runtime/library").JsonArray | {
                id: string;
                label: string;
                done: boolean;
            }[];
            notes: string | null;
            audioConsentAt: Date | null;
            plan: string | number | boolean | import("@prisma/client/runtime/library").JsonObject | import("@prisma/client/runtime/library").JsonArray | null;
            topics: {
                id: string;
                topic: string;
                category: string;
                importance: number;
                score: number | null;
            }[];
            questions: {
                id: string;
                prompt: string;
                category: string;
                difficulty: string;
                topic: string | null;
                status: string;
                isFollowUp: boolean;
                parentQuestionId: string | null;
                estimatedSeconds: number | null;
                sortOrder: number;
                attempts: number;
                latestScore: number | null;
            }[];
            progressCounts: {
                answered: number;
                total: number;
            };
            report: {
                overallScore: number;
            } | null;
            createdAt: Date;
            updatedAt: Date;
        };
        message: string;
    }>;
    generate(principal: UserPrincipal, id: string): Promise<{
        data: {
            id: string;
            roleTitle: string;
            companyName: string | null;
            jobId: string | null;
            publicCode: string | null;
            job: string | number | boolean | import("@prisma/client/runtime/library").JsonObject | import("@prisma/client/runtime/library").JsonArray | {
                publicCode: string | null;
                description: string | null;
                id: string;
                title: string;
                companyName: string | null;
                city: string | null;
                region: string | null;
                postcode: string | null;
                workMode: import(".prisma/client").$Enums.WorkMode | null;
                employmentType: import(".prisma/client").$Enums.EmploymentType | null;
                experienceLevel: import(".prisma/client").$Enums.ExperienceLevel | null;
                salaryMin: number | null;
                salaryMax: number | null;
                currency: string | null;
                salaryPeriod: import(".prisma/client").$Enums.SalaryPeriod | null;
                category: string | null;
                locationText: string | null;
                sponsorsVisa: boolean;
                perkLabel: string | null;
                isDemo: boolean;
                publishedAt: Date | null;
                applicationUrl: string | null;
                source: string;
                sourceDisplay: string;
                applyMethod: import("../jobs/apply-route").ApplyMethod;
            } | null;
            analysis: {
                summary: {} | null;
                skills: string[];
                responsibilities: string[];
                likelyCategories: string[];
                readinessHints: string[];
                companyPrep: {} | null;
            };
            interviewType: string | null;
            interviewStage: string | null;
            interviewFormat: string | null;
            platform: string | null;
            scheduledAt: Date | null;
            difficulty: string | null;
            confidence: string | null;
            goals: import("@prisma/client/runtime/library").JsonValue;
            persona: string;
            mode: string;
            resumeId: string | null;
            readinessScore: number | null;
            overallScore: number | null;
            status: string;
            progress: import("@prisma/client/runtime/library").JsonValue;
            checklist: string | number | boolean | import("@prisma/client/runtime/library").JsonObject | import("@prisma/client/runtime/library").JsonArray | {
                id: string;
                label: string;
                done: boolean;
            }[];
            notes: string | null;
            audioConsentAt: Date | null;
            plan: string | number | boolean | import("@prisma/client/runtime/library").JsonObject | import("@prisma/client/runtime/library").JsonArray | null;
            topics: {
                id: string;
                topic: string;
                category: string;
                importance: number;
                score: number | null;
            }[];
            questions: {
                id: string;
                prompt: string;
                category: string;
                difficulty: string;
                topic: string | null;
                status: string;
                isFollowUp: boolean;
                parentQuestionId: string | null;
                estimatedSeconds: number | null;
                sortOrder: number;
                attempts: number;
                latestScore: number | null;
            }[];
            progressCounts: {
                answered: number;
                total: number;
            };
            report: {
                overallScore: number;
            } | null;
            createdAt: Date;
            updatedAt: Date;
        };
        message: string;
    }>;
    questions(principal: UserPrincipal, id: string): Promise<{
        data: {
            items: {
                id: string;
                prompt: string;
                category: string;
                difficulty: string;
                topic: string | null;
                status: string;
                isFollowUp: boolean;
                parentQuestionId: string | null;
                estimatedSeconds: number | null;
                sortOrder: number;
                attempts: number;
                latestScore: number | null;
            }[];
            progressCounts: {
                answered: number;
                total: number;
            };
        };
        message: string;
    }>;
    answer(principal: UserPrincipal, id: string, dto: AnswerInterviewDto): Promise<{
        data: {
            answerId: string;
            attemptNumber: number;
            body: string;
        };
        message: string;
    }>;
    analyse(principal: UserPrincipal, id: string): Promise<{
        data: {
            id: string;
            overallScore: number;
            relevanceScore: number | null;
            technicalScore: number | null;
            clarityScore: number | null;
            structureScore: number | null;
            confidenceScore: number | null;
            star: {
                situation: number | null;
                task: number | null;
                action: number | null;
                result: number | null;
            };
            strengths: string[];
            weaknesses: string[];
            suggestions: string[];
            modelAnswer: string | null;
        };
        message: string;
    }>;
    retry(principal: UserPrincipal, id: string, dto: AnswerInterviewDto): Promise<{
        data: {
            evaluation: {
                id: string;
                overallScore: number;
                relevanceScore: number | null;
                technicalScore: number | null;
                clarityScore: number | null;
                structureScore: number | null;
                confidenceScore: number | null;
                star: {
                    situation: number | null;
                    task: number | null;
                    action: number | null;
                    result: number | null;
                };
                strengths: string[];
                weaknesses: string[];
                suggestions: string[];
                modelAnswer: string | null;
            };
            previousAnswerId: string;
            answerId: string;
            attemptNumber: number;
            body: string;
        };
        message: string;
    }>;
    mockStart(principal: UserPrincipal, id: string, dto: MockStartDto): Promise<{
        data: {
            sessionId: string;
            persona: string;
            questions: {
                id: string;
                prompt: string;
                category: string;
                difficulty: string;
            }[];
        };
        message: string;
    }>;
    mockAnswer(principal: UserPrincipal, id: string, dto: AnswerInterviewDto & {
        questionId: string;
    }): Promise<{
        data: {
            followUp: {
                id: string;
                prompt: string;
            } | null;
            answerId: string;
            attemptNumber: number;
            body: string;
        };
        message: string;
    }>;
    mockComplete(principal: UserPrincipal, id: string): Promise<{
        data: {
            id: string;
            roleTitle: string;
            companyName: string | null;
            jobId: string | null;
            publicCode: string | null;
            job: string | number | boolean | import("@prisma/client/runtime/library").JsonObject | import("@prisma/client/runtime/library").JsonArray | {
                publicCode: string | null;
                description: string | null;
                id: string;
                title: string;
                companyName: string | null;
                city: string | null;
                region: string | null;
                postcode: string | null;
                workMode: import(".prisma/client").$Enums.WorkMode | null;
                employmentType: import(".prisma/client").$Enums.EmploymentType | null;
                experienceLevel: import(".prisma/client").$Enums.ExperienceLevel | null;
                salaryMin: number | null;
                salaryMax: number | null;
                currency: string | null;
                salaryPeriod: import(".prisma/client").$Enums.SalaryPeriod | null;
                category: string | null;
                locationText: string | null;
                sponsorsVisa: boolean;
                perkLabel: string | null;
                isDemo: boolean;
                publishedAt: Date | null;
                applicationUrl: string | null;
                source: string;
                sourceDisplay: string;
                applyMethod: import("../jobs/apply-route").ApplyMethod;
            } | null;
            analysis: {
                summary: {} | null;
                skills: string[];
                responsibilities: string[];
                likelyCategories: string[];
                readinessHints: string[];
                companyPrep: {} | null;
            };
            interviewType: string | null;
            interviewStage: string | null;
            interviewFormat: string | null;
            platform: string | null;
            scheduledAt: Date | null;
            difficulty: string | null;
            confidence: string | null;
            goals: import("@prisma/client/runtime/library").JsonValue;
            persona: string;
            mode: string;
            resumeId: string | null;
            readinessScore: number | null;
            overallScore: number | null;
            status: string;
            progress: import("@prisma/client/runtime/library").JsonValue;
            checklist: string | number | boolean | import("@prisma/client/runtime/library").JsonObject | import("@prisma/client/runtime/library").JsonArray | {
                id: string;
                label: string;
                done: boolean;
            }[];
            notes: string | null;
            audioConsentAt: Date | null;
            plan: string | number | boolean | import("@prisma/client/runtime/library").JsonObject | import("@prisma/client/runtime/library").JsonArray | null;
            topics: {
                id: string;
                topic: string;
                category: string;
                importance: number;
                score: number | null;
            }[];
            questions: {
                id: string;
                prompt: string;
                category: string;
                difficulty: string;
                topic: string | null;
                status: string;
                isFollowUp: boolean;
                parentQuestionId: string | null;
                estimatedSeconds: number | null;
                sortOrder: number;
                attempts: number;
                latestScore: number | null;
            }[];
            progressCounts: {
                answered: number;
                total: number;
            };
            report: {
                overallScore: number;
            } | null;
            createdAt: Date;
            updatedAt: Date;
        };
        message: string;
    }>;
    report(principal: UserPrincipal, id: string): Promise<{
        data: {
            overallScore: number;
        } | null;
        message: string;
    }>;
    notes(principal: UserPrincipal, id: string, dto: NotesDto): Promise<{
        data: {
            notes: string;
        };
        message: string;
    }>;
    checklist(principal: UserPrincipal, id: string, dto: ChecklistDto): Promise<{
        data: {
            checklist: {
                id: string;
                label: string;
                done: boolean;
            }[];
        };
        message: string;
    }>;
    audioConsent(principal: UserPrincipal, id: string): Promise<{
        data: {
            audioConsentAt: Date;
        };
        message: string;
    }>;
    audio(principal: UserPrincipal, id: string, questionId: string, file?: {
        buffer: Buffer;
        originalname: string;
        mimetype: string;
    }): Promise<{
        data: {
            audioFileId: string;
            objectKey: string;
            transcript: string;
            answerId: string;
            attemptNumber: number;
            body: string;
        };
        message: string;
    }>;
    remove(principal: UserPrincipal, id: string): Promise<{
        data: {
            deleted: boolean;
        };
        message: string;
    }>;
}
