/**
 * Flat-packed row detector.
 *
 * Rejects entity payloads that smuggle a whole CSV-style table into a single
 * entity as numbered-column keys (e.g. `contact_1_name`, `contact_1_email`,
 * `contact_2_name`, `contact_2_email`). These are almost always a bug where a
 * caller stringified many rows into one entity. Neotoma cannot build per-row
 * snapshots or timeline events from that shape.
 *
 * The detector is schema-agnostic: it flags any entity whose fields include
 * two or more `<prefix>_<index>_<suffix>` keys with numeric index segments,
 * where the same `<prefix>_<index>` group contains at least two distinct
 * numeric indices.
 *
 * When detected, `extractFlatPackedRows` returns suggested per-row entities
 * so callers can either split and retry themselves or surface the suggestion
 * in the error payload.
 */
export interface FlatPackedDetection {
    detected: boolean;
    prefix?: string;
    indices?: number[];
    suggestedEntities?: Array<Record<string, unknown>>;
    exampleKeys?: string[];
}
export declare function detectFlatPackedRows(fields: Record<string, unknown>): FlatPackedDetection;
export declare class FlatPackedRowsError extends Error {
    readonly code = "ERR_FLAT_PACKED_ROWS";
    readonly detection: FlatPackedDetection;
    constructor(detection: FlatPackedDetection);
}
//# sourceMappingURL=flat_packed_detection.d.ts.map