import { AsyncIterableQuery } from './AsyncIterableQuery' ; /**
 * Join two iterables to produce a new iterable.
 */ export interface AsyncIterableJoin < T > extends AsyncIterable < T > { param { Iterable < TRight > } other param { ( element : T , index : number ) => TKey } leftKeySelector param { ( element : TRight , index : number ) => TKey } rightKeySelector param { ( left : T , right : TRight ) => TResult } joinSelector returns join < TKey , TRight , TResult > ( other , leftKeySelector , rightKeySelector , joinSelector ) : AsyncIterableQuery < TResult > ; param { Iterable < TRight > } other param { ( element : T , index : number ) => TKey } leftKeySelector param { ( element : TRight , index : number ) => TKey } rightKeySelector param { ( left : T , right ? : TRight ) => TResult } joinSelector returns leftJoin < TKey , TRight , TResult > ( other , leftKeySelector , rightKeySelector , joinSelector ) : AsyncIterableQuery < TResult > ; param { Iterable < TRight > } other param { ( element : T , index : number ) => TKey } leftKeySelector param { ( element : TRight , index : number ) => TKey } rightKeySelector param { ( left : T , right : TRight ) => TResult } joinSelector returns todo groupJoin < TKey , TRight , TResult > ( other , leftKeySelector , rightKeySelector , joinSelector ) : AsyncIterableQuery < TResult > ; }