import type { AnyPlugin } from "./plugin";
export type ExecutorPluginsFactory<TDeps extends object = object, TPlugins extends readonly AnyPlugin[] = readonly AnyPlugin[]> = (deps?: TDeps) => TPlugins;
export interface ExecutorCliConfig<TDeps extends object = object, TPlugins extends readonly AnyPlugin[] = readonly AnyPlugin[]> {
    readonly plugins: ExecutorPluginsFactory<TDeps, TPlugins>;
}
/**
 * Declare an executor config. Host runtimes import this file to instantiate
 * plugins, and static tooling can read the same plugin metadata without
 * constructing runtime credentials.
 *
 * The `const TPlugins` modifier preserves the tuple-literal inference
 * from the factory's return so per-plugin extension typing flows through
 * (`ReturnType<typeof config.plugins>` keeps `[OpenApi, Mcp, ...]`).
 *
 * `TDeps` is inferred from the factory's parameter — apps annotate
 * the destructure (e.g., `({ configFile }: { configFile?: ConfigFileSink })`)
 * directly. No global module augmentation needed.
 */
export declare const defineExecutorConfig: <TDeps extends object, const TPlugins extends readonly AnyPlugin[]>(config: ExecutorCliConfig<TDeps, TPlugins>) => ExecutorCliConfig<TDeps, TPlugins>;
//# sourceMappingURL=config.d.ts.map