import { Observable as MicroObservable } from 'micro-observables';
export interface Observable<T> {
    (): T;
    micro: MicroObservable<T>;
    select<U>(selector: (val: T) => U | Observable<U>): Observable<U>;
}
export declare namespace Observable {
    interface Writable<T> extends Observable<T> {
        (value: T): void;
    }
}
export declare function observable<T>(value: T): Observable.Writable<T>;
export declare function useObservable<T>(observable: Observable<T> | MicroObservable<T>): T;
