/**
 * HubSpot Node - Version 2.1
 * Discriminator: resource=engagement, operation=get
 */


interface Credentials {
  hubspotApi: CredentialReference;
  hubspotAppToken: CredentialReference;
  hubspotOAuth2Api: CredentialReference;
}

/** Get a contact */
export type HubspotV21EngagementGetParams = {
  resource: 'engagement';
  operation: 'get';
  authentication?: 'apiKey' | 'appToken' | 'oAuth2' | Expression<string>;
/**
 * Engagement to Get
 * @default {"mode":"list","value":""}
 */
    engagementId?: { __rl: true; mode: 'list' | 'id'; value: string; cachedResultName?: string };
};

export type HubspotV21EngagementGetOutput = {
  associations?: {
    companyIds?: Array<number>;
    contactIds?: Array<number>;
    dealIds?: Array<number>;
    ownerIds?: Array<number>;
    ticketIds?: Array<number>;
  };
  attachments?: Array<{
    id?: number;
  }>;
  engagement?: {
    active?: boolean;
    allAccessibleTeamIds?: Array<number>;
    bodyPreview?: string;
    bodyPreviewHtml?: string;
    bodyPreviewIsTruncated?: boolean;
    createdAt?: number;
    createdBy?: number;
    id?: number;
    lastUpdated?: number;
    modifiedBy?: number;
    ownerId?: number;
    portalId?: number;
    queueMembershipIds?: Array<number>;
    source?: string;
    timestamp?: number;
    type?: string;
    uid?: string;
  };
  metadata?: {
    cc?: Array<{
      email?: string;
      firstName?: string;
      lastName?: string;
      raw?: string;
    }>;
    html?: string;
    ownerIdsCc?: Array<number>;
    ownerIdsFrom?: Array<number>;
    ownerIdsTo?: Array<number>;
    status?: string;
    subject?: string;
    to?: Array<{
      email?: string;
      firstName?: string;
      lastName?: string;
      raw?: string;
    }>;
  };
};

export type HubspotV21EngagementGetNode = {
  type: 'n8n-nodes-base.hubspot';
  version: 2.1;
  credentials?: Credentials;
  config: NodeConfig<HubspotV21EngagementGetParams>;
  output?: Items<HubspotV21EngagementGetOutput>;
};