@gooddata/sdk-model 11.54.0-alpha.6 → 11.54.0

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.
@@ -949,6 +949,49 @@ export declare function bucketsTotals(buckets: IBucket[]): ITotal[];
949
949
  */
950
950
  export declare function bucketTotals(bucket: IBucket): ITotal[];
951
951
 
952
+ /**
953
+ * Built-in cover page: report title and subtitle.
954
+ *
955
+ * @alpha
956
+ */
957
+ export declare const BuiltInReportPageLayoutCover: IReportPageLayout;
958
+
959
+ /**
960
+ * All built-in report pages served by the SPI. Built-ins are read-only: they cannot be
961
+ * edited or deleted, and they are never persisted on the backend.
962
+ *
963
+ * @alpha
964
+ */
965
+ export declare const BuiltInReportPageLayouts: readonly IReportPageLayout[];
966
+
967
+ /**
968
+ * Built-in section divider page.
969
+ *
970
+ * @alpha
971
+ */
972
+ export declare const BuiltInReportPageLayoutSection: IReportPageLayout;
973
+
974
+ /**
975
+ * Built-in content page with six visualizations and a text column on the left.
976
+ *
977
+ * @alpha
978
+ */
979
+ export declare const BuiltInReportPageLayoutViz6TextLeft: IReportPageLayout;
980
+
981
+ /**
982
+ * List of built-in report slot type names.
983
+ *
984
+ * @alpha
985
+ */
986
+ export declare const BuiltInReportSlotTypes: string[];
987
+
988
+ /**
989
+ * All semantic kinds a text slot can carry.
990
+ *
991
+ * @alpha
992
+ */
993
+ export declare const BuiltInReportTextSlotKinds: ReportTextSlotKind[];
994
+
952
995
  /**
953
996
  * List of built-in widget types. These type names are reserved and must not be used by custom widgets.
954
997
  *
@@ -2557,6 +2600,13 @@ export declare function getParameterAllowedValueTitle(allowedValue: IParameterAl
2557
2600
  */
2558
2601
  export declare function getParameterValueTitle(definition: IParameterDefinition, value: ParameterValue): string;
2559
2602
 
