import { INodeProperties } from 'n8n-workflow';
import { addDescriptions } from '../../../helpers/deduplicate';
import { getInsightsNetworkDescription } from './operations/getInsightsNetwork.descriptions';
import { getInsightsSiteDescription } from './operations/getInsightsSite.descriptions';
import { getInsightsApDescription } from './operations/getInsightsAp.descriptions';
import { getInsightsClientDescription } from './operations/getInsightsClient.descriptions';
import { getInsightsGatewayDescription } from './operations/getInsightsGateway.descriptions';
import { getInsightsSwitchDescription } from './operations/getInsightsSwitch.descriptions';

/**
 * Operation selector for the insights resource
 */
export const insightsOperationSelector: INodeProperties = {
	displayName: 'Operation',
	name: 'operation',
	type: 'options',
	noDataExpression: true,
	displayOptions: {
		show: {
			resource: ['insights'],
			domain: ['aiops'],
		},
	},
	options: [
		{
			name: 'List AI Insights for a Network',
			value: 'getInsightsNetwork',
			description: 'Get the list of insights for a network for a given time duration',
			action: 'List AI insights for a network',
		},
		{
			name: 'List AI Insights for a Site',
			value: 'getInsightsSite',
			description: 'Get the list of insights for a site for a given time duration',
			action: 'List AI insights for a site',
		},
		{
			name: 'List AI Insights for an AP',
			value: 'getInsightsAp',
			description: 'Get the list of insights for an access point for a given time duration',
			action: 'List AI insights for an AP',
		},
		{
			name: 'List AI Insights for a Client',
			value: 'getInsightsClient',
			description: 'Get the list of insights for a client for a given time duration',
			action: 'List AI insights for a client',
		},
		{
			name: 'List AI Insights for a Gateway',
			value: 'getInsightsGateway',
			description: 'Get the list of insights for a gateway for a given time duration',
			action: 'List AI insights for a gateway',
		},
		{
			name: 'List AI Insights for a Switch',
			value: 'getInsightsSwitch',
			description: 'Get the list of insights for a switch for a given time duration',
			action: 'List AI insights for a switch',
		},
	],
	default: 'getInsightsNetwork',
};

// Combined descriptions for all operations in this resource
export const insightsDescriptions: INodeProperties[] = [insightsOperationSelector];

// Add each operation's descriptions
addDescriptions(insightsDescriptions, getInsightsNetworkDescription);
addDescriptions(insightsDescriptions, getInsightsSiteDescription);
addDescriptions(insightsDescriptions, getInsightsApDescription);
addDescriptions(insightsDescriptions, getInsightsClientDescription);
addDescriptions(insightsDescriptions, getInsightsGatewayDescription);
addDescriptions(insightsDescriptions, getInsightsSwitchDescription);
