export declare const RUDDER_POSTGRES_BIN_DIR_ENV = "RUDDER_POSTGRES_BIN_DIR";
export declare const RUDDER_PRODUCTION_POSTGRES_VERSION = "18.4";
export type LocalPostgresProvider = "official-postgres" | "embedded-postgres";
export type LocalPostgresInstance = {
    initialise(): Promise<void>;
    start(): Promise<void>;
    stop(): Promise<void>;
};
export type LocalPostgresInstanceOptions = {
    databaseDir: string;
    user: string;
    password: string;
    port: number;
    persistent: boolean;
    initdbFlags?: string[];
    onLog?: (message: unknown) => void;
    onError?: (message: unknown) => void;
};
export type LocalPostgresInstanceSelection = {
    provider: LocalPostgresProvider;
    instance: LocalPostgresInstance;
    postgresBinDir?: string;
};
export type PostgresVersionRunner = (postgresBinaryPath: string) => Promise<string>;
export declare function resolveOfficialPostgresBinDir(rawValue?: string | undefined): string | null;
export declare function resolveOfficialPostgresBinaries(binDir: string): {
    initdb: string;
    pgCtl: string;
    postgres: string;
};
export declare function validateOfficialPostgresBinDir(binDir: string): {
    ok: true;
} | {
    ok: false;
    missing: string[];
};
export declare function assertOfficialPostgresVersion(binDir: string, runVersionCommand?: PostgresVersionRunner): Promise<void>;
export declare function buildOfficialPostgresInitdbArgs(options: LocalPostgresInstanceOptions, passwordFilePath: string): string[];
export declare function createOfficialPostgresInstance(binDir: string, options: LocalPostgresInstanceOptions): LocalPostgresInstance;
export declare function createLocalPostgresInstance(options: LocalPostgresInstanceOptions): Promise<LocalPostgresInstanceSelection>;
//# sourceMappingURL=local-postgres-provider.d.ts.map