import type { ArangoDBConfig } from '../config.js'; import type { SchemaMigration } from './migrations.js'; export declare class MigrationPerformer { private readonly config; private readonly db; constructor(config: ArangoDBConfig); performMigration(migration: SchemaMigration): Promise; private createPersistentIndex; private dropIndex; private dropVectorIndex; /** * Creates a new vector index (for first-time creation or recreation from an existing one). * * Both CreateVectorIndexMigration and RecreateVectorIndexMigration are executed identically: * 1. Determine the target slot from requiredIndex.slot * 2. Call ensureIndex with slot-pinned defaultNProbe (A->1, B->2) to avoid dedup * 3. Wait for the new index to become ready * 4. If existingIndex is present (recreate): drop the old index */ private createOrRecreateVectorIndex; /** * Polls the ArangoDB index API until the vector index reports trainingState "ready". * * ArangoDB 3.12.9+ reports a `trainingState` field on vector indexes. While the * index is still being trained, this field is set to a value other than "ready" * (e.g. "training"). We poll at a fixed interval until the index reports "ready" * or the timeout is exceeded. * * If the ArangoDB version does not report trainingState (pre-3.12.9), the method * returns immediately - ensureIndex in those versions blocks until training completes. */ waitForVectorIndexReady(collectionName: string, indexName: string, { pollIntervalMs, timeoutMs, }?: { pollIntervalMs?: number; timeoutMs?: number; }): Promise; private createDocumentCollection; private createEdgeCollection; private createArangoSearchView; private updateArangoSearchView; private dropArangoSearchView; private recreateArangoSearchView; private createArangoSearchAnalyzer; private updateArangoSearchAnalyzer; }