import { Address } from '../air-address/air-address.types'; import { ExpressionInput } from '@briza/illogical/types/parser'; export declare enum QuestionType { SingleLine = "SingleLine", MultiLine = "MultiLine", Number = "Number", Decimal = "Decimal", Currency = "Currency", Select = "Select", MultiSelect = "MultiSelect", Date = "Date", DateYear = "DateYear", Boolean = "Boolean", Address = "Address", Void = "Void", ClassOfBusiness = "ClassOfBusiness", WcClassCode = "WcClassCode", WorkersCompensationClassCode = "WorkersCompensationClassCode", ProductType = "ProductType" } export interface Question { id: string; type: QuestionType; options?: QuestionOption[]; currency?: string; question: string; questionWithinGroup?: string; shortQuestion?: string; default?: AnswerValue; ui: QuestionUI; required?: boolean; validation?: QuestionValidationRule[]; condition?: ExpressionInput; exclusion?: boolean; } export interface QuestionOption { label: string; key: string | number | boolean; } export type WorkersCompensationClassValue = { code: string; industry: string; }; /** * This constant represents the undefined answer * value handled internally, i.e. answer not * provided by user, optional, does not have * to be validated. */ export declare const UnansweredValue: null; export declare const NoneSelected = "none-apply"; export type AnswerValue = string | number | boolean | string[] | number[] | boolean[] | Address | WorkersCompensationClassValue | typeof UnansweredValue; export interface QuestionUI { label?: string; description?: string; placeholder?: string; mask?: string; control?: QuestionUIControlType; hint?: string[]; validation?: QuestionUIValidation; } export declare enum QuestionValidationRuleType { Present = "present", Equal = "equal", Pattern = "pattern", Range = "range", Length = "length", Exclude = "exclude", Include = "include", Date = "date", Year = "year", Condition = "condition" } export interface QuestionValidationRule { type: QuestionValidationRuleType; errorMessage?: string; min?: number | undefined | null; max?: number | undefined | null; value?: AnswerValue; pattern?: string; exclusions?: string[] | number[]; inclusions?: string[] | number[]; start?: string | number; end?: string | number; condition?: ExpressionInput; } export declare enum QuestionUIControlType { NA = "", Dropdown = "dropdown", Chips = "chips", Toggle = "toggle", Checkbox = "checkbox" } export interface QuestionUIValidation { present?: string; required?: string; range?: string; pattern?: string; equal?: string; length?: string; exclude?: string; include?: string; date?: string; year?: string; condition?: string; } export interface QuestionAnswer { answer: AnswerValue; question: Question; }