import { FormGroup, FormArray, FormControl } from '@angular/forms';
export type AnswerType = 'descriptive' | 'yes/no' | 'multiplechoicesingle' | 'multiplechoicemultiple' | 'descriptiveImage' | 'image' | 'video' | 'multipleImage' | 'date' | 'linearscale' | 'time' | 'dropdown' | 'image/video';
export type DescriptiveType = 'text' | 'number' | '';
export type ValidationType = 'Capture Image' | 'Descriptive Answer' | 'Capture Video' | '';
export interface ITask {
    alert: {
        usageExceeds: any | null;
        alertsTo: any[];
    };
    _id: string;
    type: string;
    checkListNumber: number;
    checkListName: string;
    checkListDescription: string;
    createdBy: string;
    createdByName: string;
    publish: boolean;
    schedule: string;
    scheduleRepeatedDay: string[];
    scheduleStartTime: string;
    scheduleEndTime: string;
    configStartDate: string | null;
    configEndDate: string | null;
    specificDate: string[];
    scheduleWeekDays: string[];
    scheduleRepeatedMonthSetup: string;
    scheduleRepeatedMonthDate: string;
    allowedOverTime: boolean;
    allowedStoreLocation: boolean;
    detectionArea: any[];
    client_id: string;
    questionCount: number;
    storeCount: number;
    checkListType: string;
    isdeleted: boolean;
    markasread: boolean;
    allowedMultiSubmit: boolean;
    allowOnce: boolean;
    scheduleRepeatedMonthWeek: string;
    scheduleRepeatedType: string;
    scheduleDate: string | null;
    createdAt: string;
    updatedAt: string;
    locationCount: number;
    publishDate: string;
    scheduleEndTimeISO: string;
    scheduleStartTimeISO: string;
    assignedUsers: any[];
    removedUsers: any[];
    sections: Section[];
}
export interface Section {
    id: string;
    name: string;
    questions: Question[];
}
export interface Question {
    qno?: number;
    qname: string;
    answerType: AnswerType;
    allowMultiple?: boolean;
    runAI: boolean;
    runAIDescription: string;
    allowUploadfromGallery: boolean;
    linkType: boolean;
    questionReferenceImage: string[];
    answers: Answer[];
    descriptivetype?: DescriptiveType;
}
export interface Answer {
    answer: string;
    answeroptionNumber?: number;
    sopFlag: boolean;
    validation: boolean;
    validationType: ValidationType;
    referenceImage: string[];
    showLinked: boolean;
    linkedQuestion: number;
    nestedQuestion: any[];
    validationAnswer?: string;
    allowUploadfromGallery?: boolean;
    runAI?: boolean;
    rangeStart?: number;
    rangeEnd?: number;
    linearType?: 'degree' | 'number' | 'percentage';
    descriptivetype?: DescriptiveType;
    index?: number;
    limit?: boolean;
    imageLimit?: number;
    videoLimit?: number;
    historicDate?: boolean;
}
export interface TaskForm {
    checklistName: FormControl<string | null>;
    checklistDescription: FormControl<string | null>;
    sections: FormArray<FormGroup<SectionForm>>;
}
export interface SectionForm {
    id: FormControl<string | null>;
    name: FormControl<string | null>;
    oldName?: FormControl<string[] | null | undefined>;
    questions: FormArray<FormGroup<QuestionForm>>;
}
export interface QuestionForm {
    qno: FormControl<number | null>;
    qname: FormControl<string | null>;
    oldQname?: FormControl<string[] | null | undefined>;
    answerType: FormControl<AnswerType | null>;
    allowMultiple?: FormControl<boolean | null>;
    runAI: FormControl<boolean | null>;
    runAIDescription: FormControl<string | null>;
    allowUploadfromGallery: FormControl<boolean | null>;
    linkType: FormControl<boolean | null>;
    questionReferenceImage: FormControl<string[] | null>;
    descriptivetype?: FormControl<DescriptiveType | null>;
    answers: FormArray<FormGroup<AnswerForm>>;
}
export interface AnswerForm {
    answer: FormControl<string | null>;
    answeroptionNumber: FormControl<number | null>;
    sopFlag: FormControl<boolean | null>;
    validation: FormControl<boolean | null>;
    validationType: FormControl<ValidationType | null>;
    referenceImage: FormControl<string[] | null>;
    showLinked: FormControl<boolean | null>;
    linkedQuestion: FormControl<number | null>;
    nestedQuestion: FormControl<any | null>;
    validationAnswer?: FormControl<string | null>;
    descriptivetype?: FormControl<DescriptiveType | null>;
    allowUploadfromGallery?: FormControl<boolean | null>;
    runAI?: FormControl<boolean | null>;
    rangeStart?: FormControl<number | null>;
    rangeEnd?: FormControl<number | null>;
    linearType?: FormControl<'degree' | 'number' | 'percentage' | null>;
    index: FormControl<number | null>;
    limit?: FormControl<boolean | null>;
    imageLimit?: FormControl<number | null>;
    videoLimit?: FormControl<number | null>;
    historicDate?: FormControl<boolean | null>;
}
interface DateRange {
    startDate: string;
    endDate: string;
}
interface Store {
    storeId: string;
    storeName: string;
    checked: boolean;
}
interface Group {
    city: string;
    checked: boolean;
}
export interface HeaderFilter {
    client: string;
    clientName: string;
    clients: string[];
    store: null | string;
    date: DateRange;
    stores: Store[];
    group: Group[];
}
export {};
