import { ServicePackage, VehicleDamage } from "./Enums"
import { IAppointmentDetails, IClaimDetails, ICustomerDetails, IEndorsementDetails, IPartQuestion, IPaymentDetails, IVehicleDetails } from "./CustomerDetails"
import IBailoutFlags from "./IBailoutFlags"

export interface ITestData {
    isMockTesting: boolean,
    clientTag: string,
    isDuplicateClaim: boolean,
    isPolicyFound: boolean,     // Effective difference between advanced and essential
    isUseVehicleOnPolicy: boolean,  // Should we use the vehicle on the policy?
    isVehicleLookupValidations: boolean,  // Should we validate vehicle lookup?
    isAddressLookupValidations: boolean,  // Should we validate address lookup errors?
    isVehicleSelectBailout: boolean,      // Should we bailout on vehicle lookup?
    isNoComp: boolean,              // Is this a NoComp policy?
    isItac: boolean,                // Is this an ITAC scenario?
    hasStateLawPopup: boolean,      // Are we expecting a state law pop-up on ProviderSelectionPage?
    hasOemEndorsement: boolean,     // OEM Endorsement does not appear on endorsements page, so it has a separate flag.
    hasMilitaryWarning: boolean,    // Are we expecting military base warning on the Service Location page?
    bailoutFlags: Partial<IBailoutFlags>,
    endorsements: IEndorsementDetails[],
    isReplace: boolean,
    partQuestions: IPartQuestion[],         // part-questions page has unrelated part questions like leather seats
    vehiclePartQuestions: IPartQuestion[],  // vehicle-parts page usually has glass question
    capabilityQuestions: IPartQuestion[],   // Capability questions page usually has questions about autonomous driving features
    policySoap: string,             // Include policy soap if you want to create a mock policy
    isSafelite: boolean,
    servicePackage: ServicePackage,
    customerDetails: ICustomerDetails,
    claimDetails: IClaimDetails,
    vehicleDetails: IVehicleDetails,
    editVehicleDetails: IVehicleDetails,    // Vehicle details entered after clicking "Edit vehicle" on Vehicle Details page
    otherVehiclesOnPolicy: IVehicleDetails[],   // IF defined, we validate that the vehicles are present.
    vehicleDamage: VehicleDamage[],      // Array of vehicle damage
    appointmentDetails: IAppointmentDetails,
    paymentDetails: IPaymentDetails     // Payment information
    isRecalNotification: boolean,
    isRecalWarning: boolean,
    isSeparateApptsWarning: boolean,    // IF true, check for the separate appts warning on VehicleDamagePage
    isAuthenticationRequired: boolean,
    isMoldingQuestion: boolean,
    isNonServiceable: boolean,      // For the flow where a a non-serviceable vehicle is selected on lookup
    isNonServiceableVin: boolean,   // For the flow where a serviceable vehicle is selected on lookup, but then the VIN of a non-serviceable vehicle is entered
}
