import type { CompoundKey, System } from '../../../zero-protocol/src/ast.ts';
import type { Node } from './data.ts';
import { type FetchRequest, type Input, type Output } from './operator.ts';
import type { SourceSchema } from './schema.ts';
import { type Stream } from './stream.ts';
type Args = {
    parent: Input;
    child: Input;
    parentKey: CompoundKey;
    childKey: CompoundKey;
    relationshipName: string;
    hidden: boolean;
    system: System;
};
/**
 * An *inner* join which fetches nodes from its child input first and then
 * fetches their related nodes from its parent input.  Output nodes are the
 * nodes from parent input (in parent input order), which have at least one
 * related child.  These output nodes have a new relationship added to them,
 * which has the name `relationshipName`. The value of the relationship is a
 * stream of related nodes from the child input (in child input order).
 */
export declare class FlippedJoin implements Input {
    #private;
    constructor({ parent, child, parentKey, childKey, relationshipName, hidden, system, }: Args);
    destroy(): void;
    setOutput(output: Output): void;
    getSchema(): SourceSchema;
    fetch(req: FetchRequest): Stream<Node | 'yield'>;
}
export {};
//# sourceMappingURL=flipped-join.d.ts.map