-type field() :: atom() | binary() | string().
-type filter() :: {rsql, comparison | 'and' | 'or', binary()}.
-type value() :: integer() | float() | boolean() | atom() | binary() | string().
-spec and_(filter(), filter()) -> filter().
-spec build(filter() | binary()) -> binary().
-spec eq(field(), value()) -> filter().
-spec ge(field(), value()) -> filter().
-spec gt(field(), value()) -> filter().
-spec in(field(), [value(), ...]) -> filter().
-spec is_not_null(field()) -> filter().
-spec is_null(field()) -> filter().
-spec le(field(), value()) -> filter().
-spec lt(field(), value()) -> filter().
-spec ne(field(), value()) -> filter().
-spec or_(filter(), filter()) -> filter().
-spec out(field(), [value(), ...]) -> filter().