react-semaphor 0.1.444 → 0.1.445

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/analytics-protocol/index.cjs +1 -1
  3. package/dist/analytics-protocol/index.js +123 -107
  4. package/dist/appearance/index.cjs +1 -1
  5. package/dist/brand-studio/index.cjs +2 -2
  6. package/dist/brand-studio/index.js +5 -4
  7. package/dist/briefings/index.cjs +1 -1
  8. package/dist/briefings/index.js +526 -457
  9. package/dist/chunks/analyze-result-contract-BHb7sUUW.cjs +1 -0
  10. package/dist/chunks/analyze-result-contract-DUv3QnMl.js +29 -0
  11. package/dist/chunks/{braces-CbO-aIwH.js → braces-BKimshER.cjs} +1 -1
  12. package/dist/chunks/{code-editor-BpADiIlq.js → code-editor-B4gTfvc5.js} +6800 -6560
  13. package/dist/chunks/code-editor-BYVorgOf.cjs +138 -0
  14. package/dist/chunks/common-types-CQ6SHfLk.cjs +1 -0
  15. package/dist/chunks/{common-types-ClkOI-3O.js → common-types-DFsDdpH7.js} +22 -21
  16. package/dist/chunks/dashboard-CAiwJW3L.cjs +1397 -0
  17. package/dist/chunks/{dashboard-briefing-launcher-Bg_SeBV8.js → dashboard-briefing-launcher-2SLNOaTg.js} +26 -24
  18. package/dist/chunks/{dashboard-briefing-launcher-Do6ZcOj4.js → dashboard-briefing-launcher-CHwjpUYz.cjs} +2 -2
  19. package/dist/chunks/{dashboard-controls-Da9MkPaf.js → dashboard-controls-BfL14aqO.js} +11 -9
  20. package/dist/chunks/{dashboard-controls-CYBi_mes.js → dashboard-controls-BgGTg4yw.cjs} +2 -2
  21. package/dist/chunks/dashboard-date-comparison-definition-DZq0htjG.cjs +1 -0
  22. package/dist/chunks/dashboard-json-BOv8tCa9.cjs +1 -0
  23. package/dist/chunks/{dashboard-json-BtrdGo1U.js → dashboard-json-BZwq3EcS.js} +14 -12
  24. package/dist/chunks/{dashboard-CJNVq8XI.js → dashboard-u61yfU6u.js} +50081 -47351
  25. package/dist/chunks/edit-dashboard-visual-BdVCH0DJ.cjs +182 -0
  26. package/dist/chunks/{edit-dashboard-visual-kE6_3R3j.js → edit-dashboard-visual-njLPYip3.js} +6799 -6652
  27. package/dist/chunks/{editor-action-buttons-DROkx4PS.js → editor-action-buttons-BhLX5Q6m.js} +24 -23
  28. package/dist/chunks/{editor-action-buttons-8_CQa8Hb.js → editor-action-buttons-CBVMFipA.cjs} +1 -1
  29. package/dist/chunks/{index-D7KJindZ.js → format-types-CSv0V7mm.cjs} +1 -1
  30. package/dist/chunks/{index-CnujJ3fa.js → format-types-CZH5w1lo.js} +23 -17
  31. package/dist/chunks/{layout-grid-B08pP7v6.js → layout-grid-3-HWzEwU.cjs} +1 -1
  32. package/dist/chunks/{metric-comparison-CPoDx56y.js → metric-comparison-BJ_Qu1ZF.js} +1 -1
  33. package/dist/chunks/metric-comparison-CUAJ8n4y.cjs +1 -0
  34. package/dist/chunks/{palette-C0yjT5Tv.js → palette-DW_l7Jr0.cjs} +1 -1
  35. package/dist/chunks/pivot-result-identity-B6QCWOSi.js +94 -0
  36. package/dist/chunks/pivot-result-identity-CDLRT-YG.cjs +1 -0
  37. package/dist/chunks/pivot-result-lifecycle-BM3Pl-D1.js +914 -0
  38. package/dist/chunks/pivot-result-lifecycle-DPc0ANwk.cjs +4 -0
  39. package/dist/chunks/presentation-execution-BTV-Q43g.cjs +1 -0
  40. package/dist/chunks/presentation-execution-CGlb7YZ6.js +637 -0
  41. package/dist/chunks/{report-preferences-dialog-Dq7rmN93.js → report-preferences-dialog-D_NJu2wU.js} +7 -6
  42. package/dist/chunks/report-preferences-dialog-r8QzOSFb.cjs +1 -0
  43. package/dist/chunks/report-runtime-context-C8LZFsqV.cjs +1 -0
  44. package/dist/chunks/report-runtime-context-Qzn11HQe.js +387 -0
  45. package/dist/chunks/{save-Xdc4pnys.js → save-4_uMnE6s.cjs} +1 -1
  46. package/dist/chunks/{search-Dcud9ajy.js → search-6ZmeMq55.cjs} +1 -1
  47. package/dist/chunks/temporal-bucket-BnPxGrAi.js +446 -0
  48. package/dist/chunks/temporal-bucket-authoring-BUZMuVca.js +205 -0
  49. package/dist/chunks/temporal-bucket-authoring-CPTwHzvs.cjs +1 -0
  50. package/dist/chunks/temporal-bucket-contract-B2bJ1oe4.js +108 -0
  51. package/dist/chunks/temporal-bucket-contract-ChDBWX8I.cjs +1 -0
  52. package/dist/chunks/temporal-bucket-pMnV-4Nj.cjs +1 -0
  53. package/dist/chunks/{comparison-document-migration-Dj6xZMCb.js → temporal-result-owner-Cb27SSG9.js} +152 -123
  54. package/dist/chunks/temporal-result-owner-f6-i65Fb.cjs +1 -0
  55. package/dist/chunks/token-types-BdQ8kHBm.cjs +1 -0
  56. package/dist/chunks/token-types-DLo91nOf.js +8 -0
  57. package/dist/chunks/{update-policy-DnF_74zC.js → update-policy-BxvYMYz0.cjs} +1 -1
  58. package/dist/chunks/{update-policy-De2NswtM.js → update-policy-eg59mQqv.js} +1 -1
  59. package/dist/chunks/validators-9D4KBqKD.cjs +1 -0
  60. package/dist/chunks/validators-wZ2WlNHc.js +4640 -0
  61. package/dist/dashboard/index.cjs +1 -1
  62. package/dist/dashboard/index.js +2 -2
  63. package/dist/dashboard-authoring/index.cjs +3 -3
  64. package/dist/dashboard-authoring/index.js +136 -126
  65. package/dist/data-app-builder/index.cjs +1 -1
  66. package/dist/data-app-builder/index.js +2 -2
  67. package/dist/data-app-codegen/index.cjs +1 -1
  68. package/dist/data-app-codegen/index.js +2 -2
  69. package/dist/data-app-codegen-node/index.cjs +1 -1
  70. package/dist/data-app-codegen-node/index.js +3 -3
  71. package/dist/data-app-sdk/index.cjs +2 -2
  72. package/dist/data-app-sdk/index.js +34 -35
  73. package/dist/data-app-sdk-adapters/index.cjs +1 -1
  74. package/dist/data-app-sdk-adapters/index.js +5 -5
  75. package/dist/data-app-sdk-validation/index.cjs +1 -1
  76. package/dist/data-app-sdk-validation/index.js +9 -10
  77. package/dist/format-utils/index.cjs +3 -3
  78. package/dist/format-utils/index.js +155 -176
  79. package/dist/index.cjs +1 -1
  80. package/dist/index.js +180 -174
  81. package/dist/report-runtime-context/index.cjs +1 -1
  82. package/dist/report-runtime-context/index.js +7 -392
  83. package/dist/shared/index.cjs +1 -1
  84. package/dist/style.css +1 -1
  85. package/dist/surfboard/index.cjs +1 -1
  86. package/dist/surfboard/index.js +3 -3
  87. package/dist/types/analytics-protocol.d.ts +257 -48
  88. package/dist/types/briefings.d.ts +138 -50
  89. package/dist/types/dashboard-assistant.d.ts +207 -52
  90. package/dist/types/dashboard-authoring.d.ts +182 -50
  91. package/dist/types/dashboard.d.ts +290 -48
  92. package/dist/types/data-app-builder.d.ts +48 -42
  93. package/dist/types/data-app-codegen-node.d.ts +50 -44
  94. package/dist/types/data-app-codegen.d.ts +50 -44
  95. package/dist/types/data-app-sdk-adapters.d.ts +48 -42
  96. package/dist/types/data-app-sdk-validation.d.ts +81 -43
  97. package/dist/types/data-app-sdk.d.ts +83 -45
  98. package/dist/types/format-utils.d.ts +645 -67
  99. package/dist/types/index.cjs +1 -1
  100. package/dist/types/index.js +19 -19
  101. package/dist/types/main.d.ts +298 -94
  102. package/dist/types/report-runtime-context.d.ts +3 -0
  103. package/dist/types/shared.d.ts +116 -41
  104. package/dist/types/surfboard.d.ts +290 -48
  105. package/dist/types/types.d.ts +455 -65
  106. package/package.json +3 -1
  107. package/dist/chunks/analyze-result-contract-BswhsmWT.js +0 -1
  108. package/dist/chunks/analyze-result-contract-CfOBEwaC.js +0 -1998
  109. package/dist/chunks/code-editor-M7HTUhdF.js +0 -138
  110. package/dist/chunks/common-types-C73-Ud1-.js +0 -1
  111. package/dist/chunks/comparison-document-migration-DbU_BTxR.js +0 -1
  112. package/dist/chunks/csv-utils-BZDvO2Fw.js +0 -376
  113. package/dist/chunks/csv-utils-Co0WxHke.js +0 -4
  114. package/dist/chunks/dashboard-DxZuqe8t.js +0 -1402
  115. package/dist/chunks/dashboard-date-comparison-definition-DGZr3m-b.js +0 -1
  116. package/dist/chunks/dashboard-json-ezLyW7AK.js +0 -1
  117. package/dist/chunks/edit-dashboard-visual-DEb9MeSM.js +0 -182
  118. package/dist/chunks/metric-comparison-DVy3fll_.js +0 -1
  119. package/dist/chunks/numeric-presentation-BJs5lSar.js +0 -517
  120. package/dist/chunks/numeric-presentation-Dlb-Dk4c.js +0 -1
  121. package/dist/chunks/report-preferences-dialog-D5sIaFnb.js +0 -1
  122. package/dist/chunks/source-identity-5OPV4gvg.js +0 -92
  123. package/dist/chunks/source-identity-Cbo2LOHQ.js +0 -1
  124. package/dist/chunks/validators-B2vUAqTf.js +0 -1
  125. package/dist/chunks/validators-Bce_J7Vd.js +0 -2448
  126. /package/dist/chunks/{card-config-utils-15sRtebL.js → card-config-utils-15sRtebL.cjs} +0 -0
  127. /package/dist/chunks/{catalog-field-grounding-Bnx-3tE0.js → catalog-field-grounding-Bnx-3tE0.cjs} +0 -0
  128. /package/dist/chunks/{dashboard-input-contract-DV3cshjz.js → dashboard-input-contract-DV3cshjz.cjs} +0 -0
  129. /package/dist/chunks/{index-Dpm_VET4.js → index-Dpm_VET4.cjs} +0 -0
  130. /package/dist/chunks/{index-jSrCwPQz.js → index-jSrCwPQz.cjs} +0 -0
  131. /package/dist/chunks/{normalize-dashboard-for-dirty-check-BXRUMVb2.js → normalize-dashboard-for-dirty-check-BXRUMVb2.cjs} +0 -0
  132. /package/dist/chunks/{operators-DrTQsJXv.js → operators-DrTQsJXv.cjs} +0 -0
  133. /package/dist/chunks/{use-debounced-dirty-check-XHSwAefL.js → use-debounced-dirty-check-XHSwAefL.cjs} +0 -0