2603
+ /**
2604
+ * Collects the distinct `{{variable}}` names referenced in the text, in order of first occurrence.
2605
+ *
2606
+ * @alpha
2607
+ */
2608
+ export declare function getReportTextPlaceholders(text: string): string[];
2609
+
2560
2610
  /**
2561
2611
  * Returns count of selected elements
2562
2612
  * @alpha
@@ -11894,6 +11944,453 @@ export declare interface IRemotePluggableApplicationsRegistryV1 {
11894
11944
  uiModule?: IRemotePluggableApplicationModule;
11895
11945
  }
11896
11946
 
11947
+ /**
11948
+ * Report metadata object.
11949
+ *
11950
+ * @alpha
11951
+ */
11952
+ export declare interface IReport extends IReportDefinition, IAuditableDates, IAuditableUsers {
11953
+ ref: ObjRef;
11954
+ /**
11955
+ * When true, the object comes from a parent workspace and is not editable
11956
+ * in the current workspace.
11957
+ */
11958
+ isLocked?: boolean;
11959
+ }
11960
+
11961
+ /**
11962
+ * Text generated by AI at report-build time.
11963
+ *
11964
+ * @alpha
11965
+ */
11966
+ export declare interface IReportAiTextSource {
11967
+ type: "ai";
11968
+ /**
11969
+ * Instruction for the generator. Supports `{{variables}}`.
11970
+ */
11971
+ prompt: string;
11972
+ /**
11973
+ * Materialized generation result (markdown), stored so the report renders
11974
+ * deterministically without re-invoking AI. Absent until first generation.
11975
+ */
11976
+ content?: string;
11977
+ /**
11978
+ * ISO 8601 timestamp of the stored generation.
11979
+ */
11980
+ generatedAt?: string;
11981
+ }
11982
+
11983
+ /**
11984
+ * Fields shared by report definitions and persisted reports.
11985
+ *
11986
+ * @alpha
11987
+ */
11988
+ export declare interface IReportBase {
11989
+ title: string;
11990
+ description?: string;
11991
+ tags?: string[];
11992
+ /**
11993
+ * Reported period start, ISO 8601 date (YYYY-MM-DD), inclusive.
11994
+ *
11995
+ * @remarks
11996
+ * At execution time the period materializes as an absolute date filter on each
11997
+ * visualization slot's dateDataSet (lowest precedence, per-slot opt-out via
11998
+ * ignoreReportPeriod). Also available as `{{periodStart}}` in text.
11999
+ */
12000
+ periodStart: ReportDateString;
12001
+ /**
12002
+ * Reported period end, ISO 8601 date (YYYY-MM-DD), inclusive.
12003
+ */
12004
+ periodEnd: ReportDateString;
12005
+ /**
12006
+ * Content of the report. When created from a template the content is deep-copied
12007
+ * and NO reference to the template is kept — the report stays frozen while pages
12008
+ * and templates evolve.
12009
+ */
12010
+ content: IReportContent;
12011
+ /**
12012
+ * Values for variables declared in content.variables, keyed by variable name.
12013
+ */
12014
+ variableValues?: Record<string, string>;
12015
+ }
12016
+
12017
+ /**
12018
+ * Versioned content shared verbatim by report templates and reports.
12019
+ *
12020
+ * @alpha
12021
+ */
12022
+ export declare interface IReportContent {
12023
+ /**
12024
+ * Content model version, for stored-content evolution.
12025
+ */
12026
+ version: "1";
12027
+ /**
12028
+ * Ordered pages of the document.
12029
+ */
12030
+ pages: IReportContentPage[];
12031
+ /**
12032
+ * Content-level default filters; pages and slots may extend or override them.
12033
+ * The report period is NOT stored here — it is derived from periodStart/periodEnd
12034
+ * at execution time.
12035
+ */
12036
+ filters?: FilterContextItem[];
12037
+ /**
12038
+ * Custom variable declarations. Values live on the report
12039
+ * ({@link IReportBase.variableValues}).
12040
+ */
12041
+ variables?: IReportVariableDefinition[];
12042
+ }
12043
+
12044
+ /**
12045
+ * Page instance embedded in template/report content: a deep clone of a page body
12046
+ * plus its own identity.
12047
+ *
12048
+ * @remarks
12049
+ * Cloning a {@link IReportPageLayout} into content assigns the localIdentifier and regenerates
12050
+ * slot localIdentifiers (with the layout slotIds) so repeated use of one page stays unique.
12051
+ * Deliberately carries NO reference back to the source page — later page edits never
12052
+ * affect existing templates or reports.
12053
+ *
12054
+ * @alpha
12055
+ */
12056
+ export declare interface IReportContentPage extends IReportPageBody {
12057
+ /**
12058
+ * Identifier unique within the content; stable across template-to-report copy and reordering.
12059
+ */
12060
+ localIdentifier: string;
12061
+ }
12062
+
12063
+ /**
12064
+ * Payload for creating or updating a report.
12065
+ *
12066
+ * @alpha
12067
+ */
12068
+ export declare interface IReportDefinition extends IReportBase {
12069
+ type: "report";
12070
+ /**
12071
+ * Present when updating an existing report.
12072
+ */
12073
+ ref?: ObjRef;
12074
+ }
12075
+
12076
+ /**
12077
+ * Slot rendering an image.
12078
+ *
12079
+ * @alpha
12080
+ */
12081
+ export declare interface IReportImageSlot extends IReportSlotBase {
12082
+ type: "image";
12083
+ /**
12084
+ * Undefined = declared-but-empty slot.
12085
+ */
12086
+ source?: ReportImageSource;
12087
+ altText?: string;
12088
+ /**
12089
+ * How the image fills the slot area. Defaults to "contain".
12090
+ */
12091
+ fit?: "contain" | "cover" | "fill";
12092
+ }
12093
+
12094
+ /**
12095
+ * Fields common to all report layout nodes.
12096
+ *
12097
+ * @alpha
12098
+ */
12099
+ export declare interface IReportLayoutNodeBase {
12100
+ /**
12101
+ * Fractional weight of this node inside its parent (flex-grow semantics).
12102
+ * Defaults to 1. Example: sibling weights [2, 1] render a 2/3 + 1/3 split.
12103
+ */
12104
+ weight?: number;
12105
+ }
12106
+
12107
+ /**
12108
+ * A container splitting its area into children laid out along a direction.
12109
+ *
12110
+ * @alpha
12111
+ */
12112
+ export declare interface IReportLayoutSection extends IReportLayoutNodeBase {
12113
+ type: "section";
12114
+ /**
12115
+ * "row" lays children out horizontally, "column" vertically.
12116
+ */
12117
+ direction: "row" | "column";
12118
+ children: ReportPageLayoutNode[];
12119
+ }
12120
+
12121
+ /**
12122
+ * A leaf assigning its area to a slot. The slot fills the area completely.
12123
+ *
12124
+ * @alpha
12125
+ */
12126
+ export declare interface IReportLayoutSlotRef extends IReportLayoutNodeBase {
12127
+ type: "slotRef";
12128
+ /**
12129
+ * Local identifier of a slot in {@link IReportPageBody.slots}.
12130
+ * A slotId with no matching slot renders as an empty area.
12131
+ */
12132
+ slotId: string;
12133
+ }
12134
+
12135
+ /**
12136
+ * Body of a report page: geometry (flex split tree) plus the slots it places.
12137
+ *
12138
+ * @remarks
12139
+ * This is both the content of the standalone {@link IReportPageLayout} object and the shape
12140
+ * embedded in template/report content ({@link IReportContentPage}).
12141
+ *
12142
+ * There is no header/footer chrome: page title, description, footer, page numbers and
12143
+ * logos are ordinary slots in the layout tree (text slots with `{{pageNumber}}`/`{{totalPages}}`,
12144
+ * an image slot with `{{logo}}`). Every slot fills its layout area completely.
12145
+ *
12146
+ * @alpha
12147
+ */
12148
+ export declare interface IReportPageBody {
12149
+ /**
12150
+ * Editor hint only (template galleries, default styling, AI context).
12151
+ * Renderers must not branch layout logic on it — geometry always comes from `layout`.
12152
+ */
12153
+ kind?: "cover" | "section" | "content";
12154
+ /**
12155
+ * Root of the page layout tree.
12156
+ */
12157
+ layout: ReportPageLayoutNode;
12158
+ /**
12159
+ * All slots referenced by the layout, flat, keyed by localIdentifier.
12160
+ */
12161
+ slots: ReportSlot[];
12162
+ /**
12163
+ * Page-level filters: merged over content-level filters (a filter targeting the
12164
+ * same object replaces the inherited one); slot filters apply on top.
12165
+ */
12166
+ filters?: FilterContextItem[];
12167
+ }
12168
+
12169
+ /**
12170
+ * Validation issue found in a report page body.
12171
+ *
12172
+ * @alpha
12173
+ */
12174
+ export declare interface IReportPageBodyValidationIssue {
12175
+ severity: "error" | "warning";
12176
+ message: string;
12177
+ }
12178
+
12179
+ /**
12180
+ * Reusable report page metadata object.
12181
+ *
12182
+ * @alpha
12183
+ */
12184
+ export declare interface IReportPageLayout extends IReportPageLayoutDefinition, IAuditableDates, IAuditableUsers {
12185
+ ref: ObjRef;
12186
+ /**
12187
+ * When true, the object comes from a parent workspace and is not editable
12188
+ * in the current workspace.
12189
+ */
12190
+ isLocked?: boolean;
12191
+ /**
12192
+ * Predefined page shipped with the product, populated by the SPI. Never sent to or
12193
+ * stored on the backend; UI must disable deletion and editing of built-in pages.
12194
+ */
12195
+ isBuiltIn?: boolean;
12196
+ }
12197
+
12198
+ /**
12199
+ * Stored content of the reportPage entity.
12200
+ *
12201
+ * @alpha
12202
+ */
12203
+ export declare interface IReportPageLayoutContent extends IReportPageBody {
12204
+ /**
12205
+ * Content model version, for stored-content evolution.
12206
+ */
12207
+ version: "1";
12208
+ }
12209
+
12210
+ /**
12211
+ * Payload for creating or updating a report page.
12212
+ *
12213
+ * @alpha
12214
+ */
12215
+ export declare interface IReportPageLayoutDefinition {
12216
+ type: "reportPageLayout";
12217
+ /**
12218
+ * Present when updating an existing page.
12219
+ */
12220
+ ref?: ObjRef;
12221
+ title: string;
12222
+ description?: string;
12223
+ tags?: string[];
12224
+ content: IReportPageLayoutContent;
12225
+ }
12226
+
12227
+ /**
12228
+ * Structural base of every report slot.
12229
+ *
12230
+ * @remarks
12231
+ * Parsers written against this base can skip slot types introduced by a newer
12232
+ * content version instead of failing.
12233
+ *
12234
+ * @alpha
12235
+ */
12236
+ export declare interface IReportSlotBase {
12237
+ type: string;
12238
+ /**
12239
+ * Identifier unique within the page body. The layout tree references it, and it is
12240
+ * the join key when a report fills a template's slots. Regenerated when a page is
12241
+ * cloned into template content so repeated use of one page stays unique.
12242
+ */
12243
+ localIdentifier: string;
12244
+ /**
12245
+ * Present when the slot is an unfilled placeholder.
12246
+ */
12247
+ placeholder?: IReportSlotPlaceholder;
12248
+ }
12249
+
12250
+ /**
12251
+ * Metadata of a slot that is intentionally left unfilled in a report page or template.
12252
+ *
12253
+ * @alpha
12254
+ */
12255
+ export declare interface IReportSlotPlaceholder {
12256
+ /**
12257
+ * Authoring hint shown in the empty slot.
12258
+ */
12259
+ hint?: string;
12260
+ /**
12261
+ * When true, a report is not considered complete until this slot is filled.
12262
+ */
12263
+ required?: boolean;
12264
+ }
12265
+
12266
+ /**
12267
+ * Author-written text.
12268
+ *
12269
+ * @alpha
12270
+ */
12271
+ export declare interface IReportStaticTextSource {
12272
+ type: "static";
12273
+ /**
12274
+ * Markdown content with `{{variable}}` placeholders. Stored raw — placeholders are
12275
+ * resolved only at render/export time.
12276
+ */
12277
+ content: string;
12278
+ }
12279
+
12280
+ /**
12281
+ * Report template metadata object.
12282
+ *
12283
+ * @alpha
12284
+ */
12285
+ export declare interface IReportTemplate extends IReportTemplateDefinition, IAuditableDates, IAuditableUsers {
12286
+ ref: ObjRef;
12287
+ /**
12288
+ * When true, the object comes from a parent workspace and is not editable
12289
+ * in the current workspace.
12290
+ */
12291
+ isLocked?: boolean;
12292
+ }
12293
+
12294
+ /**
12295
+ * Payload for creating or updating a report template.
12296
+ *
12297
+ * @alpha
12298
+ */
12299
+ export declare interface IReportTemplateDefinition {
12300
+ type: "reportTemplate";
12301
+ /**
12302
+ * Present when updating an existing template.
12303
+ */
12304
+ ref?: ObjRef;
12305
+ title: string;
12306
+ description?: string;
12307
+ tags?: string[];
12308
+ content: IReportContent;
12309
+ }
12310
+
12311
+ /**
12312
+ * Slot rendering text.
12313
+ *
12314
+ * @alpha
12315
+ */
12316
+ export declare interface IReportTextSlot extends IReportSlotBase {
12317
+ type: "text";
12318
+ kind: ReportTextSlotKind;
12319
+ /**
12320
+ * Undefined = declared-but-empty slot.
12321
+ */
12322
+ source?: ReportTextSource;
12323
+ }
12324
+
12325
+ /**
12326
+ * A custom variable declared by report content and given a value by a report.
12327
+ *
12328
+ * @remarks
12329
+ * Referenced from text as `{{name}}`. Values come from {@link IReportBase.variableValues},
12330
+ * falling back to {@link IReportVariableDefinition.defaultValue}.
12331
+ *
12332
+ * @alpha
12333
+ */
12334
+ export declare interface IReportVariableDefinition {
12335
+ /**
12336
+ * Variable name as used inside the `{{...}}` marker. Must match /^[a-zA-Z][a-zA-Z0-9_]*$/.
12337
+ * Built-in names ({@link ReportBuiltInVariable}) are reserved.
12338
+ */
12339
+ name: string;
12340
+ /**
12341
+ * Human readable label shown in the editor.
12342
+ */
12343
+ title?: string;
12344
+ description?: string;
12345
+ /**
12346
+ * Value used when the report does not provide one. May not contain further
12347
+ * placeholders — there is no recursive expansion.
12348
+ */
12349
+ defaultValue?: string;
12350
+ }
12351
+
12352
+ /**
12353
+ * Slot rendering an insight, with its own filter context.
12354
+ *
12355
+ * @alpha
12356
+ */
12357
+ export declare interface IReportVisualizationSlot extends IReportSlotBase {
12358
+ type: "visualization";
12359
+ /**
12360
+ * Insight to render. Undefined = declared-but-empty slot; renderers show a placeholder.
12361
+ */
12362
+ insight?: ObjRef;
12363
+ /**
12364
+ * Optional title rendered above the visualization. Supports `{{variables}}`.
12365
+ */
12366
+ title?: string;
12367
+ showTitle?: boolean;
12368
+ /**
12369
+ * Visualization properties overriding the insight's own.
12370
+ */
12371
+ properties?: VisualizationProperties;
12372
+ /**
12373
+ * Slot-level filters, applied on top of the effective content and page filters.
12374
+ * A slot filter targeting the same object replaces the inherited one.
12375
+ */
12376
+ filters?: FilterContextItem[];
12377
+ /**
12378
+ * Content- and page-level filters this slot ignores (matched by display form / date dataset).
12379
+ */
12380
+ ignoredFilters?: IDashboardFilterReference[];
12381
+ /**
12382
+ * Date dataset the report's period (periodStart/periodEnd) is applied to as an
12383
+ * absolute date filter at execution time. Undefined = backend date-dataset
12384
+ * auto-resolution applies.
12385
+ */
12386
+ dateDataSet?: ObjRef;
12387
+ /**
12388
+ * When true, the implicit date filter derived from the report's period is not
12389
+ * applied to this slot.
12390
+ */
12391
+ ignoreReportPeriod?: boolean;
12392
+ }
12393
+
11897
12394
  /**
11898
12395
  * Attribute header specifies name and URI of the attribute element to which the calculated measure
11899
12396
  * values in the particular data view slice belong.
@@ -13926,6 +14423,104 @@ export declare function isRelativeUpperBoundedDateFilterBody(obj: unknown): obj
13926
14423
  */
