/**
 * Tenant Service - Handles tenant CRUD operations and management
 */
import type { Tenant, TenantsResponse, CreateTenantRequest, UpdateTenantRequest, TenantLookupDto, TenantAnalytics, TenantConnection, TenantBackup, TenantRestoreRequest, AvailableFeature } from '../types';
export declare class TenantService {
    private httpClient;
    constructor(baseURL?: string);
    /**
     * Get all tenants with pagination and filtering
     */
    getTenants(page?: number, pageSize?: number, search?: string, isActive?: boolean, sortBy?: string, sortOrder?: 'asc' | 'desc'): Promise<TenantsResponse>;
    /**
     * Get tenant by ID
     */
    getTenant(id: string): Promise<Tenant>;
    /**
     * Create new tenant
     */
    createTenant(tenant: CreateTenantRequest): Promise<Tenant>;
    /**
     * Update existing tenant
     */
    updateTenant(tenant: UpdateTenantRequest): Promise<Tenant>;
    /**
     * Delete tenant
     */
    deleteTenant(id: string): Promise<void>;
    /**
     * Get tenant lookup data (for dropdowns, etc.)
     */
    getTenantLookup(): Promise<TenantLookupDto[]>;
    /**
     * Activate tenant
     */
    activateTenant(id: string): Promise<void>;
    /**
     * Deactivate tenant
     */
    deactivateTenant(id: string): Promise<void>;
    /**
     * Get tenant analytics
     */
    getTenantAnalytics(id: string, period?: 'day' | 'week' | 'month' | 'year'): Promise<TenantAnalytics>;
    /**
     * Test tenant connection
     */
    testTenantConnection(id: string): Promise<TenantConnection>;
    /**
     * Update tenant connection string
     */
    updateTenantConnection(id: string, connectionString: string): Promise<void>;
    /**
     * Get available features
     */
    getAvailableFeatures(): Promise<AvailableFeature[]>;
    /**
     * Update tenant features
     */
    updateTenantFeatures(id: string, features: any[]): Promise<void>;
    /**
     * Create tenant backup
     */
    createTenantBackup(id: string, name: string, description?: string, options?: {
        includeData?: boolean;
        includeSettings?: boolean;
        includeUsers?: boolean;
    }): Promise<TenantBackup>;
    /**
     * Get tenant backups
     */
    getTenantBackups(id: string): Promise<TenantBackup[]>;
    /**
     * Restore tenant from backup
     */
    restoreTenantFromBackup(request: TenantRestoreRequest): Promise<void>;
    /**
     * Delete tenant backup
     */
    deleteTenantBackup(tenantId: string, backupId: string): Promise<void>;
    /**
     * Get tenant statistics summary
     */
    getTenantStatistics(): Promise<{
        totalTenants: number;
        activeTenants: number;
        inactiveTenants: number;
        totalUsers: number;
        totalStorage: number;
        averageUsersPerTenant: number;
        topTenantsByUsers: Array<{
            tenantId: string;
            name: string;
            userCount: number;
        }>;
        topTenantsByStorage: Array<{
            tenantId: string;
            name: string;
            storageUsed: number;
        }>;
    }>;
    /**
     * Bulk operations on tenants
     */
    bulkActivateTenants(tenantIds: string[]): Promise<void>;
    bulkDeactivateTenants(tenantIds: string[]): Promise<void>;
    bulkDeleteTenants(tenantIds: string[]): Promise<void>;
    /**
     * Export tenant data
     */
    exportTenantData(id: string, format?: 'json' | 'csv' | 'xlsx'): Promise<Blob>;
    /**
     * Import tenant data
     */
    importTenantData(id: string, file: File, options?: {
        overwrite?: boolean;
        validateOnly?: boolean;
    }): Promise<{
        success: boolean;
        imported: number;
        skipped: number;
        errors: string[];
    }>;
    /**
     * Clone tenant
     */
    cloneTenant(sourceId: string, newName: string, newDisplayName: string, options?: {
        includeData?: boolean;
        includeSettings?: boolean;
        includeUsers?: boolean;
        includeFeatures?: boolean;
    }): Promise<Tenant>;
}
//# sourceMappingURL=tenant-service.d.ts.map