@elaraai/e3-ui 1.0.11 → 1.0.13

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.
@@ -0,0 +1,694 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * `Experiment` component — an interactive causal-experiment surface.
7
+ *
8
+ * @remarks
9
+ * `Experiment` lets a domain expert ask *"did X change Y, and can I trust it?"*
10
+ * against a dataset and read a derived, honest answer — without meeting a
11
+ * statistician's vocabulary. It is a registered extension component
12
+ * (architecturally like {@link Ontology}): the author writes one tag,
13
+ * `Experiment.Root({ … })`; the React renderer lives in
14
+ * `@elaraai/e3-ui-components`.
15
+ *
16
+ * **Generic over the input row, like `Table`.** The author binds the input
17
+ * dataset (`data: BoundValue<ArrayType<Row>>`); the renderer introspects its row
18
+ * struct to drive the treatment / outcome / confounder pickers.
19
+ *
20
+ * **The user edits the config → Apply runs ONE function.** Editing a picker
21
+ * stages a new {@link ExperimentConfigType}; **Apply** calls the single bound
22
+ * `experiment` function (`(rows, config) → ExperimentResult`) and the answer
23
+ * arrives reactively. The result carries the naive vs adjusted effect, balance,
24
+ * overlap, robustness, and an honesty **verdict** — `adjusted` is `none` when the
25
+ * engine refuses. **Commit** appends to the journal.
26
+ *
27
+ * **Visual-first and derived.** Nothing on the result side is hand-authored —
28
+ * every word is a column name the user picked, a number the engine returned, or
29
+ * a status derived by rule from the verdict tag.
30
+ *
31
+ * @packageDocumentation
32
+ */
33
+ import { NullType, BooleanType, ArrayType, StructType, VariantType, OptionType, type ExprType, type SubtypeExprOrValue } from '@elaraai/east';
34
+ import { type UIComponentType } from '@elaraai/east-ui';
35
+ import { type BoundValue } from '../data.js';
36
+ import { type BoundFunc } from '../func.js';
37
+ import { ExperimentConfigType, ExperimentResultType, JournalType, PopulationType, DesignConfigType, ExperimentDesignType } from './types.js';
38
+ export { CiType, WeightingSchemeType, EstimatorType, TargetUnitsType, BootstrapConfigType, RefuteSpecType, ExperimentConfigType, BalanceRowType, OverlapDiagnosticType, RefutationType, DoseResponseType, ExperimentVerdictType, ExperimentResultType, JournalRowType, JournalType, ColumnMetaType, PopulationType, } from './types.js';
39
+ /**
40
+ * The `experiment` function signature: `(rows, config) → ExperimentResult`. The
41
+ * renderer calls this on **Apply** with the bound `data` and the staged config.
42
+ *
43
+ * @typeParam Row - The input dataset's row struct.
44
+ */
45
+ export type ExperimentFunc<Row extends StructType> = BoundFunc<[ArrayType<Row>, ExperimentConfigType], ExperimentResultType>;
46
+ export type ExperimentDesignFunc<Row extends StructType> = BoundFunc<[ArrayType<Row>, ExperimentConfigType, ExperimentResultType, DesignConfigType], ExperimentDesignType>;
47
+ /** Initial result tab variant — `answer` (default), `trust`, `dose`, or `validate`. */
48
+ export declare const ExperimentTabType: VariantType<{
49
+ readonly answer: NullType;
50
+ readonly trust: NullType;
51
+ readonly dose: NullType;
52
+ readonly validate: NullType;
53
+ }>;
54
+ /** Type alias for {@link ExperimentTabType}. */
55
+ export type ExperimentTabType = typeof ExperimentTabType;
56
+ /**
57
+ * The `Experiment` component payload — binding descriptors + options. Renderers
58
+ * decode this and resolve each binding to a live, reactive value / call handle.
59
+ *
60
+ * @property data - {@link DiffBindingType} for the input dataset — the renderer
61
+ * introspects its row struct for the pickers and passes it to the function.
62
+ * @property config - {@link DiffBindingType} for the staged {@link ExperimentConfigType}.
63
+ * @property experiment - {@link FuncBindingType} for the single `experiment` function.
64
+ * @property population - Optional {@link DiffBindingType} for the staged Step-4
65
+ * population filter ({@link PopulationType}); narrows rows UI-side before the call.
66
+ * @property journal - Optional {@link DiffBindingType} for the committed-experiment journal.
67
+ * @property columnMeta - Optional per-column display metadata.
68
+ * @property readonly - Render without the Apply / Commit / edit affordances.
69
+ * @property defaultTab - Initial result tab ({@link ExperimentTabType}).
70
+ */
71
+ export declare const ExperimentPayloadType: StructType<{
72
+ readonly data: StructType<{
73
+ readonly source: ArrayType<VariantType<{
74
+ readonly field: import("@elaraai/east").StringType;
75
+ }>>;
76
+ readonly patch: OptionType<ArrayType<VariantType<{
77
+ readonly field: import("@elaraai/east").StringType;
78
+ }>>>;
79
+ readonly mode: VariantType<{
80
+ readonly staged: NullType;
81
+ readonly direct: NullType;
82
+ }>;
83
+ }>;
84
+ readonly config: StructType<{
85
+ readonly source: ArrayType<VariantType<{
86
+ readonly field: import("@elaraai/east").StringType;
87
+ }>>;
88
+ readonly patch: OptionType<ArrayType<VariantType<{
89
+ readonly field: import("@elaraai/east").StringType;
90
+ }>>>;
91
+ readonly mode: VariantType<{
92
+ readonly staged: NullType;
93
+ readonly direct: NullType;
94
+ }>;
95
+ }>;
96
+ readonly experiment: StructType<{
97
+ readonly name: import("@elaraai/east").StringType;
98
+ }>;
99
+ readonly population: OptionType<StructType<{
100
+ readonly source: ArrayType<VariantType<{
101
+ readonly field: import("@elaraai/east").StringType;
102
+ }>>;
103
+ readonly patch: OptionType<ArrayType<VariantType<{
104
+ readonly field: import("@elaraai/east").StringType;
105
+ }>>>;
106
+ readonly mode: VariantType<{
107
+ readonly staged: NullType;
108
+ readonly direct: NullType;
109
+ }>;
110
+ }>>;
111
+ readonly journal: OptionType<StructType<{
112
+ readonly source: ArrayType<VariantType<{
113
+ readonly field: import("@elaraai/east").StringType;
114
+ }>>;
115
+ readonly patch: OptionType<ArrayType<VariantType<{
116
+ readonly field: import("@elaraai/east").StringType;
117
+ }>>>;
118
+ readonly mode: VariantType<{
119
+ readonly staged: NullType;
120
+ readonly direct: NullType;
121
+ }>;
122
+ }>>;
123
+ /** Optional `design` function → the validation-trial recipe ("Validate" tab). */
124
+ readonly design: OptionType<StructType<{
125
+ readonly name: import("@elaraai/east").StringType;
126
+ }>>;
127
+ readonly columnMeta: OptionType<import("@elaraai/east").DictType<import("@elaraai/east").StringType, StructType<{
128
+ readonly label: OptionType<import("@elaraai/east").StringType>;
129
+ readonly unit: OptionType<import("@elaraai/east").StringType>;
130
+ readonly higherIsBetter: OptionType<BooleanType>;
131
+ }>>>;
132
+ readonly readonly: OptionType<BooleanType>;
133
+ readonly defaultTab: OptionType<VariantType<{
134
+ readonly answer: NullType;
135
+ readonly trust: NullType;
136
+ readonly dose: NullType;
137
+ readonly validate: NullType;
138
+ }>>;
139
+ }>;
140
+ /** Type alias for {@link ExperimentPayloadType}. */
141
+ export type ExperimentPayloadType = typeof ExperimentPayloadType;
142
+ /** Initial result tab as a string literal. */
143
+ export type ExperimentTabLiteral = 'answer' | 'trust' | 'dose';
144
+ /**
145
+ * Internal {@link EastUI.component} carrier. The React renderer registers
146
+ * against this in `@elaraai/e3-ui-components`.
147
+ */
148
+ export declare const ExperimentComponent: import("@elaraai/east-ui").UIComponentDef<StructType<{
149
+ readonly data: StructType<{
150
+ readonly source: ArrayType<VariantType<{
151
+ readonly field: import("@elaraai/east").StringType;
152
+ }>>;
153
+ readonly patch: OptionType<ArrayType<VariantType<{
154
+ readonly field: import("@elaraai/east").StringType;
155
+ }>>>;
156
+ readonly mode: VariantType<{
157
+ readonly staged: NullType;
158
+ readonly direct: NullType;
159
+ }>;
160
+ }>;
161
+ readonly config: StructType<{
162
+ readonly source: ArrayType<VariantType<{
163
+ readonly field: import("@elaraai/east").StringType;
164
+ }>>;
165
+ readonly patch: OptionType<ArrayType<VariantType<{
166
+ readonly field: import("@elaraai/east").StringType;
167
+ }>>>;
168
+ readonly mode: VariantType<{
169
+ readonly staged: NullType;
170
+ readonly direct: NullType;
171
+ }>;
172
+ }>;
173
+ readonly experiment: StructType<{
174
+ readonly name: import("@elaraai/east").StringType;
175
+ }>;
176
+ readonly population: OptionType<StructType<{
177
+ readonly source: ArrayType<VariantType<{
178
+ readonly field: import("@elaraai/east").StringType;
179
+ }>>;
180
+ readonly patch: OptionType<ArrayType<VariantType<{
181
+ readonly field: import("@elaraai/east").StringType;
182
+ }>>>;
183
+ readonly mode: VariantType<{
184
+ readonly staged: NullType;
185
+ readonly direct: NullType;
186
+ }>;
187
+ }>>;
188
+ readonly journal: OptionType<StructType<{
189
+ readonly source: ArrayType<VariantType<{
190
+ readonly field: import("@elaraai/east").StringType;
191
+ }>>;
192
+ readonly patch: OptionType<ArrayType<VariantType<{
193
+ readonly field: import("@elaraai/east").StringType;
194
+ }>>>;
195
+ readonly mode: VariantType<{
196
+ readonly staged: NullType;
197
+ readonly direct: NullType;
198
+ }>;
199
+ }>>;
200
+ /** Optional `design` function → the validation-trial recipe ("Validate" tab). */
201
+ readonly design: OptionType<StructType<{
202
+ readonly name: import("@elaraai/east").StringType;
203
+ }>>;
204
+ readonly columnMeta: OptionType<import("@elaraai/east").DictType<import("@elaraai/east").StringType, StructType<{
205
+ readonly label: OptionType<import("@elaraai/east").StringType>;
206
+ readonly unit: OptionType<import("@elaraai/east").StringType>;
207
+ readonly higherIsBetter: OptionType<BooleanType>;
208
+ }>>>;
209
+ readonly readonly: OptionType<BooleanType>;
210
+ readonly defaultTab: OptionType<VariantType<{
211
+ readonly answer: NullType;
212
+ readonly trust: NullType;
213
+ readonly dose: NullType;
214
+ readonly validate: NullType;
215
+ }>>;
216
+ }>>;
217
+ /**
218
+ * Per-column display config — the friendly label, unit suffix, and good
219
+ * direction the surface uses to phrase results ("worse" instead of "lower").
220
+ */
221
+ export interface ExperimentColumnConfig {
222
+ /** Friendly label shown instead of the raw column name. */
223
+ label?: string;
224
+ /** Unit suffix ("MPa", "$", …). */
225
+ unit?: string;
226
+ /** Whether a larger value is the good direction (flips "lower" → "worse"). */
227
+ higherIsBetter?: boolean;
228
+ }
229
+ /**
230
+ * Type-safe per-column config, keyed by the bound dataset's field names (the
231
+ * `Table` columns pattern) — only real columns are accepted as keys.
232
+ *
233
+ * @typeParam Row - The input dataset's row struct.
234
+ */
235
+ export type ExperimentColumns<Row extends StructType> = {
236
+ [K in Extract<keyof Row['fields'], string>]?: ExperimentColumnConfig;
237
+ };
238
+ /**
239
+ * Options for {@link Experiment.Root}, generic over the input row struct.
240
+ *
241
+ * @typeParam Row - The input dataset's row struct — inferred from `data`.
242
+ *
243
+ * @property data - The {@link Data.bind} handle for the input dataset.
244
+ * @property config - The {@link Data.bind} handle for the staged experiment config.
245
+ * @property experiment - The {@link Func.bind} handle for the experiment function.
246
+ * @property population - Optional {@link Data.bind} handle for the staged Step-4
247
+ * population filter (a {@link PopulationType}); narrows the rows UI-side before
248
+ * the call. Bind it (seeded) to start with filters applied.
249
+ * @property journal - Optional {@link Data.bind} handle for the committed-experiment journal.
250
+ * @property columns - Optional per-column display config.
251
+ * @property readonly - Render without mutation affordances.
252
+ * @property defaultTab - Initial result tab.
253
+ */
254
+ export interface ExperimentOptions<Row extends StructType> {
255
+ data: BoundValue<ArrayType<Row>>;
256
+ config: BoundValue<ExperimentConfigType>;
257
+ experiment: ExperimentFunc<Row>;
258
+ /** Optional `design` function — adds the "Validate" tab (the trial recipe). */
259
+ design?: ExperimentDesignFunc<Row>;
260
+ population?: BoundValue<PopulationType>;
261
+ journal?: BoundValue<JournalType>;
262
+ /** Per-column display config, keyed by the data row's fields (like `Table`). */
263
+ columns?: ExperimentColumns<Row>;
264
+ readonly?: SubtypeExprOrValue<OptionType<BooleanType>>;
265
+ defaultTab?: ExperimentTabLiteral;
266
+ }
267
+ /**
268
+ * Build an Experiment surface bound to an input dataset + the single experiment
269
+ * function.
270
+ *
271
+ * @typeParam Row - The input dataset's row struct, inferred from `data`.
272
+ * @param options - {@link ExperimentOptions}. `data`, `config` and `experiment`
273
+ * are required; the rest are optional.
274
+ * @returns An East expression of {@link UIComponentType}.
275
+ */
276
+ declare function createExperiment<Row extends StructType>(options: ExperimentOptions<Row>): ExprType<UIComponentType>;
277
+ /**
278
+ * The Experiment component namespace. Surfaces an interactive causal-experiment
279
+ * over a bound input dataset + a single `experiment` function, generic over the
280
+ * row struct (the `Table` pattern).
281
+ *
282
+ * @remarks
283
+ * Use `Experiment.Root({ data, config, experiment, journal })` inside a
284
+ * `Reactive` block. `Types` exposes the render-contract value types (`Config`,
285
+ * `Result`, `Verdict`, `Overlap`, `Balance`, `Refutation`, `Journal`, …).
286
+ */
287
+ export declare const Experiment: {
288
+ readonly Root: typeof createExperiment;
289
+ /** The internal {@link EastUI.component} carrier renderers register against. */
290
+ readonly Component: import("@elaraai/east-ui").UIComponentDef<StructType<{
291
+ readonly data: StructType<{
292
+ readonly source: ArrayType<VariantType<{
293
+ readonly field: import("@elaraai/east").StringType;
294
+ }>>;
295
+ readonly patch: OptionType<ArrayType<VariantType<{
296
+ readonly field: import("@elaraai/east").StringType;
297
+ }>>>;
298
+ readonly mode: VariantType<{
299
+ readonly staged: NullType;
300
+ readonly direct: NullType;
301
+ }>;
302
+ }>;
303
+ readonly config: StructType<{
304
+ readonly source: ArrayType<VariantType<{
305
+ readonly field: import("@elaraai/east").StringType;
306
+ }>>;
307
+ readonly patch: OptionType<ArrayType<VariantType<{
308
+ readonly field: import("@elaraai/east").StringType;
309
+ }>>>;
310
+ readonly mode: VariantType<{
311
+ readonly staged: NullType;
312
+ readonly direct: NullType;
313
+ }>;
314
+ }>;
315
+ readonly experiment: StructType<{
316
+ readonly name: import("@elaraai/east").StringType;
317
+ }>;
318
+ readonly population: OptionType<StructType<{
319
+ readonly source: ArrayType<VariantType<{
320
+ readonly field: import("@elaraai/east").StringType;
321
+ }>>;
322
+ readonly patch: OptionType<ArrayType<VariantType<{
323
+ readonly field: import("@elaraai/east").StringType;
324
+ }>>>;
325
+ readonly mode: VariantType<{
326
+ readonly staged: NullType;
327
+ readonly direct: NullType;
328
+ }>;
329
+ }>>;
330
+ readonly journal: OptionType<StructType<{
331
+ readonly source: ArrayType<VariantType<{
332
+ readonly field: import("@elaraai/east").StringType;
333
+ }>>;
334
+ readonly patch: OptionType<ArrayType<VariantType<{
335
+ readonly field: import("@elaraai/east").StringType;
336
+ }>>>;
337
+ readonly mode: VariantType<{
338
+ readonly staged: NullType;
339
+ readonly direct: NullType;
340
+ }>;
341
+ }>>;
342
+ /** Optional `design` function → the validation-trial recipe ("Validate" tab). */
343
+ readonly design: OptionType<StructType<{
344
+ readonly name: import("@elaraai/east").StringType;
345
+ }>>;
346
+ readonly columnMeta: OptionType<import("@elaraai/east").DictType<import("@elaraai/east").StringType, StructType<{
347
+ readonly label: OptionType<import("@elaraai/east").StringType>;
348
+ readonly unit: OptionType<import("@elaraai/east").StringType>;
349
+ readonly higherIsBetter: OptionType<BooleanType>;
350
+ }>>>;
351
+ readonly readonly: OptionType<BooleanType>;
352
+ readonly defaultTab: OptionType<VariantType<{
353
+ readonly answer: NullType;
354
+ readonly trust: NullType;
355
+ readonly dose: NullType;
356
+ readonly validate: NullType;
357
+ }>>;
358
+ }>>;
359
+ readonly Types: {
360
+ /** Rendered payload struct (bindings + options). */
361
+ readonly Payload: StructType<{
362
+ readonly data: StructType<{
363
+ readonly source: ArrayType<VariantType<{
364
+ readonly field: import("@elaraai/east").StringType;
365
+ }>>;
366
+ readonly patch: OptionType<ArrayType<VariantType<{
367
+ readonly field: import("@elaraai/east").StringType;
368
+ }>>>;
369
+ readonly mode: VariantType<{
370
+ readonly staged: NullType;
371
+ readonly direct: NullType;
372
+ }>;
373
+ }>;
374
+ readonly config: StructType<{
375
+ readonly source: ArrayType<VariantType<{
376
+ readonly field: import("@elaraai/east").StringType;
377
+ }>>;
378
+ readonly patch: OptionType<ArrayType<VariantType<{
379
+ readonly field: import("@elaraai/east").StringType;
380
+ }>>>;
381
+ readonly mode: VariantType<{
382
+ readonly staged: NullType;
383
+ readonly direct: NullType;
384
+ }>;
385
+ }>;
386
+ readonly experiment: StructType<{
387
+ readonly name: import("@elaraai/east").StringType;
388
+ }>;
389
+ readonly population: OptionType<StructType<{
390
+ readonly source: ArrayType<VariantType<{
391
+ readonly field: import("@elaraai/east").StringType;
392
+ }>>;
393
+ readonly patch: OptionType<ArrayType<VariantType<{
394
+ readonly field: import("@elaraai/east").StringType;
395
+ }>>>;
396
+ readonly mode: VariantType<{
397
+ readonly staged: NullType;
398
+ readonly direct: NullType;
399
+ }>;
400
+ }>>;
401
+ readonly journal: OptionType<StructType<{
402
+ readonly source: ArrayType<VariantType<{
403
+ readonly field: import("@elaraai/east").StringType;
404
+ }>>;
405
+ readonly patch: OptionType<ArrayType<VariantType<{
406
+ readonly field: import("@elaraai/east").StringType;
407
+ }>>>;
408
+ readonly mode: VariantType<{
409
+ readonly staged: NullType;
410
+ readonly direct: NullType;
411
+ }>;
412
+ }>>;
413
+ /** Optional `design` function → the validation-trial recipe ("Validate" tab). */
414
+ readonly design: OptionType<StructType<{
415
+ readonly name: import("@elaraai/east").StringType;
416
+ }>>;
417
+ readonly columnMeta: OptionType<import("@elaraai/east").DictType<import("@elaraai/east").StringType, StructType<{
418
+ readonly label: OptionType<import("@elaraai/east").StringType>;
419
+ readonly unit: OptionType<import("@elaraai/east").StringType>;
420
+ readonly higherIsBetter: OptionType<BooleanType>;
421
+ }>>>;
422
+ readonly readonly: OptionType<BooleanType>;
423
+ readonly defaultTab: OptionType<VariantType<{
424
+ readonly answer: NullType;
425
+ readonly trust: NullType;
426
+ readonly dose: NullType;
427
+ readonly validate: NullType;
428
+ }>>;
429
+ }>;
430
+ /** The experiment-config value type (what the pickers stage). */
431
+ readonly Config: StructType<{
432
+ readonly treatment: import("@elaraai/east").StringType;
433
+ readonly outcome: import("@elaraai/east").StringType;
434
+ readonly common_causes: ArrayType<import("@elaraai/east").StringType>;
435
+ readonly categorical: OptionType<ArrayType<import("@elaraai/east").StringType>>;
436
+ readonly method: OptionType<VariantType<{
437
+ readonly linear_regression: NullType;
438
+ readonly propensity_score_weighting: StructType<{
439
+ readonly weighting_scheme: OptionType<VariantType<{
440
+ readonly ips_weight: NullType;
441
+ readonly ips_stabilized_weight: NullType;
442
+ readonly ips_normalized_weight: NullType;
443
+ }>>;
444
+ }>;
445
+ }>>;
446
+ readonly estimand: OptionType<VariantType<{
447
+ readonly ate: NullType;
448
+ readonly att: NullType;
449
+ readonly atc: NullType;
450
+ }>>;
451
+ readonly refute: OptionType<StructType<{
452
+ readonly placebo: BooleanType;
453
+ readonly random_common_cause: BooleanType;
454
+ readonly data_subset: BooleanType;
455
+ readonly sensitivity: OptionType<ArrayType<import("@elaraai/east").FloatType>>;
456
+ }>>;
457
+ readonly dose_feature: OptionType<import("@elaraai/east").StringType>;
458
+ readonly min_overlap: OptionType<import("@elaraai/east").FloatType>;
459
+ readonly min_treatment_variation: OptionType<import("@elaraai/east").FloatType>;
460
+ readonly bootstrap: OptionType<StructType<{
461
+ readonly reps: import("@elaraai/east").IntegerType;
462
+ readonly cluster_column: OptionType<import("@elaraai/east").StringType>;
463
+ readonly confidence_level: OptionType<import("@elaraai/east").FloatType>;
464
+ }>>;
465
+ readonly random_state: OptionType<import("@elaraai/east").IntegerType>;
466
+ }>;
467
+ /** The result value type (numbers + verdict). */
468
+ readonly Result: StructType<{
469
+ readonly naive: import("@elaraai/east").FloatType;
470
+ readonly naive_ci: OptionType<StructType<{
471
+ readonly lower: import("@elaraai/east").FloatType;
472
+ readonly upper: import("@elaraai/east").FloatType;
473
+ }>>;
474
+ readonly adjusted: OptionType<StructType<{
475
+ readonly effect: import("@elaraai/east").FloatType;
476
+ readonly ci: OptionType<StructType<{
477
+ readonly lower: import("@elaraai/east").FloatType;
478
+ readonly upper: import("@elaraai/east").FloatType;
479
+ }>>;
480
+ }>>;
481
+ readonly n_total: import("@elaraai/east").IntegerType;
482
+ readonly n_treated: import("@elaraai/east").IntegerType;
483
+ readonly n_control: import("@elaraai/east").IntegerType;
484
+ readonly n_dropped: import("@elaraai/east").IntegerType;
485
+ readonly balance: ArrayType<StructType<{
486
+ readonly column: import("@elaraai/east").StringType;
487
+ readonly base_column: import("@elaraai/east").StringType;
488
+ readonly treated_mean: import("@elaraai/east").FloatType;
489
+ readonly control_mean: import("@elaraai/east").FloatType;
490
+ readonly std_diff: import("@elaraai/east").FloatType;
491
+ }>>;
492
+ readonly overlap: StructType<{
493
+ readonly treated_propensity: import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>;
494
+ readonly control_propensity: import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>;
495
+ readonly common_support_frac: import("@elaraai/east").FloatType;
496
+ readonly positivity_ok: BooleanType;
497
+ }>;
498
+ readonly refutation: OptionType<StructType<{
499
+ readonly placebo_effect: OptionType<import("@elaraai/east").FloatType>;
500
+ readonly placebo_passes: OptionType<BooleanType>;
501
+ readonly random_cc_within_ci: OptionType<BooleanType>;
502
+ readonly data_subset_effect: OptionType<import("@elaraai/east").FloatType>;
503
+ readonly data_subset_std: OptionType<import("@elaraai/east").FloatType>;
504
+ readonly robustness_value: OptionType<import("@elaraai/east").FloatType>;
505
+ readonly sensitivity: OptionType<StructType<{
506
+ readonly strengths: import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>;
507
+ readonly effects: import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>;
508
+ }>>;
509
+ }>>;
510
+ readonly dose_response: OptionType<StructType<{
511
+ readonly feature: import("@elaraai/east").StringType;
512
+ readonly grid: import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>;
513
+ readonly effect: import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>;
514
+ readonly lower: OptionType<import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>>;
515
+ readonly upper: OptionType<import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>>;
516
+ readonly size: import("@elaraai/east").VectorType<import("@elaraai/east").IntegerType>;
517
+ }>>;
518
+ readonly verdict: VariantType<{
519
+ readonly causal: NullType;
520
+ readonly modest: NullType;
521
+ readonly adjustment_insufficient: NullType;
522
+ readonly non_identifiable_positivity: NullType;
523
+ readonly not_estimable: import("@elaraai/east").StringType;
524
+ }>;
525
+ }>;
526
+ /** The ALE dose-response curve value type (the "How much?" tab). */
527
+ readonly DoseResponse: StructType<{
528
+ readonly feature: import("@elaraai/east").StringType;
529
+ readonly grid: import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>;
530
+ readonly effect: import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>;
531
+ readonly lower: OptionType<import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>>;
532
+ readonly upper: OptionType<import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>>;
533
+ readonly size: import("@elaraai/east").VectorType<import("@elaraai/east").IntegerType>;
534
+ }>;
535
+ /** The committed-experiment journal value type. */
536
+ readonly Journal: ArrayType<StructType<{
537
+ readonly config: StructType<{
538
+ readonly treatment: import("@elaraai/east").StringType;
539
+ readonly outcome: import("@elaraai/east").StringType;
540
+ readonly common_causes: ArrayType<import("@elaraai/east").StringType>;
541
+ readonly categorical: OptionType<ArrayType<import("@elaraai/east").StringType>>;
542
+ readonly method: OptionType<VariantType<{
543
+ readonly linear_regression: NullType;
544
+ readonly propensity_score_weighting: StructType<{
545
+ readonly weighting_scheme: OptionType<VariantType<{
546
+ readonly ips_weight: NullType;
547
+ readonly ips_stabilized_weight: NullType;
548
+ readonly ips_normalized_weight: NullType;
549
+ }>>;
550
+ }>;
551
+ }>>;
552
+ readonly estimand: OptionType<VariantType<{
553
+ readonly ate: NullType;
554
+ readonly att: NullType;
555
+ readonly atc: NullType;
556
+ }>>;
557
+ readonly refute: OptionType<StructType<{
558
+ readonly placebo: BooleanType;
559
+ readonly random_common_cause: BooleanType;
560
+ readonly data_subset: BooleanType;
561
+ readonly sensitivity: OptionType<ArrayType<import("@elaraai/east").FloatType>>;
562
+ }>>;
563
+ readonly dose_feature: OptionType<import("@elaraai/east").StringType>;
564
+ readonly min_overlap: OptionType<import("@elaraai/east").FloatType>;
565
+ readonly min_treatment_variation: OptionType<import("@elaraai/east").FloatType>;
566
+ readonly bootstrap: OptionType<StructType<{
567
+ readonly reps: import("@elaraai/east").IntegerType;
568
+ readonly cluster_column: OptionType<import("@elaraai/east").StringType>;
569
+ readonly confidence_level: OptionType<import("@elaraai/east").FloatType>;
570
+ }>>;
571
+ readonly random_state: OptionType<import("@elaraai/east").IntegerType>;
572
+ }>;
573
+ readonly verdict: VariantType<{
574
+ readonly causal: NullType;
575
+ readonly modest: NullType;
576
+ readonly adjustment_insufficient: NullType;
577
+ readonly non_identifiable_positivity: NullType;
578
+ readonly not_estimable: import("@elaraai/east").StringType;
579
+ }>;
580
+ readonly naive: import("@elaraai/east").FloatType;
581
+ readonly adjusted: OptionType<import("@elaraai/east").FloatType>;
582
+ readonly committed_at: import("@elaraai/east").DateTimeType;
583
+ readonly committed_by: import("@elaraai/east").StringType;
584
+ }>>;
585
+ /** The validation-trial recipe value type (the "Validate" tab). */
586
+ readonly Design: StructType<{
587
+ readonly verdict: VariantType<{
588
+ readonly causal: NullType;
589
+ readonly modest: NullType;
590
+ readonly adjustment_insufficient: NullType;
591
+ readonly non_identifiable_positivity: NullType;
592
+ readonly not_estimable: import("@elaraai/east").StringType;
593
+ }>;
594
+ readonly basis: VariantType<{
595
+ readonly detect_observed: NullType;
596
+ readonly resolve_vs_null: NullType;
597
+ readonly de_bias: NullType;
598
+ readonly restrict_to_overlap: NullType;
599
+ readonly create_control: NullType;
600
+ }>;
601
+ readonly target_effect: import("@elaraai/east").FloatType;
602
+ readonly outcome_sd: import("@elaraai/east").FloatType;
603
+ readonly target_power: import("@elaraai/east").FloatType;
604
+ readonly alpha: import("@elaraai/east").FloatType;
605
+ readonly current_power: OptionType<import("@elaraai/east").FloatType>;
606
+ readonly match_on: ArrayType<import("@elaraai/east").StringType>;
607
+ readonly options: ArrayType<StructType<{
608
+ readonly label: import("@elaraai/east").StringType;
609
+ readonly treated_share: import("@elaraai/east").FloatType;
610
+ readonly n_treated: import("@elaraai/east").IntegerType;
611
+ readonly n_control: import("@elaraai/east").IntegerType;
612
+ readonly n_total: import("@elaraai/east").IntegerType;
613
+ }>>;
614
+ readonly power_curve: StructType<{
615
+ readonly n: import("@elaraai/east").VectorType<import("@elaraai/east").IntegerType>;
616
+ readonly power: import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>;
617
+ }>;
618
+ readonly rationale: import("@elaraai/east").StringType;
619
+ }>;
620
+ /** The optional design-knobs value type. */
621
+ readonly DesignConfig: StructType<{
622
+ readonly alpha: OptionType<import("@elaraai/east").FloatType>;
623
+ readonly target_power: OptionType<import("@elaraai/east").FloatType>;
624
+ readonly materiality: OptionType<import("@elaraai/east").FloatType>;
625
+ readonly treated_shares: OptionType<ArrayType<import("@elaraai/east").FloatType>>;
626
+ }>;
627
+ /** The UI-side Step-4 population filter value type (Array of Slice predicates). */
628
+ readonly Population: ArrayType<VariantType<{
629
+ readonly string: import("@elaraai/east").StructType<{
630
+ readonly fieldId: import("@elaraai/east").StringType;
631
+ readonly op: import("@elaraai/east").VariantType<{
632
+ readonly eq: import("@elaraai/east").StringType;
633
+ readonly neq: import("@elaraai/east").StringType;
634
+ readonly in: import("@elaraai/east").SetType<import("@elaraai/east").StringType>;
635
+ readonly notIn: import("@elaraai/east").SetType<import("@elaraai/east").StringType>;
636
+ readonly contains: import("@elaraai/east").StringType;
637
+ readonly matches: import("@elaraai/east").StringType;
638
+ }>;
639
+ }>;
640
+ readonly integer: import("@elaraai/east").StructType<{
641
+ readonly fieldId: import("@elaraai/east").StringType;
642
+ readonly op: import("@elaraai/east").VariantType<{
643
+ readonly eq: import("@elaraai/east").IntegerType;
644
+ readonly neq: import("@elaraai/east").IntegerType;
645
+ readonly lt: import("@elaraai/east").IntegerType;
646
+ readonly lte: import("@elaraai/east").IntegerType;
647
+ readonly gt: import("@elaraai/east").IntegerType;
648
+ readonly gte: import("@elaraai/east").IntegerType;
649
+ readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
650
+ }>;
651
+ }>;
652
+ readonly float: import("@elaraai/east").StructType<{
653
+ readonly fieldId: import("@elaraai/east").StringType;
654
+ readonly op: import("@elaraai/east").VariantType<{
655
+ readonly lt: import("@elaraai/east").FloatType;
656
+ readonly lte: import("@elaraai/east").FloatType;
657
+ readonly gt: import("@elaraai/east").FloatType;
658
+ readonly gte: import("@elaraai/east").FloatType;
659
+ }>;
660
+ }>;
661
+ readonly datetime: import("@elaraai/east").StructType<{
662
+ readonly fieldId: import("@elaraai/east").StringType;
663
+ readonly op: import("@elaraai/east").VariantType<{
664
+ readonly before: import("@elaraai/east").DateTimeType;
665
+ readonly after: import("@elaraai/east").DateTimeType;
666
+ readonly between: import("@elaraai/east").StructType<{
667
+ readonly from: import("@elaraai/east").DateTimeType;
668
+ readonly to: import("@elaraai/east").DateTimeType;
669
+ }>;
670
+ }>;
671
+ }>;
672
+ readonly boolean: import("@elaraai/east").StructType<{
673
+ readonly fieldId: import("@elaraai/east").StringType;
674
+ readonly op: import("@elaraai/east").VariantType<{
675
+ readonly is: import("@elaraai/east").BooleanType;
676
+ }>;
677
+ }>;
678
+ }>>;
679
+ /** Optional per-column display metadata. */
680
+ readonly ColumnMeta: import("@elaraai/east").DictType<import("@elaraai/east").StringType, StructType<{
681
+ readonly label: OptionType<import("@elaraai/east").StringType>;
682
+ readonly unit: OptionType<import("@elaraai/east").StringType>;
683
+ readonly higherIsBetter: OptionType<BooleanType>;
684
+ }>>;
685
+ /** Initial result tab variant. */
686
+ readonly Tab: VariantType<{
687
+ readonly answer: NullType;
688
+ readonly trust: NullType;
689
+ readonly dose: NullType;
690
+ readonly validate: NullType;
691
+ }>;
692
+ };
693
+ };
694
+ //# sourceMappingURL=index.d.ts.map