/* auto-generated by NAPI-RS */
/* eslint-disable */

export class Storage {
  /** Create a storage instance and establish connection to persist store. */
  static connect(database: string, debugOnlyAutoMigrate?: boolean | undefined | null): Promise<Storage>
  /** List all blobs in a workspace. */
  listBlobs(workspaceId?: string | undefined | null): Promise<Array<string>>
  /** Fetch a workspace blob. */
  getBlob(workspaceId: string, name: string): Promise<Blob | null>
  /** Upload a blob into workspace storage. */
  uploadBlob(workspaceId: string, blob: Buffer): Promise<string>
  /** Delete a blob from workspace storage. */
  deleteBlob(workspaceId: string, hash: string): Promise<boolean>
  /** Workspace size taken by blobs. */
  blobsSize(workspaces: Array<string>): Promise<number>
}

export interface Blob {
  contentType: string
  lastModified: string
  size: number
  data: Buffer
}

/**
 * Merge updates in form like `Y.applyUpdate(doc, update)` way and return the
 * result binary.
 */
export function mergeUpdatesInApplyWay(updates: Array<Buffer>): Buffer

export function mintChallengeResponse(resource: string, bits?: number | undefined | null): Promise<string>

export function verifyChallengeResponse(response: string, bits: number, resource: string): Promise<boolean>

