type PageActionType = 'create' | 'update' | 'view' | 'edit'; declare namespace Global { type WithFalse = T | false; interface Pagination { page: number; perPage?: number; watch?: boolean; } interface PageResponse { items: T[]; pagination: { total: number; totalPage: number; page: number; perPage: number; }; } interface UserInfo { username: string; is_admin: boolean; full_name: string; require_password_change: boolean; id: number; source: string; avatar_url: string; } type EmptyObject = Record; type BaseListItem = { key: string; locale?: boolean; value: T; } & Partial; type BaseOption = { label: string; locale?: boolean; value: T; meta?: Record; } & Partial; type BaseOptionGroup = { label: string; options?: BaseOption[]; }; interface HintOptions { label: string; value: string; opts?: Array>; } interface InitialStateType { fetchUserInfo: () => Promise; currentUser?: UserInfo; } type SearchParams = Pagination & { search?: string; [key: string]: any }; type MessageType = 'transition' | 'warning' | 'danger' | 'success' | 'info'; interface ScrollerModalProps { title?: string; action?: PageActionType; open: boolean; currentData?: T | null; onOk?: (values: U) => void; onCancel: () => void; } interface ActionItem { label: string; key: string; icon: React.ReactNode; locale?: boolean; props?: { danger?: boolean; }; } } interface Window { __GPUSTACK_BODY_SCROLLER__?: any; }