export declare const BOOKINGS_ACTIVITY_DATASET_ID = "bookings.activity"; export declare const BOOKINGS_TOTAL_WIDGET_ID = "bookings.widget.total"; export declare const BOOKINGS_MONTHLY_TREND_WIDGET_ID = "bookings.widget.monthly-trend"; export declare const BOOKINGS_STATUS_BREAKDOWN_WIDGET_ID = "bookings.widget.status-breakdown"; export declare const BOOKINGS_OVERVIEW_TEMPLATE_ID = "bookings.template.overview"; export declare const BOOKINGS_ACTIVITY_DATASET_FIELDS: readonly [{ readonly id: "createdAt"; readonly label: "Created at"; readonly description: "The instant at which the booking record was created."; readonly role: "dimension"; readonly valueType: "datetime"; readonly sensitivity: "internal"; readonly requiredScopes: readonly []; readonly aggregations: readonly ["minimum", "maximum"]; }, { readonly id: "status"; readonly label: "Status"; readonly description: "The current booking lifecycle status."; readonly role: "dimension"; readonly valueType: "string"; readonly sensitivity: "internal"; readonly requiredScopes: readonly []; readonly aggregations: readonly ["countDistinct"]; }, { readonly id: "sourceType"; readonly label: "Source"; readonly description: "The channel through which the booking originated."; readonly role: "dimension"; readonly valueType: "string"; readonly sensitivity: "internal"; readonly requiredScopes: readonly []; readonly aggregations: readonly ["countDistinct"]; }, { readonly id: "startDate"; readonly label: "Start date"; readonly description: "The booking-level service start date, when known."; readonly role: "dimension"; readonly valueType: "date"; readonly sensitivity: "internal"; readonly requiredScopes: readonly []; readonly aggregations: readonly ["minimum", "maximum"]; }, { readonly id: "endDate"; readonly label: "End date"; readonly description: "The booking-level service end date, when known."; readonly role: "dimension"; readonly valueType: "date"; readonly sensitivity: "internal"; readonly requiredScopes: readonly []; readonly aggregations: readonly ["minimum", "maximum"]; }, { readonly id: "pax"; readonly label: "Passengers"; readonly description: "The booking-level passenger count, when known."; readonly role: "measure"; readonly valueType: "integer"; readonly sensitivity: "internal"; readonly requiredScopes: readonly []; readonly aggregations: readonly ["sum", "average", "minimum", "maximum"]; }, { readonly id: "sellCurrency"; readonly label: "Sell currency"; readonly description: "The currency in which the booking was sold."; readonly role: "dimension"; readonly valueType: "string"; readonly sensitivity: "internal"; readonly requiredScopes: readonly []; readonly aggregations: readonly ["countDistinct"]; }]; export declare const bookingsReportingDeclaration: { readonly datasets: readonly [{ readonly id: "bookings.activity"; readonly version: 1; readonly label: "Booking activity"; readonly description: "Booking-owned activity facts for bounded operational reporting. Monetary amounts are intentionally excluded because sell currencies cannot be added without an explicit normalization policy."; readonly descriptor: { readonly grain: "One row per booking record in the current deployment."; readonly fields: readonly [{ readonly id: "createdAt"; readonly label: "Created at"; readonly description: "The instant at which the booking record was created."; readonly role: "dimension"; readonly valueType: "datetime"; readonly sensitivity: "internal"; readonly requiredScopes: readonly []; readonly aggregations: readonly ["minimum", "maximum"]; }, { readonly id: "status"; readonly label: "Status"; readonly description: "The current booking lifecycle status."; readonly role: "dimension"; readonly valueType: "string"; readonly sensitivity: "internal"; readonly requiredScopes: readonly []; readonly aggregations: readonly ["countDistinct"]; }, { readonly id: "sourceType"; readonly label: "Source"; readonly description: "The channel through which the booking originated."; readonly role: "dimension"; readonly valueType: "string"; readonly sensitivity: "internal"; readonly requiredScopes: readonly []; readonly aggregations: readonly ["countDistinct"]; }, { readonly id: "startDate"; readonly label: "Start date"; readonly description: "The booking-level service start date, when known."; readonly role: "dimension"; readonly valueType: "date"; readonly sensitivity: "internal"; readonly requiredScopes: readonly []; readonly aggregations: readonly ["minimum", "maximum"]; }, { readonly id: "endDate"; readonly label: "End date"; readonly description: "The booking-level service end date, when known."; readonly role: "dimension"; readonly valueType: "date"; readonly sensitivity: "internal"; readonly requiredScopes: readonly []; readonly aggregations: readonly ["minimum", "maximum"]; }, { readonly id: "pax"; readonly label: "Passengers"; readonly description: "The booking-level passenger count, when known."; readonly role: "measure"; readonly valueType: "integer"; readonly sensitivity: "internal"; readonly requiredScopes: readonly []; readonly aggregations: readonly ["sum", "average", "minimum", "maximum"]; }, { readonly id: "sellCurrency"; readonly label: "Sell currency"; readonly description: "The currency in which the booking was sold."; readonly role: "dimension"; readonly valueType: "string"; readonly sensitivity: "internal"; readonly requiredScopes: readonly []; readonly aggregations: readonly ["countDistinct"]; }]; readonly defaultLimit: 100; readonly maximumLimit: 1000; readonly defaultDateField: "createdAt"; }; readonly requiredScopes: readonly ["bookings:read"]; readonly runtime: { readonly entry: "@voyant-travel/bookings/reporting"; readonly export: "bookingsActivityDataset"; }; }]; readonly widgets: readonly [{ readonly id: "bookings.widget.total"; readonly version: 1; readonly label: "Total bookings"; readonly description: "Total booking records matching the report filters."; readonly datasetId: "bookings.activity"; readonly datasetVersion: 1; readonly query: { readonly select: readonly [{ readonly kind: "aggregate"; readonly operation: "count"; readonly as: "totalBookings"; }]; readonly filters: readonly []; readonly groupBy: readonly []; readonly orderBy: readonly []; readonly limit: 1; }; readonly visualization: { readonly type: "kpi"; readonly options: { readonly value: "totalBookings"; }; }; readonly defaultSize: { readonly width: 3; readonly height: 2; }; readonly minSize: { readonly width: 2; readonly height: 2; }; readonly maxSize: { readonly width: 6; readonly height: 4; }; }, { readonly id: "bookings.widget.monthly-trend"; readonly version: 1; readonly label: "Monthly booking trend"; readonly description: "Booking records created in each of the latest 24 represented months."; readonly datasetId: "bookings.activity"; readonly datasetVersion: 1; readonly query: { readonly select: readonly [{ readonly kind: "field"; readonly field: "createdAt"; readonly as: "month"; }, { readonly kind: "aggregate"; readonly operation: "count"; readonly as: "totalBookings"; }]; readonly filters: readonly []; readonly groupBy: readonly [{ readonly field: "createdAt"; readonly timeGrain: "month"; }]; readonly orderBy: readonly [{ readonly by: "month"; readonly direction: "descending"; }]; readonly limit: 24; }; readonly visualization: { readonly type: "line"; readonly options: { readonly category: "month"; readonly value: "totalBookings"; readonly reverseCategoryOrder: true; }; }; readonly defaultSize: { readonly width: 7; readonly height: 4; }; readonly minSize: { readonly width: 4; readonly height: 3; }; readonly maxSize: { readonly width: 12; readonly height: 8; }; }, { readonly id: "bookings.widget.status-breakdown"; readonly version: 1; readonly label: "Bookings by status"; readonly description: "Current booking records grouped by lifecycle status."; readonly datasetId: "bookings.activity"; readonly datasetVersion: 1; readonly query: { readonly select: readonly [{ readonly kind: "field"; readonly field: "status"; }, { readonly kind: "aggregate"; readonly operation: "count"; readonly as: "totalBookings"; }]; readonly filters: readonly []; readonly groupBy: readonly [{ readonly field: "status"; }]; readonly orderBy: readonly [{ readonly by: "totalBookings"; readonly direction: "descending"; }]; readonly limit: 20; }; readonly visualization: { readonly type: "pie"; readonly options: { readonly category: "status"; readonly value: "totalBookings"; }; }; readonly defaultSize: { readonly width: 5; readonly height: 4; }; readonly minSize: { readonly width: 4; readonly height: 3; }; readonly maxSize: { readonly width: 8; readonly height: 8; }; }]; readonly templates: readonly [{ readonly id: "bookings.template.overview"; readonly version: 1; readonly label: "Bookings overview"; readonly description: "A reusable overview of booking volume, trend, and lifecycle status."; readonly requirements: readonly [{ readonly kind: "dataset"; readonly id: "bookings.activity"; }, { readonly kind: "widget"; readonly id: "bookings.widget.total"; }, { readonly kind: "widget"; readonly id: "bookings.widget.monthly-trend"; }, { readonly kind: "widget"; readonly id: "bookings.widget.status-breakdown"; }]; readonly widgets: readonly [{ readonly id: "total-bookings"; readonly widgetId: "bookings.widget.total"; readonly widgetVersion: 1; readonly layout: { readonly x: 0; readonly y: 0; readonly width: 3; readonly height: 2; }; }, { readonly id: "monthly-booking-trend"; readonly widgetId: "bookings.widget.monthly-trend"; readonly widgetVersion: 1; readonly layout: { readonly x: 0; readonly y: 2; readonly width: 7; readonly height: 4; }; }, { readonly id: "booking-status-breakdown"; readonly widgetId: "bookings.widget.status-breakdown"; readonly widgetVersion: 1; readonly layout: { readonly x: 7; readonly y: 2; readonly width: 5; readonly height: 4; }; }]; }]; };