@type t() :: float()
@spec default() :: t()
@spec max() :: t()
@spec min() :: t()
@spec valid?(any()) :: boolean()