type ValOrRet = T | (() => T); type Cond = ValOrRet; declare const sw: (condition: ValOrRet, arr: Record> | ValOrRet[]) => string | T | undefined; declare const ternary: (cond: Cond, a: ValOrRet, b: ValOrRet) => Z; interface Retter { (): T; else(val: ValOrRet): Retter; elseif(cond: Cond, val: ValOrRet): Retter; } declare const fi: (cond: Cond, val: ValOrRet) => Retter; export { sw, ternary, fi };