/* tslint:disable */
/* eslint-disable */

/* auto-generated by NAPI-RS */

/** Filter options for listItems, exposed as a plain JS object. */
export interface JsListFilter {
  category?: string
  subcategory?: string
  tags?: Array<string>
}
/**
 * The main storage class exposed to JavaScript.
 *
 * Methods are synchronous on the Rust side — the JS layer wraps them in
 * Promise.resolve() so they satisfy the async Backend interface without
 * blocking the event loop (operations are fast local filesystem I/O).
 */
export declare class JsCatalogStore {
  constructor(dataDir: string, cacheDir?: string | undefined | null)
  refresh(): NapiResult
  rebuildCache(): NapiResult
  addItem(newItem: any): NapiResult
  getItem(idOrName: string): NapiResult
  listItems(filter?: JsListFilter | undefined | null): NapiResult
  updateItem(id: string, updates: any): NapiResult
  deleteItem(id: string): NapiResult
  searchItems(query: string): NapiResult
  getItemFields(): NapiResult
  addAttachment(itemId: string, filename: string, kind: string, data: Buffer, label?: string | undefined | null): NapiResult
  getAttachment(itemId: string, filename: string): NapiResult
  deleteAttachment(itemId: string, filename: string): NapiResult
}
