@elaraai/e3-ui 1.0.19 → 1.0.21

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.
@@ -34,8 +34,8 @@ import { NullType, BooleanType, ArrayType, StructType, VariantType, OptionType,
34
34
  import { type UIComponentType } from '@elaraai/east-ui';
35
35
  import { type BoundValue } from '../bind/data.js';
36
36
  import { type BoundFunc } from '../bind/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';
37
+ import { ExperimentConfigType, ExperimentResultType, JournalType, PopulationType, DesignConfigType, ExperimentDesignType, EstimatorType, TargetUnitsType, BootstrapConfigType, RefuteSpecType, SignType } from './types.js';
38
+ export { CiType, WeightingSchemeType, EstimatorType, TargetUnitsType, BootstrapConfigType, RefuteSpecType, ExperimentConfigType, BalanceRowType, OverlapDiagnosticType, RefutationType, DoseResponseType, ExperimentVerdictType, ExperimentResultType, JournalRowType, JournalType, ColumnMetaType, PopulationType, PresetType, } from './types.js';
39
39
  /**
40
40
  * The `experiment` function signature: `(rows, config) → ExperimentResult`. The
41
41
  * renderer calls this on **Apply** with the bound `data` and the staged config.
@@ -136,6 +136,106 @@ export declare const ExperimentPayloadType: StructType<{
136
136
  readonly dose: NullType;
137
137
  readonly validate: NullType;
138
138
  }>>;
139
+ /** Optional developer-authored {@link PresetType} list — named vetted questions
140
+ * rendered as a card grid; selecting one snaps the staged spec + scope. */
141
+ readonly presets: OptionType<ArrayType<StructType<{
142
+ readonly id: import("@elaraai/east").StringType;
143
+ readonly label: import("@elaraai/east").StringType;
144
+ readonly config: StructType<{
145
+ readonly treatment: import("@elaraai/east").StringType;
146
+ readonly outcome: import("@elaraai/east").StringType;
147
+ readonly common_causes: ArrayType<import("@elaraai/east").StringType>;
148
+ readonly categorical: OptionType<ArrayType<import("@elaraai/east").StringType>>;
149
+ readonly method: OptionType<VariantType<{
150
+ readonly linear_regression: NullType;
151
+ readonly propensity_score_weighting: StructType<{
152
+ readonly weighting_scheme: OptionType<VariantType<{
153
+ readonly ips_weight: NullType;
154
+ readonly ips_stabilized_weight: NullType;
155
+ readonly ips_normalized_weight: NullType;
156
+ }>>;
157
+ }>;
158
+ }>>;
159
+ readonly estimand: OptionType<VariantType<{
160
+ readonly ate: NullType;
161
+ readonly att: NullType;
162
+ readonly atc: NullType;
163
+ }>>;
164
+ readonly refute: OptionType<StructType<{
165
+ readonly placebo: BooleanType;
166
+ readonly random_common_cause: BooleanType;
167
+ readonly data_subset: BooleanType;
168
+ readonly sensitivity: OptionType<ArrayType<import("@elaraai/east").FloatType>>;
169
+ }>>;
170
+ readonly dose_feature: OptionType<import("@elaraai/east").StringType>;
171
+ readonly min_overlap: OptionType<import("@elaraai/east").FloatType>;
172
+ readonly min_treatment_variation: OptionType<import("@elaraai/east").FloatType>;
173
+ readonly bootstrap: OptionType<StructType<{
174
+ readonly reps: import("@elaraai/east").IntegerType;
175
+ readonly cluster_column: OptionType<import("@elaraai/east").StringType>;
176
+ readonly confidence_level: OptionType<import("@elaraai/east").FloatType>;
177
+ }>>;
178
+ readonly random_state: OptionType<import("@elaraai/east").IntegerType>;
179
+ readonly strong_overlap: OptionType<import("@elaraai/east").FloatType>;
180
+ readonly evalue_floor: OptionType<import("@elaraai/east").FloatType>;
181
+ readonly expected_sign: OptionType<VariantType<{
182
+ readonly positive: NullType;
183
+ readonly negative: NullType;
184
+ }>>;
185
+ }>;
186
+ readonly population: OptionType<ArrayType<VariantType<{
187
+ readonly string: import("@elaraai/east").StructType<{
188
+ readonly fieldId: import("@elaraai/east").StringType;
189
+ readonly op: import("@elaraai/east").VariantType<{
190
+ readonly eq: import("@elaraai/east").StringType;
191
+ readonly neq: import("@elaraai/east").StringType;
192
+ readonly in: import("@elaraai/east").SetType<import("@elaraai/east").StringType>;
193
+ readonly notIn: import("@elaraai/east").SetType<import("@elaraai/east").StringType>;
194
+ readonly contains: import("@elaraai/east").StringType;
195
+ readonly matches: import("@elaraai/east").StringType;
196
+ }>;
197
+ }>;
198
+ readonly integer: import("@elaraai/east").StructType<{
199
+ readonly fieldId: import("@elaraai/east").StringType;
200
+ readonly op: import("@elaraai/east").VariantType<{
201
+ readonly eq: import("@elaraai/east").IntegerType;
202
+ readonly neq: import("@elaraai/east").IntegerType;
203
+ readonly lt: import("@elaraai/east").IntegerType;
204
+ readonly lte: import("@elaraai/east").IntegerType;
205
+ readonly gt: import("@elaraai/east").IntegerType;
206
+ readonly gte: import("@elaraai/east").IntegerType;
207
+ readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
208
+ }>;
209
+ }>;
210
+ readonly float: import("@elaraai/east").StructType<{
211
+ readonly fieldId: import("@elaraai/east").StringType;
212
+ readonly op: import("@elaraai/east").VariantType<{
213
+ readonly lt: import("@elaraai/east").FloatType;
214
+ readonly lte: import("@elaraai/east").FloatType;
215
+ readonly gt: import("@elaraai/east").FloatType;
216
+ readonly gte: import("@elaraai/east").FloatType;
217
+ }>;
218
+ }>;
219
+ readonly datetime: import("@elaraai/east").StructType<{
220
+ readonly fieldId: import("@elaraai/east").StringType;
221
+ readonly op: import("@elaraai/east").VariantType<{
222
+ readonly before: import("@elaraai/east").DateTimeType;
223
+ readonly after: import("@elaraai/east").DateTimeType;
224
+ readonly between: import("@elaraai/east").StructType<{
225
+ readonly from: import("@elaraai/east").DateTimeType;
226
+ readonly to: import("@elaraai/east").DateTimeType;
227
+ }>;
228
+ }>;
229
+ }>;
230
+ readonly boolean: import("@elaraai/east").StructType<{
231
+ readonly fieldId: import("@elaraai/east").StringType;
232
+ readonly op: import("@elaraai/east").VariantType<{
233
+ readonly is: import("@elaraai/east").BooleanType;
234
+ }>;
235
+ }>;
236
+ }>>>;
237
+ readonly group: OptionType<import("@elaraai/east").StringType>;
238
+ }>>>;
139
239
  }>;
