# types/validation.types.ts

> 27 lines of code and 6 definitions.

Tree: GovLab Quality
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/quality#file-quality-types-validation-types-ts
Source text: https://banes-lab.com/source/quality/types/validation.types.ts.txt

Listed in [types](https://banes-lab.com/api/source/quality/types.md), after [types/tool.types.ts](https://banes-lab.com/source/quality/types/tool.types.ts.md).

## Definitions

- `FileInput` (interface_declaration, line 3, exported)
- `ValidatorMeta` (interface_declaration, line 8, exported)
- `ProjectValidator` (interface_declaration, line 13, exported)
- `FileReader` (type_alias_declaration, line 20, exported)
- `ValidationInput` (interface_declaration, line 22, exported)
- `ValidationResult` (interface_declaration, line 29, exported)

## Contained in

- [types](https://banes-lab.com/anatomy/quality/folder-quality-types.md)

## Source

```typescript
import type { Finding } from "#types/finding.types";

export interface FileInput {
    path: string;
    content: string;
}

export interface ValidatorMeta {
    canonical: readonly string[];
    description: string;
}

export interface ProjectValidator {
    id: string;
    appliesTo: readonly string[] | "*";
    meta: ValidatorMeta;
    validate: (files: readonly FileInput[], consumers: readonly FileInput[]) => Finding[];
}

export type FileReader = (path: string) => string;

export interface ValidationInput {
    consumers: readonly string[];
    files: readonly string[];
    readFile: FileReader;
    validators: readonly ProjectValidator[];
}

export interface ValidationResult {
    clean: boolean;
    findings: Finding[];
    panel: string;
}
```
