import { z } from "zod"; export declare const DATA_TABLE_WIDGET = "data-table"; export declare const DATA_CHART_WIDGET = "data-chart"; export declare const DATA_INSIGHTS_WIDGET = "data-insights"; export type DataWidgetKind = typeof DATA_TABLE_WIDGET | typeof DATA_CHART_WIDGET | typeof DATA_INSIGHTS_WIDGET; export type DataTableColumn = { key: string; label: string; align?: "left" | "right"; }; export type DataTableWidget = { title?: string; columns: DataTableColumn[]; rows: Array>; totalRows?: number; sampledRows?: number; truncated?: boolean; }; export type DataChartSeriesDefinition = { key: string; label: string; color?: string; }; export type DataWidgetActionIcon = "explore" | "camera" | "notebook"; export type DataWidgetAction = { label: string; href: string; icon?: DataWidgetActionIcon; }; export type DataWidgetChartAction = DataWidgetAction & { presentation?: "icon"; }; export type DataChartWidget = { type: "bar" | "line" | "area"; title?: string; layout?: "horizontal" | "vertical"; xAxisTitle?: string; yAxisTitle?: string; showValueLabels?: boolean; /** Total chart-body height in pixels, including content padding. */ contentHeight?: number; /** Inner chart-body padding in pixels. */ contentPadding?: number; /** Font family token used by chart labels. Defaults to the app's sans font. */ labelFontFamily?: "sans" | "serif" | "mono"; /** Chart-label size in pixels. Defaults to 11. */ labelFontSize?: number; axisTitleFontSize?: number; axisTitleFontWeight?: 400 | 500; valueLabelFontSize?: number; valueLabelFontWeight?: 400 | 500; valueAxisTickInterval?: number; /** Fraction of each horizontal-bar category slot left empty; defaults to the existing spacing. */ horizontalCategoryGapRatio?: number; xKey: string; series: DataChartSeriesDefinition[]; data: Array>; sampled?: boolean; truncated?: boolean; actions?: DataWidgetChartAction[]; }; export type DataWidgetDisplay = { title?: string; description?: string; primaryAction?: DataWidgetAction; sources?: DataWidgetDataSource[]; actions?: DataWidgetDisplayAction[]; }; export type DataWidgetDataSource = { id?: string; label: string; href?: string; }; export type DataWidgetDisplayAction = { id?: string; type: "link"; label: string; href: string; icon?: DataWidgetActionIcon; presentation?: "icon"; } | { id?: string; type: "copy"; label: string; text: string; }; export type DataWidgetResultMetadata = { widgetId?: string; title?: string; summary?: Record; display?: DataWidgetDisplay; }; export type DataTableWidgetResultInput = DataWidgetResultMetadata & { table: DataTableWidget; }; export type DataChartWidgetResultInput = DataWidgetResultMetadata & { chartSeries: DataChartWidget; }; export type DataInsightsWidgetResultInput = DataWidgetResultMetadata & ({ table: DataTableWidget; chartSeries?: DataChartWidget; } | { table?: DataTableWidget; chartSeries: DataChartWidget; }); export type DataTableWidgetResult = Omit & { widget: typeof DATA_TABLE_WIDGET; table: Input["table"]; chartSeries?: never; }; export type DataChartWidgetResult = Omit & { widget: typeof DATA_CHART_WIDGET; table?: never; chartSeries: Input["chartSeries"]; }; export type DataInsightsWidgetResult = Omit & { widget: typeof DATA_INSIGHTS_WIDGET; }; export type DataWidgetResult = DataTableWidgetResult | DataChartWidgetResult | DataInsightsWidgetResult; export declare const DATA_WIDGET_MAX_CHART_POINTS = 200; export declare function normalizeDataWidgetKind(value: unknown): DataWidgetKind | null; export declare function isDataTableWidget(value: unknown): value is DataTableWidget; export declare function isDataChartWidget(value: unknown): value is DataChartWidget; export declare function createDataTableWidgetResult(input: Input & { widget?: never; chartSeries?: never; }): DataTableWidgetResult; export declare function createDataChartWidgetResult(input: Input & { widget?: never; table?: never; }): DataChartWidgetResult; export declare function createDataInsightsWidgetResult(input: Input & { widget?: never; }): DataInsightsWidgetResult; export declare function normalizeDataWidgetResult(value: unknown): DataWidgetResult | null; export declare function isDataWidgetResult(value: unknown): value is DataWidgetResult; export declare const DATA_WIDGET_MAX_ROWS = 50; export declare function clampDataWidgetRows(result: DataWidgetResult): DataWidgetResult; export declare const dataTableWidgetSchema: z.ZodObject<{ title: z.ZodOptional; columns: z.ZodArray>; }, z.core.$loose>>; rows: z.ZodArray>; totalRows: z.ZodOptional; sampledRows: z.ZodOptional; truncated: z.ZodOptional; }, z.core.$loose>; export declare const dataChartWidgetSchema: z.ZodObject<{ type: z.ZodEnum<{ area: "area"; bar: "bar"; line: "line"; }>; title: z.ZodOptional; layout: z.ZodOptional>; xAxisTitle: z.ZodOptional; yAxisTitle: z.ZodOptional; showValueLabels: z.ZodOptional; contentHeight: z.ZodOptional; contentPadding: z.ZodOptional; labelFontFamily: z.ZodOptional>; labelFontSize: z.ZodOptional; axisTitleFontSize: z.ZodOptional; axisTitleFontWeight: z.ZodOptional, z.ZodLiteral<500>]>>; valueLabelFontSize: z.ZodOptional; valueLabelFontWeight: z.ZodOptional, z.ZodLiteral<500>]>>; valueAxisTickInterval: z.ZodOptional; horizontalCategoryGapRatio: z.ZodOptional; xKey: z.ZodString; series: z.ZodArray; }, z.core.$loose>>; data: z.ZodArray>; sampled: z.ZodOptional; truncated: z.ZodOptional; actions: z.ZodOptional>; presentation: z.ZodOptional>; }, z.core.$loose>>>; }, z.core.$loose>; export declare const dataTableWidgetResultSchema: z.ZodObject<{ widgetId: z.ZodOptional; title: z.ZodOptional; summary: z.ZodOptional>; display: z.ZodOptional; description: z.ZodOptional; primaryAction: z.ZodOptional>; }, z.core.$loose>>; sources: z.ZodOptional; label: z.ZodString; href: z.ZodOptional; }, z.core.$loose>>>; actions: z.ZodOptional; type: z.ZodLiteral<"link">; label: z.ZodString; href: z.ZodString; icon: z.ZodOptional>; presentation: z.ZodOptional>; }, z.core.$loose>, z.ZodObject<{ id: z.ZodOptional; type: z.ZodLiteral<"copy">; label: z.ZodString; text: z.ZodString; }, z.core.$loose>], "type">>>; }, z.core.$loose>>; widget: z.ZodLiteral<"data-table">; table: z.ZodObject<{ title: z.ZodOptional; columns: z.ZodArray>; }, z.core.$loose>>; rows: z.ZodArray>; totalRows: z.ZodOptional; sampledRows: z.ZodOptional; truncated: z.ZodOptional; }, z.core.$loose>; }, z.core.$loose>; export declare const dataChartWidgetResultSchema: z.ZodObject<{ widgetId: z.ZodOptional; title: z.ZodOptional; summary: z.ZodOptional>; display: z.ZodOptional; description: z.ZodOptional; primaryAction: z.ZodOptional>; }, z.core.$loose>>; sources: z.ZodOptional; label: z.ZodString; href: z.ZodOptional; }, z.core.$loose>>>; actions: z.ZodOptional; type: z.ZodLiteral<"link">; label: z.ZodString; href: z.ZodString; icon: z.ZodOptional>; presentation: z.ZodOptional>; }, z.core.$loose>, z.ZodObject<{ id: z.ZodOptional; type: z.ZodLiteral<"copy">; label: z.ZodString; text: z.ZodString; }, z.core.$loose>], "type">>>; }, z.core.$loose>>; widget: z.ZodLiteral<"data-chart">; chartSeries: z.ZodObject<{ type: z.ZodEnum<{ area: "area"; bar: "bar"; line: "line"; }>; title: z.ZodOptional; layout: z.ZodOptional>; xAxisTitle: z.ZodOptional; yAxisTitle: z.ZodOptional; showValueLabels: z.ZodOptional; contentHeight: z.ZodOptional; contentPadding: z.ZodOptional; labelFontFamily: z.ZodOptional>; labelFontSize: z.ZodOptional; axisTitleFontSize: z.ZodOptional; axisTitleFontWeight: z.ZodOptional, z.ZodLiteral<500>]>>; valueLabelFontSize: z.ZodOptional; valueLabelFontWeight: z.ZodOptional, z.ZodLiteral<500>]>>; valueAxisTickInterval: z.ZodOptional; horizontalCategoryGapRatio: z.ZodOptional; xKey: z.ZodString; series: z.ZodArray; }, z.core.$loose>>; data: z.ZodArray>; sampled: z.ZodOptional; truncated: z.ZodOptional; actions: z.ZodOptional>; presentation: z.ZodOptional>; }, z.core.$loose>>>; }, z.core.$loose>; }, z.core.$loose>; export declare const dataInsightsWidgetResultSchema: z.ZodObject<{ widgetId: z.ZodOptional; title: z.ZodOptional; summary: z.ZodOptional>; display: z.ZodOptional; description: z.ZodOptional; primaryAction: z.ZodOptional>; }, z.core.$loose>>; sources: z.ZodOptional; label: z.ZodString; href: z.ZodOptional; }, z.core.$loose>>>; actions: z.ZodOptional; type: z.ZodLiteral<"link">; label: z.ZodString; href: z.ZodString; icon: z.ZodOptional>; presentation: z.ZodOptional>; }, z.core.$loose>, z.ZodObject<{ id: z.ZodOptional; type: z.ZodLiteral<"copy">; label: z.ZodString; text: z.ZodString; }, z.core.$loose>], "type">>>; }, z.core.$loose>>; widget: z.ZodLiteral<"data-insights">; table: z.ZodOptional; columns: z.ZodArray>; }, z.core.$loose>>; rows: z.ZodArray>; totalRows: z.ZodOptional; sampledRows: z.ZodOptional; truncated: z.ZodOptional; }, z.core.$loose>>; chartSeries: z.ZodOptional; title: z.ZodOptional; layout: z.ZodOptional>; xAxisTitle: z.ZodOptional; yAxisTitle: z.ZodOptional; showValueLabels: z.ZodOptional; contentHeight: z.ZodOptional; contentPadding: z.ZodOptional; labelFontFamily: z.ZodOptional>; labelFontSize: z.ZodOptional; axisTitleFontSize: z.ZodOptional; axisTitleFontWeight: z.ZodOptional, z.ZodLiteral<500>]>>; valueLabelFontSize: z.ZodOptional; valueLabelFontWeight: z.ZodOptional, z.ZodLiteral<500>]>>; valueAxisTickInterval: z.ZodOptional; horizontalCategoryGapRatio: z.ZodOptional; xKey: z.ZodString; series: z.ZodArray; }, z.core.$loose>>; data: z.ZodArray>; sampled: z.ZodOptional; truncated: z.ZodOptional; actions: z.ZodOptional>; presentation: z.ZodOptional>; }, z.core.$loose>>>; }, z.core.$loose>>; }, z.core.$loose>; export declare const dataWidgetResultSchema: z.ZodUnion; title: z.ZodOptional; summary: z.ZodOptional>; display: z.ZodOptional; description: z.ZodOptional; primaryAction: z.ZodOptional>; }, z.core.$loose>>; sources: z.ZodOptional; label: z.ZodString; href: z.ZodOptional; }, z.core.$loose>>>; actions: z.ZodOptional; type: z.ZodLiteral<"link">; label: z.ZodString; href: z.ZodString; icon: z.ZodOptional>; presentation: z.ZodOptional>; }, z.core.$loose>, z.ZodObject<{ id: z.ZodOptional; type: z.ZodLiteral<"copy">; label: z.ZodString; text: z.ZodString; }, z.core.$loose>], "type">>>; }, z.core.$loose>>; widget: z.ZodLiteral<"data-table">; table: z.ZodObject<{ title: z.ZodOptional; columns: z.ZodArray>; }, z.core.$loose>>; rows: z.ZodArray>; totalRows: z.ZodOptional; sampledRows: z.ZodOptional; truncated: z.ZodOptional; }, z.core.$loose>; }, z.core.$loose>, z.ZodObject<{ widgetId: z.ZodOptional; title: z.ZodOptional; summary: z.ZodOptional>; display: z.ZodOptional; description: z.ZodOptional; primaryAction: z.ZodOptional>; }, z.core.$loose>>; sources: z.ZodOptional; label: z.ZodString; href: z.ZodOptional; }, z.core.$loose>>>; actions: z.ZodOptional; type: z.ZodLiteral<"link">; label: z.ZodString; href: z.ZodString; icon: z.ZodOptional>; presentation: z.ZodOptional>; }, z.core.$loose>, z.ZodObject<{ id: z.ZodOptional; type: z.ZodLiteral<"copy">; label: z.ZodString; text: z.ZodString; }, z.core.$loose>], "type">>>; }, z.core.$loose>>; widget: z.ZodLiteral<"data-chart">; chartSeries: z.ZodObject<{ type: z.ZodEnum<{ area: "area"; bar: "bar"; line: "line"; }>; title: z.ZodOptional; layout: z.ZodOptional>; xAxisTitle: z.ZodOptional; yAxisTitle: z.ZodOptional; showValueLabels: z.ZodOptional; contentHeight: z.ZodOptional; contentPadding: z.ZodOptional; labelFontFamily: z.ZodOptional>; labelFontSize: z.ZodOptional; axisTitleFontSize: z.ZodOptional; axisTitleFontWeight: z.ZodOptional, z.ZodLiteral<500>]>>; valueLabelFontSize: z.ZodOptional; valueLabelFontWeight: z.ZodOptional, z.ZodLiteral<500>]>>; valueAxisTickInterval: z.ZodOptional; horizontalCategoryGapRatio: z.ZodOptional; xKey: z.ZodString; series: z.ZodArray; }, z.core.$loose>>; data: z.ZodArray>; sampled: z.ZodOptional; truncated: z.ZodOptional; actions: z.ZodOptional>; presentation: z.ZodOptional>; }, z.core.$loose>>>; }, z.core.$loose>; }, z.core.$loose>, z.ZodObject<{ widgetId: z.ZodOptional; title: z.ZodOptional; summary: z.ZodOptional>; display: z.ZodOptional; description: z.ZodOptional; primaryAction: z.ZodOptional>; }, z.core.$loose>>; sources: z.ZodOptional; label: z.ZodString; href: z.ZodOptional; }, z.core.$loose>>>; actions: z.ZodOptional; type: z.ZodLiteral<"link">; label: z.ZodString; href: z.ZodString; icon: z.ZodOptional>; presentation: z.ZodOptional>; }, z.core.$loose>, z.ZodObject<{ id: z.ZodOptional; type: z.ZodLiteral<"copy">; label: z.ZodString; text: z.ZodString; }, z.core.$loose>], "type">>>; }, z.core.$loose>>; widget: z.ZodLiteral<"data-insights">; table: z.ZodOptional; columns: z.ZodArray>; }, z.core.$loose>>; rows: z.ZodArray>; totalRows: z.ZodOptional; sampledRows: z.ZodOptional; truncated: z.ZodOptional; }, z.core.$loose>>; chartSeries: z.ZodOptional; title: z.ZodOptional; layout: z.ZodOptional>; xAxisTitle: z.ZodOptional; yAxisTitle: z.ZodOptional; showValueLabels: z.ZodOptional; contentHeight: z.ZodOptional; contentPadding: z.ZodOptional; labelFontFamily: z.ZodOptional>; labelFontSize: z.ZodOptional; axisTitleFontSize: z.ZodOptional; axisTitleFontWeight: z.ZodOptional, z.ZodLiteral<500>]>>; valueLabelFontSize: z.ZodOptional; valueLabelFontWeight: z.ZodOptional, z.ZodLiteral<500>]>>; valueAxisTickInterval: z.ZodOptional; horizontalCategoryGapRatio: z.ZodOptional; xKey: z.ZodString; series: z.ZodArray; }, z.core.$loose>>; data: z.ZodArray>; sampled: z.ZodOptional; truncated: z.ZodOptional; actions: z.ZodOptional>; presentation: z.ZodOptional>; }, z.core.$loose>>>; }, z.core.$loose>>; }, z.core.$loose>]>;