/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

import { Disposable } from '@sussudio/base/common/lifecycle.mjs';
import { URI } from '@sussudio/base/common/uri.mjs';
import { IConfigurationService } from '../../configuration/common/configuration.mjs';
import { INativeEnvironmentService } from '../../environment/common/environment.mjs';
import { ExtensionVerificationStatus } from '../common/abstractExtensionManagementService.mjs';
import { IExtensionGalleryService, IGalleryExtension, InstallOperation } from '../common/extensionManagement.mjs';
import { IExtensionSignatureVerificationService } from './extensionSignatureVerificationService.mjs';
import { IFileService } from '../../files/common/files.mjs';
import { ILogService } from '../../log/common/log.mjs';
import { IProductService } from '../../product/common/productService.mjs';
export declare class ExtensionsDownloader extends Disposable {
	private readonly fileService;
	private readonly extensionGalleryService;
	private readonly configurationService;
	private readonly productService;
	private readonly extensionSignatureVerificationService;
	private readonly logService;
	private static readonly SignatureArchiveExtension;
	readonly extensionsDownloadDir: URI;
	private readonly cache;
	private readonly cleanUpPromise;
	constructor(
		environmentService: INativeEnvironmentService,
		fileService: IFileService,
		extensionGalleryService: IExtensionGalleryService,
		configurationService: IConfigurationService,
		productService: IProductService,
		extensionSignatureVerificationService: IExtensionSignatureVerificationService,
		logService: ILogService,
	);
	download(
		extension: IGalleryExtension,
		operation: InstallOperation,
	): Promise<{
		readonly location: URI;
		readonly verificationStatus: ExtensionVerificationStatus;
	}>;
	private shouldVerifySignature;
	private downloadSignatureArchive;
	private downloadFile;
	delete(location: URI): Promise<void>;
	private rename;
	private cleanUp;
	private getName;
}