140
240
  /** Type alias for {@link ExperimentPayloadType}. */
141
241
  export type ExperimentPayloadType = typeof ExperimentPayloadType;
@@ -213,6 +313,106 @@ export declare const ExperimentComponent: import("@elaraai/east-ui").UIComponent
213
313
  readonly dose: NullType;
214
314
  readonly validate: NullType;
215
315
  }>>;
316
+ /** Optional developer-authored {@link PresetType} list — named vetted questions
317
+ * rendered as a card grid; selecting one snaps the staged spec + scope. */
318
+ readonly presets: OptionType<ArrayType<StructType<{
319
+ readonly id: import("@elaraai/east").StringType;
320
+ readonly label: import("@elaraai/east").StringType;
321
+ readonly config: StructType<{
322
+ readonly treatment: import("@elaraai/east").StringType;
323
+ readonly outcome: import("@elaraai/east").StringType;
324
+ readonly common_causes: ArrayType<import("@elaraai/east").StringType>;
325
+ readonly categorical: OptionType<ArrayType<import("@elaraai/east").StringType>>;
326
+ readonly method: OptionType<VariantType<{
327
+ readonly linear_regression: NullType;
328
+ readonly propensity_score_weighting: StructType<{
329
+ readonly weighting_scheme: OptionType<VariantType<{
330
+ readonly ips_weight: NullType;
331
+ readonly ips_stabilized_weight: NullType;
332
+ readonly ips_normalized_weight: NullType;
333
+ }>>;
334
+ }>;
335
+ }>>;
336
+ readonly estimand: OptionType<VariantType<{
337
+ readonly ate: NullType;
338
+ readonly att: NullType;
339
+ readonly atc: NullType;
340
+ }>>;
341
+ readonly refute: OptionType<StructType<{
342
+ readonly placebo: BooleanType;
343
+ readonly random_common_cause: BooleanType;
344
+ readonly data_subset: BooleanType;
345
+ readonly sensitivity: OptionType<ArrayType<import("@elaraai/east").FloatType>>;
346
+ }>>;
347
+ readonly dose_feature: OptionType<import("@elaraai/east").StringType>;
348
+ readonly min_overlap: OptionType<import("@elaraai/east").FloatType>;
349
+ readonly min_treatment_variation: OptionType<import("@elaraai/east").FloatType>;
350
+ readonly bootstrap: OptionType<StructType<{
351
+ readonly reps: import("@elaraai/east").IntegerType;
352
+ readonly cluster_column: OptionType<import("@elaraai/east").StringType>;
353
+ readonly confidence_level: OptionType<import("@elaraai/east").FloatType>;
354
+ }>>;
355
+ readonly random_state: OptionType<import("@elaraai/east").IntegerType>;
356
+ readonly strong_overlap: OptionType<import("@elaraai/east").FloatType>;
357
+ readonly evalue_floor: OptionType<import("@elaraai/east").FloatType>;
358
+ readonly expected_sign: OptionType<VariantType<{
359
+ readonly positive: NullType;
360
+ readonly negative: NullType;
361
+ }>>;
362
+ }>;
363
+ readonly population: OptionType<ArrayType<VariantType<{
364
+ readonly string: import("@elaraai/east").StructType<{
365
+ readonly fieldId: import("@elaraai/east").StringType;
366
+ readonly op: import("@elaraai/east").VariantType<{
367
+ readonly eq: import("@elaraai/east").StringType;
368
+ readonly neq: import("@elaraai/east").StringType;
369
+ readonly in: import("@elaraai/east").SetType<import("@elaraai/east").StringType>;
370
+ readonly notIn: import("@elaraai/east").SetType<import("@elaraai/east").StringType>;
371
+ readonly contains: import("@elaraai/east").StringType;
372
+ readonly matches: import("@elaraai/east").StringType;
373
+ }>;
374
+ }>;
375
+ readonly integer: import("@elaraai/east").StructType<{
376
+ readonly fieldId: import("@elaraai/east").StringType;
377
+ readonly op: import("@elaraai/east").VariantType<{
378
+ readonly eq: import("@elaraai/east").IntegerType;
379
+ readonly neq: import("@elaraai/east").IntegerType;
380
+ readonly lt: import("@elaraai/east").IntegerType;
381
+ readonly lte: import("@elaraai/east").IntegerType;
382
+ readonly gt: import("@elaraai/east").IntegerType;
383
+ readonly gte: import("@elaraai/east").IntegerType;
384
+ readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
385
+ }>;
386
+ }>;
387
+ readonly float: import("@elaraai/east").StructType<{
388
+ readonly fieldId: import("@elaraai/east").StringType;
389
+ readonly op: import("@elaraai/east").VariantType<{
390
+ readonly lt: import("@elaraai/east").FloatType;
391
+ readonly lte: import("@elaraai/east").FloatType;
392
+ readonly gt: import("@elaraai/east").FloatType;
393
+ readonly gte: import("@elaraai/east").FloatType;
394
+ }>;
395
+ }>;
396
+ readonly datetime: import("@elaraai/east").StructType<{
397
+ readonly fieldId: import("@elaraai/east").StringType;
398
+ readonly op: import("@elaraai/east").VariantType<{
399
+ readonly before: import("@elaraai/east").DateTimeType;
400
+ readonly after: import("@elaraai/east").DateTimeType;
401
+ readonly between: import("@elaraai/east").StructType<{
402
+ readonly from: import("@elaraai/east").DateTimeType;
403
+ readonly to: import("@elaraai/east").DateTimeType;
404
+ }>;
405
+ }>;
406
+ }>;
407
+ readonly boolean: import("@elaraai/east").StructType<{
408
+ readonly fieldId: import("@elaraai/east").StringType;
409
+ readonly op: import("@elaraai/east").VariantType<{
410
+ readonly is: import("@elaraai/east").BooleanType;
411
+ }>;
412
+ }>;
413
+ }>>>;
414
+ readonly group: OptionType<import("@elaraai/east").StringType>;
415
+ }>>>;
216
416
  }>>;
