import { ShortcutClientLogContextStore } from './context.js';
import { type ShortcutClientLogModule, type ShortcutClientLogTransport, type ShortcutClientUserContext } from './types.js';
export interface ShortcutClientLoggerOptions {
    transport: ShortcutClientLogTransport;
    context?: ShortcutClientLogContextStore;
    flushIntervalMs?: number;
    maxBufferSize?: number;
    now?: () => Date;
    setIntervalFn?: typeof setInterval;
    clearIntervalFn?: typeof clearInterval;
}
export interface EmitShortcutClientLogInput {
    module: ShortcutClientLogModule;
    event: string;
    analyticsEvent?: boolean;
    data?: Record<string, unknown>;
    duration?: number;
}
/**
 * Runtime-owned client logger for ShortcutXL observability.
 *
 * This package intentionally knows nothing about PostHog, browser super properties,
 * or compatibility with unrelated clients. It owns one contract only:
 * batched client-shortcutxl log rows sent to /api/logs.
 */
export declare class ShortcutClientLogger {
    private readonly transport;
    private readonly context;
    private readonly flushIntervalMs;
    private readonly maxBufferSize;
    private readonly now;
    private readonly setIntervalFn;
    private readonly clearIntervalFn;
    private buffer;
    private flushTimer;
    private pendingFlush;
    private destroyed;
    private enabled;
    constructor(options: ShortcutClientLoggerOptions);
    setUserId(userId: string): void;
    clearUserId(): void;
    setUserContext(input: ShortcutClientUserContext): void;
    clearUserContext(): void;
    setSessionId(sessionId: string): void;
    clearSessionId(): void;
    setBuildInfo(input: {
        commit?: string;
        version?: string;
    }): void;
    setEnabled(enabled: boolean): void;
    disable(): Promise<void>;
    info(input: EmitShortcutClientLogInput): void;
    warn(input: EmitShortcutClientLogInput): void;
    error(input: EmitShortcutClientLogInput): void;
    private emit;
    private startPeriodicFlush;
    flush(): Promise<void>;
    destroy(): Promise<void>;
}
//# sourceMappingURL=client-logger.d.ts.map