<?php

namespace Modules\Dashboard\Repositories\Contracts;

interface PKJDashboardRepositoryInterface
{
    /**
     * Get total PKJ asset entitlement
     */
    public function getTotalEntitlement(array $filters = [], $user = null): int;

    /**
     * Get total PKJ asset holdings
     */
    public function getTotalHoldings(array $filters = [], $user = null): int;

    /**
     * Get PKJ asset holdings grouped by status
     */
    public function getHoldingsByStatus(array $filters = [], $user = null): array;

    /**
     * Get PKJ asset holdings by specific status
     */
    public function getHoldingsBySpecificStatus(string $status, array $filters = [], $user = null): array;

    /**
     * Get PKJ monthly trends
     */
    public function getMonthlyTrends(array $filters = [], $user = null): array;

    /**
     * Get PKJ holdings by category
     */
    public function getHoldingsByCategory(array $filters = [], $user = null): array;

    /**
     * Get PKJ category metrics (KEUPAYAAN, KESIAGAAN, SERVISIBILITI)
     */
    public function getCategoryMetrics(int $categoryId, array $filters = [], $user = null): array;

    /**
     * Get PKJ category status breakdown
     */
    public function getCategoryStatusBreakdown(int $categoryId, array $filters = [], $user = null): array;

    /**
     * Get PKJ asset details by category and status
     */
    public function getAssetDetailsByCategoryAndStatus(int $categoryId, string $status, array $filters = [], $user = null): array;
}
