# sig/dry/logic/builder.rbs

class Dry::Logic::Builder::Context
  def call: () -> untyped
  def initialize: () -> void
  def predicate: () -> untyped
end


# sig/dry/logic/evaluator.rbs

class Dry::Logic::Evaluator
  def initialize: () -> void
end


# sig/dry/logic/evaluator.rbs

class Dry::Logic::Evaluator::Attr < Dry::Logic::Evaluator::Evaluator
  def call: () -> untyped
end


# sig/dry/logic/evaluator.rbs

class Dry::Logic::Evaluator::Key < Dry::Logic::Evaluator::Evaluator
  def call: () -> untyped
end


# sig/dry/logic/evaluator.rbs

class Dry::Logic::Evaluator::Set
  def self.new: () -> untyped
  def call: () -> untyped
  def initialize: () -> void
end


# sig/dry/logic/operations/abstract.rbs

class Dry::Logic::Operations::Abstract
  def curry: () -> untyped
  def id: () -> untyped
  def initialize: () -> void
  def new: () -> untyped
  def to_ast: () -> untyped
  def with: () -> untyped
end


# sig/dry/logic/operations/and.rbs

class Dry::Logic::Operations::And < Dry::Logic::Operations::Binary
  def []: () -> untyped
  def call: () -> untyped
  def initialize: () -> void
  def type: () -> untyped
end


# sig/dry/logic/operations/attr.rbs

class Dry::Logic::Operations::Attr < Dry::Logic::Operations::Key
  def self.evaluator: () -> untyped
  def type: () -> untyped
end


# sig/dry/logic/operations/binary.rbs

class Dry::Logic::Operations::Binary < Dry::Logic::Operations::Abstract
  def ast: () -> untyped
  def initialize: () -> void
  def to_s: () -> untyped
end


# sig/dry/logic/operations/check.rbs

class Dry::Logic::Operations::Check < Dry::Logic::Operations::Unary
  def self.new: () -> untyped
  def []: () -> untyped
  def ast: () -> untyped
  def call: () -> untyped
  def initialize: () -> void
  def type: () -> untyped
end


# sig/dry/logic/operations/each.rbs

class Dry::Logic::Operations::Each < Dry::Logic::Operations::Unary
  def []: () -> untyped
  def call: () -> untyped
  def type: () -> untyped
end


# sig/dry/logic/operations/implication.rbs

class Dry::Logic::Operations::Implication < Dry::Logic::Operations::Binary
  def []: () -> untyped
  def call: () -> untyped
  def operator: () -> untyped
  def type: () -> untyped
end


# sig/dry/logic/operations/key.rbs

class Dry::Logic::Operations::Key < Dry::Logic::Operations::Unary
  def self.evaluator: () -> untyped
  def self.new: () -> untyped
  def []: () -> untyped
  def ast: () -> untyped
  def call: () -> untyped
  def initialize: () -> void
  def to_s: () -> untyped
  def type: () -> untyped
end


# sig/dry/logic/operations/negation.rbs

class Dry::Logic::Operations::Negation < Dry::Logic::Operations::Unary
  def []: () -> untyped
  def call: () -> untyped
  def type: () -> untyped
end


# sig/dry/logic/operations/or.rbs

class Dry::Logic::Operations::Or < Dry::Logic::Operations::Binary
  def []: () -> untyped
  def call: () -> untyped
  def type: () -> untyped
end


# sig/dry/logic/operations/set.rbs

class Dry::Logic::Operations::Set < Dry::Logic::Operations::Abstract
  def []: () -> untyped
  def ast: () -> untyped
  def call: () -> untyped
  def to_s: () -> untyped
  def type: () -> untyped
end


# sig/dry/logic/operations/unary.rbs

class Dry::Logic::Operations::Unary < Dry::Logic::Operations::Abstract
  def ast: () -> untyped
  def initialize: () -> void
  def to_s: () -> untyped
end


# sig/dry/logic/operations/xor.rbs

class Dry::Logic::Operations::Xor < Dry::Logic::Operations::Binary
  def []: () -> untyped
  def ast: () -> untyped
  def call: () -> untyped
  def type: () -> untyped
end


# sig/dry/logic/result.rbs

class Dry::Logic::Result
  def ast: () -> untyped
  def failure?: () -> untyped
  def initialize: () -> void
  def success?: () -> untyped
  def to_ast: () -> untyped
  def to_s: () -> untyped
  def type: () -> untyped
  def visit: () -> untyped
  def visit_and: () -> untyped
  def visit_hint: () -> untyped
  def visit_not: () -> untyped
  def visit_or: () -> untyped
  def visit_predicate: () -> untyped
  def visit_xor: () -> untyped
end


# sig/dry/logic/rule.rbs

