import { UserId } from '../value-objects/UserId.js'; import { Username } from '../value-objects/Username.js'; import { Role, RoleEnum } from '../value-objects/Role.js'; /** * User entity data for creation */ export interface UserData { id?: UserId; username: Username; passwordHash: string; role: Role; createdAt?: Date; updatedAt?: Date; } /** * User entity * Represents an authenticated user in the system */ export declare class User { private readonly _id; private readonly _username; private _passwordHash; private _role; private readonly _createdAt; private _updatedAt; private constructor(); get id(): UserId; get username(): Username; get passwordHash(): string; get role(): Role; get createdAt(): Date; get updatedAt(): Date; get isAdmin(): boolean; get isViewer(): boolean; /** * Update the user's password hash */ updatePasswordHash(newPasswordHash: string): void; /** * Update the user's role */ updateRole(newRole: Role): void; /** * Create a new User entity */ static create(data: UserData): User; /** * Create a User from raw data (e.g., from database) */ static fromRaw(raw: { id: string; username: string; passwordHash: string; role: string; createdAt: Date | string; updatedAt: Date | string; }): User; /** * Create an admin user */ static createAdmin(username: Username, passwordHash: string): User; /** * Create a viewer user */ static createViewer(username: Username, passwordHash: string): User; /** * Convert to plain object for serialization */ toJSON(): { id: string; username: string; role: RoleEnum; createdAt: string; updatedAt: string; }; } //# sourceMappingURL=User.d.ts.map