13927
14424
  export declare function isRemotePluggableApplicationRegistryItem(app: PluggableApplicationRegistryItem): app is RemotePluggableApplicationRegistryItem;
13928
14425
 
14426
+ /**
14427
+ * Type-guard testing whether the provided object is an instance of {@link IReport}.
14428
+ *
14429
+ * @alpha
14430
+ */
14431
+ export declare function isReport(obj: unknown): obj is IReport;
14432
+
14433
+ /**
14434
+ * Type-guard testing whether the provided object is an instance of {@link IReportContent}.
14435
+ *
14436
+ * @alpha
14437
+ */
14438
+ export declare function isReportContentV1(obj: unknown): obj is IReportContent;
14439
+
14440
+ /**
14441
+ * Type-guard testing whether the provided object is an instance of {@link IReportDefinition}.
14442
+ *
14443
+ * @alpha
14444
+ */
14445
+ export declare function isReportDefinition(obj: unknown): obj is IReportDefinition;
14446
+
14447
+ /**
14448
+ * Type-guard testing whether the provided object is an instance of {@link IReportImageSlot}.
14449
+ *
14450
+ * @alpha
14451
+ */
14452
+ export declare function isReportImageSlot(obj: unknown): obj is IReportImageSlot;
14453
+
14454
+ /**
14455
+ * Type-guard testing whether the provided object is an instance of {@link IReportLayoutSection}.
14456
+ *
14457
+ * @alpha
14458
+ */
14459
+ export declare function isReportLayoutSection(obj: unknown): obj is IReportLayoutSection;
14460
+
14461
+ /**
14462
+ * Type-guard testing whether the provided object is an instance of {@link IReportLayoutSlotRef}.
14463
+ *
14464
+ * @alpha
14465
+ */
14466
+ export declare function isReportLayoutSlotRef(obj: unknown): obj is IReportLayoutSlotRef;
14467
+
14468
+ /**
14469
+ * Type-guard testing whether the provided object is an instance of {@link IReportPageLayout}.
14470
+ *
14471
+ * @alpha
14472
+ */
14473
+ export declare function isReportPageLayout(obj: unknown): obj is IReportPageLayout;
14474
+
14475
+ /**
14476
+ * Type-guard testing whether the provided object is an instance of {@link IReportPageLayoutContent}.
14477
+ *
14478
+ * @alpha
14479
+ */
14480
+ export declare function isReportPageLayoutContentV1(obj: unknown): obj is IReportPageLayoutContent;
14481
+
14482
+ /**
14483
+ * Type-guard testing whether the provided object is an instance of {@link IReportPageLayoutDefinition}.
14484
+ *
14485
+ * @alpha
14486
+ */
14487
+ export declare function isReportPageLayoutDefinition(obj: unknown): obj is IReportPageLayoutDefinition;
14488
+
14489
+ /**
14490
+ * Type-guard testing whether the provided object is an instance of {@link ReportSlot}.
14491
+ *
14492
+ * @alpha
14493
+ */
14494
+ export declare function isReportSlot(obj: unknown): obj is ReportSlot;
14495
+
14496
+ /**
14497
+ * Type-guard testing whether the provided object is an instance of {@link IReportTemplate}.
14498
+ *
14499
+ * @alpha
14500
+ */
14501
+ export declare function isReportTemplate(obj: unknown): obj is IReportTemplate;
14502
+
14503
+ /**
14504
+ * Type-guard testing whether the provided object is an instance of {@link IReportTemplateDefinition}.
14505
+ *
14506
+ * @alpha
14507
+ */
14508
+ export declare function isReportTemplateDefinition(obj: unknown): obj is IReportTemplateDefinition;
14509
+
14510
+ /**
14511
+ * Type-guard testing whether the provided object is an instance of {@link IReportTextSlot}.
14512
+ *
14513
+ * @alpha
14514
+ */
14515
+ export declare function isReportTextSlot(obj: unknown): obj is IReportTextSlot;
14516
+
14517
+ /**
14518
+ * Type-guard testing whether the provided object is an instance of {@link IReportVisualizationSlot}.
14519
+ *
14520
+ * @alpha
14521
+ */
14522
+ export declare function isReportVisualizationSlot(obj: unknown): obj is IReportVisualizationSlot;
14523
+
13929
14524
  /**
13930
14525
  * Type-guard testing whether the provided object is an instance of {@link IResultAttributeHeader}.
13931
14526
  *
@@ -17164,6 +17759,18 @@ export declare function newAbsoluteDashboardDateFilter(from: DateString, to: Dat
17164
17759
  */
