///
import { C, Cont, CmdCommon, Context } from './core';
export declare type RepeatProps = {
kind: "repeat";
value: A;
p: (_: A) => C;
} & CmdCommon;
export declare type AllProps = {
kind: "all";
ps: Array>;
} & CmdCommon>;
export declare type AnyProps = {
kind: "any";
value: A;
ps: Array<(_: A) => C>;
className: string;
} & CmdCommon;
export declare type NeverProps = {
kind: "never";
p: C;
} & CmdCommon;
export declare type RetractProps = {
kind: "retract";
inb: (_: A) => B;
out: (_: A) => (_: B) => A;
p: (_: B) => C;
value: A;
} & CmdCommon;
export declare type DelayProps = {
kind: "delay";
dt: number;
value: A;
p: (_: A) => C;
} & CmdCommon;
export declare type WaitProps = {
kind: "wait";
dt: number;
value: A;
p: (_: A) => C;
} & CmdCommon;
export declare type RetryStrategy = "never" | "semi exponential" | {
kind: "retry then show failure";
times: number;
on_failure: C;
} | {
kind: "never";
on_failure: C;
};
export declare type LiftPromiseProps = {
kind: "lift promise";
p: (_: B) => Promise;
retry_strategy: RetryStrategy;
value: B;
} & CmdCommon;
export declare type SimpleMenuType = "side menu" | {
kind: "tabs";
max_tabs: number;
};
export declare let repeat: (key?: string, dbg?: () => string) => (p: (_: A) => C) => (_: A) => C;
export declare let any: (key?: string, className?: string, dbg?: () => string) => (ps: ((_: A) => C)[]) => (_: A) => C;
export declare let never: (p: C, key?: string) => C;
export declare let all: (ps: C[], key?: string, dbg?: () => string) => C;
export declare let retract: (key?: string, dbg?: () => string) => (inb: (_: A) => B, out: (_: A) => (_: B) => A, p: (_: B) => C) => (_: A) => C;
export declare let lift_promise: (p: (_: A) => Promise, retry_strategy: RetryStrategy, key?: string, dbg?: () => string) => (_: A) => C;
export declare let delay: (dt: number, key?: string, dbg?: () => string) => (p: (_: A) => C) => (_: A) => C;
export declare let waiting: (dt: number, key?: string, dbg?: () => string) => (p: (_: A) => C) => (_: A) => C;
export declare let mk_submenu_entry: (label: string, children: MenuEntryValue[]) => MenuEntrySubMenu;
export declare let mk_menu_entry: (v: A) => MenuEntryValue;
export declare type MenuEntryValue = {
kind: "item";
value: A;
};
export declare type MenuEntrySubMenu = {
kind: "sub menu";
label: string;
children: Array>;
};
export declare type MenuEntry = MenuEntryValue | MenuEntrySubMenu;
export declare let simple_menu: (type: SimpleMenuType, to_string: (_: A) => string, key?: string, dbg?: () => string) => (items: MenuEntry[], p: (_: A) => C, selected_item?: A, selected_sub_menu?: string) => C;
export declare let custom: (key?: string, dbg?: () => string) => (render: (ctxt: () => Context) => (_: Cont) => JSX.Element) => C;
export declare let hide: (f_name: string, f: C) => C;