import { JwtService } from "@nestjs/jwt";
import { Model } from "mongoose";
import { UserDocument, UserRole } from "./schemas/user.schema";
export interface JwtPayload {
    sub: string;
    email: string;
    name: string;
    role: UserRole;
}
export interface PublicUser {
    id: string;
    email: string;
    name: string;
    role: UserRole;
    active: boolean;
    createdAt: string;
}
export interface CreateUserDto {
    email: string;
    name: string;
    role: UserRole;
    password: string;
    active?: boolean;
}
export interface UpdateUserDto {
    email?: string;
    name?: string;
    role?: UserRole;
    password?: string;
    active?: boolean;
}
export declare class AuthService {
    private readonly userModel;
    private readonly jwtService;
    constructor(userModel: Model<UserDocument>, jwtService: JwtService);
    login(email: string, password: string): Promise<{
        accessToken: string;
        user: {
            id: string;
            email: string;
            name: string;
            role: UserRole;
        };
    }>;
    findById(id: string): Promise<PublicUser | null>;
    listUsers(): Promise<PublicUser[]>;
    createUser(body: CreateUserDto): Promise<PublicUser>;
    updateUser(id: string, body: UpdateUserDto): Promise<PublicUser>;
    deactivateUser(id: string): Promise<PublicUser>;
    seedDefaultUsers(): Promise<void>;
    private validateUserPayload;
    private toPublicUser;
}
