/// import { Response } from 'superagent'; import { ContentType, IClient, IConfig, OAuthServerConfig, OpenIdToken } from '../../definitions'; export interface AuthorizationParameters { [key: string]: string; } export interface TokenParameters { [key: string]: string; } export interface OAuth2FlowOptions { readonly redirectHost?: string; readonly redirectPort?: number; readonly accessTokenRequestContentType?: ContentType; } export interface OAuth2FlowDeps { readonly client: IClient; readonly config: IConfig; } export declare abstract class OAuth2Flow { readonly e: OAuth2FlowDeps; abstract readonly flowName: string; readonly oauthConfig: OAuthServerConfig; readonly redirectHost: string; readonly redirectPort: number; readonly accessTokenRequestContentType: ContentType; constructor({ redirectHost, redirectPort, accessTokenRequestContentType }: OAuth2FlowOptions, e: OAuth2FlowDeps); get redirectUrl(): string; run(): Promise; exchangeRefreshToken(refreshToken: string): Promise; protected abstract generateAuthorizationParameters(challenge: string): AuthorizationParameters; protected abstract generateTokenParameters(authorizationCode: string, verifier: string): TokenParameters; protected abstract generateRefreshTokenParameters(refreshToken: string): TokenParameters; protected abstract checkValidExchangeTokenRes(res: Response): boolean; protected abstract getAuthConfig(): OAuthServerConfig; protected getSuccessHtml(): Promise; protected getAuthorizationCode(): Promise<{ code: string; state?: string; }>; protected exchangeAuthForAccessToken(authorizationCode: string, verifier: string): Promise; protected generateVerifier(): string; protected generateChallenge(verifier: string): string; protected base64URLEncode(buffer: Buffer): string; }