@typecad/cuttlefish 1.0.0-alpha.6 → 1.0.0-alpha.8

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 (187) hide show
  1. package/dist/api/config.d.ts +32 -0
  2. package/dist/api/index.d.ts +1 -1
  3. package/dist/api/schema/types.d.ts +15 -0
  4. package/dist/api/shared/async-runtime-static.d.ts +12 -1
  5. package/dist/api/shared/async-runtime-static.js +69 -24
  6. package/dist/api/shared/async-symbol-detector.d.ts +11 -0
  7. package/dist/api/shared/async-symbol-detector.js +140 -0
  8. package/dist/api/shared/async-types.d.ts +24 -0
  9. package/dist/api/shared/coop-scheduler.d.ts +60 -0
  10. package/dist/api/shared/coop-scheduler.js +149 -0
  11. package/dist/api/shared/display-adapter.d.ts +4 -3
  12. package/dist/api/shared/display-adapter.js +15 -118
  13. package/dist/api/shared/display-adapters/sdl.js +38 -31
  14. package/dist/api/shared/display-profile.d.ts +47 -25
  15. package/dist/api/shared/display-profile.js +31 -164
  16. package/dist/api/shared/framework-manifest-registry.d.ts +9 -0
  17. package/dist/api/shared/framework-manifest-registry.js +27 -0
  18. package/dist/api/shared/framework-manifest.d.ts +581 -0
  19. package/dist/api/shared/framework-manifest.js +182 -0
  20. package/dist/api/shared/glcdfont.d.ts +12 -0
  21. package/dist/api/shared/glcdfont.js +124 -0
  22. package/dist/api/shared/graphics-strategy.d.ts +37 -0
  23. package/dist/api/shared/hal-op-ir.d.ts +755 -1
  24. package/dist/api/shared/hal-op-ir.js +129 -1
  25. package/dist/api/shared/index.d.ts +20 -2
  26. package/dist/api/shared/index.js +25 -1
  27. package/dist/api/shared/ir-core.d.ts +4 -0
  28. package/dist/api/shared/ir-declarations.d.ts +6 -0
  29. package/dist/api/shared/native-display-op-resolver.d.ts +10 -0
  30. package/dist/api/shared/native-display-op-resolver.js +64 -0
  31. package/dist/api/shared/platform-strategy.d.ts +113 -2
  32. package/dist/api/shared/polyfill-helper-registry.js +18 -1
  33. package/dist/api/shared/promise-runtime.d.ts +1 -1
  34. package/dist/api/shared/promise-runtime.js +95 -13
  35. package/dist/api/shared/toolchain-types.d.ts +17 -0
  36. package/dist/api/shared/validate-framework-manifest.d.ts +28 -0
  37. package/dist/api/shared/validate-framework-manifest.js +494 -0
  38. package/dist/api/shared/worker-runtime-polyfill.d.ts +22 -0
  39. package/dist/api/shared/worker-runtime-polyfill.js +34 -0
  40. package/dist/api/shared/worker-runtime.d.ts +69 -0
  41. package/dist/api/shared/worker-runtime.js +163 -0
  42. package/dist/cli.js +186 -82
  43. package/dist/config-loader.d.ts +7 -2
  44. package/dist/config-loader.js +23 -3
  45. package/dist/config-schema.d.ts +112 -70
  46. package/dist/config-schema.js +14 -0
  47. package/dist/contract/board-generator.d.ts +17 -0
  48. package/dist/contract/board-generator.js +57 -0
  49. package/dist/contract/contract-parser.d.ts +217 -0
  50. package/dist/contract/contract-parser.js +224 -0
  51. package/dist/contract/index.d.ts +22 -0
  52. package/dist/contract/index.js +68 -0
  53. package/dist/create/board-codegen.js +4 -4
  54. package/dist/create/board-generators.js +4 -5
  55. package/dist/create/board-spec.d.ts +72 -75
  56. package/dist/create/board-spec.js +0 -1
  57. package/dist/create/init-scaffold.d.ts +9 -2
  58. package/dist/create/init-scaffold.js +0 -14
  59. package/dist/create/init-templates.d.ts +2 -0
  60. package/dist/create/init-templates.js +74 -8
  61. package/dist/create/init-wizard.js +31 -7
  62. package/dist/debug/preprocessor.js +178 -39
  63. package/dist/debug/types.d.ts +23 -0
  64. package/dist/diagnostics/mermaid-builder.d.ts +1 -1
  65. package/dist/diagnostics/mermaid-builder.js +34 -24
  66. package/dist/emit/compliance/arxml-writer.d.ts +11 -0
  67. package/dist/emit/compliance/arxml-writer.js +34 -0
  68. package/dist/emit/compliance/compliance-context.d.ts +57 -0
  69. package/dist/emit/compliance/compliance-context.js +113 -0
  70. package/dist/emit/compliance/deviation-ledger.d.ts +27 -0
  71. package/dist/emit/compliance/deviation-ledger.js +47 -0
  72. package/dist/emit/compliance/deviation-writer.d.ts +30 -0
  73. package/dist/emit/compliance/deviation-writer.js +37 -0
  74. package/dist/emit/compliance/index.d.ts +7 -0
  75. package/dist/emit/compliance/index.js +6 -0
  76. package/dist/emit/compliance/rule-engine.d.ts +13 -0
  77. package/dist/emit/compliance/rule-engine.js +101 -0
  78. package/dist/emit/compliance/rules.d.ts +16 -0
  79. package/dist/emit/compliance/rules.js +191 -0
  80. package/dist/emit/compliance/types.d.ts +59 -0
  81. package/dist/emit/compliance/types.js +8 -0
  82. package/dist/emit/cpp-emitter.js +4 -3
  83. package/dist/emit/emitters/class-emitter.js +6 -1
  84. package/dist/emit/emitters/emitter-context.d.ts +28 -1
  85. package/dist/emit/emitters/function-emitter-impl.js +153 -53
  86. package/dist/emit/emitters/line-appender.js +19 -0
  87. package/dist/emit/emitters/line-marker.d.ts +38 -0
  88. package/dist/emit/emitters/line-marker.js +39 -0
  89. package/dist/emit/emitters/output-finalizer.d.ts +6 -0
  90. package/dist/emit/emitters/output-finalizer.js +101 -12
  91. package/dist/emit/emitters/setup.d.ts +17 -0
  92. package/dist/emit/emitters/setup.js +257 -36
  93. package/dist/emit/emitters/top-level-prep.js +8 -0
  94. package/dist/emit/emitters/type-decl-emitter.js +28 -3
  95. package/dist/emit/emitters/ui-emitter.js +33 -9
  96. package/dist/emit/expression-renderer.d.ts +1 -1
  97. package/dist/emit/expression-renderer.js +91 -6
  98. package/dist/emit/route-hal-op.js +18 -5
  99. package/dist/emit/snprintf-helpers.js +15 -4
  100. package/dist/emit/statement-renderer.d.ts +10 -0
  101. package/dist/emit/statement-renderer.js +34 -5
  102. package/dist/emit/utils/async-state-machine.js +221 -125
  103. package/dist/emit/utils/hal-op-cpp-type.d.ts +6 -0
  104. package/dist/emit/utils/hal-op-cpp-type.js +40 -0
  105. package/dist/framework-package.js +2 -0
  106. package/dist/framework-registry.d.ts +17 -0
  107. package/dist/ir/adc-range-validation.js +14 -1
  108. package/dist/ir/build-ir-state.d.ts +1 -0
  109. package/dist/ir/build-ir-state.js +14 -0
  110. package/dist/ir/build-ir.js +9 -5
  111. package/dist/ir/call-graph.js +16 -0
  112. package/dist/ir/expression-to-ir.js +164 -0
  113. package/dist/ir/feature-registry.js +7 -25
  114. package/dist/ir/function-builder.js +22 -0
  115. package/dist/ir/hal/hal-emitter.d.ts +5 -2
  116. package/dist/ir/hal/hal-emitter.js +50 -18
  117. package/dist/ir/hal/hal-parser.d.ts +6 -0
  118. package/dist/ir/hal/hal-parser.js +81 -0
  119. package/dist/ir/hal/hal-plugins.js +723 -1
  120. package/dist/ir/identifier-collector.js +35 -0
  121. package/dist/ir/interrupt-analysis.d.ts +5 -1
  122. package/dist/ir/interrupt-analysis.js +8 -16
  123. package/dist/ir/network-validation.d.ts +4 -0
  124. package/dist/ir/network-validation.js +184 -0
  125. package/dist/ir/ownership-analysis.js +20 -1
  126. package/dist/ir/pin-capability-validation.js +37 -0
  127. package/dist/ir/pin-mode-validation.d.ts +2 -2
  128. package/dist/ir/pin-mode-validation.js +49 -18
  129. package/dist/ir/program-analysis.d.ts +65 -0
  130. package/dist/ir/program-analysis.js +318 -2
  131. package/dist/ir/render-expr.js +11 -0
  132. package/dist/ir/timing-validation.d.ts +6 -1
  133. package/dist/ir/timing-validation.js +60 -13
  134. package/dist/ir/transformers/call-statement.js +105 -0
  135. package/dist/ir/transformers/expressions.js +62 -0
  136. package/dist/ir/transformers/hal-call-resolver.js +21 -0
  137. package/dist/ir/transformers/hal-emit-helpers.js +1 -1
  138. package/dist/ir/transformers/namespace-methods.js +17 -12
  139. package/dist/ir/transformers/ui-reactive.js +2 -2
  140. package/dist/ir/transformers/variables.js +92 -3
  141. package/dist/ir/type-resolution.js +18 -0
  142. package/dist/ir/ui-element-auto-wire.js +7 -5
  143. package/dist/ir/utils/map-statements.d.ts +4 -0
  144. package/dist/ir/utils/map-statements.js +79 -0
  145. package/dist/ir/validation-orchestrator.js +9 -2
  146. package/dist/ir/worker-analysis.d.ts +10 -0
  147. package/dist/ir/worker-analysis.js +261 -0
  148. package/dist/libdef/c-to-decl.d.ts +27 -0
  149. package/dist/libdef/c-to-decl.js +397 -0
  150. package/dist/libdef/component-decls.d.ts +2 -0
  151. package/dist/libdef/component-decls.js +6 -0
  152. package/dist/libdef/component-discovery.d.ts +43 -0
  153. package/dist/libdef/component-discovery.js +83 -0
  154. package/dist/libdef/cpp-to-decl.d.ts +9 -0
  155. package/dist/libdef/cpp-to-decl.js +72 -0
  156. package/dist/libdef/registry.js +5 -2
  157. package/dist/lint-cache.d.ts +59 -0
  158. package/dist/lint-cache.js +257 -0
  159. package/dist/orchestrator/graph-builder.js +14 -9
  160. package/dist/platform/coop-scheduler-runtime.d.ts +19 -0
  161. package/dist/platform/coop-scheduler-runtime.js +41 -0
  162. package/dist/platform/generic-strategy.d.ts +15 -3
  163. package/dist/platform/generic-strategy.js +49 -4
  164. package/dist/safety/safety-bridge.d.ts +11 -0
  165. package/dist/safety/safety-bridge.js +48 -0
  166. package/dist/safety/sidecar-bridge.d.ts +5 -0
  167. package/dist/safety/sidecar-bridge.js +22 -0
  168. package/dist/safety-hook.d.ts +79 -0
  169. package/dist/safety-hook.js +35 -0
  170. package/dist/testing.d.ts +7 -1
  171. package/dist/testing.js +8 -1
  172. package/dist/transpile.d.ts +3 -0
  173. package/dist/transpile.js +175 -41
  174. package/dist/types.d.ts +13 -2
  175. package/dist/ui-hook.d.ts +17 -3
  176. package/dist/utils/cli.js +78 -4
  177. package/dist/utils/fs.d.ts +13 -0
  178. package/dist/utils/fs.js +50 -0
  179. package/package.json +24 -5
  180. package/dist/api/shared/display-adapters/eink-mono.d.ts +0 -2
  181. package/dist/api/shared/display-adapters/eink-mono.js +0 -53
  182. package/dist/api/shared/display-adapters/ssd1309.d.ts +0 -2
  183. package/dist/api/shared/display-adapters/ssd1309.js +0 -136
  184. package/dist/api/shared/display-adapters/st7796.d.ts +0 -2
  185. package/dist/api/shared/display-adapters/st7796.js +0 -132
  186. package/dist/licenses.d.ts +0 -185
  187. package/dist/licenses.js +0 -963
