import argon2 from 'argon2'
import type { IPasswordHasher } from '../../domain/ports/password-hasher'

export class ArgonHasher implements IPasswordHasher {
  async hash(plain: string): Promise<string> {
    return argon2.hash(plain, {
      type: argon2.argon2id,
      memoryCost: 65536,
      timeCost: 3,
      parallelism: 1,
    })
  }

  async verify(plain: string, hash: string): Promise<boolean> {
    return argon2.verify(hash, plain)
  }
}
