// api/descriptions.ts
// Import other domain descriptions as needed
import { INodeProperties } from 'n8n-workflow';
import { monitoringDescriptions } from './monitoring/monitoring.descriptions';
import { firmwareDescriptions } from './firmware/firmware.descriptions';
import { aiopsDescriptions } from './aiops/aiops.descriptions';
import { topologyDescriptions } from './topology/topology.descriptions'; // New import
import { rapidsDescriptions } from './rapids/rapids.descriptions';
import { inventoryDescriptions } from './inventory/inventory.descriptions';
import { keymanagementDescriptions } from './keymanagement/keymanagement.descriptions';
import { troubleshootingDescriptions } from './troubleshooting/troubleshooting.operations';

// Domain selection
const domainSelector: INodeProperties = {
	displayName: 'Domain',
	name: 'domain',
	type: 'options',
	options: [
		{
			name: 'AIOps',
			value: 'aiops',
			description: 'AI-driven operations and insights',
		},
		{
			name: 'Firmware',
			value: 'firmware',
			description: 'Manage device firmware',
		},
		{
			name: 'Inventory',
			value: 'inventory',
			description: 'Manage device inventory',
		},
		{
			name: 'Monitoring',
			value: 'monitoring',
			description: 'Monitor network devices and clients',
		},
		{
			name: 'Topology',
			value: 'topology',
			description: 'Network topology visualization',
		},
		{
			name: 'RAPIDS',
			value: 'rapids',
			description: 'Rogue AP Intrusion Detection System',
		},
		{
			name: 'Key Management',
			value: 'keymanagement',
			description: 'Key Management Service for client authentication',
		},
		{
			name: 'Troubleshooting',
			value: 'troubleshooting',
			description: 'Troubleshoot network issues',
		},
		// Other domains
	],
	default: 'monitoring',
	required: true,
	description: 'Domain of Aruba Central API',
};

// All descriptions with safety check
export const allDescriptions: INodeProperties[] = [
	domainSelector,
	...(Array.isArray(monitoringDescriptions) ? monitoringDescriptions : []),
	...(Array.isArray(firmwareDescriptions) ? firmwareDescriptions : []),
	...(Array.isArray(aiopsDescriptions) ? aiopsDescriptions : []),
	...firmwareDescriptions,
	...(Array.isArray(topologyDescriptions) ? topologyDescriptions : []),
	...(Array.isArray(rapidsDescriptions) ? rapidsDescriptions : []),
	...(Array.isArray(inventoryDescriptions) ? inventoryDescriptions : []),
	...(Array.isArray(keymanagementDescriptions) ? keymanagementDescriptions : []),
	...(Array.isArray(troubleshootingDescriptions) ? troubleshootingDescriptions : []),
	// Other domain descriptions
];
