import { AnyObject, CommonLogger } from '@naturalcycles/js-lib';
import { TransformOptions, TransformTyped } from '../stream.model';
export interface TransformLogProgressOptions<IN = any> extends TransformOptions {
    /**
     * Progress metric
     *
     * @default `progress`
     */
    metric?: string;
    /**
     * Include `heapUsed` in log.
     *
     * @default false
     */
    heapUsed?: boolean;
    /**
     * Include `heapTotal` in log.
     *
     * @default false
     */
    heapTotal?: boolean;
    /**
     * Include `rss` in log.
     *
     * @default true
     */
    rss?: boolean;
    /**
     * Incude Peak RSS in log.
     *
     * @default true
     */
    peakRSS?: boolean;
    /**
     * Include `external` in log.
     *
     * @default false
     */
    external?: boolean;
    /**
     * Include `arrayBuffers` in log.
     *
     * @default false
     */
    arrayBuffers?: boolean;
    /**
     * Log (rss - heapTotal)
     * For convenience of debugging "out-of-heap" memory size.
     *
     * @default false
     */
    rssMinusHeap?: boolean;
    /**
     * Log "rows per second"
     *
     * @default true
     */
    logRPS?: boolean;
    /**
     * Set to false to disable logging progress
     *
     * @default true
     */
    logProgress?: boolean;
    /**
     * Log progress event Nth record that is _processed_ (went through mapper).
     * Set to 0 to disable logging.
     *
     * @default 1000
     */
    logEvery?: number;
    logger?: CommonLogger;
    /**
     * Function to return extra properties to the "progress object".
     *
     * chunk is undefined for "final" stats, otherwise is defined.
     */
    extra?: (chunk: IN | undefined, index: number) => AnyObject;
    /**
     * If specified - will multiply the counter by this number.
     * Useful e.g when using `transformBuffer({ batchSize: 500 })`, so
     * it'll accurately represent the number of processed entries (not batches).
     *
     * Defaults to 1.
     */
    batchSize?: number;
    /**
     * Experimental logging of item (shunk) sizes, when json-stringified.
     *
     * Defaults to false.
     *
     * @experimental
     */
    logSizes?: boolean;
    /**
     * How many last item sizes to keep in a buffer, to calculate stats (p50, p90, avg, etc).
     * Defaults to 100_000.
     * Cannot be Infinity.
     */
    logSizesBuffer?: number;
    /**
     * Works in addition to `logSizes`. Adds "zipped sizes".
     *
     * @experimental
     */
    logZippedSizes?: boolean;
}
/**
 * Pass-through transform that optionally logs progress.
 */
export declare function transformLogProgress<IN = any>(opt?: TransformLogProgressOptions): TransformTyped<IN, IN>;
