# types/reason.node.types.ts

> 73 lines of code and 11 definitions.

Tree: GovLab Context
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/context#file-context-types-reason-node-types-ts
Source text: https://banes-lab.com/source/context/types/reason.node.types.ts.txt

Listed in [types](https://banes-lab.com/api/source/context/types.md), after [types/reason.concept.types.ts](https://banes-lab.com/source/context/types/reason.concept.types.ts.md) and before [types/reason.surface.types.ts](https://banes-lab.com/source/context/types/reason.surface.types.ts.md).

## Definitions

- `ReasonLayer` (interface_declaration, line 1, exported)
- `MathType` (interface_declaration, line 8, exported)
- `Axis` (interface_declaration, line 17, exported)
- `ReasonNode` (interface_declaration, line 27, exported)
- `SubstrateNode` (interface_declaration, line 40, exported)
- `CycleRecursion` (interface_declaration, line 48, exported)
- `Substrate` (interface_declaration, line 53, exported)
- `LoopStage` (interface_declaration, line 59, exported)
- `LoopTransition` (interface_declaration, line 64, exported)
- `DerivationLoop` (interface_declaration, line 73, exported)
- `ReasonEdge` (interface_declaration, line 79, exported)

## Contained in

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

## Source

```typescript
export interface ReasonLayer {
    id: string;
    label: string;
    question: string;
    aliases?: string[];
}

export interface MathType {
    id: string;
    domains: string[];
    question: string;
    predicateFamily: string;
    yieldsShape: string;
    aliases?: string[];
}

export interface Axis {
    id: string;
    layer: string;
    question: string;
    mandatory: string;
    primaryMathType: string;
    selectable: boolean;
    aliases?: string[];
}

export interface ReasonNode {
    id: string;
    name: string;
    axis: string;
    mathType: string;
    concept?: string;
    question?: string;
    answerShape?: string;
    decisionTest?: string;
    role?: string;
    aliases?: string[];
}

export interface SubstrateNode {
    id: string;
    name: string;
    layer: string;
    mathType: string;
    aliases?: string[];
}

export interface CycleRecursion {
    from: string;
    to: string;
}

export interface Substrate {
    cycle: string[];
    recursion: CycleRecursion;
    nodes: SubstrateNode[];
}

export interface LoopStage {
    id: string;
    axis: string;
}

export interface LoopTransition {
    from: string;
    to: string;
    kind: string;
    gate?: string;
    onFail?: string;
    onPass?: string;
}

export interface DerivationLoop {
    id: string;
    stages: LoopStage[];
    transitions: LoopTransition[];
}

export interface ReasonEdge {
    from: string;
    to?: string;
    label?: string;
}
```
