import { BaseSocialLogin } from './base'; import type { AuthorizationCode, LoginResult, OAuth2LoginOptions, OAuth2LoginResponse, OAuth2ProviderConfig, ProviderResponseMap } from './definitions'; /** * OAuth2 Social Login Manager * Supports multiple OAuth2 provider configurations */ export declare class OAuth2SocialLogin extends BaseSocialLogin { private providers; private readonly TOKENS_KEY_PREFIX; private readonly STATE_PREFIX; private readonly CONFIG_KEY_PREFIX; constructor(); private normalizeScopeValue; private normalizeConfig; private ensureDiscovered; /** * Initialize multiple OAuth2 providers */ initializeProviders(configs: Record): Promise; private normalizeStoredConfig; private getProvider; private getTokensKey; private getConfigKey; private persistConfiguration; private restoreConfigurationsFromStorage; login(options: OAuth2LoginOptions): Promise<{ provider: T; result: ProviderResponseMap[T]; }>; logout(providerId: string): Promise; isLoggedIn(providerId: string): Promise<{ isLoggedIn: boolean; }>; getAuthorizationCode(providerId: string): Promise; refresh(providerId: string): Promise; refreshToken(providerId: string, refreshToken?: string, additionalParameters?: Record): Promise; handleOAuthRedirect(url: URL, expectedState?: string): Promise; private exchangeAuthorizationCode; private refreshWithRefreshToken; private fetchResource; private persistTokens; private getStoredTokens; private persistPendingLogin; private consumePendingLogin; private generateState; private generateCodeVerifier; private generateCodeChallenge; private base64UrlEncode; decodeIdToken(idToken: string): Record; getAccessTokenExpirationDate(providerId: string): { expirationDate: string | null; }; isAccessTokenAvailable(providerId: string): { isAvailable: boolean; }; isAccessTokenExpired(providerId: string): { isExpired: boolean; }; isRefreshTokenAvailable(providerId: string): { isAvailable: boolean; }; }