import type { FunnelAnswerKey } from '../sdk/userAnswers.js'; import { type FunnelContractDiagnostic } from '../validation/funnel-contract-diagnostics.js'; import { FUNNEL_STEP_CONTRACTS, type FunnelChoiceDescriptor, type FunnelChoiceOption, type FunnelEmojiChoiceOption, type FunnelStepChoiceContract, type FunnelStepType } from './step-contract.js'; import type { FunnelStepMeta } from './types.js'; export type FunnelChoiceStepType = { [Type in FunnelStepType]: (typeof FUNNEL_STEP_CONTRACTS)[Type] extends { readonly choice: FunnelStepChoiceContract; } ? Type : never; }[FunnelStepType]; export declare const FUNNEL_CHOICE_STEP_TYPES: readonly FunnelChoiceStepType[]; export type FunnelChoiceValue = string | string[]; export type FunnelChoiceCompletion = { answerKey: FunnelAnswerKey; value: FunnelChoiceValue; selected: Record; }; type FunnelChoiceStepMeta = Pick; type FunnelChoiceOptions = readonly (FunnelChoiceOption | FunnelEmojiChoiceOption)[]; export declare const MAX_FUNNEL_CHOICE_ITEMS = 4096; export declare const MAX_FUNNEL_CHOICE_IDENTIFIER_LENGTH = 256; export declare const MAX_FUNNEL_CHOICE_CONTENT_STRING_LENGTH = 4096; export type FunnelChoiceDescriptorParseResult = { ok: true; descriptor: FunnelChoiceDescriptor; contract: FunnelStepChoiceContract; stepType: FunnelChoiceStepType; } | { ok: false; issue: 'not-choice-step-type' | 'invalid-descriptor-shape' | 'invalid-answer-key' | 'invalid-allow-empty'; }; export declare const parseFunnelChoiceDescriptor: (stepType: unknown, choice: unknown) => FunnelChoiceDescriptorParseResult; export declare const buildChoiceCompletion: (stepMeta: FunnelChoiceStepMeta, options: FunnelChoiceOptions, ids: string | readonly string[]) => FunnelChoiceCompletion | FunnelContractDiagnostic; export {};