217
417
  /**
218
418
  * Per-column display config — the friendly label, unit suffix, and good
@@ -235,6 +435,67 @@ export interface ExperimentColumnConfig {
235
435
  export type ExperimentColumns<Row extends StructType> = {
236
436
  [K in Extract<keyof Row['fields'], string>]?: ExperimentColumnConfig;
237
437
  };
438
+ /**
439
+ * A preset's pre-baked experiment config — a friendly, mostly-optional shape over
440
+ * {@link ExperimentConfigType}. The column-bearing fields are checked against the
441
+ * bound row's columns (like {@link ExperimentColumns}); every other field is optional
442
+ * and falls back to the library default (`none`) when omitted, so a preset author
443
+ * writes only what the question actually pins.
444
+ *
445
+ * @typeParam Row - The input dataset's row struct.
446
+ */
447
+ export interface ExperimentPresetConfig<Row extends StructType> {
448
+ /** Binary treatment column. */
449
+ treatment: Extract<keyof Row['fields'], string>;
450
+ /** Outcome column. */
451
+ outcome: Extract<keyof Row['fields'], string>;
452
+ /** Confounders to adjust for (the backdoor set). */
453
+ common_causes: Extract<keyof Row['fields'], string>[];
454
+ /** Confounder columns holding categories (one-hot encoded). */
455
+ categorical?: Extract<keyof Row['fields'], string>[];
456
+ /** Continuous column for the ALE dose-response curve. */
457
+ dose_feature?: Extract<keyof Row['fields'], string>;
458
+ /** Estimator (default: linear_regression). */
459
+ method?: SubtypeExprOrValue<EstimatorType>;
460
+ /** Target population (default: ate). */
461
+ estimand?: SubtypeExprOrValue<TargetUnitsType>;
462
+ /** Which robustness checks to run. */
463
+ refute?: SubtypeExprOrValue<RefuteSpecType>;
464
+ /** Bootstrap CI config. */
465
+ bootstrap?: SubtypeExprOrValue<BootstrapConfigType>;
466
+ /** Directional prior — flags an implausibly-signed effect. */
467
+ expected_sign?: SubtypeExprOrValue<SignType>;
468
+ /** Positivity refuse gate (default 0.10). */
469
+ min_overlap?: number;
470
+ /** Not-estimable guard (default 0.02). */
471
+ min_treatment_variation?: number;
472
+ /** Strong-overlap gate (default 0.55). */
473
+ strong_overlap?: number;
474
+ /** E-value floor (off by default). */
475
+ evalue_floor?: number;
476
+ /** Random seed — pin for a reproducible verdict. */
477
+ random_state?: bigint;
478
+ }
479
+ /**
480
+ * One developer-authored preset for {@link ExperimentOptions.presets} — a named,
481
+ * vetted question (+ optional scope) selectable from the surface's preset grid.
482
+ *
483
+ * @typeParam Row - The input dataset's row struct.
484
+ */
485
+ export interface ExperimentPreset<Row extends StructType> {
486
+ /** Stable, **unique** id — recorded in the journal and used as the selection
487
+ * identity; keep it distinct from `label` so a renamed label never orphans a
488
+ * committed row. Two presets must not share an id. */
489
+ id: string;
490
+ /** Display title on the card. */
491
+ label: string;
492
+ /** The vetted, pre-baked config. */
493
+ config: ExperimentPresetConfig<Row>;
494
+ /** Optional population scope applied on select (omit ⇒ clears the scope). */
495
+ population?: SubtypeExprOrValue<PopulationType>;
496
+ /** Optional section header — cards sharing a `group` are bucketed together. */
497
+ group?: string;
498
+ }
238
499
  /**
239
500
  * Options for {@link Experiment.Root}, generic over the input row struct.
240
501
  *
@@ -263,6 +524,9 @@ export interface ExperimentOptions<Row extends StructType> {
263
524
  columns?: ExperimentColumns<Row>;
264
525
  readonly?: SubtypeExprOrValue<OptionType<BooleanType>>;
265
526
  defaultTab?: ExperimentTabLiteral;
527
+ /** Developer-authored vetted questions — a card grid that snaps the staged spec
528
+ * (and scope) on select. Column fields are checked against the row's columns. */
529
+ presets?: Array<ExperimentPreset<Row>>;
266
530
  }
