///
///
import { CancellationToken, UpdateFileInfo, UpdateInfo } from "builder-util-runtime";
import { OutgoingHttpHeaders, RequestOptions } from "http";
import { URL } from "url";
import { ElectronHttpExecutor } from "../electronHttpExecutor";
import { ResolvedUpdateFileInfo } from "../main";
export type ProviderPlatform = "darwin" | "linux" | "win32";
export interface ProviderRuntimeOptions {
isUseMultipleRangeRequest: boolean;
platform: ProviderPlatform;
executor: ElectronHttpExecutor;
}
export declare abstract class Provider {
private readonly runtimeOptions;
private requestHeaders;
protected readonly executor: ElectronHttpExecutor;
protected constructor(runtimeOptions: ProviderRuntimeOptions);
get isUseMultipleRangeRequest(): boolean;
private getChannelFilePrefix;
protected getDefaultChannelName(): string;
protected getCustomChannelName(channel: string): string;
get fileExtraDownloadHeaders(): OutgoingHttpHeaders | null;
setRequestHeaders(value: OutgoingHttpHeaders | null): void;
abstract getLatestVersion(): Promise;
abstract resolveFiles(updateInfo: T): Array;
/**
* Method to perform API request only to resolve update info, but not to download update.
*/
protected httpRequest(url: URL, headers?: OutgoingHttpHeaders | null, cancellationToken?: CancellationToken): Promise;
protected createRequestOptions(url: URL, headers?: OutgoingHttpHeaders | null): RequestOptions;
}
export declare function findFile(files: Array, extension: string, not?: Array): ResolvedUpdateFileInfo | null | undefined;
export declare function parseUpdateInfo(rawData: string | null, channelFile: string, channelFileUrl: URL): UpdateInfo;
export declare function getFileList(updateInfo: UpdateInfo): Array;
export declare function resolveFiles(updateInfo: UpdateInfo, baseUrl: URL, pathTransformer?: (p: string) => string): Array;