@@ -0,0 +1,581 @@
1
+ import { z } from 'zod';
2
+ declare const HAL_CATEGORIES: readonly ["gpio", "pwm", "adc", "dac", "interrupts", "tone", "timing", "power", "i2c", "spi", "uart", "pulse", "shift", "board", "wdt", "wifi", "http", "mqtt", "display"];
3
+ export type HalCategory = typeof HAL_CATEGORIES[number];
4
+ export declare const FrameworkManifestSchema: z.ZodObject<{
5
+ schemaVersion: z.ZodLiteral<1>;
6
+ frameworkId: z.ZodString;
7
+ packageName: z.ZodString;
8
+ canonical: z.ZodDefault<z.ZodBoolean>;
9
+ displayName: z.ZodString;
10
+ description: z.ZodString;
11
+ basedOn: z.ZodOptional<z.ZodString>;
12
+ implementationMode: z.ZodEnum<["from-scratch", "extends-canonical", "extends-other"]>;
13
+ inheritsStrategyId: z.ZodOptional<z.ZodString>;
14
+ entrypoint: z.ZodObject<{
15
+ entrypointFunctionName: z.ZodString;
16
+ requiresLoopFunction: z.ZodBoolean;
17
+ sourceExtension: z.ZodEnum<["ino", "cc", "cpp", "h"]>;
18
+ overrideBaseName: z.ZodOptional<z.ZodString>;
19
+ outputSubdirectory: z.ZodOptional<z.ZodString>;
20
+ generateHeaderFile: z.ZodBoolean;
21
+ customBridgeShim: z.ZodOptional<z.ZodString>;
22
+ }, "strip", z.ZodTypeAny, {
23
+ sourceExtension: "cpp" | "ino" | "cc" | "h";
24
+ entrypointFunctionName: string;
25
+ requiresLoopFunction: boolean;
26
+ generateHeaderFile: boolean;
27
+ overrideBaseName?: string | undefined;
28
+ outputSubdirectory?: string | undefined;
29
+ customBridgeShim?: string | undefined;
30
+ }, {
31
+ sourceExtension: "cpp" | "ino" | "cc" | "h";
32
+ entrypointFunctionName: string;
33
+ requiresLoopFunction: boolean;
34
+ generateHeaderFile: boolean;
35
+ overrideBaseName?: string | undefined;
36
+ outputSubdirectory?: string | undefined;
37
+ customBridgeShim?: string | undefined;
38
+ }>;
39
+ profile: z.ZodObject<{
40
+ targets: z.ZodArray<z.ZodString, "many">;
41
+ forcedIncludes: z.ZodArray<z.ZodString, "many">;
42
+ symbolAliases: z.ZodRecord<z.ZodString, z.ZodString>;
43
+ }, "strip", z.ZodTypeAny, {
44
+ forcedIncludes: string[];
45
+ symbolAliases: Record<string, string>;
46
+ targets: string[];
47
+ }, {
48
+ forcedIncludes: string[];
49
+ symbolAliases: Record<string, string>;
50
+ targets: string[];
51
+ }>;
52
+ hal: z.ZodObject<{
53
+ [x: string]: z.ZodObject<{
54
+ supported: z.ZodBoolean;
55
+ unsupportedReason: z.ZodOptional<z.ZodString>;
56
+ ops: z.ZodRecord<z.ZodString, z.ZodEnum<["supported", "stub", "unsupported", "probe-inconclusive", "polyfill"]>>;
57
+ partialCoverage: z.ZodDefault<z.ZodBoolean>;
58
+ }, "strip", z.ZodTypeAny, {
59
+ supported: boolean;
60
+ ops: Record<string, "stub" | "polyfill" | "supported" | "unsupported" | "probe-inconclusive">;
61
+ partialCoverage: boolean;
62
+ unsupportedReason?: string | undefined;
63
+ }, {
64
+ supported: boolean;
65
+ ops: Record<string, "stub" | "polyfill" | "supported" | "unsupported" | "probe-inconclusive">;
66
+ unsupportedReason?: string | undefined;
67
+ partialCoverage?: boolean | undefined;
68
+ }>;
69
+ } & {
70
+ raw: z.ZodDefault<z.ZodObject<{
71
+ supported: z.ZodBoolean;
72
+ }, "strip", z.ZodTypeAny, {
73
+ supported: boolean;
74
+ }, {
75
+ supported: boolean;
76
+ }>>;
77
+ }, "strip", z.ZodObject<{
78
+ supported: z.ZodBoolean;
79
+ unsupportedReason: z.ZodOptional<z.ZodString>;
80
+ ops: z.ZodRecord<z.ZodString, z.ZodEnum<["supported", "stub", "unsupported", "probe-inconclusive", "polyfill"]>>;
81
+ partialCoverage: z.ZodDefault<z.ZodBoolean>;
82
+ }, "strip", z.ZodTypeAny, {
83
+ supported: boolean;
84
+ ops: Record<string, "stub" | "polyfill" | "supported" | "unsupported" | "probe-inconclusive">;
85
+ partialCoverage: boolean;
86
+ unsupportedReason?: string | undefined;
87
+ }, {
88
+ supported: boolean;
89
+ ops: Record<string, "stub" | "polyfill" | "supported" | "unsupported" | "probe-inconclusive">;
90
+ unsupportedReason?: string | undefined;
91
+ partialCoverage?: boolean | undefined;
92
+ }>, z.objectOutputType<{
93
+ [x: string]: z.ZodObject<{
94
+ supported: z.ZodBoolean;
95
+ unsupportedReason: z.ZodOptional<z.ZodString>;
96
+ ops: z.ZodRecord<z.ZodString, z.ZodEnum<["supported", "stub", "unsupported", "probe-inconclusive", "polyfill"]>>;
97
+ partialCoverage: z.ZodDefault<z.ZodBoolean>;
98
+ }, "strip", z.ZodTypeAny, {
99
+ supported: boolean;
100
+ ops: Record<string, "stub" | "polyfill" | "supported" | "unsupported" | "probe-inconclusive">;
101
+ partialCoverage: boolean;
102
+ unsupportedReason?: string | undefined;
103
+ }, {
104
+ supported: boolean;
105
+ ops: Record<string, "stub" | "polyfill" | "supported" | "unsupported" | "probe-inconclusive">;
106
+ unsupportedReason?: string | undefined;
107
+ partialCoverage?: boolean | undefined;
108
+ }>;
109
+ } & {
110
+ raw: z.ZodDefault<z.ZodObject<{
111
+ supported: z.ZodBoolean;
112
+ }, "strip", z.ZodTypeAny, {
113
+ supported: boolean;
114
+ }, {
115
+ supported: boolean;
116
+ }>>;
117
+ }, z.ZodObject<{
118
+ supported: z.ZodBoolean;
119
+ unsupportedReason: z.ZodOptional<z.ZodString>;
120
+ ops: z.ZodRecord<z.ZodString, z.ZodEnum<["supported", "stub", "unsupported", "probe-inconclusive", "polyfill"]>>;
121
+ partialCoverage: z.ZodDefault<z.ZodBoolean>;
122
+ }, "strip", z.ZodTypeAny, {
123
+ supported: boolean;
124
+ ops: Record<string, "stub" | "polyfill" | "supported" | "unsupported" | "probe-inconclusive">;
125
+ partialCoverage: boolean;
126
+ unsupportedReason?: string | undefined;
127
+ }, {
128
+ supported: boolean;
129
+ ops: Record<string, "stub" | "polyfill" | "supported" | "unsupported" | "probe-inconclusive">;
130
+ unsupportedReason?: string | undefined;
131
+ partialCoverage?: boolean | undefined;
132
+ }>, "strip">, z.objectInputType<{
133
+ [x: string]: z.ZodObject<{
134
+ supported: z.ZodBoolean;
135
+ unsupportedReason: z.ZodOptional<z.ZodString>;
136
+ ops: z.ZodRecord<z.ZodString, z.ZodEnum<["supported", "stub", "unsupported", "probe-inconclusive", "polyfill"]>>;
137
+ partialCoverage: z.ZodDefault<z.ZodBoolean>;
138
+ }, "strip", z.ZodTypeAny, {
139
+ supported: boolean;
140
+ ops: Record<string, "stub" | "polyfill" | "supported" | "unsupported" | "probe-inconclusive">;
141
+ partialCoverage: boolean;
142
+ unsupportedReason?: string | undefined;
143
+ }, {
144
+ supported: boolean;
145
+ ops: Record<string, "stub" | "polyfill" | "supported" | "unsupported" | "probe-inconclusive">;
146
+ unsupportedReason?: string | undefined;
147
+ partialCoverage?: boolean | undefined;
148
+ }>;
149
+ } & {
150
+ raw: z.ZodDefault<z.ZodObject<{
151
+ supported: z.ZodBoolean;
152
+ }, "strip", z.ZodTypeAny, {
153
+ supported: boolean;
154
+ }, {
155
+ supported: boolean;
156
+ }>>;
157
+ }, z.ZodObject<{
158
+ supported: z.ZodBoolean;
159
+ unsupportedReason: z.ZodOptional<z.ZodString>;
160
+ ops: z.ZodRecord<z.ZodString, z.ZodEnum<["supported", "stub", "unsupported", "probe-inconclusive", "polyfill"]>>;
161
+ partialCoverage: z.ZodDefault<z.ZodBoolean>;
162
+ }, "strip", z.ZodTypeAny, {
163
+ supported: boolean;
164
+ ops: Record<string, "stub" | "polyfill" | "supported" | "unsupported" | "probe-inconclusive">;
165
+ partialCoverage: boolean;
166
+ unsupportedReason?: string | undefined;
167
+ }, {
168
+ supported: boolean;
169
+ ops: Record<string, "stub" | "polyfill" | "supported" | "unsupported" | "probe-inconclusive">;
170
+ unsupportedReason?: string | undefined;
171
+ partialCoverage?: boolean | undefined;
172
+ }>, "strip">>;
173
+ polyfills: z.ZodObject<{
174
+ emitted: z.ZodArray<z.ZodObject<{
175
+ id: z.ZodString;
176
+ domain: z.ZodString;
177
+ notes: z.ZodOptional<z.ZodString>;
178
+ }, "strip", z.ZodTypeAny, {
179
+ id: string;
180
+ domain: string;
181
+ notes?: string | undefined;
182
+ }, {
183
+ id: string;
184
+ domain: string;
185
+ notes?: string | undefined;
186
+ }>, "many">;
187
+ suppressed: z.ZodArray<z.ZodObject<{
188
+ id: z.ZodString;
189
+ reason: z.ZodString;
190
+ }, "strip", z.ZodTypeAny, {
191
+ id: string;
192
+ reason: string;
193
+ }, {
194
+ id: string;
195
+ reason: string;
196
+ }>, "many">;
197
+ }, "strip", z.ZodTypeAny, {
198
+ emitted: {
199
+ id: string;
200
+ domain: string;
201
+ notes?: string | undefined;
202
+ }[];
203
+ suppressed: {
204
+ id: string;
205
+ reason: string;
206
+ }[];
207
+ }, {
208
+ emitted: {
209
+ id: string;
210
+ domain: string;
211
+ notes?: string | undefined;
212
+ }[];
213
+ suppressed: {
214
+ id: string;
215
+ reason: string;
216
+ }[];
217
+ }>;
218
+ toolchain: z.ZodObject<{
219
+ backend: z.ZodString;
220
+ operations: z.ZodObject<{
221
+ prepare: z.ZodBoolean;
222
+ compile: z.ZodBoolean;
223
+ upload: z.ZodBoolean;
224
+ monitor: z.ZodBoolean;
225
+ }, "strip", z.ZodTypeAny, {
226
+ prepare: boolean;
227
+ compile: boolean;
228
+ upload: boolean;
229
+ monitor: boolean;
230
+ }, {
231
+ prepare: boolean;
232
+ compile: boolean;
233
+ upload: boolean;
234
+ monitor: boolean;
235
+ }>;
236
+ reexportedFrom: z.ZodOptional<z.ZodString>;
237
+ }, "strip", z.ZodTypeAny, {
238
+ backend: string;
239
+ operations: {
240
+ prepare: boolean;
241
+ compile: boolean;
242
+ upload: boolean;
243
+ monitor: boolean;
244
+ };
245
+ reexportedFrom?: string | undefined;
246
+ }, {
247
+ backend: string;
248
+ operations: {
249
+ prepare: boolean;
250
+ compile: boolean;
251
+ upload: boolean;
252
+ monitor: boolean;
253
+ };
254
+ reexportedFrom?: string | undefined;
255
+ }>;
256
+ libraryResolution: z.ZodOptional<z.ZodObject<{
257
+ isFrameworkLibraryImport: z.ZodBoolean;
258
+ getFrameworkLibraryHeaderName: z.ZodBoolean;
259
+ buildClassNameMap: z.ZodBoolean;
260
+ tryGenerateLibDecl: z.ZodBoolean;
261
+ reexportedFrom: z.ZodOptional<z.ZodString>;
262
+ }, "strip", z.ZodTypeAny, {
263
+ isFrameworkLibraryImport: boolean;
264
+ getFrameworkLibraryHeaderName: boolean;
265
+ buildClassNameMap: boolean;
266
+ tryGenerateLibDecl: boolean;
267
+ reexportedFrom?: string | undefined;
268
+ }, {
269
+ isFrameworkLibraryImport: boolean;
270
+ getFrameworkLibraryHeaderName: boolean;
271
+ buildClassNameMap: boolean;
272
+ tryGenerateLibDecl: boolean;
273
+ reexportedFrom?: string | undefined;
274
+ }>>;
275
+ typeEmission: z.ZodObject<{
276
+ normalizeCppType: z.ZodBoolean;
277
+ mathHeader: z.ZodEnum<["none", "<math.h>", "<Arduino.h>"]>;
278
+ needsStdString: z.ZodBoolean;
279
+ needsStdVector: z.ZodBoolean;
280
+ needsIostream: z.ZodBoolean;
281
+ needsStdFunction: z.ZodBoolean;
282
+ stdlibSupport: z.ZodObject<{
283
+ hasVector: z.ZodBoolean;
284
+ hasString: z.ZodBoolean;
285
+ hasIostream: z.ZodBoolean;
286
+ hasExceptions: z.ZodBoolean;
287
+ hasRTTI: z.ZodBoolean;
288
+ recommendedArrayImpl: z.ZodEnum<["std_vector", "static_array"]>;
289
+ recommendedStringImpl: z.ZodEnum<["std_string", "static_string"]>;
290
+ }, "strip", z.ZodTypeAny, {
291
+ hasVector: boolean;
292
+ hasString: boolean;
293
+ hasIostream: boolean;
294
+ hasExceptions: boolean;
295
+ hasRTTI: boolean;
296
+ recommendedArrayImpl: "std_vector" | "static_array";
297
+ recommendedStringImpl: "std_string" | "static_string";
298
+ }, {
299
+ hasVector: boolean;
300
+ hasString: boolean;
301
+ hasIostream: boolean;
302
+ hasExceptions: boolean;
303
+ hasRTTI: boolean;
304
+ recommendedArrayImpl: "std_vector" | "static_array";
305
+ recommendedStringImpl: "std_string" | "static_string";
306
+ }>;
307
+ }, "strip", z.ZodTypeAny, {
308
+ needsIostream: boolean;
309
+ needsStdString: boolean;
310
+ needsStdVector: boolean;
311
+ needsStdFunction: boolean;
312
+ mathHeader: "none" | "<math.h>" | "<Arduino.h>";
313
+ normalizeCppType: boolean;
314
+ stdlibSupport: {
315
+ hasVector: boolean;
316
+ hasString: boolean;
317
+ hasIostream: boolean;
318
+ hasExceptions: boolean;
319
+ hasRTTI: boolean;
320
+ recommendedArrayImpl: "std_vector" | "static_array";
321
+ recommendedStringImpl: "std_string" | "static_string";
322
+ };
323
+ }, {
324
+ needsIostream: boolean;
325
+ needsStdString: boolean;
326
+ needsStdVector: boolean;
327
+ needsStdFunction: boolean;
328
+ mathHeader: "none" | "<math.h>" | "<Arduino.h>";
329
+ normalizeCppType: boolean;
330
+ stdlibSupport: {
331
+ hasVector: boolean;
332
+ hasString: boolean;
333
+ hasIostream: boolean;
334
+ hasExceptions: boolean;
335
+ hasRTTI: boolean;
336
+ recommendedArrayImpl: "std_vector" | "static_array";
337
+ recommendedStringImpl: "std_string" | "static_string";
338
+ };
339
+ }>;
340
+ ambientTypes: z.ZodArray<z.ZodString, "many">;
341
+ conformance: z.ZodObject<{
342
+ hardwareTestGroups: z.ZodArray<z.ZodString, "many">;
343
+ halResolutionTests: z.ZodArray<z.ZodString, "many">;
344
+ }, "strip", z.ZodTypeAny, {
345
+ hardwareTestGroups: string[];
346
+ halResolutionTests: string[];
347
+ }, {
348
+ hardwareTestGroups: string[];
349
+ halResolutionTests: string[];
350
+ }>;
351
+ doctor: z.ZodOptional<z.ZodObject<{
352
+ available: z.ZodBoolean;
353
+ }, "strip", z.ZodTypeAny, {
354
+ available: boolean;
355
+ }, {
356
+ available: boolean;
357
+ }>>;
358
+ licenses: z.ZodOptional<z.ZodObject<{
359
+ available: z.ZodBoolean;
360
+ }, "strip", z.ZodTypeAny, {
361
+ available: boolean;
362
+ }, {
363
+ available: boolean;
364
+ }>>;
365
+ }, "strip", z.ZodTypeAny, {
366
+ hal: {
367
+ [x: string]: {
368
+ supported: boolean;
369
+ ops: Record<string, "stub" | "polyfill" | "supported" | "unsupported" | "probe-inconclusive">;
370
+ partialCoverage: boolean;
371
+ unsupportedReason?: string | undefined;
372
+ };
373
+ raw?: unknown;
374
+ } & {
375
+ [k: string]: {
376
+ supported: boolean;
377
+ ops: Record<string, "stub" | "polyfill" | "supported" | "unsupported" | "probe-inconclusive">;
378
+ partialCoverage: boolean;
379
+ unsupportedReason?: string | undefined;
380
+ };
381
+ };
382
+ packageName: string;
383
+ schemaVersion: 1;
384
+ frameworkId: string;
385
+ canonical: boolean;
386
+ displayName: string;
387
+ description: string;
388
+ implementationMode: "from-scratch" | "extends-canonical" | "extends-other";
389
+ entrypoint: {
390
+ sourceExtension: "cpp" | "ino" | "cc" | "h";
391
+ entrypointFunctionName: string;
392
+ requiresLoopFunction: boolean;
393
+ generateHeaderFile: boolean;
394
+ overrideBaseName?: string | undefined;
395
+ outputSubdirectory?: string | undefined;
396
+ customBridgeShim?: string | undefined;
397
+ };
398
+ profile: {
399
+ forcedIncludes: string[];
400
+ symbolAliases: Record<string, string>;
401
+ targets: string[];
402
+ };
403
+ polyfills: {
404
+ emitted: {
405
+ id: string;
406
+ domain: string;
407
+ notes?: string | undefined;
408
+ }[];
409
+ suppressed: {
410
+ id: string;
411
+ reason: string;
412
+ }[];
413
+ };
414
+ toolchain: {
415
+ backend: string;
416
+ operations: {
417
+ prepare: boolean;
418
+ compile: boolean;
419
+ upload: boolean;
420
+ monitor: boolean;
421
+ };
422
+ reexportedFrom?: string | undefined;
423
+ };
424
+ typeEmission: {
425
+ needsIostream: boolean;
426
+ needsStdString: boolean;
427
+ needsStdVector: boolean;
428
+ needsStdFunction: boolean;
429
+ mathHeader: "none" | "<math.h>" | "<Arduino.h>";
430
+ normalizeCppType: boolean;
431
+ stdlibSupport: {
432
+ hasVector: boolean;
433
+ hasString: boolean;
434
+ hasIostream: boolean;
435
+ hasExceptions: boolean;
436
+ hasRTTI: boolean;
437
+ recommendedArrayImpl: "std_vector" | "static_array";
438
+ recommendedStringImpl: "std_string" | "static_string";
439
+ };
440
+ };
441
+ ambientTypes: string[];
442
+ conformance: {
443
+ hardwareTestGroups: string[];
444
+ halResolutionTests: string[];
445
+ };
446
+ doctor?: {
447
+ available: boolean;
448
+ } | undefined;
449
+ licenses?: {
450
+ available: boolean;
451
+ } | undefined;
452
+ basedOn?: string | undefined;
453
+ inheritsStrategyId?: string | undefined;
454
+ libraryResolution?: {
455
+ isFrameworkLibraryImport: boolean;
456
+ getFrameworkLibraryHeaderName: boolean;
457
+ buildClassNameMap: boolean;
458
+ tryGenerateLibDecl: boolean;
459
+ reexportedFrom?: string | undefined;
460
+ } | undefined;
461
+ }, {
462
+ hal: {
463
+ [x: string]: {
464
+ supported: boolean;
465
+ ops: Record<string, "stub" | "polyfill" | "supported" | "unsupported" | "probe-inconclusive">;
466
+ unsupportedReason?: string | undefined;
467
+ partialCoverage?: boolean | undefined;
468
+ };
469
+ raw?: unknown;
470
+ } & {
471
+ [k: string]: {
472
+ supported: boolean;
473
+ ops: Record<string, "stub" | "polyfill" | "supported" | "unsupported" | "probe-inconclusive">;
474
+ unsupportedReason?: string | undefined;
475
+ partialCoverage?: boolean | undefined;
476
+ };
477
+ };
478
+ packageName: string;
479
+ schemaVersion: 1;
480
+ frameworkId: string;
481
+ displayName: string;
482
+ description: string;
483
+ implementationMode: "from-scratch" | "extends-canonical" | "extends-other";
484
+ entrypoint: {
485
+ sourceExtension: "cpp" | "ino" | "cc" | "h";
486
+ entrypointFunctionName: string;
487
+ requiresLoopFunction: boolean;
488
+ generateHeaderFile: boolean;
489
+ overrideBaseName?: string | undefined;
490
+ outputSubdirectory?: string | undefined;
491
+ customBridgeShim?: string | undefined;
492
+ };
493
+ profile: {
494
+ forcedIncludes: string[];
495
+ symbolAliases: Record<string, string>;
496
+ targets: string[];
497
+ };
498
+ polyfills: {
499
+ emitted: {
500
+ id: string;
501
+ domain: string;
502
+ notes?: string | undefined;
503
+ }[];
504
+ suppressed: {
505
+ id: string;
506
+ reason: string;
507
+ }[];
508
+ };
509
+ toolchain: {
510
+ backend: string;
511
+ operations: {
512
+ prepare: boolean;
513
+ compile: boolean;
514
+ upload: boolean;
515
+ monitor: boolean;
516
+ };
517
+ reexportedFrom?: string | undefined;
518
+ };
519
+ typeEmission: {
520
+ needsIostream: boolean;
521
+ needsStdString: boolean;
522
+ needsStdVector: boolean;
523
+ needsStdFunction: boolean;
524
+ mathHeader: "none" | "<math.h>" | "<Arduino.h>";
525
+ normalizeCppType: boolean;
526
+ stdlibSupport: {
527
+ hasVector: boolean;
528
+ hasString: boolean;
529
+ hasIostream: boolean;
530
+ hasExceptions: boolean;
531
+ hasRTTI: boolean;
532
+ recommendedArrayImpl: "std_vector" | "static_array";
533
+ recommendedStringImpl: "std_string" | "static_string";
534
+ };
535
+ };
536
+ ambientTypes: string[];
537
+ conformance: {
538
+ hardwareTestGroups: string[];
539
+ halResolutionTests: string[];
540
+ };
541
+ doctor?: {
542
+ available: boolean;
543
+ } | undefined;
544
+ licenses?: {
545
+ available: boolean;
546
+ } | undefined;
547
+ canonical?: boolean | undefined;
548
+ basedOn?: string | undefined;
549
+ inheritsStrategyId?: string | undefined;
550
+ libraryResolution?: {
551
+ isFrameworkLibraryImport: boolean;
552
+ getFrameworkLibraryHeaderName: boolean;
553
+ buildClassNameMap: boolean;
554
+ tryGenerateLibDecl: boolean;
555
+ reexportedFrom?: string | undefined;
556
+ } | undefined;
557
+ }>;
558
+ export type FrameworkManifest = z.infer<typeof FrameworkManifestSchema>;
559
+ /**
560
+ * Authoritative map of HAL op kinds that are lowered via the polyfill system
561
+ * rather than via `resolveHALOperation`. Keyed by op kind; value is the
562
+ * polyfill id that backs it.
563
+ *
564
+ * The manifest validator uses this to verify `polyfill`-declared ops: if a
565
+ * manifest declares `timing.set_interval: 'polyfill'`, the framework's
566
+ * `polyfills.emitted` list must include the polyfill id named here.
567
+ *
568
+ * Keep in sync with the transpiler's lowering routes — when a new op kind
569
+ * starts being routed via a polyfill instead of the HAL resolver, add it
570
+ * here. The set is intentionally small and stable: polyfill-routed ops are
571
+ * the exception, not the rule.
572
+ */
573
+ export declare const POLYFILL_BACKED_OPS: Readonly<Record<string, string>>;
574
+ /**
575
+ * Validates and returns a FrameworkManifest. Frameworks call this from their
576
+ * `framework.manifest.ts` to get both static type-checking (the parameter type
577
+ * is the inferred FrameworkManifest) and runtime validation (zod parse).
578
+ * Bad manifests throw at module-load time.
579
+ */
580
+ export declare function defineFrameworkManifest(input: unknown): FrameworkManifest;
581
+ export { HAL_CATEGORIES };