import type { ProviderInterface, SocialUser } from './types'; export declare interface ProviderConfig { clientId: string clientSecret: string redirectUrl: string guzzle?: Record } export declare abstract class AbstractProvider implements ProviderInterface { protected clientId: string; protected clientSecret: string; protected redirectUrl: string; protected parameters: Record; protected _scopes: string[]; protected scopeSeparator: string; protected _stateless: boolean; protected _usesPKCE: boolean; protected _state: string | null; protected user: SocialUser | null; constructor(config: ProviderConfig); abstract getAuthUrl(): Promise; protected abstract getTokenUrl(): string; abstract getAccessToken(code: string): Promise; abstract getUserByToken(token: string): Promise; protected getCodeFields(state?: string | null): Record; protected formatScopes(scopes: string[], scopeSeparator: string): string; userFromToken(token: string): Promise; scopes(scopes: string | string[]): this; setScopes(scopes: string | string[]): this; getScopes(): string[]; setRedirectUrl(url: string): this; withState(state: string): this; protected resolveState(): string; protected usesState(): boolean; validateState(expected: string | null | undefined, actual: string | null | undefined): boolean; protected isStateless(): boolean; stateless(): this; protected getState(): string; protected usesPKCE(): boolean; enablePKCE(): this; protected getCodeVerifier(): string; protected getCodeChallenge(): Promise; protected getCodeChallengeMethod(): string; with(parameters: Record): this; protected buildAuthUrlFromBase(url: string, state: string | null): string; }