package com.airlock.iam.base.api.domain.model.validation;

import java.util.List;

public interface ValidationResult {
   boolean isValid();

   default boolean isNotValid() {
      return !this.isValid();
   }

   String getFailure();

   <T extends ValidationResultType> boolean contains(T var1);

   List<ValidatorError> getErrors();

   static ValidationResult singleError(String field, ValidationResultType type) {
      return ValidationResultImpl.invalidResult(ValidatorError.validatorError(field, type));
   }

   static ValidationResult valid() {
      return ValidationResultImpl.valid();
   }

   static ValidationResult invalid(List<ValidatorError> errors) {
      return ValidationResultImpl.invalidResult(errors);
   }

   static ValidationResult invalid(ValidatorError error) {
      return ValidationResultImpl.invalidResult(error);
   }

   static ValidationResult invalid(ValidatorError.ValidatorErrorBuilder error) {
      return invalid(error.build());
   }

   static ValidationResult invalid() {
      return ValidationResultImpl.invalidResult();
   }

   boolean hasError(String var1, ValidationResultType var2);

   ValidationResult mergeWith(ValidationResult var1);
}