267
531
  /**
268
532
  * Build an Experiment surface bound to an input dataset + the single experiment
@@ -355,6 +619,106 @@ export declare const Experiment: {
355
619
  readonly dose: NullType;
356
620
  readonly validate: NullType;
357
621
  }>>;
622
+ /** Optional developer-authored {@link PresetType} list — named vetted questions
623
+ * rendered as a card grid; selecting one snaps the staged spec + scope. */
624
+ readonly presets: OptionType<ArrayType<StructType<{
625
+ readonly id: import("@elaraai/east").StringType;
626
+ readonly label: import("@elaraai/east").StringType;
627
+ readonly config: StructType<{
628
+ readonly treatment: import("@elaraai/east").StringType;
629
+ readonly outcome: import("@elaraai/east").StringType;
630
+ readonly common_causes: ArrayType<import("@elaraai/east").StringType>;
631
+ readonly categorical: OptionType<ArrayType<import("@elaraai/east").StringType>>;
632
+ readonly method: OptionType<VariantType<{
633
+ readonly linear_regression: NullType;
634
+ readonly propensity_score_weighting: StructType<{
635
+ readonly weighting_scheme: OptionType<VariantType<{
636
+ readonly ips_weight: NullType;
637
+ readonly ips_stabilized_weight: NullType;
638
+ readonly ips_normalized_weight: NullType;
639
+ }>>;
640
+ }>;
641
+ }>>;
642
+ readonly estimand: OptionType<VariantType<{
643
+ readonly ate: NullType;
644
+ readonly att: NullType;
645
+ readonly atc: NullType;
646
+ }>>;
647
+ readonly refute: OptionType<StructType<{
648
+ readonly placebo: BooleanType;
649
+ readonly random_common_cause: BooleanType;
650
+ readonly data_subset: BooleanType;
651
+ readonly sensitivity: OptionType<ArrayType<import("@elaraai/east").FloatType>>;
652
+ }>>;
653
+ readonly dose_feature: OptionType<import("@elaraai/east").StringType>;
654
+ readonly min_overlap: OptionType<import("@elaraai/east").FloatType>;
655
+ readonly min_treatment_variation: OptionType<import("@elaraai/east").FloatType>;
656
+ readonly bootstrap: OptionType<StructType<{
657
+ readonly reps: import("@elaraai/east").IntegerType;
658
+ readonly cluster_column: OptionType<import("@elaraai/east").StringType>;
659
+ readonly confidence_level: OptionType<import("@elaraai/east").FloatType>;
660
+ }>>;
661
+ readonly random_state: OptionType<import("@elaraai/east").IntegerType>;
662
+ readonly strong_overlap: OptionType<import("@elaraai/east").FloatType>;
663
+ readonly evalue_floor: OptionType<import("@elaraai/east").FloatType>;
664
+ readonly expected_sign: OptionType<VariantType<{
665
+ readonly positive: NullType;
666
+ readonly negative: NullType;
667
+ }>>;
668
+ }>;
669
+ readonly population: OptionType<ArrayType<VariantType<{
670
+ readonly string: import("@elaraai/east").StructType<{
671
+ readonly fieldId: import("@elaraai/east").StringType;
672
+ readonly op: import("@elaraai/east").VariantType<{
673
+ readonly eq: import("@elaraai/east").StringType;
674
+ readonly neq: import("@elaraai/east").StringType;
675
+ readonly in: import("@elaraai/east").SetType<import("@elaraai/east").StringType>;
676
+ readonly notIn: import("@elaraai/east").SetType<import("@elaraai/east").StringType>;
677
+ readonly contains: import("@elaraai/east").StringType;
678
+ readonly matches: import("@elaraai/east").StringType;
679
+ }>;
680
+ }>;
681
+ readonly integer: import("@elaraai/east").StructType<{
682
+ readonly fieldId: import("@elaraai/east").StringType;
683
+ readonly op: import("@elaraai/east").VariantType<{
684
+ readonly eq: import("@elaraai/east").IntegerType;
685
+ readonly neq: import("@elaraai/east").IntegerType;
686
+ readonly lt: import("@elaraai/east").IntegerType;
687
+ readonly lte: import("@elaraai/east").IntegerType;
688
+ readonly gt: import("@elaraai/east").IntegerType;
689
+ readonly gte: import("@elaraai/east").IntegerType;
690
+ readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
691
+ }>;
692
+ }>;
693
+ readonly float: import("@elaraai/east").StructType<{
694
+ readonly fieldId: import("@elaraai/east").StringType;
695
+ readonly op: import("@elaraai/east").VariantType<{
696
+ readonly lt: import("@elaraai/east").FloatType;
697
+ readonly lte: import("@elaraai/east").FloatType;
698
+ readonly gt: import("@elaraai/east").FloatType;
699
+ readonly gte: import("@elaraai/east").FloatType;
700
+ }>;
701
+ }>;
702
+ readonly datetime: import("@elaraai/east").StructType<{
703
+ readonly fieldId: import("@elaraai/east").StringType;
704
+ readonly op: import("@elaraai/east").VariantType<{
705
+ readonly before: import("@elaraai/east").DateTimeType;
706
+ readonly after: import("@elaraai/east").DateTimeType;
707
+ readonly between: import("@elaraai/east").StructType<{
708
+ readonly from: import("@elaraai/east").DateTimeType;
709
+ readonly to: import("@elaraai/east").DateTimeType;
710
+ }>;
711
+ }>;
712
+ }>;
713
+ readonly boolean: import("@elaraai/east").StructType<{
714
+ readonly fieldId: import("@elaraai/east").StringType;
715
+ readonly op: import("@elaraai/east").VariantType<{
716
+ readonly is: import("@elaraai/east").BooleanType;
717
+ }>;
718
+ }>;
719
+ }>>>;
720
+ readonly group: OptionType<import("@elaraai/east").StringType>;
721
+ }>>>;
358
722
  }>>;
