# types/surface.types.ts

> 31 lines of code and 7 definitions.

Tree: Site tree
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/tree#file-types-surface-types-ts
Source text: https://banes-lab.com/source/tree/types/surface.types.ts.txt

Listed in [types](https://banes-lab.com/api/source/tree/types.md), after [types/site.types.ts](https://banes-lab.com/source/tree/types/site.types.ts.md) and before [types/syntax.types.ts](https://banes-lab.com/source/tree/types/syntax.types.ts.md).

## Definitions

- `SurfaceFigureName` (type_alias_declaration, line 1, exported)
- `SurfaceLine` (interface_declaration, line 3, exported)
- `SurfaceFrame` (interface_declaration, line 8, exported)
- `Segment` (interface_declaration, line 15, exported)
- `SurfaceScript` (interface_declaration, line 21, exported)
- `LineEdit` (interface_declaration, line 26, exported)
- `SurfaceRecording` (interface_declaration, line 32, exported)

## Source

```typescript
export type SurfaceFigureName = "delivery" | "owner" | "venue" | "wait";

export interface SurfaceLine {
    readonly text: string;
    readonly changed: boolean;
}

export interface SurfaceFrame {
    readonly command: string;
    readonly output: string;
    readonly surface: string;
    readonly lines: readonly SurfaceLine[];
}

export interface Segment {
    readonly ms: number;
    readonly begin?: () => void;
    readonly advance?: (progress: number) => void;
}

export interface SurfaceScript {
    readonly segments: readonly Segment[];
    readonly settled: number;
}

export interface LineEdit {
    readonly at: number;
    readonly removed: number;
    readonly inserted: readonly SurfaceLine[];
}

export interface SurfaceRecording {
    readonly figure: SurfaceFigureName;
    readonly inputs: string;
    readonly opening: readonly string[];
    readonly frames: readonly SurfaceFrame[];
}
```
