import { EWinInsertType } from '../../interfaces'; export interface INumberWindowItem { ts: number; data: T; } export interface INumberWindowSetStatOptions { numberWindow: NumberWindow; winInsertType: EWinInsertType; added?: INumberWindowItem; removed?: INumberWindowItem[]; } export interface INumberWindowConstructorOptions { /** * Отличительное имя окна для логирования */ winName: string; /** * Ключ окна, когда оно используется в объекте KeyedTimeWindow */ key?: string | number; /** * Ширина окна: максимальное количество элементов в окне */ width: number; /** * Опциональная функция для записи статистики при добавлении(удалении) событий в окно. * Если передана, то подменит собой метод this.setStat() */ setStat?: (_arg: INumberWindowSetStatOptions) => void; /** * Кастомная функция для получения статистики. Она подменит метод окна this.getStat() * Если не передана, то метод this.getStat() будет возвращать свойство окна stat */ getStat?: (numberWindow: NumberWindow, ...args: any[]) => any; /** * Первое событие, которое можно передать в момент создания экземпляра класса. * Это может быть удобно, когда окна создаются по мере поступления событий определенного класса. */ item?: INumberWindowItem; } /** * Количественное окно, в котором события располагаются в порядке их временных меток, * но, при этом, если в окне более this.width событий, самые левые выбывают из окна. * * Пример применения: хотим подсчитывать среднюю цену для НЕ БОЛЕЕ, ЧЕМ 1000 ценовых событий. * Тогда установим this.width = 1000, а INumberWindowItem параметризуем ценой (INumberWindowItem) */ export declare class NumberWindow { win: INumberWindowItem[]; lastTs: number; /** * Ширина окна: максимальное количество элементов в окне */ width: number; /** * Место хранения статистики. Заполнение этого свойства должно быть описано самостоятельно, в функции setStat, * передаваемой в опциях при создании экземпляра класса */ stat: any; /** * Метод класса, заполняющий статистику. По умолчанию не делает ничего. Но если при создании экземпляра класса * в опциях передано свойство setStat (функция), оно замещает метод класса и управление заполнением статистики * передается этой кастомной функции. */ setStat: (_setStatOptions: INumberWindowSetStatOptions) => void; /** * Метод класса, возвращающий статистику. По умолчанию возвращает свойство класса this.stat. * Но если при создании экземпляра класса в опциях передано свойство getStat (функция), * оно замещает метод класса this.getStat и управление передается этой кастомной функции. */ getStat: (numberWindow: NumberWindow, ...args: any[]) => any; constructor(options: INumberWindowConstructorOptions); add(item: INumberWindowItem): void; setWidth(width: number): void; destroy(): void; } //# sourceMappingURL=NumberWindow.d.ts.map