<?php

namespace Doctrine\Persistence;

interface ObjectManager
{

	/**
	 * @template T of object
	 * @phpstan-param class-string<T> $className
	 * @phpstan-param mixed  $id
	 * @phpstan-return T|null
	 */
	public function find($className, $id);

	/**
	 * @template T of object
	 * @phpstan-param T $object
	 * @phpstan-return T
	 */
	public function merge($object);

	/**
	 * @template T of object
	 * @phpstan-param class-string<T> $className
	 * @phpstan-return ObjectRepository<T>
	 */
	public function getRepository($className);

}
