import { type TenantApplicationDto, type AvailableApplicationDto, type ApplicationAccessLevel } from '@/services/api/adminApi';
export type BulkAccessMode = 'full' | 'custom';
export interface BulkModuleNode {
    id: string;
    label: string;
    code: string;
    icon: string | null;
    isAssigned: boolean;
    sections: BulkSectionNode[];
}
export interface BulkSectionNode {
    id: string;
    label: string;
    code: string;
    icon: string | null;
    isAssigned: boolean;
}
export interface UseTenantApplicationsReturn {
    applications: TenantApplicationDto[] | null;
    setApplications: (apps: TenantApplicationDto[] | null) => void;
    loadingApps: boolean;
    setLoadingApps: (loading: boolean) => void;
    addingApplication: boolean;
    setAddingApplication: (adding: boolean) => void;
    availableApps: (AvailableApplicationDto & {
        contextCode?: string;
        contextLabel?: string;
    })[];
    setAvailableApps: (apps: (AvailableApplicationDto & {
        contextCode?: string;
        contextLabel?: string;
    })[]) => void;
    loadingAvailableApps: boolean;
    setLoadingAvailableApps: (loading: boolean) => void;
    selectedAppIds: string[];
    setSelectedAppIds: (appIds: string[]) => void;
    assigningApps: boolean;
    setAssigningApps: (assigning: boolean) => void;
    appSearchTerm: string;
    setAppSearchTerm: (term: string) => void;
    appContextFilter: string;
    setAppContextFilter: (filter: string) => void;
    availableContexts: {
        id: string;
        code: string;
        label: string;
    }[];
    setAvailableContexts: (contexts: {
        id: string;
        code: string;
        label: string;
    }[]) => void;
    selectedAccessLevel: ApplicationAccessLevel;
    setSelectedAccessLevel: (level: ApplicationAccessLevel) => void;
    bulkAccessMode: BulkAccessMode;
    setBulkAccessMode: (mode: BulkAccessMode) => void;
    bulkModules: BulkModuleNode[];
    setBulkModules: (modules: BulkModuleNode[]) => void;
    bulkExpandedModules: Set<string>;
    setBulkExpandedModules: (modules: Set<string>) => void;
    loadingBulkModules: boolean;
    setLoadingBulkModules: (loading: boolean) => void;
    showCustomizeDrawer: boolean;
    setShowCustomizeDrawer: (show: boolean) => void;
    customizingApp: TenantApplicationDto | null;
    setCustomizingApp: (app: TenantApplicationDto | null) => void;
    loadApplications: () => Promise<void>;
    loadAvailableApps: () => Promise<void>;
    handleAssignApplications: () => Promise<void>;
    handleRemoveApplication: (appId: string) => Promise<void>;
    handleToggleApplication: (appId: string) => Promise<void>;
    openCustomizeDrawer: (app: TenantApplicationDto) => void;
    closeCustomizeDrawer: () => void;
    filteredAvailableApps: (AvailableApplicationDto & {
        contextCode?: string;
        contextLabel?: string;
    })[];
    handleAppToggle: (appId: string) => void;
    selectAllFilteredApps: () => void;
    clearAppSelection: () => void;
    loadBulkModulesForApp: (appId: string) => Promise<void>;
    toggleBulkModuleExpand: (moduleId: string) => void;
    toggleBulkModule: (moduleId: string) => void;
    toggleBulkSection: (moduleId: string, sectionId: string) => void;
    getBulkModuleCheckState: (module: BulkModuleNode) => 'checked' | 'unchecked' | 'indeterminate';
    getBulkStats: () => {
        totalModules: number;
        assignedModules: number;
        totalSections: number;
        assignedSections: number;
    };
    selectAllBulkModules: () => void;
    clearBulkModules: () => void;
}
export declare function useTenantApplications(tenantId: string | undefined): UseTenantApplicationsReturn;
//# sourceMappingURL=useTenantApplications.d.ts.map