export interface PluginConfiguration {}
export type IssueSeverity = "error" | "warning" | "note";
export interface PluginIssue {
  pluginName: string;
  message: string;
  severity: IssueSeverity;
}
export declare class PluginIssueError extends Error {
  readonly issue: PluginIssue;
  readonly pluginName?: string | undefined;
  constructor(issue: PluginIssue, pluginName?: string | undefined);
}
export declare class PluginResult {
  notes: string[];
  errors: PluginIssue[];
  warnings: PluginIssue[];
  constructor(err?: PluginIssue);
}
export interface PluginRunResult<
  TData extends Record<string, unknown> = Record<string, unknown>,
> {
  data: TData;
  notes: string[];
  errors: PluginIssue[];
  warnings: PluginIssue[];
}
export interface Plugin<
  TConfig extends PluginConfiguration = PluginConfiguration,
  TData extends Record<string, unknown> = Record<string, unknown>,
> {
  (config: TConfig, results: PluginRunResult<TData>): Promise<PluginResult>;
}
export declare function runPlugins<
  T extends PluginConfiguration = PluginConfiguration,
  TData extends Record<string, unknown> = Record<string, unknown>,
>(
  tasksToRun: Plugin<T, TData>[],
  config: T,
  options?: {
    throwOnException: boolean;
  }
): Promise<PluginRunResult<TData>>;
//# sourceMappingURL=runner.d.ts.map
