<?php

namespace Symfony\Contracts\Cache;

use Psr\Cache\InvalidArgumentException;

interface CacheInterface
{
    /**
     * @template T
     *
     * @param \Symfony\Contracts\Cache\CallbackInterface<T>|callable(\Symfony\Contracts\Cache\ItemInterface, bool): T $callback
     * @param array<mixed> $metadata
     * @return T
     *
     * @throws InvalidArgumentException
     */
    public function get(string $key, callable $callback, ?float $beta = null, ?array &$metadata = null);
}
