# SerializedPort

Import it from `@grafloria/engine`.

Also has every member of `SerializedEntity`, listed on its own entry.

```ts
interface SerializedPort extends SerializedEntity
```

**Properties**

| Name | Type | Default | Description |
| --- | --- | --- | --- |
| `nodeId` | `string` |  |  |
| `type` | `'input' \| 'output' \| 'bi'` |  |  |
| `systemType?` | `string` |  |  |
| `position` | `PortPosition` |  |  |
| `alignment` | `PortAlignment` |  |  |
| `offset` | `Point` |  |  |
| `index` | `number` |  |  |
| `maxConnections` | `number \| null` |  |  |
| `allowedTypes` | `string[]` |  |  |
| `visible` | `boolean` |  |  |
| `style` | `Record<string, any>` |  |  |
| `data` | `Record<string, any>` |  |  |
| `renderingConfig?` | `any` |  |  |
| `group?` | `string` |  |  |
| `explicitSide?` | `boolean` |  | Was `side`/`alignment` explicitly declared (vs. inherited from a group)? |
| `shape?` | `PortShapeSpec` |  |  |
| `label?` | `PortLabelSpec` |  |  |
| `layout?` | `PortLayoutSpec` |  |  |
| `fromSpot?` | `PortSpot` |  |  |
| `toSpot?` | `PortSpot` |  |  |
| `spread?` | `PortSpreadSpec` |  |  |
| `dataType?` | `string` |  |  |
| `isConnectableStart?` | `boolean` |  |  |
| `isConnectableEnd?` | `boolean` |  |  |
| `fromMaxLinks?` | `number \| null` |  | null = unlimited (mirrors the `maxConnections` sentinel). |
| `toMaxLinks?` | `number \| null` |  |  |
| `allowSelfLink?` | `boolean` |  |  |
| `allowDuplicateLinks?` | `boolean` |  |  |
| `dynamic?` | `boolean` |  | True for ports spawned by the dynamic auto-port allocator. |
