/**
 * Feature bracket parser for plugin specifiers.
 *
 * Supports syntax like:
 * - "my-plugin" -> base features (null)
 * - "my-plugin[search,web]" -> specific features
 * - "my-plugin[*]" -> all features
 * - "my-plugin[]" -> no optional features
 * - "@scope/plugin@1.2.3[feat]" -> scoped with version and features
 */
export interface ParsedPluginSpec {
    /** Package name (may include version specifier like @1.0.0) */
    packageName: string;
    /**
     * Feature selection:
     * - null: use defaults (base features on first install, preserve on reinstall)
     * - "*": all features
     * - string[]: specific features (empty array = no optional features)
     */
    features: string[] | null | "*";
}
/**
 * Parse plugin specifier with feature bracket syntax.
 *
 * @example
 * parsePluginSpec("my-plugin") // { packageName: "my-plugin", features: null }
 * parsePluginSpec("my-plugin[search,web]") // { packageName: "my-plugin", features: ["search", "web"] }
 * parsePluginSpec("my-plugin[*]") // { packageName: "my-plugin", features: "*" }
 * parsePluginSpec("my-plugin[]") // { packageName: "my-plugin", features: [] }
 * parsePluginSpec("@scope/pkg@1.2.3[feat]") // { packageName: "@scope/pkg@1.2.3", features: ["feat"] }
 */
export declare function parsePluginSpec(spec: string): ParsedPluginSpec;
/**
 * Format a parsed plugin spec back to string form.
 *
 * @example
 * formatPluginSpec({ packageName: "pkg", features: null }) // "pkg"
 * formatPluginSpec({ packageName: "pkg", features: "*" }) // "pkg[*]"
 * formatPluginSpec({ packageName: "pkg", features: [] }) // "pkg[]"
 * formatPluginSpec({ packageName: "pkg", features: ["a", "b"] }) // "pkg[a,b]"
 */
export declare function formatPluginSpec(spec: ParsedPluginSpec): string;
/**
 * Extract the base package name without version specifier.
 * Used for path lookups after npm install.
 *
 * @example
 * extractPackageName("lodash@4.17.21") // "lodash"
 * extractPackageName("@scope/pkg@1.0.0") // "@scope/pkg"
 * extractPackageName("@scope/pkg") // "@scope/pkg"
 */
export declare function extractPackageName(specifier: string): string;
