import { PrismaService, user_account_provider_52222e2ecb_enum } from '@hed-hog/api-prisma';
import { AuthService } from '../auth/auth.service';
import { FileService } from '../file/file.service';
import { MailService } from '../mail/mail.service';
import { SecurityService } from '../security/security.service';
import { SettingService } from '../setting/setting.service';
import { TokenService } from '../token/token.service';
import { UserService } from '../user/user.service';
import { OAuthCallbackCoordinatorService } from './oauth-callback-coordinator.service';
import { FacebookProvider } from './providers/facebook.provider';
import { GithubProvider } from './providers/github.provider';
import { GoogleProvider } from './providers/google.provider';
import { MicrosoftEntraIdProvider } from './providers/microsoft-entra-id.provider';
import { MicrosoftProvider } from './providers/microsoft.provider';
type HandleCallbackProps = {
    locale: string;
    ipAddress: string;
    userAgent: string;
    res: Response;
    provider: user_account_provider_52222e2ecb_enum;
    code?: string;
    type: 'login' | 'register' | 'connect' | 'disconnect';
    userId?: number;
    email?: string;
};
export declare class OAuthService {
    private readonly callbackCoordinator;
    private readonly auth;
    private readonly file;
    private readonly mail;
    private readonly security;
    private readonly prisma;
    private readonly token;
    private readonly setting;
    private readonly user;
    private readonly logger;
    private providers;
    constructor(google: GoogleProvider, facebook: FacebookProvider, microsoft: MicrosoftProvider, github: GithubProvider, microsoftEntraId: MicrosoftEntraIdProvider, callbackCoordinator: OAuthCallbackCoordinatorService, auth: AuthService, file: FileService, mail: MailService, security: SecurityService, prisma: PrismaService, token: TokenService, setting: SettingService, user: UserService);
    getAuthUrl(provider: user_account_provider_52222e2ecb_enum, callbackPath: string): Promise<string>;
    handleCallback({ res, locale, ipAddress, userAgent, provider, code, type, userId, email, }: HandleCallbackProps): Promise<{
        accessToken: string;
    }>;
    private getProvider;
    private getProviderScopes;
    private buildCallbackKey;
    private summarizeUserAgent;
    private finalizeCallback;
    private resolveProfileScopes;
    private mapCallbackError;
    private handleLogin;
    private handleRegister;
    private handleConnect;
    private handleDisconnect;
    private downloadAndSaveProfilePicture;
}
export {};
//# sourceMappingURL=oauth.service.d.ts.map