import type { Executor } from '../executor';
import type { ColumnDef } from '../schema/columns';
import type { AnyTable } from '../schema/table';
import type { Condition } from './conditions';
/**
 * Count all rows in a table, optionally filtered by a condition.
 *
 * @example
 * const total = await db.count(users);
 * const active = await db.count(users, eq(users.active, true));
 */
export declare function count<T extends AnyTable>(executor: Executor, table: T, condition?: Condition): Promise<number>;
/**
 * Count non-null values of a column, optionally filtered by a condition.
 *
 * @example
 * const count = await db.countColumn(users, users.email);
 */
export declare function countColumn<T extends AnyTable, C extends ColumnDef<any, any>>(executor: Executor, table: T, column: C, condition?: Condition): Promise<number>;
/**
 * Sum non-null values of a column, optionally filtered by a condition.
 *
 * @example
 * const total = await db.sum(orders, orders.amount);
 */
export declare function sum<T extends AnyTable, C extends ColumnDef<any, any>>(executor: Executor, table: T, column: C, condition?: Condition): Promise<number | null>;
/**
 * Average non-null values of a column, optionally filtered by a condition.
 *
 * @example
 * const avgAge = await db.avg(users, users.age);
 */
export declare function avg<T extends AnyTable, C extends ColumnDef<any, any>>(executor: Executor, table: T, column: C, condition?: Condition): Promise<number | null>;
/**
 * Find the minimum non-null value of a column, optionally filtered by a condition.
 *
 * @example
 * const minAge = await db.min(users, users.age);
 */
export declare function min<T extends AnyTable, C extends ColumnDef<any, any>>(executor: Executor, table: T, column: C, condition?: Condition): Promise<number | null>;
/**
 * Find the maximum non-null value of a column, optionally filtered by a condition.
 *
 * @example
 * const maxAge = await db.max(users, users.age);
 */
export declare function max<T extends AnyTable, C extends ColumnDef<any, any>>(executor: Executor, table: T, column: C, condition?: Condition): Promise<number | null>;
