/* eslint-disable @typescript-eslint/no-explicit-any */ import { IAdditionalCredentialOptions, IAllExecuteFunctions, IBinaryData, ICredentialTestFunctions as ICredentialTestFunctionsBase, IDataObject, IExecuteFunctions as IExecuteFunctionsBase, IExecuteSingleFunctions as IExecuteSingleFunctionsBase, IHookFunctions as IHookFunctionsBase, IHttpRequestOptions, ILoadOptionsFunctions as ILoadOptionsFunctionsBase, INodeExecutionData, IOAuth2Options, IPairedItemData, IPollFunctions as IPollFunctionsBase, IPollResponse, ITriggerFunctions as ITriggerFunctionsBase, ITriggerResponse, IWebhookFunctions as IWebhookFunctionsBase, IWorkflowSettings as IWorkflowSettingsWorkflow, NodeExecutionWithMetadata, } from 'n8n-workflow'; import type { OptionsWithUri, OptionsWithUrl } from 'request'; import type { RequestPromiseAPI, RequestPromiseOptions } from 'request-promise-native'; export interface IProcessMessage { data?: any; type: string; } export interface IExecuteFunctions extends IExecuteFunctionsBase { helpers: { httpRequest(requestOptions: IHttpRequestOptions): Promise; prepareBinaryData( binaryData: Buffer, filePath?: string, mimeType?: string, ): Promise; getBinaryDataBuffer(itemIndex: number, propertyName: string): Promise; setBinaryDataBuffer(data: IBinaryData, binaryData: Buffer): Promise; request: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise; requestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions, ): Promise; requestOAuth2( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | RequestPromiseOptions, oAuth2Options?: IOAuth2Options, ): Promise; requestOAuth1( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | RequestPromiseOptions, ): Promise; returnJsonArray(jsonData: IDataObject | IDataObject[]): INodeExecutionData[]; normalizeItems(items: INodeExecutionData | INodeExecutionData[]): INodeExecutionData[]; httpRequestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions, ): Promise; constructExecutionMetaData( inputData: INodeExecutionData[], options: { itemData: IPairedItemData | IPairedItemData[] }, ): NodeExecutionWithMetadata[]; }; } export interface IExecuteSingleFunctions extends IExecuteSingleFunctionsBase { helpers: { getBinaryDataBuffer(propertyName: string, inputIndex?: number): Promise; setBinaryDataBuffer(data: IBinaryData, binaryData: Buffer): Promise; httpRequest(requestOptions: IHttpRequestOptions): Promise; prepareBinaryData( binaryData: Buffer, filePath?: string, mimeType?: string, ): Promise; request: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise; requestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions, ): Promise; requestOAuth2( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | RequestPromiseOptions, oAuth2Options?: IOAuth2Options, ): Promise; requestOAuth1( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | RequestPromiseOptions, ): Promise; httpRequestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions, ): Promise; }; } export interface IPollFunctions extends IPollFunctionsBase { helpers: { httpRequest(requestOptions: IHttpRequestOptions): Promise; prepareBinaryData( binaryData: Buffer, filePath?: string, mimeType?: string, ): Promise; request: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise; requestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions, ): Promise; requestOAuth2( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | RequestPromiseOptions, oAuth2Options?: IOAuth2Options, ): Promise; requestOAuth1( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | RequestPromiseOptions, ): Promise; returnJsonArray(jsonData: IDataObject | IDataObject[]): INodeExecutionData[]; httpRequestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions, ): Promise; }; } export interface IResponseError extends Error { statusCode?: number; } export interface ITriggerFunctions extends ITriggerFunctionsBase { helpers: { httpRequest(requestOptions: IHttpRequestOptions): Promise; prepareBinaryData( binaryData: Buffer, filePath?: string, mimeType?: string, ): Promise; request: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise; requestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions, ): Promise; requestOAuth2( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | RequestPromiseOptions, oAuth2Options?: IOAuth2Options, ): Promise; requestOAuth1( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | RequestPromiseOptions, ): Promise; returnJsonArray(jsonData: IDataObject | IDataObject[]): INodeExecutionData[]; httpRequestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions, ): Promise; }; } export interface IUserSettings { encryptionKey?: string; tunnelSubdomain?: string; instanceId?: string; } export interface ILoadOptionsFunctions extends ILoadOptionsFunctionsBase { helpers: { httpRequest(requestOptions: IHttpRequestOptions): Promise; request?: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise; requestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions, ): Promise; requestOAuth2?: ( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | RequestPromiseOptions, oAuth2Options?: IOAuth2Options, ) => Promise; requestOAuth1?( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | RequestPromiseOptions, ): Promise; httpRequestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions, ): Promise; }; } export interface ICredentialTestFunctions extends ICredentialTestFunctionsBase { helpers: { request: RequestPromiseAPI; }; } export interface IHookFunctions extends IHookFunctionsBase { helpers: { httpRequest(requestOptions: IHttpRequestOptions): Promise; request: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise; requestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions, ): Promise; requestOAuth2( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | RequestPromiseOptions, oAuth2Options?: IOAuth2Options, ): Promise; requestOAuth1( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | RequestPromiseOptions, ): Promise; httpRequestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions, ): Promise; }; } export interface IWebhookFunctions extends IWebhookFunctionsBase { helpers: { httpRequest(requestOptions: IHttpRequestOptions): Promise; prepareBinaryData( binaryData: Buffer, filePath?: string, mimeType?: string, ): Promise; request: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise; requestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions, ): Promise; requestOAuth2( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | RequestPromiseOptions, oAuth2Options?: IOAuth2Options, ): Promise; requestOAuth1( this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | RequestPromiseOptions, ): Promise; returnJsonArray(jsonData: IDataObject | IDataObject[]): INodeExecutionData[]; httpRequestWithAuthentication( this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions, ): Promise; }; } export interface IWorkflowSettings extends IWorkflowSettingsWorkflow { errorWorkflow?: string; timezone?: string; saveManualRuns?: boolean; } export interface IWorkflowData { pollResponses?: IPollResponse[]; triggerResponses?: ITriggerResponse[]; } export interface IBinaryDataConfig { mode: 'default' | 'filesystem'; availableModes: string; localStoragePath: string; binaryDataTTL: number; persistedBinaryDataTTL: number; } export interface IBinaryDataManager { init(startPurger: boolean): Promise; storeBinaryData(binaryBuffer: Buffer, executionId: string): Promise; retrieveBinaryDataByIdentifier(identifier: string): Promise; markDataForDeletionByExecutionId(executionId: string): Promise; deleteMarkedFiles(): Promise; deleteBinaryDataByIdentifier(identifier: string): Promise; duplicateBinaryDataByIdentifier(binaryDataId: string, prefix: string): Promise; deleteBinaryDataByExecutionId(executionId: string): Promise; persistBinaryDataForExecutionId(executionId: string): Promise; }