@callback validate(code :: String.t()) :: {:ok, code :: String.t()} | {:error, :length_too_short | :length_too_long | :invalid_length | :invalid_checksum}
@callback violates_checksum?(code :: String.t()) :: boolean()
@callback violates_length?(code :: String.t()) :: boolean()
@callback violates_length_too_long?(code :: String.t()) :: boolean()
@callback violates_length_too_short?(code :: String.t()) :: boolean()