import { Observable, Subject, BehaviorSubject, Subscriber, TeardownLogic, ReplaySubject, SchedulerLike } from "rxjs";
export type Constructor<T> = new (...args: any[]) => T;
export type GenericConstructor<BaseT> = new <T extends BaseT>(...args: any[]) => T;
export type BaseObservable = Observable<unknown>;
export declare function ManagedObservableWrapper($class: Constructor<BaseObservable>): GenericConstructor<BaseObservable>;
declare const ManagedObservable_base: GenericConstructor<BaseObservable>;
export declare class ManagedObservable<T> extends ManagedObservable_base<Observable<T>> {
    constructor(componentInstance: any, subscribe?: (this: Observable<T>, subscriber: Subscriber<T>) => TeardownLogic);
}
declare const ManagedSubject_base: GenericConstructor<BaseObservable>;
export declare class ManagedSubject<T> extends ManagedSubject_base<Subject<T>> {
    constructor(componentInstance: any);
}
declare const ManagedBehaviorSubject_base: GenericConstructor<BaseObservable>;
export declare class ManagedBehaviorSubject<T> extends ManagedBehaviorSubject_base<BehaviorSubject<T>> {
    constructor(componentInstance: any, initialValue: T);
}
declare const ManagedReplaySubject_base: GenericConstructor<BaseObservable>;
export declare class ManagedReplaySubject<T> extends ManagedReplaySubject_base<ReplaySubject<T>> {
    constructor(componentInstance: any, bufferSize?: number, windowTime?: number, scheduler?: SchedulerLike);
}
export {};
