import { Transaction } from './transaction'; export declare type ObservableUnsubscriber = () => void; export declare type ObservableSubscriber = (transaction: Transaction) => void; export declare type ObserverChangeSubscriber = (params: { count: number; }) => void; export interface Observable { get: (selector?: (val: State) => Selection, transaction?: Transaction) => Selection; subscribe: (subscriber: ObservableSubscriber) => ObservableUnsubscriber; onObserverChange: (subscriber: ObserverChangeSubscriber) => ObservableUnsubscriber; } export declare type ExtractObservableType = Type extends Observable ? X : never; export declare type ExtractObservableTypes = { [K in keyof Map]: ExtractObservableType; }; export declare type ObservableMap = Record>;