import { Observer, Accessor, AccessorT } from "./observer"; function _min(): Observer { let min: number; return { observe: (value: number, idx: number) => { if (idx === 0) { min = value; } else if (min > value) { min = value; } }, peek: () => min }; } export type MinAccessor = AccessorT; export function min(): Observer; export function min(callbackFn: MinAccessor): Observer; export function min(callbackFn?: MinAccessor): Observer | Observer { return callbackFn ? Accessor(_min, callbackFn) : _min(); }