<?php

namespace NoahVet\Reef\Domain\Serialization\Service;

interface GetOneServiceInterface
{
    /**
     * @template T of object
     *
     * @param array<int|string, mixed>                           $normalizationAttributes
     * @param class-string<T>                                    $janeModelFQCN
     * @param callable(array<string, mixed>, ?string): void|null $postNormalize           receives ($item, $locale)
     *
     * @return array<string, mixed>
     */
    public function execute(
        object $object,
        array $normalizationAttributes,
        string $janeModelFQCN,
        ?string $locale = null,
        ?callable $postNormalize = null,
    ): array;
}
