import { RuntimeConfig } from "../types.mjs";
import { WorkspaceIdentity } from "./identity.mjs";
import { Context, Effect, Layer } from "effect";
//#region src/db/bindings.d.ts
interface DatabaseBinding {
  readonly key: string;
  readonly source: "local" | "remote";
  readonly section: "app.api" | "app.auth" | "plugins";
  readonly identity: WorkspaceIdentity;
  readonly url: string;
}
declare const DatabaseBindingError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
  readonly _tag: "DatabaseBindingError";
} & Readonly<A>;
declare class DatabaseBindingError extends DatabaseBindingError_base<{
  readonly pluginKey: string;
  readonly message: string;
}> {}
interface DatabaseBindingsService {
  readonly forPluginKey: (pluginKey: string) => Effect.Effect<DatabaseBinding, DatabaseBindingError>;
}
declare const DatabaseBindings_base: Context.ServiceClass<DatabaseBindings, "everything-dev/DatabaseBindings", DatabaseBindingsService>;
declare class DatabaseBindings extends DatabaseBindings_base {}
interface DatabaseBindingsOptions {
  readonly projectDir: string;
  readonly loadRuntimeConfig: () => Promise<RuntimeConfig | null>;
  /** May return a promise — a rejection propagates into the binding error instead of silently proceeding with an unloaded .env. */
  readonly loadEnv?: () => void | Promise<void>;
  readonly env?: Record<string, string | undefined>;
}
declare const makeDatabaseBindings: (options: DatabaseBindingsOptions) => Layer.Layer<DatabaseBindings>;
//#endregion
export { DatabaseBinding, DatabaseBindingError, DatabaseBindings, DatabaseBindingsOptions, DatabaseBindingsService, makeDatabaseBindings };
//# sourceMappingURL=bindings.d.mts.map