import { Disposable } from "../../../../base/common/lifecycle.js";
import { IObservable } from "../../../../base/common/observable.js";
import { ICommandService } from "../../../../platform/commands/common/commands.service.js";
import { IContextKeyService } from "../../../../platform/contextkey/common/contextkey.service.js";
export interface IRecordableLogEntry {
    sourceId: string;
    time: number;
}
export interface IRecordableEditorLogEntry extends IRecordableLogEntry {
    modelUri: string;
    modelVersion: number;
}
export declare function formatRecordableLogEntry<T extends IRecordableLogEntry>(entry: T): string;
export declare class StructuredLogger<T extends IRecordableLogEntry> extends Disposable {
    private readonly _contextKey;
    private readonly _contextKeyService;
    private readonly _commandService;
    static cast<T extends IRecordableLogEntry>(): typeof StructuredLogger<T>;
    readonly isEnabled: IObservable<boolean>;
    private readonly _contextKeyValue;
    constructor(_contextKey: string, _contextKeyService: IContextKeyService, _commandService: ICommandService);
    log(data: T): boolean;
}