@@ -468,7 +468,7 @@ declare type AsyncMutation<TInput, TOutput> = {
468
468
 
469
469
  export declare type AuthoritativeExportFormattingConfig = ExportFormattingConfig & {
470
470
  comparisonPresentation: ComparisonPresentationSpec;
471
- resolvedNumericFormats: NumericPresentationSnapshotEntry[];
471
+ resolvedFormats: ResolvedPresentationEntry[];
472
472
  };
473
473
 
474
474
  export declare type AuthToken = {
@@ -537,6 +537,8 @@ declare type BaseFilter = {
537
537
  dataType?: string;
538
538
  fieldMeta?: FilterFieldMeta;
539
539
  semanticContext?: FilterSemanticContext;
540
+ /** Governed meaning for canonical grouped-temporal filter values. */
541
+ temporalBucket?: TemporalBucketMetadata;
540
542
  };
541
543
 
542
544
  export declare interface BaseInteractionEvent {
@@ -846,9 +848,9 @@ export declare type BriefingFormDraft = {
846
848
  limits: BriefingLimits;
847
849
  };
848
850
 
849
- export declare function briefingFormDraftToCreateRequest(draft: BriefingFormDraft): CreateBriefingRequest;
851
+ export declare function briefingFormDraftToCreateRequest(draft: BriefingFormDraft, resolvedFormats?: ResolvedPresentationEntry[]): CreateBriefingRequest;
850
852
 
851
- export declare function briefingFormDraftToUpdateRequest(draft: BriefingFormDraft): UpdateBriefingRequest;
853
+ export declare function briefingFormDraftToUpdateRequest(draft: BriefingFormDraft, resolvedFormats?: ResolvedPresentationEntry[]): UpdateBriefingRequest;
852
854
 
853
855
  export declare type BriefingFormOutputDraft = {
854
856
  artifactFormats: BriefingArtifactFormat[];
@@ -895,6 +897,7 @@ declare type BriefingFragments = {
895
897
  export declare type BriefingJobConfig = {
896
898
  kind: BriefingKind;
897
899
  reportContext: ReportRuntimeContext;
900
+ resolvedFormats?: ResolvedPresentationEntry[];
898
901
  source: BriefingSource;
899
902
  body: BriefingBody;
900
903
  attachments: BriefingAttachment[];
@@ -1296,7 +1299,17 @@ export declare function cancelExport(apiServiceUrl: string, token: string, expor
1296
1299
 
1297
1300
  declare type CanonicalDurationUnit = 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
1298
1301
 
1299
- export declare type CanonicalFormatSpec = NumericCanonicalFormat | DateCanonicalFormat | DurationCanonicalFormat | StringCanonicalFormat;
1302
+ export declare type CanonicalFormatSpec = NumericCanonicalFormat | DateCanonicalFormat | DurationCanonicalFormat | StringCanonicalFormat | TemporalBucketFormat;
1303
+
1304
+ declare type CanonicalPivotResultContract = {
1305
+ version: 1;
1306
+ expectedRoleFieldIds: PivotResultExpectedRoleFieldIds;
1307
+ expectedMetricAliases: readonly string[];
1308
+ columnKinds: Readonly<Record<string, PivotResultColumnKind>>;
1309
+ columnClassifications: Readonly<Record<string, PivotResultColumnClassification | undefined>>;
1310
+ };
1311
+
1312
+ declare type CanonicalPivotResultState = 'loaded_empty' | 'loaded_valid';
1300
1313
 
1301
1314
  export declare interface CardConfig {
1302
1315
  /**
@@ -1359,9 +1372,6 @@ export declare interface CardConfig {
1359
1372
  * Configuration for on-click dashboard filters triggered by this card.
1360
1373
  */
1361
1374
  clickFilterInteractions?: ClickFilterInteraction[];
1362
- showTrendline?: boolean;
1363
- trendlineWindow?: number;
1364
- trendlineGranularity?: 'day' | 'week' | 'month';
1365
1375
  summary?: {
1366
1376
  enabled?: boolean;
1367
1377
  showOnCard?: boolean;
@@ -1437,8 +1447,10 @@ export declare interface ClickedMetricValue {
1437
1447
  export declare interface ClickFilterCondition {
1438
1448
  field: Field;
1439
1449
  operator: Operator;
1440
- value: string | number;
1450
+ value: string | number | null;
1441
1451
  label?: string;
1452
+ /** Governed meaning for a canonical grouped-temporal scalar. */
1453
+ temporalBucket?: TemporalBucketMetadata;
1442
1454
  }
1443
1455
 
1444
1456
  export declare interface ClickFilterConditionGroup {
@@ -1785,7 +1797,10 @@ export declare type ControlOption = {
1785
1797
  label: string;
1786
1798
  presentation?: {
1787
1799
  granularity?: TimeGranularity;
1800
+ format?: TemporalBucketFormat;
1801
+ /** Saved-dashboard compatibility only. New authoring writes `format`. */
1788
1802
  dateFormat?: DateFormatValue;
1803
+ /** Saved-dashboard compatibility only. New authoring writes `format`. */
1789
1804
  customFormat?: string;
1790
1805
  };
1791
1806
  };
@@ -1827,6 +1842,7 @@ export declare type CreateBriefingRequest = {
1827
1842
  presentation: BriefingPresentation;
1828
1843
  limits?: BriefingLimits;
1829
1844
  deliveryConfig: BriefingDeliveryConfig | null;
1845
+ resolvedFormats?: ResolvedPresentationEntry[];
1830
1846
  };
1831
1847
 
1832
1848
  /**
@@ -1850,6 +1866,9 @@ export declare interface CreateExportRequest {
1850
1866
  title?: string;
1851
1867
  connection_id: string;
1852
1868
  cardType: string;
1869
+ sql: string;
1870
+ python: string;
1871
+ resultOwner: TemporalResultOwner;
1853
1872
  cardConfig: CardConfig;
1854
1873
  cardDataSource: DataSource;
1855
1874
  active_filters: TFilterValue[];
@@ -2352,6 +2371,11 @@ export declare type DashboardProps = {
2352
2371
  * inputs instead of documentInputValues.
2353
2372
  */
2354
2373
  dashboardInputExecutionSnapshot?: DashboardInputExecutionSnapshot;
2374
+ /**
2375
+ * Runtime interaction state captured for deterministic print/replay entry
2376
+ * points. Ordinary dashboard consumers should leave this unset.
2377
+ */
2378
+ interactionExecutionSnapshot?: Record<string, InteractionState>;
2355
2379
  /**
2356
2380
  * Render target for print entry points. Generic dashboard PDF exports also
2357
2381
  * use cardDisplay.mode="print"; document-specific print handling must only
@@ -2867,7 +2891,9 @@ export declare type DocumentVariableRef = {
2867
2891
  key: 'generatedAt' | 'pageNumber' | 'pageCount';
2868
2892
  };
2869
2893
 
2870
- export declare interface DomainCalculatedDimension {
2894
+ export declare type DomainCalculatedDimension = SemanticGroupedTemporalInput<DomainCalculatedDimensionBase>;
2895
+
2896
+ declare type DomainCalculatedDimensionBase = {
2871
2897
  name: string;
2872
2898
  label: string;
2873
2899
  description?: string;
@@ -2875,7 +2901,7 @@ export declare interface DomainCalculatedDimension {
2875
2901
  inputs: Record<string, DimensionInputReference>;
2876
2902
  dataType?: DataType;
2877
2903
  tags?: string[];
2878
- }
2904
+ };
2879
2905
 
2880
2906
  export declare interface DomainCalculatedMetric {
2881
2907
  name: string;
@@ -2884,7 +2910,7 @@ export declare interface DomainCalculatedMetric {
2884
2910
  expression: string;
2885
2911
  inputs: Record<string, InputReference>;
2886
2912
  metricType?: 'base' | 'derived' | 'calculated';
2887
- format?: FormatSpec;
2913
+ format?: ScalarFormatSpec;
2888
2914
  tags?: string[];
2889
2915
  isCertified?: boolean;
2890
2916
  aggregationStrategy?: AggregationStrategy;
@@ -3352,7 +3378,7 @@ export declare interface ExportFormattingConfig {
3352
3378
  visibleColumns?: string[];
3353
3379
  columnLabels?: Record<string, string>;
3354
3380
  tableTotalsLabelColumnKey?: string;
3355
- resolvedNumericFormats?: NumericPresentationSnapshotEntry[];
3381
+ resolvedFormats?: ResolvedPresentationEntry[];
3356
3382
  comparisonPresentation?: ComparisonPresentationSpec;
3357
3383
  }
3358
3384
 
@@ -3444,8 +3470,9 @@ declare type ExportStoreState = {
3444
3470
 
3445
3471
  export declare interface Field {
3446
3472
  /**
3447
- * Unique identifier for this field instance (for joins, UI state, etc.).
3448
- * Should be unique within the context of the query or data model.
3473
+ * Stable authored/semantic field identifier (for joins, UI state, etc.).
3474
+ * It is normally unique within a role, but one saved query may reuse it in
3475
+ * different roles; result bindings must therefore include the role.
3449
3476
  * Example: 'orders.customer_id', 'expr_12345', etc.
3450
3477
  */
3451
3478
  id: string;
@@ -3487,6 +3514,12 @@ export declare interface Field {
3487
3514
  */
3488
3515
  derivedField?: SemaphorDerivedFieldDefinition;
3489
3516
  format?: FormatSpec;
3517
+ /**
3518
+ * Source-level temporal presentation keeps the semantic grain that authored
3519
+ * the format. The card's mutable `granularity` remains the active query
3520
+ * grain, so changing it cannot accidentally retarget a semantic default.
3521
+ */
3522
+ semanticTemporalPresentation?: SemanticTemporalPresentation;
3490
3523
  aggregate?: AggregateFunction;
3491
3524
  fieldScope?: FieldScope;
3492
3525
  }
@@ -3530,6 +3563,10 @@ export declare interface FilterCondition {
3530
3563
  field: Field;
3531
3564
  operator: Operator;
3532
3565
  value: FilterValue;
3566
+ /** Display-only label for canonical grouped-temporal values. */
3567
+ label?: string;
3568
+ /** Governed meaning for a canonical grouped-temporal scalar. */
3569
+ temporalBucket?: TemporalBucketMetadata;
3533
3570
  }
3534
3571
 
3535
3572
  export declare type FilterDashboardInput = DashboardInputBase & {
@@ -3711,7 +3748,7 @@ export declare type FormatSpec = {
3711
3748
  type: 'string';
3712
3749
  prefix?: string;
3713
3750
  suffix?: string;
3714
- };
3751
+ } | TemporalBucketFormat;
3715
3752
 
3716
3753
  export declare function getBriefing(apiServiceUrl: string, token: string, briefingId: string): Promise<{
3717
3754
  briefing: BriefingDetail;
@@ -3763,7 +3800,7 @@ export declare function getExportStatus(apiServiceUrl: string, token: string, ex
3763
3800
 
3764
3801
  export declare function getFieldRuntimeColumnName(field: Pick<Field, 'name' | 'sourceField'> | null | undefined): string;
3765
3802
 
3766
- export declare function getFilterValueType(filter: TFilter): "date" | "string" | "number" | "boolean";
3803
+ export declare function getFilterValueType(filter: TFilter): "string" | "boolean" | "number" | "date";
3767
3804
 
3768
3805
  export declare function getFormattedTableNameForQuery({ schemaName, tableName, modelName, databaseName, capabilities, connectionType, }: {
3769
3806
  schemaName: string;
@@ -3806,7 +3843,7 @@ declare type GlobalDateComparisonSelection = {
3806
3843
  spec: ViewerPeriodComparisonSpec;
3807
3844
  };
3808
3845
 
3809
- export declare type Granularity = 'day' | 'week' | 'month' | 'quarter' | 'year' | 'hour' | 'minute' | 'second';
3846
+ export declare type Granularity = SemaphorTimeGrain;
3810
3847
 
3811
3848
  export declare interface GroupByColumn extends BaseColumn {
3812
3849
  role: 'groupby';
@@ -3817,6 +3854,11 @@ export declare interface GroupByColumn extends BaseColumn {
3817
3854
  export declare interface GroupByField extends Field {
3818
3855
  role: 'groupby';
3819
3856
  granularity?: TimeGranularity;
3857
+ /**
3858
+ * Query transport policy for grouped temporal values. This is projected
3859
+ * into executable card config and is not persisted authoring state.
3860
+ */
3861
+ dateValueMode?: 'canonical' | 'formatted';
3820
3862
  /**
3821
3863
  * Optional SQL expression for grouping (e.g., DATE_TRUNC('month', order_date)).
3822
3864
  * If present, used in SELECT and GROUP BY instead of just the column name.
@@ -3826,6 +3868,17 @@ export declare interface GroupByField extends Field {
3826
3868
  calculatedFormula?: CalculatedFieldFormula;
3827
3869
  }
3828
3870
 
3871
+ /**
3872
+ * Authoring boundary for a dashboard field that is known to be grouped by a
3873
+ * temporal grain. The broad persisted field types remain intentionally
3874
+ * compatible with unmigrated/non-temporal fields; new temporal writers use
3875
+ * this boundary instead.
3876
+ */
3877
+ declare type GroupedTemporalAuthoringInput<TBase extends object> = Omit<TBase, 'granularity' | 'format'> & {
3878
+ granularity: SemaphorTimeGrain;
3879
+ format?: TemporalBucketFormat;
3880
+ };
3881
+
3829
3882
  export declare function hasCalculatedFieldMarker(field: Pick<Field, 'entityName' | 'entityId'> | null | undefined): boolean;
3830
3883
 
3831
3884
  export declare function hasCalculatedFormulaInputs(field: Field | null | undefined): boolean;
@@ -4139,7 +4192,7 @@ declare type MatrixAxisLevelDescriptor = {
4139
4192
  fieldKey: string;
4140
4193
  label: string;
4141
4194
  field: SemaphorFieldRef;
4142
- grain?: SemaphorTimeGrain;
4195
+ grain?: SemaphorMatrixTimeGrain;
4143
4196
  subtotal?: SemaphorMatrixSubtotalOptions;
4144
4197
  };
4145
4198
 
@@ -4351,7 +4404,7 @@ declare type MatrixMeasureDescriptor = {
4351
4404
  label: string;
4352
4405
  field: SemaphorFieldRef;
4353
4406
  aggregate?: SemaphorAggregateFunction;
4354
- format?: SemaphorValueFormat;
4407
+ format?: SemaphorScalarValueFormat;
4355
4408
  totalBehavior?: SemaphorMatrixTotalCalculation;
4356
4409
  };
4357
4410
 
@@ -4365,7 +4418,7 @@ declare type MatrixMeasureSemantics = {
4365
4418
  } | {
4366
4419
  kind: 'semiAdditive';
4367
4420
  aggregate?: SemaphorAggregateFunction;
4368
- grain?: SemaphorTimeGrain;
4421
+ grain?: SemaphorMatrixTimeGrain;
4369
4422
  } | {
4370
4423
  kind: 'nonAdditive';
4371
4424
  aggregate?: SemaphorAggregateFunction;
@@ -4573,7 +4626,7 @@ declare type MetricComparisonSpec = {
4573
4626
  targetValue: number;
4574
4627
  };
4575
4628
 
4576
- declare type MetricComparisonWindowGrain = 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';
4629
+ declare type MetricComparisonWindowGrain = SemaphorTimeGrain;
4577
4630
 
4578
4631
  export declare interface MetricField extends Field {
4579
4632
  role: 'metric';
@@ -4698,15 +4751,6 @@ export declare type NumberOptions = {
4698
4751
  colorRanges?: ColorRange[];
4699
4752
  };
4700
4753
 
4701
- /**
4702
- * Shared format types for export system
4703
- * IMPORTANT: No React imports allowed in this file
4704
- *
4705
- * These types are used by:
4706
- * - react-semaphor (browser) for client-side exports
4707
- * - semaphor-app (Next.js) for API routes
4708
- * - Lambda (Node.js) for async export processing
4709
- */
4710
4754
  declare type NumericCanonicalFormat = {
4711
4755
  type: 'number' | 'currency' | 'percent' | 'scientific';
4712
4756
  locale?: string;
@@ -4722,16 +4766,6 @@ declare type NumericCanonicalFormat = {
4722
4766
  percentValueMode?: 'fraction' | 'whole';
4723
4767
  };
4724
4768
 
4725
- declare type NumericPresentationSnapshotEntry = {
4726
- scope: {
4727
- dashboardId: string;
4728
- cardId?: string;
4729
- attachmentIndex?: number;
4730
- };
4731
- target: NumericPresentationTarget;
4732
- format: NumericCanonicalFormat;
4733
- };
4734
-
4735
4769
  declare type NumericPresentationTarget = {
4736
4770
  kind: 'metric';
4737
4771
  metricId: string;
@@ -4802,6 +4836,11 @@ export declare type PersistedInteraction = Interaction & {
4802
4836
 
4803
4837
  export declare interface PivotByField extends Field {
4804
4838
  role: 'pivotby';
4839
+ /**
4840
+ * Query transport policy for grouped temporal pivot members. This is
4841
+ * projected into executable config and is never persisted authoring state.
4842
+ */
4843
+ dateValueMode?: 'canonical' | 'formatted';
4805
4844
  }
4806
4845
 
4807
4846
  export declare interface PivotColumnSchema {
@@ -4810,7 +4849,8 @@ export declare interface PivotColumnSchema {
4810
4849
  metricId: string;
4811
4850
  metricName: string;
4812
4851
  metricLabel?: string;
4813
- pivotValues: string[];
4852
+ pivotValues: SemaphorPivotValue[];
4853
+ pivotFieldIds?: string[];
4814
4854
  pivotFields?: string[];
4815
4855
  displayLabel?: string;
4816
4856
  isPivotColumn?: boolean;
@@ -4844,6 +4884,15 @@ export declare enum PivotMarkerEnum {
4844
4884
  ALL = "__ALL__"
4845
4885
  }
4846
4886
 
4887
+ declare type PivotResultColumnClassification = {
4888
+ isSubtotal?: boolean;
4889
+ subtotalScope?: 'base' | 'pivot-value' | 'grand-total';
4890
+ };
4891
+
4892
+ declare type PivotResultColumnKind = 'row' | 'pivot_metric' | 'value';
4893
+
4894
+ declare type PivotResultExpectedRoleFieldIds = Readonly<Partial<Record<QueryColumnKeyRole, readonly string[]>>>;
4895
+
4847
4896
  export declare type Placeholders = {
4848
4897
  /**
4849
4898
  * Placeholder for the card when there are no records to display.
@@ -4859,6 +4908,12 @@ export declare type PluginType = 'custom' | 'standard';
4859
4908
 
4860
4909
  export declare function polishBriefingText(apiServiceUrl: string, token: string, text: string): Promise<string>;
4861
4910
 
4911
+ declare type PresentationScope = {
4912
+ dashboardId: string;
4913
+ cardId?: string;
4914
+ attachmentIndex?: number;
4915
+ };
4916
+
4862
4917
  export declare function previewBriefingPlan(apiServiceUrl: string, token: string, payload: CreateBriefingRequest): Promise<PreviewBriefingPlanResponse>;
4863
4918
 
4864
4919
  export declare type PreviewBriefingPlanResponse = {
@@ -4874,12 +4929,17 @@ export declare type PrintState = {
4874
4929
 
4875
4930
  export declare type QueryColumn = GroupByColumn | MetricColumn | FilterByColumn;
4876
4931
 
4877
- export declare interface QueryColumnKeyMap {
4932
+ export declare type QueryColumnKeyMap = QueryColumnKeyMap_2;
4933
+
4934
+ declare interface QueryColumnKeyMap_2 {
4878
4935
  version: 1;
4879
4936
  source: 'explorer';
4880
- byFieldId: Record<string, QueryColumnKeyMapEntry>;
4937
+ byRole: QueryColumnKeyMapByRole;
4938
+ byMetricAlias?: Record<string, QueryColumnKeyMapEntry>;
4881
4939
  }
4882
4940
 
4941
+ export declare type QueryColumnKeyMapByRole = Partial<Record<QueryColumnKeyRole, Record<string, QueryColumnKeyMapEntry>>>;
4942
+
4883
4943
  export declare interface QueryColumnKeyMapEntry {
4884
4944
  role: QueryColumnKeyRole;
4885
4945
  rawKey: string;
@@ -4903,6 +4963,11 @@ export declare interface QueryConfig {
4903
4963
  */
4904
4964
  export declare interface QueryExecutionResponse {
4905
4965
  records: any[];
4966
+ /** Execution owner captured with these exact result rows. */
4967
+ resultOwner?: TemporalResultOwner;
4968
+ pivotResultState?: CanonicalPivotResultState;
4969
+ pivotResultContract?: CanonicalPivotResultContract;
4970
+ columns?: SemaphorResultColumn[];
4906
4971
  output: string;
4907
4972
  rowLimitExceeded: boolean;
4908
4973
  sql?: string;
@@ -5063,7 +5128,23 @@ declare type ResolvedMetricComparisonRequest = {
5063
5128
  owner?: DashboardDateComparisonOwner;
5064
5129
  };
5065
5130
 
5066
- declare type ResolvedPrimaryDateField = {
5131
+ declare type ResolvedNumericPresentationEntry = {
5132
+ scope: PresentationScope;
5133
+ target: NumericPresentationTarget;
5134
+ format: NumericCanonicalFormat;
5135
+ };
5136
+
5137
+ declare type ResolvedPresentationEntry = ResolvedNumericPresentationEntry | ResolvedTemporalBucketPresentationEntry;
5138
+
5139
+ declare type ResolvedPrimaryDateField = (ResolvedPrimaryDateFieldBase & ({
5140
+ defaultGranularity?: SemaphorTimeGrain;
5141
+ format?: undefined;
5142
+ } | {
5143
+ defaultGranularity: SemaphorTimeGrain;
5144
+ format: TemporalBucketFormat;
5145
+ })) | null;
5146
+
5147
+ declare type ResolvedPrimaryDateFieldBase = {
5067
5148
  sourceDataset: string;
5068
5149
  sourceField: string;
5069
5150
  name: string;
@@ -5073,13 +5154,20 @@ declare type ResolvedPrimaryDateField = {
5073
5154
  entityName: string;
5074
5155
  entityType: string;
5075
5156
  dataType: string;
5076
- /** Canonical dataset coordinates stamped by the temporal grounding boundary. */
5157
+ /** Canonical dataset coordinates stamped by the semantic grounding boundary. */
5077
5158
  source?: SemaphorSourceRef;
5078
- dateFormat?: string;
5079
- customFormat?: string;
5080
- defaultGranularity?: TimeGranularity;
5081
- supportedGranularities?: TimeGranularity[];
5082
- } | null;
5159
+ supportedGranularities?: SemaphorTimeGrain[];
5160
+ };
5161
+
5162
+ declare type ResolvedTemporalBucketFormat = TemporalBucketFormat & {
5163
+ locale: string;
5164
+ };
5165
+
5166
+ declare type ResolvedTemporalBucketPresentationEntry = {
5167
+ scope: PresentationScope;
5168
+ target: TemporalBucketPresentationTarget;
5169
+ format: ResolvedTemporalBucketFormat;
5170
+ };
5083
5171
 
5084
5172
  declare type ResolvedValueFormatPreferences = {
5085
5173
  locale: string;
@@ -5101,6 +5189,10 @@ declare type ResolvedValueFormatPreferenceSources = {
5101
5189
  defaultCurrency: ReportPreferenceSource;
5102
5190
  };
5103
5191
 
5192
+ export declare function resolveQueryColumnKeyMapEntry(columnKeyMap: QueryColumnKeyMap_2 | undefined, fieldId: string, role: QueryColumnKeyRole): QueryColumnKeyMapEntry | undefined;
5193
+
5194
+ export declare function resolveUniqueQueryColumnKeyMapEntry(columnKeyMap: QueryColumnKeyMap_2 | undefined, fieldId: string): QueryColumnKeyMapEntry | undefined;
5195
+
5104
5196
  export declare interface ResourceListItem {
5105
5197
  id: string;
5106
5198
  title: string;
@@ -5177,6 +5269,8 @@ export declare type RunBriefingPreviewResponse = {
5177
5269
  dispatch: BriefingDispatchResult | null;
5178
5270
  };
5179
5271
 
5272
+ export declare type ScalarFormatSpec = Exclude<FormatSpec, TemporalBucketFormat>;
5273
+
5180
5274
  export declare type SchemaItem = DropdownItem;
5181
5275
 
5182
5276
  export declare type SelectedEntities = SelectedEntity[];
@@ -5213,6 +5307,24 @@ declare type SemanticExecutionPayload = {
5213
5307
  }>;
5214
5308
  };
5215
5309
 
5310
+ /**
5311
+ * Semantic temporal input permits total omission, but a format can only exist
5312
+ * in the branch that declares its grain.
5313
+ */
5314
+ declare type SemanticGroupedTemporalInput<TBase extends object> = (Omit<TBase, 'granularity' | 'format'> & {
5315
+ granularity?: undefined;
5316
+ format?: undefined;
5317
+ }) | GroupedTemporalAuthoringInput<TBase>;
5318
+
5319
+ export declare type SemanticTemporalPresentation = {
5320
+ granularity: SemaphorTimeGrain;
5321
+ format: TemporalBucketFormat;
5322
+ };
5323
+
5324
+ declare const SEMAPHOR_MATRIX_TIME_GRAINS: ["hour", "day", "week", "month", "quarter", "year"];
5325
+
5326
+ declare const SEMAPHOR_TIME_GRAINS: readonly ["second", "minute", "hour", "day", "week", "month", "quarter", "year"];
5327
+
5216
5328
  declare type SemaphorAbsoluteTimeWindow = {
5217
5329
  kind: 'absolute';
5218
5330
  start: string;
@@ -5289,7 +5401,7 @@ declare type SemaphorDerivedFieldDefinition = {
5289
5401
  defaultAggregate?: SemaphorAggregateFunction;
5290
5402
  aggregationBehavior?: SemaphorDerivedFieldAggregationBehavior;
5291
5403
  aggregationStrategy?: SemaphorDerivedFieldAggregationStrategy;
5292
- format?: SemaphorValueFormat;
5404
+ format?: SemaphorScalarValueFormat;
5293
5405
  tags?: string[];
5294
5406
  };
5295
5407
 
@@ -5359,7 +5471,7 @@ declare type SemaphorMatrixAxisExpansionOptions = {
5359
5471
  declare type SemaphorMatrixAxisLevel = {
5360
5472
  id?: string;
5361
5473
  field: SemaphorFieldRef;
5362
- grain?: SemaphorTimeGrain;
5474
+ grain?: SemaphorMatrixTimeGrain;
5363
5475
  label?: string;
5364
5476
  subtotal?: boolean | SemaphorMatrixSubtotalOptions;
5365
5477
  sortBy?: SemaphorMatrixAxisSortRule;
@@ -5475,6 +5587,8 @@ declare type SemaphorMatrixSubtotalOptions = {
5475
5587
  label?: string;
5476
5588
  };
5477
5589
 
5590
+ declare type SemaphorMatrixTimeGrain = (typeof SEMAPHOR_MATRIX_TIME_GRAINS)[number];
5591
+
5478
5592
  declare type SemaphorMatrixTotalCalculation = {
5479
5593
  kind: 'defaultAggregate';
5480
5594
  } | {
@@ -5510,7 +5624,7 @@ declare type SemaphorMatrixValueField = {
5510
5624
  field: SemaphorFieldRef;
5511
5625
  aggregate?: SemaphorAggregateFunction;
5512
5626
  label?: string;
5513
- format?: SemaphorValueFormat;
5627
+ format?: SemaphorScalarValueFormat;
5514
5628
  totalBehavior?: SemaphorMatrixTotalCalculation;
5515
5629
  };
5516
5630
 
@@ -5578,6 +5692,30 @@ declare type SemaphorPaginationRequest = {
5578
5692
  pageSize: number;
5579
5693
  };
5580
5694
 
5695
+ declare type SemaphorPivotResultColumnIdentity = {
5696
+ metricId: string;
5697
+ /** Collision-safe identity for this configured metric instance. */
5698
+ metricAlias: string;
5699
+ /**
5700
+ * Sole transported tuple identity in configured pivot-axis order. A leaf
5701
+ * carries the complete tuple, a subtotal carries its explicit prefix, and a
5702
+ * metric-only or grand-total column carries an empty tuple.
5703
+ */
5704
+ members: SemaphorPivotResultMember[];
5705
+ };
5706
+
5707
+ declare type SemaphorPivotResultMember = {
5708
+ /** Stable identity of the configured pivot field. */
5709
+ fieldId: string;
5710
+ /** Canonical pivot member value; labels are resolved only at presentation. */
5711
+ value: SemaphorPivotValue;
5712
+ /** Present when this member is an activated governed temporal bucket. */
5713
+ temporalBucket?: TemporalBucketMetadata;
5714
+ };
5715
+
5716
+ /** Stable canonical scalar transported for one physical pivot member. */
5717
+ declare type SemaphorPivotValue = string | null;
5718
+
5581
5719
  declare type SemaphorProtocolVersion = 1;
5582
5720
 
5583
5721
  declare function SemaphorQueryClient({ children, }: {
@@ -5622,12 +5760,72 @@ declare type SemaphorRelationshipHint = {
5622
5760
 
5623
5761
  declare type SemaphorRelativeTimeWindow = {
5624
5762
  kind?: 'relative';
5625
- unit: 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';
5763
+ unit: SemaphorTimeGrain;
5626
5764
  value: number;
5627
5765
  anchor?: 'now' | 'latest_available';
5628
5766
  completeness?: 'include_partial' | 'complete_periods';
5629
5767
  };
5630
5768
 
5769
+ declare type SemaphorResultColumn = {
5770
+ /**
5771
+ * Stable row accessor for this result. Consumers should read values with
5772
+ * `row[column.key]`; labels are display-only and may change.
5773
+ */
5774
+ key: string;
5775
+ /**
5776
+ * Semantic/source field name before result-key disambiguation.
5777
+ */
5778
+ name: string;
5779
+ /**
5780
+ * Human-facing display label.
5781
+ */
5782
+ label: string;
5783
+ role?: SemaphorFieldRef['role'];
5784
+ dataType?: SemaphorFieldRef['dataType'];
5785
+ aggregate?: SemaphorFieldRef['aggregate'];
5786
+ source?: SemaphorFieldRef['source'];
5787
+ derivedField?: SemaphorDerivedFieldDefinition;
5788
+ temporalBucket?: TemporalBucketMetadata;
5789
+ pivotIdentity?: SemaphorPivotResultColumnIdentity;
5790
+ };
5791
+
5792
+ declare type SemaphorScalarValueFormat = {
5793
+ type: 'number' | 'currency' | 'percent' | 'percentage' | 'scientific';
5794
+ minimumFractionDigits?: number;
5795
+ maximumFractionDigits?: number;
5796
+ useGrouping?: boolean;
5797
+ prefix?: string;
5798
+ suffix?: string;
5799
+ negativeStyle?: 'minus' | 'parentheses';
5800
+ compact?: boolean;
5801
+ scale?: number;
5802
+ currency?: string;
5803
+ percentValueMode?: 'fraction' | 'whole';
5804
+ } | {
5805
+ type: 'date' | 'datetime';
5806
+ locale?: string;
5807
+ pattern?: string;
5808
+ relative?: boolean;
5809
+ timezone?: string;
5810
+ sourceTimezone?: string;
5811
+ prefix?: string;
5812
+ suffix?: string;
5813
+ } | {
5814
+ type: 'duration';
5815
+ inputUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
5816
+ outputStyle?: 'compact' | 'digital' | 'long';
5817
+ largestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
5818
+ smallestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
5819
+ maxUnits?: number;
5820
+ prefix?: string;
5821
+ suffix?: string;
5822
+ negativeStyle?: 'minus' | 'parentheses';
5823
+ } | {
5824
+ type: 'string';
5825
+ prefix?: string;
5826
+ suffix?: string;
5827
+ };
5828
+
5631
5829
  declare type SemaphorSemanticSourceRef = Extract<SemaphorSourceRef, {
5632
5830
  kind: 'semantic';
5633
5831
  }>;
@@ -5673,47 +5871,10 @@ declare type SemaphorSqlIntent = {
5673
5871
  inputs?: SemaphorInputBinding[];
5674
5872
  };
5675
5873
 
5676
- declare type SemaphorTimeGrain = 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';
5874
+ declare type SemaphorTimeGrain = (typeof SEMAPHOR_TIME_GRAINS)[number];
5677
5875
 
5678
5876
  declare type SemaphorTimeWindow = SemaphorRelativeTimeWindow | SemaphorAbsoluteTimeWindow;
5679
5877
 
5680
- declare type SemaphorValueFormat = {
5681
- type: 'number' | 'currency' | 'percent' | 'percentage' | 'scientific';
5682
- minimumFractionDigits?: number;
5683
- maximumFractionDigits?: number;
5684
- useGrouping?: boolean;
5685
- prefix?: string;
5686
- suffix?: string;
5687
- negativeStyle?: 'minus' | 'parentheses';
5688
- compact?: boolean;
5689
- scale?: number;
5690
- currency?: string;
5691
- percentValueMode?: 'fraction' | 'whole';
5692
- } | {
5693
- type: 'date' | 'datetime';
5694
- locale?: string;
5695
- pattern?: string;
5696
- relative?: boolean;
5697
- timezone?: string;
5698
- sourceTimezone?: string;
5699
- prefix?: string;
5700
- suffix?: string;
5701
- } | {
5702
- type: 'duration';
5703
- inputUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
5704
- outputStyle?: 'compact' | 'digital' | 'long';
5705
- largestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
5706
- smallestUnit?: 'millisecond' | 'second' | 'minute' | 'hour' | 'day';
5707
- maxUnits?: number;
5708
- prefix?: string;
5709
- suffix?: string;
5710
- negativeStyle?: 'minus' | 'parentheses';
5711
- } | {
5712
- type: 'string';
5713
- prefix?: string;
5714
- suffix?: string;
5715
- };
5716
-
5717
5878
  /**
5718
5879
  * Stable serializer for dashboard dirty checks.
5719
5880
  * This consolidates normalization + serialization into one call site, so
@@ -6477,6 +6638,7 @@ export declare type TDataColumn = {
6477
6638
  calculatedFormula?: CalculatedFieldFormula;
6478
6639
  derivedField?: SemaphorDerivedFieldDefinition;
6479
6640
  format?: FormatSpec;
6641
+ granularity?: TimeGranularity;
6480
6642
  sourceField?: string;
6481
6643
  aggregate?: AggregateFunction;
6482
6644
  };
@@ -6579,8 +6741,48 @@ export declare type TDynamicVisualIntent = {
6579
6741
  includesKpis: boolean;
6580
6742
  };
6581
6743
 
6744
+ declare const TEMPORAL_BUCKET_PRESETS: readonly ["week_of_short", "week_of_long", "quarter_short", "quarter_long", "fiscal_quarter_short", "fiscal_year"];
6745
+
6746
+ declare type TemporalBucketFormat = {
6747
+ type: 'temporal_bucket';
6748
+ presentation: TemporalBucketPresentation;
6749
+ };
6750
+
6751
+ declare type TemporalBucketMetadata = {
6752
+ kind: 'temporal_bucket';
6753
+ granularity: SemaphorTimeGrain;
6754
+ calendar: Pick<CalendarContext, 'tz' | 'weekStart' | 'fiscalCalendar'>;
6755
+ };
6756
+
6757
+ declare type TemporalBucketPresentation = {
6758
+ mode: 'auto';
6759
+ } | {
6760
+ mode: 'preset';
6761
+ preset: TemporalBucketPreset;
6762
+ } | {
6763
+ mode: 'pattern';
6764
+ pattern: string;
6765
+ };
6766
+
6767
+ declare type TemporalBucketPresentationTarget = {
6768
+ kind: 'field';
6769
+ fieldId: string;
6770
+ /** Distinguishes one semantic field used on both pivot axes. */
6771
+ role?: 'groupby' | 'pivotby';
6772
+ } | {
6773
+ kind: 'column';
6774
+ columnKey: string;
6775
+ } | {
6776
+ kind: 'matrix_axis';
6777
+ axisInstanceId: string;
6778
+ };
6779
+
6780
+ declare type TemporalBucketPreset = (typeof TEMPORAL_BUCKET_PRESETS)[number];
6781
+
6582
6782
  declare type TemporalPrecision = 'minute';
6583
6783
 
6784
+ declare type TemporalResultOwner = 'config' | 'freeform' | 'none';
6785
+
6584
6786
  export declare type TEvent = {
6585
6787
  type: 'success' | 'error' | 'info' | 'warning';
6586
6788
  message: any;
@@ -6779,7 +6981,7 @@ export declare interface TimeDrillStep {
6779
6981
  rollingWindow?: number;
6780
6982
  }
6781
6983
 
6782
- export declare type TimeGranularity = 'day' | 'week' | 'month' | 'quarter' | 'year' | 'hour' | 'minute' | 'second';
6984
+ export declare type TimeGranularity = SemaphorTimeGrain;
6783
6985
 
6784
6986
  /**
6785
6987
  * Inline filter definition stored on a card.
@@ -7268,6 +7470,8 @@ export declare function useCard(cardId: string): {
7268
7470
  pagination: PaginationMetadata | undefined;
7269
7471
  comparisonMetadata: MetricComparisonMetadataMap | undefined;
7270
7472
  resolvedPrimaryDateField: ResolvedPrimaryDateField | undefined;
7473
+ effectiveCardConfig: CardConfig | undefined;
7474
+ isCurrentQueryResult: boolean;
7271
7475
  };
7272
7476
 
7273
7477
  export declare function useCardSummary(card: TCard, options?: UseCardSummaryOptions): {
@@ -7583,7 +7787,7 @@ export declare function useTextFilterHook(filterId: string): {
7583
7787
  activeFilterValue: TFilterValue | undefined;
7584
7788
  isSearching: boolean;
7585
7789
  searchError: boolean;
7586
- resultSource: "both" | "server" | "local";
7790
+ resultSource: "server" | "both" | "local";
7587
7791
  };
7588
7792
 
7589
7793
  export declare function validateBriefingFormDraft(draft: BriefingFormDraft): BriefingFormValidationResult;