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


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

/** Get many contacts */
export type HubspotV21EngagementGetAllParams = {
  resource: 'engagement';
  operation: 'getAll';
  authentication?: 'apiKey' | 'appToken' | 'oAuth2' | Expression<string>;
/**
 * Whether to return all results or only up to a given limit
 * @default false
 */
    returnAll?: boolean | Expression<boolean>;
/**
 * Max number of results to return
 * @displayOptions.show { returnAll: [false] }
 * @default 100
 */
    limit?: number | Expression<number>;
};

export type HubspotV21EngagementGetAllOutput = {
  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;
  };
  metadata?: {
    body?: string;
    forObjectType?: string;
    isAllDay?: boolean;
    priority?: string;
    reminders?: Array<number>;
    sendDefaultReminder?: boolean;
    status?: string;
    subject?: string;
    taskType?: string;
  };
  scheduledTasks?: Array<{
    engagementId?: number;
    engagementType?: string;
    portalId?: number;
    taskType?: string;
    timestamp?: number;
    uuid?: string;
  }>;
};

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