package port

import (
	"context"

	"github.com/orchard9/rdev/internal/domain"
)

// BlueprintRepository defines operations for blueprint persistence.
type BlueprintRepository interface {
	// CreateBlueprint creates a new blueprint.
	CreateBlueprint(ctx context.Context, blueprint *domain.Blueprint) error

	// GetBlueprint retrieves a blueprint by ID.
	GetBlueprint(ctx context.Context, id domain.BlueprintID) (*domain.Blueprint, error)

	// ListBlueprints returns all blueprints for a project.
	ListBlueprints(ctx context.Context, projectID string) ([]*domain.Blueprint, error)

	// UpdateBlueprint updates a blueprint's metadata and spec.
	UpdateBlueprint(ctx context.Context, blueprint *domain.Blueprint) error

	// DeleteBlueprint deletes a blueprint.
	DeleteBlueprint(ctx context.Context, id domain.BlueprintID) error
}
