import { EmbeddingRetriever } from '../rag/embedding-retriever.js';
import type { VectorStore } from '../rag/vector-store.js';
import { type DiskBytesReader, type MediaManagerHandle, MediaRagIngestion, type ResolveMediaRef } from '../rag-media/media-rag-ingestion.js';
import { type ExtractFn, MimeTextExtractor } from '../rag-media/text-extractor.js';
import type { EmbeddingProvider } from '../spi/embedding-provider.js';
/**
 * An in-memory {@link MediaManagerHandle} for tests: bytes are stored in a per-disk `Map`, keyed by the
 * object key. Stands in for an `@adonis-agora/media` `MediaManager` — the media→RAG bridge only reads
 * `disk(name).getBytes(key)`, so this deterministic fake exercises the whole ingestion path offline.
 */
export declare class FakeMediaManager implements MediaManagerHandle {
    private readonly disks;
    /** Seed a file's bytes on a disk. Accepts a string (UTF-8 encoded) or raw bytes. Chainable. */
    put(disk: string, key: string, contents: string | Uint8Array): this;
    disk(name?: string): DiskBytesReader;
}
/**
 * A fake PDF text extractor for tests — stands in for a real (host-supplied) PDF parser without the
 * dependency. It ignores the bytes and returns fixed text so a test can assert the `application/pdf`
 * hook is invoked. Register it: `defaultTextExtractor().register('application/pdf', fakePdfExtractor())`.
 */
export declare function fakePdfExtractor(text?: string): ExtractFn;
/**
 * Build a fully in-memory media→RAG ingestion for tests: a {@link MemoryVectorStore} + a deterministic
 * {@link FakeEmbeddingProvider} + a {@link FakeMediaManager}, wired into a {@link MediaRagIngestion} and
 * paired with an {@link EmbeddingRetriever} over the same store/embedder (so a test can ingest then
 * retrieve, filtering by tenant/owner metadata). Seed files with `media.put(disk, key, contents)`.
 */
export declare function inMemoryMediaRagIngestion(options?: {
    embedder?: EmbeddingProvider;
    store?: VectorStore;
    media?: FakeMediaManager;
    extractor?: MimeTextExtractor;
    contentTypes?: string[];
    resolve?: ResolveMediaRef;
    maxBytes?: number;
}): {
    ingestion: MediaRagIngestion;
    store: VectorStore;
    embedder: EmbeddingProvider;
    media: FakeMediaManager;
    retriever: EmbeddingRetriever;
};
//# sourceMappingURL=fake-media.d.ts.map