<?php

namespace NoahVet\Reef\Infrastructure\Serialization\Factory;

use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactoryInterface;
use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
use Symfony\Component\Serializer\Serializer;

interface JsonSerializerFactoryInterface
{
    /**
     * @param list<NormalizerInterface|DenormalizerInterface> $normalizers
     */
    public function createSerializer(
        array $normalizers,
        ?ClassMetadataFactoryInterface $classMetadataFactory = null,
        ?string $timezone = 'UTC',
    ): Serializer;
}
