import type { BookingListFilter } from "@/services/bookings.service"; import type { RuleEngineListParams } from "@/services/ruleEngine/ruleEngine.service"; import type { TrainScheduleFilters } from "@/types/trainScheduling"; import type { FleetResourceSlug } from "@/pages/fleet/config/resources"; import type { RuleEngineResourceSlug } from "@/types/rule-engine"; export const QUERY_KEYS = { USERS: { ROOT: ["users"] as const, ADD: ["users", "add"] as const, }, FILES: { ROOT: ["file-upload-settings"] as const, list: () => ["file-upload-settings", "list"] as const, byId: (id: string) => ["file-upload-settings", "detail", id] as const, byCode: (code: string) => ["file-upload-settings", "by-code", code] as const, }, DROPDOWN_SETTINGS: { ROOT: ["dropdown-settings"] as const, list: () => ["dropdown-settings", "list"] as const, byId: (id: string) => ["dropdown-settings", "detail", id] as const, byCode: (code: string) => ["dropdown-settings", "by-code", code] as const, }, CUSTOMERS: { ROOT: ["customers"] as const, list: () => ["customers", "list"] as const, byId: (id: string) => ["customers", "detail", id] as const, }, BOOKINGS: { ROOT: ["bookings"] as const, list: (filter?: BookingListFilter) => ["bookings", "list", filter ?? {}] as const, listSummary: (filter?: BookingListFilter) => ["bookings", "list-summary", filter ?? {}] as const, byId: (id: string) => ["bookings", "detail", id] as const, }, TRAIN_SCHEDULING: { ROOT: ["train-scheduling"] as const, eligible: (freightType?: string, filters?: TrainScheduleFilters) => ["train-scheduling", "eligible-bookings", freightType ?? "CONTAINER", filters ?? {}] as const, locomotives: (routeId?: string) => ["train-scheduling", "locomotives", routeId ?? "all"] as const, stations: () => ["train-scheduling", "stations"] as const, schedules: () => ["train-scheduling", "schedules"] as const, scheduleById: (id: string) => ["train-scheduling", "schedule", id] as const, track: (id: string) => ["train-scheduling", "track", id] as const, batchBoard: () => ["train-scheduling", "batch-board"] as const, batchBoardDetail: (scheduleId: string) => ["train-scheduling", "batch-board", scheduleId] as const, unassignedBookings: (id: string) => ["train-scheduling", "unassigned", id] as const, compositionRemovals: (id: string) => ["train-scheduling", "removals", id] as const, }, FLEET: { ROOT: ["fleet"] as const, list: (resource: FleetResourceSlug | string) => ["fleet", "list", resource] as const, }, RULE_ENGINE: { ROOT: ["rule-engine"] as const, list: (resource: RuleEngineResourceSlug | string, params?: RuleEngineListParams) => ["rule-engine", "list", resource, params ?? {}] as const, detail: (resource: RuleEngineResourceSlug | string, id: string) => ["rule-engine", "detail", resource, id] as const, chain: ["rule-engine", "approval-rules", "chain"] as const, selectOptions: ( resource: RuleEngineResourceSlug | string, params?: Record, ) => ["rule-engine", "select-options", resource, params ?? {}] as const, orderList: (resource: RuleEngineResourceSlug | string) => ["rule-engine", "order-list", resource] as const, }, OVERVIEW: { ROOT: ["overview"] as const, dashboard: (range?: string) => ["overview", "dashboard", range ?? "30d"] as const, bookingsTab: (range?: string) => ["overview", "bookings", range ?? "30d"] as const, billingTab: (range?: string) => ["overview", "billing", range ?? "30d"] as const, operationsTab: () => ["overview", "operations"] as const, customersTab: (range?: string) => ["overview", "customers", range ?? "30d"] as const, staffTab: (range?: string) => ["overview", "staff", range ?? "30d"] as const, }, } as const;