import { JwtService } from "@nestjs/jwt";
import { Repository } from "typeorm";
import { CreateUserDto } from "./dto/create-user.dto";
import { LoginDto } from "./dto/login.dto";
import { UpdateUserDto } from "./dto/update-user.dto";
import { UserRole, Usuario } from "./entities/usuario.entity";
export declare class AuthService {
    private usuarioRepository;
    private jwtService;
    private readonly logger;
    constructor(usuarioRepository: Repository<Usuario>, jwtService: JwtService);
    private buildPermissions;
    login(loginDto: LoginDto): Promise<{
        accessToken: string;
        refreshToken: string;
        user: {
            id: number;
            username: string;
            nombre: string;
            rol: UserRole;
            permissions: Record<string, "none" | "read" | "write">;
        };
    }>;
    refreshToken(refreshToken: string): Promise<{
        accessToken: string;
        refreshToken: string;
    }>;
    getProfile(userId: number): Promise<{
        permissions: Record<string, "none" | "read" | "write">;
        id: number;
        username: string;
        email: string;
        passwordHash: string;
        nombre: string;
        rol: UserRole;
        permisos?: Record<string, "none" | "read" | "write">;
        activo: boolean;
        ultimoLogin: Date;
        createdAt: Date;
        updatedAt: Date;
    }>;
    validateUser(userId: number): Promise<Usuario | null>;
    listUsers(): Promise<{
        id: number;
        username: string;
        nombre: string;
        email: string;
        rol: UserRole;
        activo: boolean;
        ultimoLogin: Date;
        createdAt: Date;
        permissions: Record<string, "none" | "read" | "write">;
    }[]>;
    createUser(dto: CreateUserDto): Promise<{
        id: number;
        username: string;
        nombre: string;
        email: string;
        rol: UserRole;
        activo: boolean;
        permissions: Record<string, "none" | "read" | "write">;
    }>;
    updateUser(id: number, dto: UpdateUserDto): Promise<{
        id: number;
        username: string;
        nombre: string;
        email: string;
        rol: UserRole;
        activo: boolean;
        permissions: Record<string, "none" | "read" | "write">;
    }>;
    setUserActive(id: number, activo: boolean): Promise<{
        ok: boolean;
    }>;
    seedUsers(): Promise<void>;
    seedUsersIfTableExists(): Promise<void>;
}
