<?php

namespace NoahVet\Reef\Domain\Serialization\Jane;

interface JaneSerializerFacadeInterface
{
    /**
     * @template T of object
     *
     * @param class-string<T> $type
     *
     * @return T
     */
    public function deserialize(string $data, string $type): object;

    /**
     * @template T of object
     *
     * @param array<string, mixed> $data
     * @param class-string<T>      $type
     *
     * @return T
     */
    public function denormalize(array $data, string $type): object;

    /**
     * @return array<string, mixed>
     */
    public function normalize(object $object): array;
}
