{-# LANGUAGE TemplateHaskell #-}

module Wire.VerificationCodeStore where

import Data.RetryAfter
import Imports
import Polysemy
import Wire.VerificationCode

data VerificationCodeStore m a where
  InsertCode :: Code -> VerificationCodeStore m ()
  LookupCode :: Key -> Scope -> VerificationCodeStore m (Maybe Code)
  DeleteCode :: Key -> Scope -> VerificationCodeStore m ()
  InsertThrottle :: Key -> Scope -> Word -> VerificationCodeStore m ()
  LookupThrottle :: Key -> Scope -> VerificationCodeStore m (Maybe RetryAfter)

makeSem ''VerificationCodeStore