class StrongJSON def initialize: { (self) -> void } -> any def let: (Symbol, ty) -> void include StrongJSON::Types end StrongJSON::VERSION: String interface StrongJSON::_Schema<'type> def coerce: (any, ?path: ::Array) -> 'type def =~: (any) -> bool def to_s: -> String def is_a?: (any) -> bool end type StrongJSON::ty = _Schema module StrongJSON::Types def object: <'x> (Hash) -> Type::Object<'x> | () -> Type::Object> def object?: <'x> (Hash) -> Type::Optional<'x> def any: () -> Type::Base def optional: <'x> (_Schema<'x>) -> Type::Optional<'x> | () -> Type::Optional def string: () -> Type::Base def string?: () -> Type::Optional def number: () -> Type::Base def number?: () -> Type::Optional def numeric: () -> Type::Base def numeric?: () -> Type::Optional def boolean: () -> Type::Base def boolean?: () -> Type::Optional def symbol: () -> Type::Base def symbol?: () -> Type::Optional def array: <'x> (_Schema<'x>) -> Type::Array<'x> | () -> Type::Array def array?: <'x> (_Schema<'x>) -> Type::Optional<::Array<'x>> def literal: <'x> ('x) -> Type::Literal<'x> def literal?: <'x> ('x) -> Type::Optional<'x> def enum: <'x> (*_Schema) -> Type::Enum<'x> def enum?: <'x> (*_Schema) -> Type::Optional<'x> def ignored: () -> _Schema def prohibited: () -> _Schema end