export function initialByzantineClientStore(store: ByzantineStore, client: number): {
    leafNodeList: MerkleTreeLeafNodeList;
    layerNodeList: MerkleTreeLayerNodeList;
    merkleTreeRoot: null;
    hashTable: Map<any, any>;
};
export function createFHash(leafNode: MerkleTreeLeafNode, clientByzantineStore: {
    leafNodeList: MerkleTreeLeafNodeList;
    layerNodeList: MerkleTreeLayerNodeList;
    merkleTreeRoot: MerkleTreeHashNode | null | undefined;
}): string;
export function getFHashNodes(leafNode: MerkleTreeLeafNode, clientByzantineStore: {
    leafNodeList: MerkleTreeLeafNodeList;
    layerNodeList: MerkleTreeLayerNodeList;
    merkleTreeRoot: MerkleTreeHashNode | null | undefined;
}): {
    layer: number;
    offset: number;
    hash: string;
    item: MerkleTreeLeafNode | MerkleTreeHashNode;
}[];
export function addLeafNodesToMerkleTree(leafNodesMap: Map<number, Array<MerkleTreeLeafNode>>, store: ByzantineStore): void;
export function addPendingMerkleTreeLeafNodesToTransaction(transaction: Transaction, structId: ID, leafNodes: Array<MerkleTreeLeafNode>): void;
export function findMerkleTreeLeafNodeInStore(store: ByzantineStore, struct: Item, id: ID): MerkleTreeLeafNode | null;
export function addMerkleTreeLeafNodes(store: ByzantineStore, struct: Item, transaction: Transaction): Array<MerkleTreeLeafNode>;
export function readByzantineState(doc: Doc): Map<number, {
    state: number;
    fhash: string;
}>;
export function writeByzantineStateToEncoder(encoder: encoding.Encoder, doc: Doc): boolean;
export function readByzantineStateFromDecoder(decoder: decoding.Decoder): Map<number, {
    state: number;
    fhash: string;
}>;
export function getFanNodesFromByzantineStates(byzantineStates: Map<number, {
    state: number;
    fhash: string;
}>, doc: Doc): Map<number, Array<{
    layer: number;
    offset: number;
    hash: string;
    item: MerkleTreeLeafNode | MerkleTreeHashNode;
}>>;
export function writeFanNodesToEncoder(encoder: encoding.Encoder, byzantineStates: Map<number, {
    state: number;
    fhash: string;
}>, doc: Doc): boolean;
export function readFanNodesFromDecoder(decoder: decoding.Decoder, doc: Doc): Map<number, Array<{
    layer: number;
    offset: number;
    hash: string;
    item?: MerkleTreeLeafNode | MerkleTreeHashNode;
}>>;
export function getFanNodeByPosition(byzantineStore: ByzantineStore, client: number, layer: number, offset: number): MerkleTreeLeafNode | MerkleTreeHashNode | undefined;
export function getStructFHashByID(id: ID, doc: Doc): null | string;
export class ByzantineStore {
    /**
     * @type {Map<number,{
     *   leafNodeList: MerkleTreeLeafNodeList,
     *   layerNodeList: MerkleTreeLayerNodeList,
     *   merkleTreeRoot: MerkleTreeHashNode | null | undefined,
     *   hashTable: Map<string, Item>
     * }>}
     */
    clients: Map<number, {
        leafNodeList: MerkleTreeLeafNodeList;
        layerNodeList: MerkleTreeLayerNodeList;
        merkleTreeRoot: MerkleTreeHashNode | null | undefined;
        hashTable: Map<string, Item>;
    }>;
}
import { MerkleTreeLeafNodeList } from "./MerkleTree/LeafNodeList";
import { MerkleTreeLayerNodeList } from "./MerkleTree/LayerNodeList";
import { MerkleTreeLeafNode } from "./MerkleTree/LeafNode";
import { MerkleTreeHashNode } from "./MerkleTree/HashNode";
import { Transaction } from "../utils/Transaction";
import { ID } from "../utils/ID";
import { Item } from "../structs/Item";
import { Doc } from "../utils/Doc";
import { encoding } from "lib0";
import { decoding } from "lib0";
