/// <reference types="node" />
import { EventEmitter } from 'events';
import { Dataset } from './typings';
export declare enum ImpressionObservedTypes {
    View = "view",
    Hide = "hide"
}
declare interface BsViewableImpressionObserver {
    on<U extends keyof BsViewableImpressionObserverEvents>(event: U, listener: BsViewableImpressionObserverEvents[U]): this;
    emit<U extends keyof BsViewableImpressionObserverEvents>(event: U, ...args: Parameters<BsViewableImpressionObserverEvents[U]>): boolean;
}
interface BsViewableImpressionObserverEvents {
    [ImpressionObservedTypes.View]: (id: string, item: Dataset) => void;
    [ImpressionObservedTypes.Hide]: (id: string) => void;
}
declare class BsViewableImpressionObserver extends EventEmitter {
    private mutationObserver;
    private intersectionObserver;
    private containerSelector;
    private itemSelector;
    constructor(intersectionThreshold: number);
    intersectionHandler(entries: any, observer: any): void;
    start(containerClassname: any, itemClassname: any): void;
    stop(): void;
}
export default BsViewableImpressionObserver;
