import { BinaryOperator, DifferenceStreamWriter, DifferenceStreamReader } from '../graph.js'; import { IStreamBuilder, KeyValue, PipedOperator } from '../types.js'; /** * Type of join to perform */ export type JoinType = `inner` | `left` | `right` | `full` | `anti`; /** * Operator that joins two input streams using direct join algorithms */ export declare class JoinOperator extends BinaryOperator<[ K, V1 ] | [K, V2] | [K, [V1, V2]] | [K, [V1 | null, V2 | null]]> { #private; constructor(id: number, inputA: DifferenceStreamReader<[K, V1]>, inputB: DifferenceStreamReader<[K, V2]>, output: DifferenceStreamWriter, mode?: JoinType); run(): void; private emitInnerResults; private emitLeftOuterResults; private emitRightOuterResults; } /** * Joins two input streams * @param other - The other stream to join with * @param type - The type of join to perform */ export declare function join ? VT : never, V2, T>(other: IStreamBuilder>, type?: JoinType): PipedOperator>; /** * Joins two input streams (inner join) * @param other - The other stream to join with */ export declare function innerJoin ? VT : never, V2, T>(other: IStreamBuilder>): PipedOperator>; /** * Joins two input streams (anti join) * @param other - The other stream to join with */ export declare function antiJoin ? VT : never, V2, T>(other: IStreamBuilder>): PipedOperator>; /** * Joins two input streams (left join) * @param other - The other stream to join with */ export declare function leftJoin ? VT : never, V2, T>(other: IStreamBuilder>): PipedOperator>; /** * Joins two input streams (right join) * @param other - The other stream to join with */ export declare function rightJoin ? VT : never, V2, T>(other: IStreamBuilder>): PipedOperator>; /** * Joins two input streams (full join) * @param other - The other stream to join with */ export declare function fullJoin ? VT : never, V2, T>(other: IStreamBuilder>): PipedOperator>;