import { Check } from "./checks.cjs";
import { PgCodecs } from "./codecs.cjs";
import { Index } from "./indexes.cjs";
import { PgColumn, PgColumnBaseConfig } from "./columns/common.cjs";
import { ForeignKey } from "./foreign-keys.cjs";
import { PgPolicy } from "./policies.cjs";
import { PrimaryKey } from "./primary-keys.cjs";
import { UniqueConstraint } from "./unique-constraint.cjs";
import { PgViewBase } from "./view-base.cjs";
import { PgMaterializedView, PgMaterializedViewWithConfig, PgView, ViewWithConfig } from "./view.cjs";
import * as __sql_sql_ts0 from "../sql/sql.cjs";
import { SQL } from "../sql/sql.cjs";
import { Subquery } from "../subquery.cjs";
import { DrizzleConfig } from "../utils.cjs";
import { AnyRelations } from "../relations.cjs";
import { PgTable } from "./table.cjs";

//#region src/pg-core/utils.d.ts
declare function getTableConfig<TTable extends PgTable>(table: TTable): {
  columns: PgColumn<any, PgColumnBaseConfig<any>, {}>[];
  indexes: Index[];
  foreignKeys: ForeignKey[];
  checks: Check[];
  primaryKeys: PrimaryKey[];
  uniqueConstraints: UniqueConstraint[];
  name: string;
  schema: string | undefined;
  policies: PgPolicy[];
  enableRLS: boolean;
};
declare function extractUsedTable(table: PgTable | Subquery | PgViewBase | SQL): string[];
declare function getViewConfig<TName extends string = string, TExisting extends boolean = boolean>(view: PgView<TName, TExisting>): {
  with?: ViewWithConfig;
  name: TName;
  originalName: TName;
  schema: string | undefined;
  selectedFields: __sql_sql_ts0.ColumnsSelection;
  isExisting: TExisting;
  query: TExisting extends true ? undefined : SQL<unknown>;
  isAlias: boolean;
};
declare function getMaterializedViewConfig<TName extends string = string, TExisting extends boolean = boolean>(view: PgMaterializedView<TName, TExisting>): {
  with?: PgMaterializedViewWithConfig;
  using?: string;
  tablespace?: string;
  withNoData?: boolean;
  name: TName;
  originalName: TName;
  schema: string | undefined;
  selectedFields: __sql_sql_ts0.ColumnsSelection;
  isExisting: TExisting;
  query: TExisting extends true ? undefined : SQL<unknown>;
  isAlias: boolean;
};
type DrizzlePgConfig<TRelations extends AnyRelations> = Omit<DrizzleConfig<Record<string, never>, TRelations>, 'schema'> & {
  codecs?: PgCodecs | undefined;
};
//#endregion
export { DrizzlePgConfig, extractUsedTable, getMaterializedViewConfig, getTableConfig, getViewConfig };
//# sourceMappingURL=utils.d.cts.map