export interface Provider { mode: 'otp' | 'oauth' | 'password' provider: string label?: string scopes?: string[] params?: string[] } export interface AuthUser { id: string role: string name: string email?: string } export interface Credentials { provider?: string email?: string phone?: string password?: string token?: string options?: any } export interface AuthOptions { scopes: string | Array params: Array } export interface Adapter { getUser(): Promise getSession(): Promise signIn( credentials: Credentials, mode: 'password' | 'otp' | 'oauth' ): Promise signOut(): Promise verifyOtp(credentials: Credentials): Promise resetPassword(): Promise onAuthChange(callback: Function): void } export interface GetAdapter { (config: any): Adapter }