
import { PREPARE_PROVIDER_FOR_USE } from './provider'

declare type CreateItem = (storeId: string, item: any, itemId: string, extract?: any) => Promise<any[]>

declare type CreateItemId = (storeId: string, extract?: any) => Promise<string[]>

declare type CreateItemStore = (storeId: string, extract?: any) => Promise<any[]>

declare type GetItem = (storeId: string, itemId: string, extract?: any) => Promise<any[]>

declare type GetItemList = (storeId: string, extract?: any) => Promise<any[]>

declare type UpdateItem = (storeId: string, itemId: string, item: any, extract?: any) => Promise<any[]>

declare type DeleteItem = (storeId: string, itemId: string, extract?: any) => Promise<boolean[]>

declare type DoesExistItem = (storeId: string, itemId: string, extract?: any) => Promise<boolean[]>

interface DatabaseMultiplexer {
  PREPARE_PROVIDER_FOR_USE: PREPARE_PROVIDER_FOR_USE
  createItem: CreateItem
  createItemId: CreateItemId
  createItemStore: CreateItemStore
  getItem: GetItem
  getItemList: GetItemList
  updateItem: UpdateItem
  deleteItem: DeleteItem
  doesExistItem: DoesExistItem
}

export {
  DatabaseMultiplexer,
  CreateItemStore,
  GetItem,
  GetItemList,
  CreateItemId,
  CreateItem,
  UpdateItem,
  DeleteItem,
  DoesExistItem
}