export type KanoResponse = 'like' | 'expect' | 'neutral' | 'tolerate' | 'dislike'; export type KanoCategory = 'must_be' | 'one_dimensional' | 'attractive' | 'indifferent' | 'reverse' | 'questionable'; /** * Standard Kano evaluation table. * Rows: functional answer, Columns: dysfunctional answer. * * like expect neutral tolerate dislike * like Q A A A O * expect R I I I M * neutral R I I I M * tolerate R I I I M * dislike R R R R Q */ export declare const KANO_TABLE: Record>; /** Categories that qualify a feature to advance past the Kano step. */ export declare const ADVANCING_CATEGORIES: KanoCategory[]; /** * Classify a feature into a Kano category using the standard evaluation table. * @param functional The respondent's answer to "How would you feel if this feature were present?" * @param dysfunctional The respondent's answer to "How would you feel if this feature were absent?" * @returns The Kano category for this feature based on the respondent's answers. */ export declare function classifyKano(functional: KanoResponse, dysfunctional: KanoResponse): KanoCategory; /** * Filter classified items, retaining only those with advancing categories * (must_be, one_dimensional, attractive). * @param classifications A map of item value → KanoCategory * @returns An array of item values whose category is an advancing category. */ export declare function filterKanoSurvivors(classifications: Map): string[]; /** * Determine the next step in the funneled survey based on how many items survived Kano filtering. * - >= 4 survivors → proceed to MaxDiff * - exactly 3 survivors → skip MaxDiff, go directly to Pairwise * - < 3 survivors → survey ends after Kano * @param survivorCount The number of items that passed Kano filtering. */ export declare function determineNextStep(survivorCount: number): 'maxdiff' | 'pairwise' | 'end';