import { INodeProperties } from 'n8n-workflow';
import { addDescriptions } from '../../../helpers/deduplicate';
import { getTopnDescription } from './operations/getTopn.descriptions';
import { getSwarmsDescription } from './operations/getSwarms.descriptions';
import { getSwarmDescription } from './operations/getSwarm.descriptions';

/**
 * Operation selector for the swarm resource
 */
export const swarmOperationSelector: INodeProperties = {
	displayName: 'Operation',
	name: 'operation',
	type: 'options',
	noDataExpression: true,
	displayOptions: {
		show: {
			resource: ['swarm'],
			domain: ['monitoring'],
		},
	},
	options: [
		{
			name: 'Get Topn',
			value: 'getTopn',
			description: 'Top N Swarms By Bandwidth Usage',
			action: 'Get Topn',
		},
		{
			name: 'Get Topn',
			value: 'getTopn',
			description: 'Top N Swarms By Clients Count',
			action: 'Get Topn',
		},
		{
			name: 'Get Swarms',
			value: 'getSwarms',
			description: 'List Swarms',
			action: 'Get Swarms',
		},
		{
			name: 'Get Swarm',
			value: 'getSwarm',
			description: 'Swarm Details',
			action: 'Get Swarm',
		},
	],
	default: 'getTopn',
};

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

// Add each operation's descriptions
addDescriptions(swarmDescriptions, getTopnDescription);
addDescriptions(swarmDescriptions, getSwarmsDescription);
addDescriptions(swarmDescriptions, getSwarmDescription);
