-type mod_type() :: high | low | plus | minus.
-type result() :: {result, integer(), list(), list(), integer()}.
-type roll() :: {roll, [integer()], integer(), [mod_type()]}.
-type rolls() :: [roll()].
-spec chance(rolls(), integer()) -> float().
-spec format(string(), rolls()) -> string().
-spec parse(string()) -> rolls().
-spec possible(roll()) -> [integer()].
-spec query(string()) -> result().
-spec roll(roll()) -> result().