import type { FunnelManifestExperiment } from './funnel.manifest.types.js'; export type FunnelExperimentStatus = 'draft' | 'running' | 'paused' | 'stopped'; export type FunnelRouteExperimentType = 'paywall' | 'step'; type FunnelExperimentBase = { id: string; name: string; status?: FunnelExperimentStatus; launchDate: string; }; type FunnelRouteExperimentVariantDefinition = { variantKey?: string; stepId: string; label?: string; trafficPercent: number; }; type FunnelPricingExperimentVariantDefinition = { variantKey?: string; offerSetId: string; label?: string; trafficPercent: number; }; export type FunnelRouteExperimentDefinition = FunnelExperimentBase & { type: FunnelRouteExperimentType; stepId?: string; control: FunnelRouteExperimentVariantDefinition; variant: FunnelRouteExperimentVariantDefinition; variants?: readonly FunnelRouteExperimentVariantDefinition[]; }; export type FunnelPricingExperimentDefinition = FunnelExperimentBase & { type: 'pricing'; paywallStepId: string; control: FunnelPricingExperimentVariantDefinition; variant: FunnelPricingExperimentVariantDefinition; variants?: readonly FunnelPricingExperimentVariantDefinition[]; }; export type FunnelExperimentDefinition = FunnelRouteExperimentDefinition | FunnelPricingExperimentDefinition; export type PaywallExperimentDefinition = FunnelRouteExperimentDefinition & { type: 'paywall'; }; export declare const defineFunnelExperiments: (experiments: T) => T; export declare const toManifestExperiments: (experiments: readonly FunnelExperimentDefinition[]) => FunnelManifestExperiment[]; export {};