export type HubLogLevel = "info" | "warning" | "error";
export type HubLogDetails = Record<string, string | number | boolean | null>;
export interface HubLogSink {
    info(message: string, details?: string | HubLogDetails): void;
    warning(message: string, details?: string | HubLogDetails): void;
    error(message: string, details?: string | HubLogDetails): void;
}
export interface HubLogEntry {
    timestamp: number;
    level: HubLogLevel;
    message: string;
    details?: string | HubLogDetails;
}
export interface HubLogBufferOptions {
    maxEntries?: number;
    now?: () => number;
    maxFileBytes?: number;
}
export declare function formatHubLogEntry(entry: HubLogEntry): string;
export declare class HubLogBuffer {
    private readonly maxEntries;
    private readonly now;
    private readonly entries;
    constructor(options?: HubLogBufferOptions);
    info(message: string, details?: string | HubLogDetails): void;
    warning(message: string, details?: string | HubLogDetails): void;
    error(message: string, details?: string | HubLogDetails): void;
    append(level: HubLogLevel, message: string, details?: string | HubLogDetails): void;
    appendEntry(entry: HubLogEntry): void;
    getEntries(): HubLogEntry[];
}
export declare function getHubLogLegacyFile(cwd: string): string;
export declare function getHubLogFile(cwd: string, timestamp?: number, sequence?: number): string;
export declare class HubLogStore {
    private readonly file;
    private readonly buffer;
    private readonly now;
    private readonly workspaceCwd;
    private readonly maxFileBytes;
    private constructor();
    static open(file: string, options?: HubLogBufferOptions): HubLogStore;
    static openWorkspace(cwd: string, options?: HubLogBufferOptions): HubLogStore;
    info(message: string, details?: string | HubLogDetails): void;
    warning(message: string, details?: string | HubLogDetails): void;
    error(message: string, details?: string | HubLogDetails): void;
    append(level: HubLogLevel, message: string, details?: string | HubLogDetails): void;
    getEntries(): HubLogEntry[];
    private getWriteFile;
}
//# sourceMappingURL=hub-log.d.ts.map