import type { GithubHttp } from '../../http/github';
import type { GithubDatasourceItem, GithubGraphqlDatasourceAdapter, GithubPackageConfig } from './types';
export declare class GithubGraphqlDatasourceFetcher<GraphqlItem, ResultItem extends GithubDatasourceItem> {
    private http;
    private datasourceAdapter;
    static prepareQuery(payloadQuery: string): string;
    static query<T, U extends GithubDatasourceItem>(config: GithubPackageConfig, http: GithubHttp, adapter: GithubGraphqlDatasourceAdapter<T, U>): Promise<U[]>;
    private readonly baseUrl;
    private readonly repoOwner;
    private readonly repoName;
    private itemsPerQuery;
    private queryCount;
    private cursor;
    private isCacheable;
    constructor(packageConfig: GithubPackageConfig, http: GithubHttp, datasourceAdapter: GithubGraphqlDatasourceAdapter<GraphqlItem, ResultItem>);
    private getFingerprint;
    private getRawQueryOptions;
    private doRawQuery;
    private shrinkPageSize;
    private hasReachedQueryLimit;
    private doShrinkableQuery;
    private doPaginatedQuery;
    /**
     * This method intentionally was made not async, though it returns `Promise`.
     * This method doesn't make pages to be fetched concurrently.
     * Instead, it ensures that same package release is not fetched twice.
     */
    private doConcurrentQuery;
    getItems(): Promise<ResultItem[]>;
}
