export type Predicate = { (value: T): boolean; displayName?: string; }; export type RuleFn = (value: T) => string | null; export type RuleTuple = [Predicate, string]; export type RuleBuilder = (predicate: Predicate, errorMessage?: string) => RuleFn;