import { UserEntity } from 'src/entities/user.entity'; export interface UserListFilter { withDeleted?: boolean; } export interface UserStatsQueryResponse { userId: string; userName: string; photos: number; videos: number; usage: number; quotaSizeInBytes: number | null; } export interface UserFindOptions { withDeleted?: boolean; } export const IUserRepository = 'IUserRepository'; export interface IUserRepository { get(id: string, options: UserFindOptions): Promise; getAdmin(): Promise; hasAdmin(): Promise; getByEmail(email: string, withPassword?: boolean): Promise; getByStorageLabel(storageLabel: string): Promise; getByOAuthId(oauthId: string): Promise; getDeletedUsers(): Promise; getList(filter?: UserListFilter): Promise; getUserStats(): Promise; create(user: Partial): Promise; update(id: string, user: Partial): Promise; delete(user: UserEntity, hard?: boolean): Promise; updateUsage(id: string, delta: number): Promise; syncUsage(id?: string): Promise; }