@texturehq/edges 2.4.7 → 2.4.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.
@@ -2143,23 +2143,58 @@ type EntityArchetype = "device" | "platform" | "grid-energized" | "grid-line";
2143
2143
  type SerializableFieldFormat = Exclude<FieldFormat, {
2144
2144
  type: "custom";
2145
2145
  }>;
2146
+ /**
2147
+ * Where a headline metric's value comes from — its provenance. A pure-data
2148
+ * discriminated union (no functions), so the whole registry stays
2149
+ * JSON-serializable. Added in MR-07: MR-06's `HeadlineMetric` could only express
2150
+ * a dot-path into a resolved *device* snapshot; grid metrics are either static
2151
+ * nameplate (a JSONB `elementData` key) or a derived telemetry rollup, and
2152
+ * authoring those against a bare `path` would misrepresent how they are fetched.
2153
+ *
2154
+ * - `state` — device snapshot, resolved from a dot-path (the MR-06 shape).
2155
+ * e.g. `state.gridPower`. This is what every device/meter row uses.
2156
+ * - `metadata` — a static nameplate value read from `GridElement.elementData`
2157
+ * (JSONB). The `key` is the JSONB key, *not* a dot-path.
2158
+ * - `derived` — an asynchronous telemetry rollup with hours-to-a-day latency
2159
+ * (e.g. transformer loading: SUM of downstream meter `kwh_usage`
2160
+ * ÷ PF ÷ `ratedKva`, a 0–1 ratio the cell scales ×100). Consumers
2161
+ * MUST treat this as async/loading and never block the card on it.
2162
+ *
2163
+ * No grid row uses `metadata`/`derived` yet — the design's grid metric proposal
2164
+ * is still "For review" (see MR-07). The type is extended now so those rows can
2165
+ * be authored honestly once design signs off; only `state` rows exist today.
2166
+ */
2167
+ type MetricSource = {
2168
+ kind: "state";
2169
+ path: string;
2170
+ } | {
2171
+ kind: "metadata";
2172
+ key: string;
2173
+ } | {
2174
+ kind: "derived";
2175
+ rollup: "transformer-loading";
2176
+ window: "15m" | "1h" | "1d";
2177
+ };
2146
2178
  /**
2147
2179
  * One headline metric shown by `entity.now`. A serializable declaration only —
2148
- * `path` is a dot-path into the resolved entity data, `label` is a translation
2149
- * key, `format` says how to render the value, and `icon` is a registry key
2150
- * (never a component). No functions: the host resolves `path`/`format` at render.
2180
+ * `source` says where the value comes from (see `MetricSource`), `label` is a
2181
+ * translation key, `format` says how to render the value, and `icon` is a
2182
+ * registry key (never a component). No functions: the host resolves the source
2183
+ * and format at render.
2151
2184
  *
2152
2185
  * The shape is the serializable subset of `device-config`'s `FieldConfig`
2153
- * (`id`/`label`/`path`/`format`/`icon`) — `showWhen`/`resolver`/`custom`
2154
- * formatters are intentionally dropped.
2186
+ * (`id`/`label`/`source`/`format`/`icon`) — `showWhen`/`resolver`/`custom`
2187
+ * formatters are intentionally dropped. MR-07 replaced the bare `path` with a
2188
+ * `source` discriminator; a `state` source carries the former dot-path as
2189
+ * `source.path`, so no device row changed meaning.
2155
2190
  */
2156
2191
  interface HeadlineMetric {
2157
2192
  /** Stable identifier for the metric (unique within an entity). */
2158
2193
  id: string;
2159
2194
  /** Translation key for the display label. */
2160
2195
  label: string;
2161
- /** Dot-path into the resolved entity data (e.g. "state.gridPower"). */
2162
- path: string;
2196
+ /** Where the value comes from (device snapshot, nameplate, or rollup). */
2197
+ source: MetricSource;
2163
2198
  /** How to render the value. Serializable formats only. */
2164
2199
  format: SerializableFieldFormat;
2165
2200
  /** Optional icon registry key. */
@@ -2182,6 +2217,39 @@ interface EntityStateRule {
2182
2217
  /** Optional translation key for the state's display label. */
2183
2218
  label?: string;
2184
2219
  }
2220
+ /**
2221
+ * The render format for a static grid property. This is the serializable subset
2222
+ * of `@texturehq/grid-element-config`'s `MetadataFieldConfig["format"]` — the
2223
+ * same shape, kept structurally identical so the two stay in sync when stat-list
2224
+ * rows are transcribed. Deliberately *not* `SerializableFieldFormat`: nameplate
2225
+ * ratings carry units the edges `FieldFormat` unit enums don't admit (e.g. a
2226
+ * transformer's `kVA`, a capacitor's `kVar`), so `unit` is a free string here.
2227
+ */
2228
+ interface GridStatFieldFormat {
2229
+ type: "voltage" | "power" | "distance" | "text" | "number";
2230
+ unit?: string;
2231
+ decimals?: number;
2232
+ }
2233
+ /**
2234
+ * One row in a grid entity's static-properties (`data.stat-list`) block. A
2235
+ * serializable declaration transcribed from `grid-element-config.metadataFields`
2236
+ * (MR-07 step 2): `key` is the `GridElement.elementData` JSONB key, `label` is
2237
+ * the display label, `format` says how to render it. The source config's
2238
+ * `showWhen` predicate is intentionally dropped — a stat-list row is data only,
2239
+ * and per-instance visibility is a render-time concern, not registry state.
2240
+ *
2241
+ * This is nameplate, not "now": static properties (kVA rating, conductor type,
2242
+ * meter number, length) belong here, never in `fields.headlineMetrics`, which is
2243
+ * the live block. See MR-07 "'has data' ≠ 'belongs in entity.now'".
2244
+ */
2245
+ interface GridStatField {
2246
+ /** JSONB key in `GridElement.elementData`. */
2247
+ key: string;
2248
+ /** Display label (translation key or plain text). */
2249
+ label: string;
2250
+ /** How to render the value. Optional — plain text when omitted. */
2251
+ format?: GridStatFieldFormat;
2252
+ }
2185
2253
  interface EntityConfig {
2186
2254
  /** Phosphor icon name. The canonical (resting / default) glyph. For switchable
2187
2255
  * elements this mirrors `states.closed.icon` (or the base glyph when the
@@ -2244,6 +2312,19 @@ interface EntityConfig {
2244
2312
  primaryState: EntityStateRule;
2245
2313
  secondaryState?: EntityStateRule;
2246
2314
  };
2315
+ /**
2316
+ * Static-properties block config (MR-07 step 2). Feeds the `data.stat-list`
2317
+ * block — nameplate/GIS attributes that are *properties*, not *now*. Present
2318
+ * on grid entities (transcribed from `grid-element-config.metadataFields` via
2319
+ * `GRID_ELEMENT_TYPE_BY_ENTITY`); absent on devices and platform objects,
2320
+ * which surface their data through other blocks. This is the genuinely
2321
+ * unblocked, data-backed grid path — distinct from the design-gated live
2322
+ * `fields`/`stateRules` above.
2323
+ */
2324
+ properties?: {
2325
+ /** The static property rows shown by the `data.stat-list` block. */
2326
+ statList: GridStatField[];
2327
+ };
2247
2328
  }
2248
2329
  /** One open/closed state's presentation: an optional glyph override and/or a
2249
2330
  * status color. Omitting `icon` means "use the entity's base icon, recolored". */
@@ -2299,6 +2380,276 @@ declare const ENTITY_CATEGORY_CONFIG: {
2299
2380
  readonly order: 2;
2300
2381
  };
2301
2382
  };
