<?php

namespace Drupal\Core\Field;

/**
 * @template T of FieldItemListInterface
 */
interface FormatterInterface extends PluginSettingsInterface {

  /**
   * @param array<T> $entities_items
   */
  public function prepareView(array $entities_items): void;

  /**
   * @param T $items
   * @param string|null $langcode
   *
   * @return array<int|string, mixed>
   */
  public function view(FieldItemListInterface $items, $langcode = NULL);

  /**
   * @param T $items
   * @param string $langcode
   *
   * @return array<int, array<int|string, mixed>>
   */
  public function viewElements(FieldItemListInterface $items, $langcode);

}
