src/stream-report-types.tsTypeScript
@@ -0,0 +1,34 @@
1+
export interface ReportRequest {2+
reportId: string;3+
signal: AbortSignal;4+
}5+
6+
export interface ReportResponse {7+
writableEnded: boolean;8+
finished: Promise<"flushed" | "closed">;9+
writeHead(status: number, headers: Record<string, string>): void;10+
write(chunk: Uint8Array): boolean;11+
once(event: "drain", listener: () => void): void;12+
end(): void;13+
destroy(error?: Error): void;14+
on(event: "close", listener: () => void): void;15+
}16+
17+
export interface ReportSource {18+
open(19+
reportId: string,20+
options?: { signal: AbortSignal },21+
): Promise<AsyncIterable<Uint8Array>>;22+
}23+
24+
export interface UsageLedger {25+
recordCompleted(input: {26+
reportId: string;27+
deliveredBytes: number;28+
}): Promise<void>;29+
}30+
31+
export interface StreamDependencies {32+
reports: ReportSource;33+
usage: UsageLedger;34+
}