17165
17760
  export declare function newAbsoluteDateFilter(dateDataSet: ObjRef | Identifier, from: string, to: string, localIdentifier?: string, emptyValueHandling?: EmptyValues): IAbsoluteDateFilter;
17166
17761
 
17762
+ /**
17763
+ * Creates an ad-hoc report definition not based on any template.
17764
+ *
17765
+ * @alpha
17766
+ */
17767
+ export declare function newAdHocReportDefinition(options: {
17768
+ title: string;
17769
+ periodStart: ReportDateString;
17770
+ periodEnd: ReportDateString;
17771
+ pages?: IReportContentPage[];
17772
+ }, modifications?: Partial<Omit<IReportDefinition, "type" | "title" | "periodStart" | "periodEnd" | "content">>): IReportDefinition;
17773
+
17167
17774
  /**
17168
17775
  * Creates a new all time date filter. This filter is used to indicate that there should be no filtering on the dates.
17169
17776
  *
@@ -17554,6 +18161,54 @@ export declare function newRelativeDashboardDateFilter(granularity: DateFilterGr
17554
18161
  */
17555
18162
  export declare function newRelativeDateFilter(dateDataSet: ObjRef | Identifier, granularity: DateAttributeGranularity, from: number, to: number, localIdentifier?: string, boundedFilter?: IUpperBoundedFilter | ILowerBoundedFilter, emptyValueHandling?: EmptyValues): IRelativeDateFilter;
