<?php

declare(strict_types=1);

namespace App\Framework\Cache;

interface CacheDriver
{
    /**
     * Get multiple cache items by keys
     */
    public function get(CacheKey ...$keys): CacheResult;

    /**
     * Set multiple cache items
     * Note: CacheDrivers expect values to be serialized strings when needed
     */
    public function set(CacheItem ...$items): bool;

    /**
     * Check if multiple keys exist
     * @return array<string, bool> Key string to existence mapping
     */
    public function has(CacheKey ...$keys): array;

    /**
     * Remove multiple keys from cache
     */
    public function forget(CacheKey ...$keys): bool;

    /**
     * Clear all cache data
     */
    public function clear(): bool;
}