359
723
  readonly Types: {
360
724
  /** Rendered payload struct (bindings + options). */
@@ -426,6 +790,106 @@ export declare const Experiment: {
426
790
  readonly dose: NullType;
427
791
  readonly validate: NullType;
428
792
  }>>;
793
+ /** Optional developer-authored {@link PresetType} list — named vetted questions
794
+ * rendered as a card grid; selecting one snaps the staged spec + scope. */
795
+ readonly presets: OptionType<ArrayType<StructType<{
796
+ readonly id: import("@elaraai/east").StringType;
797
+ readonly label: import("@elaraai/east").StringType;
798
+ readonly config: StructType<{
799
+ readonly treatment: import("@elaraai/east").StringType;
800
+ readonly outcome: import("@elaraai/east").StringType;
801
+ readonly common_causes: ArrayType<import("@elaraai/east").StringType>;
802
+ readonly categorical: OptionType<ArrayType<import("@elaraai/east").StringType>>;
803
+ readonly method: OptionType<VariantType<{
804
+ readonly linear_regression: NullType;
805
+ readonly propensity_score_weighting: StructType<{
806
+ readonly weighting_scheme: OptionType<VariantType<{
807
+ readonly ips_weight: NullType;
808
+ readonly ips_stabilized_weight: NullType;
809
+ readonly ips_normalized_weight: NullType;
810
+ }>>;
811
+ }>;
812
+ }>>;
813
+ readonly estimand: OptionType<VariantType<{
814
+ readonly ate: NullType;
815
+ readonly att: NullType;
816
+ readonly atc: NullType;
817
+ }>>;
818
+ readonly refute: OptionType<StructType<{
819
+ readonly placebo: BooleanType;
820
+ readonly random_common_cause: BooleanType;
821
+ readonly data_subset: BooleanType;
822
+ readonly sensitivity: OptionType<ArrayType<import("@elaraai/east").FloatType>>;
823
+ }>>;
824
+ readonly dose_feature: OptionType<import("@elaraai/east").StringType>;
825
+ readonly min_overlap: OptionType<import("@elaraai/east").FloatType>;
826
+ readonly min_treatment_variation: OptionType<import("@elaraai/east").FloatType>;
827
+ readonly bootstrap: OptionType<StructType<{
828
+ readonly reps: import("@elaraai/east").IntegerType;
829
+ readonly cluster_column: OptionType<import("@elaraai/east").StringType>;
830
+ readonly confidence_level: OptionType<import("@elaraai/east").FloatType>;
831
+ }>>;
832
+ readonly random_state: OptionType<import("@elaraai/east").IntegerType>;
833
+ readonly strong_overlap: OptionType<import("@elaraai/east").FloatType>;
834
+ readonly evalue_floor: OptionType<import("@elaraai/east").FloatType>;
835
+ readonly expected_sign: OptionType<VariantType<{
836
+ readonly positive: NullType;
837
+ readonly negative: NullType;
838
+ }>>;
839
+ }>;
840
+ readonly population: OptionType<ArrayType<VariantType<{
841
+ readonly string: import("@elaraai/east").StructType<{
842
+ readonly fieldId: import("@elaraai/east").StringType;
843
+ readonly op: import("@elaraai/east").VariantType<{
844
+ readonly eq: import("@elaraai/east").StringType;
845
+ readonly neq: import("@elaraai/east").StringType;
846
+ readonly in: import("@elaraai/east").SetType<import("@elaraai/east").StringType>;
847
+ readonly notIn: import("@elaraai/east").SetType<import("@elaraai/east").StringType>;
848
+ readonly contains: import("@elaraai/east").StringType;
849
+ readonly matches: import("@elaraai/east").StringType;
850
+ }>;
851
+ }>;
852
+ readonly integer: import("@elaraai/east").StructType<{
853
+ readonly fieldId: import("@elaraai/east").StringType;
854
+ readonly op: import("@elaraai/east").VariantType<{
855
+ readonly eq: import("@elaraai/east").IntegerType;
856
+ readonly neq: import("@elaraai/east").IntegerType;
857
+ readonly lt: import("@elaraai/east").IntegerType;
858
+ readonly lte: import("@elaraai/east").IntegerType;
859
+ readonly gt: import("@elaraai/east").IntegerType;
860
+ readonly gte: import("@elaraai/east").IntegerType;
861
+ readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
862
+ }>;
863
+ }>;
864
+ readonly float: import("@elaraai/east").StructType<{
865
+ readonly fieldId: import("@elaraai/east").StringType;
866
+ readonly op: import("@elaraai/east").VariantType<{
867
+ readonly lt: import("@elaraai/east").FloatType;
868
+ readonly lte: import("@elaraai/east").FloatType;
869
+ readonly gt: import("@elaraai/east").FloatType;
870
+ readonly gte: import("@elaraai/east").FloatType;
871
+ }>;
872
+ }>;
873
+ readonly datetime: import("@elaraai/east").StructType<{
874
+ readonly fieldId: import("@elaraai/east").StringType;
875
+ readonly op: import("@elaraai/east").VariantType<{
876
+ readonly before: import("@elaraai/east").DateTimeType;
877
+ readonly after: import("@elaraai/east").DateTimeType;
878
+ readonly between: import("@elaraai/east").StructType<{
879
+ readonly from: import("@elaraai/east").DateTimeType;
880
+ readonly to: import("@elaraai/east").DateTimeType;
881
+ }>;
882
+ }>;
883
+ }>;
884
+ readonly boolean: import("@elaraai/east").StructType<{
885
+ readonly fieldId: import("@elaraai/east").StringType;
886
+ readonly op: import("@elaraai/east").VariantType<{
887
+ readonly is: import("@elaraai/east").BooleanType;
888
+ }>;
889
+ }>;
890
+ }>>>;
891
+ readonly group: OptionType<import("@elaraai/east").StringType>;
892
+ }>>>;
429
893
  }>;