17556
18163
 
18164
+ /**
18165
+ * Creates report content from page instances.
18166
+ *
18167
+ * @alpha
18168
+ */
18169
+ export declare function newReportContent(pages: IReportContentPage[], modifications?: Partial<Omit<IReportContent, "version" | "pages">>): IReportContent;
18170
+
18171
+ /**
18172
+ * Clones a report page into a page instance embeddable in template/report content.
18173
+ *
18174
+ * @remarks
18175
+ * The body is deep-copied and detached from the source page — no reference is kept.
18176
+ * Slot localIdentifiers (and the layout slotIds pointing at them) are prefixed with the
18177
+ * page-instance localIdentifier, so one page used repeatedly in the same content stays unique.
18178
+ *
18179
+ * @alpha
18180
+ */
18181
+ export declare function newReportContentPageFromLayout(page: IReportPageLayout | IReportPageLayoutDefinition, localIdentifier?: string): IReportContentPage;
18182
+
18183
+ /**
18184
+ * Creates a report definition from a template.
18185
+ *
18186
+ * @remarks
18187
+ * The template content is deep-copied; no reference to the template is kept, so the
18188
+ * report stays frozen while the template evolves.
18189
+ *
18190
+ * @alpha
18191
+ */
18192
+ export declare function newReportDefinitionFromTemplate(template: IReportTemplate | IReportTemplateDefinition, options: {
18193
+ title: string;
18194
+ periodStart: ReportDateString;
18195
+ periodEnd: ReportDateString;
18196
+ }, modifications?: Partial<Omit<IReportDefinition, "type" | "title" | "periodStart" | "periodEnd" | "content">>): IReportDefinition;
18197
+
18198
+ /**
18199
+ * Creates a new report page definition.
18200
+ *
18201
+ * @alpha
18202
+ */
18203
+ export declare function newReportPageLayoutDefinition(title: string, body: IReportPageBody, modifications?: Partial<Omit<IReportPageLayoutDefinition, "type" | "title" | "content">>): IReportPageLayoutDefinition;
18204
+
18205
+ /**
18206
+ * Creates a new report template definition.
18207
+ *
18208
+ * @alpha
18209
+ */
18210
+ export declare function newReportTemplateDefinition(title: string, content: IReportContent, modifications?: Partial<Omit<IReportTemplateDefinition, "type" | "title" | "content">>): IReportTemplateDefinition;
18211
+
17557
18212
  /**
17558
18213
  * Creates a new total.
17559
18214
  *
@@ -17664,7 +18319,7 @@ export declare type ObjectPermissionsObjectKind = "attribute" | "fact" | "label"
17664
18319
  *
17665
18320
  * @public
17666
18321
  */
