import { INodeProperties } from 'n8n-workflow';
import { addDescriptions } from '../../../helpers/deduplicate';
import { getMcsDescription } from './operations/getMcs.descriptions';
import { getSerialDescription } from './operations/getSerial.descriptions';
import { deleteSerialDescription } from './operations/deleteSerial.descriptions';
import { getUsageDescription } from './operations/getUsage.descriptions';
import { getPortsDescription } from './operations/getPorts.descriptions';
import { getInfoDescription } from './operations/getInfo.descriptions';
import { getMobility_controllersDescription } from './operations/getMobility_controllers.descriptions';

/**
 * Operation selector for the mobilitycontroller resource
 */
export const mobilitycontrollerOperationSelector: INodeProperties = {
	displayName: 'Operation',
	name: 'operation',
	type: 'options',
	noDataExpression: true,
	displayOptions: {
		show: {
			resource: ['mobilitycontroller'],
			domain: ['monitoring'],
		},
	},
	options: [
		{
			name: 'Get Mcs',
			value: 'getMcs',
			description: 'List Mobility Controllers',
			action: 'Get Mcs',
		},
		{
			name: 'Get Serial',
			value: 'getSerial',
			description: 'Mobility Controller Details',
			action: 'Get Serial',
		},
		{
			name: 'Delete Serial',
			value: 'deleteSerial',
			description: 'Delete Mobility Controller',
			action: 'Delete Serial',
		},
		{
			name: 'Get Usage',
			value: 'getUsage',
			description: 'Mobility Controllers Ports Bandwidth Usage',
			action: 'Get Usage',
		},
		{
			name: 'Get Ports',
			value: 'getPorts',
			description: 'Mobility Controllers Ports Details',
			action: 'Get Ports',
		},
		{
			name: 'Get Info',
			value: 'getInfo',
			description: 'Mobility Controllers VLAN details',
			action: 'Get Info',
		},
		{
			name: 'Get Mobility_controllers',
			value: 'getMobility_controllers',
			description: 'List Mobility Controllers',
			action: 'Get Mobility_controllers',
		},
		{
			name: 'Get Serial',
			value: 'getSerial',
			description: 'Mobility Controller Details',
			action: 'Get Serial',
		},
		{
			name: 'Delete Serial',
			value: 'deleteSerial',
			description: 'Delete Mobility Controller',
			action: 'Delete Serial',
		},
	],
	default: 'getMcs',
};

// Combined descriptions for all operations in this resource
export const mobilitycontrollerDescriptions: INodeProperties[] = [
	mobilitycontrollerOperationSelector,
];

// Add each operation's descriptions
addDescriptions(mobilitycontrollerDescriptions, getMcsDescription);
addDescriptions(mobilitycontrollerDescriptions, getSerialDescription);
addDescriptions(mobilitycontrollerDescriptions, deleteSerialDescription);
addDescriptions(mobilitycontrollerDescriptions, getUsageDescription);
addDescriptions(mobilitycontrollerDescriptions, getPortsDescription);
addDescriptions(mobilitycontrollerDescriptions, getInfoDescription);
addDescriptions(mobilitycontrollerDescriptions, getMobility_controllersDescription);
