@vived/component-abb-controller 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/COMPONENT_KNOWLEDGE.md +198 -0
  3. package/LICENSE +15 -0
  4. package/dist/AbbControllerEvents.d.ts +42 -0
  5. package/dist/AbbControllerEvents.d.ts.map +1 -0
  6. package/dist/AbbControllerFacade.d.ts +80 -0
  7. package/dist/AbbControllerFacade.d.ts.map +1 -0
  8. package/dist/AbbControllerState.d.ts +28 -0
  9. package/dist/AbbControllerState.d.ts.map +1 -0
  10. package/dist/Domain/Adapters/abbControllerPMAdapter.d.ts +10 -0
  11. package/dist/Domain/Adapters/abbControllerPMAdapter.d.ts.map +1 -0
  12. package/dist/Domain/Controllers/abbControllerHitboxClicked.d.ts +8 -0
  13. package/dist/Domain/Controllers/abbControllerHitboxClicked.d.ts.map +1 -0
  14. package/dist/Domain/Controllers/abbControllerStateDefaults.d.ts +11 -0
  15. package/dist/Domain/Controllers/abbControllerStateDefaults.d.ts.map +1 -0
  16. package/dist/Domain/Controllers/applyAbbControllerState.d.ts +24 -0
  17. package/dist/Domain/Controllers/applyAbbControllerState.d.ts.map +1 -0
  18. package/dist/Domain/Controllers/checkVoltage.d.ts +7 -0
  19. package/dist/Domain/Controllers/checkVoltage.d.ts.map +1 -0
  20. package/dist/Domain/Controllers/createAbbController.d.ts +12 -0
  21. package/dist/Domain/Controllers/createAbbController.d.ts.map +1 -0
  22. package/dist/Domain/Controllers/disableHitbox.d.ts +7 -0
  23. package/dist/Domain/Controllers/disableHitbox.d.ts.map +1 -0
  24. package/dist/Domain/Controllers/enableHitbox.d.ts +6 -0
  25. package/dist/Domain/Controllers/enableHitbox.d.ts.map +1 -0
  26. package/dist/Domain/Controllers/getAbbControllerState.d.ts +7 -0
  27. package/dist/Domain/Controllers/getAbbControllerState.d.ts.map +1 -0
  28. package/dist/Domain/Controllers/onAbbControllerSelected.d.ts +7 -0
  29. package/dist/Domain/Controllers/onAbbControllerSelected.d.ts.map +1 -0
  30. package/dist/Domain/Controllers/onLockoutBlockedByPower.d.ts +7 -0
  31. package/dist/Domain/Controllers/onLockoutBlockedByPower.d.ts.map +1 -0
  32. package/dist/Domain/Controllers/onLockoutDisengaged.d.ts +7 -0
  33. package/dist/Domain/Controllers/onLockoutDisengaged.d.ts.map +1 -0
  34. package/dist/Domain/Controllers/onLockoutEngaged.d.ts +7 -0
  35. package/dist/Domain/Controllers/onLockoutEngaged.d.ts.map +1 -0
  36. package/dist/Domain/Controllers/onPowerOnBlockedByLockout.d.ts +7 -0
  37. package/dist/Domain/Controllers/onPowerOnBlockedByLockout.d.ts.map +1 -0
  38. package/dist/Domain/Controllers/onPoweredOff.d.ts +11 -0
  39. package/dist/Domain/Controllers/onPoweredOff.d.ts.map +1 -0
  40. package/dist/Domain/Controllers/onPoweredOn.d.ts +11 -0
  41. package/dist/Domain/Controllers/onPoweredOn.d.ts.map +1 -0
  42. package/dist/Domain/Controllers/onVoltageChecked.d.ts +7 -0
  43. package/dist/Domain/Controllers/onVoltageChecked.d.ts.map +1 -0
  44. package/dist/Domain/Controllers/setShowGhostLockHint.d.ts +12 -0
  45. package/dist/Domain/Controllers/setShowGhostLockHint.d.ts.map +1 -0
  46. package/dist/Domain/Controllers/tryLockOut.d.ts +10 -0
  47. package/dist/Domain/Controllers/tryLockOut.d.ts.map +1 -0
  48. package/dist/Domain/Controllers/tryPowerOff.d.ts +8 -0
  49. package/dist/Domain/Controllers/tryPowerOff.d.ts.map +1 -0
  50. package/dist/Domain/Controllers/tryPowerOn.d.ts +10 -0
  51. package/dist/Domain/Controllers/tryPowerOn.d.ts.map +1 -0
  52. package/dist/Domain/Controllers/tryToggleLockout.d.ts +10 -0
  53. package/dist/Domain/Controllers/tryToggleLockout.d.ts.map +1 -0
  54. package/dist/Domain/Controllers/tryTogglePower.d.ts +10 -0
  55. package/dist/Domain/Controllers/tryTogglePower.d.ts.map +1 -0
  56. package/dist/Domain/Controllers/tryUnlock.d.ts +8 -0
  57. package/dist/Domain/Controllers/tryUnlock.d.ts.map +1 -0
  58. package/dist/Domain/Entities/AbbControllerEntity.d.ts +55 -0
  59. package/dist/Domain/Entities/AbbControllerEntity.d.ts.map +1 -0
  60. package/dist/Domain/Entities/AbbControllerRepo.d.ts +28 -0
  61. package/dist/Domain/Entities/AbbControllerRepo.d.ts.map +1 -0
  62. package/dist/Domain/Factory/AbbControllerFeatureFactory.d.ts +26 -0
  63. package/dist/Domain/Factory/AbbControllerFeatureFactory.d.ts.map +1 -0
  64. package/dist/Domain/Factory/setupAbbControllerInstanceFactory.d.ts +11 -0
  65. package/dist/Domain/Factory/setupAbbControllerInstanceFactory.d.ts.map +1 -0
  66. package/dist/Domain/Mocks/MockAbbControllerCheckVoltageUC.d.ts +12 -0
  67. package/dist/Domain/Mocks/MockAbbControllerCheckVoltageUC.d.ts.map +1 -0
  68. package/dist/Domain/Mocks/MockAbbControllerLockoutUC.d.ts +16 -0
  69. package/dist/Domain/Mocks/MockAbbControllerLockoutUC.d.ts.map +1 -0
  70. package/dist/Domain/Mocks/MockAbbControllerPM.d.ts +11 -0
  71. package/dist/Domain/Mocks/MockAbbControllerPM.d.ts.map +1 -0
  72. package/dist/Domain/Mocks/MockAbbControllerPowerUC.d.ts +16 -0
  73. package/dist/Domain/Mocks/MockAbbControllerPowerUC.d.ts.map +1 -0
  74. package/dist/Domain/Mocks/MockAbbControllerSelectUC.d.ts +13 -0
  75. package/dist/Domain/Mocks/MockAbbControllerSelectUC.d.ts.map +1 -0
  76. package/dist/Domain/PMs/AbbControllerPM.d.ts +34 -0
  77. package/dist/Domain/PMs/AbbControllerPM.d.ts.map +1 -0
  78. package/dist/Domain/UCs/AbbControllerCheckVoltageUC.d.ts +24 -0
  79. package/dist/Domain/UCs/AbbControllerCheckVoltageUC.d.ts.map +1 -0
  80. package/dist/Domain/UCs/AbbControllerLockoutUC.d.ts +35 -0
  81. package/dist/Domain/UCs/AbbControllerLockoutUC.d.ts.map +1 -0
  82. package/dist/Domain/UCs/AbbControllerPowerUC.d.ts +31 -0
  83. package/dist/Domain/UCs/AbbControllerPowerUC.d.ts.map +1 -0
  84. package/dist/Domain/UCs/AbbControllerSelectUC.d.ts +32 -0
  85. package/dist/Domain/UCs/AbbControllerSelectUC.d.ts.map +1 -0
  86. package/dist/Domain/makeDomainForTesting.d.ts +18 -0
  87. package/dist/Domain/makeDomainForTesting.d.ts.map +1 -0
  88. package/dist/Frameworks/Babylon/AbbControllerAssetCache.d.ts +5 -0
  89. package/dist/Frameworks/Babylon/AbbControllerAssetCache.d.ts.map +1 -0
  90. package/dist/Frameworks/Babylon/AbbControllerBabylonView.d.ts +30 -0
  91. package/dist/Frameworks/Babylon/AbbControllerBabylonView.d.ts.map +1 -0
  92. package/dist/Frameworks/Babylon/CutoffKnobView.d.ts +28 -0
  93. package/dist/Frameworks/Babylon/CutoffKnobView.d.ts.map +1 -0
  94. package/dist/Frameworks/Babylon/HitboxView.d.ts +23 -0
  95. package/dist/Frameworks/Babylon/HitboxView.d.ts.map +1 -0
  96. package/dist/Frameworks/Babylon/LockView.d.ts +27 -0
  97. package/dist/Frameworks/Babylon/LockView.d.ts.map +1 -0
  98. package/dist/Frameworks/Babylon/SmartComponentView.d.ts +28 -0
  99. package/dist/Frameworks/Babylon/SmartComponentView.d.ts.map +1 -0
  100. package/dist/Frameworks/Babylon/createBabylonAbbController.d.ts +13 -0
  101. package/dist/Frameworks/Babylon/createBabylonAbbController.d.ts.map +1 -0
  102. package/dist/SmartComponent.d.ts +42 -0
  103. package/dist/SmartComponent.d.ts.map +1 -0
  104. package/dist/component.config.d.ts +18 -0
  105. package/dist/component.config.d.ts.map +1 -0
  106. package/dist/index.d.ts +55 -0
  107. package/dist/index.d.ts.map +1 -0
  108. package/dist/index.js +1313 -0
  109. package/package.json +53 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,16 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@vived/component-abb-controller` will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.1.0] — Unreleased
9
+
10
+ ### Added
11
+
12
+ - Initial scaffold of the **ABB Controller** VIVED smart component:
13
+ domain (Entity, Repo, UCs, PM, Adapter, Controllers, Factory), a
14
+ `AbbControllerFacade` implementing the `SmartComponent` contract, versioned
15
+ persisted state, a Babylon view implementing `SmartComponentView`, and a
16
+ per-scene asset cache.
@@ -0,0 +1,198 @@
1
+ # **ABB Controller** — VIVED Smart Component
2
+
3
+ ## Summary
4
+
5
+ `@vived/component-abb-controller` provides **ABB Controller** behavior and 3D integration for slide applications. Use it when you need to create and control one or more **ABB Controller** instances in a Babylon.js scene. The package exposes setup helpers, view bindings, and typed APIs for state-driven interactions.
6
+
7
+ - **Package**: `@vived/component-abb-controller`
8
+ - **Version**: `0.1.0`
9
+ - **GitHub**: `vivedlearning/component-abb-controller`
10
+
11
+ ## Discovery
12
+
13
+ - **Category**: `TODO: Domain / Subdomain`
14
+ - **Tags**: `TODO: add at least 5 tags with synonyms`
15
+ - **Visual Description**: `TODO: describe color, shape, size, and notable features`
16
+ - **Multi-instance**: `Yes`
17
+
18
+ ## Quick Start
19
+
20
+ 1. **Install package and peers**
21
+
22
+ ```bash
23
+ npm install @vived/component-abb-controller @vived/core @vived/app @babylonjs/core @babylonjs/loaders
24
+ ```
25
+
26
+ 2. **Register the feature factory**
27
+
28
+ ```typescript
29
+ import { makeAppObjectRepo, makeDomainFactoryRepo } from "@vived/core";
30
+ import { makeAbbControllerFeatureFactory } from "@vived/component-abb-controller";
31
+
32
+ const appObjects = makeAppObjectRepo();
33
+ const factoryRepo = makeDomainFactoryRepo(appObjects);
34
+
35
+ makeAbbControllerFeatureFactory(appObjects);
36
+ factoryRepo.setupDomain();
37
+ ```
38
+
39
+ 3. **Create the facade and load its view**
40
+
41
+ ```typescript
42
+ import { AbbControllerFacade } from "@vived/component-abb-controller";
43
+
44
+ const facade = new AbbControllerFacade("my-instance-1", appObjects); // sync, no Babylon
45
+ await facade.load(); // attaches the Babylon view
46
+ ```
47
+
48
+ 4. **Drive it and observe the view model**
49
+
50
+ ```typescript
51
+ const unsubscribe = facade.onViewModel((vm) => {
52
+ console.log(vm); // { isActive: boolean }
53
+ });
54
+
55
+ facade.toggleActive();
56
+
57
+ // Persist / restore
58
+ const state = facade.getState();
59
+ facade.applyState(state);
60
+ ```
61
+
62
+ See `docs/host-integration.md` for wiring the component into a host scene (placing the
63
+ model, shadows, picking, and host-owned highlight/selection presentation).
64
+
65
+ ## API Reference
66
+
67
+ ### Primary API — the facade
68
+
69
+ - `new AbbControllerFacade(id: string, appObjects: AppObjectRepo)` — wire the domain
70
+ instance synchronously (no Babylon).
71
+ - `load(variant?: string): Promise<void>` — load and attach the Babylon view.
72
+ - `onViewModel(cb: (vm: AbbControllerVM) => void): () => void` — subscribe to VM updates.
73
+ - `onEvent(event, cb): () => void` — subscribe to a typed event (`AbbControllerEventKeys`).
74
+ - `getState(): AbbControllerState` / `applyState(state): void` — versioned persisted state.
75
+ - `destroy(): void` — dispose the instance.
76
+
77
+ ### Advanced / host-integration API
78
+
79
+ - `makeAbbControllerFeatureFactory(appObjects)` — register the feature (required once).
80
+ - `AbbControllerBabylonView.get(appObject)` — the `SmartComponentView` seam
81
+ (`rootTransformNode`, `nodesByObjectId`, `shadowCasters`, `highlightGroupsByObjectId`).
82
+ - Flat controllers (`createAbbController`, `toggleActive`, `get/applyAbbControllerState`,
83
+ `onActivated`, `onDeactivated`) and `abbControllerPMAdapter` for observer-driven use.
84
+
85
+ ### Public Types
86
+
87
+ ```typescript
88
+ interface AbbControllerVM {
89
+ isActive: boolean;
90
+ }
91
+
92
+ type AbbControllerState = {
93
+ version: number;
94
+ isActive: boolean;
95
+ };
96
+ ```
97
+
98
+ ## 3D View
99
+
100
+ ### Asset Manifest
101
+
102
+ | Name | Asset ID | File |
103
+ | ------- | --------------- | ------------------------ |
104
+ | default | `TODO_ASSET_ID` | `AbbController.glb` |
105
+
106
+ ### Exposed Transform Nodes
107
+
108
+ - `TODO_NODE_1`
109
+ - `TODO_NODE_2`
110
+
111
+ ## Recipes
112
+
113
+ ### Recipe 1: Create and Toggle an Instance
114
+
115
+ ```typescript
116
+ import { AbbControllerFacade } from "@vived/component-abb-controller";
117
+
118
+ const facade = new AbbControllerFacade("machine-1", appObjects);
119
+ await facade.load();
120
+
121
+ facade.toggleActive();
122
+ ```
123
+
124
+ ### Recipe 2: Observe the View Model for UI
125
+
126
+ ```typescript
127
+ import type { AbbControllerVM } from "@vived/component-abb-controller";
128
+
129
+ const unsubscribe = facade.onViewModel((vm: AbbControllerVM) => {
130
+ console.log("isActive", vm.isActive);
131
+ });
132
+ ```
133
+
134
+ ### Recipe 3: Persist and Restore State
135
+
136
+ ```typescript
137
+ const snapshot = facade.getState(); // { version, isActive }
138
+
139
+ // ...later / after reload...
140
+ facade.applyState(snapshot); // best-effort: absent fields default, no throw on version drift
141
+ ```
142
+
143
+ ### Recipe 4: React to a Typed Event
144
+
145
+ ```typescript
146
+ import { AbbControllerEventKeys } from "@vived/component-abb-controller";
147
+
148
+ const off = facade.onEvent(AbbControllerEventKeys.activated, () => {
149
+ console.log("activated");
150
+ });
151
+ ```
152
+
153
+ ## Constraints & Defaults
154
+
155
+ - Default VM: `{ isActive: false }`; default state: `{ version, isActive: false }`.
156
+ - The facade constructor is synchronous and Babylon-free; call `await load()` before the
157
+ component renders in a scene.
158
+ - `applyState` is best-effort: it applies present fields, defaults absent ones, and never throws
159
+ on version mismatch.
160
+ - `@vived/app` must be provided by the host (peer dependency) so asset loading resolves against
161
+ the host's shared asset system.
162
+
163
+ ## Repository
164
+
165
+ | Field | Value |
166
+ | -------------- | -------------------------------------------- |
167
+ | Package | `@vived/component-abb-controller` |
168
+ | GitHub | `vivedlearning/component-abb-controller` |
169
+ | Version | `0.1.0` |
170
+ | Multi-instance | `Yes` |
171
+
172
+ ## Full Export List
173
+
174
+ Facade (primary surface):
175
+
176
+ - `AbbControllerFacade`
177
+ - `SmartComponent` (type)
178
+ - `AbbControllerState` (type) / `ABB_CONTROLLER_STATE_VERSION`
179
+ - `AbbControllerEvents` (type) / `AbbControllerEventKeys`
180
+
181
+ Advanced / host-integration surface:
182
+
183
+ - `AbbControllerEntity`, `makeAbbControllerEntity`
184
+ - `AbbControllerRepo`, `makeAbbControllerRepo`, `AbbControllerEntityFactory`
185
+ - `AbbControllerToggleActiveUC`, `makeAbbControllerToggleActiveUC`
186
+ - `AbbControllerPM`, `makeAbbControllerPM`, `AbbControllerVM`
187
+ - `abbControllerPMAdapter`
188
+ - Controllers: `createAbbController`, `toggleActive`, `onActivated`, `onDeactivated`, `getAbbControllerState`, `applyAbbControllerState`
189
+ - `AbbControllerFeatureFactory`, `makeAbbControllerFeatureFactory`
190
+ - `AbbControllerBabylonView`, `makeAbbControllerBabylonView`, `SmartComponentView` (type)
191
+ - `createBabylonAbbController`, `CreateBabylonAbbControllerOptions`
192
+ - `getAbbControllerAssetContainer`, `clearAbbControllerAssetCache`
193
+ - `MockAbbControllerPM`, `MockAbbControllerToggleActiveUC`
194
+ - `componentConfig`
195
+
196
+ ---
197
+
198
+ Maintainer note: internal architecture and contributor-focused implementation details belong in `COMPONENT_ARCHITECTURE.md`.
package/LICENSE ADDED
@@ -0,0 +1,15 @@
1
+ Copyright © 2026 VIVED Learning. All rights reserved.
2
+
3
+ This software and its associated documentation (the "Software") are the
4
+ proprietary and confidential property of VIVED Learning. The Software is
5
+ intended for internal use with VIVED Learning's player and infrastructure only.
6
+
7
+ No license, right, or permission is granted to any party to use, copy, modify,
8
+ merge, publish, distribute, sublicense, or sell the Software, in whole or in
9
+ part, except as expressly authorized in writing by VIVED Learning. Publication
10
+ of this package to a public registry does not constitute such authorization or
11
+ grant any license to it.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
15
+ FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT.
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Typed event catalog for ABB Controller.
3
+ *
4
+ * All events are payload-free — the host reads current state off `getState()` /
5
+ * `onViewModel()`, never off the event itself (per canon, pending
6
+ * vivian-knowledge#62). Each key has a matching subscribe-controller in
7
+ * `Domain/Controllers/` (`onPoweredOn`, `onPoweredOff`, etc.) wired into the
8
+ * facade's `onEvent` dispatch map.
9
+ */
10
+ export type AbbControllerEvents = {
11
+ /** A power-on attempt succeeded. */
12
+ poweredOn: () => void;
13
+ /** A power-off attempt succeeded (always succeeds). */
14
+ poweredOff: () => void;
15
+ /** A power-on attempt was refused because the controller is locked out. */
16
+ powerOnBlockedByLockout: () => void;
17
+ /** A lockout attempt succeeded. */
18
+ lockoutEngaged: () => void;
19
+ /** An unlock attempt succeeded (always succeeds). */
20
+ lockoutDisengaged: () => void;
21
+ /** A lockout attempt was refused because the controller is powered on. */
22
+ lockoutBlockedByPower: () => void;
23
+ /** A voltage check was performed. */
24
+ voltageChecked: () => void;
25
+ /** The whole-controller hitbox was clicked/selected. */
26
+ selected: () => void;
27
+ };
28
+ /**
29
+ * Exported event keys, so a host maps the facade's events without re-typing
30
+ * string literals. Keep in sync with `AbbControllerEvents`.
31
+ */
32
+ export declare const AbbControllerEventKeys: {
33
+ readonly poweredOn: "poweredOn";
34
+ readonly poweredOff: "poweredOff";
35
+ readonly powerOnBlockedByLockout: "powerOnBlockedByLockout";
36
+ readonly lockoutEngaged: "lockoutEngaged";
37
+ readonly lockoutDisengaged: "lockoutDisengaged";
38
+ readonly lockoutBlockedByPower: "lockoutBlockedByPower";
39
+ readonly voltageChecked: "voltageChecked";
40
+ readonly selected: "selected";
41
+ };
42
+ //# sourceMappingURL=AbbControllerEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbbControllerEvents.d.ts","sourceRoot":"","sources":["../src/AbbControllerEvents.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,oCAAoC;IACpC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,uDAAuD;IACvD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,2EAA2E;IAC3E,uBAAuB,EAAE,MAAM,IAAI,CAAC;IACpC,mCAAmC;IACnC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,qDAAqD;IACrD,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,0EAA0E;IAC1E,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAClC,qCAAqC;IACrC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,wDAAwD;IACxD,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;CAS2B,CAAC"}
@@ -0,0 +1,80 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ import type { AbbControllerVM } from "./Domain/PMs/AbbControllerPM";
3
+ import type { SmartComponent } from "./SmartComponent";
4
+ import type { AbbControllerEvents } from "./AbbControllerEvents";
5
+ import { AbbControllerState } from "./AbbControllerState";
6
+ /**
7
+ * AbbControllerFacade
8
+ *
9
+ * Host-facing facade for the ABB Controller smart component. It is the
10
+ * primary public surface: a host holds a component behind the `SmartComponent`
11
+ * structural contract and drives it entirely through this class. Internally it is
12
+ * pure composition — every method delegates to a flat controller.
13
+ *
14
+ * Two-phase lifecycle:
15
+ * 1. **construct** (sync, Babylon-free) — wires the domain via `createAbbController`.
16
+ * 2. **load** (async) — dynamically imports the Babylon view and attaches it, so
17
+ * constructing the facade pulls in zero Babylon and stays node-testable.
18
+ *
19
+ * This class references NO Babylon type — the framework-bound view surface is the
20
+ * separate `SmartComponentView` contract, obtained by the host through the Babylon
21
+ * layer, never through the facade.
22
+ */
23
+ export declare class AbbControllerFacade implements SmartComponent {
24
+ readonly id: string;
25
+ readonly interfaceVersion = 1;
26
+ private appObjects;
27
+ /**
28
+ * Dispatch map: event key → subscribe controller.
29
+ * Each controller has signature `(id, appObjects, cb: () => void) => () => void`.
30
+ */
31
+ private eventDispatchMap;
32
+ /**
33
+ * Synchronously wire the domain instance (entity, UCs, PM, adapter).
34
+ * Does NOT touch Babylon.
35
+ */
36
+ constructor(id: string, appObjects: AppObjectRepo);
37
+ /**
38
+ * Asynchronously load and attach the Babylon view. Required before the
39
+ * component renders in a 3D scene.
40
+ *
41
+ * @param variant - Optional asset variant. No variants are implemented in the
42
+ * starter, so an omitted or unrecognized variant loads the default asset
43
+ * (best-effort, per Contract v1).
44
+ */
45
+ load(variant?: string): Promise<void>;
46
+ /** Tear down the component and release all resources. */
47
+ destroy(): void;
48
+ /** Toggle the power state of the component. Returns true if successful. */
49
+ togglePower(): boolean;
50
+ /** Power on. Returns true if successful, false if refused (locked out). */
51
+ powerOn(): boolean;
52
+ /** Power off. Always succeeds. */
53
+ powerOff(): boolean;
54
+ /** Toggle the lockout state. Returns true if successful. */
55
+ toggleLockout(): boolean;
56
+ /** Engage the lockout. Returns true if successful, false if refused (powered on). */
57
+ lockOut(): boolean;
58
+ /** Disengage the lockout. Always succeeds. */
59
+ unlock(): boolean;
60
+ /** Check the controller's voltage. Notifies subscribers of the check. */
61
+ checkVoltage(): void;
62
+ /** Show or hide the always-visible ghost lock hint (training mode). */
63
+ setShowGhostLockHint(show: boolean): void;
64
+ /** Enable the whole-controller hitbox for single-target selection. */
65
+ enableHitbox(): void;
66
+ /** Disable the whole-controller hitbox, restoring sub-component interactivity. */
67
+ disableHitbox(): void;
68
+ getState(): AbbControllerState;
69
+ applyState(state: AbbControllerState): void;
70
+ /**
71
+ * Subscribe to a typed event. Returns an unsubscribe function.
72
+ */
73
+ onEvent<K extends keyof AbbControllerEvents>(event: K, cb: AbbControllerEvents[K]): () => void;
74
+ /**
75
+ * Subscribe to the reactive view model. Emits the current VM immediately,
76
+ * then on every change. Returns an unsubscribe function.
77
+ */
78
+ onViewModel(cb: (vm: AbbControllerVM) => void): () => void;
79
+ }
80
+ //# sourceMappingURL=AbbControllerFacade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbbControllerFacade.d.ts","sourceRoot":"","sources":["../src/AbbControllerFacade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAuB5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EACL,kBAAkB,EAEnB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IACxD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,gBAAgB,KAAK;IAC9B,OAAO,CAAC,UAAU,CAAgB;IAElC;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAYtB;IAEF;;;OAGG;gBACS,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa;IAMjD;;;;;;;OAOG;IAEG,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3C,yDAAyD;IACzD,OAAO,IAAI,IAAI;IAIf,2EAA2E;IAC3E,WAAW,IAAI,OAAO;IAItB,2EAA2E;IAC3E,OAAO,IAAI,OAAO;IAIlB,kCAAkC;IAClC,QAAQ,IAAI,OAAO;IAInB,4DAA4D;IAC5D,aAAa,IAAI,OAAO;IAIxB,qFAAqF;IACrF,OAAO,IAAI,OAAO;IAIlB,8CAA8C;IAC9C,MAAM,IAAI,OAAO;IAIjB,yEAAyE;IACzE,YAAY,IAAI,IAAI;IAIpB,uEAAuE;IACvE,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAIzC,sEAAsE;IACtE,YAAY,IAAI,IAAI;IAIpB,kFAAkF;IAClF,aAAa,IAAI,IAAI;IAIrB,QAAQ,IAAI,kBAAkB;IAQ9B,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAI3C;;OAEG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,mBAAmB,EACzC,KAAK,EAAE,CAAC,EACR,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC,GACzB,MAAM,IAAI;IAKb;;;OAGG;IACH,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI;CAK3D"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Versioned persisted state for ABB Controller.
3
+ *
4
+ * `powerOnVoltage` is deliberately excluded — it is an internal entity detail
5
+ * with no facade command to change it, so it is never part of the persisted
6
+ * snapshot.
7
+ *
8
+ * `applyState` restores `isPoweredOn` / `isLockedOut` through the entity's
9
+ * interlocked try-ops (never a raw setter), best-effort and forward-compatible:
10
+ * absent fields fall back to defaults, an unrecognized `version` is tolerated
11
+ * (never throws), and a snapshot claiming both powered-on and locked-out is
12
+ * rejected wholesale for that pair, leaving the entity's power/lockout state
13
+ * untouched. See `Domain/Controllers/applyAbbControllerState.ts`.
14
+ */
15
+ export declare const ABB_CONTROLLER_STATE_VERSION = 1;
16
+ export type AbbControllerState = {
17
+ /** Schema version; stamped by getState, tolerated by applyState. */
18
+ version: number;
19
+ /** Whether the controller is currently powered on. */
20
+ isPoweredOn: boolean;
21
+ /** Whether the controller is currently locked out. */
22
+ isLockedOut: boolean;
23
+ /** Whether the ghost lock hint is always shown (training mode). */
24
+ isShowingGhostLockHint: boolean;
25
+ /** Whether the whole-controller hitbox is enabled for selection. */
26
+ isHitboxEnabled: boolean;
27
+ };
28
+ //# sourceMappingURL=AbbControllerState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbbControllerState.d.ts","sourceRoot":"","sources":["../src/AbbControllerState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,WAAW,EAAE,OAAO,CAAC;IACrB,sDAAsD;IACtD,WAAW,EAAE,OAAO,CAAC;IACrB,mEAAmE;IACnE,sBAAsB,EAAE,OAAO,CAAC;IAChC,oEAAoE;IACpE,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type PmAdapter } from "@vived/core";
2
+ import { type AbbControllerVM } from "../PMs/AbbControllerPM";
3
+ /**
4
+ * PM Adapter for ABB Controller
5
+ *
6
+ * Connects UI views to the AbbControllerPM. Use this adapter in
7
+ * React components or Babylon views to subscribe to VM updates.
8
+ */
9
+ export declare const abbControllerPMAdapter: PmAdapter<AbbControllerVM>;
10
+ //# sourceMappingURL=abbControllerPMAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abbControllerPMAdapter.d.ts","sourceRoot":"","sources":["../../../src/Domain/Adapters/abbControllerPMAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAEhC;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,CAAC,eAAe,CAyC3D,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Framework boundary controller — called by the Babylon HitboxView when the
4
+ * `abb_controller_hitbox` mesh is picked. Notifies domain subscribers that
5
+ * the controller was selected.
6
+ */
7
+ export declare function abbControllerHitboxClicked(id: string, appObjects: AppObjectRepo): void;
8
+ //# sourceMappingURL=abbControllerHitboxClicked.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abbControllerHitboxClicked.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/abbControllerHitboxClicked.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,GACxB,IAAI,CAYN"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Default field values used to fill absent keys during best-effort state restore.
3
+ * Keep these in sync with the fields on `AbbControllerState` (minus `version`).
4
+ */
5
+ export declare const ABB_CONTROLLER_DEFAULT_STATE_FIELDS: {
6
+ readonly isPoweredOn: false;
7
+ readonly isLockedOut: false;
8
+ readonly isShowingGhostLockHint: false;
9
+ readonly isHitboxEnabled: false;
10
+ };
11
+ //# sourceMappingURL=abbControllerStateDefaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abbControllerStateDefaults.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/abbControllerStateDefaults.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,mCAAmC;;;;;CAKtC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ import type { AbbControllerState } from "../../AbbControllerState";
3
+ /**
4
+ * Controller: apply a persisted state to an instance, best-effort.
5
+ *
6
+ * Never throws: an absent field falls back to its default, and an
7
+ * unrecognized `version` is tolerated (the shape is applied field-by-field,
8
+ * not gated on version).
9
+ *
10
+ * Drives the interlocked entity through its try-ops only (never a raw
11
+ * setter), in the order that lets each of the three valid target
12
+ * combinations succeed:
13
+ * - off + unlocked → `tryPowerOff()` then `tryUnlock()`
14
+ * - off + locked → `tryPowerOff()` then `tryLockOut()`
15
+ * - on + unlocked → `tryUnlock()` then `tryPowerOn()`
16
+ * - on + locked → invalid combination (violates the interlock); the
17
+ * power/lockout portion is rejected wholesale and the entity's power/lockout
18
+ * state is left untouched.
19
+ *
20
+ * The ghost-lock-hint and hitbox flags are not interlocked, so they always
21
+ * apply directly regardless of the power/lockout branch above.
22
+ */
23
+ export declare function applyAbbControllerState(id: string, appObjects: AppObjectRepo, state: Partial<AbbControllerState>): void;
24
+ //# sourceMappingURL=applyAbbControllerState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyAbbControllerState.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/applyAbbControllerState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGnE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACjC,IAAI,CAwCN"}
@@ -0,0 +1,7 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Controller to check the voltage of an ABB Controller instance.
4
+ * Resolves the per-instance UC and delegates to it.
5
+ */
6
+ export declare function checkVoltage(id: string, appObjects: AppObjectRepo): void;
7
+ //# sourceMappingURL=checkVoltage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkVoltage.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/checkVoltage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,IAAI,CAYxE"}
@@ -0,0 +1,12 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Controller to create a new ABB Controller instance.
4
+ * Resolves the singleton AbbControllerRepo and delegates to its
5
+ * createAbbControllerEntity method.
6
+ *
7
+ * @param id - The ID for the new instance.
8
+ * @param appObjects - The AppObject repository.
9
+ * @returns The created AppObject, or undefined if the repo is not found.
10
+ */
11
+ export declare function createAbbController(id: string, appObjects: AppObjectRepo): import("@vived/core").AppObject | undefined;
12
+ //# sourceMappingURL=createAbbController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAbbController.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/createAbbController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,+CAc1B"}
@@ -0,0 +1,7 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Disables the whole-controller hitbox on the given controller, restoring
4
+ * sub-component interactions (knob, lock, ghost lock) in the view.
5
+ */
6
+ export declare function disableHitbox(id: string, appObjects: AppObjectRepo): void;
7
+ //# sourceMappingURL=disableHitbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disableHitbox.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/disableHitbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,IAAI,CAYzE"}
@@ -0,0 +1,6 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Enables the whole-controller hitbox for selection on the given controller.
4
+ */
5
+ export declare function enableHitbox(id: string, appObjects: AppObjectRepo): void;
6
+ //# sourceMappingURL=enableHitbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableHitbox.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/enableHitbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,IAAI,CAYxE"}
@@ -0,0 +1,7 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ import type { AbbControllerState } from "../../AbbControllerState";
3
+ /**
4
+ * Controller: read the versioned persisted state for an instance.
5
+ */
6
+ export declare function getAbbControllerState(id: string, appObjects: AppObjectRepo, version: number): AbbControllerState;
7
+ //# sourceMappingURL=getAbbControllerState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAbbControllerState.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/getAbbControllerState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGnE;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,OAAO,EAAE,MAAM,GACd,kBAAkB,CAqBpB"}
@@ -0,0 +1,7 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Subscribes to controller-selected events on the given controller.
4
+ * Returns an unsubscribe function.
5
+ */
6
+ export declare function onAbbControllerSelected(id: string, appObjects: AppObjectRepo, callback: () => void): () => void;
7
+ //# sourceMappingURL=onAbbControllerSelected.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onAbbControllerSelected.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/onAbbControllerSelected.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAYZ"}
@@ -0,0 +1,7 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Subscribes to lockout attempts blocked by power on the given controller.
4
+ * Returns an unsubscribe function.
5
+ */
6
+ export declare function onLockoutBlockedByPower(id: string, appObjects: AppObjectRepo, callback: () => void): () => void;
7
+ //# sourceMappingURL=onLockoutBlockedByPower.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onLockoutBlockedByPower.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/onLockoutBlockedByPower.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAYZ"}
@@ -0,0 +1,7 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Subscribes to successful lockout-disengaged transitions on the given
4
+ * controller. Returns an unsubscribe function.
5
+ */
6
+ export declare function onLockoutDisengaged(id: string, appObjects: AppObjectRepo, callback: () => void): () => void;
7
+ //# sourceMappingURL=onLockoutDisengaged.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onLockoutDisengaged.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/onLockoutDisengaged.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAYZ"}
@@ -0,0 +1,7 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Subscribes to successful lockout-engaged transitions on the given
4
+ * controller. Returns an unsubscribe function.
5
+ */
6
+ export declare function onLockoutEngaged(id: string, appObjects: AppObjectRepo, callback: () => void): () => void;
7
+ //# sourceMappingURL=onLockoutEngaged.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onLockoutEngaged.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/onLockoutEngaged.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAYZ"}
@@ -0,0 +1,7 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Subscribes to power-on attempts blocked by lockout on the given controller.
4
+ * Returns an unsubscribe function.
5
+ */
6
+ export declare function onPowerOnBlockedByLockout(id: string, appObjects: AppObjectRepo, callback: () => void): () => void;
7
+ //# sourceMappingURL=onPowerOnBlockedByLockout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onPowerOnBlockedByLockout.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/onPowerOnBlockedByLockout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAYZ"}
@@ -0,0 +1,11 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Subscribes to successful power-off transitions on the given controller.
4
+ * Returns an unsubscribe function.
5
+ *
6
+ * NOTE: placeholder subscribe-controller (renamed from the scaffold's
7
+ * `onDeactivated`) so the facade compiles against the real, ported
8
+ * `AbbControllerPowerUC`. The next slice wires the full 8-event catalog.
9
+ */
10
+ export declare function onPoweredOff(id: string, appObjects: AppObjectRepo, callback: () => void): () => void;
11
+ //# sourceMappingURL=onPoweredOff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onPoweredOff.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/onPoweredOff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAYZ"}
@@ -0,0 +1,11 @@
1
+ import { AppObjectRepo } from "@vived/core";
2
+ /**
3
+ * Subscribes to successful power-on transitions on the given controller.
4
+ * Returns an unsubscribe function.
5
+ *
6
+ * NOTE: placeholder subscribe-controller (renamed from the scaffold's
7
+ * `onActivated`) so the facade compiles against the real, ported
8
+ * `AbbControllerPowerUC`. The next slice wires the full 8-event catalog.
9
+ */
10
+ export declare function onPoweredOn(id: string, appObjects: AppObjectRepo, callback: () => void): () => void;
11
+ //# sourceMappingURL=onPoweredOn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onPoweredOn.d.ts","sourceRoot":"","sources":["../../../src/Domain/Controllers/onPoweredOn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAYZ"}