import { LabelMap } from "./Record";
import { APIError } from "./APIError";
import { HttpClient } from "./http/HttpClient";
/**
 * Represents a batch of records for writing
 */
export declare enum BatchType {
    WRITE = 0,
    UPDATE = 1,
    REMOVE = 2
}
export declare class Batch {
    private readonly bucketName;
    private readonly entryName;
    private readonly httpClient;
    private readonly type;
    private readonly records;
    private totalSize;
    private lastAccess;
    constructor(bucketName: string, entryName: string, httpClient: HttpClient, type: BatchType);
    /**
     * Add record to batch
     * @param ts timestamp of record as a UNIX timestamp in microseconds
     * @param data {Buffer | string} data to write
     * @param contentType default: application/octet-stream
     * @param labels default: {}
     */
    add(ts: bigint, data: Buffer | string, contentType?: string, labels?: LabelMap): void;
    /**
     * Add only labels to batch
     * Use for updating labels
     * @param ts timestamp of record as a UNIX timestamp in microseconds
     * @param labels
     */
    addOnlyLabels(ts: bigint, labels: LabelMap): void;
    /**
     * Add only timestamp to batch
     * Use for removing records
     * @param ts timestamp of record as a UNIX timestamp in microseconds
     */
    addOnlyTimestamp(ts: bigint): void;
    /**
     * Write batch to entry
     */
    write(): Promise<Map<bigint, APIError>>;
    /**
     * Get records in batch sorted by timestamp
     */
    items(): IterableIterator<[
        bigint,
        {
            data: Buffer;
            contentType: string;
            labels: LabelMap;
        }
    ]>;
    /**
     * Get total size of batch
     */
    size(): bigint;
    /**
     * Get last access time of batch
     */
    lastAccessTime(): number;
    /**
     * Get number of records in batch
     */
    recordCount(): number;
    /**
     * Clear batch
     */
    clear(): void;
}
