/**
 * @license
 * Copyright 2025 Vybestack LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import { MCPServerConfig, GeminiCLIExtension } from '@vybestack/llxprt-code-core';
import { SettingScope } from './settings.js';
export declare const EXTENSIONS_DIRECTORY_NAME = ".llxprt/extensions";
export declare const EXTENSIONS_CONFIG_FILENAME = "llxprt-extension.json";
export declare const INSTALL_METADATA_FILENAME = ".llxprt-extension-install.json";
export interface Extension {
    path: string;
    config: ExtensionConfig;
    contextFiles: string[];
    installMetadata?: ExtensionInstallMetadata | undefined;
}
export interface ExtensionConfig {
    name: string;
    version: string;
    mcpServers?: Record<string, MCPServerConfig>;
    contextFileName?: string | string[];
    excludeTools?: string[];
}
export interface ExtensionInstallMetadata {
    source: string;
    type: 'git' | 'local' | 'link';
}
export interface ExtensionUpdateInfo {
    name: string;
    originalVersion: string;
    updatedVersion: string;
}
export declare class ExtensionStorage {
    private readonly extensionName;
    constructor(extensionName: string);
    getExtensionDir(): string;
    getConfigPath(): string;
    static getSettingsPath(): string;
    static getUserExtensionsDir(): string;
    static createTmpDir(): Promise<string>;
}
export declare function getWorkspaceExtensions(workspaceDir: string): Extension[];
export declare function performWorkspaceExtensionMigration(extensions: Extension[]): Promise<string[]>;
export declare function loadExtensions(workspaceDir?: string): Extension[];
export declare function loadUserExtensions(): Extension[];
export declare function loadExtensionsFromDir(dir: string): Extension[];
export declare function loadExtension(extensionDir: string): Extension | null;
export declare function annotateActiveExtensions(extensions: Extension[], enabledExtensionNames: string[]): GeminiCLIExtension[];
export declare function installExtension(installMetadata: ExtensionInstallMetadata, cwd?: string): Promise<string>;
export declare function uninstallExtension(extensionName: string, _cwd?: string): Promise<void>;
export declare function toOutputString(extension: Extension): string;
export declare function updateExtensionByName(extensionName: string, cwd?: string): Promise<ExtensionUpdateInfo | undefined>;
export declare function updateExtension(extension: Extension, cwd?: string): Promise<ExtensionUpdateInfo>;
export declare function disableExtension(name: string, scope: SettingScope, cwd?: string): void;
export declare function enableExtension(name: string, scopes: SettingScope[]): void;
export declare function updateAllUpdatableExtensions(cwd?: string): Promise<ExtensionUpdateInfo[]>;
