{
eql: i[type default null],
ot: i[type default null],
gt: i[type default null lt lte],
gte: i[type default null lt lte],
lt: i[type default null gt gte],
lte: i[type default null gt gte],
range: i[type default null],
enum: i[type default null],
type: i[default null eql ot gt gte lt lte range enum regexp length format],
array_type: i[default null length],
custom_type: i[default null],
active_record: i[default null],
length: i[type array],
regexp: i[type default null],
null: i[all],
default: i[all],
format: i[type default null],
}.freeze
{
integer: i[eql gt gte lt lte ot range enum null default],
float: i[eql gt gte lt lte ot range enum null default],
string: i[enum length eql ot regexp null default],
datetime: i[null default format],
json: i[null default],
boolean: i[null default],
hash: i[null default length],
array: i[null default length enum uniq],
}.freeze