import { entityKind } from "../entity.js";
import { SQL, type SQLWrapper } from "../sql/sql.js";
import type { NonArray, Writable } from "../utils.js";
import { type CockroachEnum, type CockroachEnumObject } from "./columns/enum.js";
import { type cockroachSequence } from "./sequence.js";
import { type CockroachTableFn } from "./table.js";
import { type cockroachMaterializedView, type cockroachView } from "./view.js";
export declare class CockroachSchema<TName extends string = string> implements SQLWrapper {
    readonly schemaName: TName;
    static readonly [entityKind]: string;
    constructor(schemaName: TName);
    table: CockroachTableFn<TName>;
    view: typeof cockroachView;
    materializedView: typeof cockroachMaterializedView;
    enum<U extends string, T extends Readonly<[U, ...U[]]>>(enumName: string, values: T | Writable<T>): CockroachEnum<Writable<T>>;
    enum<E extends Record<string, string>>(enumName: string, enumObj: NonArray<E>): CockroachEnumObject<E>;
    sequence: typeof cockroachSequence;
    getSQL(): SQL;
    shouldOmitSQLParens(): boolean;
}
export declare function isCockroachSchema(obj: unknown): obj is CockroachSchema;
export declare function cockroachSchema<T extends string>(name: T): CockroachSchema<T>;
