///
import { Level } from 'level';
import { Field, Provable } from 'o1js';
import { Store } from './store.js';
import { AbstractBatchPutOperation, AbstractBatchDelOperation, AbstractSublevel } from 'abstract-level';
export { LevelStore };
/**
* Store based on leveldb
*
* @class LevelStore
* @implements {Store}
* @template V
*/
declare class LevelStore implements Store {
protected db: Level;
protected nodesSubLevel: AbstractSublevel, string | Buffer | Uint8Array, string, string>;
protected leavesSubLevel: AbstractSublevel, string | Buffer | Uint8Array, string, string>;
protected operationCache: (AbstractBatchPutOperation, string, any> | AbstractBatchDelOperation, string>)[];
protected eltTyp: Provable;
/**
* Creates an instance of LevelStore.
* @param {Level} db
* @param {Provable} eltTyp
* @param {string} smtName
* @memberof LevelStore
*/
constructor(db: Level, eltTyp: Provable, smtName: string);
/**
* Clear all prepare operation cache.
*
* @memberof LevelStore
*/
clearPrepareOperationCache(): void;
/**
* Get the tree root. Error is thrown when the root does not exist.
*
* @return {*} {Promise}
* @memberof LevelStore
*/
getRoot(): Promise;
/**
* Prepare update the root. Use the commit() method to actually submit changes.
*
* @param {Field} root
* @memberof LevelStore
*/
prepareUpdateRoot(root: Field): void;
/**
* Get nodes for a key. Error is thrown when a key that does not exist is being accessed.
*
* @param {Field} key
* @return {*} {Promise}
* @memberof LevelStore
*/
getNodes(key: Field): Promise;
/**
* Prepare put nodes for a key. Use the commit() method to actually submit changes.
*
* @param {Field} key
* @param {Field[]} value
* @memberof LevelStore
*/
preparePutNodes(key: Field, value: Field[]): void;
/**
* Prepare delete nodes for a key. Use the commit() method to actually submit changes.
*
* @param {Field} key
* @memberof LevelStore
*/
prepareDelNodes(key: Field): void;
/**
* Convert value string to a value of FieldElements type.
*
* @protected
* @param {string} valueStr
* @param {AsFieldElements} eltTyp
* @return {*} {V}
* @memberof LevelStore
*/
protected strToValue(valueStr: string, eltTyp: Provable): V;
/**
* Get the value for a key. Error is thrown when a key that does not exist is being accessed.
*
* @param {Field} path
* @return {*} {Promise}
* @memberof LevelStore
*/
getValue(path: Field): Promise;
/**
* Serialize the value of the FieldElements type into a string
*
* @protected
* @param {V} value
* @return {*} {string}
* @memberof LevelStore
*/
protected valueToStr(value: V): string;
/**
* Prepare put the value for a key. Use the commit() method to actually submit changes.
*
* @param {Field} path
* @param {V} value
* @memberof LevelStore
*/
preparePutValue(path: Field, value: V): void;
/**
* Prepare delete the value for a key. Use the commit() method to actually submit changes.
*
* @param {Field} path
* @memberof LevelStore
*/
prepareDelValue(path: Field): void;
/**
* Use the commit() method to actually submit all prepare changes.
*
* @return {*} {Promise}
* @memberof LevelStore
*/
commit(): Promise;
/**
* Clear the store.
*
* @return {*} {Promise}
* @memberof LevelStore
*/
clear(): Promise;
/**
* Get values map, key is Field.toString().
*
* @return {*} {Promise