import * as Effect from "effect/Effect";
import * as Redacted from "effect/Redacted";
import type { Client } from "pg";
import { type NormalizedMigrationsInput, type StampedMigrationsState } from "../SQL/Migrations/index.ts";
declare const PgError_base: new = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
readonly _tag: "PgError";
} & Readonly;
export declare class PgError extends PgError_base<{
message: string;
cause?: unknown;
}> {
}
/** Open a pg client for the scope of `use`, closing it afterwards. */
export declare const withPgClient: (connectionUri: Redacted.Redacted, use: (client: Client) => Effect.Effect) => Effect.Effect;
/**
* Neon's migration adaptation is exactly this: the shared pipeline with a
* connection-URI-scoped pg client as its executor.
*/
export declare const runPgMigrations: (options: {
connectionUri: Redacted.Redacted;
input: NormalizedMigrationsInput;
stamped: StampedMigrationsState;
}) => Effect.Effect;
/**
* Run a single SQL script against the database (used for `importFiles`).
*/
export declare const runSql: (connectionUri: Redacted.Redacted, sql: string) => Effect.Effect;
export {};
//# sourceMappingURL=Migrations.d.ts.map