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>;