import type { Encoder, EncoderResult } from '@datadog/browser-core';
import type { BrowserRecord, BrowserSegmentMetadata, CreationReason, SegmentContext } from '../../types';
export type FlushReason = Exclude<CreationReason, 'init'> | 'stop';
export type FlushCallback = (metadata: BrowserSegmentMetadata, encoderResult: EncoderResult<Uint8Array>) => void;
export type AddRecordCallback = (encodedBytesCount: number) => void;
export interface Segment {
    addRecord: (record: BrowserRecord, callback: AddRecordCallback) => void;
    flush: (callback: FlushCallback) => void;
}
export declare function createSegment({ context, creationReason, encoder, }: {
    context: SegmentContext;
    creationReason: CreationReason;
    encoder: Encoder<Uint8Array>;
}): Segment;
