*/ interface RecipeDirectory extends Directory { public function find(RecipeId $id): ?Recipe; public function findBySlug(string $slug): ?Recipe; /** * @param \Domain\Models\ValueObjects\Products\ProductCategory[] $productRanges * @param \Domain\Models\ValueObjects\Recipes\ConsumptionTime[] $consumptionTimes * @param \Domain\Models\ValueObjects\Recipes\Inspiration[] $inspirations * @param \Domain\Models\ValueObjects\Recipes\Season[] $seasons * @return LengthAwarePaginator */ public function getPaginatedRecipes( Pagination $pagination, array $productRanges = [], array $consumptionTimes = [], array $inspirations = [], array $seasons = [], string $search = '' ): LengthAwarePaginator; /** @return \Domain\Models\Entities\Recipe[] */ public function getRelatedRecipes(ProductId $productId, int $limit = 4): array; }