/**
 * Adapter is based on [@most/adapter](https://github.com/mostjs/adapter), and adds
 * some fp-ts instances.
 * @since 0.9.2
 */
import * as MA from '@most/adapter';
import { Stream } from '@most/types';
import { Functor2 } from 'fp-ts/Functor';
import { Predicate } from 'fp-ts/Predicate';
import { Profunctor2 } from 'fp-ts/Profunctor';
import { Refinement } from 'fp-ts/Refinement';
/**
 * @since 0.9.2
 * @category URI
 */
export declare const URI = "@most/adapter";
/**
 * @since 0.9.2
 * @category URI
 */
export declare type URI = typeof URI;
declare module 'fp-ts/HKT' {
    interface URItoKind2<E, A> {
        [URI]: Adapter<E, A>;
    }
}
/**
 * @since 0.9.2
 * @category Model
 */
export declare type Adapter<A, B = A> = readonly [...MA.Adapter<A, B>];
/**
 * Apply a stream transformation to an Adapter
 * @since 0.9.2
 * @category Combinator
 */
export declare const adapt: <A, B>(f: (stream: Stream<A>) => Stream<B>) => <C>([send, stream]: readonly [(event: C) => void, Stream<A>]) => readonly [(event: C) => void, Stream<B>];
/**
 * @since 0.9.2
 * @category Constructor
 */
export declare function create<A>(): Adapter<A>;
export declare function create<A, B>(f: (stream: Stream<A>) => Stream<B>): Adapter<A, B>;
/**
 * @since 0.9.2
 * @category Combinator
 */
export declare function local<A, B>(f: (value: A) => B): <C>([send, stream]: readonly [(event: B) => void, Stream<C>]) => readonly [(event: A) => void, Stream<C>];
/**
 * @since 0.9.2
 * @category Combinator
 */
export declare function map<A, B>(f: (value: A) => B): <C>(adapter: Adapter<C, A>) => Adapter<C, B>;
/**
 * @since 0.9.2
 * @category Combinator
 */
export declare const promap: <B, A, C, D>(f: (value: B) => A, g: (value: C) => D) => (adapter: readonly [(event: A) => void, Stream<C>]) => readonly [(event: B) => void, Stream<D>];
/**
 * @since 0.9.2
 * @category Combinator
 */
export declare function filter<A, B extends A>(f: Refinement<A, B>): <C>(adapter: Adapter<C, A>) => Adapter<C, B>;
export declare function filter<A>(f: Predicate<A>): <C>(adapter: Adapter<C, A>) => Adapter<C, A>;
/**
 * @since 0.9.2
 * @category Instance
 */
export declare const Functor: Functor2<URI>;
/**
 * @since 0.9.2
 * @category Instance
 */
export declare const Profunctor: Profunctor2<URI>;
//# sourceMappingURL=Adapter.d.ts.map