export type GetterFunc<R> = () => R;
export type Func<T, R> = (v: T) => R;
export type FuncTwoParam<T1, T2, R> = (arg1: T1, arg2: T2) => R;
export type VoidFuncNoParam = () => void;
/** @internal */
export type VoidFunc<T, R = undefined> = R extends undefined ? (v: T) => void : (v: T, r: R) => void;
export type OptionalVoidFunc<T> = (v?: T) => void;
export type SetStateFunc<T> = (value: T | ((prevValue: T) => T)) => void;
