/**
 * Navigation Visibility Rules
 *
 * Role-based visibility logic for dashboard navigation items.
 * Evaluates SDK config to determine which nav items are visible
 * for a given role and stage.
 */
import { type SiteRole } from '../types';
export type NavStage = 'internal' | 'beta' | 'ga';
export type NavVisibilityMode = 'augment' | 'restrict';
export type NavVisibilityConfig = {
    mode?: NavVisibilityMode | null;
    allowIds?: string[] | null;
    denyIds?: string[] | null;
};
export type NavVisibilityContext = {
    role: SiteRole | null;
    stage: NavStage;
    minRole?: SiteRole | null;
    id: string;
    config?: NavVisibilityConfig | null;
};
export declare function extractNavVisibilityConfig(raw: unknown): NavVisibilityConfig | null;
/**
 * Check if a raw config object has any nav visibility values defined.
 * Used to determine if nav visibility rules should be applied.
 */
export declare function hasNavVisibilityValues(raw: unknown): boolean;
export declare function extractSdkDashboardNavVisibilityConfig(sdkConfig: unknown, kind: 'siteNav' | 'settingsNav'): NavVisibilityConfig | null;
export declare function mergeNavVisibilityConfig(base: NavVisibilityConfig | null, override: NavVisibilityConfig | null): NavVisibilityConfig | null;
export declare function extractSdkDashboardNavVisibilityConfigForRole(sdkConfig: unknown, kind: 'siteNav' | 'settingsNav', role: SiteRole | null): NavVisibilityConfig | null;
export declare function isNavItemVisible(ctx: NavVisibilityContext): boolean;
