package storage import ( "context" "time" ) // ObjectStore is a remote object storage boundary used by prepare, restore, and publish work. // // Key invariant: // callers pass full bucket-relative object keys. Backend implementations do not // infer Narratio session semantics and do not prepend root prefixes. type ObjectStore interface { List(ctx context.Context, prefix string) ([]ObjectInfo, error) Download(ctx context.Context, key, localPath string) error Upload(ctx context.Context, localPath, key string, opts UploadOptions) (ObjectInfo, error) Exists(ctx context.Context, key string) (bool, error) } // ObjectInfo describes one object in remote storage. type ObjectInfo struct { Key string Size int64 ETag string LastModified *time.Time } // UploadOptions configures optional object upload metadata. type UploadOptions struct { Metadata map[string]string ContentType string }