class Stytch::Passwords

def authenticate(

def authenticate(
  email:,
  password:,
  session_token: nil,
  session_jwt: nil,
  session_duration_minutes: nil,
  session_custom_claims: nil
)
  request = {
    email: email,
    password: password
  }
  request[:session_token] = session_token unless session_token.nil?
  request[:session_jwt] = session_jwt unless session_jwt.nil?
  request[:session_duration_minutes] = session_duration_minutes unless session_duration_minutes.nil?
  request[:session_custom_claims] = session_custom_claims unless session_custom_claims.nil?
  post_request("#{PATH}/authenticate", request)
end

def create(

def create(
  email:,
  password:,
  name: {},
  session_duration_minutes: nil,
  session_custom_claims: nil,
  trusted_metadata: {},
  untrusted_metadata: {}
)
  request = {
    email: email,
    password: password
  }
  request[:name] = name if name != {}
  request[:session_duration_minutes] = session_duration_minutes unless session_duration_minutes.nil?
  request[:session_custom_claims] = session_custom_claims unless session_custom_claims.nil?
  request[:trusted_metadata] = trusted_metadata if trusted_metadata != {}
  request[:untrusted_metadata] = untrusted_metadata if untrusted_metadata != {}
  post_request(PATH.to_s, request)
end

def initialize(connection)

def initialize(connection)
  @connection = connection
  @email = Stytch::Passwords::Email.new(@connection)
  @existing_password = Stytch::Passwords::ExistingPassword.new(@connection)
  @session = Stytch::Passwords::Session.new(@connection)
end

def migrate(

def migrate(
  email:,
  hash:,
  hash_type:,
  name: {},
  trusted_metadata: {},
  untrusted_metadata: {},
  md_5_config: {},
  argon_2_config: {},
  sha_1_config: {},
  scrypt_config: {}
)
  request = {
    email: email,
    hash: hash,
    hash_type: hash_type
  }
  request[:name] = name if name != {}
  request[:trusted_metadata] = trusted_metadata if trusted_metadata != {}
  request[:untrusted_metadata] = untrusted_metadata if untrusted_metadata != {}
  request[:md_5_config] = md_5_config unless md_5_config != {}
  request[:argon_2_config] = argon_2_config unless argon_2_config != {}
  request[:sha_1_config] = sha_1_config unless sha_1_config != {}
  request[:scrypt_config] = scrypt_config unless scrypt_config != {}
  post_request("#{PATH}/migrate", request)
end

def strength_check(

def strength_check(
  password:,
  email: nil
)
  request = {
    password: password
  }
  request[:email] = email unless email.nil?
  post_request("#{PATH}/strength_check", request)
end