import { path } from "@llamaindex/env";
import { DEFAULT_INDEX_STORE_PERSIST_FILENAME, DEFAULT_PERSIST_DIR } from "../constants.js";
import { SimpleKVStore } from "../kvStore/SimpleKVStore.js";
import { KVIndexStore } from "./KVIndexStore.js";
export class SimpleIndexStore extends KVIndexStore {
    kvStore;
    constructor(kvStore){
        kvStore = kvStore || new SimpleKVStore();
        super(kvStore);
        this.kvStore = kvStore;
    }
    static async fromPersistDir(persistDir = DEFAULT_PERSIST_DIR) {
        const persistPath = path.join(persistDir, DEFAULT_INDEX_STORE_PERSIST_FILENAME);
        return this.fromPersistPath(persistPath);
    }
    static async fromPersistPath(persistPath) {
        const simpleKVStore = await SimpleKVStore.fromPersistPath(persistPath);
        return new SimpleIndexStore(simpleKVStore);
    }
    async persist(persistPath = DEFAULT_PERSIST_DIR) {
        this.kvStore.persist(persistPath);
    }
    static fromDict(saveDict) {
        const simpleKVStore = SimpleKVStore.fromDict(saveDict);
        return new SimpleIndexStore(simpleKVStore);
    }
    toDict() {
        if (!(this.kvStore instanceof SimpleKVStore)) {
            throw new Error("KVStore is not a SimpleKVStore");
        }
        return this.kvStore.toDict();
    }
}
