import type { EmitTarget } from "./lib.js"; export type OutputContributorKind = string; export interface OutputContributorIdentity { target: string; kind: OutputContributorKind; provider: string; } export interface OutputRequest extends OutputContributorIdentity { source: "core" | "native-serialization" | "outputs"; } export interface OutputContributorContext { target: EmitTarget; request: OutputRequest; } export interface OutputContributor extends OutputContributorIdentity { validateOptions?: (target: EmitTarget, request: OutputRequest) => string[]; emitFiles?: (context: OutputContributorContext) => Promise | void; emitTests?: (context: OutputContributorContext) => Promise | void; runtimeDependencies?: readonly string[] | ((context: OutputContributorContext) => readonly string[]); } export declare function normalizeOutputRequests(target: EmitTarget): OutputRequest[]; export declare function validateOutputContributorTargets(targets: readonly EmitTarget[]): string[]; export declare function findContributor(identity: OutputContributorIdentity): OutputContributor | undefined; export declare function contributorsFor(target: string, kind: OutputContributorKind): OutputContributor[];