export type ScenarioInput = Record; export type OutputField = { key: string; name: string; type: string; source: string; value: unknown; }; export type ResultField = { key: string; name: string; type: string; required?: boolean; options?: unknown[]; fields?: ResultField[]; items?: Omit; }; export type ResultSchema = { fields: ResultField[]; }; export type NodeField = { key: string; name: string; type: string; required: boolean; options: unknown[]; validation: Record; }; export type PresentationField = { key: string; label: string; kind: 'text' | 'image'; value: unknown; }; export type NodePresentation = { summary: PresentationField[]; items: Array<{ fields: PresentationField[]; }>; opening?: { title: string; content: string; }; }; export type DimensionValue = { value_key: string; name: string; weight: number; hot: boolean; }; export type DimensionState = { dim_key: string; name: string; values: DimensionValue[]; }; export type ScriptOption = { option_key: string; label: string; }; export type ScriptProduct = { sku_code: string; product_name: string; }; export type ScriptItem = { script_key: string; name: string; script_type: string; content: string; dimension_value_key?: string; weight?: number; confirm_threshold?: number; show_threshold?: number; options?: ScriptOption[]; products?: ScriptProduct[]; feedback: boolean; required: boolean; multiple: boolean; }; export type StageForm = { fields: NodeField[]; }; export type StageState = { stage_key: string; name: string; purpose: string; dimensions: DimensionState[]; scripts: ScriptItem[]; fallback?: string; form?: StageForm; screening_required: boolean; can_next: boolean; can_next_reason?: string; }; export type NodeView = { node_key: string; type: string; title: string; content: string; fields?: NodeField[]; presentation?: NodePresentation; stage?: StageState; outputs?: unknown[]; }; export type ScenarioState = { run_id: number; external_ref: string; status: string; final_result?: Record | null; result_schema: ResultSchema; session_token?: string; node: NodeView; outputs: OutputField[]; }; export type SDKEvent = 'ready' | 'node_change' | 'form_submit' | 'finish' | 'error'; export type CreateOptions = { baseURL?: string; publicKey: string; scenarioKey: string; sopId?: number; input?: ScenarioInput; initialValues?: ScenarioInput; externalRef?: string; }; export type FinishOptions = { result?: string; finalResult?: Record | null; }; export type ScriptAnswer = { script_key: string; option_keys?: string[]; value?: string; }; export type AnswerOptions = { scriptKey?: string; optionKeys?: string[]; value?: string; scriptAnswers?: ScriptAnswer[]; dimensionSelects?: Record; answers?: ScenarioInput; dimensionValueKey?: string; selected?: boolean; }; export declare class SalesScenario { private readonly options; private token; private state?; private handlers; constructor(options: CreateOptions); start(): Promise; getState(): ScenarioState; getStage(): StageState; getCurrentNode(): Promise; /** Answer stage questions without advancing. Answer locally on the client and submit the whole stage once: pass every answered script in scriptAnswers together with dimensionSelects and the content form in answers. */ answer(options?: AnswerOptions): Promise; submit(values: ScenarioInput): Promise; next(): Promise; back(): Promise; feedback(scriptKey: string, feedbackType: 'like' | 'report' | 'unreasonable', note?: string): Promise; finish(options?: FinishOptions): Promise; reset(): Promise; destroy(): void; on(event: SDKEvent, handler: (payload: unknown) => void): () => boolean; private update; private setState; private emit; private request; } export declare function create(options: CreateOptions): SalesScenario;