import { Operator, Stream } from '../index'; export declare class DropRepeatsOperator implements Operator { ins: Stream; type: string; out: Stream; isEq: (x: T, y: T) => boolean; private v; constructor(ins: Stream, fn: ((x: T, y: T) => boolean) | undefined); _start(out: Stream): void; _stop(): void; _n(t: T): void; _e(err: any): void; _c(): void; } /** * Drops consecutive duplicate values in a stream. * * Marble diagram: * * ```text * --1--2--1--1--1--2--3--4--3--3| * dropRepeats * --1--2--1--------2--3--4--3---| * ``` * * Example: * * ```js * import dropRepeats from 'xstream/extra/dropRepeats' * * const stream = xs.of(1, 2, 1, 1, 1, 2, 3, 4, 3, 3) * .compose(dropRepeats()) * * stream.addListener({ * next: i => console.log(i), * error: err => console.error(err), * complete: () => console.log('completed') * }) * ``` * * ```text * > 1 * > 2 * > 1 * > 2 * > 3 * > 4 * > 3 * > completed * ``` * * Example with a custom isEqual function: * * ```js * import dropRepeats from 'xstream/extra/dropRepeats' * * const stream = xs.of('a', 'b', 'a', 'A', 'B', 'b') * .compose(dropRepeats((x, y) => x.toLowerCase() === y.toLowerCase())) * * stream.addListener({ * next: i => console.log(i), * error: err => console.error(err), * complete: () => console.log('completed') * }) * ``` * * ```text * > a * > b * > a * > B * > completed * ``` * * @param {Function} isEqual An optional function of type * `(x: T, y: T) => boolean` that takes an event from the input stream and * checks if it is equal to previous event, by returning a boolean. * @return {Stream} */ export default function dropRepeats(isEqual?: ((x: T, y: T) => boolean) | undefined): (ins: Stream) => Stream;