export type OAuthChannel = 'google' | 'facebook' | (string & {});
export interface BaseOAuth2Provider {
    channel: OAuthChannel;
    clientId: string;
    clientSecret: string;
    redirectUri: string;
    getState?: () => string | Promise<string>;
}
export interface GoogleOAuth2Provider extends BaseOAuth2Provider {
    channel: 'google';
    scope?: string[];
}
export interface FacebookOAuth2Provider extends BaseOAuth2Provider {
    channel: 'facebook';
    scope?: string[];
}
export interface CustomOAuth2Provider extends BaseOAuth2Provider {
    channel: string;
    scope: string[];
    requestUrl: string;
    getAccessTokenFromCode: (code: string) => Promise<string>;
    getAccountFromAccessToken: (accessToken: string) => Promise<string>;
}
export type OAuth2Provider = GoogleOAuth2Provider | FacebookOAuth2Provider | CustomOAuth2Provider;
export declare const isGoogleProvider: (provider: OAuth2Provider) => provider is GoogleOAuth2Provider;
export declare const isFacebookProvider: (provider: OAuth2Provider) => provider is FacebookOAuth2Provider;
export declare const isCustomProvider: (provider: OAuth2Provider) => provider is CustomOAuth2Provider;
