package logicerr

import "errors"

// Logical is a wrapper for logical errors.
type Logical struct {
	err error
}

// New returns simple error with a provided error message.
func New(msg string) Logical {
	return Wrap(errors.New(msg))
}

// Error implements the error interface.
func (e Logical) Error() string {
	return e.err.Error()
}

// Wrap wraps arbitrary error into a logical one.
func Wrap(err error) Logical {
	return Logical{err: err}
}

// Unwrap returns underlying error.
func (e Logical) Unwrap() error {
	return e.err
}