import { CanActivate, ExecutionContext } from '@nestjs/common';
import { Repository, DataSource } from 'typeorm';
import { JwtService } from '@nestjs/jwt';
import { ConfigService } from '@nestjs/config';
import { User } from '../auth/auth.module';
import { Tenant } from '../auth/auth.module';
import { UserTenantMembership } from '../auth/auth.module';
export declare class AdminLoginDto {
    secret: string;
}
export declare class ProvisionTenantDto {
    tenantName: string;
    tenantDocument: string;
    tenantEmail: string;
    userName: string;
    userEmail: string;
    userPassword: string;
}
export declare class AdminGuard implements CanActivate {
    canActivate(ctx: ExecutionContext): boolean;
}
export declare class AdminService {
    private readonly userRepo;
    private readonly tenantRepo;
    private readonly membershipRepo;
    private readonly jwtService;
    private readonly configService;
    private readonly dataSource;
    private readonly logger;
    constructor(userRepo: Repository<User>, tenantRepo: Repository<Tenant>, membershipRepo: Repository<UserTenantMembership>, jwtService: JwtService, configService: ConfigService, dataSource: DataSource);
    login(secret: string): {
        access_token: string;
    };
    listTenants(): Promise<Array<Tenant & {
        userCount: number;
        ownerEmail: string;
    }>>;
    provision(dto: ProvisionTenantDto): Promise<{
        tenant: Tenant;
        userEmail: string;
    }>;
    private assertKlavoTenant;
    listClients(requestingTenantId: string): Promise<(Tenant & {
        userCount: number;
        ownerEmail: string;
    })[]>;
    provisionClient(requestingTenantId: string, dto: ProvisionTenantDto): Promise<{
        tenant: Tenant;
        userEmail: string;
    }>;
    deleteClient(requestingTenantId: string, id: string): Promise<void>;
    runMigrations(): Promise<{
        applied: string[];
        errors: string[];
    }>;
    deleteTenant(id: string): Promise<void>;
}
export declare class AdminController {
    private readonly adminService;
    constructor(adminService: AdminService);
    login(dto: AdminLoginDto): {
        access_token: string;
    };
    listTenants(): Promise<(Tenant & {
        userCount: number;
        ownerEmail: string;
    })[]>;
    provision(dto: ProvisionTenantDto): Promise<{
        tenant: Tenant;
        userEmail: string;
    }>;
    deleteTenant(id: string): Promise<void>;
    runMigrations(): Promise<{
        applied: string[];
        errors: string[];
    }>;
    listClients(req: any): Promise<(Tenant & {
        userCount: number;
        ownerEmail: string;
    })[]>;
    provisionClient(req: any, dto: ProvisionTenantDto): Promise<{
        tenant: Tenant;
        userEmail: string;
    }>;
    deleteClient(req: any, id: string): Promise<void>;
}
export declare class AdminModule {
}
