import { QueryResponse } from '@logsn/protocol';
import type { LogStoreMessage } from '../../LogStoreMessageStream';
import { SystemMessageValue } from '../SystemMessageObservable';
export type SerializedMessageId = string;
export type StorageMatrix = Map<SerializedMessageId, Set<{
    nodeAddress: string;
    messageHash: string;
}>>;
/**
 * @description
 * This function converts the responses into a storage matrix.
 * This is necessary because we need a structured way to store and access the responses.
 *
 * this way we can easily check if all nodes agree on the storage matrix
 * @example
 * [
 * 	['messageId1', [{nodeAddress: '0x123', messageHash: '0x456'}]],
 * 	['messageId2', [{nodeAddress: '0x123', messageHash: '0x789'}, {nodeAddress: '0x789', messageHash: '0x789'}]],
 * 	['messageId3', [{nodeAddress: '0x123', messageHash: '0x567'}]],
 * ]
 *
 */
export declare function convertToStorageMatrix(responses: SystemMessageValue<QueryResponse>[]): StorageMatrix;
export declare const nodesAgreeOnStorageMatrix: (storageMatrix: StorageMatrix) => boolean;
export declare const verifyMessagePresenceInStorageMatrix: ({ messagesFromHttpResponse, storageMatrix, }: {
    messagesFromHttpResponse: LogStoreMessage[];
    storageMatrix: StorageMatrix;
}) => boolean;
