import { AllowedValueWithCode } from '../../commonStateTypes/allowedValue'; import { ID } from '../../commonStateTypes/common'; import { ZeniDate } from '../../zeniDayJS'; import { User } from '../user/userState'; export interface VerticalProductServices { isEnabled: boolean; productServiceKey: string; } export interface ChurnProbabilityReason { text: string; } export interface CompanyRunway { runwayMonths: number | undefined; } export interface AdditionalChurnFactor { code: string; value: string; } export interface AdditionalChurnFactors { decreasingChurnProbability: AdditionalChurnFactor[]; increasingChurnProbability: AdditionalChurnFactor[]; } export interface CompanyHealthMetric { additionalChurnFactors: AdditionalChurnFactors; churnProbabilityReason: ChurnProbabilityReason[]; companyId: ID; lastEngagements: LastEngagement[]; updatedByUserId: ID; verticalProductServices: VerticalProductServices[]; churnProbabilityPercentage?: number; companyEngagementMetricsUpdatedAt?: ZeniDate; customerLastDashboardVisit?: ZeniDate; customerSatisfactionScore?: number; externalProductServiceExposure?: AllowedValueWithCode; netPromoterScore?: number; runway?: CompanyRunway; subscriptionRenewalDate?: ZeniDate; subscriptionStartDate?: ZeniDate; updatedByUser?: User; } export interface CompanyHealthState { companyHealthStateByCompanyId: Record; } export interface LastEngagement { createdAt: ZeniDate; subject: string; type: string; attendees?: string; cc?: string; from?: string; hostName?: string; scheduledAt?: ZeniDate; to?: string; }