export type PluginPermission = 'tools:register' | 'workers:register' | 'analyzers:register' | 'templates:register' | 'storage:read' | 'storage:write';
export type PluginState = 'installed' | 'active' | 'inactive' | 'error';
export interface PluginManifest {
    readonly id: string;
    readonly name: string;
    readonly version: string;
    readonly author: string;
    readonly description: string;
    readonly license: string;
    readonly planuVersion: string;
    readonly entryPoint: string;
    readonly permissions: readonly PluginPermission[];
    readonly i18n?: Readonly<Record<string, Record<string, string>>>;
}
export interface PluginRegistration {
    readonly manifest: PluginManifest;
    state: PluginState;
    readonly loadedAt: string;
    error?: string;
}
export interface PluginHooks {
    readonly onInstall?: () => Promise<void>;
    readonly onActivate?: () => Promise<void>;
    readonly onDeactivate?: () => Promise<void>;
    readonly onUninstall?: () => Promise<void>;
}
export interface PluginToolDefinition {
    readonly name: string;
    readonly description: string;
    readonly inputSchema: Record<string, unknown>;
    readonly handler: (input: unknown) => Promise<unknown>;
}
export type PluginWorkerTrigger = 'cron' | 'event' | 'manual';
export interface PluginWorkerDefinition {
    readonly name: string;
    readonly trigger: PluginWorkerTrigger;
    readonly interval?: number;
    readonly eventName?: string;
    readonly handler: () => Promise<void>;
}
export interface PluginAnalysisResult {
    readonly file: string;
    readonly line?: number;
    readonly severity: 'info' | 'warning' | 'error';
    readonly message: string;
    readonly rule: string;
}
export interface PluginAnalyzerDefinition {
    readonly name: string;
    readonly filePatterns: readonly string[];
    readonly analyze: (files: string[]) => Promise<PluginAnalysisResult[]>;
}
export interface PluginTemplateDefinition {
    readonly name: string;
    readonly domain: string;
    readonly specTemplate: string;
    readonly technicalTemplate: string;
}
export interface PluginStorageAPI {
    readonly read: (key: string) => Promise<unknown>;
    readonly write: (key: string, value: unknown) => Promise<void>;
    readonly list: () => Promise<string[]>;
}
export interface PluginLogger {
    readonly info: (message: string) => void;
    readonly warn: (message: string) => void;
    readonly error: (message: string) => void;
}
export interface PluginContext {
    readonly pluginId: string;
    readonly permissions: readonly PluginPermission[];
    readonly storage: PluginStorageAPI;
    readonly logger: PluginLogger;
}
export interface PluginValidationResult {
    readonly valid: boolean;
    readonly errors: string[];
    readonly warnings: string[];
}
export interface MarketplaceEntry {
    readonly id: string;
    readonly name: string;
    readonly description: string;
    readonly author: string;
    readonly repository: string;
    readonly version: string;
    readonly downloads: number;
    readonly rating: number;
    readonly tags: readonly string[];
}
export type PluginAction = 'list' | 'install' | 'activate' | 'deactivate' | 'uninstall' | 'info';
export interface ManagePluginsInput {
    readonly action: PluginAction;
    readonly pluginId?: string;
    readonly pluginPath?: string;
    readonly projectPath?: string;
}
export type PluginExtensionType = 'tools' | 'workers' | 'analyzers' | 'templates';
export interface ScaffoldPluginInput {
    readonly name: string;
    readonly description: string;
    readonly extensions: readonly PluginExtensionType[];
    readonly outputDir?: string;
}
export interface PluginListItem {
    readonly id: string;
    readonly name: string;
    readonly version: string;
    readonly state: PluginState;
    readonly toolCount: number;
    readonly workerCount: number;
    readonly analyzerCount: number;
    readonly templateCount: number;
}
export interface PluginModule {
    readonly hooks?: PluginHooks;
    readonly tools?: readonly PluginToolDefinition[];
    readonly workers?: readonly PluginWorkerDefinition[];
    readonly analyzers?: readonly PluginAnalyzerDefinition[];
    readonly templates?: readonly PluginTemplateDefinition[];
}
export interface PluginStateFile {
    plugins: PluginRegistration[];
    readonly lastUpdated: string;
}
export interface ParsedSemver {
    readonly major: number;
    readonly minor: number;
    readonly patch: number;
}
export interface ActivePluginWorker {
    readonly pluginId: string;
    readonly definition: PluginWorkerDefinition;
    intervalHandle?: ReturnType<typeof setInterval>;
}
export interface RegisteredPluginAnalyzer {
    readonly pluginId: string;
    readonly definition: PluginAnalyzerDefinition;
}
export interface RegisteredPluginTemplate {
    readonly pluginId: string;
    readonly definition: PluginTemplateDefinition;
}
//# sourceMappingURL=plugins.d.ts.map