<?php

declare(strict_types=1);

namespace App\Services\Evidence\Contracts;

use App\Models\ManagedEnvironment;

interface EvidenceSourceProvider
{
    public function key(): string;

    /**
     * @return array{
     *     dimension_key: string,
     *     state: string,
     *     required: bool,
     *     source_kind: string,
     *     source_record_type: ?string,
     *     source_record_id: ?string,
     *     source_fingerprint: ?string,
     *     measured_at: ?\DateTimeInterface,
     *     freshness_at: ?\DateTimeInterface,
     *     summary_payload: array<string, mixed>,
     *     source_descriptor?: array<string, mixed>,
     *     provider_detail?: array<string, mixed>,
     *     fingerprint_payload: array<string, mixed>,
     *     sort_order: int
     * }
     */
    public function collect(ManagedEnvironment $tenant): array;
}
