export default class SelectorObserver { constructor(rootNode: Node) disconnect(): void observe: typeof observe } export declare function observe( selector: string, options: { constructor: {new (): T} } & Options ): Observer export declare function observe( options: { selector: string constructor: {new (): T} } & Options ): Observer export declare function observe(selector: string, initialize: InitializerCallback): Observer export declare function observe(selector: string, options: Options): Observer export declare function observe(options: {selector: string} & Options): Observer type Options = { initialize?: InitializerCallback add?: AddCallback remove?: RemoveCallback subscribe?: SubscribeCallback } type InitializerCallback = (el: T) => void | InitializerCallbacks type AddCallback = (el: T) => void type RemoveCallback = (el: T) => void type SubscribeCallback = (el: T) => Subscription type InitializerCallbacks = { add?: AddCallback remove?: RemoveCallback } type Observer = { abort(): void } interface Subscription { unsubscribe(): void }