/**
 * GitHub API Client for Repository Fetching
 *
 * Fetches repository metadata from GitHub API with:
 * - Pagination handling
 * - Rate limiting
 * - Authentication
 * - Error handling
 * - Fallback to local git parsing
 */
import { RepositoryMetadata } from './types.js';
/**
 * GitHub API Client configuration
 */
export interface GitHubAPIConfig {
    /** GitHub personal access token */
    token?: string;
    /** Base API URL */
    baseUrl?: string;
    /** Items per page */
    perPage?: number;
    /** Max pages to fetch */
    maxPages?: number;
}
/**
 * GitHub API Client
 */
export declare class GitHubAPIClient {
    private config;
    constructor(config?: GitHubAPIConfig);
    /**
     * Create request headers with optional auth token
     */
    private getHeaders;
    /**
     * Map GitHub API response to RepositoryMetadata
     */
    private mapRepoData;
    /**
     * Fetch paginated repositories from a URL pattern
     */
    private fetchPaginatedRepos;
    /**
     * Fetch all repositories for a user or organization
     *
     * @param owner - GitHub username or organization name
     * @returns Array of repository metadata
     */
    fetchAllRepos(owner: string): Promise<RepositoryMetadata[]>;
    /**
     * Fetch repositories for an organization
     */
    private fetchOrgRepos;
    /**
     * Check rate limit status
     */
    getRateLimit(): Promise<{
        limit: number;
        remaining: number;
        reset: Date;
    }>;
}
//# sourceMappingURL=GitHubAPIClient.d.ts.map