export default class AbstractSpecification { public and(other: AbstractSpecification): AndSpecification; public or(other: AbstractSpecification): OrSpecification; public xor(other: AbstractSpecification): XorSpecification; public not(other: AbstractSpecification): NotSpecification; public isSatisfiedBy(candidate: any): boolean; } export class AndSpecification extends AbstractSpecification { constructor(specificationA: AbstractSpecification, specificationB: AbstractSpecification); _specificationA: AbstractSpecification; _specificationB: AbstractSpecification; } export class OrSpecification extends AbstractSpecification { constructor(specificationA: any, specificationB: any); _specificationA: any; _specificationB: any; } export class XorSpecification extends AbstractSpecification { constructor(specificationA: any, specificationB: any); _specificationA: any; _specificationB: any; } export class NotSpecification extends AbstractSpecification { constructor(specification: any); _specification: any; } export class TrueSpecification extends AbstractSpecification { isSatisfiedBy(candidate: any): boolean; } export class FalseSpecification extends AbstractSpecification { isSatisfiedBy(candidate: any): boolean; }