import { BaseIndex } from "@ocap/indexdb";
import { IIndexTable } from "@ocap/types";
import Lokijs from "lokijs";

//#region src/table/base.d.ts
type UniqueIndex = string | string[];
declare class MemoryIndex<T = unknown> extends BaseIndex<T> implements IIndexTable<T> {
  collection: Lokijs.Collection<T & Record<string, unknown>>;
  /**
   * @param name table name
   * @param uniqIndex primary key(s)
   * @param db LokiJS database instance
   */
  constructor(name: string, uniqIndex: UniqueIndex, db: Lokijs);
  count(...args: Parameters<Lokijs.Collection['count']>): number;
  _insert(row: Record<string, unknown>): T & Record<string, unknown>;
  _get(key: string | Record<string, unknown>): (T & Record<string, unknown>) | null;
  _update(key: string | Record<string, unknown>, updates: Record<string, unknown>): T & Record<string, unknown>;
  _reset(): void;
}
//#endregion
export { MemoryIndex as default };