import { Stream, Subject } from '../xs'; import { State } from './state'; import { Actions, XcomponentClass, Update } from '../interfaces'; import { $ } from './typeclasses'; import { Functor } from './typeclasses/functor'; import { Cartesian } from './typeclasses/cartesian'; import { Apply } from './typeclasses/apply'; import * as React from 'react'; export declare class FantasyX { plan: State, $>>; constructor(plan: State, $>>); apply(WrappedComponent: XcomponentClass | React.ComponentClass | React.SFC, actions?: Actions): XcomponentClass; toStream(intent$: Subject): $>; map(f: (a: A) => B): FantasyX; foldS(f: (s: S, a: A) => S): FantasyX>; combine(f: (a: A, b: B) => C, fB: FantasyX): FantasyX; merge(fB: FantasyX): FantasyX; } declare module './typeclasses' { interface _ { "FantasyX": FantasyX; } } export declare class FantasyXFunctor implements Functor<"FantasyX"> { map(f: (a: A) => B, fa: FantasyX): FantasyX; } declare module './typeclasses/functor' { namespace Functor { let FantasyX: FantasyXFunctor; } } export declare class FantasyXCartesian implements Cartesian<"FantasyX"> { product(fa: FantasyX, fb: FantasyX): FantasyX; } declare module './typeclasses/cartesian' { namespace Cartesian { let FantasyX: FantasyXCartesian; } } export declare class FantasyXApply implements Apply<"FantasyX"> { ap(fab: FantasyX B>, fa: FantasyX): FantasyX; map: (f: (a: A) => B, fa: FantasyX<"ArrayStream" | "MostStream" | "RxStream", I, S, A>) => FantasyX<"ArrayStream" | "MostStream" | "RxStream", I, S, B>; product: (fa: FantasyX<"ArrayStream" | "MostStream" | "RxStream", I, S, A>, fb: FantasyX<"ArrayStream" | "MostStream" | "RxStream", I, S, B>) => FantasyX<"ArrayStream" | "MostStream" | "RxStream", I, S, [A, B]>; } declare module './typeclasses/apply' { namespace Apply { let FantasyX: FantasyXApply; } } export declare class FantasyXApplicative extends FantasyXApply { pure(v: A): FantasyX; } declare module './typeclasses/applicative' { namespace Applicative { let FantasyX: FantasyXApplicative; } }