import { Alternative1 } from 'fp-ts/lib/Alternative';
import * as E from 'fp-ts/lib/Either';
import { Filterable1 } from 'fp-ts/lib/Filterable';
import { Predicate } from 'fp-ts/lib/function';
import { Monad1 } from 'fp-ts/lib/Monad';
import { Monoid } from 'fp-ts/lib/Monoid';
import * as O from 'fp-ts/lib/Option';
import { Observable } from 'rxjs';
import { IO } from 'fp-ts/lib/IO';
import { Task } from 'fp-ts/lib/Task';
import { MonadIO1 } from 'fp-ts/lib/MonadIO';
import { MonadTask1 } from 'fp-ts/lib/MonadTask';
declare module 'fp-ts/lib/HKT' {
    interface URItoKind<A> {
        Observable: Observable<A>;
    }
}
/**
 * @since 0.6.0
 */
export declare const URI = "Observable";
/**
 * @since 0.6.0
 */
export declare type URI = typeof URI;
/**
 * @since 0.6.0
 */
export declare function getMonoid<A = never>(): Monoid<Observable<A>>;
export declare const fromTask: <A>(fa: Task<A>) => Observable<A>;
export declare function fromIO<A>(ma: IO<A>): Observable<A>;
/**
 * @since 0.6.0
 */
export declare const observable: Monad1<URI> & Alternative1<URI> & Filterable1<URI> & MonadIO1<URI> & MonadTask1<URI>;
declare const alt: <A>(that: () => Observable<A>) => (fa: Observable<A>) => Observable<A>, ap: <A>(fa: Observable<A>) => <B>(fab: Observable<(a: A) => B>) => Observable<B>, apFirst: <B>(fb: Observable<B>) => <A>(fa: Observable<A>) => Observable<A>, apSecond: <B>(fb: Observable<B>) => <A>(fa: Observable<A>) => Observable<B>, chain: <A, B>(f: (a: A) => Observable<B>) => (ma: Observable<A>) => Observable<B>, chainFirst: <A, B>(f: (a: A) => Observable<B>) => (ma: Observable<A>) => Observable<A>, compact: <A>(fa: Observable<O.Option<A>>) => Observable<A>, filter: {
    <A, B extends A>(refinement: import("fp-ts/lib/function").Refinement<A, B>): (fa: Observable<A>) => Observable<B>;
    <A_1>(predicate: Predicate<A_1>): (fa: Observable<A_1>) => Observable<A_1>;
}, filterMap: <A, B>(f: (a: A) => O.Option<B>) => (fa: Observable<A>) => Observable<B>, flatten: <A>(mma: Observable<Observable<A>>) => Observable<A>, map: <A, B>(f: (a: A) => B) => (fa: Observable<A>) => Observable<B>, partition: {
    <A, B extends A>(refinement: import("fp-ts/lib/function").Refinement<A, B>): (fa: Observable<A>) => import("fp-ts/lib/Compactable").Separated<Observable<A>, Observable<B>>;
    <A_1>(predicate: Predicate<A_1>): (fa: Observable<A_1>) => import("fp-ts/lib/Compactable").Separated<Observable<A_1>, Observable<A_1>>;
}, partitionMap: <A, B, C>(f: (a: A) => E.Either<B, C>) => (fa: Observable<A>) => import("fp-ts/lib/Compactable").Separated<Observable<B>, Observable<C>>, separate: <A, B>(fa: Observable<E.Either<A, B>>) => import("fp-ts/lib/Compactable").Separated<Observable<A>, Observable<B>>;
export { alt, ap, apFirst, apSecond, chain, chainFirst, compact, filter, filterMap, flatten, map, partition, partitionMap, separate };
