import { Effect } from "effect";
import { DataMigrationError, type SqliteDataMigrationClient } from "./sqlite-data-migrations";
export interface SqliteConfigBlobMigrationOptions {
    /** The ledger entry name, for error attribution. */
    readonly migrationName: string;
    /** Rows whose `plugin_id` equals this are candidates. */
    readonly pluginId: string;
    /** The config field holding the inline text to move (e.g. `spec`). */
    readonly inlineField: string;
    /** The config field that will carry the content hash (e.g. `specHash`). */
    readonly hashField: string;
    /** Blob key prefix; the key is `<prefix>/<sha256>` (e.g. `spec`). */
    readonly blobKeyPrefix: string;
}
/**
 * Move every inline `options.inlineField` in this plugin's integration
 * configs into the blob table and rewrite the config to carry
 * `options.hashField`. Returns the number of rows rewritten. The
 * `integration` table may not exist yet on a fresh database — that counts
 * as nothing to migrate.
 */
export declare const runSqliteConfigBlobMigration: (client: SqliteDataMigrationClient, options: SqliteConfigBlobMigrationOptions) => Effect.Effect<number, DataMigrationError>;
//# sourceMappingURL=sqlite-config-blob-migration.d.ts.map