import { type StructuredStore, type VectorStore, type EmbeddingProvider, type LLMProvider, type RerankerProvider, type Scheduler, type JobQueue, type Logger } from '@kybernesis/arcana-contracts'; import { type IngestApi } from '../../ingest/index.js'; import { type RetrieveApi } from '../../retrieve/index.js'; import { type MaintainApi } from '../../maintain/index.js'; import { type QueryApi } from '../query/index.js'; import { type CommandApi } from '../command/index.js'; /** * Options for assembling an Arcana instance. Required providers must be * injected — Arcana never imports a concrete backend. */ export interface ArcanaOptions { /** Required: structured store (SQL-shaped CRUD + FTS + graph). */ structured: StructuredStore; /** * Optional: vector store for semantic retrieval. When omitted, all * vector-dependent methods throw NotImplementedError — the same behaviour as * when a real store is injected but the read methods are still stubbed. * Pass undefined (or omit) when the vector backend is unavailable; do NOT * pass a store whose connect() already failed, as that produces misleading * downstream errors. */ vector?: VectorStore; /** Required: embedding provider. */ embed: EmbeddingProvider; /** Required: LLM provider for extraction, tagging, summarisation. */ llm: LLMProvider; /** Optional logger; defaults to a no-op logger. */ logger?: Logger; /** Optional reranker for retrieval re-ordering. */ reranker?: RerankerProvider; /** * Optional scheduler for the sleep pipeline. If omitted, maintain methods * that need a scheduler throw NotImplementedError when called. */ scheduler?: Scheduler; /** * Optional job queue for the sleep pipeline. If omitted, maintain methods * that need a queue throw NotImplementedError when called. */ queue?: JobQueue; /** * Reserved for v0.x — when true, Arcana will install process signal * handlers (SIGINT/SIGTERM) for graceful shutdown. v0.1 accepts and * stores the flag but does not register handlers yet. * @default true */ installSignalHandlers?: boolean; } /** * Resolved Arcana instance — the public surface returned by `createArcana()`. * `.providers` is frozen so consumers can't mutate the injected dependency * graph after construction. */ export interface Arcana { ingest: IngestApi; retrieve: RetrieveApi; maintain: MaintainApi; query: QueryApi; command: CommandApi; providers: Readonly; logger: Logger; } /** * Assemble an Arcana instance from injected providers. Calls each zone * factory with the right deps subset and freezes the providers object so * downstream code cannot mutate the dependency graph. * * v0.1: every zone method throws NotImplementedError — this is the scaffold * milestone. Real implementations land in v0.x. */ export declare function createArcana(opts: ArcanaOptions): Arcana; //# sourceMappingURL=create-arcana.d.ts.map