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

export const skuTypeOptions: INodeProperties = {
	displayName: 'SKU Type',
	name: 'skuType',
	type: 'options',
	required: true,
	options: [
		{
			name: 'IAP',
			value: 'iap',
			description: 'Instant Access Points',
		},
		{
			name: 'Switch',
			value: 'switch',
			description: 'Switch devices',
		},
		{
			name: 'Controller',
			value: 'controller',
			description: 'Controller devices',
		},
		{
			name: 'Gateway',
			value: 'gateway',
			description: 'Gateway devices',
		},
		{
			name: 'VGW',
			value: 'vgw',
			description: 'Virtual Gateway devices',
		},
		{
			name: 'CAP',
			value: 'cap',
			description: 'Campus Access Points',
		},
		{
			name: 'BOC',
			value: 'boc',
			description: 'Branch Office Controllers',
		},
		{
			name: 'All AP',
			value: 'all_ap',
			description: 'All Access Points',
		},
		{
			name: 'All Controller',
			value: 'all_controller',
			description: 'All Controllers',
		},
		{
			name: 'Others',
			value: 'others',
			description: 'Other device types',
		},
	],
	default: 'iap',
	description: 'Type of device to filter by',
};

export const paginationOptions: INodeProperties[] = [
	{
		displayName: 'Limit',
		name: 'limit',
		type: 'number',
		default: 100,
		description: 'Number of devices to get',
		typeOptions: {
			minValue: 1,
			maxValue: 1000,
		},
	},
	{
		displayName: 'Offset',
		name: 'offset',
		type: 'number',
		default: 0,
		description: 'Offset or page number',
		typeOptions: {
			minValue: 0,
		},
	},
];

export const deviceIdentificationOptions: INodeProperties[] = [
	{
		displayName: 'MAC Address',
		name: 'mac',
		type: 'string',
		required: true,
		default: '',
		placeholder: '00:11:22:33:44:55',
		description: 'MAC address of the device',
	},
	{
		displayName: 'Serial Number',
		name: 'serial',
		type: 'string',
		required: true,
		default: '',
		placeholder: 'ABC1234567',
		description: 'Serial number of the device',
	},
	{
		displayName: 'Part Number',
		name: 'partNumber',
		type: 'string',
		default: '',
		placeholder: 'JL123A',
		description: 'Part number (required for OnPrem deployments)',
	},
];

export const serviceTypeOptions: INodeProperties = {
	displayName: 'Service Type',
	name: 'serviceType',
	type: 'options',
	options: [
		{
			name: 'Device Management (dm)',
			value: 'dm',
			description: 'Device Management service',
		},
		{
			name: 'Policy Analysis (pa)',
			value: 'pa',
			description: 'Policy Analysis service',
		},
	],
	default: 'dm',
	description: 'Name of the service',
};
