public function rules(): array 	{ 		$current_domain = auth()->user()?->user->getActiveDomain(); 		$main_language = $current_domain?->main_language ?? Language::getDefaultLanguage();  		$validation_rule_builder = [];  		foreach (Language::cases() as $language) { 			$lang = $language->value; 			$required = ($lang === $main_language);  			$validation_rule_builder['title_' . $lang] = [$required ? 'required' : 'nullable', 'string', 'max:100', new OpenAIModeration]; 			$validation_rule_builder['body_' . $lang] = [$required ? 'required' : 'nullable', 'string', new OpenAIModeration]; 			$validation_rule_builder['serving_description_' . $lang] = [$required ? 'required' : 'nullable', 'string', new OpenAIModeration]; 			$validation_rule_builder['nutritional_values_' . $lang] = [$required ? 'required' : 'nullable', 'string', new OpenAIModeration]; 		}  		return MediaStorage::mergeValidationRules(array_merge($validation_rule_builder, [ 			'domain_id' => ['required', 'uuid', 'exists:' . Domain::class . ',id'], 			'category_id' => ['required', 'uuid', 'exists:' . Category::class . ',id'], 			'filters' => ['array'], 			'price' => ['required', 'numeric', 'min:0'], 			'discounted_price' => ['nullable', 'numeric', 'min:0'], 			'year' => ['required', 'integer', 'min:2000', 'max:' . formatLocalTimestamp(null, 'Y')], 			'weight' => ['required', 'integer', 'min:1', 'max:10000'], 			'number_of_items' => ['nullable', 'integer', 'min:1'], 			'code' => ['nullable', 'string', 'max:20'], 			'featured' => ['boolean'], 			'active' => ['boolean'], 			'available_in_store' => ['boolean'], 			'recipes' => ['array'], 			'recipes.*' => ['required', 'uuid', 'distinct', 'exists:' . Recipe::class . ',id'], 			'images' => ['array'], 			'images.*' => ['required', 'image', 'max:' . setting('max_upload_size') / 1024, new SafeWebp], 			'emblems' => ['array'], 			'emblems.*' => ['required', 'uuid', 'distinct', 'exists:' . Emblem::class . ',id'], 			'discounted_price_valid_to' => ['nullable', 'date'], 		])); 	}