export * from './networkingTypes';
import { IConfigurationService } from '../../../../../platform/configuration/common/configurationService';
import { IFetcherService } from '../../../../../platform/networking/common/fetcherService';
import { IExperimentationService } from '../../../../../platform/telemetry/common/nullExperimentationService';
import { FetchOptions, Response } from './networkingTypes';
export declare const ICompletionsFetcherService: import("../../../../../util/common/services").ServiceIdentifier<ICompletionsFetcherService>;
export interface ICompletionsFetcherService {
    readonly _serviceBrand: undefined;
    getImplementation(): ICompletionsFetcherService | Promise<ICompletionsFetcherService>;
    fetch(url: string, options: FetchOptions): Promise<Response>;
    disconnectAll(): Promise<unknown>;
}
export declare class CompletionsFetcher implements ICompletionsFetcherService {
    private readonly configurationService;
    private readonly fetcherService;
    private readonly experimentationService;
    _serviceBrand: undefined;
    constructor(configurationService: IConfigurationService, fetcherService: IFetcherService, experimentationService: IExperimentationService);
    getImplementation(): ICompletionsFetcherService | Promise<ICompletionsFetcherService>;
    fetch(url: string, options: FetchOptions): Promise<Response>;
    disconnectAll(): Promise<unknown>;
}
/**
 * Encapsulates all the functionality related to making GET/POST/DELETE requests using
 * different libraries (and in the future, different environments like web vs
 * node).
 */
export declare abstract class Fetcher {
    abstract readonly name: string;
    /**
     * Returns the real implementation, not a delegator.  Used by diagnostics to ensure the fetcher name and all
     * reachability checks are aligned.
     */
    getImplementation(): Fetcher | Promise<Fetcher>;
    abstract fetch(url: string, options: FetchOptions): Promise<Response>;
    abstract disconnectAll(): Promise<unknown>;
}
export declare function isInterruptedNetworkError(error: unknown): boolean;
//# sourceMappingURL=networking.d.ts.map