import type { Rule } from '../domain/Rule.js';
import { ContextFile } from '../domain/ContextFile.js';
import { Violation } from '../domain/Violation.js';
/**
 * Validates Claude Code plugin manifests: the plugin descriptor
 * (`.claude-plugin/plugin.json`) and the marketplace listing
 * (`marketplace.json`).
 *
 * @remarks
 * A malformed manifest silently breaks plugin discovery/installation, so this
 * rule checks the invariants Claude Code relies on: parseable JSON, a required
 * `name`, a SemVer `version`, well-formed resource path references, and the
 * shape of a marketplace's `plugins` array. It is a pure rule — it reasons only
 * over the already-read {@link ContextFile} content and performs no IO.
 */
export declare class PluginManifestRule implements Rule {
    readonly id = "plugin-manifest";
    readonly description = "Validates Claude Code plugin.json and marketplace.json manifests";
    appliesTo(file: ContextFile): boolean;
    lint(file: ContextFile): Violation[];
    private isMarketplace;
    private validatePlugin;
    private validateMarketplace;
    private validateMarketplaceEntry;
    private requireName;
    private validateVersion;
    private validateOptionalString;
    private validatePathField;
    private validatePathString;
}
//# sourceMappingURL=PluginManifestRule.d.ts.map