import { Repository } from 'typeorm';
import { AdminCreateUserDto, AdminUpdateUserDto } from '../dto/admin-user.dto';
import { UserService } from '../../user/services/user.service';
import { AdminUserManagementService } from '../services/admin-user-management.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';
import { AuthConfigService } from '../../core/services/auth-config.service';
import { NestAuthUserAccess } from '../../user/entities/user-access.entity';
import { NestAuthTrustedDevice } from '../../auth/entities/trusted-device.entity';
export declare class AdminUsersController {
    private readonly users;
    private readonly adminUserManagement;
    private readonly tenantService;
    private readonly authConfigService;
    private readonly mfaService;
    private readonly sessionManager;
    private readonly mfaSecretRepository;
    private readonly userAccessRepository;
    private readonly trustedDeviceRepository;
    constructor(users: UserService, adminUserManagement: AdminUserManagementService, tenantService: TenantService, authConfigService: AuthConfigService, mfaService: MfaService, sessionManager: SessionManagerService, mfaSecretRepository: Repository<NestAuthMFASecret>, userAccessRepository: Repository<NestAuthUserAccess>, trustedDeviceRepository: Repository<NestAuthTrustedDevice>);
    private ensureUserExists;
    private toSessionResponse;
    private buildStatusFilter;
    private escapeLikePattern;
    private resolveTenantIds;
    listUsers(page?: string, limit?: string, search?: string, status?: string, tenantId?: string, roleName?: string): Promise<{
        data: {
            id: string;
            email: string;
            phone: string;
            userAccesses: {
                id: string;
                userId: string;
                tenantId: string;
                tenant: import("../../core").NestAuthTenant;
                roles: {
                    id: string;
                    name: string;
                    guard: string;
                    isSystem: boolean;
                    isActive: boolean;
                    tenantId: string;
                    tenant: {
                        id: string;
                        name: string;
                        slug: string;
                    };
                    permissions: string[];
                    createdAt: Date;
                    updatedAt: Date;
                }[];
                isActive: boolean;
                isDefault: boolean;
                status: string;
                metadata: Record<string, any>;
                createdAt: Date;
                updatedAt: Date;
            }[];
            isActive: boolean;
            emailVerifiedAt: Date;
            phoneVerifiedAt: Date;
            metadata: Record<string, any>;
            createdAt: Date;
            updatedAt: Date;
            isMfaEnabled: boolean;
        }[];
        meta: {
            page: number;
            limit: number;
            total: number;
            totalPages: number;
        };
    }>;
    createUser(dto: AdminCreateUserDto): Promise<{
        user: {
            id: string;
            email: string;
            phone: string;
            userAccesses: {
                id: string;
                userId: string;
                tenantId: string;
                tenant: import("../../core").NestAuthTenant;
                roles: {
                    id: string;
                    name: string;
                    guard: string;
                    isSystem: boolean;
                    isActive: boolean;
                    tenantId: string;
                    tenant: {
                        id: string;
                        name: string;
                        slug: string;
                    };
                    permissions: string[];
                    createdAt: Date;
                    updatedAt: Date;
                }[];
                isActive: boolean;
                isDefault: boolean;
                status: string;
                metadata: Record<string, any>;
                createdAt: Date;
                updatedAt: Date;
            }[];
            isActive: boolean;
            emailVerifiedAt: Date;
            phoneVerifiedAt: Date;
            metadata: Record<string, any>;
            createdAt: Date;
            updatedAt: Date;
            isMfaEnabled: boolean;
        };
    }>;
    getUser(id: string): Promise<{
        user: {
            id: string;
            email: string;
            phone: string;
            userAccesses: {
                id: string;
                userId: string;
                tenantId: string;
                tenant: import("../../core").NestAuthTenant;
                roles: {
                    id: string;
                    name: string;
                    guard: string;
                    isSystem: boolean;
                    isActive: boolean;
                    tenantId: string;
                    tenant: {
                        id: string;
                        name: string;
                        slug: string;
                    };
                    permissions: string[];
                    createdAt: Date;
                    updatedAt: Date;
                }[];
                isActive: boolean;
                isDefault: boolean;
                status: string;
                metadata: Record<string, any>;
                createdAt: Date;
                updatedAt: Date;
            }[];
            isActive: boolean;
            emailVerifiedAt: Date;
            phoneVerifiedAt: Date;
            metadata: Record<string, any>;
            createdAt: Date;
            updatedAt: Date;
            isMfaEnabled: boolean;
        };
        identities: import("../../core").NestAuthIdentity[];
        trustedDevices: NestAuthTrustedDevice[];
        loginCapabilities: {
            email: {
                enabledInConfig: boolean;
                hasIdentity: boolean;
                verified: boolean;
                canPasswordLogin: boolean;
                canOtpLogin: boolean;
            };
            phone: {
                enabledInConfig: boolean;
                hasIdentity: boolean;
                canPasswordLogin: boolean;
                verified: boolean;
                canOtpLogin: boolean;
            };
            passwordless: {
                enabledInConfig: boolean;
                allowSignUp: boolean;
            };
            social: {
                enabledProviders: string[];
                identityProviders: string[];
            };
            mfa: {
                enabledInConfig: boolean;
                requiredForAll: boolean;
                requiredForUser: boolean;
            };
        };
        mfa: {
            isEnabled: boolean;
            allowUserToggle: boolean;
            availableMethods: import("@ackplus/nest-auth-contracts").NestAuthMFAMethodEnum[];
            enabledMethods: import("@ackplus/nest-auth-contracts").NestAuthMFAMethodEnum[];
            hasRecoveryCode: boolean;
            totpDevices: {
                id: string;
                deviceName: string;
                verified: boolean;
                lastUsedAt: Date;
                createdAt: Date;
            }[];
        };
        sessions: {
            id: string;
            userId: 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;
            userAccesses: {
                id: string;
                userId: string;
                tenantId: string;
                tenant: import("../../core").NestAuthTenant;
                roles: {
                    id: string;
                    name: string;
                    guard: string;
                    isSystem: boolean;
                    isActive: boolean;
                    tenantId: string;
                    tenant: {
                        id: string;
                        name: string;
                        slug: string;
                    };
                    permissions: string[];
                    createdAt: Date;
                    updatedAt: Date;
                }[];
                isActive: boolean;
                isDefault: boolean;
                status: string;
                metadata: Record<string, any>;
                createdAt: Date;
                updatedAt: Date;
            }[];
            isActive: boolean;
            emailVerifiedAt: Date;
            phoneVerifiedAt: Date;
            metadata: Record<string, any>;
            createdAt: Date;
            updatedAt: Date;
            isMfaEnabled: boolean;
        };
    }>;
    deleteTotpDevice(id: string, deviceId: string): Promise<{
        message: string;
    }>;
    listSessions(id: string): Promise<{
        data: {
            id: string;
            userId: 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