/**
 * OperationLogService
 *
 * Default implementation of IOperationLogService. Delegates persistence to
 * IOperationLogRepository and provides convenience methods for each level.
 *
 * Failure-isolation rule: log writes must NEVER raise out of a use case in a
 * way that masks the original operation error. If the repository throws (DB
 * locked, disk full, etc.) we swallow and warn via ILogger so the user still
 * gets the meaningful "deploy failed" outcome — losing a log line is much
 * better than turning a failed deploy into a 500 with a stack trace from the
 * logger.
 */
import type { IOperationLogService } from '../../../application/ports/output/services/operation-log-service.interface.js';
import type { IOperationLogRepository } from '../../../application/ports/output/repositories/operation-log.repository.interface.js';
import type { ILogger } from '../../../application/ports/output/services/logger.interface.js';
import { type OperationLogEntry, type OperationLogKind } from '../../../domain/generated/output.js';
export declare class OperationLogService implements IOperationLogService {
    private readonly repo;
    private readonly logger;
    constructor(repo: IOperationLogRepository, logger: ILogger);
    debug(kind: OperationLogKind, id: string, message: string, detail?: string): Promise<OperationLogEntry>;
    info(kind: OperationLogKind, id: string, message: string, detail?: string): Promise<OperationLogEntry>;
    warn(kind: OperationLogKind, id: string, message: string, detail?: string): Promise<OperationLogEntry>;
    error(kind: OperationLogKind, id: string, message: string, detail?: string): Promise<OperationLogEntry>;
    list(kind: OperationLogKind, id: string): Promise<readonly OperationLogEntry[]>;
    private appendSafe;
}
//# sourceMappingURL=operation-log.service.d.ts.map