/**
 * Database Lock Monitor
 * SQLite 데이터베이스 락을 주기적으로 모니터링하고 자동으로 해결
 *
 * 클린코드 원칙:
 * - 단일 책임 원칙: 데이터베이스 락 모니터링만 담당
 * - 명확한 인터페이스: LockStatus와 DatabaseLockMonitorConfig로 명확한 타입 정의
 */
/**
 * 락 상태 정보
 */
export interface LockStatus {
    /**
     * 락 상태 여부
     */
    isLocked: boolean;
    /**
     * 락 지속 시간 (밀리초)
     */
    lockDuration: number;
    /**
     * 락 감지 방법
     * - immediate_transaction: IMMEDIATE 트랜잭션 시도로 감지
     * - busy_timeout: busy_timeout 초과로 감지
     */
    detectionMethod: 'immediate_transaction' | 'busy_timeout';
    /**
     * busy_timeout 초과 횟수
     */
    busyCount: number;
}
/**
 * 데이터베이스 락 모니터 설정
 */
export interface DatabaseLockMonitorConfig {
    /**
     * 모니터링 주기 (밀리초)
     * 기본값: 1분 (60000ms)
     */
    intervalMs: number;
    /**
     * 경고 임계값 (밀리초)
     * 기본값: 5초 (5000ms)
     */
    warningThresholdMs: number;
    /**
     * 위험 임계값 (밀리초)
     * 기본값: 30초 (30000ms)
     */
    dangerThresholdMs: number;
    /**
     * 치명적 임계값 (밀리초)
     * 기본값: 60초 (60000ms)
     */
    criticalThresholdMs: number;
}
import Database from 'better-sqlite3';
import type { Logger, PerformanceMonitor } from './wal-checkpoint-scheduler.js';
import type { WalCheckpointScheduler } from './wal-checkpoint-scheduler.js';
import type { RuntimeDiagnosticsLogger } from '../../domains/monitoring/services/runtime-diagnostics-logger.js';
/**
 * 데이터베이스 락 모니터 클래스
 * SQLite 데이터베이스 락을 주기적으로 모니터링하고 자동으로 해결
 */
export declare class DatabaseLockMonitor {
    private db;
    private config;
    private logger?;
    private performanceMonitor?;
    private checkpointScheduler?;
    private diagnosticsLogger?;
    private intervalId;
    private isRunning;
    private lockStartTime;
    private busyCount;
    private busyEventTimes;
    private statsResetTime;
    constructor(db: Database.Database, config: DatabaseLockMonitorConfig, logger?: Logger | undefined, performanceMonitor?: PerformanceMonitor | undefined, checkpointScheduler?: WalCheckpointScheduler | undefined, diagnosticsLogger?: Pick<RuntimeDiagnosticsLogger, "writeEvent"> | undefined);
    /**
     * 모니터 시작 (idempotent)
     */
    start(): void;
    /**
     * 모니터 중지 (idempotent)
     */
    stop(): void;
    /**
     * 주기적 모니터링
     */
    private monitor;
    /**
     * busy_timeout 통계 업데이트
     * 시간당 발생 횟수 모니터링
     */
    private updateBusyStatistics;
    /**
     * 락 상태 확인
     * IMMEDIATE 트랜잭션 시도와 단순 상태 확인 쿼리를 통해 락을 감지
     */
    private checkLockStatus;
    /**
     * 락 상태 처리
     * 임계값 기반 경고 및 조치 로직
     */
    private handleLockStatus;
    private writeDiagnosticsEvent;
}
//# sourceMappingURL=database-lock-monitor.d.ts.map