declare const TOPICS: readonly [{ readonly id: "target-user"; readonly question: "Who is the first specific user this product should help?"; readonly recommendation: "Name one primary user group before describing features."; readonly tradeoff: "A narrow first user makes the MVP easier to test; a broad audience can hide conflicting needs."; }, { readonly id: "problem"; readonly question: "What recurring problem does that user have today?"; readonly recommendation: "Describe the costly or frustrating moment, not the proposed feature."; readonly tradeoff: "Problem-first framing prevents a polished solution from solving the wrong thing."; }, { readonly id: "outcome"; readonly question: "What observable outcome should improve for that user?"; readonly recommendation: "Choose a result the user can recognize without internal metrics."; readonly tradeoff: "A concrete outcome keeps the plan honest; an ambitious outcome may require more discovery."; }, { readonly id: "journey"; readonly question: "What is the shortest user journey from need to that outcome?"; readonly recommendation: "State the first end-to-end path before listing screens or integrations."; readonly tradeoff: "A short journey clarifies the MVP; edge cases can remain explicitly deferred."; }, { readonly id: "mvp"; readonly question: "Which smallest capabilities must exist for that journey to work?"; readonly recommendation: "Limit the MVP to the minimum user-visible capabilities."; readonly tradeoff: "Fewer capabilities accelerate learning; omitted conveniences may need manual support at first."; }, { readonly id: "non-goals"; readonly question: "Which tempting capabilities are explicitly out of scope for the MVP?"; readonly recommendation: "Name at least one attractive exclusion."; readonly tradeoff: "Clear non-goals protect focus; they may disappoint some early requests by design."; }, { readonly id: "success-signal"; readonly question: "What first signal would tell you this MVP is useful?"; readonly recommendation: "Use one observable behavior or outcome rather than a vanity metric."; readonly tradeoff: "A simple signal supports early decisions; it may not predict long-term retention."; }, { readonly id: "constraints"; readonly question: "Which product constraints or risks must shape the first release?"; readonly recommendation: "Include timing, privacy, compliance, operations, or integration limits only when they change the product decision."; readonly tradeoff: "Naming real constraints early avoids surprise rework; speculative technical choices can wait for technical intake."; }]; type ProductInterviewTopic = (typeof TOPICS)[number]["id"]; export type ProductDeepInterviewMode = "new-product" | "brownfield-change-discovery"; export type ProductDeepInterviewOptions = { readonly mode?: ProductDeepInterviewMode; }; export type ProductDeepInterviewResult = { readonly kind: "question"; readonly topic: ProductInterviewTopic; readonly block: string; } | { readonly kind: "recommendation"; readonly topic: ProductInterviewTopic; readonly block: string; } | { readonly kind: "approval-required"; readonly block: string; } | { readonly kind: "approved"; readonly handoff: "technical-intake"; readonly block: string; } | { readonly kind: "stopped"; readonly block: string; }; export declare function isProductDeepInterviewStart(message: string): boolean; export declare class ProductDeepInterviewTracker { private readonly options; private readonly sessions; constructor(options?: ProductDeepInterviewOptions); hasActiveSession(sessionId: string): boolean; route(sessionId: string, message: string): ProductDeepInterviewResult | undefined; } export {};