# types/learning.types.ts

> 85 lines of code and 14 definitions.

Tree: Site tree
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/tree#file-types-learning-types-ts
Source text: https://banes-lab.com/assets/sources/source.01df4404a98a51222e91addc704048f7effffb67c245352b5738f1c397d4616a.generated.txt

## Definitions

- `LearningStop` (interface_declaration, line 1, exported)
- `LearningBlock` (interface_declaration, line 8, exported)
- `LaidStop` (interface_declaration, line 15, exported)
- `LaidBlock` (interface_declaration, line 28, exported)
- `LearningModel` (interface_declaration, line 43, exported)
- `LearningPoint` (interface_declaration, line 49, exported)
- `PlacedStop` (interface_declaration, line 54, exported)
- `LearningView` (interface_declaration, line 59, exported)
- `Geometry` (interface_declaration, line 65, exported)
- `LearningSample` (interface_declaration, line 70, exported)
- `Framed` (interface_declaration, line 75, exported)
- `LearningMark` (interface_declaration, line 81, exported)
- `LearningSpan` (interface_declaration, line 87, exported)
- `LearningGrid` (interface_declaration, line 93, exported)

## Source

```typescript
export interface LearningStop {
    readonly id: string;
    readonly label: string;
    readonly path: string;
    readonly requires: readonly string[];
}

export interface LearningBlock {
    readonly code: string;
    readonly label: string;
    readonly owner: string;
    readonly stops: readonly LearningStop[];
}

export interface LaidStop {
    readonly cx: number;
    readonly cy: number;
    readonly height: number;
    readonly id: string;
    readonly path: string;
    readonly requires: readonly string[];
    readonly rows: readonly string[];
    readonly width: number;
    readonly x: number;
    readonly y: number;
}

export interface LaidBlock {
    readonly accent: string;
    readonly code: string;
    readonly cx: number;
    readonly cy: number;
    readonly height: number;
    readonly icon: string;
    readonly label: string;
    readonly owner: string;
    readonly stops: readonly LaidStop[];
    readonly width: number;
    readonly x: number;
    readonly y: number;
}

export interface LearningModel {
    readonly blocks: readonly LaidBlock[];
    readonly height: number;
    readonly width: number;
}

export interface LearningPoint {
    readonly x: number;
    readonly y: number;
}

export interface PlacedStop extends LaidStop {
    readonly block: LaidBlock;
    readonly node: Element;
}

export interface LearningView {
    readonly stops: readonly PlacedStop[];
    readonly trace: Element;
    readonly vector: Element;
}

export interface Geometry {
    readonly getPointAtLength: (at: number) => LearningPoint;
    readonly getTotalLength: () => number;
}

export interface LearningSample {
    readonly at: number;
    readonly point: LearningPoint;
}

export interface Framed {
    readonly box: Record<string, unknown>;
    readonly geometry: Geometry;
    readonly style: Record<string, unknown>;
}

export interface LearningMark {
    readonly at: number;
    lit: boolean;
    readonly stop: PlacedStop;
}

export interface LearningSpan {
    readonly fast: boolean;
    readonly from: number;
    readonly to: number;
}

export interface LearningGrid {
    readonly blocked: Uint8Array;
    readonly tall: number;
    readonly taken: Uint8Array;
    readonly wide: number;
}
```
