import { FindManyOptions, FindOneOptions, Repository } from 'typeorm';
import { NestAuthUser } from '../entities/user.entity';
import { EventEmitter2 } from '@nestjs/event-emitter';
import { TenantService } from '../../tenant';
import { DebugLoggerService } from '../../core/services/debug-logger.service';
import { AuthConfigService } from '../../core/services/auth-config.service';
export declare class UserService {
    private readonly userRepository;
    private readonly tenantService;
    private readonly eventEmitter;
    private readonly authConfigService;
    private readonly debugLogger;
    constructor(userRepository: Repository<NestAuthUser>, tenantService: TenantService, eventEmitter: EventEmitter2, authConfigService: AuthConfigService, debugLogger: DebugLoggerService);
    createUser(data: Partial<NestAuthUser>, context?: any): Promise<NestAuthUser>;
    getUserById(id: string, options?: FindOneOptions<NestAuthUser>): Promise<NestAuthUser>;
    getUserByEmail(email: string, tenantId?: string, options?: FindOneOptions<NestAuthUser>): Promise<NestAuthUser>;
    getUserByPhone(phone: string, tenantId?: string, options?: FindOneOptions<NestAuthUser>): Promise<NestAuthUser>;
    getUsers(options?: FindManyOptions<NestAuthUser>): Promise<NestAuthUser[]>;
    getUsersByTenant(tenantId: string, options?: FindManyOptions<NestAuthUser>): Promise<NestAuthUser[]>;
    updateUser(id: string, data: Partial<NestAuthUser>): Promise<NestAuthUser>;
    deleteUser(id: string): Promise<void>;
    verifyUser(id: string, verificationType?: 'email' | 'phone' | 'none'): Promise<NestAuthUser>;
    unverifyUser(id: string, verificationType?: 'email' | 'phone' | 'none'): Promise<NestAuthUser>;
    updateUserStatus(id: string, isActive: boolean): Promise<NestAuthUser>;
    updateUserMetadata(id: string, metadata: Record<string, any>): Promise<NestAuthUser>;
    countUsers(options?: FindManyOptions<NestAuthUser>): Promise<number>;
    getUsersAndCount(options?: FindManyOptions<NestAuthUser>): Promise<[NestAuthUser[], number]>;
    getUsersByRole(roleName: string, guard: string): Promise<NestAuthUser[]>;
}
//# sourceMappingURL=user.service.d.ts.map