import type { PublicationOutcome } from '../bundle-emitter/publication-outcome.ts'; export type StageName = 'build' | 'eliminate' | 'publish' | 'resolveAndLink' | 'tryPublish'; export type IncludedFile = { readonly path: string; readonly reason: string; }; export type ExcludedFile = { readonly specifier: string; readonly reason: string; }; export type ImportRewrite = { readonly file: string; readonly fromSpecifier: string; readonly toSpecifier: string; readonly targetBundle: string; }; export type ArtifactStatus = 'changed' | 'generated' | 'unchanged'; export type ArtifactBadge = 'dead-code-elimination' | 'import-path-rewrite'; export type FileDecision = { readonly path: string; readonly decision: 'eliminated' | 'kept' | 'transformed'; readonly reason: string; readonly sourceBytes: number; readonly outputBytes?: number; }; export type DroppedSymbol = { readonly file: string; readonly symbolName: string; readonly kind: string; readonly reason: string; }; export type CrossBundleSeed = { readonly binding: string; readonly sourceBundle: string; readonly consumerBundle: string; readonly gatedBy: string; }; type EliminationBundleResult = { readonly packageName: string; readonly files: readonly FileDecision[]; readonly droppedSymbols: readonly DroppedSymbol[]; readonly seeds: readonly CrossBundleSeed[]; }; export type VersionTrigger = 'auto-patch-bump' | 'initial' | 'minimum' | 'pinned'; export type FieldProvenance = { readonly source: 'additionalAttributes' | 'derived' | 'mainPackageJson'; readonly note?: string; }; export type ArtifactEntry = { readonly path: string; readonly sizeBytes: number; readonly kind: 'additional' | 'manifest' | 'sbom' | 'source'; readonly sourcePath?: string | undefined; readonly status: ArtifactStatus; readonly badges: readonly ArtifactBadge[]; }; export type EliminatedSourceFile = { readonly path: string; readonly reason: string; readonly sourceBytes: number; readonly outputBytes?: number | undefined; }; export type RedactedConfig = Readonly>; type ProgressEventPayload = { readonly packageName: string; readonly version: string; }; type ScheduledEventPayload = { readonly packageName: string; }; type ResolvingEventPayload = { readonly packageName: string; }; type LinkingEventPayload = { readonly packageName: string; }; type ErrorPayload = { readonly packageName: string; readonly error: Error; }; type DonePayload = { readonly packageName: string; readonly version: string; readonly status: 'already-published' | 'initial-version' | 'new-version'; readonly publication: PublicationOutcome; }; type InputsResolvedPayload = { readonly packageName: string; readonly roots: Readonly>; readonly sourceFileCount: number; readonly siblingVersions: Readonly>; }; type EffectiveConfigResolvedPayload = { readonly packageName: string; readonly config: RedactedConfig; }; type ScanCompletedPayload = { readonly packageName: string; readonly included: readonly IncludedFile[]; readonly excluded: readonly ExcludedFile[]; }; type LinkingCompletedPayload = { readonly packageName: string; readonly rewrites: readonly ImportRewrite[]; }; type EliminationCompletedPayload = { readonly perBundle: readonly EliminationBundleResult[]; }; type VersionDeterminedPayload = { readonly packageName: string; readonly previousVersion: string | undefined; readonly chosenVersion: string; readonly trigger: VersionTrigger; }; type PackageJsonAssembledPayload = { readonly packageName: string; readonly fields: Readonly>; }; type ArtifactsCollectedPayload = { readonly packageName: string; readonly entries: readonly ArtifactEntry[]; }; type StageTimedPayload = { readonly packageName: string; readonly stage: StageName; readonly durationMs: number; }; type PackageFailedPayload = { readonly packageName: string; readonly stage: StageName; readonly message: string; }; type Events = { readonly scheduled: ScheduledEventPayload; readonly resolving: ResolvingEventPayload; readonly linking: LinkingEventPayload; readonly building: ProgressEventPayload; readonly rebuilding: ProgressEventPayload; readonly publishing: ProgressEventPayload; readonly done: DonePayload; readonly error: ErrorPayload; readonly inputsResolved: InputsResolvedPayload; readonly effectiveConfigResolved: EffectiveConfigResolvedPayload; readonly scanCompleted: ScanCompletedPayload; readonly linkingCompleted: LinkingCompletedPayload; readonly eliminationCompleted: EliminationCompletedPayload; readonly versionDetermined: VersionDeterminedPayload; readonly packageJsonAssembled: PackageJsonAssembledPayload; readonly artifactsCollected: ArtifactsCollectedPayload; readonly stageTimed: StageTimedPayload; readonly packageFailed: PackageFailedPayload; }; type Listener = (payload: TPayload) => void; type ProgressEventName = 'building' | 'done' | 'error' | 'linking' | 'publishing' | 'rebuilding' | 'resolving' | 'scheduled'; export type ProgressBroadcastProvider = { readonly emit: (eventName: TEventName, payload: Events[TEventName]) => void; readonly hasSubscribers: (eventName: keyof Events) => boolean; }; export type PublicProgressBroadcastConsumer = { readonly on: (eventName: TEventName, listener: Listener) => void; readonly off: (eventName: TEventName, listener: Listener) => void; }; export {}; //# sourceMappingURL=progress-broadcaster.d.ts.map