export declare const WORK_MODES: readonly ["REMOTE", "HYBRID", "ONSITE"];
export declare const EMPLOYMENT_TYPES: readonly ["FULL_TIME", "PART_TIME", "INTERNSHIP", "GRADUATE", "CONTRACT", "PERMANENT", "APPRENTICESHIP"];
export declare const EXPERIENCE_LEVELS: readonly ["INTERNSHIP", "GRADUATE", "JUNIOR", "MID", "SENIOR", "LEAD"];
export declare const SALARY_PERIODS: readonly ["HOUR", "DAY", "MONTH", "YEAR"];
export interface NormalizedJob {
    source: string;
    externalId: string;
    title: string;
    companyName: string | null;
    description: string | null;
    aiSummary: string | null;
    summaryLabel: 'EMPLOYER' | 'AI' | null;
    locationText: string | null;
    city: string | null;
    region: string | null;
    postcode: string | null;
    country: string | null;
    applicationUrl: string | null;
    workMode: (typeof WORK_MODES)[number] | null;
    employmentType: (typeof EMPLOYMENT_TYPES)[number] | null;
    experienceLevel: (typeof EXPERIENCE_LEVELS)[number] | null;
    salaryMin: number | null;
    salaryMax: number | null;
    currency: string | null;
    salaryPeriod: (typeof SALARY_PERIODS)[number] | null;
    categoryName: string | null;
    skills: string[];
    sponsorsVisa: boolean;
    perkLabel: string | null;
    detail: Record<string, unknown> | null;
    isDemo: boolean;
}
export interface JobSourceProvider {
    readonly name: string;
    fetchJobs(): Promise<unknown[]>;
    normalizeJob(raw: unknown): NormalizedJob;
    validateJob(job: NormalizedJob): string[];
}
export declare function emptyJob(source: string, externalId: string, title: string): NormalizedJob;
