/**
 * Plugin manifest schema — mirrors `jait.plugin.json`.
 *
 * Every extension must ship a manifest at the root of its package.
 * The loader resolves the manifest first and only imports the entry
 * module when the plugin is enabled.
 */
import type { ToolParametersSchema } from "../tools/contracts.js";
/** Activation event that triggers lazy plugin load. */
export type PluginActivationEvent = "*" | `onTool:${string}` | `onProvider:${string}` | `onCommand:${string}`;
/** Manifest tool declaration (what goes in the JSON file). */
export interface ManifestToolDeclaration {
    name: string;
    description: string;
    parameters?: ToolParametersSchema;
    tier?: "core" | "standard" | "external";
    category?: string;
    risk?: "low" | "medium" | "high";
    consent?: "none" | "once" | "always" | "dangerous";
}
/** Manifest provider declaration. */
export interface ManifestProviderDeclaration {
    id: string;
    displayName: string;
    description?: string;
}
/** The jait.plugin.json file schema. */
export interface PluginManifest {
    /** Unique plugin identifier (npm-style scope ok: `@org/name`). */
    id: string;
    /** Human-readable display name. */
    displayName: string;
    /** Semver version string. */
    version: string;
    /** Short description shown in the extension store. */
    description?: string;
    /** Author name or org. */
    author?: string;
    /** SPDX license id. */
    license?: string;
    /** Relative path to the ES module entry (default: `index.js`). */
    main?: string;
    /** Minimum gateway version required (semver range). */
    engines?: {
        gateway?: string;
    };
    /** Activation events — when should this plugin be loaded? */
    activationEvents?: PluginActivationEvent[];
    /** Tools declared by this plugin (statically listed in manifest). */
    contributes?: {
        tools?: ManifestToolDeclaration[];
        providers?: ManifestProviderDeclaration[];
    };
    /** JSON-schema for user-facing configuration. */
    configSchema?: ToolParametersSchema;
    /** Categories for the extension store. */
    categories?: string[];
    /** Keywords for search. */
    keywords?: string[];
    /** URL to a square icon (relative path or https). */
    icon?: string;
    /** Homepage / docs URL. */
    homepage?: string;
    /** Repository URL. */
    repository?: string;
}
/** Minimal validation — returns error string or null. */
export declare function validateManifest(raw: unknown): string | null;
//# sourceMappingURL=manifest.d.ts.map