17667
- export declare type ObjectType = "measure" | "fact" | "attribute" | "computedAttribute" | "displayForm" | "dataSet" | "tag" | "insight" | "variable" | "analyticalDashboard" | "theme" | "colorPalette" | "workspaceTheme" | "workspaceColorPalette" | "filterContext" | "dashboardPlugin" | "attributeHierarchy" | "user" | "userGroup" | "dateHierarchyTemplate" | "dateAttributeHierarchy" | "exportDefinition" | "automation" | "filterView" | "workspaceDataFilter" | "workspaceDataFilterSetting" | "userDataFilter" | "notificationChannel" | "memoryItem" | "parameter";
18322
+ export declare type ObjectType = "measure" | "fact" | "attribute" | "computedAttribute" | "displayForm" | "dataSet" | "tag" | "insight" | "variable" | "analyticalDashboard" | "theme" | "colorPalette" | "workspaceTheme" | "workspaceColorPalette" | "filterContext" | "dashboardPlugin" | "attributeHierarchy" | "user" | "userGroup" | "dateHierarchyTemplate" | "dateAttributeHierarchy" | "exportDefinition" | "automation" | "filterView" | "workspaceDataFilter" | "workspaceDataFilterSetting" | "userDataFilter" | "notificationChannel" | "memoryItem" | "parameter" | "reportPageLayout" | "reportTemplate" | "report";
17668
18323
 
