export interface GitHubFetchOptions {
    token?: string | undefined;
    headers?: Record<string, string> | undefined;
}
export interface GitHubRateLimitError extends Error {
    status: number;
    resetTime?: Date | undefined;
}
/**
 * Get GitHub token from environment variables.
 */
export declare function getGitHubToken(): string | undefined;
/**
 * Fetch data from GitHub API with rate limit handling.
 */
export declare function fetchGitHub<T = any>(url: string, options?: GitHubFetchOptions | undefined): Promise<T>;
export interface GitHubRef {
    object: {
        sha: string;
        type: string;
        url: string;
    };
    ref: string;
    url: string;
}
export interface GitHubTag {
    message: string;
    object: {
        sha: string;
        type: string;
        url: string;
    };
    sha: string;
    tag: string;
    tagger?: {
        date: string;
        email: string;
        name: string;
    };
    url: string;
}
export interface GitHubCommit {
    sha: string;
    url: string;
    commit: {
        message: string;
        author: {
            date: string;
            email: string;
            name: string;
        };
    };
}
export interface ResolveRefOptions {
    cache?: boolean | undefined;
    cachePath?: string | undefined;
    token?: string | undefined;
    ttl?: number | undefined;
}
/**
 * Resolve a git ref (tag, branch, or commit SHA) to its full commit SHA.
 * Results are cached in-memory and on disk (with TTL) to minimize API calls.
 */
export declare function resolveRefToSha(owner: string, repo: string, ref: string, options?: ResolveRefOptions | undefined): Promise<string>;
/**
 * Clear the ref resolution cache.
 */
export declare function clearRefCache(): void;
/**
 * Get the current size of the ref cache.
 */
export declare function getRefCacheSize(): number;
