import type { GraphqlOptions, HttpOptions, HttpResponse, InternalHttpOptions } from './types';
import { Http } from '.';
export declare const setBaseUrl: (url: string) => void;
export interface GithubHttpOptions extends HttpOptions {
    paginate?: boolean | string;
    paginationField?: string;
    pageLimit?: number;
    repository?: string;
}
export declare type GithubGraphqlResponse<T = unknown> = {
    data: T;
    errors?: never;
} | {
    data?: never;
    errors: {
        type?: string;
        message: string;
    }[];
};
interface GraphqlPageCacheItem {
    pageLastResizedAt: string;
    pageSize: number;
}
export declare type GraphqlPageCache = Record<string, GraphqlPageCacheItem>;
export declare class GithubHttp extends Http<GithubHttpOptions> {
    constructor(hostType?: string, options?: GithubHttpOptions);
    protected request<T>(url: string | URL, options?: InternalHttpOptions & GithubHttpOptions, okToRetry?: boolean): Promise<HttpResponse<T>>;
    requestGraphql<T = unknown>(query: string, options?: GraphqlOptions): Promise<GithubGraphqlResponse<T> | null>;
    queryRepoField<T = Record<string, unknown>>(query: string, fieldName: string, options?: GraphqlOptions): Promise<T[]>;
}
export {};
