<?php

namespace Fotogenic_AI;

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Read-only contract exposed by one universal Studio workflow definition.
 */
interface Workflow_Definition_Interface {

	/**
	 * Return the canonical workflow identifier.
	 */
	public function get_id(): string;

	/**
	 * Return the server-owned source matrix.
	 *
	 * @return array<string, array>
	 */
	public function get_sources(): array;

	/**
	 * Return the strict recipe metadata.
	 */
	public function get_recipe_schema(): array;

	/**
	 * Return the per-item output cardinality.
	 */
	public function get_output_cardinality(): array;

	/**
	 * Determine whether this definition supports a source and scope pair.
	 */
	public function supports( string $source_type, string $scope ): bool;

	/**
	 * Return data that is safe to serialize into the browser manifest.
	 */
	public function get_browser_projection(): array;
}
