import type { StyleProp, ViewStyle } from 'react-native'; export type CellData = { colIdx: number; isSelectable: boolean; nextQElemNumber?: number; prevQElemNumber?: number; qElemNumber: number; qNum: string | number; qState: string; qText: string; rawColIdx: number; rawRowIdx: number; rowIdx: number; }; export type CellContentStyle = { borderColor?: string; borderStyle?: string; borderWidth?: string; color?: string; fontFamily?: string; fontSize?: number; hoverBackgroundColor?: string; hoverFontColor?: string; rowHeight?: number; wrap?: boolean; }; export type ColumnHeader = { active?: boolean; align?: string; dataColIdx?: number; display?: string; id?: string; isDim?: boolean; label?: string; qCardinal?: number; representation?: Representation; sortDirection?: string; stylingInfo?: Array; totalInfo?: string; width?: number; }; export type Cols = { footer?: ReadonlyArray; header?: ReadonlyArray; totals?: Totals; totalsVersion?: number; }; export type DimensionInfo = { autoSort?: boolean; cId?: string; othersLabel?: string; qApprMaxGlyphCount?: number; qCardinal?: number; qCardinalities?: { qAllValuesCardinal: number; qCardinal: number; qHypercubeCardinal: number; }; qDimensionType?: string; qEffectiveDimensionName?: string; qFallbackTitle?: string; qGroupFieldDefs?: string[]; qGroupFallbackTitles?: string[]; qGrouping?: string; qGroupPos?: number; qIsAutoFormat?: boolean; qMax?: string; qMin?: string; qNumFormat?: { qDec?: string; qFmt?: string; qnDec?: number; qType: string; qUseThou?: number; }; qSortIndicator?: string; qStateCounts?: { qAlternative: number; qDeselected: number; qExcluded: number; qLocked: number; qLockedExcluded: number; qOption: number; qSelected: number; qSelectedExcluded: number; }; qTags?: string[]; representation?: Representation; textAlign?: { align: string; auto: boolean; }; }; export type DragBoxEvent = { nativeEvent: { dragging: boolean; }; }; export type EndReachedEvent = { nativeEvent: { target: number; }; }; export type ExpandCellEvent = { nativeEvent: { col: string; row: string; }; }; export type GrandTotalCell = { qElemNumber?: number; qIsTotalCell?: boolean; qNum?: number; qState?: string; qText?: string; }; export type HeaderContentStyle = { backgroundColor?: string; borderColor?: string; borderStyle?: string; borderWidth?: string; color?: string; cursor?: string; fontFamily?: string; fontSize?: number; sortLabelColor?: string; wrap?: boolean; }; export type HeaderPressedEvent = { nativeEvent: { column: string; target: number; }; }; export type HyperCube = { columnOrder: number[]; columnWidths: number[]; qColumnOrder: number[]; qDimensionInfo: DimensionInfo[]; qEffectiveInterColumnSortOrder: number[]; qGrandTotalRow: ReadonlyArray; qMode: string; qNoOfLeftDims: number; qSize: { qcx: number; qcy: number }; }; export type Layout = { components?: Array<{ key?: string; bgColor?: { color?: string; colorExpression?: string; useColorExpression?: boolean; }; }>; disableNavMenu?: boolean; filters?: Array<{ exclude: boolean; field: string; id: string; isNumeric: boolean; type: string; }>; footnote?: string; isDataView?: boolean; multiline?: { wrapTextInCells?: boolean; wrapTextInHeaders?: boolean; }; qHyperCube: HyperCube; qInfo: { qId?: string; qType?: string; }; qMeta?: { privileges?: string[]; }; script?: string; scrolling?: ScrollingProps; search?: { sorting?: string; }; showDetails?: boolean; showDetailsExpression?: boolean; showTitles?: boolean; subtitle?: string; title?: string; totals: { label?: string; position?: string; show: boolean | string; }; visualization?: string; }; export type Model = { getEffectiveProperties: () => Promise<{ qHyperCubeDef?: { qDimensions: Array<{ qDef: { qFieldDefs?: string[]; qFieldLabels?: string[]; }; }>; }; }>; }; export type Representation = { globalMax?: number; globalMin?: number; imageLabel?: string; imagePosition?: string; imageSetting?: string; imageSize?: string; imageUrl?: string; linkUrl?: string; type?: string; urlLabel?: string; urlPosition?: string; }; export type ScrollingProps = { horizontal?: boolean; keepFirstColumnInView?: boolean; keepFirstColumnInViewTouch?: boolean; }; export type SearchColumnEvent = { nativeEvent: { column: string; target: number; }; }; export type SelectionsChangedEvent = { nativeEvent: { selections: string; }; }; export type SimpleGridLayout = { totals: { show: boolean; }; }; export type SimpleGridProps = { clearSelections: string; contentStyle: { cellStyle: CellContentStyle; headerStyle: HeaderContentStyle; }; layout: Layout; model: Model; name: string; onConfirmSelections: () => void; onEndReached: (event: EndReachedEvent) => void; onHeaderPressed: (event: HeaderPressedEvent) => void; onSelectionsChanged: (event: SelectionsChangedEvent) => void; rect: { width: number }; style: { table: StyleProp }; tableData: TableData; theme: Theme; themeData: ThemeData; translations: { headerValues: Array; menu: { copy: string; expand: string; }; misc: { of: string; }; }; }; export type TableData = { columns: ColumnHeader[]; paginationNeeded: boolean; reset: boolean; rows: TableRow[]; totalColumnCount: number; totalPages: number; totalRowCount: number; totalsPosition: string; }; export type TableRow = { key: string; [key: `col-${number}`]: CellData; }; export type Theme = { backgroundColor?: string; borderBackgroundColor?: string; borderRadius?: number; borderSelectedColor?: string; even?: string; headerBackgroundColor?: string; headerHeight?: number; headerTextColor?: string; rowHeight?: number; selectedBackground?: string; }; export type ThemeData = { _cards?: boolean; _inherit?: boolean; _variables?: Record; backgroundColor?: string; color?: string; dataColors?: { primaryColor?: string; othersColor?: string; errorColor?: string; nullColor?: string; }; fontFamily?: string; fontSize?: string; object?: Record; palettes?: { data?: Array<{ name?: string; translation?: string; propertyValue?: string; type?: string; scale?: string[][]; }>; ui?: Array<{ name?: string; colors?: string[]; }>; }; scales?: Array<{ name?: string; translation?: string; type?: string; propertyValue?: string; scale?: string[]; }>; }; export type ThemeDataObject = { [key: string]: string | number | ThemeDataObject; }; export type Totals = { label?: string; position?: string; rows?: ReadonlyArray; show?: boolean; values?: ReadonlyArray; };