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