import { FilterTasks } from "@/server/task/domain/models";
import { SendInvitation, UpdateUserMetadata, User, UserById, UserId } from "../domain/models";
export interface UserService {
getAllUsers(userId: UserId): Promise<User[]>;
getUserWithTaskById(userId: UserId, filter: FilterTasks): Promise<UserById>;
sendInvitation(data: SendInvitation): Promise<void>;
updateUserClerk(data: Partial<User>): Promise<User>;
createUserDb(data: User): Promise<User>;
updateUserDb(data: User): Promise<User>;
unbanUser(userId: UserId): Promise<void>;
banUser(userId: UserId): Promise<void>;
getUserById(userId: UserId): Promise<User>;
deleteUserClerk(userId: UserId): Promise<void>;
deleteUserDb(userId: UserId): Promise<User>;
findOrCreateUser(user: User): Promise<User>;
updateUserMetadataClerk(data: UpdateUserMetadata): Promise<void>
}
export interface UserFacade {
getAllUsers(userId: UserId): Promise<User[]>;
getUserById(userId: UserId): Promise<User>;
getUserWithTaskById(userId: UserId, filter: FilterTasks): Promise<UserById>;
sendInvitation(data: SendInvitation): Promise<void>;
updateUserClerk(data: Partial<User>): Promise<User>;
createUserDb(data: User): Promise<User>;
updateUserDb(data: User): Promise<User>;
unbanUser(userId: UserId): Promise<void>;
banUser(userId: UserId): Promise<void>;
deleteUserClerk(userId: UserId): Promise<void>;
deleteUserDb(userId: UserId): Promise<User>;
findOrCreateUser(user:User): Promise<User>;
}