<?php

declare(strict_types=1);

namespace App\Framework\EventSourcing\Replay;

use App\Framework\EventSourcing\AggregateEnvelope;

/**
 * Replay Strategy Interface
 *
 * Defines which events to replay based on different criteria
 */
interface ReplayStrategy
{
    /**
     * Select events to replay from full event stream
     *
     * @param array<AggregateEnvelope> $events
     * @return array<AggregateEnvelope>
     */
    public function selectEvents(array $events): array;

    /**
     * Get strategy description
     */
    public function getDescription(): string;
}
