import type { CoreProtocolRegistry } from '../core/core-protocol.js';
import type { Filter } from '../types/query-types.js';
import type { GenericMessage } from '../types/message-types.js';
import type { MessagesFilter } from '../types/messages-types.js';
/**
 * Class containing Messages related utility methods.
 */
export declare class Messages {
    /**
     * Normalizes/fixes the formatting of the given filters (such as URLs) so that they provide a consistent search experience.
     */
    static normalizeFilters(filters: MessagesFilter[]): MessagesFilter[];
    /**
     *  Converts an incoming array of MessagesFilter into an array of Filter usable by MessageLog.
     *
     * When a `CoreProtocolRegistry` is provided, each registered core protocol's
     * `constructAdditionalMessageFilter` hook is invoked per filter. This replaces the previous
     * hardcoded permission-records shadow filter with a generic loop over all core protocols.
     *
     * @param filters An array of MessagesFilter
     * @param coreProtocols Optional registry of core protocols whose additional filters are injected.
     * @returns {Filter[]} an array of generic Filter able to be used when querying.
     */
    static convertFilters(filters: MessagesFilter[], coreProtocols?: CoreProtocolRegistry): Filter[];
    /**
     * Returns a copy of a RecordsWrite message without inline encodedData, and the
     * detached encodedData value for wire surfaces that carry data beside the message.
     */
    static detachEncodedData(message: GenericMessage): {
        message: GenericMessage;
        encodedData?: string;
    };
    /**
     * Converts an external-facing filter model into an internal-facing filer model used by data store.
     */
    private static convertFilter;
    private static hasEncodedData;
}
//# sourceMappingURL=messages.d.ts.map