import { Event } from "../../../base/common/event.js";
import { URI } from "../../../base/common/uri.js";
import { ExtensionType, TargetPlatform } from "../../extensions/common/extensions.js";
import { Metadata } from "./extensionManagement.js";
import { ScanOptions, IScannedExtension } from "./extensionsScannerService.js";
export declare const IExtensionsScannerService: import("../../instantiation/common/instantiation.js").ServiceIdentifier<IExtensionsScannerService>;
export interface IExtensionsScannerService {
    readonly _serviceBrand: undefined;
    readonly systemExtensionsLocation: URI;
    readonly userExtensionsLocation: URI;
    readonly onDidChangeCache: Event<ExtensionType>;
    getTargetPlatform(): Promise<TargetPlatform>;
    scanAllExtensions(systemScanOptions: ScanOptions, userScanOptions: ScanOptions, includeExtensionsUnderDev: boolean): Promise<IScannedExtension[]>;
    scanSystemExtensions(scanOptions: ScanOptions): Promise<IScannedExtension[]>;
    scanUserExtensions(scanOptions: ScanOptions): Promise<IScannedExtension[]>;
    scanExtensionsUnderDevelopment(scanOptions: ScanOptions, existingExtensions: IScannedExtension[]): Promise<IScannedExtension[]>;
    scanExistingExtension(extensionLocation: URI, extensionType: ExtensionType, scanOptions: ScanOptions): Promise<IScannedExtension | null>;
    scanOneOrMultipleExtensions(extensionLocation: URI, extensionType: ExtensionType, scanOptions: ScanOptions): Promise<IScannedExtension[]>;
    scanMultipleExtensions(extensionLocations: URI[], extensionType: ExtensionType, scanOptions: ScanOptions): Promise<IScannedExtension[]>;
    scanMetadata(extensionLocation: URI): Promise<Metadata | undefined>;
    updateMetadata(extensionLocation: URI, metadata: Partial<Metadata>): Promise<void>;
    initializeDefaultProfileExtensions(): Promise<void>;
}
