/** * Whether the answer is a `kind` answer ('yes' | 'no' | 'agent' | 'exit' | 'text'), with the caller's `extra` words. * YES, AGENT and TEXT never match a negated answer ("not sure", "I don't want an agent"); 0 is AGENT, * is EXIT. */ export function isAnswer(input: any, kind: any, extra?: any[]): boolean; /** Whether the WHOLE answer asks for a person ("agent", "I want to talk to a representative", "0") — for free-text prompts. */ export function isAgentRequest(input: any): boolean; /** Whether the answer is (part of) a spelled address — letters said one at a time, or a spelled symbol. */ export function isSpelledFragment(input: any): boolean; /** * Whether a free-text answer to a question that expects a `kind` ('number' | 'email' | 'contact') is the caller * changing direction ("what's my balance?" to "how much would you like to pay?") rather than an attempt at the answer: * three or more words, none of them the expected shape. Such an answer is DISPATCHed, never counted as a failed try. * A short miss ("what?") is not: the asking flow re-asks it. */ export function isOtherRequest(input: any, kind: any): boolean; /** * Whether the answer names an amount ("$1", "1 dollar", "un dólar", "50 cents", "12.50") rather than a keypad key. * Such an answer never picks a digit choice (pickChoice): "$1" said at "press 1 to pay what is due" chose FULL and * the caller was offered $235.90 (2026-10-14). */ export function isAmountAnswer(input: any): boolean; /** * The amount an answer names, or NaN when it names none or is ambiguous. Prod replay 2026-10-14: the first number in the * answer was taken, so "pagar cuenta 50, ciento treinta y cuatro…" paid $50, "$10 con 18 centavos" paid $10.00 and an * offer read back with "terminada en 2 4 8 6" paid $2. Numbers that name an account, card, code or ZIP, and digits spoken * one by one, are not amounts; two different remaining numbers are ambiguous unless exactly one is marked as money ($, * dollars, cents or decimals). "50 cents" alone is $0.50; "82 dollars and 50" and "82 con 50" are $82.50. Amounts said only in words are NaN (not parsed yet). */ export function amountInAnswer(input: any): number; /** Internal numeric evidence shared by the opt-in money reader; legacy results stay unchanged. */ export function numericAmountReading(input: any): { value: number; candidates: number; }; /** * ask-choice's matcher: the key of the choice the answer picks, '__agent', '__exit', or '' (no choice). * choices: [{ key, phrases, negative?, neutral?, exact? }]. A key (digit, * or #) and a YES word pick a choice only as the whole * answer, courtesy aside (onlyAffirmative); an `exact` choice (one that charges or cancels) treats ALL its words that way. A choice keyed 'yes' also takes ANSWER_WORDS.yes (CONFIRM_WORDS when `exact`) and, when not `exact`, a bare thanks (THANKS), and the NO-type * choice (key no / decline / done / cancel, or negative: true) also takes ANSWER_WORDS.no, so callers list only their * extras. A word after a negation in its clause is negated: it picks the NO-type choice; a `neutral` choice still * matches unless it follows its negation within two words; any other choice is blocked and NO answers. A deferral * (later, mañana) answers NO; a reply led by a bare 'no' turns YES into NO. With acceptOther, AGENT only when the * whole answer is an agent request and EXIT only on exit/quit/salir/abort (cancel is an answer there). */ export function pickChoice(answer: any, choices: any, acceptOther: any): any; export namespace ANSWER_WORDS { let yes: string[]; let no: string[]; let agent: string[]; let exit: string[]; let text: string[]; } export const CONFIRM_WORDS: string[]; //# sourceMappingURL=answer.d.ts.map