import { talkbackPlaceholder } from './Wonka_helpers.bs';
import {
talkbackT,
signalT
} from '../Wonka_types.gen';
type talkbackCb = (tb: talkbackT) => void;
export const pull: talkbackT = 0;
export const close: talkbackT = 1;
export const start = (tb: talkbackCb): signalT => ({TAG: 0, "_0": tb});
export const push = (x: a): signalT => ({TAG: 1, "_0": x});
export const end = (): signalT => 0;
export const isStart = (s: signalT) =>
typeof s !== 'number' && s.TAG === 0;
export const isPush = (s: signalT) =>
typeof s !== 'number' && s.TAG === 1;
export const isEnd = (s: signalT) =>
typeof s === 'number' && s === 0;
export const unboxPush = (s: signalT): a | null =>
isPush(s) ? s["_0"] : null;
export const unboxStart = (s: signalT): talkbackCb =>
isStart(s) ? s["_0"] : (talkbackPlaceholder as any);