import { Result } from "@repo/rdx-utils";

import { EmailAddress } from "@/core/common/domain";
import { AuthenticatedUser } from "../aggregates";
import { Username } from "../value-objects";

export interface IAuthenticatedUserRepository {
  getUserByEmail(email: EmailAddress, transaction?: any): Promise<Result<AuthenticatedUser, Error>>;
  userExists(
    username: Username,
    email: EmailAddress,
    transaction?: any
  ): Promise<Result<boolean, Error>>;
  createUser(user: AuthenticatedUser, transaction?: any): Promise<Result<void, Error>>;
}
