import type { HTTPRequest, HTTPResponse, Scheme, SchemeCheck, TokenableScheme, RefreshableScheme, ModuleOptions, Route, AuthState } from '../../types'; import type { NuxtApp } from '#app'; import { Storage } from './storage'; export type ErrorListener = (...args: any[]) => void; export type RedirectListener = (to: string, from: string) => string; export declare class Auth { #private; ctx: NuxtApp; options: ModuleOptions; strategies: Record; $storage: Storage; $state: AuthState; error?: Error; constructor(ctx: NuxtApp, options: ModuleOptions); getStrategy(throwException?: boolean): Scheme; get tokenStrategy(): TokenableScheme; get refreshStrategy(): RefreshableScheme; get strategy(): Scheme; get user(): AuthState['user']; get loggedIn(): boolean; get busy(): boolean; init(): Promise; registerStrategy(name: string, strategy: Scheme): void; setStrategy(name: string): Promise | void>; mounted(...args: any[]): Promise | void>; loginWith(name: string, ...args: any[]): Promise | void>; login(...args: any[]): Promise | void>; fetchUser(...args: any[]): Promise | void>; logout(...args: any[]): Promise; setUserToken(token: string | boolean, refreshToken?: string | boolean): Promise | void>; reset(...args: any[]): void; refreshTokens(): Promise | void>; check(...args: any[]): SchemeCheck; fetchUserOnce(...args: any[]): Promise | void>; setUser(user: AuthState | false, schemeCheck?: boolean): void; request(endpoint: HTTPRequest, defaults?: HTTPRequest): Promise>; requestWith(endpoint?: HTTPRequest, defaults?: HTTPRequest): Promise>; wrapLogin(promise: Promise | void>): Promise | void>; onError(listener: ErrorListener): void; callOnError(error: Error, payload?: {}): void; /** * * @param name redirect name * @param route (default: false) Internal useRoute() (false) or manually specify * @param router (default: true) Whether to use nuxt redirect (true) or window redirect (false) * * @returns */ redirect(name: string, route?: Route | false, router?: boolean): any; onRedirect(listener: RedirectListener): void; callOnRedirect(to: string, from: string): string; hasScope(scope: string): boolean; }