import { ClientKafka } from '../client/client-kafka.js';
import { Cluster, GroupMember, GroupMemberAssignment, GroupState } from '../external/kafka.interface.js';
export declare class KafkaReplyPartitionAssigner {
    private readonly clientKafka;
    private readonly config;
    readonly name = "NestReplyPartitionAssigner";
    readonly version = 1;
    constructor(clientKafka: ClientKafka, config: {
        cluster: Cluster;
    });
    /**
     * This process can result in imbalanced assignments
     * @param {array} members array of members, e.g: [{ memberId: 'test-5f93f5a3' }]
     * @param {array} topics
     * @param {Buffer} userData
     * @returns {array} object partitions per topic per member
     */
    assign(group: {
        members: GroupMember[];
        topics: string[];
    }): Promise<GroupMemberAssignment[]>;
    protocol(subscription: {
        topics: string[];
        userData: Buffer;
    }): GroupState;
    getPreviousAssignment(): {
        [key: string]: number;
    };
    decodeMember(member: GroupMember): {
        memberId: string;
        previousAssignment: Record<string, unknown>;
    };
    /**
     * The metadata carried by a group member is chosen by that member, so it is
     * parsed defensively: malformed or missing data must not make the rebalance
     * fail, as a group that never stabilizes leaves the client unable to consume
     * replies. Anything that is not a `previousAssignment` record degrades to an
     * empty assignment (the member is then treated as new).
     */
    private decodePreviousAssignment;
}
