# `IGroupNode`

> Contract 2.0.0 · package sha256 `a857eca95b35921109faf997094bb4192f12527d9d0fcd4be7e97f06425bad6e` · generated from `configurator-runtime.d.ts` by `services/onsite-scripter/scripts/build-contract-docs.mjs`; edit the source, not this file.

Interface · `import type { IGroupNode } from '@holostep-configurators/runtime-client/contract';` · stable · since 2.0.0 · section 21. Stored data (vendored; replaces @holo/interfaces)

A stored group: a choice among its children, or a global-material group (`globalMaterial: true`) that [`select`](Writer.select.md) writes.

## Members

| Member | Kind | Summary |
| --- | --- | --- |
| <a id="type"></a>[`type`](IGroupNode.type.md) | property | Always 'GroupNode'. |
| <a id="defaultnodeid"></a>[`defaultNodeId?`](IGroupNode.defaultNodeId.md) | property | The selected child's `nodeId` (for a global-material group, the selected MaterialNode, which places nothing). |
| <a id="globalmaterial"></a>[`globalMaterial?`](IGroupNode.globalMaterial.md) | property | True: a global-material group; its children are MaterialNodes and [`select(group, material)`](Writer.select.md) picks one. |
| <a id="childdefaults"></a>[`childDefaults?`](IGroupNode.childDefaults.md) | property | Defaults for its child models. |

Inherited from [`IConfiguratorNode`](IConfiguratorNode.md): [`_id`](IConfiguratorNode._id.md), [`nodeId`](IConfiguratorNode.nodeId.md), [`label`](IConfiguratorNode.label.md), [`order`](IConfiguratorNode.order.md), [`enabled`](IConfiguratorNode.enabled.md), [`expanded`](IConfiguratorNode.expanded.md), [`createdAt`](IConfiguratorNode.createdAt.md), [`updatedAt`](IConfiguratorNode.updatedAt.md), [`children`](IConfiguratorNode.children.md), [`thumbnailUrl`](IConfiguratorNode.thumbnailUrl.md), [`attributes`](IConfiguratorNode.attributes.md).

## Declaration

```ts
export interface IGroupNode extends IConfiguratorNode {
  type: 'GroupNode';
  defaultNodeId?: string;
  globalMaterial?: boolean;
  childDefaults?: IChildDefaults;
}
```

## Generic-API test (spec 3.1)

| Rule | Result |
| --- | --- |
| 1. Neutral name | pass: `IGroupNode` names no product |
| 2. A precedent | not recorded: no ledger row (coverage.json) names this member or its owner |
| 3. Two apps, or labs | not recorded: no ledger row names this member or its owner |
| 4. The cheaper fix first | not recorded per member (Appendix B decides it per need) |
