namespace StellaOps.Excititor.Core;
///
/// Policy abstraction supplying trust weights and gating logic for consensus decisions.
///
public interface IVexConsensusPolicy
{
///
/// Semantic version describing the active policy.
///
string Version { get; }
///
/// Returns the effective weight (0-1) to apply for the provided VEX source.
///
double GetProviderWeight(VexProvider provider);
///
/// Determines whether the claim is eligible to participate in consensus.
///
/// Normalized claim to evaluate.
/// Provider metadata for the claim.
/// Textual reason when the claim is rejected.
/// true if the claim should participate; false otherwise.
bool IsClaimEligible(VexClaim claim, VexProvider provider, out string? rejectionReason);
}