/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import { type Extension } from '../extension.js'; export interface ExtensionEnablementConfig { overrides: string[]; } export interface AllExtensionsEnablementConfig { [extensionName: string]: ExtensionEnablementConfig; } export declare class Override { baseRule: string; isDisable: boolean; includeSubdirs: boolean; constructor(baseRule: string, isDisable: boolean, includeSubdirs: boolean); static fromInput(inputRule: string, includeSubdirs: boolean): Override; static fromFileRule(fileRule: string): Override; conflictsWith(other: Override): boolean; isEqualTo(other: Override): boolean; asRegex(): RegExp; isChildOf(parent: Override): boolean; output(): string; matchesPath(path: string): boolean; } export declare class ExtensionEnablementManager { private configFilePath; private configDir; private enabledExtensionNamesOverride; constructor(configDir: string, enabledExtensionNames?: string[]); validateExtensionOverrides(extensions: Extension[]): void; /** * Determines if an extension is enabled based on its name and the current * path. The last matching rule in the overrides list wins. * * @param extensionName The name of the extension. * @param currentPath The absolute path of the current working directory. * @returns True if the extension is enabled, false otherwise. */ isEnabled(extensionName: string, currentPath: string): boolean; readConfig(): AllExtensionsEnablementConfig; writeConfig(config: AllExtensionsEnablementConfig): void; enable(extensionName: string, includeSubdirs: boolean, scopePath: string): void; disable(extensionName: string, includeSubdirs: boolean, scopePath: string): void; remove(extensionName: string): void; }