/**
 * SplunkRetentionAdapter -- P4-RET-04 Splunk HEC retention API (AC 14)
 *
 * Wired 2026-05-02 per Thomas Layer 0 directive (F-NEW-CRIT-31).
 *
 * Configuration:
 *   - SPLUNK_HEC_URL: Splunk HEC base URL (e.g. https://splunk.example.com:8088)
 *   - SPLUNK_HEC_TOKEN: HEC token with admin-level retention API access
 *   - SPLUNK_INDEX_MAP: JSON blob mapping tenantId -> Splunk index name
 *
 * Behavior:
 *   - Construction: succeeds with warning if no creds (so reconciliation can
 *     skip cleanly for tenants without a Splunk binding). Per-tenant call
 *     fail-fast if a tenant is bound but creds missing.
 *   - setTenantRetention(): POST /services/data/retentions
 *       { index, frozenTimePeriodInSecs: days * 86400 }
 *   - 10s default timeout, 1 retry on 5xx or network error.
 *   - On final failure, dispatches to DLQ callback (if injected) and rethrows.
 *
 * Spec: P4-RET-01 Section 2.4, AC 14
 *
 * @connexum/ai-governance
 */
import type { LogAggregatorRetention } from './log-aggregator.js';
export interface RetentionDLQEntry {
    adapterType: string;
    tenantId: string;
    days: number;
    attempts: number;
    error: string;
    occurredAt: string;
}
export type RetentionDLQCallback = (entry: RetentionDLQEntry) => void;
export interface SplunkRetentionAdapterOpts {
    baseUrl?: string;
    token?: string;
    indexMap?: Record<string, string>;
    timeoutMs?: number;
    dlq?: RetentionDLQCallback;
    /** Injectable fetch for tests; defaults to globalThis.fetch (Node 18+). */
    fetchImpl?: typeof fetch;
}
export declare class SplunkRetentionAdapter implements LogAggregatorRetention {
    readonly aggregatorType = "splunk";
    private readonly baseUrl;
    private readonly token;
    private readonly indexMap;
    private readonly timeoutMs;
    private readonly dlq;
    private readonly fetchImpl;
    constructor(opts?: SplunkRetentionAdapterOpts);
    setTenantRetention(tenantId: string, days: number): Promise<void>;
    getTenantRetention(tenantId: string): Promise<number | null>;
    private doFetch;
    private dispatchWithRetry;
    private isRetryable;
}
//# sourceMappingURL=splunk.d.ts.map