/** * questions/domain/question.schema — canonical home for question value types and schemas. * * Defines the public structured shape consumed by frontend renderers and MCP * elicitation dispatch, plus internal generator, persistence, and delivery * envelopes used across the questions capability. * * IND-547: canonical question schema in the questions domain layer. */ import { z } from "zod"; export declare const QuestionOptionSchema: z.ZodObject<{ /** Display text. Suffix " (Recommended)" on the safest path; list it first. */ label: z.ZodString; /** Explains the consequence of choosing this option, not just its definition. */ description: z.ZodString; }, "strip", z.ZodTypeAny, { label: string; description: string; }, { label: string; description: string; }>; export declare const QuestionSchema: z.ZodObject<{ /** ≤12 chars. Noun of the decision domain — e.g. "Stage", "Timing", "Role". */ title: z.ZodString; /** ≤2 sentences, ≤400 chars. Ends in a question mark. */ prompt: z.ZodString; /** 2–4 options. No explicit "Other" — clients provide that automatically. */ options: z.ZodArray, "many">; /** True when options are not mutually exclusive (priorities, bundles). */ multiSelect: z.ZodBoolean; /** * Optional provenance line rendered as a muted chip above the prompt * (e.g. "based on 18 people matching this intent"). Aggregate counts only — * never individual identities (pool_discovery k-anonymity invariant). * * Declared `.nullable().optional()` (not bare `.optional()`) so the schema * survives OpenAI/OpenRouter strict structured-output conversion, which * rejects optional-without-nullable fields (see createStructuredModel in the * questioner agent). The `.transform()` normalizes an LLM-returned `null` * back to `undefined` so a null is NEVER persisted or treated as * "evidence present": real string evidence flows through unchanged, while * both `null` and omitted read as absent everywhere downstream * (e.g. the intent-recovery `!question.evidence` selection filter and the * pool_discovery provenance chip). */ evidence: z.ZodEffects>, string | undefined, string | null | undefined>; }, "strip", z.ZodTypeAny, { prompt: string; options: { label: string; description: string; }[]; title: string; multiSelect: boolean; evidence?: string | undefined; }, { prompt: string; options: { label: string; description: string; }[]; title: string; multiSelect: boolean; evidence?: string | null | undefined; }>; /** Canonical QUD repair categories for underspecified intents/questions. */ export declare const UnderspecificationTypeSchema: z.ZodEnum<["missing_constituent", "missing_constraint", "open_alternative_set"]>; export declare const QuestionStrategySchema: z.ZodEnum<["refine_intent", "surface_missing_detail", "open_adjacent_thread", "reflective_summary", "surface_emergent_knowledge"]>; export declare const QuestionWithStrategySchema: z.ZodObject<{ /** ≤12 chars. Noun of the decision domain — e.g. "Stage", "Timing", "Role". */ title: z.ZodString; /** ≤2 sentences, ≤400 chars. Ends in a question mark. */ prompt: z.ZodString; /** 2–4 options. No explicit "Other" — clients provide that automatically. */ options: z.ZodArray, "many">; /** True when options are not mutually exclusive (priorities, bundles). */ multiSelect: z.ZodBoolean; /** * Optional provenance line rendered as a muted chip above the prompt * (e.g. "based on 18 people matching this intent"). Aggregate counts only — * never individual identities (pool_discovery k-anonymity invariant). * * Declared `.nullable().optional()` (not bare `.optional()`) so the schema * survives OpenAI/OpenRouter strict structured-output conversion, which * rejects optional-without-nullable fields (see createStructuredModel in the * questioner agent). The `.transform()` normalizes an LLM-returned `null` * back to `undefined` so a null is NEVER persisted or treated as * "evidence present": real string evidence flows through unchanged, while * both `null` and omitted read as absent everywhere downstream * (e.g. the intent-recovery `!question.evidence` selection filter and the * pool_discovery provenance chip). */ evidence: z.ZodEffects>, string | undefined, string | null | undefined>; } & { strategy: z.ZodEnum<["refine_intent", "surface_missing_detail", "open_adjacent_thread", "reflective_summary", "surface_emergent_knowledge"]>; /** QUD repair category, or null when the question is not an underspecification repair. */ underspecificationType: z.ZodNullable>; }, "strip", z.ZodTypeAny, { prompt: string; options: { label: string; description: string; }[]; title: string; multiSelect: boolean; strategy: "refine_intent" | "surface_missing_detail" | "open_adjacent_thread" | "reflective_summary" | "surface_emergent_knowledge"; underspecificationType: "missing_constituent" | "missing_constraint" | "open_alternative_set" | null; evidence?: string | undefined; }, { prompt: string; options: { label: string; description: string; }[]; title: string; multiSelect: boolean; strategy: "refine_intent" | "surface_missing_detail" | "open_adjacent_thread" | "reflective_summary" | "surface_emergent_knowledge"; underspecificationType: "missing_constituent" | "missing_constraint" | "open_alternative_set" | null; evidence?: string | null | undefined; }>; export declare const QuestionGeneratorResponseSchema: z.ZodObject<{ questions: z.ZodArray, "many">; /** True when options are not mutually exclusive (priorities, bundles). */ multiSelect: z.ZodBoolean; /** * Optional provenance line rendered as a muted chip above the prompt * (e.g. "based on 18 people matching this intent"). Aggregate counts only — * never individual identities (pool_discovery k-anonymity invariant). * * Declared `.nullable().optional()` (not bare `.optional()`) so the schema * survives OpenAI/OpenRouter strict structured-output conversion, which * rejects optional-without-nullable fields (see createStructuredModel in the * questioner agent). The `.transform()` normalizes an LLM-returned `null` * back to `undefined` so a null is NEVER persisted or treated as * "evidence present": real string evidence flows through unchanged, while * both `null` and omitted read as absent everywhere downstream * (e.g. the intent-recovery `!question.evidence` selection filter and the * pool_discovery provenance chip). */ evidence: z.ZodEffects>, string | undefined, string | null | undefined>; } & { strategy: z.ZodEnum<["refine_intent", "surface_missing_detail", "open_adjacent_thread", "reflective_summary", "surface_emergent_knowledge"]>; /** QUD repair category, or null when the question is not an underspecification repair. */ underspecificationType: z.ZodNullable>; }, "strip", z.ZodTypeAny, { prompt: string; options: { label: string; description: string; }[]; title: string; multiSelect: boolean; strategy: "refine_intent" | "surface_missing_detail" | "open_adjacent_thread" | "reflective_summary" | "surface_emergent_knowledge"; underspecificationType: "missing_constituent" | "missing_constraint" | "open_alternative_set" | null; evidence?: string | undefined; }, { prompt: string; options: { label: string; description: string; }[]; title: string; multiSelect: boolean; strategy: "refine_intent" | "surface_missing_detail" | "open_adjacent_thread" | "reflective_summary" | "surface_emergent_knowledge"; underspecificationType: "missing_constituent" | "missing_constraint" | "open_alternative_set" | null; evidence?: string | null | undefined; }>, "many">; }, "strip", z.ZodTypeAny, { questions: { prompt: string; options: { label: string; description: string; }[]; title: string; multiSelect: boolean; strategy: "refine_intent" | "surface_missing_detail" | "open_adjacent_thread" | "reflective_summary" | "surface_emergent_knowledge"; underspecificationType: "missing_constituent" | "missing_constraint" | "open_alternative_set" | null; evidence?: string | undefined; }[]; }, { questions: { prompt: string; options: { label: string; description: string; }[]; title: string; multiSelect: boolean; strategy: "refine_intent" | "surface_missing_detail" | "open_adjacent_thread" | "reflective_summary" | "surface_emergent_knowledge"; underspecificationType: "missing_constituent" | "missing_constraint" | "open_alternative_set" | null; evidence?: string | null | undefined; }[]; }>; export type QuestionOption = z.infer; export type Question = z.infer; export type UnderspecificationType = z.infer; export type QuestionStrategy = z.infer; export type QuestionWithStrategy = z.infer; export type QuestionGeneratorResponse = z.infer; /** * Internal generator output: public questions plus parallel strategy and QUD * taxonomy arrays for metadata-only consumption. The generator emits this; * callers forward only `questions` to renderers. */ export interface QuestionGenerationResult { questions: Question[]; strategies: QuestionStrategy[]; underspecificationTypes: Array; } /** Internal reason a question was generated, orthogonal to mode and QUD metadata. */ export declare const NegotiationQuestionPurposeSchema: z.ZodEnum<["uptake", "stalled_followup", "inflight_consultation"]>; export declare const QuestionPurposeSchema: z.ZodEnum<["uptake", "recovery", "stalled_followup", "inflight_consultation"]>; /** * Producer-supplied candidate binding. The API re-resolves every field from * authoritative rows before generation; callers cannot mint provenance. */ export declare const NegotiationQuestionCandidateSchema: z.ZodEffects; recipientUserId: z.ZodString; recipientIntentId: z.ZodString; opportunityId: z.ZodString; taskId: z.ZodOptional; networkId: z.ZodString; /** Uptake only: exact low-authority counterparty eligibility binding. */ counterpartyUserId: z.ZodOptional; counterpartyIntentId: z.ZodOptional; counterpartyFelicityAuthority: z.ZodOptional; }, "strip", z.ZodTypeAny, { networkId: string; purpose: "uptake" | "stalled_followup" | "inflight_consultation"; recipientUserId: string; recipientIntentId: string; opportunityId: string; taskId?: string | undefined; counterpartyUserId?: string | undefined; counterpartyIntentId?: string | undefined; counterpartyFelicityAuthority?: number | undefined; }, { networkId: string; purpose: "uptake" | "stalled_followup" | "inflight_consultation"; recipientUserId: string; recipientIntentId: string; opportunityId: string; taskId?: string | undefined; counterpartyUserId?: string | undefined; counterpartyIntentId?: string | undefined; counterpartyFelicityAuthority?: number | undefined; }>, { networkId: string; purpose: "uptake" | "stalled_followup" | "inflight_consultation"; recipientUserId: string; recipientIntentId: string; opportunityId: string; taskId?: string | undefined; counterpartyUserId?: string | undefined; counterpartyIntentId?: string | undefined; counterpartyFelicityAuthority?: number | undefined; }, { networkId: string; purpose: "uptake" | "stalled_followup" | "inflight_consultation"; recipientUserId: string; recipientIntentId: string; opportunityId: string; taskId?: string | undefined; counterpartyUserId?: string | undefined; counterpartyIntentId?: string | undefined; counterpartyFelicityAuthority?: number | undefined; }>; /** * Durable server-only routing and freshness envelope for negotiation-family * questions. This object is stripped from every REST/MCP projection. */ export declare const NegotiationQuestionProvenanceSchema: z.ZodEffects; purpose: z.ZodEnum<["uptake", "stalled_followup", "inflight_consultation"]>; recipientUserId: z.ZodString; recipientIntentId: z.ZodString; opportunityId: z.ZodString; taskId: z.ZodOptional; networkId: z.ZodString; intentFingerprint: z.ZodString; opportunityStatus: z.ZodEnum<["latent", "draft", "negotiating", "pending", "stalled", "accepted", "rejected", "expired"]>; opportunityUpdatedAt: z.ZodString; taskState: z.ZodOptional>; taskUpdatedAt: z.ZodOptional; /** Uptake only: exact low-authority counterparty eligibility binding. */ counterpartyUserId: z.ZodOptional; counterpartyIntentId: z.ZodOptional; counterpartyFelicityAuthority: z.ZodOptional; /** Stable per-generation position so retries dedupe without reducing cardinality. */ questionOrdinal: z.ZodNumber; }, "strip", z.ZodTypeAny, { networkId: string; purpose: "uptake" | "stalled_followup" | "inflight_consultation"; recipientUserId: string; recipientIntentId: string; opportunityId: string; version: 1; intentFingerprint: string; opportunityStatus: "latent" | "draft" | "negotiating" | "pending" | "stalled" | "accepted" | "rejected" | "expired"; opportunityUpdatedAt: string; questionOrdinal: number; taskId?: string | undefined; counterpartyUserId?: string | undefined; counterpartyIntentId?: string | undefined; counterpartyFelicityAuthority?: number | undefined; taskState?: "rejected" | "waiting_for_agent" | "input_required" | "submitted" | "working" | "completed" | "canceled" | "failed" | "auth_required" | "claimed" | undefined; taskUpdatedAt?: string | undefined; }, { networkId: string; purpose: "uptake" | "stalled_followup" | "inflight_consultation"; recipientUserId: string; recipientIntentId: string; opportunityId: string; version: 1; intentFingerprint: string; opportunityStatus: "latent" | "draft" | "negotiating" | "pending" | "stalled" | "accepted" | "rejected" | "expired"; opportunityUpdatedAt: string; questionOrdinal: number; taskId?: string | undefined; counterpartyUserId?: string | undefined; counterpartyIntentId?: string | undefined; counterpartyFelicityAuthority?: number | undefined; taskState?: "rejected" | "waiting_for_agent" | "input_required" | "submitted" | "working" | "completed" | "canceled" | "failed" | "auth_required" | "claimed" | undefined; taskUpdatedAt?: string | undefined; }>, { networkId: string; purpose: "uptake" | "stalled_followup" | "inflight_consultation"; recipientUserId: string; recipientIntentId: string; opportunityId: string; version: 1; intentFingerprint: string; opportunityStatus: "latent" | "draft" | "negotiating" | "pending" | "stalled" | "accepted" | "rejected" | "expired"; opportunityUpdatedAt: string; questionOrdinal: number; taskId?: string | undefined; counterpartyUserId?: string | undefined; counterpartyIntentId?: string | undefined; counterpartyFelicityAuthority?: number | undefined; taskState?: "rejected" | "waiting_for_agent" | "input_required" | "submitted" | "working" | "completed" | "canceled" | "failed" | "auth_required" | "claimed" | undefined; taskUpdatedAt?: string | undefined; }, { networkId: string; purpose: "uptake" | "stalled_followup" | "inflight_consultation"; recipientUserId: string; recipientIntentId: string; opportunityId: string; version: 1; intentFingerprint: string; opportunityStatus: "latent" | "draft" | "negotiating" | "pending" | "stalled" | "accepted" | "rejected" | "expired"; opportunityUpdatedAt: string; questionOrdinal: number; taskId?: string | undefined; counterpartyUserId?: string | undefined; counterpartyIntentId?: string | undefined; counterpartyFelicityAuthority?: number | undefined; taskState?: "rejected" | "waiting_for_agent" | "input_required" | "submitted" | "working" | "completed" | "canceled" | "failed" | "auth_required" | "claimed" | undefined; taskUpdatedAt?: string | undefined; }>; export declare const QuestionModeSchema: z.ZodEnum<["discovery", "intent", "enrichment", "negotiation", "negotiation_inflight", "chat", "pool_discovery"]>; /** One server-side candidate→side assignment (never serialized to clients). */ export declare const QuestionPoolAssignmentSchema: z.ZodObject<{ opportunityId: z.ZodString; side: z.ZodString; }, "strip", z.ZodTypeAny, { opportunityId: string; side: string; }, { opportunityId: string; side: string; }>; /** * One mined discriminator carried inside a pool_discovery question's * detection (the asked one plus ranked alternates for interview-mode * chaining). INTERNAL — the read path strips `detection.pool` before any * payload leaves the server. */ export declare const QuestionPoolDiscriminatorSchema: z.ZodObject<{ label: z.ZodString; questionSeed: z.ZodString; sides: z.ZodArray; /** Verified-assignment count per side label. */ sideCounts: z.ZodRecord; voi: z.ZodNumber; evidenceRate: z.ZodNumber; /** Discriminator embedding retained for durable semantic novelty checks. */ embedding: z.ZodOptional>; /** Model that generated `embedding`; mismatches must fall back to text. */ embeddingModel: z.ZodOptional; /** Verified assignments only — the P3 re-rank input. */ assignments: z.ZodArray, "many">; }, "strip", z.ZodTypeAny, { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }, { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }>; /** Pool snapshot stored on pool_discovery questions (server-side only). */ export declare const QuestionPoolSnapshotSchema: z.ZodObject<{ poolSize: z.ZodNumber; /** ISO-8601 timestamp of the mining pass. */ minedAt: z.ZodString; /** Discovery run that produced the pool, when known. */ runId: z.ZodOptional; /** Intent payload snippet (≤160 chars) — reused by chained questions' evidence chips. */ intentText: z.ZodOptional; /** Stable hash of the full normalized payload + summary used for freshness. */ intentFingerprint: z.ZodOptional; /** Exact bounded candidate pool. Optional for legacy rows/jobs created before IND-422. */ opportunityIds: z.ZodOptional>; /** The discriminator this question asks about. */ discriminator: z.ZodObject<{ label: z.ZodString; questionSeed: z.ZodString; sides: z.ZodArray; /** Verified-assignment count per side label. */ sideCounts: z.ZodRecord; voi: z.ZodNumber; evidenceRate: z.ZodNumber; /** Discriminator embedding retained for durable semantic novelty checks. */ embedding: z.ZodOptional>; /** Model that generated `embedding`; mismatches must fall back to text. */ embeddingModel: z.ZodOptional; /** Verified assignments only — the P3 re-rank input. */ assignments: z.ZodArray, "many">; }, "strip", z.ZodTypeAny, { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }, { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }>; /** Remaining ranked discriminators for interview-mode chaining. */ alternates: z.ZodArray; /** Verified-assignment count per side label. */ sideCounts: z.ZodRecord; voi: z.ZodNumber; evidenceRate: z.ZodNumber; /** Discriminator embedding retained for durable semantic novelty checks. */ embedding: z.ZodOptional>; /** Model that generated `embedding`; mismatches must fall back to text. */ embeddingModel: z.ZodOptional; /** Verified assignments only — the P3 re-rank input. */ assignments: z.ZodArray, "many">; }, "strip", z.ZodTypeAny, { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }, { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }>, "many">; }, "strip", z.ZodTypeAny, { poolSize: number; minedAt: string; discriminator: { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }; alternates: { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }[]; runId?: string | undefined; intentFingerprint?: string | undefined; intentText?: string | undefined; opportunityIds?: string[] | undefined; }, { poolSize: number; minedAt: string; discriminator: { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }; alternates: { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }[]; runId?: string | undefined; intentFingerprint?: string | undefined; intentText?: string | undefined; opportunityIds?: string[] | undefined; }>; /** Internal delivery ledger for proactive pool-question pushes (IND-421). */ export declare const QuestionPoolPushSchema: z.ZodObject<{ version: z.ZodLiteral<1>; source: z.ZodLiteral<"pool_discovery">; recipientId: z.ZodString; intentId: z.ZodString; cycleKey: z.ZodString; messageId: z.ZodString; surfaces: z.ZodTuple<[z.ZodLiteral<"personal_agent_badge">, z.ZodLiteral<"negotiator_dm">], null>; claimedAt: z.ZodString; deliveryStatus: z.ZodEnum<["claimed", "delivered", "suppressed", "failed"]>; conversationId: z.ZodOptional; deliveredAt: z.ZodOptional; suppressedAt: z.ZodOptional; failure: z.ZodOptional; }, "strip", z.ZodTypeAny, { source: "pool_discovery"; version: 1; recipientId: string; intentId: string; cycleKey: string; messageId: string; surfaces: ["personal_agent_badge", "negotiator_dm"]; claimedAt: string; deliveryStatus: "failed" | "claimed" | "delivered" | "suppressed"; conversationId?: string | undefined; deliveredAt?: string | undefined; suppressedAt?: string | undefined; failure?: string | undefined; }, { source: "pool_discovery"; version: 1; recipientId: string; intentId: string; cycleKey: string; messageId: string; surfaces: ["personal_agent_badge", "negotiator_dm"]; claimedAt: string; deliveryStatus: "failed" | "claimed" | "delivered" | "suppressed"; conversationId?: string | undefined; deliveredAt?: string | undefined; suppressedAt?: string | undefined; failure?: string | undefined; }>; /** Durable request state for proactive pool-question delivery. */ export declare const QuestionPoolPushRequestStatusSchema: z.ZodEnum<["requested", "suppressed"]>; /** Private snapshot for a post-discovery recovery refinement question. */ export declare const QuestionRecoverySnapshotSchema: z.ZodObject<{ version: z.ZodLiteral<1>; intentFingerprint: z.ZodString; completionSource: z.ZodEnum<["intent_creation", "from_intent", "discovery_run"]>; /** Privacy-safe aggregate only; raw negotiation evidence is never persisted. */ rejectedNegotiationCount: z.ZodOptional; /** Bounded internal correlation id for an asynchronous discovery run. */ runId: z.ZodOptional; }, "strip", z.ZodTypeAny, { version: 1; intentFingerprint: string; completionSource: "intent_creation" | "from_intent" | "discovery_run"; runId?: string | undefined; rejectedNegotiationCount?: number | undefined; }, { version: 1; intentFingerprint: string; completionSource: "intent_creation" | "from_intent" | "discovery_run"; runId?: string | undefined; rejectedNegotiationCount?: number | undefined; }>; /** Internal reason a pending question was voided. */ export declare const QuestionVoidedReasonSchema: z.ZodEnum<["pool_drift", "intent_edit", "recovery_drift", "negotiation_stale"]>; /** Permanent reasons that terminalize an unclaimed proactive push request. */ export declare const QuestionPoolPushRequestReasonSchema: z.ZodEnum<["question_lifecycle", "intent_lifecycle", "malformed_source", "malformed_actor", "malformed_pool", "malformed_cycle", "visited", "pool_size", "voi", "cycle_budget"]>; export declare const QuestionDetectionSchema: z.ZodEffects; /** Internal reason for generation; independent of mode and QUD repair metadata. */ purpose: z.ZodOptional>; /** Exact negotiation recipient/intent/task routing provenance. Internal only. */ negotiation: z.ZodOptional; purpose: z.ZodEnum<["uptake", "stalled_followup", "inflight_consultation"]>; recipientUserId: z.ZodString; recipientIntentId: z.ZodString; opportunityId: z.ZodString; taskId: z.ZodOptional; networkId: z.ZodString; intentFingerprint: z.ZodString; opportunityStatus: z.ZodEnum<["latent", "draft", "negotiating", "pending", "stalled", "accepted", "rejected", "expired"]>; opportunityUpdatedAt: z.ZodString; taskState: z.ZodOptional>; taskUpdatedAt: z.ZodOptional; /** Uptake only: exact low-authority counterparty eligibility binding. */ counterpartyUserId: z.ZodOptional; counterpartyIntentId: z.ZodOptional; counterpartyFelicityAuthority: z.ZodOptional; /** Stable per-generation position so retries dedupe without reducing cardinality. */ questionOrdinal: z.ZodNumber; }, "strip", z.ZodTypeAny, { networkId: string; purpose: "uptake" | "stalled_followup" | "inflight_consultation"; recipientUserId: string; recipientIntentId: string; opportunityId: string; version: 1; intentFingerprint: string; opportunityStatus: "latent" | "draft" | "negotiating" | "pending" | "stalled" | "accepted" | "rejected" | "expired"; opportunityUpdatedAt: string; questionOrdinal: number; taskId?: string | undefined; counterpartyUserId?: string | undefined; counterpartyIntentId?: string | undefined; counterpartyFelicityAuthority?: number | undefined; taskState?: "rejected" | "waiting_for_agent" | "input_required" | "submitted" | "working" | "completed" | "canceled" | "failed" | "auth_required" | "claimed" | undefined; taskUpdatedAt?: string | undefined; }, { networkId: string; purpose: "uptake" | "stalled_followup" | "inflight_consultation"; recipientUserId: string; recipientIntentId: string; opportunityId: string; version: 1; intentFingerprint: string; opportunityStatus: "latent" | "draft" | "negotiating" | "pending" | "stalled" | "accepted" | "rejected" | "expired"; opportunityUpdatedAt: string; questionOrdinal: number; taskId?: string | undefined; counterpartyUserId?: string | undefined; counterpartyIntentId?: string | undefined; counterpartyFelicityAuthority?: number | undefined; taskState?: "rejected" | "waiting_for_agent" | "input_required" | "submitted" | "working" | "completed" | "canceled" | "failed" | "auth_required" | "claimed" | undefined; taskUpdatedAt?: string | undefined; }>, { networkId: string; purpose: "uptake" | "stalled_followup" | "inflight_consultation"; recipientUserId: string; recipientIntentId: string; opportunityId: string; version: 1; intentFingerprint: string; opportunityStatus: "latent" | "draft" | "negotiating" | "pending" | "stalled" | "accepted" | "rejected" | "expired"; opportunityUpdatedAt: string; questionOrdinal: number; taskId?: string | undefined; counterpartyUserId?: string | undefined; counterpartyIntentId?: string | undefined; counterpartyFelicityAuthority?: number | undefined; taskState?: "rejected" | "waiting_for_agent" | "input_required" | "submitted" | "working" | "completed" | "canceled" | "failed" | "auth_required" | "claimed" | undefined; taskUpdatedAt?: string | undefined; }, { networkId: string; purpose: "uptake" | "stalled_followup" | "inflight_consultation"; recipientUserId: string; recipientIntentId: string; opportunityId: string; version: 1; intentFingerprint: string; opportunityStatus: "latent" | "draft" | "negotiating" | "pending" | "stalled" | "accepted" | "rejected" | "expired"; opportunityUpdatedAt: string; questionOrdinal: number; taskId?: string | undefined; counterpartyUserId?: string | undefined; counterpartyIntentId?: string | undefined; counterpartyFelicityAuthority?: number | undefined; taskState?: "rejected" | "waiting_for_agent" | "input_required" | "submitted" | "working" | "completed" | "canceled" | "failed" | "auth_required" | "claimed" | undefined; taskUpdatedAt?: string | undefined; }>>; /** Entity type that triggered generation (e.g. "opportunity", "intent", "profile"). */ sourceType: z.ZodString; /** ID of the triggering entity. */ sourceId: z.ZodString; /** Optional intent ID that was the root cause. */ triggeredBy: z.ZodOptional; /** ISO-8601 timestamp of generation. */ timestamp: z.ZodString; /** Generation strategy persisted as internal metadata. */ strategy: z.ZodOptional>; /** QUD repair category persisted as internal metadata. */ underspecificationType: z.ZodOptional>>; /** ID of the assistant message that triggered this question. Used by the frontend to anchor the question card inline. */ messageId: z.ZodOptional; /** Durable server-only conversation session binding used to validate messageId. */ sessionId: z.ZodOptional; /** * pool_discovery only: the mined pool snapshot (assignments + alternates). * INTERNAL — stripped from every client-facing read (web + MCP). */ pool: z.ZodOptional; /** Intent payload snippet (≤160 chars) — reused by chained questions' evidence chips. */ intentText: z.ZodOptional; /** Stable hash of the full normalized payload + summary used for freshness. */ intentFingerprint: z.ZodOptional; /** Exact bounded candidate pool. Optional for legacy rows/jobs created before IND-422. */ opportunityIds: z.ZodOptional>; /** The discriminator this question asks about. */ discriminator: z.ZodObject<{ label: z.ZodString; questionSeed: z.ZodString; sides: z.ZodArray; /** Verified-assignment count per side label. */ sideCounts: z.ZodRecord; voi: z.ZodNumber; evidenceRate: z.ZodNumber; /** Discriminator embedding retained for durable semantic novelty checks. */ embedding: z.ZodOptional>; /** Model that generated `embedding`; mismatches must fall back to text. */ embeddingModel: z.ZodOptional; /** Verified assignments only — the P3 re-rank input. */ assignments: z.ZodArray, "many">; }, "strip", z.ZodTypeAny, { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }, { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }>; /** Remaining ranked discriminators for interview-mode chaining. */ alternates: z.ZodArray; /** Verified-assignment count per side label. */ sideCounts: z.ZodRecord; voi: z.ZodNumber; evidenceRate: z.ZodNumber; /** Discriminator embedding retained for durable semantic novelty checks. */ embedding: z.ZodOptional>; /** Model that generated `embedding`; mismatches must fall back to text. */ embeddingModel: z.ZodOptional; /** Verified assignments only — the P3 re-rank input. */ assignments: z.ZodArray, "many">; }, "strip", z.ZodTypeAny, { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }, { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }>, "many">; }, "strip", z.ZodTypeAny, { poolSize: number; minedAt: string; discriminator: { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }; alternates: { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }[]; runId?: string | undefined; intentFingerprint?: string | undefined; intentText?: string | undefined; opportunityIds?: string[] | undefined; }, { poolSize: number; minedAt: string; discriminator: { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }; alternates: { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }[]; runId?: string | undefined; intentFingerprint?: string | undefined; intentText?: string | undefined; opportunityIds?: string[] | undefined; }>>; /** Post-discovery intent recovery snapshot. Internal only. */ recovery: z.ZodOptional; intentFingerprint: z.ZodString; completionSource: z.ZodEnum<["intent_creation", "from_intent", "discovery_run"]>; /** Privacy-safe aggregate only; raw negotiation evidence is never persisted. */ rejectedNegotiationCount: z.ZodOptional; /** Bounded internal correlation id for an asynchronous discovery run. */ runId: z.ZodOptional; }, "strip", z.ZodTypeAny, { version: 1; intentFingerprint: string; completionSource: "intent_creation" | "from_intent" | "discovery_run"; runId?: string | undefined; rejectedNegotiationCount?: number | undefined; }, { version: 1; intentFingerprint: string; completionSource: "intent_creation" | "from_intent" | "discovery_run"; runId?: string | undefined; rejectedNegotiationCount?: number | undefined; }>>; /** Durable request marker written before enqueueing proactive delivery. Internal only. */ pushRequestedAt: z.ZodOptional; /** Last bounded recovery sweep that selected this request. Internal only. */ pushRecoveryAttemptedAt: z.ZodOptional; /** Durable request outcome. Internal only. */ pushRequestStatus: z.ZodOptional>; /** Permanent suppression reason for an unclaimed request. Internal only. */ pushRequestReason: z.ZodOptional>; /** ISO-8601 timestamp at which an unclaimed request was suppressed. Internal only. */ pushRequestSuppressedAt: z.ZodOptional; /** Internal proactive delivery state. Never serialize to public clients. */ push: z.ZodOptional; source: z.ZodLiteral<"pool_discovery">; recipientId: z.ZodString; intentId: z.ZodString; cycleKey: z.ZodString; messageId: z.ZodString; surfaces: z.ZodTuple<[z.ZodLiteral<"personal_agent_badge">, z.ZodLiteral<"negotiator_dm">], null>; claimedAt: z.ZodString; deliveryStatus: z.ZodEnum<["claimed", "delivered", "suppressed", "failed"]>; conversationId: z.ZodOptional; deliveredAt: z.ZodOptional; suppressedAt: z.ZodOptional; failure: z.ZodOptional; }, "strip", z.ZodTypeAny, { source: "pool_discovery"; version: 1; recipientId: string; intentId: string; cycleKey: string; messageId: string; surfaces: ["personal_agent_badge", "negotiator_dm"]; claimedAt: string; deliveryStatus: "failed" | "claimed" | "delivered" | "suppressed"; conversationId?: string | undefined; deliveredAt?: string | undefined; suppressedAt?: string | undefined; failure?: string | undefined; }, { source: "pool_discovery"; version: 1; recipientId: string; intentId: string; cycleKey: string; messageId: string; surfaces: ["personal_agent_badge", "negotiator_dm"]; claimedAt: string; deliveryStatus: "failed" | "claimed" | "delivered" | "suppressed"; conversationId?: string | undefined; deliveredAt?: string | undefined; suppressedAt?: string | undefined; failure?: string | undefined; }>>; /** Internal reason this question was voided after pool or intent drift. */ voidedReason: z.ZodOptional>; /** Authoritative successful-delivery ledger timestamp. Internal only. */ pushedAt: z.ZodOptional; }, "strip", z.ZodTypeAny, { mode: "chat" | "intent" | "enrichment" | "discovery" | "negotiation" | "negotiation_inflight" | "pool_discovery"; sourceType: string; sourceId: string; timestamp: string; push?: { source: "pool_discovery"; version: 1; recipientId: string; intentId: string; cycleKey: string; messageId: string; surfaces: ["personal_agent_badge", "negotiator_dm"]; claimedAt: string; deliveryStatus: "failed" | "claimed" | "delivered" | "suppressed"; conversationId?: string | undefined; deliveredAt?: string | undefined; suppressedAt?: string | undefined; failure?: string | undefined; } | undefined; strategy?: "refine_intent" | "surface_missing_detail" | "open_adjacent_thread" | "reflective_summary" | "surface_emergent_knowledge" | undefined; underspecificationType?: "missing_constituent" | "missing_constraint" | "open_alternative_set" | null | undefined; recovery?: { version: 1; intentFingerprint: string; completionSource: "intent_creation" | "from_intent" | "discovery_run"; runId?: string | undefined; rejectedNegotiationCount?: number | undefined; } | undefined; purpose?: "uptake" | "stalled_followup" | "inflight_consultation" | "recovery" | undefined; negotiation?: { networkId: string; purpose: "uptake" | "stalled_followup" | "inflight_consultation"; recipientUserId: string; recipientIntentId: string; opportunityId: string; version: 1; intentFingerprint: string; opportunityStatus: "latent" | "draft" | "negotiating" | "pending" | "stalled" | "accepted" | "rejected" | "expired"; opportunityUpdatedAt: string; questionOrdinal: number; taskId?: string | undefined; counterpartyUserId?: string | undefined; counterpartyIntentId?: string | undefined; counterpartyFelicityAuthority?: number | undefined; taskState?: "rejected" | "waiting_for_agent" | "input_required" | "submitted" | "working" | "completed" | "canceled" | "failed" | "auth_required" | "claimed" | undefined; taskUpdatedAt?: string | undefined; } | undefined; messageId?: string | undefined; triggeredBy?: string | undefined; sessionId?: string | undefined; pool?: { poolSize: number; minedAt: string; discriminator: { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }; alternates: { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }[]; runId?: string | undefined; intentFingerprint?: string | undefined; intentText?: string | undefined; opportunityIds?: string[] | undefined; } | undefined; pushRequestedAt?: string | undefined; pushRecoveryAttemptedAt?: string | undefined; pushRequestStatus?: "suppressed" | "requested" | undefined; pushRequestReason?: "voi" | "question_lifecycle" | "intent_lifecycle" | "malformed_source" | "malformed_actor" | "malformed_pool" | "malformed_cycle" | "visited" | "pool_size" | "cycle_budget" | undefined; pushRequestSuppressedAt?: string | undefined; voidedReason?: "pool_drift" | "intent_edit" | "recovery_drift" | "negotiation_stale" | undefined; pushedAt?: string | undefined; }, { mode: "chat" | "intent" | "enrichment" | "discovery" | "negotiation" | "negotiation_inflight" | "pool_discovery"; sourceType: string; sourceId: string; timestamp: string; push?: { source: "pool_discovery"; version: 1; recipientId: string; intentId: string; cycleKey: string; messageId: string; surfaces: ["personal_agent_badge", "negotiator_dm"]; claimedAt: string; deliveryStatus: "failed" | "claimed" | "delivered" | "suppressed"; conversationId?: string | undefined; deliveredAt?: string | undefined; suppressedAt?: string | undefined; failure?: string | undefined; } | undefined; strategy?: "refine_intent" | "surface_missing_detail" | "open_adjacent_thread" | "reflective_summary" | "surface_emergent_knowledge" | undefined; underspecificationType?: "missing_constituent" | "missing_constraint" | "open_alternative_set" | null | undefined; recovery?: { version: 1; intentFingerprint: string; completionSource: "intent_creation" | "from_intent" | "discovery_run"; runId?: string | undefined; rejectedNegotiationCount?: number | undefined; } | undefined; purpose?: "uptake" | "stalled_followup" | "inflight_consultation" | "recovery" | undefined; negotiation?: { networkId: string; purpose: "uptake" | "stalled_followup" | "inflight_consultation"; recipientUserId: string; recipientIntentId: string; opportunityId: string; version: 1; intentFingerprint: string; opportunityStatus: "latent" | "draft" | "negotiating" | "pending" | "stalled" | "accepted" | "rejected" | "expired"; opportunityUpdatedAt: string; questionOrdinal: number; taskId?: string | undefined; counterpartyUserId?: string | undefined; counterpartyIntentId?: string | undefined; counterpartyFelicityAuthority?: number | undefined; taskState?: "rejected" | "waiting_for_agent" | "input_required" | "submitted" | "working" | "completed" | "canceled" | "failed" | "auth_required" | "claimed" | undefined; taskUpdatedAt?: string | undefined; } | undefined; messageId?: string | undefined; triggeredBy?: string | undefined; sessionId?: string | undefined; pool?: { poolSize: number; minedAt: string; discriminator: { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }; alternates: { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }[]; runId?: string | undefined; intentFingerprint?: string | undefined; intentText?: string | undefined; opportunityIds?: string[] | undefined; } | undefined; pushRequestedAt?: string | undefined; pushRecoveryAttemptedAt?: string | undefined; pushRequestStatus?: "suppressed" | "requested" | undefined; pushRequestReason?: "voi" | "question_lifecycle" | "intent_lifecycle" | "malformed_source" | "malformed_actor" | "malformed_pool" | "malformed_cycle" | "visited" | "pool_size" | "cycle_budget" | undefined; pushRequestSuppressedAt?: string | undefined; voidedReason?: "pool_drift" | "intent_edit" | "recovery_drift" | "negotiation_stale" | undefined; pushedAt?: string | undefined; }>, { mode: "chat" | "intent" | "enrichment" | "discovery" | "negotiation" | "negotiation_inflight" | "pool_discovery"; sourceType: string; sourceId: string; timestamp: string; push?: { source: "pool_discovery"; version: 1; recipientId: string; intentId: string; cycleKey: string; messageId: string; surfaces: ["personal_agent_badge", "negotiator_dm"]; claimedAt: string; deliveryStatus: "failed" | "claimed" | "delivered" | "suppressed"; conversationId?: string | undefined; deliveredAt?: string | undefined; suppressedAt?: string | undefined; failure?: string | undefined; } | undefined; strategy?: "refine_intent" | "surface_missing_detail" | "open_adjacent_thread" | "reflective_summary" | "surface_emergent_knowledge" | undefined; underspecificationType?: "missing_constituent" | "missing_constraint" | "open_alternative_set" | null | undefined; recovery?: { version: 1; intentFingerprint: string; completionSource: "intent_creation" | "from_intent" | "discovery_run"; runId?: string | undefined; rejectedNegotiationCount?: number | undefined; } | undefined; purpose?: "uptake" | "stalled_followup" | "inflight_consultation" | "recovery" | undefined; negotiation?: { networkId: string; purpose: "uptake" | "stalled_followup" | "inflight_consultation"; recipientUserId: string; recipientIntentId: string; opportunityId: string; version: 1; intentFingerprint: string; opportunityStatus: "latent" | "draft" | "negotiating" | "pending" | "stalled" | "accepted" | "rejected" | "expired"; opportunityUpdatedAt: string; questionOrdinal: number; taskId?: string | undefined; counterpartyUserId?: string | undefined; counterpartyIntentId?: string | undefined; counterpartyFelicityAuthority?: number | undefined; taskState?: "rejected" | "waiting_for_agent" | "input_required" | "submitted" | "working" | "completed" | "canceled" | "failed" | "auth_required" | "claimed" | undefined; taskUpdatedAt?: string | undefined; } | undefined; messageId?: string | undefined; triggeredBy?: string | undefined; sessionId?: string | undefined; pool?: { poolSize: number; minedAt: string; discriminator: { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }; alternates: { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }[]; runId?: string | undefined; intentFingerprint?: string | undefined; intentText?: string | undefined; opportunityIds?: string[] | undefined; } | undefined; pushRequestedAt?: string | undefined; pushRecoveryAttemptedAt?: string | undefined; pushRequestStatus?: "suppressed" | "requested" | undefined; pushRequestReason?: "voi" | "question_lifecycle" | "intent_lifecycle" | "malformed_source" | "malformed_actor" | "malformed_pool" | "malformed_cycle" | "visited" | "pool_size" | "cycle_budget" | undefined; pushRequestSuppressedAt?: string | undefined; voidedReason?: "pool_drift" | "intent_edit" | "recovery_drift" | "negotiation_stale" | undefined; pushedAt?: string | undefined; }, { mode: "chat" | "intent" | "enrichment" | "discovery" | "negotiation" | "negotiation_inflight" | "pool_discovery"; sourceType: string; sourceId: string; timestamp: string; push?: { source: "pool_discovery"; version: 1; recipientId: string; intentId: string; cycleKey: string; messageId: string; surfaces: ["personal_agent_badge", "negotiator_dm"]; claimedAt: string; deliveryStatus: "failed" | "claimed" | "delivered" | "suppressed"; conversationId?: string | undefined; deliveredAt?: string | undefined; suppressedAt?: string | undefined; failure?: string | undefined; } | undefined; strategy?: "refine_intent" | "surface_missing_detail" | "open_adjacent_thread" | "reflective_summary" | "surface_emergent_knowledge" | undefined; underspecificationType?: "missing_constituent" | "missing_constraint" | "open_alternative_set" | null | undefined; recovery?: { version: 1; intentFingerprint: string; completionSource: "intent_creation" | "from_intent" | "discovery_run"; runId?: string | undefined; rejectedNegotiationCount?: number | undefined; } | undefined; purpose?: "uptake" | "stalled_followup" | "inflight_consultation" | "recovery" | undefined; negotiation?: { networkId: string; purpose: "uptake" | "stalled_followup" | "inflight_consultation"; recipientUserId: string; recipientIntentId: string; opportunityId: string; version: 1; intentFingerprint: string; opportunityStatus: "latent" | "draft" | "negotiating" | "pending" | "stalled" | "accepted" | "rejected" | "expired"; opportunityUpdatedAt: string; questionOrdinal: number; taskId?: string | undefined; counterpartyUserId?: string | undefined; counterpartyIntentId?: string | undefined; counterpartyFelicityAuthority?: number | undefined; taskState?: "rejected" | "waiting_for_agent" | "input_required" | "submitted" | "working" | "completed" | "canceled" | "failed" | "auth_required" | "claimed" | undefined; taskUpdatedAt?: string | undefined; } | undefined; messageId?: string | undefined; triggeredBy?: string | undefined; sessionId?: string | undefined; pool?: { poolSize: number; minedAt: string; discriminator: { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }; alternates: { label: string; questionSeed: string; sides: string[]; sideCounts: Record; voi: number; evidenceRate: number; assignments: { opportunityId: string; side: string; }[]; embedding?: number[] | undefined; embeddingModel?: string | undefined; }[]; runId?: string | undefined; intentFingerprint?: string | undefined; intentText?: string | undefined; opportunityIds?: string[] | undefined; } | undefined; pushRequestedAt?: string | undefined; pushRecoveryAttemptedAt?: string | undefined; pushRequestStatus?: "suppressed" | "requested" | undefined; pushRequestReason?: "voi" | "question_lifecycle" | "intent_lifecycle" | "malformed_source" | "malformed_actor" | "malformed_pool" | "malformed_cycle" | "visited" | "pool_size" | "cycle_budget" | undefined; pushRequestSuppressedAt?: string | undefined; voidedReason?: "pool_drift" | "intent_edit" | "recovery_drift" | "negotiation_stale" | undefined; pushedAt?: string | undefined; }>; export declare const QuestionActorSchema: z.ZodObject<{ /** The user this question is for. */ userId: z.ZodString; /** Optional network context. */ networkId: z.ZodOptional; /** Actor's role in the question — currently always "subject". */ role: z.ZodLiteral<"subject">; }, "strip", z.ZodTypeAny, { userId: string; role: "subject"; networkId?: string | undefined; }, { userId: string; role: "subject"; networkId?: string | undefined; }>; export declare const QuestionAnswerSchema: z.ZodObject<{ /** Option labels the user selected. */ selectedOptions: z.ZodArray; /** Free-text input when the user chose "Other" or elaborated. */ freeText: z.ZodOptional; /** User ID of the answerer. */ answeredBy: z.ZodString; /** ISO-8601 timestamp of when the answer was submitted. */ answeredAt: z.ZodString; }, "strip", z.ZodTypeAny, { selectedOptions: string[]; answeredBy: string; answeredAt: string; freeText?: string | undefined; }, { selectedOptions: string[]; answeredBy: string; answeredAt: string; freeText?: string | undefined; }>; export type NegotiationQuestionPurpose = z.infer; export type NegotiationQuestionCandidate = z.infer; export type NegotiationQuestionProvenance = z.infer; export type QuestionPurpose = z.infer; export type QuestionMode = z.infer; export type QuestionDetection = z.infer; export type QuestionActor = z.infer; export type QuestionAnswer = z.infer; export type QuestionPoolAssignment = z.infer; export type QuestionPoolDiscriminator = z.infer; export type QuestionPoolSnapshot = z.infer; export type QuestionRecoverySnapshot = z.infer; export type QuestionPoolPush = z.infer; export type QuestionVoidedReason = z.infer; export type QuestionPoolPushRequestStatus = z.infer; export type QuestionPoolPushRequestReason = z.infer;