/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import { type Settings, SettingScope } from './settings.js'; import { type ExtensionConfig } from './extension.js'; import { type ExtensionInstallMetadata, type GeminiCLIExtension } from 'sixth-cli-core'; import { type ExtensionSetting } from './extensions/extensionSettings.js'; import type { ExtensionEvents, ExtensionLoader } from 'sixth-cli-core/src/utils/extensionLoader.js'; import { EventEmitter } from 'node:events'; interface ExtensionManagerParams { enabledExtensionOverrides?: string[]; settings: Settings; requestConsent: (consent: string) => Promise; requestSetting: ((setting: ExtensionSetting) => Promise) | null; workspaceDir: string; } /** * Actual implementation of an ExtensionLoader. * * You must call `loadExtensions` prior to calling other methods on this class. */ export declare class ExtensionManager implements ExtensionLoader { private extensionEnablementManager; private settings; private requestConsent; private requestSetting; private telemetryConfig; private workspaceDir; private loadedExtensions; private eventEmitter; constructor(options: ExtensionManagerParams); setRequestConsent(requestConsent: (consent: string) => Promise): void; setRequestSetting(requestSetting?: (setting: ExtensionSetting) => Promise): void; getExtensions(): GeminiCLIExtension[]; extensionEvents(): EventEmitter; installOrUpdateExtension(installMetadata: ExtensionInstallMetadata, previousExtensionConfig?: ExtensionConfig): Promise; uninstallExtension(extensionIdentifier: string, isUpdate: boolean): Promise; loadExtensions(): Promise; private loadExtension; private unloadExtension; loadExtensionConfig(extensionDir: string): ExtensionConfig; toOutputString(extension: GeminiCLIExtension): string; disableExtension(name: string, scope: SettingScope): Promise; enableExtension(name: string, scope: SettingScope): Promise; } export declare function copyExtension(source: string, destination: string): Promise; export declare function getExtensionId(config: ExtensionConfig, installMetadata?: ExtensionInstallMetadata): string; export declare function hashValue(value: string): string; export {};