import type { ObserverOrNext } from './Observer';
import { Subscription } from './Subscription';
export interface Unsubscribable {
    unsubscribe(): void;
}
type Producer<T> = (observer: ObserverOrNext<T>) => Subscription;
export interface Subscribable<T> {
    subscribe(observerOrNext: ObserverOrNext<T>): Unsubscribable;
}
export declare class Observable<T> implements Subscribable<T> {
    protected _closed: boolean;
    private _producer;
    constructor(producer?: Producer<T>);
    get closed(): boolean;
    subscribe(observerOrNext: ObserverOrNext<T>): Subscription;
}
export {};
