module Tapioca::Dsl::Compilers::Extensions::Kredis

def collect_kredis_type(method, type, values: nil)

def collect_kredis_type(method, type, values: nil)
  @__tapioca_kredis_types ||= {}
  @__tapioca_kredis_types[method.to_s] = { type: type, values: values }
end

def kredis_boolean(name, key: nil, default: nil, config: :shared, after_change: nil, expires_in: nil)

def kredis_boolean(name, key: nil, default: nil, config: :shared, after_change: nil, expires_in: nil)
  collect_kredis_type(name, "Kredis::Types::Scalar")
  super
end

def kredis_counter(name, key: nil, default: nil, config: :shared, after_change: nil, expires_in: nil)

def kredis_counter(name, key: nil, default: nil, config: :shared, after_change: nil, expires_in: nil)
  collect_kredis_type(name, "Kredis::Types::Counter")
  super
end

def kredis_datetime(name, key: nil, default: nil, config: :shared, after_change: nil, expires_in: nil)

def kredis_datetime(name, key: nil, default: nil, config: :shared, after_change: nil, expires_in: nil)
  collect_kredis_type(name, "Kredis::Types::Scalar")
  super
end

def kredis_decimal(name, key: nil, default: nil, config: :shared, after_change: nil, expires_in: nil)

def kredis_decimal(name, key: nil, default: nil, config: :shared, after_change: nil, expires_in: nil)
  collect_kredis_type(name, "Kredis::Types::Scalar")
  super
end

def kredis_enum(name, key: nil, values:, default:, config: :shared, after_change: nil)

def kredis_enum(name, key: nil, values:, default:, config: :shared, after_change: nil)
  collect_kredis_type(name, "Kredis::Types::Enum", values: values)
  super
end

def kredis_flag(name, key: nil, default: nil, config: :shared, after_change: nil, expires_in: nil)

def kredis_flag(name, key: nil, default: nil, config: :shared, after_change: nil, expires_in: nil)
  collect_kredis_type(name, "Kredis::Types::Flag")
  super
end

def kredis_float(name, key: nil, default: nil, config: :shared, after_change: nil, expires_in: nil)

def kredis_float(name, key: nil, default: nil, config: :shared, after_change: nil, expires_in: nil)
  collect_kredis_type(name, "Kredis::Types::Scalar")
  super
end

def kredis_hash(name, key: nil, default: nil, typed: :string, config: :shared, after_change: nil)

def kredis_hash(name, key: nil, default: nil, typed: :string, config: :shared, after_change: nil)
  collect_kredis_type(name, "Kredis::Types::Hash")
  super
end

def kredis_integer(name, key: nil, default: nil, config: :shared, after_change: nil, expires_in: nil)

def kredis_integer(name, key: nil, default: nil, config: :shared, after_change: nil, expires_in: nil)
  collect_kredis_type(name, "Kredis::Types::Scalar")
  super
end

def kredis_json(name, key: nil, default: nil, config: :shared, after_change: nil, expires_in: nil)

def kredis_json(name, key: nil, default: nil, config: :shared, after_change: nil, expires_in: nil)
  collect_kredis_type(name, "Kredis::Types::Scalar")
  super
end

def kredis_list(name, key: nil, default: nil, typed: :string, config: :shared, after_change: nil)

def kredis_list(name, key: nil, default: nil, typed: :string, config: :shared, after_change: nil)
  collect_kredis_type(name, "Kredis::Types::List")
  super
end

def kredis_proxy(name, key: nil, config: :shared, after_change: nil)

def kredis_proxy(name, key: nil, config: :shared, after_change: nil)
  collect_kredis_type(name, "Kredis::Types::Proxy")
  super
end

def kredis_set(name, key: nil, default: nil, typed: :string, config: :shared, after_change: nil)

def kredis_set(name, key: nil, default: nil, typed: :string, config: :shared, after_change: nil)
  collect_kredis_type(name, "Kredis::Types::Set")
  super
end

def kredis_slot(name, key: nil, config: :shared, after_change: nil)

def kredis_slot(name, key: nil, config: :shared, after_change: nil)
  collect_kredis_type(name, "Kredis::Types::Slots")
  super
end

def kredis_slots(name, available:, key: nil, config: :shared, after_change: nil)

def kredis_slots(name, available:, key: nil, config: :shared, after_change: nil)
  collect_kredis_type(name, "Kredis::Types::Slots")
  super
end

def kredis_string(name, key: nil, default: nil, config: :shared, after_change: nil, expires_in: nil)

def kredis_string(name, key: nil, default: nil, config: :shared, after_change: nil, expires_in: nil)
  collect_kredis_type(name, "Kredis::Types::Scalar")
  super
end

def kredis_unique_list(name, limit: nil, key: nil, default: nil, typed: :string, config: :shared,

def kredis_unique_list(name, limit: nil, key: nil, default: nil, typed: :string, config: :shared,
  after_change: nil)
  collect_kredis_type(name, "Kredis::Types::UniqueList")
  super
end