-type args() :: [string()].
-opaque opt()
-type spec() :: map().
-opaque syntax()
-spec opt(Command, Name) -> Option when Command :: string() | undefined | {string() | undefined, string() | undefined}, Name :: atom(), Option :: opt().
-spec opt(Command, Name, Syntax) -> Option when Command :: string() | undefined | {string() | undefined, string() | undefined}, Name :: atom(), Syntax :: syntax() | undefined, Option :: opt().
-spec parse(Args, Syntax) -> Options | Error when Args :: args(), Syntax :: syntax(), Options :: {ok, {any(), args()}}, Error :: error.
-spec parse(Args, Syntax, Aliases) -> Options | Error when Args :: args(), Syntax :: syntax(), Aliases :: map(), Options :: {ok, {any(), args()}}, Error :: error.