import { ReactNode } from 'react';
import { Auth0UserType, type EnrichedSessionUser } from '@smg-automotive/auth';
import { Project } from 'src/types/project';
import { Environment } from 'src/types/environment';
import { Brand } from 'src/types/brand';
import { BreakpointName } from 'src/themes/shared/breakpoints';
import { EntitlementConfig, LinkConfig, LinkInstance, LocalizedLinks } from 'src/components/navigation/link';
import { BaseConfig } from 'src/components/navigation/BaseConfig';
import { UserTypeExternal } from '../types';
import { IconItemsConfig, IconItemsLinks } from './iconItems';
import { HeaderNavigationLink } from './headerNavigationLink';
import { NavigationLinkConfigProps } from './headerLinks';
import { DrawerNodeItems, DrawerNodeItemsConfig, NavigationLinkConfigNode } from './DrawerNodeItems';
export declare const menuHeightConfig = "60px";
export interface HeaderNavigationLinkInstance extends LinkInstance {
    isNew: boolean;
    iconRight?: ReactNode;
    showUnderMoreLinkBelow?: BreakpointName;
    fontWeight?: 'regular' | 'bold';
    variant?: 'navigationLink' | 'subNavigationLink';
    color?: string;
    userAvatar?: ReactNode;
}
export interface HeaderNavigationLinkConfig extends LinkConfig {
    isNew?: boolean;
    rightIcon?: ReactNode;
    showUnderMoreLinkBelow?: BreakpointName;
    fontWeight?: 'regular' | 'bold';
    variant?: 'navigationLink' | 'subNavigationLink';
    color?: string;
    userAvatar?: ReactNode;
}
interface HeaderNavigationConfigInterface {
    headerItems: NavigationLinkConfigProps[];
    drawerItems: DrawerNodeItemsConfig;
    iconItems: IconItemsConfig;
}
interface HeaderNavigationConfigInstance {
    homeUrl: string;
    menuHeight: string;
    user: EnrichedSessionUser | null;
    headerItems: HeaderNavigationLink[];
    drawerItems: DrawerNodeItems;
    iconItems: IconItemsLinks;
}
export declare class HeaderNavigationConfig extends BaseConfig<HeaderNavigationConfigInstance> {
    config: HeaderNavigationConfigInterface;
    homeUrl: string;
    menuHeight: string;
    user: EnrichedSessionUser | null;
    userType: UserTypeExternal.Guest | Auth0UserType;
    mappedConfig?: HeaderNavigationConfigInstance;
    urlPathParams?: Record<string, string | number>;
    constructor({ brand, environment, useAbsoluteUrls, project, config, user, urlPathParams, }: {
        brand: Brand;
        environment?: Environment;
        project?: Project;
        useAbsoluteUrls?: boolean;
        config: HeaderNavigationConfigInterface;
        user: EnrichedSessionUser | null;
        urlPathParams?: Record<string, string | number>;
    });
    getMappedConfig(): HeaderNavigationConfigInstance;
    replacePathParams: (link: LocalizedLinks | undefined) => LocalizedLinks | undefined;
    mapEntitlementConfig(entitlementConfig: EntitlementConfig): {
        missingEntitlementFallbackLink: LocalizedLinks | undefined;
        singleRequiredEntitlement: import("../../../../types/entitlements").Entitlement[];
        missingEntitlementLinkIcon?: ReactNode;
        missingEntitlementTranslationKey?: string;
        hideIfEntitlementIsPresent?: import("../../../../types/entitlements").Entitlement;
        hideIfRequiredEntitlementIsMissing?: boolean;
    };
    mapLink(link: HeaderNavigationLinkConfig): HeaderNavigationLink;
    getHeaderLinks: () => HeaderNavigationLink[];
    getIconItems: () => IconItemsLinks;
    getDrawerNodeItems: () => DrawerNodeItems;
    mapDrawerItemsEntries: (itemsEntires: [string, NavigationLinkConfigNode[]][]) => (string | {
        items: HeaderNavigationLink[];
        title?: string | undefined;
        translationKey?: string | undefined;
    }[])[][];
    mapDrawerNodes: (nodeEntry: NavigationLinkConfigNode[]) => {
        items: HeaderNavigationLink[];
        title?: string | undefined;
        translationKey?: string | undefined;
    }[];
    mapDrawerNodeItems: (items: NavigationLinkConfigProps[]) => HeaderNavigationLink[];
}
export {};
//# sourceMappingURL=HeaderNavigationConfig.d.ts.map