interface GitHubUser { id: number; login: string; name: string | null; email: string | null; avatar_url: string; bio: string | null; company: string | null; location: string | null; blog: string | null; twitter_username: string | null; public_repos: number; followers: number; following: number; created_at: string; updated_at: string; two_factor_authentication: boolean; plan?: { name: string; space: number; collaborators: number; private_repos: number; }; } interface OAuthUser { id: string; email: string; username: string; name?: string; avatar?: string; provider: "github"; emailVerified: boolean; metadata?: { bio?: string; company?: string; location?: string; blog?: string; twitterUsername?: string; publicRepos?: number; followers?: number; following?: number; createdAt?: string; twoFactorEnabled?: boolean; emails?: Array<{ email: string; verified: boolean; primary: boolean; }>; }; } declare function getGitHubOAuthURL(options?: { state?: string; scopes?: string[]; allowSignup?: boolean; login?: string; redirectUri?: string; }): string; declare function handleGitHubCallback(code: string, options?: { state?: string; skipEmailVerification?: boolean; redirectUri?: string; includeToken?: boolean; fetchAllEmails?: boolean; }): Promise; /** * Revoke GitHub OAuth token */ declare function revokeGitHubToken(token: string, clientId?: string, clientSecret?: string): Promise; /** * Validate GitHub access token */ declare function validateGitHubToken(token: string): Promise; /** * Get GitHub user organizations */ declare function getGitHubUserOrganizations(token: string): Promise>; /** * Check if user is member of a specific organization */ declare function checkGitHubOrgMembership(token: string, org: string): Promise; /** * Generate a secure state parameter for CSRF protection */ declare function generateOAuthState(data?: any): string; /** * Parse OAuth state parameter */ declare function parseOAuthState(state: string): { token: string; data?: any; }; /** * Reset cached configuration (useful for testing) */ declare function resetGitHubOAuthConfig(): void; /** * Get rate limit status for authenticated user */ declare function getGitHubRateLimit(token: string): Promise<{ limit: number; remaining: number; reset: Date; }>; export { checkGitHubOrgMembership, generateOAuthState, getGitHubOAuthURL, getGitHubRateLimit, getGitHubUserOrganizations, handleGitHubCallback, parseOAuthState, resetGitHubOAuthConfig, revokeGitHubToken, validateGitHubToken };