import { type ReactNode } from 'react';
import type { ReactElement } from 'react';
export interface ApplicationDto {
    id: string;
    code: string;
    label: string;
    description: string | null;
    icon: string | null;
    route: string | null;
    displayOrder: number;
    zone: string | null;
    accessLevel: string | null;
    componentKey: string;
    permissionPath: string;
    isOpen: boolean;
    requiredFeature: string | null;
    modules: ModuleDto[];
}
export interface ModuleDto {
    id: string;
    code: string;
    label: string;
    icon: string | null;
    route: string | null;
    displayOrder: number;
    componentKey: string;
    permissionPath: string;
    requiredFeature: string | null;
    sections: SectionDto[];
}
export interface SectionDto {
    id: string;
    code: string;
    label: string;
    icon: string | null;
    route: string | null;
    displayOrder: number;
    componentKey: string;
    permissionPath: string;
    resources: ResourceDto[];
}
export interface ResourceDto {
    id: string;
    code: string;
    label: string;
    route: string | null;
    displayOrder: number;
    componentKey: string;
    permissionPath: string;
}
export interface MenuDto {
    applications: ApplicationDto[];
}
export interface FavoriteApplication {
    id: string;
    code: string;
    label: string;
    icon: string | null;
    route: string | null;
    displayOrder: number;
}
interface NavigationContextType {
    menu: MenuDto | null;
    favorites: FavoriteApplication[];
    currentAppCode: string | null;
    currentModuleCode: string | null;
    isLoading: boolean;
    getCurrentApplication: () => ApplicationDto | undefined;
    getCurrentModule: () => ModuleDto | undefined;
    getApplicationsByZone: (zone: string) => ApplicationDto[];
    /** Alias for getApplicationsByZone — filters applications by their zone (platform, personal, business). */
    getApplicationsForContext: (zone: string) => ApplicationDto[];
    toggleFavorite: (applicationId: string) => Promise<void>;
    isFavorite: (applicationId: string) => boolean;
    refreshMenu: () => Promise<void>;
}
export declare function NavigationProvider({ children }: {
    children: ReactNode;
}): ReactElement;
export declare function useNavigation(): NavigationContextType;
export {};
//# sourceMappingURL=NavigationContext.d.ts.map