import { AiService } from '../common/ai/ai.service';
import { UserPrincipal } from '../common/auth/principal';
import { AssistantService } from './assistant.service';
import { CoverLetterService } from './cover-letter.service';
import { AnalyseSkillGapDto, AssistantDto, CoverLetterDto, EnhanceResumeDto, GenerateCoverLetterDto, InterviewAnswerDto, InterviewStartDto, OptimiseDto, SaveResumeDto, TailorResumeDto } from './dto/career.dto';
import { InterviewService } from './interview.service';
import { OptimiserService } from './optimiser.service';
import { ResumeService } from './resume.service';
import { SkillGapService } from './skill-gap.service';
export declare class CareerController {
    private readonly ai;
    private readonly resumes;
    private readonly optimiser;
    private readonly letters;
    private readonly interviews;
    private readonly assistant;
    private readonly skillGaps;
    constructor(ai: AiService, resumes: ResumeService, optimiser: OptimiserService, letters: CoverLetterService, interviews: InterviewService, assistant: AssistantService, skillGaps: SkillGapService);
    status(principal: UserPrincipal): Promise<{
        data: {
            quota: {
                used: number;
                limit: number;
                plan: string;
            };
            configured: boolean;
            provider: string | null;
        };
        message: string;
    }>;
    documentText(file?: {
        buffer: Buffer;
        originalname: string;
    }): Promise<{
        data: {
            text: string;
        };
        message: string;
    }>;
    resumesList(principal: UserPrincipal): Promise<{
        data: {
            items: {
                id: string;
                title: string;
                updatedAt: Date;
                latestVersion: number;
                sourceFile: {
                    id: string;
                    originalName: string | null;
                    mimeType: string;
                    sizeBytes: number;
                } | null;
            }[];
        };
        message: string;
    }>;
    saveResume(principal: UserPrincipal, dto: SaveResumeDto): Promise<{
        data: {
            id: string;
            title: string;
            sourceFile: {
                id: string;
                originalName: string | null;
                mimeType: string;
                sizeBytes: number;
            } | null;
            version: {
                id: string;
                version: number;
                label: string;
                sections: {
                    id: string;
                    kind: string;
                    heading: string;
                    body: string;
                }[];
            } | null;
        };
        message: string;
    }>;
    uploadResume(principal: UserPrincipal, file?: {
        buffer: Buffer;
        originalname: string;
        mimetype: string;
        size: number;
    }): Promise<{
        data: {
            id: string;
            title: string;
            sourceFile: {
                id: string;
                originalName: string | null;
                mimeType: string;
                sizeBytes: number;
            } | null;
            version: {
                id: string;
                version: number;
                label: string;
                sections: {
                    id: string;
                    kind: string;
                    heading: string;
                    body: string;
                }[];
            } | null;
        };
        message: string;
    }>;
    fromProfile(principal: UserPrincipal): Promise<{
        data: {
            id: string;
            title: string;
            sourceFile: {
                id: string;
                originalName: string | null;
                mimeType: string;
                sizeBytes: number;
            } | null;
            version: {
                id: string;
                version: number;
                label: string;
                sections: {
                    id: string;
                    kind: string;
                    heading: string;
                    body: string;
                }[];
            } | null;
        };
        message: string;
    }>;
    tailor(principal: UserPrincipal, dto: TailorResumeDto): Promise<{
        data: {
            id: string;
            title: string;
            sourceFile: {
                id: string;
                originalName: string | null;
                mimeType: string;
                sizeBytes: number;
            } | null;
            version: {
                id: string;
                version: number;
                label: string;
                sections: {
                    id: string;
                    kind: string;
                    heading: string;
                    body: string;
                }[];
            } | null;
        };
        message: string;
    }>;
    resume(principal: UserPrincipal, id: string): Promise<{
        data: {
            id: string;
            title: string;
            sourceFile: {
                id: string;
                originalName: string | null;
                mimeType: string;
                sizeBytes: number;
            } | null;
            version: {
                id: string;
                version: number;
                label: string;
                sections: {
                    id: string;
                    kind: string;
                    heading: string;
                    body: string;
                }[];
            } | null;
        };
        message: string;
    }>;
    optimise(principal: UserPrincipal, id: string, dto: OptimiseDto): Promise<{
        data: {
            id: string;
            title: string;
            sourceFile: {
                id: string;
                originalName: string | null;
                mimeType: string;
                sizeBytes: number;
            } | null;
            version: {
                id: string;
                version: number;
                label: string;
                sections: {
                    id: string;
                    kind: string;
                    heading: string;
                    body: string;
                }[];
            } | null;
        };
        message: string;
    }>;
    enhance(principal: UserPrincipal, id: string, dto: EnhanceResumeDto): Promise<{
        data: {
            id: string;
            title: string;
            sourceFile: {
                id: string;
                originalName: string | null;
                mimeType: string;
                sizeBytes: number;
            } | null;
            version: {
                id: string;
                version: number;
                label: string;
                sections: {
                    id: string;
                    kind: string;
                    heading: string;
                    body: string;
                }[];
            } | null;
        };
        message: string;
    }>;
    lettersList(principal: UserPrincipal): Promise<{
        data: {
            items: {
                id: string;
                title: string;
                jobId: string | null;
                companyName: string | null;
                updatedAt: Date;
                preview: string;
                sourceFile: {
                    id: string;
                    originalName: string | null;
                    mimeType: string;
                    sizeBytes: number;
                } | null;
            }[];
        };
        message: string;
    }>;
    saveLetter(principal: UserPrincipal, dto: CoverLetterDto): Promise<{
        data: {
            id: string;
            title: string;
            jobId: string | null;
            companyName: string | null;
            jobTitle: string | null;
            sourceFile: {
                id: string;
                originalName: string | null;
                mimeType: string;
                sizeBytes: number;
            } | null;
            versions: {
                version: number;
                body: string;
            }[];
        };
        message: string;
    }>;
    uploadLetter(principal: UserPrincipal, file?: {
        buffer: Buffer;
        originalname: string;
        mimetype: string;
        size: number;
    }, body?: {
        jobId?: string;
    }): Promise<{
        data: {
            id: string;
            title: string;
            jobId: string | null;
            companyName: string | null;
            jobTitle: string | null;
            sourceFile: {
                id: string;
                originalName: string | null;
                mimeType: string;
                sizeBytes: number;
            } | null;
            versions: {
                version: number;
                body: string;
            }[];
        };
        message: string;
    }>;
    generateLetter(principal: UserPrincipal, dto: GenerateCoverLetterDto): Promise<{
        data: {
            id: string;
            title: string;
            jobId: string | null;
            companyName: string | null;
            jobTitle: string | null;
            sourceFile: {
                id: string;
                originalName: string | null;
                mimeType: string;
                sizeBytes: number;
            } | null;
            versions: {
                version: number;
                body: string;
            }[];
        };
        message: string;
    }>;
    letter(principal: UserPrincipal, id: string): Promise<{
        data: {
            id: string;
            title: string;
            jobId: string | null;
            companyName: string | null;
            jobTitle: string | null;
            sourceFile: {
                id: string;
                originalName: string | null;
                mimeType: string;
                sizeBytes: number;
            } | null;
            versions: {
                version: number;
                body: string;
            }[];
        };
        message: string;
    }>;
    interviewsList(principal: UserPrincipal): Promise<{
        data: {
            items: {
                id: string;
                roleTitle: string;
                status: string;
                createdAt: Date;
            }[];
        };
        message: string;
    }>;
    startInterview(principal: UserPrincipal, dto: InterviewStartDto): Promise<{
        data: {
            id: string;
            roleTitle: string;
            status: string;
            questions: {
                id: string;
                prompt: string;
                answer: string;
            }[];
            feedback: string | null;
        };
        message: string;
    }>;
    interview(principal: UserPrincipal, id: string): Promise<{
        data: {
            id: string;
            roleTitle: string;
            status: string;
            questions: {
                id: string;
                prompt: string;
                answer: string;
            }[];
            feedback: string | null;
        };
        message: string;
    }>;
    answer(principal: UserPrincipal, id: string, dto: InterviewAnswerDto): Promise<{
        data: {
            id: string;
            roleTitle: string;
            status: string;
            questions: {
                id: string;
                prompt: string;
                answer: string;
            }[];
            feedback: string | null;
        };
        message: string;
    }>;
    feedback(principal: UserPrincipal, id: string): Promise<{
        data: {
            id: string;
            roleTitle: string;
            status: string;
            questions: {
                id: string;
                prompt: string;
                answer: string;
            }[];
            feedback: string | null;
        };
        message: string;
    }>;
    ask(principal: UserPrincipal, dto: AssistantDto): Promise<{
        data: {
            answer: string;
            provider: string;
            model: string;
        };
        message: string;
    }>;
    skillGapsList(principal: UserPrincipal): Promise<{
        data: {
            items: {
                id: string;
                roleTitle: string;
                companyName: string | null;
                matchScore: number;
                createdAt: Date;
                gapCount: number;
            }[];
        };
        message: string;
    }>;
    analyseSkillGap(principal: UserPrincipal, dto: AnalyseSkillGapDto): Promise<{
        data: {
            id: string;
            jobId: string | null;
            roleTitle: string;
            companyName: string | null;
            matchScore: number;
            createdAt: Date;
        };
        message: string;
    }>;
    skillGap(principal: UserPrincipal, id: string): Promise<{
        data: {
            id: string;
            jobId: string | null;
            roleTitle: string;
            companyName: string | null;
            matchScore: number;
            createdAt: Date;
        };
        message: string;
    }>;
}
