// api/monitoring/ap/ap.descriptions.ts
import { INodeProperties } from 'n8n-workflow';
import { addDescriptions } from '../../../helpers/deduplicate';
import { getApsDescription } from './operations/getAps.descriptions';
import { getBssidsDescription } from './operations/getBssids.descriptions';
import { getSerialDescription } from './operations/getSerial.descriptions';
import { deleteSerialDescription } from './operations/deleteSerial.descriptions';
import { getRf_summaryDescription } from './operations/getRf_summary.descriptions';
import { getBandwidth_usageDescription } from './operations/getBandwidth_usage.descriptions';
import { getTopnDescription } from './operations/getTopn.descriptions';
import { getClientMatchSteerHistoryDescription } from './operations/getClientMatchSteerHistory.descriptions';
import { getClientMatchInfoDescription } from './operations/getClientMatchInfo.descriptions';
import { initiateClientSteerDescription } from './operations/initiateClientSteer.descriptions';

/**
 * Operation selector for the ap resource
 */
export const apOperationSelector: INodeProperties = {
	displayName: 'Operation',
	name: 'operation',
	type: 'options',
	noDataExpression: true,
	displayOptions: {
		show: {
			resource: ['ap'],
			domain: ['monitoring'],
		},
	},
	options: [
		{
			name: 'Get Aps',
			value: 'getAps',
			description: 'List Access Points',
			action: 'Get Aps',
		},
		{
			name: 'Get Bssids',
			value: 'getBssids',
			description: 'List BSSIDs',
			action: 'Get Bssids',
		},
		{
			name: 'Get Serial',
			value: 'getSerial',
			description: 'AP Details',
			action: 'Get Serial',
		},
		{
			name: 'Delete Serial',
			value: 'deleteSerial',
			description: 'Delete AP',
			action: 'Delete Serial',
		},
		{
			name: 'Get Rf_summary',
			value: 'getRf_summary',
			description: 'AP RF Summary',
			action: 'Get Rf_summary',
		},
		{
			name: 'Get Bandwidth_usage',
			value: 'getBandwidth_usage',
			description: 'AP Bandwidth Usage',
			action: 'Get Bandwidth_usage',
		},
		{
			name: 'Get Topn',
			value: 'getTopn',
			description: 'Top N AP Details',
			action: 'Get Topn',
		},
		{
			name: 'Get Client Match Steer History',
			value: 'getClientMatchSteerHistory',
			description: 'Get client steering history for an AP (undocumented API)',
			action: 'Get Client Match Steer History',
		},
		{
			name: 'Get Client Match Info',
			value: 'getClientMatchInfo',
			description: 'Get client match information for an AP (undocumented API)',
			action: 'Get Client Match Info',
		},
		{
			name: 'Initiate Client Steer',
			value: 'initiateClientSteer',
			description: 'Initiate client steering to another AP (undocumented API)',
			action: 'Initiate Client Steer',
		},
	],
	default: 'getAps',
};

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

// Add each operation's descriptions
addDescriptions(apDescriptions, getApsDescription);
addDescriptions(apDescriptions, getBssidsDescription);
addDescriptions(apDescriptions, getSerialDescription);
addDescriptions(apDescriptions, deleteSerialDescription);
addDescriptions(apDescriptions, getRf_summaryDescription);
addDescriptions(apDescriptions, getBandwidth_usageDescription);
addDescriptions(apDescriptions, getTopnDescription);
addDescriptions(apDescriptions, getClientMatchSteerHistoryDescription);
addDescriptions(apDescriptions, getClientMatchInfoDescription);
addDescriptions(apDescriptions, initiateClientSteerDescription);