class Dry::Logic::Rule
  def self.build: () -> untyped
  def self.interfaces: () -> untyped
  def self.specialize: () -> untyped
  def args_with_names: () -> untyped
  def ast: () -> untyped
  def bind: () -> untyped
  def curry: () -> untyped
  def eval_args: () -> untyped
  def id: () -> untyped
  def initialize: () -> void
  def parameters: () -> untyped
  def type: () -> untyped
  def with: () -> untyped
end


# sig/dry/logic/rule/interface.rbs

class Dry::Logic::Rule::Interface < Module
  def []: () -> untyped
  def call: () -> untyped
  def constant?: () -> untyped
  def curried?: () -> untyped
  def curried_args: () -> untyped
  def define_application: () -> untyped
  def define_constant_application: () -> untyped
  def define_constructor: () -> untyped
  def initialize: () -> void
  def name: () -> untyped
  def unapplied: () -> untyped
  def unapplied_args: () -> untyped
  def variable_arity?: () -> untyped
end


# sig/dry/logic/rule/predicate.rbs

class Dry::Logic::Rule::Predicate < Dry::Logic::Rule::Rule
  def self.specialize: () -> untyped
  def ast: () -> untyped
  def name: () -> untyped
  def to_s: () -> untyped
  def type: () -> untyped
end


# sig/dry/logic/rule_compiler.rbs

class Dry::Logic::RuleCompiler
  def call: () -> untyped
  def initialize: () -> void
  def visit: () -> untyped
  def visit_and: () -> untyped
  def visit_attr: () -> untyped
  def visit_check: () -> untyped
  def visit_each: () -> untyped
  def visit_implication: () -> untyped
  def visit_key: () -> untyped
  def visit_not: () -> untyped
  def visit_or: () -> untyped
  def visit_predicate: () -> untyped
  def visit_set: () -> untyped
  def visit_xor: () -> untyped
end


# sig/dry/logic.rbs

module Dry::Logic
  def self.Rule: () -> untyped
  def self.loader: () -> untyped
end


# sig/dry/logic/appliable.rbs

module Dry::Logic::Appliable
  def applied?: () -> untyped
  def failure?: () -> untyped
  def id: () -> untyped
  def result: () -> untyped
  def success?: () -> untyped
  def to_ast: () -> untyped
end


# sig/dry/logic/builder.rbs

module Dry::Logic::Builder
  def call: () -> untyped
end


# sig/dry/logic/operators.rbs

module Dry::Logic::Operators
  def and: () -> untyped
  def or: () -> untyped
  def then: () -> untyped
  def xor: () -> untyped
end


# sig/dry/logic/predicates.rbs

module Dry::Logic::Predicates
  def self.included: () -> untyped
end


# sig/dry/logic/predicates.rbs

module Dry::Logic::Predicates::Methods
  def self.uuid_format: () -> untyped
  def []: () -> untyped
  def array?: () -> untyped
  def attr?: () -> untyped
  def bool?: () -> untyped
  def bytesize?: () -> untyped
  def case?: () -> untyped
  def date?: () -> untyped
  def date_time?: () -> untyped
  def decimal?: () -> untyped
  def deprecated: () -> untyped
  def empty?: () -> untyped
  def eql?: () -> untyped
  def even?: () -> untyped
  def excluded_from?: () -> untyped
  def excludes?: () -> untyped
  def exclusion?: () -> untyped
  def false?: () -> untyped
  def filled?: () -> untyped
  def float?: () -> untyped
  def format?: () -> untyped
  def gt?: () -> untyped
  def gteq?: () -> untyped
  def hash?: () -> untyped
  def included_in?: () -> untyped
  def includes?: () -> untyped
  def inclusion?: () -> untyped
  def int?: () -> untyped
  def is?: () -> untyped
  def key?: () -> untyped
  def lt?: () -> untyped
  def lteq?: () -> untyped
  def max_bytesize?: () -> untyped
  def max_size?: () -> untyped
  def min_bytesize?: () -> untyped
  def min_size?: () -> untyped
  def nil?: () -> untyped
  def not_eql?: () -> untyped
  def number?: () -> untyped
  def odd?: () -> untyped
  def predicate: () -> untyped
  def respond_to?: () -> untyped
  def size?: () -> untyped
  def str?: () -> untyped
  def time?: () -> untyped
  def true?: () -> untyped
  def type?: () -> untyped
  def uri?: () -> untyped
  def uri?: () -> untyped
  def uri_rfc3986?: () -> untyped
  def uuid_v1?: () -> untyped
  def uuid_v2?: () -> untyped
  def uuid_v3?: () -> untyped
  def uuid_v4?: () -> untyped
  def uuid_v5?: () -> untyped
  def uuid_v6?: () -> untyped
  def uuid_v7?: () -> untyped
  def uuid_v8?: () -> untyped
end
