// Package storage defines the Provider interface for object storage backends. package storage import ( "context" "io" ) // Provider abstracts object storage operations. type Provider interface { // Put writes data to storage under the given key. Put(ctx context.Context, key string, reader io.Reader) error // Open returns a reader for the given storage key. Open(ctx context.Context, key string) (io.ReadCloser, error) // Delete removes the object at key. Delete(ctx context.Context, key string) error // AccessPath returns a consumer-accessible reference for a storage key. // The format depends on the backend (e.g. container path, signed URL). AccessPath(key string) string } // ContainerFileOpener is an optional interface that providers can implement // to open arbitrary files from a bot's container data directory. type ContainerFileOpener interface { OpenContainerFile(botID, containerPath string) (io.ReadCloser, error) } // PrefixLister is an optional interface for providers that can list keys // sharing a common prefix (e.g. directory listing on a filesystem backend). type PrefixLister interface { ListPrefix(ctx context.Context, prefix string) ([]string, error) }