2383
+ /** The coarse element-type axis (mirrors `@texturehq/grid-element-config`'s
2384
+ * `GridElementType`; kept in sync by transcription). */
2385
+ type GridElementSourceType = "CAPACITOR" | "CONSUMER" | "GENERATOR" | "MOTOR" | "NODE" | "OVERCURRENT_DEVICE" | "OVERHEAD_LINE" | "REGULATOR" | "SOURCE" | "SWITCH" | "TRANSFORMER" | "UNDERGROUND_LINE";
2386
+ /**
2387
+ * JSONB keys that are ABSENT or PII-zeroed in prod (MR-07 coverage table). No
2388
+ * grid stat-list row (or headline metric) may reference one of these — enforced
2389
+ * by the conformance test, not just documented.
2390
+ */
2391
+ declare const ABSENT_GRID_FIELDS: readonly ["energized", "customerName", "gs_max_continuous_current"];
2392
+ /**
2393
+ * Static property rows per `GridElementType`, transcribed from
2394
+ * `grid-element-config/src/configs/*.config.ts` `metadataFields`. Serializable:
2395
+ * no `showWhen`, no functions. Referenced by grid entities' `properties.statList`.
2396
+ */
2397
+ declare const GRID_STAT_LIST: {
2398
+ readonly TRANSFORMER: [{
2399
+ readonly key: "primaryRatedVoltage";
2400
+ readonly label: "Primary Voltage";
2401
+ readonly format: {
2402
+ readonly type: "voltage";
2403
+ readonly unit: "V";
2404
+ readonly decimals: 0;
2405
+ };
2406
+ }, {
2407
+ readonly key: "ratedOutputVoltage";
2408
+ readonly label: "Output Voltage";
2409
+ readonly format: {
2410
+ readonly type: "voltage";
2411
+ readonly unit: "V";
2412
+ readonly decimals: 0;
2413
+ };
2414
+ }, {
2415
+ readonly key: "tranKvaA";
2416
+ readonly label: "Rating Phase A";
2417
+ readonly format: {
2418
+ readonly type: "power";
2419
+ readonly unit: "kVA";
2420
+ readonly decimals: 1;
2421
+ };
2422
+ }, {
2423
+ readonly key: "tranKvaB";
2424
+ readonly label: "Rating Phase B";
2425
+ readonly format: {
2426
+ readonly type: "power";
2427
+ readonly unit: "kVA";
2428
+ readonly decimals: 1;
2429
+ };
2430
+ }, {
2431
+ readonly key: "tranKvaC";
2432
+ readonly label: "Rating Phase C";
2433
+ readonly format: {
2434
+ readonly type: "power";
2435
+ readonly unit: "kVA";
2436
+ readonly decimals: 1;
2437
+ };
2438
+ }];
2439
+ readonly CONSUMER: [{
2440
+ readonly key: "meterNumber";
2441
+ readonly label: "Meter Number";
2442
+ readonly format: {
2443
+ readonly type: "text";
2444
+ };
2445
+ }];
2446
+ readonly SOURCE: [{
2447
+ readonly key: "busVoltage";
2448
+ readonly label: "Bus Voltage";
2449
+ readonly format: {
2450
+ readonly type: "voltage";
2451
+ readonly unit: "V";
2452
+ readonly decimals: 0;
2453
+ };
2454
+ }, {
2455
+ readonly key: "nominalVoltage";
2456
+ readonly label: "Nominal Voltage";
2457
+ readonly format: {
2458
+ readonly type: "voltage";
2459
+ readonly unit: "V";
2460
+ readonly decimals: 0;
2461
+ };
2462
+ }, {
2463
+ readonly key: "substationNumber";
2464
+ readonly label: "Substation Number";
2465
+ readonly format: {
2466
+ readonly type: "text";
2467
+ };
2468
+ }];
2469
+ readonly SWITCH: [{
2470
+ readonly key: "switchId";
2471
+ readonly label: "Switch ID";
2472
+ readonly format: {
2473
+ readonly type: "text";
2474
+ };
2475
+ }, {
2476
+ readonly key: "ratedCurrent";
2477
+ readonly label: "Rated Current";
2478
+ readonly format: {
2479
+ readonly type: "number";
2480
+ readonly unit: "A";
2481
+ readonly decimals: 0;
2482
+ };
2483
+ }, {
2484
+ readonly key: "normalState";
2485
+ readonly label: "Normal State";
2486
+ readonly format: {
2487
+ readonly type: "text";
2488
+ };
2489
+ }];
2490
+ readonly CAPACITOR: [{
2491
+ readonly key: "unitSizeKvar";
2492
+ readonly label: "Capacity";
2493
+ readonly format: {
2494
+ readonly type: "power";
2495
+ readonly unit: "kVar";
2496
+ readonly decimals: 1;
2497
+ };
2498
+ }, {
2499
+ readonly key: "nominalVoltage";
2500
+ readonly label: "Nominal Voltage";
2501
+ readonly format: {
2502
+ readonly type: "voltage";
2503
+ readonly unit: "V";
2504
+ readonly decimals: 0;
2505
+ };
2506
+ }];
2507
+ readonly OVERCURRENT_DEVICE: [{
2508
+ readonly key: "ratedCurrent";
2509
+ readonly label: "Rated Current";
2510
+ readonly format: {
2511
+ readonly type: "number";
2512
+ readonly unit: "A";
2513
+ readonly decimals: 0;
2514
+ };
2515
+ }, {
2516
+ readonly key: "deviceType";
2517
+ readonly label: "Device Type";
2518
+ readonly format: {
2519
+ readonly type: "text";
2520
+ };
2521
+ }];
2522
+ readonly REGULATOR: [{
2523
+ readonly key: "outputVoltagePhA";
2524
+ readonly label: "Output Voltage Phase A";
2525
+ readonly format: {
2526
+ readonly type: "voltage";
2527
+ readonly unit: "V";
2528
+ readonly decimals: 0;
2529
+ };
2530
+ }, {
2531
+ readonly key: "outputVoltagePhB";
2532
+ readonly label: "Output Voltage Phase B";
2533
+ readonly format: {
2534
+ readonly type: "voltage";
2535
+ readonly unit: "V";
2536
+ readonly decimals: 0;
2537
+ };
2538
+ }, {
2539
+ readonly key: "outputVoltagePhC";
2540
+ readonly label: "Output Voltage Phase C";
2541
+ readonly format: {
2542
+ readonly type: "voltage";
2543
+ readonly unit: "V";
2544
+ readonly decimals: 0;
2545
+ };
2546
+ }, {
2547
+ readonly key: "ratedPower";
2548
+ readonly label: "Rated Power";
2549
+ readonly format: {
2550
+ readonly type: "power";
2551
+ readonly unit: "kVA";
2552
+ readonly decimals: 1;
2553
+ };
2554
+ }];
2555
+ readonly OVERHEAD_LINE: [{
2556
+ readonly key: "impedanceLength";
2557
+ readonly label: "Length";
2558
+ readonly format: {
2559
+ readonly type: "distance";
2560
+ readonly unit: "ft";
2561
+ readonly decimals: 0;
2562
+ };
2563
+ }, {
2564
+ readonly key: "conductorDescPhA";
2565
+ readonly label: "Conductor Phase A";
2566
+ readonly format: {
2567
+ readonly type: "text";
2568
+ };
2569
+ }, {
2570
+ readonly key: "conductorDescPhB";
2571
+ readonly label: "Conductor Phase B";
2572
+ readonly format: {
2573
+ readonly type: "text";
2574
+ };
2575
+ }, {
2576
+ readonly key: "conductorDescPhC";
2577
+ readonly label: "Conductor Phase C";
2578
+ readonly format: {
2579
+ readonly type: "text";
2580
+ };
2581
+ }];
2582
+ readonly UNDERGROUND_LINE: [{
2583
+ readonly key: "impedanceLength";
2584
+ readonly label: "Length";
2585
+ readonly format: {
2586
+ readonly type: "distance";
2587
+ readonly unit: "ft";
2588
+ readonly decimals: 0;
2589
+ };
2590
+ }, {
2591
+ readonly key: "conductorDescPhA";
2592
+ readonly label: "Conductor Phase A";
2593
+ readonly format: {
2594
+ readonly type: "text";
2595
+ };
2596
+ }, {
2597
+ readonly key: "conductorDescPhB";
2598
+ readonly label: "Conductor Phase B";
2599
+ readonly format: {
2600
+ readonly type: "text";
2601
+ };
2602
+ }, {
2603
+ readonly key: "conductorDescPhC";
2604
+ readonly label: "Conductor Phase C";
2605
+ readonly format: {
2606
+ readonly type: "text";
2607
+ };
2608
+ }];
2609
+ readonly NODE: [{
2610
+ readonly key: "nominalVoltage";
2611
+ readonly label: "Nominal Voltage";
2612
+ readonly format: {
2613
+ readonly type: "voltage";
2614
+ readonly unit: "V";
2615
+ readonly decimals: 0;
2616
+ };
2617
+ }];
2618
+ readonly GENERATOR: [{
2619
+ readonly key: "ratedPower";
2620
+ readonly label: "Rated Power";
2621
+ readonly format: {
2622
+ readonly type: "power";
2623
+ readonly unit: "kW";
2624
+ readonly decimals: 1;
2625
+ };
2626
+ }, {
2627
+ readonly key: "outputVoltage";
2628
+ readonly label: "Output Voltage";
2629
+ readonly format: {
2630
+ readonly type: "voltage";
2631
+ readonly unit: "V";
2632
+ readonly decimals: 0;
2633
+ };
2634
+ }];
2635
+ readonly MOTOR: [{
2636
+ readonly key: "ratedPower";
2637
+ readonly label: "Rated Power";
2638
+ readonly format: {
2639
+ readonly type: "power";
2640
+ readonly unit: "kW";
2641
+ readonly decimals: 1;
2642
+ };
2643
+ }, {
2644
+ readonly key: "voltage";
2645
+ readonly label: "Voltage";
2646
+ readonly format: {
2647
+ readonly type: "voltage";
2648
+ readonly unit: "V";
2649
+ readonly decimals: 0;
2650
+ };
2651
+ }];
2652
+ };
2302
2653
  declare const ENTITY_CONFIG: {
2303
2654
  readonly app: {
2304
2655
  readonly icon: "AppWindow";
@@ -2459,6 +2810,31 @@ declare const ENTITY_CONFIG: {
2459
2810
  readonly category: "grid";
2460
2811
  readonly archetype: "grid-energized";
2461
2812
  readonly detailPage: true;
2813
+ readonly properties: {
2814
+ readonly statList: [{
2815
+ readonly key: "busVoltage";
2816
+ readonly label: "Bus Voltage";
2817
+ readonly format: {
2818
+ readonly type: "voltage";
2819
+ readonly unit: "V";
2820
+ readonly decimals: 0;
2821
+ };
2822
+ }, {
2823
+ readonly key: "nominalVoltage";
2824
+ readonly label: "Nominal Voltage";
2825
+ readonly format: {
2826
+ readonly type: "voltage";
2827
+ readonly unit: "V";
2828
+ readonly decimals: 0;
2829
+ };
2830
+ }, {
2831
+ readonly key: "substationNumber";
2832
+ readonly label: "Substation Number";
2833
+ readonly format: {
2834
+ readonly type: "text";
2835
+ };
2836
+ }];
2837
+ };
2462
2838
  readonly label: {
2463
2839
  readonly singular: "Source";
2464
2840
  readonly plural: "Sources";
@@ -2470,6 +2846,31 @@ declare const ENTITY_CONFIG: {
2470
2846
  readonly category: "grid";
2471
2847
  readonly archetype: "grid-energized";
2472
2848
  readonly detailPage: true;
2849
+ readonly properties: {
2850
+ readonly statList: [{
2851
+ readonly key: "busVoltage";
2852
+ readonly label: "Bus Voltage";
2853
+ readonly format: {
2854
+ readonly type: "voltage";
2855
+ readonly unit: "V";
2856
+ readonly decimals: 0;
2857
+ };
2858
+ }, {
2859
+ readonly key: "nominalVoltage";
2860
+ readonly label: "Nominal Voltage";
2861
+ readonly format: {
2862
+ readonly type: "voltage";
2863
+ readonly unit: "V";
2864
+ readonly decimals: 0;
2865
+ };
2866
+ }, {
2867
+ readonly key: "substationNumber";
2868
+ readonly label: "Substation Number";
2869
+ readonly format: {
2870
+ readonly type: "text";
2871
+ };
2872
+ }];
2873
+ };
2473
2874
  readonly label: {
2474
2875
  readonly singular: "Substation";
2475
2876
  readonly plural: "Substations";
@@ -2481,6 +2882,25 @@ declare const ENTITY_CONFIG: {
2481
2882
  readonly category: "grid";
2482
2883
  readonly archetype: "grid-energized";
2483
2884
  readonly detailPage: true;
2885
+ readonly properties: {
2886
+ readonly statList: [{
2887
+ readonly key: "unitSizeKvar";
2888
+ readonly label: "Capacity";
2889
+ readonly format: {
2890
+ readonly type: "power";
2891
+ readonly unit: "kVar";
2892
+ readonly decimals: 1;
2893
+ };
2894
+ }, {
2895
+ readonly key: "nominalVoltage";
2896
+ readonly label: "Nominal Voltage";
2897
+ readonly format: {
2898
+ readonly type: "voltage";
2899
+ readonly unit: "V";
2900
+ readonly decimals: 0;
2901
+ };
2902
+ }];
2903
+ };
2484
2904
  readonly label: {
2485
2905
  readonly singular: "Capacitor";
2486
2906
  readonly plural: "Capacitors";
@@ -2492,6 +2912,29 @@ declare const ENTITY_CONFIG: {
2492
2912
  readonly category: "grid";
2493
2913
  readonly archetype: "grid-energized";
2494
2914
  readonly detailPage: true;
2915
+ readonly properties: {
2916
+ readonly statList: [{
2917
+ readonly key: "switchId";
2918
+ readonly label: "Switch ID";
2919
+ readonly format: {
2920
+ readonly type: "text";
2921
+ };
2922
+ }, {
2923
+ readonly key: "ratedCurrent";
2924
+ readonly label: "Rated Current";
2925
+ readonly format: {
2926
+ readonly type: "number";
2927
+ readonly unit: "A";
2928
+ readonly decimals: 0;
2929
+ };
2930
+ }, {
2931
+ readonly key: "normalState";
2932
+ readonly label: "Normal State";
2933
+ readonly format: {
2934
+ readonly type: "text";
2935
+ };
2936
+ }];
2937
+ };
2495
2938
  readonly label: {
2496
2939
  readonly singular: "Switch";
2497
2940
  readonly plural: "Switches";
@@ -2513,6 +2956,29 @@ declare const ENTITY_CONFIG: {
2513
2956
  readonly category: "grid";
2514
2957
  readonly archetype: "grid-energized";
2515
2958
  readonly detailPage: true;
2959
+ readonly properties: {
2960
+ readonly statList: [{
2961
+ readonly key: "switchId";
2962
+ readonly label: "Switch ID";
2963
+ readonly format: {
2964
+ readonly type: "text";
2965
+ };
2966
+ }, {
2967
+ readonly key: "ratedCurrent";
2968
+ readonly label: "Rated Current";
2969
+ readonly format: {
2970
+ readonly type: "number";
2971
+ readonly unit: "A";
2972
+ readonly decimals: 0;
2973
+ };
2974
+ }, {
2975
+ readonly key: "normalState";
2976
+ readonly label: "Normal State";
2977
+ readonly format: {
2978
+ readonly type: "text";
2979
+ };
2980
+ }];
2981
+ };
2516
2982
  readonly label: {
2517
2983
  readonly singular: "Sectionalizer";
2518
2984
  readonly plural: "Sectionalizers";
@@ -2534,6 +3000,17 @@ declare const ENTITY_CONFIG: {
2534
3000
  readonly category: "grid";
2535
3001
  readonly archetype: "grid-energized";
2536
3002
  readonly detailPage: true;
3003
+ readonly properties: {
3004
+ readonly statList: [{
3005
+ readonly key: "nominalVoltage";
3006
+ readonly label: "Nominal Voltage";
3007
+ readonly format: {
3008
+ readonly type: "voltage";
3009
+ readonly unit: "V";
3010
+ readonly decimals: 0;
3011
+ };
3012
+ }];
3013
+ };
2537
3014
  readonly label: {
2538
3015
  readonly singular: "Relay";
2539
3016
  readonly plural: "Relays";
@@ -2545,6 +3022,49 @@ declare const ENTITY_CONFIG: {
2545
3022
  readonly category: "grid";
2546
3023
  readonly archetype: "grid-energized";
2547
3024
  readonly detailPage: true;
3025
+ readonly properties: {
3026
+ readonly statList: [{
3027
+ readonly key: "primaryRatedVoltage";
3028
+ readonly label: "Primary Voltage";
3029
+ readonly format: {
3030
+ readonly type: "voltage";
3031
+ readonly unit: "V";
3032
+ readonly decimals: 0;
3033
+ };
3034
+ }, {
3035
+ readonly key: "ratedOutputVoltage";
3036
+ readonly label: "Output Voltage";
3037
+ readonly format: {
3038
+ readonly type: "voltage";
3039
+ readonly unit: "V";
3040
+ readonly decimals: 0;
3041
+ };
3042
+ }, {
3043
+ readonly key: "tranKvaA";
3044
+ readonly label: "Rating Phase A";
3045
+ readonly format: {
3046
+ readonly type: "power";
3047
+ readonly unit: "kVA";
3048
+ readonly decimals: 1;
3049
+ };
3050
+ }, {
3051
+ readonly key: "tranKvaB";
3052
+ readonly label: "Rating Phase B";
3053
+ readonly format: {
3054
+ readonly type: "power";
3055
+ readonly unit: "kVA";
3056
+ readonly decimals: 1;
3057
+ };
3058
+ }, {
3059
+ readonly key: "tranKvaC";
3060
+ readonly label: "Rating Phase C";
3061
+ readonly format: {
3062
+ readonly type: "power";
3063
+ readonly unit: "kVA";
3064
+ readonly decimals: 1;
3065
+ };
3066
+ }];
3067
+ };
2548
3068
  readonly label: {
2549
3069
  readonly singular: "Transformer";
2550
3070
  readonly plural: "Transformers";
@@ -2556,6 +3076,15 @@ declare const ENTITY_CONFIG: {
2556
3076
  readonly category: "grid";
2557
3077
  readonly archetype: "grid-energized";
2558
3078
  readonly detailPage: true;
3079
+ readonly properties: {
3080
+ readonly statList: [{
3081
+ readonly key: "meterNumber";
3082
+ readonly label: "Meter Number";
3083
+ readonly format: {
3084
+ readonly type: "text";
3085
+ };
3086
+ }];
3087
+ };
2559
3088
  readonly label: {
2560
3089
  readonly singular: "Meter";
2561
3090
  readonly plural: "Meters";
@@ -2565,7 +3094,10 @@ declare const ENTITY_CONFIG: {
2565
3094
  readonly headlineMetrics: [{
2566
3095
  readonly id: "power";
2567
3096
  readonly label: "device.meter.fields.power";
2568
- readonly path: "state.phaseARealPower";
3097
+ readonly source: {
3098
+ readonly kind: "state";
3099
+ readonly path: "state.phaseARealPower";
3100
+ };
2569
3101
  readonly format: {
2570
3102
  readonly type: "power";
2571
3103
  readonly unit: "kW";
@@ -2575,7 +3107,10 @@ declare const ENTITY_CONFIG: {
2575
3107
  }, {
2576
3108
  readonly id: "consumption";
2577
3109
  readonly label: "device.meter.fields.consumption";
2578
- readonly path: "state.latestKwhUsage";
3110
+ readonly source: {
3111
+ readonly kind: "state";
3112
+ readonly path: "state.latestKwhUsage";
3113
+ };
2579
3114
  readonly format: {
2580
3115
  readonly type: "energy";
2581
3116
  readonly sourceUnit: "kWh";
@@ -2590,6 +3125,15 @@ declare const ENTITY_CONFIG: {
2590
3125
  readonly category: "grid";
2591
3126
  readonly archetype: "grid-energized";
2592
3127
  readonly detailPage: true;
3128
+ readonly properties: {
3129
+ readonly statList: [{
3130
+ readonly key: "meterNumber";
3131
+ readonly label: "Meter Number";
3132
+ readonly format: {
3133
+ readonly type: "text";
3134
+ };
3135
+ }];
3136
+ };
2593
3137
  readonly label: {
2594
3138
  readonly singular: "Consumer";
2595
3139
  readonly plural: "Consumers";
@@ -2601,6 +3145,35 @@ declare const ENTITY_CONFIG: {
2601
3145
  readonly category: "grid";
2602
3146
  readonly archetype: "grid-line";
2603
3147
  readonly detailPage: true;
3148
+ readonly properties: {
3149
+ readonly statList: [{
3150
+ readonly key: "impedanceLength";
3151
+ readonly label: "Length";
3152
+ readonly format: {
3153
+ readonly type: "distance";
3154
+ readonly unit: "ft";
3155
+ readonly decimals: 0;
3156
+ };
3157
+ }, {
3158
+ readonly key: "conductorDescPhA";
3159
+ readonly label: "Conductor Phase A";
3160
+ readonly format: {
3161
+ readonly type: "text";
3162
+ };
3163
+ }, {
3164
+ readonly key: "conductorDescPhB";
3165
+ readonly label: "Conductor Phase B";
3166
+ readonly format: {
3167
+ readonly type: "text";
3168
+ };
3169
+ }, {
3170
+ readonly key: "conductorDescPhC";
3171
+ readonly label: "Conductor Phase C";
3172
+ readonly format: {
3173
+ readonly type: "text";
3174
+ };
3175
+ }];
3176
+ };
2604
3177
  readonly label: {
2605
3178
  readonly singular: "Single-Phase Overhead Line";
2606
3179
  readonly plural: "Single-Phase Overhead Lines";
@@ -2612,6 +3185,35 @@ declare const ENTITY_CONFIG: {
2612
3185
  readonly category: "grid";
2613
3186
  readonly archetype: "grid-line";
2614
3187
  readonly detailPage: true;
3188
+ readonly properties: {
3189
+ readonly statList: [{
3190
+ readonly key: "impedanceLength";
3191
+ readonly label: "Length";
3192
+ readonly format: {
3193
+ readonly type: "distance";
3194
+ readonly unit: "ft";
3195
+ readonly decimals: 0;
3196
+ };
3197
+ }, {
3198
+ readonly key: "conductorDescPhA";
3199
+ readonly label: "Conductor Phase A";
3200
+ readonly format: {
3201
+ readonly type: "text";
3202
+ };
3203
+ }, {
3204
+ readonly key: "conductorDescPhB";
3205
+ readonly label: "Conductor Phase B";
3206
+ readonly format: {
3207
+ readonly type: "text";
3208
+ };
3209
+ }, {
3210
+ readonly key: "conductorDescPhC";
3211
+ readonly label: "Conductor Phase C";
3212
+ readonly format: {
3213
+ readonly type: "text";
3214
+ };
3215
+ }];
3216
+ };
2615
3217
  readonly label: {
2616
3218
  readonly singular: "Two-Phase Overhead Line";
2617
3219
  readonly plural: "Two-Phase Overhead Lines";
@@ -2623,6 +3225,35 @@ declare const ENTITY_CONFIG: {
2623
3225
  readonly category: "grid";
2624
3226
  readonly archetype: "grid-line";
2625
3227
  readonly detailPage: true;
3228
+ readonly properties: {
3229
+ readonly statList: [{
3230
+ readonly key: "impedanceLength";
3231
+ readonly label: "Length";
3232
+ readonly format: {
3233
+ readonly type: "distance";
3234
+ readonly unit: "ft";
3235
+ readonly decimals: 0;
3236
+ };
3237
+ }, {
3238
+ readonly key: "conductorDescPhA";
3239
+ readonly label: "Conductor Phase A";
3240
+ readonly format: {
3241
+ readonly type: "text";
3242
+ };
3243
+ }, {
3244
+ readonly key: "conductorDescPhB";
3245
+ readonly label: "Conductor Phase B";
3246
+ readonly format: {
3247
+ readonly type: "text";
3248
+ };
3249
+ }, {
3250
+ readonly key: "conductorDescPhC";
3251
+ readonly label: "Conductor Phase C";
3252
+ readonly format: {
3253
+ readonly type: "text";
3254
+ };
3255
+ }];
3256
+ };
2626
3257
  readonly label: {
2627
3258
  readonly singular: "Three-Phase Overhead Line";
2628
3259
  readonly plural: "Three-Phase Overhead Lines";
@@ -2634,6 +3265,35 @@ declare const ENTITY_CONFIG: {
2634
3265
  readonly category: "grid";
2635
3266
  readonly archetype: "grid-line";
2636
3267
  readonly detailPage: true;
3268
+ readonly properties: {
3269
+ readonly statList: [{
3270
+ readonly key: "impedanceLength";
3271
+ readonly label: "Length";
3272
+ readonly format: {
3273
+ readonly type: "distance";
3274
+ readonly unit: "ft";
3275
+ readonly decimals: 0;
3276
+ };
3277
+ }, {
3278
+ readonly key: "conductorDescPhA";
3279
+ readonly label: "Conductor Phase A";
3280
+ readonly format: {
3281
+ readonly type: "text";
3282
+ };
3283
+ }, {
3284
+ readonly key: "conductorDescPhB";
3285
+ readonly label: "Conductor Phase B";
3286
+ readonly format: {
3287
+ readonly type: "text";
3288
+ };
3289
+ }, {
3290
+ readonly key: "conductorDescPhC";
3291
+ readonly label: "Conductor Phase C";
3292
+ readonly format: {
3293
+ readonly type: "text";
3294
+ };
3295
+ }];
3296
+ };
2637
3297
  readonly label: {
2638
3298
  readonly singular: "Single-Phase Underground Line";
2639
3299
  readonly plural: "Single-Phase Underground Lines";
@@ -2645,6 +3305,35 @@ declare const ENTITY_CONFIG: {
2645
3305
  readonly category: "grid";
2646
3306
  readonly archetype: "grid-line";
2647
3307
  readonly detailPage: true;
3308
+ readonly properties: {
3309
+ readonly statList: [{
3310
+ readonly key: "impedanceLength";
3311
+ readonly label: "Length";
3312
+ readonly format: {
3313
+ readonly type: "distance";
3314
+ readonly unit: "ft";
3315
+ readonly decimals: 0;
3316
+ };
3317
+ }, {
3318
+ readonly key: "conductorDescPhA";
3319
+ readonly label: "Conductor Phase A";
3320
+ readonly format: {
3321
+ readonly type: "text";
3322
+ };
3323
+ }, {
3324
+ readonly key: "conductorDescPhB";
3325
+ readonly label: "Conductor Phase B";
3326
+ readonly format: {
3327
+ readonly type: "text";
3328
+ };
3329
+ }, {
3330
+ readonly key: "conductorDescPhC";
3331
+ readonly label: "Conductor Phase C";
3332
+ readonly format: {
3333
+ readonly type: "text";
3334
+ };
3335
+ }];
3336
+ };
2648
3337
  readonly label: {
2649
3338
  readonly singular: "Two-Phase Underground Line";
2650
3339
  readonly plural: "Two-Phase Underground Lines";
@@ -2656,6 +3345,35 @@ declare const ENTITY_CONFIG: {
2656
3345
  readonly category: "grid";
2657
3346
  readonly archetype: "grid-line";
2658
3347
  readonly detailPage: true;
3348
+ readonly properties: {
3349
+ readonly statList: [{
3350
+ readonly key: "impedanceLength";
3351
+ readonly label: "Length";
3352
+ readonly format: {
3353
+ readonly type: "distance";
3354
+ readonly unit: "ft";
3355
+ readonly decimals: 0;
3356
+ };
3357
+ }, {
3358
+ readonly key: "conductorDescPhA";
3359
+ readonly label: "Conductor Phase A";
3360
+ readonly format: {
3361
+ readonly type: "text";
3362
+ };
3363
+ }, {
3364
+ readonly key: "conductorDescPhB";
3365
+ readonly label: "Conductor Phase B";
3366
+ readonly format: {
3367
+ readonly type: "text";
3368
+ };
3369
+ }, {
3370
+ readonly key: "conductorDescPhC";
3371
+ readonly label: "Conductor Phase C";
3372
+ readonly format: {
3373
+ readonly type: "text";
3374
+ };
3375
+ }];
3376
+ };
2659
3377
  readonly label: {
2660
3378
  readonly singular: "Three-Phase Underground Line";
2661
3379
  readonly plural: "Three-Phase Underground Lines";
@@ -2667,6 +3385,25 @@ declare const ENTITY_CONFIG: {
2667
3385
  readonly category: "grid";
2668
3386
  readonly archetype: "grid-energized";
2669
3387
  readonly detailPage: true;
3388
+ readonly properties: {
3389
+ readonly statList: [{
3390
+ readonly key: "ratedPower";
3391
+ readonly label: "Rated Power";
3392
+ readonly format: {
3393
+ readonly type: "power";
3394
+ readonly unit: "kW";
3395
+ readonly decimals: 1;
3396
+ };
3397
+ }, {
3398
+ readonly key: "voltage";
3399
+ readonly label: "Voltage";
3400
+ readonly format: {
3401
+ readonly type: "voltage";
3402
+ readonly unit: "V";
3403
+ readonly decimals: 0;
3404
+ };
3405
+ }];
3406
+ };
2670
3407
  readonly label: {
2671
3408
  readonly singular: "Motor Switch";
2672
3409
  readonly plural: "Motor Switches";
@@ -2678,6 +3415,23 @@ declare const ENTITY_CONFIG: {
2678
3415
  readonly category: "grid";
2679
3416
  readonly archetype: "grid-energized";
2680
3417
  readonly detailPage: true;
3418
+ readonly properties: {
3419
+ readonly statList: [{
3420
+ readonly key: "ratedCurrent";
3421
+ readonly label: "Rated Current";
3422
+ readonly format: {
3423
+ readonly type: "number";
3424
+ readonly unit: "A";
3425
+ readonly decimals: 0;
3426
+ };
3427
+ }, {
3428
+ readonly key: "deviceType";
3429
+ readonly label: "Device Type";
3430
+ readonly format: {
3431
+ readonly type: "text";
3432
+ };
3433
+ }];
3434
+ };
2681
3435
  readonly label: {
2682
3436
  readonly singular: "Recloser";
2683
3437
  readonly plural: "Reclosers";
@@ -2697,6 +3451,23 @@ declare const ENTITY_CONFIG: {
2697
3451
  readonly category: "grid";
2698
3452
  readonly archetype: "grid-energized";
2699
3453
  readonly detailPage: true;
3454
+ readonly properties: {
3455
+ readonly statList: [{
3456
+ readonly key: "ratedCurrent";
3457
+ readonly label: "Rated Current";
3458
+ readonly format: {
3459
+ readonly type: "number";
3460
+ readonly unit: "A";
3461
+ readonly decimals: 0;
3462
+ };
3463
+ }, {
3464
+ readonly key: "deviceType";
3465
+ readonly label: "Device Type";
3466
+ readonly format: {
3467
+ readonly type: "text";
3468
+ };
3469
+ }];
3470
+ };
2700
3471
  readonly label: {
2701
3472
  readonly singular: "Fuse";
2702
3473
  readonly plural: "Fuses";
@@ -2708,6 +3479,23 @@ declare const ENTITY_CONFIG: {
2708
3479
  readonly category: "grid";
2709
3480
  readonly archetype: "grid-energized";
2710
3481
  readonly detailPage: true;
3482
+ readonly properties: {
3483
+ readonly statList: [{
3484
+ readonly key: "ratedCurrent";
3485
+ readonly label: "Rated Current";
3486
+ readonly format: {
3487
+ readonly type: "number";
3488
+ readonly unit: "A";
3489
+ readonly decimals: 0;
3490
+ };
3491
+ }, {
3492
+ readonly key: "deviceType";
3493
+ readonly label: "Device Type";
3494
+ readonly format: {
3495
+ readonly type: "text";
3496
+ };
3497
+ }];
3498
+ };
2711
3499
  readonly label: {
2712
3500
  readonly singular: "Breaker";
2713
3501
  readonly plural: "Breakers";
@@ -2727,6 +3515,25 @@ declare const ENTITY_CONFIG: {
2727
3515
  readonly category: "grid";
2728
3516
  readonly archetype: "grid-energized";
2729
3517
  readonly detailPage: true;
3518
+ readonly properties: {
3519
+ readonly statList: [{
3520
+ readonly key: "ratedPower";
3521
+ readonly label: "Rated Power";
3522
+ readonly format: {
3523
+ readonly type: "power";
3524
+ readonly unit: "kW";
3525
+ readonly decimals: 1;
3526
+ };
3527
+ }, {
3528
+ readonly key: "outputVoltage";
3529
+ readonly label: "Output Voltage";
3530
+ readonly format: {
3531
+ readonly type: "voltage";
3532
+ readonly unit: "V";
3533
+ readonly decimals: 0;
3534
+ };
3535
+ }];
3536
+ };
2730
3537
  readonly label: {
2731
3538
  readonly singular: "Generator";
2732
3539
  readonly plural: "Generators";
@@ -2738,6 +3545,41 @@ declare const ENTITY_CONFIG: {
2738
3545
  readonly category: "grid";
2739
3546
  readonly archetype: "grid-energized";
2740
3547
  readonly detailPage: true;
3548
+ readonly properties: {
3549
+ readonly statList: [{
3550
+ readonly key: "outputVoltagePhA";
3551
+ readonly label: "Output Voltage Phase A";
3552
+ readonly format: {
3553
+ readonly type: "voltage";
3554
+ readonly unit: "V";
3555
+ readonly decimals: 0;
3556
+ };
3557
+ }, {
3558
+ readonly key: "outputVoltagePhB";
3559
+ readonly label: "Output Voltage Phase B";
3560
+ readonly format: {
3561
+ readonly type: "voltage";
3562
+ readonly unit: "V";
3563
+ readonly decimals: 0;
3564
+ };
3565
+ }, {
3566
+ readonly key: "outputVoltagePhC";
3567
+ readonly label: "Output Voltage Phase C";
3568
+ readonly format: {
3569
+ readonly type: "voltage";
3570
+ readonly unit: "V";
3571
+ readonly decimals: 0;
3572
+ };
3573
+ }, {
3574
+ readonly key: "ratedPower";
3575
+ readonly label: "Rated Power";
3576
+ readonly format: {
3577
+ readonly type: "power";
3578
+ readonly unit: "kVA";
3579
+ readonly decimals: 1;
3580
+ };
3581
+ }];
3582
+ };
2741
3583
  readonly label: {
2742
3584
  readonly singular: "Regulator";
2743
3585
  readonly plural: "Regulators";
@@ -2749,6 +3591,17 @@ declare const ENTITY_CONFIG: {
2749
3591
  readonly category: "grid";
2750
3592
  readonly archetype: "grid-line";
2751
3593
  readonly detailPage: true;
3594
+ readonly properties: {
3595
+ readonly statList: [{
3596
+ readonly key: "nominalVoltage";
3597
+ readonly label: "Nominal Voltage";
3598
+ readonly format: {
3599
+ readonly type: "voltage";
3600
+ readonly unit: "V";
3601
+ readonly decimals: 0;
3602
+ };
3603
+ }];
3604
+ };
2752
3605
  readonly label: {
2753
3606
  readonly singular: "Support Structure";
2754
3607
  readonly plural: "Support Structures";
@@ -2769,7 +3622,10 @@ declare const ENTITY_CONFIG: {
2769
3622
  readonly headlineMetrics: [{
2770
3623
  readonly id: "power";
2771
3624
  readonly label: "device.battery.fields.power";
2772
- readonly path: "state.gridPower";
3625
+ readonly source: {
3626
+ readonly kind: "state";
3627
+ readonly path: "state.gridPower";
3628
+ };
2773
3629
  readonly format: {
2774
3630
  readonly type: "power";
2775
3631
  readonly decimals: 1;
@@ -2778,7 +3634,10 @@ declare const ENTITY_CONFIG: {
2778
3634
  }, {
2779
3635
  readonly id: "soc";
2780
3636
  readonly label: "device.battery.fields.soc";
2781
- readonly path: "state.chargePercentage";
3637
+ readonly source: {
3638
+ readonly kind: "state";
3639
+ readonly path: "state.chargePercentage";
3640
+ };
2782
3641
  readonly format: {
2783
3642
  readonly type: "percentage";
2784
3643
  readonly decimals: 0;
@@ -2825,7 +3684,10 @@ declare const ENTITY_CONFIG: {
2825
3684
  readonly headlineMetrics: [{
2826
3685
  readonly id: "power";
2827
3686
  readonly label: "device.evCharger.fields.power";
2828
- readonly path: "state.chargerWattage";
3687
+ readonly source: {
3688
+ readonly kind: "state";
3689
+ readonly path: "state.chargerWattage";
3690
+ };
2829
3691
  readonly format: {
2830
3692
  readonly type: "power";
2831
3693
  readonly decimals: 1;
@@ -2834,7 +3696,10 @@ declare const ENTITY_CONFIG: {
2834
3696
  }, {
2835
3697
  readonly id: "isPluggedIn";
2836
3698
  readonly label: "device.evCharger.fields.isPluggedIn";
2837
- readonly path: "state.isPluggedIn";
3699
+ readonly source: {
3700
+ readonly kind: "state";
3701
+ readonly path: "state.isPluggedIn";
3702
+ };
2838
3703
  readonly format: {
2839
3704
  readonly type: "boolean";
2840
3705
  readonly trueText: "Yes";
@@ -2871,7 +3736,10 @@ declare const ENTITY_CONFIG: {
2871
3736
  readonly headlineMetrics: [{
2872
3737
  readonly id: "power";
2873
3738
  readonly label: "device.inverter.fields.power";
2874
- readonly path: "state.power";
3739
+ readonly source: {
3740
+ readonly kind: "state";
3741
+ readonly path: "state.power";
3742
+ };
2875
3743
  readonly format: {
2876
3744
  readonly type: "power";
2877
3745
  readonly decimals: 0;
@@ -2880,7 +3748,10 @@ declare const ENTITY_CONFIG: {
2880
3748
  }, {
2881
3749
  readonly id: "gridPower";
2882
3750
  readonly label: "device.inverter.fields.gridPower";
2883
- readonly path: "state.gridPower";
3751
+ readonly source: {
3752
+ readonly kind: "state";
3753
+ readonly path: "state.gridPower";
3754
+ };
2884
3755
  readonly format: {
2885
3756
  readonly type: "power";
2886
3757
  readonly decimals: 0;
@@ -2915,7 +3786,10 @@ declare const ENTITY_CONFIG: {
2915
3786
  readonly headlineMetrics: [{
2916
3787
  readonly id: "ambientTemperature";
2917
3788
  readonly label: "device.thermostat.fields.ambientTemperature";
2918
- readonly path: "state.ambientTemperature";
3789
+ readonly source: {
3790
+ readonly kind: "state";
3791
+ readonly path: "state.ambientTemperature";
3792
+ };
2919
3793
  readonly format: {
2920
3794
  readonly type: "temperature";
2921
3795
  readonly decimals: 0;
@@ -2924,7 +3798,10 @@ declare const ENTITY_CONFIG: {
2924
3798
  }, {
2925
3799
  readonly id: "heatTarget";
2926
3800
  readonly label: "device.thermostat.fields.heatTarget";
2927
- readonly path: "state.heatTarget";
3801
+ readonly source: {
3802
+ readonly kind: "state";
3803
+ readonly path: "state.heatTarget";
3804
+ };
2928
3805
  readonly format: {
2929
3806
  readonly type: "temperature";
2930
3807
  readonly decimals: 0;
@@ -2933,7 +3810,10 @@ declare const ENTITY_CONFIG: {
2933
3810
  }, {
2934
3811
  readonly id: "coolTarget";
2935
3812
  readonly label: "device.thermostat.fields.coolTarget";
2936
- readonly path: "state.coolTarget";
3813
+ readonly source: {
3814
+ readonly kind: "state";
3815
+ readonly path: "state.coolTarget";
3816
+ };
2937
3817
  readonly format: {
2938
3818
  readonly type: "temperature";
2939
3819
  readonly decimals: 0;
@@ -2971,7 +3851,10 @@ declare const ENTITY_CONFIG: {
2971
3851
  readonly headlineMetrics: [{
2972
3852
  readonly id: "chargePercentage";
2973
3853
  readonly label: "device.vehicle.fields.chargePercentage";
2974
- readonly path: "state.chargePercentage";
3854
+ readonly source: {
3855
+ readonly kind: "state";
3856
+ readonly path: "state.chargePercentage";
3857
+ };
2975
3858
  readonly format: {
2976
3859
  readonly type: "percentage";
2977
3860
  readonly decimals: 0;
@@ -2980,7 +3863,10 @@ declare const ENTITY_CONFIG: {
2980
3863
  }, {
2981
3864
  readonly id: "range";
2982
3865
  readonly label: "device.vehicle.fields.range";
2983
- readonly path: "state.range";
3866
+ readonly source: {
3867
+ readonly kind: "state";
3868
+ readonly path: "state.range";
3869
+ };
2984
3870
  readonly format: {
2985
3871
  readonly type: "distance";
2986
3872
  readonly unit: "mi";
@@ -3016,6 +3902,39 @@ declare const ENTITY_CONFIG: {
3016
3902
  };
3017
3903
  };
3018
3904
  type EntityType = keyof typeof ENTITY_CONFIG;
3905
+ /**
3906
+ * The 22→12 mapping (MR-07 step 6): every grid registry key resolved to its
3907
+ * coarse `GridElementType`. The registry splits some element types by phase
3908
+ * count or sub-class (lines → 1P/2P/3P, overcurrent → recloser/fuse/breaker,
3909
+ * `NODE` → pole/relay/support structure), so several keys share one element
3910
+ * type. This is the recorded source-of-truth for which `GRID_STAT_LIST` a grid
3911
+ * entity's `properties.statList` was transcribed from; a conformance test asserts
3912
+ * each grid entity's stat-list is exactly `GRID_STAT_LIST[mapping[key]]`.
3913
+ */
3914
+ declare const GRID_ELEMENT_TYPE_BY_ENTITY: {
3915
+ readonly source: "SOURCE";
3916
+ readonly substation: "SOURCE";
3917
+ readonly capacitor: "CAPACITOR";
3918
+ readonly switch: "SWITCH";
3919
+ readonly sectionalizer: "SWITCH";
3920
+ readonly relay: "NODE";
3921
+ readonly transformer: "TRANSFORMER";
3922
+ readonly meter: "CONSUMER";
3923
+ readonly consumer: "CONSUMER";
3924
+ readonly singlePhaseOverheadLine: "OVERHEAD_LINE";
3925
+ readonly twoPhaseOverheadLine: "OVERHEAD_LINE";
3926
+ readonly threePhaseOverheadLine: "OVERHEAD_LINE";
3927
+ readonly singlePhaseUndergroundLine: "UNDERGROUND_LINE";
3928
+ readonly twoPhaseUndergroundLine: "UNDERGROUND_LINE";
3929
+ readonly threePhaseUndergroundLine: "UNDERGROUND_LINE";
3930
+ readonly motorSwitch: "MOTOR";
3931
+ readonly recloser: "OVERCURRENT_DEVICE";
3932
+ readonly fuse: "OVERCURRENT_DEVICE";
3933
+ readonly breaker: "OVERCURRENT_DEVICE";
3934
+ readonly generator: "GENERATOR";
3935
+ readonly regulator: "REGULATOR";
3936
+ readonly supportStructure: "NODE";
3937
+ };
3019
3938
  /**
3020
3939
  * Get entity configuration by type
3021
3940
  *
@@ -3104,6 +4023,24 @@ declare function entityHasDetailPage(entityType: EntityType): boolean;
3104
4023
  * @param entityType - The entity type key
3105
4024
  */
3106
4025
  declare function entityShowsNow(entityType: EntityType): boolean;
4026
+ /**
4027
+ * The static-property (`data.stat-list`) rows for an entity, or an empty array
4028
+ * when it has none. Grid entities carry a non-empty stat-list transcribed from
4029
+ * `grid-element-config`; devices and platform objects return `[]`.
4030
+ *
4031
+ * Note this is independent of `entityShowsNow`: a static stat-list is *not* an
4032
+ * `entity.now`. A grid line has `properties.statList` (structural nameplate) yet
4033
+ * `entityShowsNow` is `false` — that is the intended MR-07 split.
4034
+ *
4035
+ * @param entityType - The entity type key
4036
+ */
4037
+ declare function getEntityStatList(entityType: EntityType): readonly GridStatField[];
4038
+ /**
4039
+ * Whether an entity has a non-empty static-property (`data.stat-list`) block.
4040
+ *
4041
+ * @param entityType - The entity type key
4042
+ */
4043
+ declare function entityHasStatList(entityType: EntityType): boolean;
3107
4044
 
3108
4045
  /**
3109
4046
  * Resolves a CSS variable to its computed color value.
@@ -3164,4 +4101,4 @@ declare const getContrastingTextColor: (backgroundColor: string) => string;
3164
4101
  */
3165
4102
  declare const mapValuesToCategoricalColors: (values: (string | number)[]) => Record<string | number, string>;
3166
4103
 
3167
- export { getYFormatSettings as $, type ActionItem as A, type BadgeProps as B, type ChartMargin as C, archetypeFor as D, ENTITY_CONFIG as E, clearColorCache as F, createCategoryColorMap as G, HEADLINE_METRIC_BOUNDS as H, type InteractiveMapProps as I, createXScale as J, createYScale as K, Loader as L, type MapPoint as M, defaultMargin as N, entityHasDetailPage as O, entityShowsNow as P, getContrastingTextColor as Q, getDefaultChartColor as R, type SegmentOption as S, TextLink as T, getDefaultColors as U, getEntityConfig as V, getEntityIcon as W, getEntityLabel as X, type YFormatSettings as Y, getResolvedColor as Z, getThemeCategoricalColors as _, type ActionMenuProps as a, type StackNavGroup as a$, isLightColor as a0, type FieldValue as a1, type BooleanFormat as a2, type FormattedValue as a3, type FieldFormat as a4, type CurrentFormat as a5, type DateFormat as a6, type DistanceFormat as a7, type EnergyUnit as a8, type EnergyFormat as a9, CodeEditor as aA, type ColorSpec as aB, type ComponentFormatOptions as aC, type CurrentUnit as aD, type CustomFormat as aE, DEFAULT_MAP_TYPE as aF, type DateFormatStyle as aG, type DistanceUnit as aH, ENTITY_CATEGORY_CONFIG as aI, type EntityCategory as aJ, type EntityCategoryConfig as aK, GRID_STATE_COLORS as aL, type GridStateColor as aM, InteractiveMap as aN, type InteractiveMapHandle as aO, type LayerFeature as aP, type LayerStyle as aQ, MAP_TYPES as aR, type MapType as aS, Meter as aT, type MetricFormat as aU, type PercentageFormat as aV, type PowerUnit as aW, type RenderType as aX, type ResistanceUnit as aY, SegmentedControl as aZ, StackNav as a_, type CurrencyFormat as aa, type NumberFormat as ab, type PhoneFormat as ac, type PowerFormat as ad, type FormatterFunction as ae, type ResistanceFormat as af, type TemperatureFormat as ag, type TemperatureUnitString as ah, type TemperatureUnit as ai, type TextFormat as aj, type VoltageFormat as ak, type DeviceState as al, type GridState as am, type ComponentFormatter as an, type LayerSpec as ao, type CustomPinsSpec as ap, type GeoJsonLayerSpec as aq, type RasterLayerSpec as ar, type VectorLayerSpec as as, type ClusteredVectorLayerSpec as at, ActionMenu as au, AppShell as av, Avatar as aw, Badge as ax, type BaseFormat as ay, ChartContext as az, type AppShellProps as b, type StackNavItem as b0, type StackNavLinkComponentProps as b1, type StackNavProps as b2, type StackNavTheme as b3, StaticMap as b4, type TextTransform as b5, type TextTruncatePosition as b6, type VoltageUnit as b7, type ZoomStops as b8, activeDeviceStates as b9, baselineFromPoint as ba, deviceStateLabels as bb, deviceStateMetricFormats as bc, formatComponentValue as bd, getDeviceStateLabel as be, getEntityCategory as bf, getGridStateLabel as bg, gridStateLabels as bh, isActiveState as bi, mapValuesToCategoricalColors as bj, useChartContext as bk, useComponentFormatter as bl, type AvatarProps as c, type BaseDataPoint as d, type CodeEditorProps as e, type CodeLanguage as f, type CodeTheme as g, type EntityArchetype as h, type EntityConfig as i, type EntityStateRule as j, type EntityType as k, Heading as l, type HeadlineMetric as m, Logo as n, type MeterProps as o, type SegmentedControlProps as p, type SerializableFieldFormat as q, SideNav as r, type SideNavItem as s, type SideNavProps as t, type StaticMapProps as u, type TooltipData as v, type TooltipSeries as w, TopNav as x, type TopNavProps as y, type YFormatType as z };
4104
+ export { getContrastingTextColor as $, ABSENT_GRID_FIELDS as A, type BadgeProps as B, type ChartMargin as C, type StaticMapProps as D, ENTITY_CONFIG as E, type TooltipData as F, GRID_ELEMENT_TYPE_BY_ENTITY as G, HEADLINE_METRIC_BOUNDS as H, type InteractiveMapProps as I, type TooltipSeries as J, TopNav as K, Loader as L, type MapPoint as M, type TopNavProps as N, type YFormatType as O, archetypeFor as P, clearColorCache as Q, createCategoryColorMap as R, type SegmentOption as S, TextLink as T, createXScale as U, createYScale as V, defaultMargin as W, entityHasDetailPage as X, type YFormatSettings as Y, entityHasStatList as Z, entityShowsNow as _, type ActionItem as a, type MapType as a$, getDefaultChartColor as a0, getDefaultColors as a1, getEntityConfig as a2, getEntityIcon as a3, getEntityLabel as a4, getEntityStatList as a5, getResolvedColor as a6, getThemeCategoricalColors as a7, getYFormatSettings as a8, isLightColor as a9, type RasterLayerSpec as aA, type VectorLayerSpec as aB, type ClusteredVectorLayerSpec as aC, ActionMenu as aD, AppShell as aE, Avatar as aF, Badge as aG, type BaseFormat as aH, ChartContext as aI, CodeEditor as aJ, type ColorSpec as aK, type ComponentFormatOptions as aL, type CurrentUnit as aM, type CustomFormat as aN, DEFAULT_MAP_TYPE as aO, type DateFormatStyle as aP, type DistanceUnit as aQ, ENTITY_CATEGORY_CONFIG as aR, type EntityCategory as aS, type EntityCategoryConfig as aT, GRID_STATE_COLORS as aU, type GridStateColor as aV, InteractiveMap as aW, type InteractiveMapHandle as aX, type LayerFeature as aY, type LayerStyle as aZ, MAP_TYPES as a_, type FieldValue as aa, type BooleanFormat as ab, type FormattedValue as ac, type FieldFormat as ad, type CurrentFormat as ae, type DateFormat as af, type DistanceFormat as ag, type EnergyUnit as ah, type EnergyFormat as ai, type CurrencyFormat as aj, type NumberFormat as ak, type PhoneFormat as al, type PowerFormat as am, type FormatterFunction as an, type ResistanceFormat as ao, type TemperatureFormat as ap, type TemperatureUnitString as aq, type TemperatureUnit as ar, type TextFormat as as, type VoltageFormat as at, type DeviceState as au, type GridState as av, type ComponentFormatter as aw, type LayerSpec as ax, type CustomPinsSpec as ay, type GeoJsonLayerSpec as az, type ActionMenuProps as b, Meter as b0, type MetricFormat as b1, type PercentageFormat as b2, type PowerUnit as b3, type RenderType as b4, type ResistanceUnit as b5, SegmentedControl as b6, StackNav as b7, type StackNavGroup as b8, type StackNavItem as b9, type StackNavLinkComponentProps as ba, type StackNavProps as bb, type StackNavTheme as bc, StaticMap as bd, type TextTransform as be, type TextTruncatePosition as bf, type VoltageUnit as bg, type ZoomStops as bh, activeDeviceStates as bi, baselineFromPoint as bj, deviceStateLabels as bk, deviceStateMetricFormats as bl, formatComponentValue as bm, getDeviceStateLabel as bn, getEntityCategory as bo, getGridStateLabel as bp, gridStateLabels as bq, isActiveState as br, mapValuesToCategoricalColors as bs, useChartContext as bt, useComponentFormatter as bu, type AppShellProps as c, type AvatarProps as d, type BaseDataPoint as e, type CodeEditorProps as f, type CodeLanguage as g, type CodeTheme as h, type EntityArchetype as i, type EntityConfig as j, type EntityStateRule as k, type EntityType as l, GRID_STAT_LIST as m, type GridElementSourceType as n, type GridStatField as o, type GridStatFieldFormat as p, Heading as q, type HeadlineMetric as r, Logo as s, type MeterProps as t, type MetricSource as u, type SegmentedControlProps as v, type SerializableFieldFormat as w, SideNav as x, type SideNavItem as y, type SideNavProps as z };