import type { L0Event, L0Result, L0State } from "../types/l0";
import type { L0EventStore, L0ReplayOptions, SerializedOptions } from "../types/events";
export declare function replay(options: L0ReplayOptions): Promise<L0ReplayResult>;
export interface ReplayCallbacks {
    onToken?: (token: string) => void;
    onViolation?: (violation: any) => void;
    onRetry?: (attempt: number, reason: string) => void;
    onEvent?: (event: L0Event) => void;
}
export interface L0ReplayResult extends L0Result {
    streamId: string;
    isReplay: true;
    originalOptions: SerializedOptions;
    setCallbacks(callbacks: ReplayCallbacks): void;
}
export declare function compareReplays(a: L0State, b: L0State): ReplayComparison;
export interface ReplayComparison {
    identical: boolean;
    differences: string[];
}
export declare function getStreamMetadata(eventStore: L0EventStore, streamId: string): Promise<StreamMetadata | null>;
export interface StreamMetadata {
    streamId: string;
    eventCount: number;
    tokenCount: number;
    startTs: number;
    endTs: number;
    completed: boolean;
    hasError: boolean;
    options: SerializedOptions;
}
//# sourceMappingURL=replay.d.ts.map