import { Result } from "@common/domain"; import { AuthenticatedUser, EmailAddress, LoginData, LogoutData, RegisterData, TabContext, Token, } from ".."; import { IJWTPayload } from "../../infraestructure"; export interface IAuthService { generateAccessToken(payload: IJWTPayload): Result; generateRefreshToken(payload: IJWTPayload): Result; verifyRefreshToken(token: Token): IJWTPayload; registerUser( registerData: RegisterData, transaction?: any ): Promise>; loginUser( loginData: LoginData, transaction?: any ): Promise< Result< { user: AuthenticatedUser; tabContext: TabContext; tokens: { accessToken: Token; refreshToken: Token; }; }, Error > >; logoutUser(logoutData: LogoutData, transaction?: any): Promise>; getUserByEmail(email: EmailAddress, transaction?: any): Promise>; }