import { AuthService } from "./auth.service";
import { CreateUserDto } from "./dto/create-user.dto";
import { LoginDto } from "./dto/login.dto";
import { RefreshTokenDto } from "./dto/refresh-token.dto";
import { UpdateUserDto } from "./dto/update-user.dto";
import { UserRole } from "./entities/usuario.entity";
export declare class AuthController {
    private readonly authService;
    constructor(authService: AuthService);
    private ensureCanManageUsers;
    login(loginDto: LoginDto): Promise<{
        accessToken: string;
        refreshToken: string;
        user: {
            id: number;
            username: string;
            nombre: string;
            rol: UserRole;
            permissions: Record<string, "none" | "read" | "write">;
        };
    }>;
    refresh(refreshTokenDto: RefreshTokenDto): Promise<{
        accessToken: string;
        refreshToken: string;
    }>;
    getProfile(req: any): 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;
    }>;
    listUsers(req: any): 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, req: any): Promise<{
        id: number;
        username: string;
        nombre: string;
        email: string;
        rol: UserRole;
        activo: boolean;
        permissions: Record<string, "none" | "read" | "write">;
    }>;
    updateUser(id: number, dto: UpdateUserDto, req: any): Promise<{
        id: number;
        username: string;
        nombre: string;
        email: string;
        rol: UserRole;
        activo: boolean;
        permissions: Record<string, "none" | "read" | "write">;
    }>;
    setActive(id: number, value: boolean, req: any): Promise<{
        ok: boolean;
    }>;
    logout(): Promise<{
        message: string;
    }>;
}
