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; }