// keymanagement.types.ts
import { IDataObject } from 'n8n-workflow';

export interface IKeyCacheRecord extends IDataObject {
	client_mac: string;
	essid: string;
	role: string;
	vlan_id: string;
	key_type?: string;
	r0_name?: string;
	mdid?: string;
	origin_ap?: string;
	operation_mode?: string;
	expiry?: number;
	timeouts?: IDataObject;
	intervals?: IDataObject;
	ttl?: number;
	timestamp?: number;
	pan_id?: string;
}

export interface IRoamCacheRecord extends IKeyCacheRecord {
	// Same structure as key cache
}

export interface ISyncedApList extends IDataObject {
	[ap_serial: string]: IDataObject;
}

export interface IClientRoamHistory extends IDataObject {
	client_mac: string;
	roam_events: IRoamEvent[];
}

export interface IRoamEvent extends IDataObject {
	timestamp: number;
	from_ap: string;
	to_ap: string;
	roam_type: string;
	success: boolean;
}

export interface IHealthStatus extends IDataObject {
	status: 'UP' | 'DOWN';
	timestamp?: number;
	details?: IDataObject;
}

export interface IKeyHash extends IDataObject {
	key_hash: string;
	algorithm?: string;
	timestamp?: number;
}
