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