export interface ISpecification { getErrorMessage(): string; isSatisfiedBy(candidate: T): boolean; isSatisfiedByAsync(candidate: T): Promise; }