<?php

namespace App\Reports;

interface ReportInterface
{
    /**
     * Rapor adını döndür
     */
    public function getName(): string;

    /**
     * Rapor açıklamasını döndür
     */
    public function getDescription(): string;

    /**
     * Rapor kategorisini döndür
     */
    public function getCategory(): string;

    /**
     * Rapor ikonunu döndür
     */
    public function getIcon(): string;

    /**
     * Rapor route adını döndür
     */
    public function getRouteName(): string;

    /**
     * Rapor için gerekli permission'ı döndür
     */
    public function getRequiredPermission(): string;

    /**
     * Rapor verilerini döndür
     */
    public function getData(array $filters = []): array;

    /**
     * Rapor kolonlarını döndür
     */
    public function getColumns(): array;

    /**
     * Rapor için gerekli filtreleri döndür
     */
    public function getFilters(): array;

    /**
     * Grafik verisi var mı?
     */
    public function hasChart(): bool;

    /**
     * Grafik verilerini döndür
     */
    public function getChartData(array $filters = []): ?array;

    /**
     * Grafik tipini döndür (line, bar, pie, etc.)
     */
    public function getChartType(): ?string;
}
