import { z } from 'zod'; import { CommandConfig, PluginsConfig } from '../config'; import { Task } from '../generate'; import { pluginOptionsSchema } from '../pluginTypes'; import { ShadowdogEventEmitter } from '../events'; export type Listener = (shadowdogEventListener: ShadowdogEventEmitter, options: Options) => void; export type Command = (activeWatchers: Task) => Task; export type Middleware = (control: { files: string[]; environment: string[]; config: CommandConfig; options: Options; next: () => Promise; abort: () => void; changedFilePath?: string; eventEmitter: ShadowdogEventEmitter; }) => Promise; type PluginsMap = { 'shadowdog-rake': { command: Command; }; 'shadowdog-local-cache': { middleware: Middleware, { name: 'shadowdog-local-cache'; }>['options']>; }; 'shadowdog-remote-aws-s3-cache': { middleware: Middleware, { name: 'shadowdog-remote-aws-s3-cache'; }>['options']>; }; 'shadowdog-tag': { command: Command; }; 'shadowdog-tree': { command: Command; }; 'shadowdog-socket': { listener: Listener, { name: 'shadowdog-socket'; }>['options']>; }; 'shadowdog-git': { middleware: Middleware; }; 'shadowdog-lock': { listener: Listener, { name: 'shadowdog-lock'; }>['options']>; }; 'shadowdog-mcp': { listener: Listener, { name: 'shadowdog-mcp'; }>['options']>; }; }; declare const PLUGINS_MAP: { readonly 'shadowdog-rake': { command: Command; }; readonly 'shadowdog-local-cache': { middleware: Middleware<{ path: string; read: boolean; write: boolean; }>; }; readonly 'shadowdog-remote-aws-s3-cache': { middleware: Middleware<{ path: string; read: boolean; write: boolean; bucketName: string; }>; }; readonly 'shadowdog-tag': { command: Command; }; readonly 'shadowdog-tree': { command: Command; }; readonly 'shadowdog-socket': { listener: Listener<{ path: string; }>; }; readonly 'shadowdog-git': { middleware: Middleware; }; readonly 'shadowdog-lock': { listener: Listener<{ path: string; }>; }; readonly 'shadowdog-mcp': { listener: Listener<{}>; }; }; export declare const filterMiddlewarePlugins: (config: PluginsConfig) => { name: keyof PluginsMap; fn: Extract; }>; options: z.infer["options"]; }[]; export declare const filterCommandPlugins: (pluginsConfig: PluginsConfig) => { name: keyof PluginsMap; fn: { command: Command; }; options: z.infer["options"]; }[]; export declare const filterEventListenerPlugins: (pluginsConfig: PluginsConfig) => { name: keyof PluginsMap; fn: { listener: Listener["options"]>; }; options: z.infer["options"]; }[]; export default PLUGINS_MAP;