import { Theme } from './utils/customer-theme-settings.model'; import { Client } from './third-party.model'; import { TimeModuleSettings } from './utils/customer-time-settings.model'; import { PluginTypes } from './enums/plugin-types.enum'; import { CustomerModules } from './enums/customer-modules.enum'; import { CostCenter } from './invoice.model'; export interface Customer { id: string; code: string; name: string; email: string; phone: string; currency: string; street: string; number: string; postalCode: string; location: string; approved: boolean; clients: Client[]; theme: Theme; vacationReason: string; profileSettings: CustomerProfileSettings; managementSettings: CustomerManagementSettings; timeModuleSettings: TimeModuleSettings; accountingModuleSettings: AccountingModuleSettings; pluginsSettings: PluginsSettings; integrationSettings: CustomerIntegrationSettings; conceptTranslationList: ConceptTranslation[]; enabledModules: CustomerModules[]; enabledPlugins: PluginTypes[]; paymentMethods: PaymentMethod[]; subscription: Subscription; vatNumber: string; vatCountry: string; apiKeys: string[]; } export interface AccessGroup { code: string; name: string; description: string; rights: any; } export interface ConceptTranslation { key: string; module: string; translationList: ModuleTranslation[]; } export interface ModuleTranslation { language: string; value: string; } export declare class CustomerPipelineStateType { color: string; name: string; code: string; personaType: string; nextStatus: string[]; initialStatus: boolean; } export declare class AccountingModuleSettings { invoicesType: string[]; taxListType: string[]; costCenters: CostCenter[]; } export declare class JobType { icon: string; name: string; code: string; viewType: string; managers: string[]; } export declare class CustomerLeadType { icon: string; name: string; code: string; viewType: string; managers: string[]; } export declare class ArticleType { name: string; code: string; syncDefault: boolean; } export declare class PluginsSettings { articleTypes: ArticleType[]; } export interface Subscription { subscriptionStart: string; subscriptionEnd: string; daysUntilDue: number; startTrial: string; endTrial: string; type: string; discounts: ModuleInfo[]; billings: ModuleInfo[]; registrations: Registration[]; } export interface ModuleInfo { amount: number; module: string; quantity: number; } export interface Registration { registeredModules: string[]; userCode: string; email: string; active: boolean; infos: RegistrationInfo[]; } export interface RegistrationInfo { moduleType: string; registrationType: string; createdAt: string; } export interface PaymentMethod { last4Digits: string; expireMonth: number; expireYear: number; paymentCode: string; cardType: string; defaultCard: boolean; } export interface CustomerSMTPIntegration { host: string; port: number; username: string; password: string; notificationsEmail: string; } export declare enum CustomerIntegrationPartner { SLACK = "SLACK", MICROSOFT_TEAMS = "MICROSOFT_TEAMS" } export declare enum CustomerIntegratedNotification { NEW_LEAD = "NEW_LEAD", NEW_JOB = "NEW_JOB", CANDIDATE_RECOMMENDED = "CANDIDATE_RECOMMENDED", CANDIDATE_REJECTED = "CANDIDATE_REJECTED", CANDIDATE_SHARED_WITH_CUSTOMER = "CANDIDATE_SHARED_WITH_CUSTOMER", CANDIDATE_APPROVED_BY_CUSTOMER = "CANDIDATE_APPROVED_BY_CUSTOMER", CANDIDATE_REJECTED_BY_CUSTOMER = "CANDIDATE_REJECTED_BY_CUSTOMER", USER_JOINED = "USER_JOINED", CANDIDATE_APPLICATION = "CANDIDATE_APPLICATION" } export interface CustomerIntegrationSettings { integratedNotifications: Map>; smtpIntegration: CustomerSMTPIntegration; } export interface CustomerProfileType { code: string; name: string; viewType: string; managers: string[]; } export interface CustomerProfileSettings { candidateTypes: CustomerProfileType[]; customerContactTypes: CustomerProfileType[]; providerContactTypes: CustomerProfileType[]; candidateStates: CustomerPipelineStateType[]; customerContactStates: CustomerPipelineStateType[]; providerContactStates: CustomerPipelineStateType[]; candidateLeadTypes: CustomerLeadType[]; customerLeadTypes: CustomerLeadType[]; candidatePositions: string[]; } export interface CustomerManagementSettings { minBusinessMeetingsScheduled: number; minBusinessMeetings: number; minBusinessRecommendedCandidates: number; minBusinessHires: number; maxBusinessRejectedCandidates: number; minRecruitmentInterviewScheduled: number; minRecruitmentInterview: number; minRecruitmentRecommendedCandidates: number; minRecruitmentHires: number; maxRecruitmentRejectedCandidates: number; }