import type { ReactElement } from 'react';
import type { TenantApplicationDto, AvailableApplicationDto, ApplicationAccessLevel } from '@/services/api/adminApi';
export interface BulkModuleNode {
    readonly id: string;
    readonly label: string;
    readonly code: string;
    readonly icon: string | null;
    readonly isAssigned: boolean;
    readonly sections: BulkSectionNode[];
}
export interface BulkSectionNode {
    readonly id: string;
    readonly label: string;
    readonly code: string;
    readonly icon: string | null;
    readonly isAssigned: boolean;
}
interface TenantApplicationsTabProps {
    readonly tenantId: string;
    readonly tenantName: string;
    /** Mode: 'tenant' for tenant-level, 'template' for template-level module management */
    readonly mode?: 'tenant' | 'template';
    readonly applications: TenantApplicationDto[] | null;
    readonly loadingApps: boolean;
    readonly actionLoading: string | null;
    readonly onRefresh: () => Promise<void>;
    readonly onUpdateAccessLevel: (appId: string, accessLevel: ApplicationAccessLevel) => Promise<void>;
    readonly onRemoveApplication?: (appId: string) => Promise<void>;
    readonly addingApplication: boolean;
    readonly availableAppsError?: string | null;
    readonly filteredAvailableApps: AvailableApplicationDto[];
    readonly loadingAvailableApps: boolean;
    readonly selectedAppIds: string[];
    readonly assigningApps: boolean;
    readonly appSearchTerm: string;
    readonly selectedAccessLevel: ApplicationAccessLevel;
    readonly bulkAccessMode: 'full' | 'custom';
    readonly bulkModules: BulkModuleNode[];
    readonly bulkExpandedModules: Set<string>;
    readonly loadingBulkModules: boolean;
    readonly showCustomizeDrawer: boolean;
    readonly customizingApp: TenantApplicationDto | null;
    readonly onOpenAddApplication: () => void;
    readonly onCloseAddApplication: () => void;
    readonly onAssignApplications: () => Promise<void>;
    readonly onAppToggle: (appId: string) => void;
    readonly onSelectAllApps: () => void;
    readonly onClearAppSelection: () => void;
    readonly onOpenCustomizeDrawer: (app: TenantApplicationDto) => void;
    readonly onCloseCustomizeDrawer: () => void;
    readonly onLoadBulkModules: (appId: string) => Promise<void>;
    readonly onToggleBulkModuleExpand: (moduleId: string) => void;
    readonly onToggleBulkModule: (moduleId: string) => void;
    readonly onToggleBulkSection: (moduleId: string, sectionId: string) => void;
    readonly onGetBulkModuleCheckState: (module: BulkModuleNode) => 'checked' | 'unchecked' | 'indeterminate';
    readonly onGetBulkStats: () => {
        totalModules: number;
        assignedModules: number;
        totalSections: number;
        assignedSections: number;
    };
    readonly onSelectAllBulkModules: () => void;
    readonly onClearBulkModules: () => void;
    readonly setAppSearchTerm: (term: string) => void;
    readonly setSelectedAccessLevel: (level: ApplicationAccessLevel) => void;
    readonly setBulkAccessMode: (mode: 'full' | 'custom') => void;
}
export declare function TenantApplicationsTab({ tenantId, tenantName, mode, applications, loadingApps, actionLoading, onRefresh, onUpdateAccessLevel, onRemoveApplication, addingApplication, availableAppsError, filteredAvailableApps, loadingAvailableApps, selectedAppIds, assigningApps, appSearchTerm, selectedAccessLevel, bulkAccessMode, bulkModules, bulkExpandedModules, loadingBulkModules, showCustomizeDrawer, customizingApp, onOpenAddApplication, onCloseAddApplication, onAssignApplications, onAppToggle, onSelectAllApps, onClearAppSelection, onOpenCustomizeDrawer, onCloseCustomizeDrawer, onLoadBulkModules, onToggleBulkModuleExpand, onToggleBulkModule, onToggleBulkSection, onGetBulkModuleCheckState, onGetBulkStats, onSelectAllBulkModules, onClearBulkModules, setAppSearchTerm, setSelectedAccessLevel, setBulkAccessMode, }: TenantApplicationsTabProps): ReactElement;
export {};
//# sourceMappingURL=TenantApplicationsTab.d.ts.map