import type { EngineClient } from '../engine/client.js';
import type { SeedLesson } from './schemas/manifest.js';
export interface IngestResult {
    ingested: number;
    skipped: number;
    failed: readonly {
        title: string;
        error: string;
    }[];
}
/**
 * Ingest `seeds` into the engine. Returns `{ingested, skipped, failed}`:
 *   - `ingested`: seeds that the engine accepted as NEW rows
 *     (`result.updated === false`)
 *   - `skipped`:  seeds the engine UPSERTed onto an existing row
 *     (`result.updated === true`)  — idempotent re-ingest
 *   - `failed`:   per-seed RPC errors (engine down, validation error,
 *     network blip). Never thrown — callers log.
 */
export declare function ingestSeedLessons(packName: string, packVersion: string, seeds: readonly SeedLesson[], engine: EngineClient, packDir: string): Promise<IngestResult>;
/**
 * sha256-derived external_id for engine UPSERT.
 *
 * Stable across opensquid processes for the same (pack@version + title),
 * collision-resistant under pack-author discipline (no two seeds in one
 * pack share a title). Different packs that happen to use the same title
 * produce distinct external_ids because pack name is part of the input.
 */
export declare function makeExternalId(packName: string, packVersion: string, title: string): string;
//# sourceMappingURL=seed_lessons_ingest.d.ts.map