type NavigationValidationLink = {
    kind?: string | null;
    label?: {
        kind?: string | null;
        label?: string | null;
        [key: string]: unknown;
    } | null;
    [key: string]: unknown;
} | null;
export type NavigationMenuValidationItem = {
    label: string;
    link?: NavigationValidationLink;
    isCta?: boolean | null;
    children?: unknown[] | null;
};
export type PortalLinkValidationItem = NavigationMenuValidationItem;
export type PortalLinkValidationStats = {
    count: number;
    nestedLabels: string[];
    withChildrenLabels: string[];
};
export type CartLinkValidationItem = NavigationMenuValidationItem;
export type CartLinkValidationStats = {
    count: number;
    nestedLabels: string[];
    withChildrenLabels: string[];
    ctaLabels: string[];
    missingVisibleTextLabels: string[];
};
/**
 * Recursively collects portal-link constraints for a single menu tree.
 * Rules:
 * - At most one portal link per menu.
 * - Portal links must be root-level.
 * - Portal links cannot have children.
 */
export declare function collectPortalLinkStats(items: PortalLinkValidationItem[], depth?: number): PortalLinkValidationStats;
/**
 * Recursively collects cart-link constraints for a single menu tree.
 * Rules:
 * - Cart links must be root-level.
 * - Cart links cannot have children.
 * - Cart links cannot be CTA items.
 * - Cart links using `icon-with-label` must provide visible text.
 */
export declare function collectCartLinkStats(items: CartLinkValidationItem[], depth?: number): CartLinkValidationStats;
export {};
