import { r as DrainContext } from "./types-B82IuY7M.mjs"; import { DrainPipelineOptions, PipelineDrainFn } from "./pipeline.mjs"; //#region src/browser.d.ts interface BrowserDrainConfig { /** URL of the server ingest endpoint */ endpoint: string; /** Custom headers sent with each fetch request (e.g. Authorization, X-API-Key). Not applied to sendBeacon — see `useBeacon`. */ headers?: Record; /** Request timeout in milliseconds. @default 5000 */ timeout?: number; /** Use sendBeacon when the page is hidden. @default true */ useBeacon?: boolean; } interface BrowserLogDrainOptions { /** Browser drain configuration (endpoint is required) */ drain: BrowserDrainConfig; /** Pipeline configuration overrides */ pipeline?: DrainPipelineOptions; /** Auto-register visibilitychange flush listener. @default true */ autoFlush?: boolean; } /** * Create a low-level browser drain transport function. * * Returns a function compatible with `createDrainPipeline` that sends batches * to the configured endpoint via `fetch` (with `keepalive: true`) or * `navigator.sendBeacon` when the page is hidden. * * @example * ```ts * import { createBrowserDrain } from '@safaricom-mxl/log/browser' * import { createDrainPipeline } from '@safaricom-mxl/log/pipeline' * * const pipeline = createDrainPipeline({ batch: { size: 50 } }) * const drain = pipeline(createBrowserDrain({ endpoint: '/api/logs' })) * ``` */ declare function createBrowserDrain(config: BrowserDrainConfig): (batch: DrainContext[]) => Promise; /** * Create a pre-composed browser log drain with pipeline, batching, and auto-flush. * * Returns a `PipelineDrainFn` directly usable with `initLogger({ drain })`. * * @example * ```ts * import { initLogger, log } from '@safaricom-mxl/log' * import { createBrowserLogDrain } from '@safaricom-mxl/log/browser' * * const drain = createBrowserLogDrain({ * drain: { endpoint: '/api/logs' }, * }) * initLogger({ drain }) * * log.info({ action: 'page_view', path: location.pathname }) * ``` */ declare function createBrowserLogDrain(options: BrowserLogDrainOptions): PipelineDrainFn & { dispose: () => void; }; //#endregion export { BrowserDrainConfig, BrowserLogDrainOptions, createBrowserDrain, createBrowserLogDrain }; //# sourceMappingURL=browser.d.mts.map