package port import ( "context" "github.com/orchard9/rdev/internal/domain" ) // StorageProvisioner manages object storage buckets for projects. type StorageProvisioner interface { // CreateProjectBucket creates a GCS bucket for the project with isolated permissions. // Returns credentials including bucket name, service account JSON, and public URL. CreateProjectBucket(ctx context.Context, projectID string) (*domain.StorageCredentials, error) // DeleteProjectBucket removes the bucket and all objects. // If force is true, deletes all objects first; otherwise fails if bucket not empty. DeleteProjectBucket(ctx context.Context, projectID string, force bool) error // GetProjectBucket checks if bucket exists and returns credentials (without secrets). GetProjectBucket(ctx context.Context, projectID string) (*domain.StorageCredentials, error) // TestConnection verifies GCS client can connect and has necessary permissions. TestConnection(ctx context.Context) error }