import type { FunnelChoiceDescriptor, FunnelStepKind, FunnelStepType } from '../steps/step-contract.js'; export type TemplateArchitectureVersion = number; export type FunnelBreakpointName = 'small' | 'medium' | 'large' | 'desktop-small'; export type FunnelManifestBreakpoint = { width: number; height: number; }; export type FunnelManifestBreakpoints = Record; export declare const DEFAULT_FUNNEL_BREAKPOINTS: { readonly small: { readonly width: 375; readonly height: 667; }; readonly medium: { readonly width: 393; readonly height: 852; }; readonly large: { readonly width: 402; readonly height: 874; }; readonly 'desktop-small': { readonly width: 1280; readonly height: 800; }; }; export type FunnelManifestStep = { id: string; path: string; filePath: `src/steps/${string}.tsx`; componentKey: string; type: FunnelStepType; kind?: FunnelStepKind; name: string; choice?: FunnelChoiceDescriptor; title: string; tags?: readonly string[]; assetIds?: readonly string[]; }; export type FunnelManifestImageAsset = { type: 'image'; src: string; width?: number; height?: number; preload?: 'idle' | false; }; export type FunnelManifestAsset = string | FunnelManifestImageAsset; export type FunnelManifestEntryPoint = { id: string; stepId: string; isDefault?: boolean; }; export type FunnelManifestEdge = { toStepId: string; conditionId?: string; }; export type FunnelManifestBranch = { id: string; name: string; sourceStepId: string; conditionId?: string; label?: string; tags?: readonly string[]; stepIds: readonly string[]; }; export type FunnelManifestExperimentVariant = { variantKey: string; label?: string; trafficPercent?: number; routeToStepId: string; }; export type FunnelManifestExperiment = { experimentId: string; stepId: string; variants: readonly FunnelManifestExperimentVariant[]; }; export type FunnelManifest = { templateArchitectureVersion: TemplateArchitectureVersion; stepContractVersion: number; meta: { title: string; description: string; }; viewport: { width: number; height: number; }; breakpoints?: FunnelManifestBreakpoints; assets: Record; steps: readonly FunnelManifestStep[]; entryPoints?: readonly FunnelManifestEntryPoint[]; edgesByStepId: Partial>; branches?: readonly FunnelManifestBranch[]; experiments: readonly FunnelManifestExperiment[]; }; export type FunnelStepComponentKey = string;