import type { EmailStatus } from './email-status'; export const JOB_CHANGE_STATUS_VALUES = [ 'moved', 'no_change', 'left_company', 'unknown', 'profile_unavailable', 'no_new_company', ] as const; export type JobChangeStatus = (typeof JOB_CHANGE_STATUS_VALUES)[number]; export type JobChangeGetterValue = { status: JobChangeStatus; date: string | null; new_company: string | null; new_title: string | null; }; export const PHONE_STATUS_VALUES = ['valid', 'invalid', 'unknown'] as const; export type PhoneStatus = (typeof PHONE_STATUS_VALUES)[number]; export const DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS = { id: { identity: true, valueKind: 'string' }, name: { identity: true, valueKind: 'string' }, email: { identity: true, valueKind: 'string' }, personal_email: { identity: true, valueKind: 'string' }, phone: { identity: true, valueKind: 'string' }, linkedin: { identity: true, valueKind: 'string' }, linkedin_url: { identity: true, valueKind: 'string' }, domain: { identity: true, valueKind: 'string' }, website: { identity: true, valueKind: 'string' }, first_name: { identity: true, valueKind: 'string' }, last_name: { identity: true, valueKind: 'string' }, full_name: { identity: true, valueKind: 'string' }, company: { identity: true, valueKind: 'string' }, company_name: { identity: true, valueKind: 'string' }, organization_name: { identity: true, valueKind: 'string' }, company_domain: { identity: true, valueKind: 'string' }, company_website: { identity: true, valueKind: 'string' }, company_linkedin_url: { identity: true, valueKind: 'string' }, title: { identity: false, valueKind: 'string' }, industry: { identity: false, valueKind: 'string' }, status: { identity: false, valueKind: 'string' }, job_change: { identity: false, valueKind: 'job_change' }, job_change_status: { identity: false, valueKind: 'job_change_status', enum: JOB_CHANGE_STATUS_VALUES, }, email_status: { identity: false, valueKind: 'email_status' }, phone_status: { identity: false, valueKind: 'phone_status', enum: PHONE_STATUS_VALUES, }, } as const; export type DeeplineExtractorTarget = keyof typeof DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS; export const DEEPLINE_EXTRACTOR_TARGETS = Object.keys( DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS, ) as DeeplineExtractorTarget[]; export type DeeplineEmailStatusGetterValue = EmailStatus; export type DeeplineGetterValueMap = { id: string; name: string; email: string; personal_email: string; phone: string; linkedin: string; linkedin_url: string; domain: string; website: string; first_name: string; last_name: string; full_name: string; company: string; company_name: string; organization_name: string; company_domain: string; company_website: string; company_linkedin_url: string; title: string; industry: string; status: string; job_change: JobChangeGetterValue; job_change_status: JobChangeStatus; email_status: EmailStatus; phone_status: PhoneStatus; }; export type DeeplineGetterValue< TTarget extends DeeplineExtractorTarget = DeeplineExtractorTarget, > = DeeplineGetterValueMap[TTarget]; export function isDeeplineExtractorTarget( value: string, ): value is DeeplineExtractorTarget { return value in DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS; }