import type { EndpointsOption, SchemePartialOptions, TokenableSchemeOptions, TokenableScheme, UserOptions, HTTPRequest, HTTPResponse, SchemeCheck } from '../../types'; import type { Auth } from '..'; import { Token, RequestHandler } from '../inc'; import { BaseScheme } from './base'; export interface LocalSchemeEndpoints extends EndpointsOption { login: HTTPRequest; logout: HTTPRequest | false; user: HTTPRequest | false; } export interface LocalSchemeOptions extends TokenableSchemeOptions { endpoints: LocalSchemeEndpoints; user: UserOptions; clientId: string; grantType: 'implicit' | 'authorization_code' | 'client_credentials' | 'password' | 'refresh_token' | 'urn:ietf:params:oauth:grant-type:device_code'; scope: string | string[]; } export declare class LocalScheme extends BaseScheme implements TokenableScheme { token: Token; requestHandler: RequestHandler; constructor($auth: Auth, options: SchemePartialOptions, ...defaults: SchemePartialOptions[]); check(checkStatus?: boolean): SchemeCheck; mounted({ tokenCallback, refreshTokenCallback }?: { tokenCallback?: (() => void) | undefined; refreshTokenCallback?: (() => undefined) | undefined; }): Promise | void>; login(endpoint: HTTPRequest, { reset }?: { reset?: boolean | undefined; }): Promise | void>; setUserToken(token: string): Promise | void>; fetchUser(endpoint?: HTTPRequest): Promise | void>; logout(endpoint?: HTTPRequest): Promise; reset({ resetInterceptor }?: { resetInterceptor?: boolean | undefined; }): void; protected extractToken(response: HTTPResponse): string; protected updateTokens(response: HTTPResponse): void; protected initializeRequestInterceptor(): void; }