// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { Expression } from "./Expression";
import type { Keep } from "./Keep";
import type { Over } from "./Over";

/**
 * Represent a window function call with its OVER clause.
 *
 * The inner `this` expression is typically a window-specific expression
 * (e.g. `RowNumber`, `Rank`, `Lead`) or an aggregate used as a window
 * function.  The `over` field carries the PARTITION BY, ORDER BY, and
 * frame specification.
 */
export type WindowFunction = { 
/**
 * The function expression (e.g. ROW_NUMBER(), SUM(amount)).
 */
this: Expression, 
/**
 * The OVER clause defining the window partitioning, ordering, and frame.
 */
over: Over, 
/**
 * Oracle KEEP clause: KEEP (DENSE_RANK FIRST|LAST ORDER BY ...)
 */
keep?: Keep | null, };
