/**
 * Mirror a `LocalFeedbackRecord` into the Neotoma entity graph as a
 * `neotoma_feedback` observation.
 *
 * Best-effort: errors are caught, logged, and swallowed so the JSON
 * source-of-record is never blocked by a mirror failure. The mirror
 * uses a stable idempotency key (`neotoma_feedback-<feedback_id>`) so
 * submit → classify → triage hops all collapse onto one entity.
 *
 * User scoping: each write is issued under `record.submitter_id` (or
 * an explicit `userId` override) to keep per-user isolation consistent
 * with how other per-user entities are stored.
 */
import type { LocalFeedbackRecord } from "./local_store.js";
export interface MirrorStore {
    storeStructured(input: {
        entities: Record<string, unknown>[];
        idempotency_key: string;
        userId?: string;
    }): Promise<{
        structured?: {
            entities?: Array<{
                entity_id: string;
                action?: string;
            }>;
        };
    }>;
}
export declare function __resetMirrorStoreCacheForTests(): void;
export interface MirrorResult {
    mirrored: boolean;
    entity_id?: string;
    action?: string;
    idempotency_key: string;
    reason?: string;
}
export declare function mirrorLocalFeedbackToEntity(record: LocalFeedbackRecord, options?: {
    store?: MirrorStore;
    dataSource?: string;
    userId?: string;
}): Promise<MirrorResult>;
//# sourceMappingURL=mirror_local_to_entity.d.ts.map