using ScadaLink.Commons.Messages.Integration;
namespace ScadaLink.Commons.Interfaces.Services;
///
/// Site-side fan-out abstraction for cached-call lifecycle telemetry
/// (Audit Log #23 / M3). One packet carries
/// both an audit row and an operational SiteCalls upsert; the
/// implementation routes the audit half through
/// and the operational half through the site-local tracking SQLite store.
///
///
///
/// Defined in Commons so the script runtime (and the StoreAndForward retry
/// loop, Bundle E4) can take a dependency on the abstraction rather than on
/// the concrete forwarder living inside ScadaLink.AuditLog — the
/// existing dependency arrow runs from SiteRuntime to Commons, not to
/// AuditLog.
///
///
/// Best-effort contract (alog.md §7): implementations MUST swallow
/// internal failures rather than propagating to the calling script.
///
///
public interface ICachedCallTelemetryForwarder
{
///
/// Fan one combined-telemetry packet out to the audit writer and the
/// tracking store. Best-effort — failures on either half are logged and
/// swallowed; the returned Task completes when both halves have been
/// attempted.
///
Task ForwardAsync(CachedCallTelemetry telemetry, CancellationToken ct = default);
}