export type TCommonsJoin = {
a: A;
b: B;
data: DataT;
};
export declare class CommonsJoinTable {
private isEqualA;
private isEqualB;
private internalJoins;
protected get joins(): TCommonsJoin[];
export(): TCommonsJoin[];
get as(): A[];
get bs(): B[];
get size(): number;
constructor(isEqualA?: (a1: A, a2: A) => boolean, isEqualB?: (b1: B, b2: B) => boolean);
reset(): void;
private getExisting;
join(a: A, b: B, data: DataT): boolean;
unjoin(a: A, b: B): boolean;
listBsByA(a: A): B[];
listAsByB(b: B): A[];
getJoinData(a: A, b: B): DataT | undefined;
}