// keymanagement.descriptions.ts
import { INodeProperties } from 'n8n-workflow';
import { getHealthDescription } from './operations/getHealth.descriptions';
import { getKeyCacheDescription } from './operations/getKeyCache.descriptions';
import { getRoamCacheDescription } from './operations/getRoamCache.descriptions';
import { getSyncedApListDescription } from './operations/getSyncedApList.descriptions';
import { getKeyHashDescription } from './operations/getKeyHash.descriptions';
import { getClientRoamHistoryDescription } from './operations/getClientRoamHistory.descriptions';

const keymanagementResource: INodeProperties = {
	displayName: 'Resource',
	name: 'resource',
	type: 'options',
	noDataExpression: true,
	options: [
		{
			name: 'Health',
			value: 'health',
			description: 'Key Management Service health check',
		},
		{
			name: 'Key Cache',
			value: 'keycache',
			description: 'PMK key cache records for clients',
		},
		{
			name: 'Roam Cache',
			value: 'roamcache',
			description: 'Client roam cache records',
		},
		{
			name: 'Synced AP List',
			value: 'syncedaplist',
			description: 'Access Points with synchronized keys',
		},
		{
			name: 'Key Hash',
			value: 'keyhash',
			description: 'Encryption key hash verification',
		},
		{
			name: 'Client Roam History',
			value: 'clientroamhistory',
			description: 'Historical roaming data for clients',
		},
	],
	displayOptions: {
		show: {
			domain: ['keymanagement'],
		},
	},
	default: 'health',
	required: true,
	description: 'Key Management resource to interact with',
};

export const keymanagementDescriptions: INodeProperties[] = [
	keymanagementResource,
	...getHealthDescription,
	...getKeyCacheDescription,
	...getRoamCacheDescription,
	...getSyncedApListDescription,
	...getKeyHashDescription,
	...getClientRoamHistoryDescription,
];
