import type { ProgramDetailDto, ProgramListItemDto } from '../dto/program.dto';
export interface WpMediaItem {
    node: {
        sourceUrl: string;
    } | null;
}
export interface WpProgramFaq {
    faqQ: string | null;
    faqA: string | null;
}
export interface WpProgramCountryNode {
    title: string | null;
    riCountryProgram: {
        cpCountryName: string | null;
    } | null;
}
export interface WpProgramDetails {
    riProgramType: string[] | null;
    riCardDescription: string | null;
    riProgramCountry: {
        nodes: (WpProgramCountryNode | null)[] | null;
    } | null;
    riInvestmentLabel: string | null;
    riPassportRank: number | null;
    riTimelineLabel: string | null;
    riFamilyInclusion: boolean | null;
    riPathToSettlement: boolean | null;
    riAboutProgram: string | null;
    riAboutCountry: string | null;
    riQualifications: string | null;
    riOurServices: string | null;
    riProgramFaqs: (WpProgramFaq | null)[] | null;
}
export interface WpProgramTranslationNode {
    slug: string | null;
    languageCode: string | null;
}
export interface WpProgramNode {
    slug: string | null;
    title: string | null;
    date: string | null;
    featuredImage: WpMediaItem | null;
    riProgramDetails: WpProgramDetails | null;
    translations?: (WpProgramTranslationNode | null)[] | null;
}
export interface WpProgramsConnection {
    nodes: WpProgramNode[];
    pageInfo: {
        hasNextPage: boolean;
        endCursor?: string | null;
    };
}
export declare function normalizeLabel(value: string | null | undefined): string | null;
export declare function mapWpProgramToListItem(node: WpProgramNode): ProgramListItemDto;
export declare function mapWpProgramToDetail(node: WpProgramNode): ProgramDetailDto;
export declare function sliceProgramsPage(connection: WpProgramsConnection, page: number, limit: number): {
    programs: ProgramListItemDto[];
    hasNextPage: boolean;
};
