/**
 * Greedy balance-by-item-count: assign each similarity group to the shard
 * whose running total is smallest. Groups stay whole, so related items
 * remain in one worker's chat history instead of being split across
 * unrelated context windows.
 */
export declare function buildGroupShards(groups: Array<{
    [key: string]: string;
}>, concurrency: number): Array<{
    [key: string]: string;
}>;
