import { Source } from "../_core"; import { In, Out } from "../_interfaces"; import { Transaction } from "../_tx"; import { OnTimeout, Timeout } from "../scheduler/index"; import { InitialAndChanges } from "./_changes"; export declare const throttle: CurriedThrottle; export interface CurriedThrottle { (delay: number, observable: In): Out; (delay: number): (observable: In) => Out; } export declare const bufferingThrottle: CurriedBufferingThrottle; export interface CurriedBufferingThrottle { (minimumInterval: number, observable: In): Out; (minimumInterval: number): (observable: In) => Out; } export declare abstract class ThrottleBase extends InitialAndChanges implements OnTimeout { protected delay: number; protected to: Timeout | null; constructor(source: Source, delay: number); dispose(): void; nextInitial(tx: Transaction, val: T): void; abstract nextChange(tx: Transaction, val: T): void; abstract due(): void; protected resetTimeout(): void; protected ensureTimeout(): void; } export declare class Throttle extends ThrottleBase { protected memo: T; protected ended: boolean; dispose(): void; nextChange(tx: Transaction, val: T): void; end(tx: Transaction): void; due(): void; }