/**
 * LogAggregatorRetention -- P4-RET-04 Log aggregator retention interface (AC 14)
 *
 * Adapter interface implemented by each log aggregator backend.
 * The reconciliation loop in governance-server queries PolicyMatrix per tenant
 * and calls setTenantRetention() when the aggregator's current retention
 * drifts from the matrix value.
 *
 * Concrete implementations:
 *   - SplunkRetentionAdapter  (splunk.ts)  -- DEFERRED-SPLUNK-WIRE
 *   - DatadogRetentionAdapter (datadog.ts) -- DEFERRED-DATADOG-WIRE
 *   - SentinelRetentionAdapter(sentinel.ts)-- DEFERRED-SENTINEL-WIRE
 *   - NoOpRetentionAdapter    (noop.ts)    -- default for tenants with no aggregator
 *
 * Spec: P4-RET-01 Section 2.4, AC 14
 *
 * @connexum/ai-governance
 */
/**
 * Log aggregator retention adapter interface.
 *
 * Each concrete implementation wraps a specific aggregator's retention API.
 * The governance server's reconciliation loop calls setTenantRetention() to
 * push the resolved PolicyMatrix days to the aggregator.
 */
export interface LogAggregatorRetention {
    /**
     * Unique identifier for this aggregator type (e.g. 'splunk', 'datadog').
     * Used in audit events and per-store coverage matrix.
     */
    readonly aggregatorType: string;
    /**
     * Set the log retention policy for a tenant to the given number of days.
     *
     * @param tenantId  Tenant whose logs are being configured.
     * @param days      Retention period in days (from PolicyMatrix resolution).
     * @returns         Promise resolving when the aggregator acknowledges the change.
     * @throws          If the aggregator API call fails (non-retried in this cycle).
     */
    setTenantRetention(tenantId: string, days: number): Promise<void>;
    /**
     * Query the current retention setting for a tenant from the aggregator.
     * Used by the reconciliation loop to detect drift.
     *
     * @param tenantId  Tenant to query.
     * @returns         Current retention in days, or null if unknown.
     */
    getTenantRetention(tenantId: string): Promise<number | null>;
}
export interface ReconciliationResult {
    tenantId: string;
    aggregatorType: string;
    previousDays: number | null;
    targetDays: number;
    /** Whether the aggregator value was updated during this reconciliation. */
    updated: boolean;
    /** Whether the aggregator is in drift (before the update). */
    wasDrift: boolean;
    reconciledAt: string;
    error?: string;
}
//# sourceMappingURL=log-aggregator.d.ts.map