// api/monitoring/monitoring.descriptions.ts
import { INodeProperties } from 'n8n-workflow';
import { apDescriptions } from './ap/ap.descriptions';
import { clientDescriptions } from './client/client.descriptions';
import { siteDescriptions } from './site/site.descriptions';
import { eventsDescriptions } from './events/events.descriptions';
import { switchDescriptions } from './switch/switch.descriptions';
import { gatewayDescriptions } from './gateway/gateway.descriptions';
import { labelDescriptions } from './label/label.descriptions';
import { mobilitycontrollerDescriptions } from './mobilitycontroller/mobilitycontroller.descriptions';
import { networkDescriptions } from './network/network.descriptions';
import { swarmDescriptions } from './swarm/swarm.descriptions';
import { vpnDescriptions } from './vpn/vpn.descriptions';

// Resource selection
const resourceSelector: INodeProperties = {
	displayName: 'Resource',
	name: 'resource',
	type: 'options',
	noDataExpression: true,
	displayOptions: {
		show: {
			domain: ['monitoring'],
		},
	},
	options: [
		{
			name: 'Access Point',
			value: 'ap',
			description: 'Work with access point information',
		},
		{
			name: 'Client',
			value: 'client',
			description: 'Work with client information',
		},
		{
			name: 'Events',
			value: 'events',
			description: 'Work with events information',
		},
		{
			name: 'Gateway',
			value: 'gateway',
			description: 'Work with gateway information',
		},
		{
			name: 'Label',
			value: 'label',
			description: 'Work with label information',
		},
		{
			name: 'Mobility Controller',
			value: 'mobilitycontroller',
			description: 'Work with mobility controller information',
		},
		{
			name: 'Network',
			value: 'network',
			description: 'Work with network information',
		},
		{
			name: 'Site',
			value: 'site',
			description: 'Work with site information',
		},
		{
			name: 'Swarm',
			value: 'swarm',
			description: 'Work with swarm information',
		},
		{
			name: 'Switch',
			value: 'switch',
			description: 'Work with switch information',
		},
		{
			name: 'VPN',
			value: 'vpn',
			description: 'Work with VPN information',
		},
	],
	default: 'ap',
};

// Export all descriptions with safety checks
export const monitoringDescriptions: INodeProperties[] = [
	resourceSelector,
	...(Array.isArray(apDescriptions) ? apDescriptions : []),
	...(Array.isArray(clientDescriptions) ? clientDescriptions : []),
	...(Array.isArray(eventsDescriptions) ? eventsDescriptions : []),
	...(Array.isArray(gatewayDescriptions) ? gatewayDescriptions : []),
	...(Array.isArray(labelDescriptions) ? labelDescriptions : []),
	...(Array.isArray(mobilitycontrollerDescriptions) ? mobilitycontrollerDescriptions : []),
	...(Array.isArray(networkDescriptions) ? networkDescriptions : []),
	...(Array.isArray(siteDescriptions) ? siteDescriptions : []),
	...(Array.isArray(swarmDescriptions) ? swarmDescriptions : []),
	...(Array.isArray(switchDescriptions) ? switchDescriptions : []),
	...(Array.isArray(vpnDescriptions) ? vpnDescriptions : []),
];
