export enum AuthStatus { disconnected, loading, connected }; export interface Auth { id: Ref; data: Ref>; token: Ref; session_id: Ref; status: Ref; lastRefresh: Ref; register: (username: string, email: string, password: string, data?: Record) => AuthStatus; login: (usernameOrEmail: string, password: string) => AuthStatus; logout: () => AuthStatus; refresh: () => AuthStatus; } const id = useState("auth:id", () => 0); const data = useState("auth:data", () => {}); const token = useState("auth:token", () => ''); const session_id = useState("auth:session_id", () => 0); const status = useState("auth:status", () => 0); const lastRefresh = useState("auth:date", () => new Date()); function register(username: string, email: string, password: string, data?: Record): AuthStatus { return AuthStatus.disconnected; } function login(usernameOrEmail: string, password: string): AuthStatus { return AuthStatus.disconnected; } function logout(): AuthStatus { return AuthStatus.disconnected; } function refresh(): AuthStatus { return AuthStatus.disconnected; } export default function useAuth(): Auth { return { id, data, token, session_id, status, lastRefresh, register, login, logout, refresh }; }