import * as React from "react"; export interface Action extends Fun { } export interface Unit { } export declare type Fun = (_: a) => b; export declare let then: (f: Fun, g: Fun) => Fun; export interface Pair { fst: a; snd: b; } export declare let mk_pair: (a: a, b: b) => { fst: a; snd: b; }; export interface Sum { v: { kind: "l"; v: a; } | { kind: "r"; v: b; }; } export declare let inl: (a: a) => Sum; export declare let inr: (b: b) => Sum; export interface Option extends Sum { } export declare let none: () => Option; export declare let some: (v: a) => Option; export interface Options { readonly?: boolean; autofocus?: boolean; key?: string; className?: string; role?: string; style?: React.CSSProperties; id?: string; extraProperties?: {}; } export declare let option: (k: k, o?: t | undefined) => t[k] | undefined; export interface WidgetBase { run: (on_done: (output: o) => void) => JSX.Element; } export interface Widget extends WidgetBase { map: (f: Fun) => Widget; filter: (p: Fun) => Widget; then: (k: Fun>) => Widget; never: () => Widget; } export declare let mk_widget: , o>(w: w) => Widget; export declare type IOWidget = (input: i) => Widget; export declare const nothing: () => Widget; export declare let never_io: (inner_widget: IOWidget) => IOWidget; export declare let never: (inner_widget: Widget<{}>) => Widget; export declare let map: (f: Fun) => Fun, Widget>; export interface JoinerProps { widget_a2: Widget>; on_done_a: (output_a: a) => void; } export interface JoinerState { inner_widget: Widget | undefined; } export declare class Joiner extends React.Component, JoinerState> { constructor(props: JoinerProps, context: any); render(): JSX.Element; } export declare let join: (widget_a2: Widget>) => Widget; export declare let bind: (widget_a: Widget, widget_b_from_a: Fun>) => Widget; export declare let filter: (p: Fun) => Fun, Widget>;