import { ITicketAuditedEntity } from './Common'; import { ITicketFilter, ITicketSort } from './Api'; export declare enum TicketViewType { TABLE = "TABLE", KANBAN = "KANBAN", CARDS = "CARDS", QUEUE = "QUEUE" } export declare enum TicketViewVisibility { PRIVATE = "PRIVATE", SHARED = "SHARED", ROLE = "ROLE", GROUP = "GROUP" } export declare enum TicketViewDensity { COMPACT = "COMPACT", STANDARD = "STANDARD", COMFORTABLE = "COMFORTABLE" } export interface ITicketViewColumn { fieldNameKey: string; order: number; width?: number; visible: boolean; pinned?: 'LEFT' | 'RIGHT'; } /** Saved operational view used by agents for lists, boards, cards and queue workspaces. */ export interface ITicketView extends ITicketAuditedEntity { name: string; description?: string; type: TicketViewType; visibility: TicketViewVisibility; ownerId: string; sharedRoleIds?: string[]; sharedGroupIds?: string[]; filter?: ITicketFilter; sort?: ITicketSort[]; columns?: ITicketViewColumn[]; groupByFieldNameKey?: string; cardLayoutId?: string; density?: TicketViewDensity; isDefault?: boolean; isFavorite?: boolean; refreshIntervalSeconds?: number; enabled: boolean; } export interface ICreateTicketViewDto { name: string; description?: string; type: TicketViewType; visibility: TicketViewVisibility; sharedRoleIds?: string[]; sharedGroupIds?: string[]; filter?: ITicketFilter; sort?: ITicketSort[]; columns?: ITicketViewColumn[]; groupByFieldNameKey?: string; cardLayoutId?: string; density?: TicketViewDensity; isDefault?: boolean; refreshIntervalSeconds?: number; } export interface IUpdateTicketViewDto extends Partial { enabled?: boolean; } /** Stores user-specific preference without mutating a shared view definition. */ export interface ITicketViewUserPreference { id: string; spaceId: string; viewId: string; userId: string; isFavorite: boolean; isDefault?: boolean; columnOverrides?: ITicketViewColumn[]; density?: TicketViewDensity; updatedAt: Date; }