package apperrors

import "errors"

var (
	ErrAccountNotFound      = errors.New("account not found")
	ErrIncorrectPassword    = errors.New("incorrect password")
	ErrAccountInactive      = errors.New("account is inactive")
	ErrAccountSuspended    = errors.New("account is suspended")
	ErrAccountLocked       = errors.New("account is temporarily locked")
	ErrTokenGenerationFailed = errors.New("failed to generate authentication token")
)

// AuthError represents an authentication error with a specific type
type AuthError struct {
	Type    string
	Message string
	Code    string
}

func (e *AuthError) Error() string {
	return e.Message
}

// NewAuthError creates a new authentication error
func NewAuthError(errType, message, code string) *AuthError {
	return &AuthError{
		Type:    errType,
		Message: message,
		Code:    code,
	}
}

