1 | ```
// Type definitions for ag-grid v18.1.2
``` |

2 | ```
// Project: http://www.ag-grid.com/
``` |

3 | ```
// Definitions by: Niall Crosby <https://github.com/ag-grid/>
``` |

4 | ```
import { RowNode } from "../entities/rowNode";
``` |

5 | ```
export interface RowBounds {
``` |

6 | ```
rowTop: number;
``` |

7 | ```
rowHeight: number;
``` |

8 | ```
}
``` |

9 | ```
export interface IRowModel {
``` |

10 | ```
/** Returns the rowNode at the given index. */
``` |

11 | ```
getRow(index: number): RowNode;
``` |

12 | ```
/** Returns the rowNode for given id. */
``` |

13 | ```
getRowNode(id: string): RowNode;
``` |

14 | ```
/** Returns the first and last rows to render. */
``` |

15 | ```
getPageFirstRow(): number;
``` |

16 | ```
getPageLastRow(): number;
``` |

17 | ```
/** This is legacy, not used by ag-Grid, but keeping for backward compatibility */
``` |

18 | ```
getRowCount(): number;
``` |

19 | ```
/** Returns the row index at the given pixel */
``` |

20 | ```
getRowIndexAtPixel(pixel: number): number;
``` |

21 | ```
/** Returns total height of all the rows - used to size the height of the grid div that contains the rows */
``` |

22 | ```
getCurrentPageHeight(): number;
``` |

23 | ```
/** Returns true if the provided rowNode is in the list of rows to render */
``` |

24 | ```
isRowPresent(rowNode: RowNode): boolean;
``` |

25 | ```
/** Returns row top and bottom for a given row */
``` |

26 | ```
getRowBounds(index: number): RowBounds;
``` |

27 | ```
/** Returns true if this model has no rows, regardless of model filter. EG if rows present, but filtered
``` |

28 | ```
* out, this still returns false. If it returns true, then the grid shows the 'no rows' overlay - but we
``` |

29 | ```
* don't show that overlay if the rows are just filtered out. */
``` |

30 | ```
isEmpty(): boolean;
``` |

31 | ```
/** Returns true if no rows (either no rows at all, or the rows are filtered out). This is what the grid
``` |

32 | ```
* uses to know if there are rows to render or not. */
``` |

33 | ```
isRowsToRender(): boolean;
``` |

34 | ```
/** Returns all rows in range that should be selected. If there is a gap in range (non ClientSideRowModel) then
``` |

35 | ```
* then no rows should be returned */
``` |

36 | ```
getNodesInRangeForSelection(first: RowNode, last: RowNode): RowNode[];
``` |

37 | ```
/** Iterate through each node. What this does depends on the model type. For clientSide, goes through
``` |

38 | ```
* all nodes. For pagination, goes through current page. For virtualPage, goes through what's loaded in memory. */
``` |

39 | ```
forEachNode(callback: (rowNode: RowNode) => void): void;
``` |

40 | ```
/** The base class returns the type. We use this instead of 'instanceof' as the client might provide
``` |

41 | ```
* their own implementation of the models in the future. */
``` |

42 | ```
getType(): string;
``` |

43 | ```
/**
``` |

44 | ```
* It tells us if this row model knows about the last row that it can produce. This is used by the
``` |

45 | ```
* PaginationPanel, if last row is not found, then the 'last' button is disabled and the last page is
``` |

46 | ```
* not shown. This is always true for ClientSideRowModel. It toggles for InfiniteRowModel.
``` |

47 | ```
*/
``` |

48 | ```
isLastRowFound(): boolean;
``` |

49 | ```
}
``` |