import type { IDataObject } from 'n8n-workflow'; export interface GenesysEntity { id: string; name: string; selfUri?: string; [key: string]: unknown; } export interface GenesysQueue extends GenesysEntity { description?: string; dateCreated?: string; dateModified?: string; modifiedBy?: string; createdBy?: string; memberCount?: number; mediaSettings?: IDataObject; acwSettings?: IDataObject; skillEvaluationMethod?: string; queueFlow?: IDataObject; callingPartyName?: string; callingPartyNumber?: string; division?: { id: string; name?: string; selfUri?: string; }; } export interface GenesysUser extends GenesysEntity { email?: string; username?: string; department?: string; title?: string; state?: string; division?: { id: string; name?: string; selfUri?: string; }; presence?: IDataObject; chat?: IDataObject; locations?: IDataObject[]; groups?: IDataObject[]; version?: number; } export interface GenesysGroup extends GenesysEntity { type?: 'official' | 'social'; description?: string; dateModified?: string; memberCount?: number; state?: string; version?: number; owners?: GenesysUser[]; addresses?: IDataObject[]; } export interface GenesysDivision extends GenesysEntity { description?: string; homeDivision?: boolean; objectCounts?: IDataObject; } export interface GenesysConversation { id?: string; conversationId?: string; conversationStart?: string; conversationEnd?: string; originatingDirection?: 'inbound' | 'outbound'; participants?: IDataObject[]; divisions?: IDataObject[]; mediaStatsMinConversationMos?: number; mediaStatsMinConversationRFactor?: number; [key: string]: unknown; } export interface GenesysPaginatedResponse { entities?: T[]; pageSize?: number; pageNumber?: number; total?: number; pageCount?: number; cursor?: string; nextUri?: string; previousUri?: string; firstUri?: string; lastUri?: string; selfUri?: string; } export interface GenesysAnalyticsResponse { conversations?: T[]; totalHits?: number; paging?: { pageSize: number; pageNumber: number; }; } export interface GenesysApiError { message: string; code: string; status: number; messageWithParams?: string; messageParams?: Record; contextId?: string; details?: Array<{ errorCode: string; fieldName?: string; message: string; }>; errors?: Array<{ errorCode: string; fieldName?: string; message: string; }>; }