using System.Collections.Generic; namespace StellaOps.Scheduler.Queue.Redis; internal interface IRedisSchedulerQueuePayload { string QueueName { get; } string GetIdempotencyKey(TMessage message); string Serialize(TMessage message); TMessage Deserialize(string payload); string GetRunId(TMessage message); string GetTenantId(TMessage message); string? GetScheduleId(TMessage message); string? GetSegmentId(TMessage message); string? GetCorrelationId(TMessage message); IReadOnlyDictionary? GetAttributes(TMessage message); // HLC fields for deterministic ordering (SPRINT_20260105_002_002) // Default implementations return null for backward compatibility /// /// Gets the HLC timestamp string for deterministic ordering. /// string? GetTHlc(TMessage message) => null; /// /// Gets the chain link (hex-encoded SHA-256) proving sequence position. /// string? GetChainLink(TMessage message) => null; /// /// Gets the previous chain link (hex-encoded, null for first entry). /// string? GetPrevChainLink(TMessage message) => null; /// /// Gets the payload hash (hex-encoded SHA-256). /// string? GetPayloadHash(TMessage message) => null; }