import { type SqlBool, type ExpressionBuilder, type ExpressionWrapper } from "kysely";
import type { LixDatabaseSchema } from "../database/schema.js";
import type { LixCommit } from "../commit/schema-definition.js";
/**
 * Filters commits that are descendants of the given commit.
 *
 * By default, this is **exclusive**, meaning it returns only commits strictly
 * *after* the provided commit in the graph.
 *
 * Traverses the `commit_edge` graph recursively, starting from the provided commit
 * (or its children if exclusive), and returns all commits reachable via child edges.
 *
 * This filter is useful for finding changes made *after* a specific point in time (e.g., a checkpoint).
 *
 * ⚠️ This filter only defines the traversal scope — it does not filter changes directly.
 *
 * --- Options ---
 * - `includeSelf`: If `true`, includes the starting `commit` in the results. Defaults to `false`.
 * - `depth`: Limits the traversal depth. `depth: 1` selects only immediate children (if exclusive)
 *   or the starting node and its immediate children (if includeSelf is true).
 *
 * --- Examples ---
 *
 * @example Selecting strict descendants (default)
 * ```ts
 * db.selectFrom("commit")
 *   .where(commitIsDescendantOf({ id: "c1" }))
 *   .selectAll()
 * ```
 *
 * @example Combining with commitIsAncestorOf to select commits between two points in time
 * ```ts
 * // Select all commits between startPoint and endPoint (inclusive)
 * db.selectFrom("commit")
 *   .where(commitIsDescendantOf({ id: "startPoint" }))
 *   .where(commitIsAncestorOf({ id: "endPoint" }))
 *   .selectAll()
 * ```
 */
export declare function commitIsDescendantOf(commit: Pick<LixCommit, "id">, options?: {
    depth?: number;
    includeSelf?: boolean;
}): (eb: ExpressionBuilder<LixDatabaseSchema, "commit">) => ExpressionWrapper<LixDatabaseSchema, "commit", SqlBool>;
//# sourceMappingURL=commit-is-descendant-of.d.ts.map