import type { FunnelManifest } from '../config/funnel.manifest.types.js'; import { type FunnelChoiceOption, type FunnelEmojiChoiceOption } from '../steps/step-contract.js'; import type { FunnelStepMeta } from '../steps/types.js'; import { type FunnelContractDiagnostic } from './funnel-contract-diagnostics.js'; export type FunnelContractValidationMode = 'legacy-read' | 'authoring' | 'publish'; export type FunnelManifestContractInput = Omit & { stepContractVersion?: number; }; export type FunnelManifestContractValidationOptions = { mode: FunnelContractValidationMode; }; export type FunnelStepContractProjectSnapshot = { manifest: FunnelManifest; componentMetaByKey: Record; registeredComponentKeys: readonly string[]; contentOptionsByStepId: Record; edgesByStepId: FunnelManifest['edgesByStepId']; experiments: FunnelManifest['experiments']; docs: { schemaVersion: number; bundleVersion: string; stepContractVersion: number; contractHash: string; missing: readonly string[]; changed: readonly string[]; conflicts: readonly string[]; }; }; export declare const validateFunnelManifestContract: (input: unknown, options: FunnelManifestContractValidationOptions) => FunnelContractDiagnostic[]; export declare const validateFunnelStepContractSnapshot: (input: FunnelStepContractProjectSnapshot, options: FunnelManifestContractValidationOptions) => FunnelContractDiagnostic[];