package design import "context" type AssetUploadRequest struct { FileName string ContentType string Size int64 } type AssetUpload struct { Driver string Bucket string ObjectKey string UploadURL string PublicURL string Headers map[string]string ExpiresIn int64 } type AssetObjectRequest struct { FileName string ContentType string Data []byte } type AssetObject struct { Driver string Bucket string ObjectKey string PublicURL string } type AssetStorage interface { CreateUpload(ctx context.Context, req AssetUploadRequest) (AssetUpload, error) PutObject(ctx context.Context, req AssetObjectRequest) (AssetObject, error) DeleteObject(ctx context.Context, publicURL string) error }