import type { IncomingMessage } from "http";
import { HTTPOptions, SendOptions } from "./types";
export type MessageAndPromise = {
    serializedMessage: string;
    promise: PromiseReference<IncomingMessage>;
};
export type PreparedBatch = {
    payload: string;
    messageCount: number;
    promises: Array<PromiseReference<IncomingMessage>>;
};
export type BatchState = {
    messages: MessageAndPromise[];
    messageSizeInBytes: number;
};
type PromiseReference<T> = {
    resolve: (message: T) => void;
    reject: (error: Error) => void;
};
export declare const MAX_MESSAGES_IN_BATCH = 100;
export declare const MAX_BATCH_SIZE_BYTES = 1638400;
export declare class RaygunBatchTransport {
    private timerId;
    private httpOptions;
    private interval;
    private batchId;
    private batchState;
    constructor(options: {
        interval: number;
        httpOptions: HTTPOptions;
    });
    /**
     * Enqueues send request to batch processor.
     * @param options - send options without callback
     * @returns Promise with response or error if rejected
     */
    send(options: SendOptions): Promise<IncomingMessage>;
    /**
     * Stops batch transport and clears timerId
     */
    stopProcessing(): void;
    private onIncomingMessage;
    private processBatch;
    private sendBatch;
}
export {};
