import { TokenType } from "./types"; export type GetListenersFn = () => F[]; export declare class Subscribable { private listenerMap; private _listeners; private proxyMap; private proxies; get listeners(): F[]; /** * Subscribe to the event / hook * @param token A token that can be used to unsubscribe from the event / hook later on * @param callback A callback that will be invoked when the event / hook occurs */ subscribe(token: TokenType, callback: F): void; /** * Remove a listener * @param token The token that was specified when subscribing to the listener. * An invalid token does not result in an error. */ unsubscribe(token: TokenType): void; /** This function is only used internally for proxies */ registerProxy(token: TokenType, getListeners: GetListenersFn): void; /** This function is only used internally for proxies */ unregisterProxy(token: TokenType): void; }