import type { z } from 'zod';
import type { ActionStep } from './actions/types';
import type { CanvasConfigResponseZ, CanvasThemeConfigZ, LauncherConfigZ, TileZ } from './config/schema';
import type { ActivationConfig } from './decisions/types';
export { SDK_VERSION } from './version';
/**
 * SDK schema version in Major.Minor format (e.g., "2.0", "2.1").
 * Used for compatibility checking between SDK and backend configs.
 * Sent in X-SDK-Schema-Version header.
 *
 * Bump rules:
 * - Major: Breaking changes (field removal, type changes)
 * - Minor: Backwards-compatible additions (new optional fields)
 *
 * @since 2.0.0
 */
export declare const SDK_SCHEMA_VERSION = "2.0";
export type { ActionStep } from './actions/types';
/**
 * All available block types organized by category
 */
export type NotificationBlockType = 'alert' | 'success' | 'warning' | 'info' | 'error';
export type MediaBlockType = 'video' | 'gallery' | 'code';
export type InteractiveBlockType = 'form' | 'rating' | 'progress' | 'survey' | 'checklist';
export type DataBlockType = 'stats' | 'comparison' | 'chart' | 'table';
export type LegacyBlockType = 'text' | 'metric' | 'chatbot' | 'embed';
/**
 * Union of all block types
 */
export type BlockType = NotificationBlockType | MediaBlockType | InteractiveBlockType | DataBlockType | LegacyBlockType | 'custom';
export interface NotificationContentBase {
    title: string;
    body?: string;
    dismissible?: boolean;
    icon?: string;
    timestamp?: string;
}
export interface AlertContent extends NotificationContentBase {
    type: 'alert';
    severity?: 'low' | 'medium' | 'high' | 'critical';
}
export interface SuccessContent extends NotificationContentBase {
    type: 'success';
    confetti?: boolean;
}
export interface WarningContent extends NotificationContentBase {
    type: 'warning';
    countdown?: number;
}
export interface InfoContent extends NotificationContentBase {
    type: 'info';
    learnMoreUrl?: string;
}
export interface ErrorContent extends NotificationContentBase {
    type: 'error';
    errorCode?: string;
    retryable?: boolean;
}
export type NotificationContent = AlertContent | SuccessContent | WarningContent | InfoContent | ErrorContent;
export interface VideoContent {
    type: 'video';
    src: string;
    provider?: 'youtube' | 'vimeo' | 'custom';
    poster?: string;
    autoplay?: boolean;
    muted?: boolean;
    loop?: boolean;
    aspectRatio?: '16:9' | '4:3' | '1:1' | '9:16';
}
export interface GalleryContent {
    type: 'gallery';
    images: Array<{
        src: string;
        alt?: string;
        caption?: string;
    }>;
    layout?: 'carousel' | 'grid' | 'masonry';
    columns?: 2 | 3 | 4;
}
export interface CodeContent {
    type: 'code';
    code: string;
    language?: string;
    lineNumbers?: boolean;
    highlightLines?: number[];
    copyable?: boolean;
    filename?: string;
}
export type MediaContent = VideoContent | GalleryContent | CodeContent;
export interface FormField {
    id: string;
    type: 'text' | 'email' | 'select' | 'checkbox' | 'radio' | 'textarea';
    label: string;
    placeholder?: string;
    required?: boolean;
    options?: Array<{
        value: string;
        label: string;
    }>;
    defaultValue?: string | boolean;
}
export interface FormContent {
    type: 'form';
    fields: FormField[];
    submitLabel?: string;
    submitActionId?: string;
}
export interface RatingContent {
    type: 'rating';
    variant: 'stars' | 'thumbs' | 'nps' | 'emoji';
    question?: string;
    maxValue?: number;
    submitActionId?: string;
}
export interface ProgressContent {
    type: 'progress';
    variant: 'bar' | 'steps' | 'circular';
    value: number;
    max?: number;
    steps?: Array<{
        label: string;
        completed?: boolean;
    }>;
    showPercentage?: boolean;
}
export interface SurveyChoice {
    id: string;
    label: string;
    icon?: string;
}
export interface SurveyContent {
    type: 'survey';
    question: string;
    choices: SurveyChoice[];
    multiSelect?: boolean;
    showResults?: boolean;
    results?: Record<string, number>;
    submitActionId?: string;
}
export interface ChecklistItem {
    id: string;
    title: string;
    description?: string;
    href?: string;
    linkLabel?: string;
    completed?: boolean;
}
export interface ChecklistContent {
    type: 'checklist';
    items: ChecklistItem[];
    title?: string;
    showProgress?: boolean;
}
export type InteractiveContent = FormContent | RatingContent | ProgressContent | SurveyContent | ChecklistContent;
export interface TrendIndicator {
    direction: 'up' | 'down' | 'neutral';
    value: string;
    timeframe?: string;
}
export interface StatsContent {
    type: 'stats';
    value: string;
    label: string;
    trend?: TrendIndicator;
    sparkline?: number[];
    prefix?: string;
    suffix?: string;
}
export interface ComparisonItem {
    label: string;
    value: string | number;
    highlight?: boolean;
    icon?: string;
}
export interface ComparisonContent {
    type: 'comparison';
    items: ComparisonItem[];
    layout?: 'grid' | 'list' | 'table';
    columns?: 2 | 3 | 4;
    highlightBest?: boolean;
}
export interface ChartContent {
    type: 'chart';
    chartType: 'bar' | 'line' | 'pie' | 'donut';
    data: Array<{
        label: string;
        value: number;
        color?: string;
    }>;
    showLegend?: boolean;
    showLabels?: boolean;
    animated?: boolean;
}
export interface TableColumn {
    key: string;
    label: string;
    sortable?: boolean;
    width?: string;
}
export interface TableContent {
    type: 'table';
    columns: TableColumn[];
    rows: Array<Record<string, string | number>>;
    sortable?: boolean;
    scrollable?: boolean;
    maxHeight?: string;
}
export type DataContent = StatsContent | ComparisonContent | ChartContent | TableContent;
export type { ActivationConfig, DecisionStrategy, RouteFilter } from './decisions/types';
/**
 * Full tile configuration. Inferred from TileZ in config/schema.ts.
 * The `activation` field is overridden with the generic-typed ActivationConfig
 * from decisions/types.ts since Zod can't express TypeScript generics.
 */
export type TileConfig = Omit<z.infer<typeof TileZ>, 'activation'> & {
    activation?: ActivationConfig;
};
/** Theme configuration. Inferred from CanvasThemeConfigZ in config/schema.ts. */
export type CanvasThemeConfig = z.infer<typeof CanvasThemeConfigZ>;
/** Launcher button configuration. Inferred from LauncherConfigZ in config/schema.ts. */
export type LauncherConfig = z.infer<typeof LauncherConfigZ>;
/**
 * Canvas configuration response.
 * Inferred from CanvasConfigResponseZ, with actions narrowed to ActionStep[].
 * (Zod uses z.any() for actions since the union is resolved at schema generation time.)
 */
export type CanvasConfigResponse = Omit<z.infer<typeof CanvasConfigResponseZ>, 'actions' | 'tiles'> & {
    tiles: TileConfig[];
    actions: ActionStep[];
};
export type CanvasConfigFetcher = () => Promise<CanvasConfigResponse>;
