import { Entry } from "@dao-xyz/peerbit-log";
import { Identity } from "@dao-xyz/peerbit-crypto";
import { Log } from "@dao-xyz/peerbit-log";
import { TransportMessage } from "./message.js";
export declare class MinReplicas {
    get value(): number;
}
export declare class AbsolutMinReplicas extends MinReplicas {
    _value: number;
    constructor(value: number);
    get value(): number;
}
/**
 * This thing allows use to faster sync since we can provide
 * references that can be read concurrently to
 * the entry when doing Log.fromEntry or Log.fromEntryHash
 */
export declare class EntryWithRefs<T> {
    entry: Entry<T>;
    references: Entry<T>[];
    constructor(properties: {
        entry: Entry<T>;
        references: Entry<T>[];
    });
}
export declare class ExchangeHeadsMessage<T> extends TransportMessage {
    logId: Uint8Array;
    heads: EntryWithRefs<T>[];
    minReplicas?: MinReplicas;
    reserved: Uint8Array;
    constructor(props: {
        logId: Uint8Array;
        heads: EntryWithRefs<T>[];
        minReplicas?: MinReplicas;
    });
}
export declare class RequestHeadsMessage extends TransportMessage {
    address: string;
    constructor(props: {
        topic: string;
        address: string;
    });
}
export declare const createExchangeHeadsMessage: (log: Log<any>, heads: Entry<any>[], includeReferences: boolean, identity: Identity | undefined) => Promise<Uint8Array>;
