// Package interfaces defines the contracts for worker components
package interfaces

import (
	"github.com/jfraeys/fetch_ml/internal/manifest"
	"github.com/jfraeys/fetch_ml/internal/queue"
)

// ManifestWriter defines the contract for writing run manifests
type ManifestWriter interface {
	// Upsert updates or creates a manifest in the given directory
	// The mutate function is called with the current or new manifest
	Upsert(dir string, task *queue.Task, mutate func(*manifest.RunManifest))

	// BuildInitial creates a new initial manifest for a task
	BuildInitial(task *queue.Task, podmanImage string) *manifest.RunManifest
}
