<?php

declare(strict_types=1);

namespace App\Framework\SlidingWindow\Aggregator;

use App\Framework\SlidingWindow\WindowEntry;

/**
 * Interface for aggregating sliding window data
 *
 * @template TResult
 */
interface SlidingWindowAggregator
{
    /**
     * Aggregate window entries into summary data
     *
     * @return TResult
     */
    public function aggregate(WindowEntry ...$entries): mixed;

    /**
     * Get aggregator identifier
     */
    public function getIdentifier(): string;
}
