import { ClientLogger } from '../typings';
export interface RecorderUpdater<R extends object> {
    (updateCallback: (record: R) => void): void;
}
export interface RecorderHandlerPreparer {
    (handler: ClientLogger): ClientLogger;
}
export interface Recorder<R extends object = {}> {
    stop: () => void;
    start: () => void;
    handler: ClientLogger;
    getRecord: () => R;
}
export interface BaseRecorder<R extends object> extends Recorder<R> {
    prepareHandler: RecorderHandlerPreparer;
    updateRecord: RecorderUpdater<R>;
}
export interface BaseRecorderCreator<R extends object = {}> {
    (defaultActive?: boolean): Recorder<R>;
}
export declare const createBaseRecorder: <R extends object>(isActive: boolean | undefined, getDefaultRecord: () => R) => BaseRecorder<R>;
//# sourceMappingURL=recorder.d.ts.map