export type BuildStatusValue = "pending" | "running" | "success" | "failed" | "cancelled";
export interface BuildStatusEvent {
    status: BuildStatusValue;
    startedAt?: string | Date;
    finishedAt?: string | Date;
    durationMs?: number;
    commitSha?: string;
    commitMessage?: string;
    triggeredBy?: string;
    logs?: string[];
}
interface MessageEventLike {
    data?: unknown;
}
interface EventListenerTarget {
    addEventListener: (type: string, listener: (e: MessageEventLike) => void) => void;
    removeEventListener: (type: string, listener: (e: MessageEventLike) => void) => void;
}
export interface BuildStatusProps {
    /** Initial status to show before the stream emits. */
    initial?: BuildStatusEvent;
    /** Optional EventSource to subscribe to (`message` events). */
    eventStream?: EventListenerTarget;
    /** Optional WebSocket to subscribe to (`message` events). */
    socket?: EventListenerTarget;
    /** Cleanup callback fired on unmount. The composition does NOT close
     *  the underlying stream itself — caller owns the lifecycle. */
    onUnsubscribe?: () => void;
    /** When true, render `logs[]` as a collapsible monospace block. */
    showLogs?: boolean;
    label?: string;
    name?: string | null;
    classList?: string[] | string;
}
declare function applyEvent(payload: unknown): void;
declare const _default: import('vue').DefineComponent<BuildStatusProps, {
    applyEvent: typeof applyEvent;
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<BuildStatusProps> & Readonly<{}>, {
    label: string;
    showLogs: boolean;
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
export default _default;
//# sourceMappingURL=BuildStatus.vue.d.ts.map