import { UserPublic } from '../models/userModel.js';
interface GitHubProfile {
    id: number;
    login: string;
    email?: string;
    name?: string;
    avatar_url?: string;
}
export declare class GitHubOAuthService {
    constructor();
    private get clientId();
    private get clientSecret();
    private get callbackUrl();
    /**
     * Generate GitHub OAuth authorization URL
     */
    getAuthUrl(): string;
    /**
     * Check if GitHub OAuth is configured
     */
    isConfigured(): boolean;
    /**
     * Exchange authorization code for access token
     */
    exchangeCodeForToken(code: string): Promise<string | null>;
    /**
     * Get GitHub user profile
     */
    getUserProfile(accessToken: string): Promise<GitHubProfile | null>;
    /**
     * Process GitHub OAuth callback
     */
    processCallback(code: string): Promise<{
        user: UserPublic;
        token: string;
    } | null>;
    /**
     * Process user from GitHub profile (alias for createOrFindUser)
     */
    processUser(profile: GitHubProfile): Promise<UserPublic | null>;
    /**
     * Create or find user from GitHub profile
     */
    private createOrFindUser;
}
export declare const githubOAuthService: GitHubOAuthService;
export {};
//# sourceMappingURL=simpleGitHubOAuth.d.ts.map