import { Repository } from 'typeorm';
import { AdminCreateUserDto, AdminUpdateUserDto } from '../dto/admin-user.dto';
import { UserService } from '../../user/services/user.service';
import { TenantService } from '../../tenant/services/tenant.service';
import { NestAuthMFASecret } from '../../auth/entities/mfa-secret.entity';
import { MfaService } from '../../auth/services/mfa.service';
import { SessionManagerService } from '../../session/services/session-manager.service';
export declare class AdminUsersController {
    private readonly users;
    private readonly tenantService;
    private readonly mfaService;
    private readonly sessionManager;
    private readonly mfaSecretRepository;
    constructor(users: UserService, tenantService: TenantService, mfaService: MfaService, sessionManager: SessionManagerService, mfaSecretRepository: Repository<NestAuthMFASecret>);
    private ensureUserExists;
    private toSessionResponse;
    private buildStatusFilter;
    private escapeLikePattern;
    listUsers(page?: string, limit?: string, search?: string, status?: string): Promise<{
        data: {
            id: string;
            email: string;
            phone: string;
            tenantId: string;
            isActive: boolean;
            isVerified: boolean;
            metadata: Record<string, any>;
            roles: string[];
            createdAt: Date;
            updatedAt: Date;
            emailVerifiedAt: Date;
            phoneVerifiedAt: Date;
            isMfaEnabled: boolean;
        }[];
        meta: {
            page: number;
            limit: number;
            total: number;
            totalPages: number;
        };
    }>;
    createUser(dto: AdminCreateUserDto): Promise<{
        user: {
            id: string;
            email: string;
            phone: string;
            tenantId: string;
            isActive: boolean;
            isVerified: boolean;
            metadata: Record<string, any>;
            roles: string[];
            createdAt: Date;
            updatedAt: Date;
            emailVerifiedAt: Date;
            phoneVerifiedAt: Date;
            isMfaEnabled: boolean;
        };
    }>;
    getUser(id: string): Promise<{
        user: {
            id: string;
            email: string;
            phone: string;
            tenantId: string;
            isActive: boolean;
            isVerified: boolean;
            metadata: Record<string, any>;
            roles: string[];
            createdAt: Date;
            updatedAt: Date;
            emailVerifiedAt: Date;
            phoneVerifiedAt: Date;
            isMfaEnabled: boolean;
        };
        loginMethods: {
            emailEnabled: boolean;
            phoneEnabled: boolean;
            hasPassword: boolean;
        };
        mfa: {
            isEnabled: boolean;
            allowUserToggle: boolean;
            availableMethods: import("../../core").MFAMethodEnum[];
            enabledMethods: import("../../core").MFAMethodEnum[];
            hasRecoveryCode: boolean;
            totpDevices: {
                id: string;
                deviceName: string;
                verified: boolean;
                lastUsedAt: Date;
                createdAt: Date;
            }[];
        };
        sessions: {
            id: string;
            deviceName: string;
            userAgent: string;
            ipAddress: string;
            lastActive: Date;
            createdAt: Date;
            expiresAt: Date;
        }[];
    }>;
    updateUser(id: string, dto: AdminUpdateUserDto): Promise<{
        user: {
            id: string;
            email: string;
            phone: string;
            tenantId: string;
            isActive: boolean;
            isVerified: boolean;
            metadata: Record<string, any>;
            roles: string[];
            createdAt: Date;
            updatedAt: Date;
            emailVerifiedAt: Date;
            phoneVerifiedAt: Date;
            isMfaEnabled: boolean;
        };
    }>;
    deleteTotpDevice(id: string, deviceId: string): Promise<{
        message: string;
    }>;
    listSessions(id: string): Promise<{
        data: {
            id: string;
            deviceName: string;
            userAgent: string;
            ipAddress: string;
            lastActive: Date;
            createdAt: Date;
            expiresAt: Date;
        }[];
    }>;
    revokeSession(id: string, sessionId: string): Promise<{
        message: string;
    }>;
    revokeAllSessions(id: string): Promise<{
        message: string;
    }>;
    deleteUser(id: string): Promise<{
        message: string;
    }>;
    private toSafeUser;
}
//# sourceMappingURL=admin-users.controller.d.ts.map