Review multipart upload completion

src/multipart-types.tsTypeScript
@@ -0,0 +1,30 @@
1+export interface UploadedPart {
2+ partNumber: number;
3+ eTag: string;
4+}
5+
6+export interface UploadSession {
7+ uploadId: string;
8+ accountId: string;
9+ objectKey: string;
10+ status: "uploading" | "completed" | "aborted";
11+ uploadedParts: readonly UploadedPart[];
12+}
13+
14+export interface CompletedObject {
15+ objectKey: string;
16+ versionId: string;
17+}
18+
19+export interface UploadRepository {
20+ find(uploadId: string): Promise<UploadSession | null>;
21+ markCompleted(uploadId: string, result: CompletedObject): Promise<void>;
22+}
23+
24+export interface MultipartObjectStore {
25+ complete(
26+ uploadId: string,
27+ objectKey: string,
28+ parts: readonly UploadedPart[],
29+ ): Promise<CompletedObject>;
30+}