import { Source, Sink, Scheduler, Disposable, ScheduledTask } from '../interfaces';
import { MulticastDisposable } from './MulticastDisposable';
export declare class Multicast<T> implements Source<T>, Sink<T> {
    source: Source<T>;
    _stopId: ScheduledTask;
    protected sink: Sink<T>;
    protected activeCount: number;
    protected disposable: Disposable<T>;
    constructor(source: Source<T>);
    run(sink: Sink<T>, scheduler: Scheduler): MulticastDisposable<T>;
    _dispose(): void;
    _add(sink: Sink<T>): number;
    _remove(sink: Sink<T>): number;
    event(time: number, value: T): void;
    end(time: number, value?: T): void;
    error(time: number, err: Error): void;
}