430
894
  /** The experiment-config value type (what the pickers stage). */
431
895
  readonly Config: StructType<{
@@ -463,6 +927,12 @@ export declare const Experiment: {
463
927
  readonly confidence_level: OptionType<import("@elaraai/east").FloatType>;
464
928
  }>>;
465
929
  readonly random_state: OptionType<import("@elaraai/east").IntegerType>;
930
+ readonly strong_overlap: OptionType<import("@elaraai/east").FloatType>;
931
+ readonly evalue_floor: OptionType<import("@elaraai/east").FloatType>;
932
+ readonly expected_sign: OptionType<VariantType<{
933
+ readonly positive: NullType;
934
+ readonly negative: NullType;
935
+ }>>;
466
936
  }>;
467
937
  /** The result value type (numbers + verdict). */
468
938
  readonly Result: StructType<{
@@ -494,6 +964,11 @@ export declare const Experiment: {
494
964
  readonly control_propensity: import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>;
495
965
  readonly common_support_frac: import("@elaraai/east").FloatType;
496
966
  readonly positivity_ok: BooleanType;
967
+ readonly support_strength: VariantType<{
968
+ readonly refused: NullType;
969
+ readonly thin: NullType;
970
+ readonly strong: NullType;
971
+ }>;
497
972
  }>;
498
973
  readonly refutation: OptionType<StructType<{
499
974
  readonly placebo_effect: OptionType<import("@elaraai/east").FloatType>;
@@ -506,6 +981,7 @@ export declare const Experiment: {
506
981
  readonly strengths: import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>;
507
982
  readonly effects: import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>;
508
983
  }>>;
984
+ readonly expected_sign_ok: OptionType<BooleanType>;
509
985
  }>>;
510
986
  readonly dose_response: OptionType<StructType<{
511
987
  readonly feature: import("@elaraai/east").StringType;
@@ -523,6 +999,66 @@ export declare const Experiment: {
523
999
  readonly not_estimable: import("@elaraai/east").StringType;
524
1000
  }>;
525
1001
  }>;
1002
+ /** A confidence interval. */
1003
+ readonly Ci: StructType<{
1004
+ readonly lower: import("@elaraai/east").FloatType;
1005
+ readonly upper: import("@elaraai/east").FloatType;
1006
+ }>;
1007
+ /** The adjusted (like-for-like) effect + CI. */
1008
+ readonly Adjusted: StructType<{
1009
+ readonly effect: import("@elaraai/east").FloatType;
1010
+ readonly ci: OptionType<StructType<{
1011
+ readonly lower: import("@elaraai/east").FloatType;
1012
+ readonly upper: import("@elaraai/east").FloatType;
1013
+ }>>;
1014
+ }>;
1015
+ /** One confounder's before-adjustment imbalance (a balance row). */
1016
+ readonly Balance: StructType<{
1017
+ readonly column: import("@elaraai/east").StringType;
1018
+ readonly base_column: import("@elaraai/east").StringType;
1019
+ readonly treated_mean: import("@elaraai/east").FloatType;
1020
+ readonly control_mean: import("@elaraai/east").FloatType;
1021
+ readonly std_diff: import("@elaraai/east").FloatType;
1022
+ }>;
1023
+ /** The propensity-overlap diagnostic. */
1024
+ readonly Overlap: StructType<{
1025
+ readonly treated_propensity: import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>;
1026
+ readonly control_propensity: import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>;
1027
+ readonly common_support_frac: import("@elaraai/east").FloatType;
1028
+ readonly positivity_ok: BooleanType;
1029
+ readonly support_strength: VariantType<{
1030
+ readonly refused: NullType;
1031
+ readonly thin: NullType;
1032
+ readonly strong: NullType;
1033
+ }>;
1034
+ }>;
1035
+ /** The robustness summary. */
1036
+ readonly Refutation: StructType<{
1037
+ readonly placebo_effect: OptionType<import("@elaraai/east").FloatType>;
1038
+ readonly placebo_passes: OptionType<BooleanType>;
1039
+ readonly random_cc_within_ci: OptionType<BooleanType>;
1040
+ readonly data_subset_effect: OptionType<import("@elaraai/east").FloatType>;
1041
+ readonly data_subset_std: OptionType<import("@elaraai/east").FloatType>;
1042
+ readonly robustness_value: OptionType<import("@elaraai/east").FloatType>;
1043
+ readonly sensitivity: OptionType<StructType<{
1044
+ readonly strengths: import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>;
1045
+ readonly effects: import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>;
1046
+ }>>;
1047
+ readonly expected_sign_ok: OptionType<BooleanType>;
1048
+ }>;
1049
+ /** The unobserved-confounder sensitivity (tipping) curve. */
1050
+ readonly Sensitivity: StructType<{
1051
+ readonly strengths: import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>;
1052
+ readonly effects: import("@elaraai/east").VectorType<import("@elaraai/east").FloatType>;
1053
+ }>;
1054
+ /** The honesty verdict tag. */
1055
+ readonly Verdict: VariantType<{
1056
+ readonly causal: NullType;
1057
+ readonly modest: NullType;
1058
+ readonly adjustment_insufficient: NullType;
1059
+ readonly non_identifiable_positivity: NullType;
1060
+ readonly not_estimable: import("@elaraai/east").StringType;
1061
+ }>;
526
1062
  /** The ALE dose-response curve value type (the "How much?" tab). */
527
1063
  readonly DoseResponse: StructType<{
528
1064
  readonly feature: import("@elaraai/east").StringType;
@@ -569,6 +1105,12 @@ export declare const Experiment: {
569
1105
  readonly confidence_level: OptionType<import("@elaraai/east").FloatType>;
570
1106
  }>>;
571
1107
  readonly random_state: OptionType<import("@elaraai/east").IntegerType>;
1108
+ readonly strong_overlap: OptionType<import("@elaraai/east").FloatType>;
1109
+ readonly evalue_floor: OptionType<import("@elaraai/east").FloatType>;
1110
+ readonly expected_sign: OptionType<VariantType<{
1111
+ readonly positive: NullType;
1112
+ readonly negative: NullType;
1113
+ }>>;
572
1114
  }>;
573
1115
  readonly verdict: VariantType<{
574
1116
  readonly causal: NullType;
@@ -581,6 +1123,7 @@ export declare const Experiment: {
581
1123
  readonly adjusted: OptionType<import("@elaraai/east").FloatType>;
582
1124
  readonly committed_at: import("@elaraai/east").DateTimeType;
583
1125
  readonly committed_by: import("@elaraai/east").StringType;
1126
+ readonly preset: OptionType<import("@elaraai/east").StringType>;
584
1127
  }>>;
585
1128
  /** The validation-trial recipe value type (the "Validate" tab). */
586
1129
  readonly Design: StructType<{
@@ -676,6 +1219,105 @@ export declare const Experiment: {
676
1219
  }>;
677
1220
  }>;
678
1221
  }>>;
1222
+ /** The developer-authored preset value type (named vetted question + scope). */
1223
+ readonly Preset: StructType<{
1224
+ readonly id: import("@elaraai/east").StringType;
1225
+ readonly label: import("@elaraai/east").StringType;
1226
+ readonly config: StructType<{
1227
+ readonly treatment: import("@elaraai/east").StringType;
1228
+ readonly outcome: import("@elaraai/east").StringType;
1229
+ readonly common_causes: ArrayType<import("@elaraai/east").StringType>;
1230
+ readonly categorical: OptionType<ArrayType<import("@elaraai/east").StringType>>;
1231
+ readonly method: OptionType<VariantType<{
1232
+ readonly linear_regression: NullType;
1233
+ readonly propensity_score_weighting: StructType<{
1234
+ readonly weighting_scheme: OptionType<VariantType<{
1235
+ readonly ips_weight: NullType;
1236
+ readonly ips_stabilized_weight: NullType;
1237
+ readonly ips_normalized_weight: NullType;
1238
+ }>>;
1239
+ }>;
1240
+ }>>;
1241
+ readonly estimand: OptionType<VariantType<{
1242
+ readonly ate: NullType;
1243
+ readonly att: NullType;
1244
+ readonly atc: NullType;
1245
+ }>>;
1246
+ readonly refute: OptionType<StructType<{
1247
+ readonly placebo: BooleanType;
1248
+ readonly random_common_cause: BooleanType;
1249
+ readonly data_subset: BooleanType;
1250
+ readonly sensitivity: OptionType<ArrayType<import("@elaraai/east").FloatType>>;
1251
+ }>>;
1252
+ readonly dose_feature: OptionType<import("@elaraai/east").StringType>;
1253
+ readonly min_overlap: OptionType<import("@elaraai/east").FloatType>;
1254
+ readonly min_treatment_variation: OptionType<import("@elaraai/east").FloatType>;
1255
+ readonly bootstrap: OptionType<StructType<{
1256
+ readonly reps: import("@elaraai/east").IntegerType;
1257
+ readonly cluster_column: OptionType<import("@elaraai/east").StringType>;
1258
+ readonly confidence_level: OptionType<import("@elaraai/east").FloatType>;
1259
+ }>>;
1260
+ readonly random_state: OptionType<import("@elaraai/east").IntegerType>;
1261
+ readonly strong_overlap: OptionType<import("@elaraai/east").FloatType>;
1262
+ readonly evalue_floor: OptionType<import("@elaraai/east").FloatType>;
1263
+ readonly expected_sign: OptionType<VariantType<{
1264
+ readonly positive: NullType;
1265
+ readonly negative: NullType;
1266
+ }>>;
1267
+ }>;
1268
+ readonly population: OptionType<ArrayType<VariantType<{
1269
+ readonly string: import("@elaraai/east").StructType<{
1270
+ readonly fieldId: import("@elaraai/east").StringType;
1271
+ readonly op: import("@elaraai/east").VariantType<{
1272
+ readonly eq: import("@elaraai/east").StringType;
1273
+ readonly neq: import("@elaraai/east").StringType;
1274
+ readonly in: import("@elaraai/east").SetType<import("@elaraai/east").StringType>;
1275
+ readonly notIn: import("@elaraai/east").SetType<import("@elaraai/east").StringType>;
1276
+ readonly contains: import("@elaraai/east").StringType;
1277
+ readonly matches: import("@elaraai/east").StringType;
1278
+ }>;
1279
+ }>;
1280
+ readonly integer: import("@elaraai/east").StructType<{
1281
+ readonly fieldId: import("@elaraai/east").StringType;
1282
+ readonly op: import("@elaraai/east").VariantType<{
1283
+ readonly eq: import("@elaraai/east").IntegerType;
1284
+ readonly neq: import("@elaraai/east").IntegerType;
1285
+ readonly lt: import("@elaraai/east").IntegerType;
1286
+ readonly lte: import("@elaraai/east").IntegerType;
1287
+ readonly gt: import("@elaraai/east").IntegerType;
1288
+ readonly gte: import("@elaraai/east").IntegerType;
1289
+ readonly in: import("@elaraai/east").SetType<import("@elaraai/east").IntegerType>;
1290
+ }>;
1291
+ }>;
1292
+ readonly float: import("@elaraai/east").StructType<{
1293
+ readonly fieldId: import("@elaraai/east").StringType;
1294
+ readonly op: import("@elaraai/east").VariantType<{
1295
+ readonly lt: import("@elaraai/east").FloatType;
1296
+ readonly lte: import("@elaraai/east").FloatType;
1297
+ readonly gt: import("@elaraai/east").FloatType;
1298
+ readonly gte: import("@elaraai/east").FloatType;
1299
+ }>;
1300
+ }>;
1301
+ readonly datetime: import("@elaraai/east").StructType<{
1302
+ readonly fieldId: import("@elaraai/east").StringType;
1303
+ readonly op: import("@elaraai/east").VariantType<{
1304
+ readonly before: import("@elaraai/east").DateTimeType;
1305
+ readonly after: import("@elaraai/east").DateTimeType;
1306
+ readonly between: import("@elaraai/east").StructType<{
1307
+ readonly from: import("@elaraai/east").DateTimeType;
1308
+ readonly to: import("@elaraai/east").DateTimeType;
1309
+ }>;
1310
+ }>;
1311
+ }>;
1312
+ readonly boolean: import("@elaraai/east").StructType<{
1313
+ readonly fieldId: import("@elaraai/east").StringType;
1314
+ readonly op: import("@elaraai/east").VariantType<{
1315
+ readonly is: import("@elaraai/east").BooleanType;
1316
+ }>;
1317
+ }>;
1318
+ }>>>;
1319
+ readonly group: OptionType<import("@elaraai/east").StringType>;
1320
+ }>;
679
1321
  /** Optional per-column display metadata. */
680
1322
  readonly ColumnMeta: import("@elaraai/east").DictType<import("@elaraai/east").StringType, StructType<{
681
1323
  readonly label: OptionType<import("@elaraai/east").StringType>;