17669
18324
  /**
17670
18325
  * Model object reference.
@@ -17963,6 +18618,88 @@ export declare type RemotePluggableApplicationRegistryItem = IRemotePluggableApp
17963
18618
  */
17964
18619
  export declare type RemotePluggableApplicationsRegistry = IRemotePluggableApplicationsRegistryV1;
17965
18620
 
18621
+ /**
18622
+ * Variables resolved by the rendering runtime; they are never declared or stored.
18623
+ *
18624
+ * @remarks
18625
+ * Referenced from report text as `{{name}}`. Custom variable names must not collide with these;
18626
+ * on collision the built-in wins.
18627
+ *
18628
+ * @alpha
18629
+ */
18630
+ export declare type ReportBuiltInVariable = "reportTitle" | "periodStart" | "periodEnd" | "workspaceName" | "generatedAt" | "pageNumber" | "totalPages" | "logo";
18631
+
18632
+ /**
18633
+ * All built-in report variable names.
18634
+ *
18635
+ * @alpha
18636
+ */
18637
+ export declare const ReportBuiltInVariables: ReportBuiltInVariable[];
18638
+
18639
+ /**
18640
+ * Convenience accessor for a report or template page by its localIdentifier.
18641
+ *
18642
+ * @alpha
18643
+ */
18644
+ export declare function reportContentPage(reportOrTemplate: IReport | IReportDefinition | IReportTemplate | IReportTemplateDefinition, pageLocalIdentifier: string): IReportContentPage | undefined;
18645
+
18646
+ /**
18647
+ * ISO 8601 calendar date (YYYY-MM-DD).
18648
+ *
18649
+ * @alpha
18650
+ */
18651
+ export declare type ReportDateString = string;
18652
+
18653
+ /**
18654
+ * What an image slot displays.
18655
+ *
18656
+ * @alpha
18657
+ */
18658
+ export declare type ReportImageSource = {
18659
+ type: "url";
18660
+ /**
18661
+ * Image URL. Supports `{{variables}}` — a logo slot uses `{{logo}}`.
18662
+ */
18663
+ url: string;
18664
+ } | {
18665
+ type: "asset";
18666
+ /**
18667
+ * Reference to a backend-managed asset.
18668
+ */
18669
+ ref: ObjRef;
18670
+ };
18671
+
18672
+ /**
18673
+ * Node of a report page layout: a recursive row/column split tree (flexbox semantics)
18674
+ * over a fixed page. Leaves assign their area to slots; the tree carries only geometry,
18675
+ * slot content lives in {@link IReportPageBody.slots}.
18676
+ *
18677
+ * @alpha
18678
+ */
18679
+ export declare type ReportPageLayoutNode = IReportLayoutSection | IReportLayoutSlotRef;
18680
+
18681
+ /**
18682
+ * All slot types of report content version 1.
18683
+ *
18684
+ * @alpha
18685
+ */
18686
+ export declare type ReportSlot = IReportVisualizationSlot | IReportTextSlot | IReportImageSlot;
18687
+
18688
+ /**
18689
+ * Semantic kind of a text slot. Drives default typography/styling and AI context only —
18690
+ * never geometry (geometry always comes from the layout tree).
18691
+ *
18692
+ * @alpha
18693
+ */
18694
+ export declare type ReportTextSlotKind = "title" | "subtitle" | "sectionTitle" | "description" | "summary" | "body" | "custom";
18695
+
18696
+ /**
18697
+ * Where the text of a text slot comes from.
18698
+ *
18699
+ * @alpha
18700
+ */
18701
+ export declare type ReportTextSource = IReportStaticTextSource | IReportAiTextSource;
18702
+
17966
18703
  /**
17967
18704
  * Entitlements and their values that must be set for the pluggable application to be accessible for
17968
18705
  * the currently logged user.
@@ -17997,6 +18734,14 @@ export declare type RequiredSettings = Condition<Partial<IPermanentSettings | IF
17997
18734
  */
