import { type Express } from 'express';
import { AuthProvider, Event, Info } from 'open-collaboration-protocol';
import { AuthEndpoint, AuthSuccessEvent } from './auth-endpoint.js';
import passport from 'passport';
import { Logger } from '../utils/logging.js';
import { Configuration } from '../utils/configuration.js';
export declare const oauthProviders: unique symbol;
export declare const ThirdParty: Info;
export declare abstract class OAuthEndpoint implements AuthEndpoint {
    protected loginRedirectRequests: Map<string, string>;
    protected logger: Logger;
    protected configuration: Configuration;
    protected abstract id: string;
    protected abstract path: string;
    protected abstract redirectPath: string;
    protected scope?: string;
    protected baseURL?: string;
    private authSuccessEmitter;
    onDidAuthenticate: Event<AuthSuccessEvent>;
    abstract getProtocolProvider(): AuthProvider;
    initialize(): void;
    abstract shouldActivate(): boolean;
    abstract getStrategy(host: string, port: number): passport.Strategy;
    onStart(app: Express, hostname: string, port: number): void;
    protected createRedirectUrl(host: string, port: number, path: string): string;
}
export declare class GitHubOAuthEndpoint extends OAuthEndpoint {
    protected id: string;
    protected path: string;
    protected redirectPath: string;
    shouldActivate(): boolean;
    getProtocolProvider(): AuthProvider;
    getStrategy(hostname: string, port: number): passport.Strategy;
}
export declare class GoogleOAuthEndpoint extends OAuthEndpoint {
    protected id: string;
    protected path: string;
    protected redirectPath: string;
    protected scope: string;
    shouldActivate(): boolean;
    getProtocolProvider(): AuthProvider;
    getStrategy(hostname: string, port: number): passport.Strategy;
}
//# sourceMappingURL=oauth-endpoint.d.ts.map