import Validator from "@dikac/t-validator/simple";
import Validatable from "@dikac/t-validatable/validatable";
import MapReturn from "./validatable/record/infer";
import ValueInterface from "./value";
/**
* more specific implementation of {@link ValueCallback}
*
* Validate value with all record of {@link Validator}
*
* @param validators
* record of {@link Validator} to be used against {@template BaseType} or {@template ValueType}
*
* @param validation
*
* @param message
*
* @template BaseType
* Base value type for all {@link Validator}
*
* @template ValueType
* value type {@link Validator}
*
* @template MessageType
* message type {@link Validator}
*
* @template Validators
* type of {@param validators}
*
* @template ValidatableType
* result after processing {@template Validators} with {@template BaseType} or {@template ValueType}
*/
export default function ValueAllParameters> = Record>, ValidatableType extends Validatable = Validatable>(validators: Validators, validation: (result: MapReturn) => ValidatableType, message: (result: MapReturn) => MessageType): ValueInterface, ValidatableType>;