/**
 * Fetch table / column / index metadata from the Sybase ASE system catalogs.
 *
 * The SQL here intentionally mirrors the battle-tested queries that shipped via
 * the original patch (sysobjects / syscolumns / systypes / syscomments /
 * sysindexes, the UDT resolution sub-select, and the status bit masks). The
 * changes are limited to:
 *   - type safety (typed row shapes instead of `any`),
 *   - a single identifier guard ({@link assertSafeIdentifier}),
 *   - index key columns resolved in one query per index instead of one query
 *     per column (the previous N x M round-trips).
 */
import type { ColumnMeta, IndexMeta, IntrospectDb } from "./types.js";
/**
 * Guard every identifier that is interpolated into catalog SQL. Catalog queries
 * cannot be parameterised (database name, object names and `index_col()`
 * arguments are not bindable), so this allow-list is the single line of defence
 * against injection — applied once, here, at the lowest layer.
 */
export declare function assertSafeIdentifier(value: string | undefined, label: string): asserts value is string;
export interface FetchedTable {
    name: string;
    owner: string;
}
export declare function fetchTables(db: IntrospectDb, database: string, tableFilter?: string[], owner?: string): Promise<FetchedTable[]>;
export declare function fetchColumns(db: IntrospectDb, database: string, tableName: string): Promise<ColumnMeta[]>;
export declare function fetchIndexes(db: IntrospectDb, database: string, tableName: string): Promise<IndexMeta[]>;
//# sourceMappingURL=fetch.d.ts.map