17998
18735
  export declare type RequiredWorkspacePermissions = Condition<Partial<IPluggableApplicationWorkspacePermissions>>;
17999
18736
 
18737
+ /**
18738
+ * Replaces `{{variable}}` markers with values. Markers with no value are left as-is.
18739
+ * Values are inserted verbatim — there is no recursive expansion.
18740
+ *
18741
+ * @alpha
18742
+ */
18743
+ export declare function resolveReportTextPlaceholders(text: string, values: Record<string, string>): string;
18744
+
18000
18745
  /**
18001
18746
  * Resolves a dashboard timezone value to a concrete IANA timezone ID: the {@link BROWSER_DETECTED}
18002
18747
  * sentinel resolves to the browser/runtime timezone, any other value is returned as-is.
@@ -18358,6 +19103,16 @@ export declare type UserDataFilterDefinition = IUserDataFilterDefinition | IUser
18358
19103
  */
18359
19104
  export declare function userFullName(user: IUser): string | undefined;
18360
19105
 
19106
+ /**
19107
+ * Validates the structural invariants of a page body the type system cannot express:
19108
+ * slot localIdentifiers are unique, layout weights are positive, every slot is placed
19109
+ * by the layout, and every layout slotId resolves (unresolved ones are warnings —
19110
+ * they render as empty areas).
19111
+ *
19112
+ * @alpha
19113
+ */
19114
+ export declare function validateReportPageBody(body: IReportPageBody): IReportPageBodyValidationIssue[];
19115
+
18361
19116
  /**
18362
19117
  * Builder for virtual arithmetic measures.
18363
19118
  *