import type { PonderTypeError } from '../types/utils.js'; import { type BuildColumns, type ColumnBuilderBase, type Writable } from "drizzle-orm"; import { type AnyPgColumn, type PrimaryKeyBuilder as DrizzlePrimaryKeyBuilder, type ExtraConfigColumn, ManualViewBuilder, type PgColumnBuilderBase, type PgEnumColumnBuilderInitial, PgTable, type PgTableExtraConfig, type PgTextConfig, type TableConfig, ViewBuilder } from "drizzle-orm/pg-core"; import { type PgColumnsBuilders as _PgColumnsBuilders } from "drizzle-orm/pg-core/columns/all"; import { type PgBigintBuilderInitial } from "./bigint.js"; import { type PgBytesBuilderInitial } from "./bytes.js"; import { type PgHexBuilderInitial } from "./hex.js"; import { type PgJsonBuilderInitial, type PgJsonbBuilderInitial } from "./json.js"; import { type PgTextBuilderInitial } from "./text.js"; export declare const MAX_DATABASE_OBJECT_NAME_LENGTH = 45; export declare const getLiveQueryTriggerName: () => string; export declare const getLiveQueryProcedureName: () => string; export declare const getLiveQueryChannelName: (schema: string) => string; export declare const getLiveQueryNotifyTriggerName: () => string; /** * Returns the name of the trigger used to notify live queries for the views pattern. * @dev The trigger is placed in the base schema, but used to notify in the views schema. */ export declare const getViewsLiveQueryNotifyTriggerName: (viewsSchema: string) => string; export declare const getLiveQueryNotifyProcedureName: () => string; export declare const getLiveQueryTempTableName: () => string; export declare const getPartitionName: (table: string | PgTable, chainId: number) => string; export declare const getReorgTableName: (table: string | PgTable) => string; export declare const getReorgTriggerName: () => string; export declare const getReorgProcedureName: (table: string | PgTable) => string; export declare const getReorgSequenceName: () => string; export declare function hex(): PgHexBuilderInitial<"">; export declare function hex(columnName: name): PgHexBuilderInitial; export declare function bigint(): PgBigintBuilderInitial<"">; export declare function bigint(columnName: name): PgBigintBuilderInitial; export declare function json(): PgJsonBuilderInitial<"">; export declare function json(name: name): PgJsonBuilderInitial; export declare function jsonb(): PgJsonbBuilderInitial<"">; export declare function jsonb(name: name): PgJsonbBuilderInitial; export declare function bytes(): PgBytesBuilderInitial<"">; export declare function bytes(columnName: name): PgBytesBuilderInitial; export declare function text(): PgTextBuilderInitial<"", [string, ...string[]]>; export declare function text>(config?: PgTextConfig>): PgTextBuilderInitial<"", Writable>; export declare function text>(name: TName, config?: PgTextConfig>): PgTextBuilderInitial>; export declare const onchain: unique symbol; export type PrimaryKeyBuilder = DrizzlePrimaryKeyBuilder & { columnNames: columnNames; }; export declare const primaryKey: & { " name": string; }, columns extends (AnyPgColumn<{ tableName: tableName; }> & { " name": string; })[]>({ name, columns, }: { name?: string | undefined; columns: [column, ...columns]; }) => PrimaryKeyBuilder; export type OnchainTable = PgTable & { [Key in keyof T["columns"]]: T["columns"][Key]; } & { [onchain]: true; } & { enableRLS: () => Omit, "enableRLS">; }; export type BuildExtraConfigColumns> = { [key in keyof columns]: ExtraConfigColumn & { " name": key; }; }; export type PgColumnsBuilders = Omit<_PgColumnsBuilders, "bigint" | "serial" | "smallserial" | "bigserial" | "json" | "jsonb"> & { /** * Create an 8 byte number column. */ int8: _PgColumnsBuilders["bigint"]; /** * Create a column for hex strings. * * - Docs: https://ponder.sh/docs/api-reference/ponder/schema#onchaintable * * @example * import { hex, onchainTable } from "ponder"; * * export const account = onchainTable("account", (p) => ({ * address: p.hex(), * })); */ hex: typeof hex; /** * Create a column for Ethereum integers * * - Docs: https://ponder.sh/docs/api-reference/ponder/schema#onchaintable * * @example * import { bigint, onchainTable } from "ponder"; * * export const account = onchainTable("account", (p) => ({ * balance: p.bigint(), * })); */ bigint: typeof bigint; /** * Create a column for Ethereum bytes * * - Docs: https://ponder.sh/docs/api-reference/ponder/schema#onchaintable * * @example * import { bytes, onchainTable } from "ponder"; * * export const account = onchainTable("account", (p) => ({ * calldata: p.bytes(), * })); */ bytes: typeof bytes; json: typeof json; jsonb: typeof jsonb; }; /** * Create an onchain table. * * - Docs: https://ponder.sh/docs/api-reference/ponder/schema#onchaintable * * @example * import { onchainTable } from "ponder"; * * export const account = onchainTable("account", (p) => ({ * address: p.hex().primaryKey(), * balance: p.bigint().notNull(), * })); * * @param name - The table name in the database. * @param columns - The table columns. * @param extra - Config such as indexes or composite primary keys. * @returns The onchain table. */ export declare const onchainTable: , object>>, extra extends PgTableExtraConfig | undefined = undefined>(name: name extends "" ? "Table name cannot be empty" : name, columns: columns | ((columnTypes: PgColumnsBuilders) => columns), extraConfig?: ((self: BuildExtraConfigColumns) => extra) | undefined) => OnchainTable<{ name: name; schema: undefined; columns: { [Key in keyof columns]: import("drizzle-orm/pg-core").PgColumn<{ name: (Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; })["name"]; tableName: name; dataType: (Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; })["dataType"]; columnType: (Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; })["columnType"]; data: Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; } extends infer T ? T extends Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; } ? T extends { $type: infer U; } ? U : T["data"] : never : never; driverParam: (Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; })["driverParam"]; notNull: Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; } extends infer T_1 ? T_1 extends Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; } ? T_1 extends { notNull: true; } ? true : false : never : never; hasDefault: Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; } extends infer T_2 ? T_2 extends Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; } ? T_2 extends { hasDefault: true; } ? true : false : never : never; isPrimaryKey: Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; } extends infer T_3 ? T_3 extends Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; } ? T_3 extends { isPrimaryKey: true; } ? true : false : never : never; isAutoincrement: Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; } extends infer T_4 ? T_4 extends Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; } ? T_4 extends { isAutoincrement: true; } ? true : false : never : never; hasRuntimeDefault: Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; } extends infer T_5 ? T_5 extends Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; } ? T_5 extends { hasRuntimeDefault: true; } ? true : false : never : never; enumValues: (Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; })["enumValues"]; baseColumn: Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; } extends infer T_6 ? T_6 extends Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; } ? T_6 extends { baseBuilder: infer U_1 extends ColumnBuilderBase, object>; } ? import("drizzle-orm").Column<{ name: U_1["_"]["name"]; tableName: name; dataType: U_1["_"]["dataType"]; columnType: U_1["_"]["columnType"]; data: U_1["_"] extends infer T_7 ? T_7 extends U_1["_"] ? T_7 extends { $type: infer U; } ? U : T_7["data"] : never : never; driverParam: U_1["_"]["driverParam"]; notNull: U_1["_"] extends infer T_8 ? T_8 extends U_1["_"] ? T_8 extends { notNull: true; } ? true : false : never : never; hasDefault: U_1["_"] extends infer T_9 ? T_9 extends U_1["_"] ? T_9 extends { hasDefault: true; } ? true : false : never : never; isPrimaryKey: U_1["_"] extends infer T_10 ? T_10 extends U_1["_"] ? T_10 extends { isPrimaryKey: true; } ? true : false : never : never; isAutoincrement: U_1["_"] extends infer T_11 ? T_11 extends U_1["_"] ? T_11 extends { isAutoincrement: true; } ? true : false : never : never; hasRuntimeDefault: U_1["_"] extends infer T_12 ? T_12 extends U_1["_"] ? T_12 extends { hasRuntimeDefault: true; } ? true : false : never : never; enumValues: U_1["_"]["enumValues"]; baseColumn: U_1["_"] extends infer T_13 ? T_13 extends U_1["_"] ? T_13 extends { baseBuilder: infer U_1 extends ColumnBuilderBase, object>; } ? import("drizzle-orm").Column extends infer T_14 ? { [K in keyof T_14]: Omit[K]; } : never> : never : never : never; identity: U_1["_"] extends infer T_15 ? T_15 extends U_1["_"] ? T_15 extends { identity: "always"; } ? "always" : T_15 extends { identity: "byDefault"; } ? "byDefault" : undefined : never : never; generated: U_1["_"] extends infer T_16 ? T_16 extends U_1["_"] ? T_16 extends { generated: infer G; } ? unknown extends G ? undefined : G extends undefined ? undefined : G : undefined : never : never; }, {}, Omit extends infer T_17 ? { [K in keyof T_17]: Omit[K]; } : never> : never : never : never; identity: Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; } extends infer T_18 ? T_18 extends Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; } ? T_18 extends { identity: "always"; } ? "always" : T_18 extends { identity: "byDefault"; } ? "byDefault" : undefined : never : never; generated: Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; } extends infer T_19 ? T_19 extends Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; } ? T_19 extends { generated: infer G; } ? unknown extends G ? undefined : G extends undefined ? undefined : G : undefined : never : never; }, {}, Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; }, "name" | "dataType" | "columnType" | "data" | "driverParam" | "enumValues" | "dialect" | "tableName" | "notNull" | "hasDefault" | "isPrimaryKey" | "isAutoincrement" | "hasRuntimeDefault" | "identity" | "brand" | "generated" | "baseColumn"> extends infer T_20 ? { [K_1 in keyof T_20]: Omit & { name: columns[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume : columns[Key]["_"]["name"]; }, "name" | "dataType" | "columnType" | "data" | "driverParam" | "enumValues" | "dialect" | "tableName" | "notNull" | "hasDefault" | "isPrimaryKey" | "isAutoincrement" | "hasRuntimeDefault" | "identity" | "brand" | "generated" | "baseColumn">[K_1]; } : never>; }; extra: extra; dialect: "pg"; }>; /** * Create an onchain view. * * - Docs: https://ponder.sh/docs/api-reference/ponder/schema#onchainview * * @example * import { onchainView } from "ponder"; * * export const accountView = onchainView("account_view").as((qb) => * qb.select().from(account), * ); * * @param name - The view name in the database. * @param columns - [Optional] The view columns. * @returns The onchain view. */ export declare function onchainView(name: TName): ViewBuilder; export declare function onchainView>(name: TName, columns: TColumns): ManualViewBuilder; export declare const isPgEnumSym: unique symbol; export type OnchainEnum = { (): PgEnumColumnBuilderInitial<"", TValues>; (name: TName): PgEnumColumnBuilderInitial; (name?: TName): PgEnumColumnBuilderInitial; readonly enumName: string; readonly enumValues: TValues; readonly schema: string | undefined; /** @internal */ [isPgEnumSym]: true; } & { [onchain]: true; }; export declare const onchainEnum: (enumName: string, values: T | Writable) => OnchainEnum>; //# sourceMappingURL=onchain.d.ts.map