import { type ProbeRegistry } from '../probe/registry.js';
import type { AgentBusEventListener } from '../types/bus/index.js';
import type { RunId } from '../types/ids/index.js';
import type { Logger } from '../utils/logger.js';
import { CircuitBreaker } from './breaker.js';
import { FileLockManager } from './lock.js';
import { EditOwnershipTracker } from './ownership.js';
export interface AgentBusConfig {
    enabled: boolean;
    lockTimeoutMs: number;
    lockAcquireTimeoutMs: number;
    maxLocksPerAgent: number;
    breakerFailureThreshold: number;
    breakerResetTimeoutMs: number;
}
export declare class AgentBus {
    readonly locks: FileLockManager;
    readonly ownership: EditOwnershipTracker;
    readonly breaker: CircuitBreaker;
    private readonly listeners;
    private readonly log;
    private readonly config;
    private readonly probes;
    constructor(log: Logger, config?: Partial<AgentBusConfig>, probeRegistry?: ProbeRegistry);
    on(listener: AgentBusEventListener): () => void;
    private emit;
    cleanupAgent(runId: RunId): void;
    maintenance(): void;
}
export { CircuitBreaker } from './breaker.js';
export { FileLockManager } from './lock.js';
export type { FileLockManagerConfig } from './lock.js';
export { EditOwnershipTracker } from './ownership.js';
export type { AgentBusEvent, AgentBusEventListener, CircuitBreakerSnapshot, CircuitBreakerState, FileLock, FileOwnership, LockAcquireResult, LockId, OwnershipClaimResult, } from '../types/bus/index.js';
//# sourceMappingURL=index.d.ts.map