export type ButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'outline' | 'ghost';
export interface KernelImage {
    src: string;
    alt?: string;
}
export interface KernelLink {
    id: string;
    label: string;
    href: string;
    variant?: ButtonVariant;
    icon?: string;
}
export interface NavItem extends KernelLink {
}
export interface UtilityItem extends KernelLink {
}
export interface FooterLink extends KernelLink {
}
export interface FooterGroup {
    id: string;
    title: string;
    links: FooterLink[];
}
export interface FooterColumn {
    id: string;
    title?: string;
    groups?: FooterGroup[];
    links?: FooterLink[];
}
export interface SiteFooter {
    columns?: FooterColumn[];
    social?: FooterLink[];
    legalLinks?: FooterLink[];
    copyright?: string;
}
export type KernelFooterGroup = FooterGroup;
export type KernelFooterColumn = FooterColumn;
export interface KernelPageSeo {
    title?: string;
    description?: string;
    canonical?: string;
}
export interface KernelPageBlock {
    id: string;
    component: string;
    props: Record<string, unknown>;
}
export interface KernelAtomicBlock {
    id: string;
    component: string;
    props: Record<string, unknown>;
}
export interface KernelPage {
    id: string;
    $type: 'page';
    status: string;
    layout: string;
    renderMode: string;
    metadata: KernelPageSeo;
    regions: Record<string, KernelPageBlock[]>;
}
export interface KernelSiteConfig {
    id: string;
    $type: 'site';
    status: string;
    title: string;
    domain: string;
    defaultLocale: string;
    locales?: string[];
    overlayResolution?: string[];
    brandHref?: string;
    brandLogo?: KernelImage;
    navigation?: NavItem[];
    utilities?: UtilityItem[];
    promo?: Record<string, unknown>;
    footer?: SiteFooter;
    seo?: {
        title?: string;
        description?: string;
        siteName?: string;
    };
}
export interface KernelRouteMetadata {
    title: string;
    description: string;
    canonical?: string;
    siteName: string;
}
export interface RenderInput<TPage extends KernelPage = KernelPage, TSiteConfig extends KernelSiteConfig = KernelSiteConfig> {
    route: string;
    domain: string;
    locale: string;
    siteConfig: TSiteConfig;
    page: TPage | null;
}
export interface RenderOutput {
    route: string;
    html: string;
    assets: {
        css: string[];
        js: string[];
        images: string[];
    };
    diagnostics: string[];
}
