# types/surface.types.ts

> 43 lines of code and 10 definitions.

Tree: Bane's Lab Build Scripts
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/build-scripts#file-build-scripts-types-surface-types-ts
Source text: https://banes-lab.com/source/build-scripts/types/surface.types.ts.txt

Listed in [types](https://banes-lab.com/api/source/build-scripts/types.md), after [types/structure.types.ts](https://banes-lab.com/source/build-scripts/types/structure.types.ts.md) and before [types/tab.types.ts](https://banes-lab.com/source/build-scripts/types/tab.types.ts.md).

## Definitions

- `ScenarioTool` (type_alias_declaration, line 3, exported)
- `ToolStep` (interface_declaration, line 5, exported)
- `WaitStep` (interface_declaration, line 14, exported)
- `WriteStep` (interface_declaration, line 21, exported)
- `ScenarioStep` (type_alias_declaration, line 27, exported)
- `SampleFile` (interface_declaration, line 29, exported)
- `Scenario` (interface_declaration, line 34, exported)
- `Region` (interface_declaration, line 39, exported)
- `FigureFrame` (interface_declaration, line 44, exported)
- `SurfaceRecord` (interface_declaration, line 50, exported)

## Contained in

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

## Source

```typescript
import type { SurfaceFigureName, SurfaceFrame } from "@banes-lab/web/types/surface.types.ts";

export type ScenarioTool = "await" | "govern";

export interface ToolStep {
    readonly kind: "tool";
    readonly tool: ScenarioTool;
    readonly args: readonly string[];
    readonly exit: number | null;
    readonly figures: readonly SurfaceFigureName[];
    readonly delivers: boolean;
}

export interface WaitStep {
    readonly kind: "wait";
    readonly args: readonly string[];
    readonly exit: number;
    readonly figures: readonly SurfaceFigureName[];
}

export interface WriteStep {
    readonly kind: "write";
    readonly text: string;
    readonly figures: readonly SurfaceFigureName[];
}

export type ScenarioStep = ToolStep | WaitStep | WriteStep;

export interface SampleFile {
    readonly name: string;
    readonly text: string;
}

export interface Scenario {
    readonly samples: readonly SampleFile[];
    readonly steps: readonly ScenarioStep[];
}

export interface Region {
    readonly from: number;
    readonly to: number;
}

export interface FigureFrame {
    readonly figure: SurfaceFigureName;
    readonly before: readonly string[];
    readonly frame: SurfaceFrame;
}

export interface SurfaceRecord {
    readonly figures: number;
    readonly reused: boolean;
}
```
