// api/inventory/devices/devices.operations.ts
import { INodeProperties } from 'n8n-workflow';

// Import operation descriptions
import { getDevicesDescription } from './getDevices.descriptions';
import { addDeviceDescription } from './addDevice.descriptions';
import { deleteDeviceDescription } from './deleteDevice.descriptions';
import { getDeviceStatsDescription } from './getDeviceStats.descriptions';
import { verifyDeviceDescription } from './verifyDevice.descriptions';
import { getArchivedDevicesDescription } from './getArchivedDevices.descriptions';
import { archiveDevicesDescription } from './archiveDevices.descriptions';
import { unarchiveDevicesDescription } from './unarchiveDevices.descriptions';

export const devicesOperations: INodeProperties[] = [
	{
		displayName: 'Operation',
		name: 'operation',
		type: 'options',
		noDataExpression: true,
		displayOptions: {
			show: {
				domain: ['inventory'],
				resource: ['devices'],
			},
		},
		options: [
			{
				name: 'Get Devices',
				value: 'getDevices',
				description: 'Get devices from device inventory',
				action: 'Get devices from device inventory',
			},
			{
				name: 'Add Device',
				value: 'addDevice',
				description: 'Add device using Mac and Serial number',
				action: 'Add device using Mac and Serial number',
			},
			{
				name: 'Delete Device',
				value: 'deleteDevice',
				description: 'Delete devices using Serial number',
				action: 'Delete devices using Serial number',
			},
			{
				name: 'Get Device Stats',
				value: 'getDeviceStats',
				description: 'Get devices stats',
				action: 'Get devices stats',
			},
			{
				name: 'Verify Device Addition',
				value: 'verifyDevice',
				description: 'Verify device addition',
				action: 'Verify device addition',
			},
			{
				name: 'Get Archived Devices',
				value: 'getArchivedDevices',
				description: 'Get Archived devices from device inventory',
				action: 'Get Archived devices from device inventory',
			},
			{
				name: 'Archive Devices',
				value: 'archiveDevices',
				description: 'Archive devices using Serial list',
				action: 'Archive devices using Serial list',
			},
			{
				name: 'Unarchive Devices',
				value: 'unarchiveDevices',
				description: 'Unarchive devices using Serial list',
				action: 'Unarchive devices using Serial list',
			},
		],
		default: 'getDevices',
	},
	...getDevicesDescription,
	...addDeviceDescription,
	...deleteDeviceDescription,
	...getDeviceStatsDescription,
	...verifyDeviceDescription,
	...getArchivedDevicesDescription,
	...archiveDevicesDescription,
	...unarchiveDevicesDescription,
];
