<?php

declare(strict_types=1);

namespace App\Services\Baselines;

use App\Models\ManagedEnvironment;
use App\Services\Baselines\Evidence\ResolvedEvidence;
use Carbon\CarbonImmutable;

interface CurrentStateEvidenceProvider
{
    public function name(): string;

    /**
     * @param  list<array{policy_type: string, subject_external_id: string}>  $subjects
     * @return array<string, ResolvedEvidence> keyed by "policy_type|subject_external_id"
     */
    public function resolve(
        ManagedEnvironment $tenant,
        array $subjects,
        ?CarbonImmutable $since = null,
        ?int $latestInventorySyncRunId = null,
    ): array;
}
