/**
 * Sync Resilience Facade
 *
 * Wraps external sync calls with circuit breaker, rate limiter,
 * retry queue, and audit logging. Never throws — always returns
 * a result object.
 *
 * @module core/sync/sync-resilience
 */
import { CircuitBreakerRegistry } from './circuit-breaker-registry.js';
import { CachedRateLimiter } from './cached-rate-limiter.js';
import { SyncRetryQueue } from './sync-retry-queue.js';
import { SyncResilienceAuditLogger } from './sync-resilience-audit-logger.js';
import type { CreateNotificationInput } from '../notifications/notification-types.js';
export interface SyncResilienceParams {
    incrementId: string;
    provider: string;
    featureId: string;
    projectPath: string;
    projectName: string;
}
export interface SyncResilienceResult {
    ok: boolean;
    skipped?: 'circuit_open' | 'rate_limit';
    error?: string;
    durationMs?: number;
}
type NotificationAddFn = (input: CreateNotificationInput) => Promise<unknown>;
interface SyncResilienceDeps {
    registry: CircuitBreakerRegistry;
    retryQueue: SyncRetryQueue;
    auditLogger: SyncResilienceAuditLogger;
    rateLimiter: CachedRateLimiter;
    syncFn: (params: SyncResilienceParams) => Promise<void>;
    notificationAdd?: NotificationAddFn;
}
export declare class SyncResilience {
    private readonly registry;
    private readonly retryQueue;
    private readonly auditLogger;
    private readonly rateLimiter;
    private readonly syncFn;
    private readonly notificationAdd?;
    constructor(deps: SyncResilienceDeps);
    syncWithResilience(params: SyncResilienceParams): Promise<SyncResilienceResult>;
    private notify;
}
export {};
//# sourceMappingURL=sync-resilience.d.ts.map