export const HUBSPOT_OBJECT_TYPES = ['companies', 'contacts', 'deals'] as const;
export type HubSpotObjectType = (typeof HUBSPOT_OBJECT_TYPES)[number];

export const HUBSPOT_REQUIRED_SCOPES = [
  'crm.objects.companies.read',
  'crm.objects.contacts.read',
  'crm.objects.deals.read',
] as const;
export type HubSpotRequiredScope = (typeof HUBSPOT_REQUIRED_SCOPES)[number];

export const HUBSPOT_CONNECTION_STATUSES = [
  'active',
  'reauthorization_required',
  'disconnected',
  'error',
] as const;
export type HubSpotConnectionStatus = (typeof HUBSPOT_CONNECTION_STATUSES)[number];

export const HUBSPOT_SYNC_PHASES = ['initial', 'reconcile'] as const;
export type HubSpotSyncPhase = (typeof HUBSPOT_SYNC_PHASES)[number];

export const HUBSPOT_EVENT_STATUSES = ['pending', 'processing', 'processed', 'failed'] as const;
export type HubSpotEventStatus = (typeof HUBSPOT_EVENT_STATUSES)[number];

export const HUBSPOT_JOB_KINDS = ['full_sync', 'fetch_record', 'reconcile'] as const;
export type HubSpotJobKind = (typeof HUBSPOT_JOB_KINDS)[number];

export const HUBSPOT_JOB_STATUSES = ['pending', 'processing', 'completed', 'failed'] as const;
export type HubSpotJobStatus = (typeof HUBSPOT_JOB_STATUSES)[number];

export interface HubSpotRecord {
  id: string;
  properties: Record<string, string | null>;
  createdAt: string;
  updatedAt: string;
  archived: boolean;
}

export interface HubSpotRecordPage {
  results: HubSpotRecord[];
  nextAfter: string | null;
}
