/**
 * Plugin Scope Configuration Types
 *
 * Defines types and utilities for project-scoped plugin installation.
 * Claude Code 2.1.3+ supports three installation scopes:
 * - user: ~/.claude/settings.json (personal, all projects)
 * - project: .claude/settings.json (team, shared via git)
 * - local: .claude/settings.local.json (personal, gitignored)
 *
 * @since 1.0.196
 * @increment 0179-project-scoped-plugin-installation
 */
/**
 * Plugin installation scope options
 *
 * Matches Claude Code CLI `--scope` flag values:
 * - 'user': Install for yourself across all projects (default)
 * - 'project': Install for all collaborators on this repository (shared via git)
 * - 'local': Install for yourself in this repository only (gitignored)
 */
export type PluginInstallationScope = 'user' | 'project' | 'local';
/**
 * Plugin scope configuration
 *
 * Controls default installation scope for different plugin types.
 * LSP plugins default to project scope (language-specific to project).
 * SpecWeave plugins default to user scope (useful across projects).
 */
export interface PluginScopeConfig {
    /**
     * Default scope for plugins not matched by other rules
     * @default 'user'
     */
    defaultScope?: PluginInstallationScope;
    /**
     * Scope for LSP plugins (vtsls, pyright, rust-analyzer)
     * LSP plugins should be project-scoped since they're language-specific
     * @default 'project'
     */
    lspScope?: PluginInstallationScope;
    /**
     * Scope for SpecWeave plugins (sw, sw-github, frontend, backend, etc.)
     * @default 'user'
     */
    specweaveScope?: PluginInstallationScope;
    /**
     * Per-plugin scope overrides
     * Keys are plugin names (without marketplace), values are scopes
     *
     * @example
     * {
     *   'context7': 'user',
     *   'playwright': 'user',
     *   'vtsls': 'project'
     * }
     */
    scopeOverrides?: Record<string, PluginInstallationScope>;
}
/**
 * Default plugin scope configuration
 *
 * - LSP plugins: project scope (language-specific, don't pollute global)
 * - SpecWeave/vskill plugins (sw, sw-github, etc.): user scope (framework tools, needed across all projects)
 * - Other plugins: user scope (default)
 */
export declare const DEFAULT_PLUGIN_SCOPE_CONFIG: PluginScopeConfig;
/**
 * Get the installation scope for a plugin
 *
 * Resolution order:
 * 1. scopeOverrides[pluginName] - explicit override for this plugin
 * 2. lspScope - if plugin is from LSP marketplace or known LSP plugin
 * 3. specweaveScope - if plugin is from SpecWeave marketplace
 * 4. defaultScope - fallback
 *
 * @param pluginName Plugin name (without @marketplace suffix)
 * @param marketplace Marketplace name (e.g., 'claude-code-lsps', 'specweave')
 * @param config Plugin scope configuration (uses defaults if undefined)
 * @returns The scope to use for installation
 */
export declare function getPluginScope(pluginName: string, marketplace: string, config?: PluginScopeConfig | null): PluginInstallationScope;
/**
 * Format scope flag for CLI command
 *
 * @param scope The installation scope
 * @returns CLI flag string (e.g., '--scope project') or empty string for user scope
 */
export declare function formatScopeFlag(scope: PluginInstallationScope): string;
/**
 * Get CLI args array for scope flag
 *
 * Returns ['--scope', 'project'] or [] for user scope.
 * Use this when building CLI arg arrays for execFileNoThrowSync/spawnSync.
 *
 * @param scope The installation scope
 * @returns CLI args array to spread into command args
 */
export declare function getScopeArgs(scope: PluginInstallationScope): string[];
//# sourceMappingURL=plugin-scope.d.ts.map