<?php

declare(strict_types=1);

namespace App\Framework\Analytics\Storage;

/**
 * Interface für Analytics-Datenspeicherung
 */
interface AnalyticsStorage
{
    /**
     * Speichert aggregierte Analytics-Daten
     */
    public function storeAggregated(string $period, array $data): void;

    /**
     * Speichert Rohdaten (mit Sampling)
     */
    public function storeRawData(array $data, float $samplingRate = 0.1): void;

    /**
     * Ruft aggregierte Daten ab
     */
    public function getAggregated(string $startDate, string $endDate, string $period = 'hour'): array;

    /**
     * Ruft Top-Listen ab (z.B. meistbesuchte Seiten)
     */
    public function getTopList(string $metric, string $startDate, string $endDate, int $limit = 10): array;

    /**
     * Ruft Zeitreihen-Daten ab
     */
    public function getTimeSeries(string $metric, string $startDate, string $endDate, string $interval = 'hour'): array;

    /**
     * Bereinigt alte Daten
     */
    public function cleanup(int $retentionDays): int;
}
