import { UseQueryOptions } from '@tanstack/react-query'; import { DATA_TYPE, PERMISSIONS, ROLES } from './constants'; import { TIME_UNIT } from './date'; export type ObjectValues = T[keyof T]; export type ReactQueryOptions = Omit, 'queryKey' | 'queryFn'>; export type TimeUnit = ObjectValues; export type Permission = ObjectValues; export type Role = ObjectValues; export type DynamicDataType = ObjectValues; export interface Auth { user?: { id: string; username: string; role: string; isAdmin: boolean; }; grant?: Permission[]; shareToken?: { websiteId: string; }; } export interface DateRange { startDate: Date; endDate: Date; value?: string; unit?: TimeUnit; num?: number; offset?: number; } export interface DynamicData { [key: string]: number | string | number[] | string[]; } export interface QueryOptions { joinSession?: boolean; columns?: Record; limit?: number; } export interface QueryFilters { websiteId?: string; // Date range startDate?: Date; endDate?: Date; compareStartDate?: Date; compareEndDate?: Date; compare?: string; unit?: string; timezone?: string; // Filters path?: string; referrer?: string; title?: string; query?: string; host?: string; os?: string; browser?: string; device?: string; country?: string; region?: string; city?: string; language?: string; event?: string; search?: string; tag?: string; eventType?: number; // Paging page?: number; pageSize?: number; // Sorting orderBy?: string; sortDescending?: boolean; } export interface PageParams { page: number; pageSize: number; orderBy?: string; sortDescending?: boolean; search?: string; } export interface PageResult { data: T; count: number; page: number; pageSize: number; orderBy?: string; sortDescending?: boolean; search?: string; }