import type { HTTPRequest, HTTPResponse } from "."; import type { Auth } from "../runtime/core"; import type { Token, IdToken, RefreshToken, RefreshController, RequestHandler } from "../runtime/inc"; import type { PartialExcept } from "./utils"; export interface UserOptions { property: string | false; autoFetch: boolean; } export interface CookieUserOptions { property: { client: string | false; server: string | false; }; autoFetch: boolean; } export interface EndpointsOption { [endpoint: string]: string | HTTPRequest | false; } export interface SchemeOptions { name?: string; } export declare type SchemePartialOptions = PartialExcept; export interface SchemeCheck { valid: boolean; tokenExpired?: boolean; refreshTokenExpired?: boolean; idTokenExpired?: boolean; isRefreshable?: boolean; } export interface Scheme { options: OptionsT; name?: string; $auth: Auth; mounted?(...args: any[]): Promise; check?(checkStatus: boolean): SchemeCheck; login(...args: any[]): Promise; fetchUser(endpoint?: HTTPRequest): Promise; setUserToken?(token: string | boolean, refreshToken?: string | boolean): Promise; logout?(endpoint?: HTTPRequest): Promise | void; reset?(options?: { resetInterceptor: boolean; }): void; } export interface TokenOptions { property: string; type: string | false; name: string; maxAge: number | false; global: boolean; required: boolean; prefix: string; expirationPrefix: string; } export interface TokenableSchemeOptions extends SchemeOptions { token?: TokenOptions; endpoints: EndpointsOption; } export interface TokenableScheme extends Scheme { token?: Token; requestHandler: RequestHandler; } export interface IdTokenableSchemeOptions extends SchemeOptions { idToken: TokenOptions; } export interface IdTokenableScheme extends Scheme { idToken: IdToken; requestHandler: RequestHandler; } export interface RefreshTokenOptions { property: string | false; type: string | false; data: string | false; maxAge: number | false; required: boolean; tokenRequired: boolean; prefix: string; expirationPrefix: string; } export interface RefreshableSchemeOptions extends TokenableSchemeOptions { refreshToken: RefreshTokenOptions; } export interface RefreshableScheme extends TokenableScheme { refreshToken: RefreshToken; refreshController: RefreshController; refreshTokens(): Promise; }