import type { RAstNodeBase, Location, NoInfo } from '../model';
import { RNode } from '../model';
import { RType } from '../type';
import { SemVer } from 'semver';
/**
 * Variant of the binary operator, specifically for the new, built-in pipe operator.
 */
export interface RPipe<Info = NoInfo> extends RAstNodeBase<Info>, Location {
    readonly type: RType.Pipe;
    readonly lhs: RNode<Info>;
    readonly rhs: RNode<Info>;
}
/**
 * Helper for working with {@link RPipe} AST nodes.
 */
export declare const RPipe: {
    readonly name: "RPipe";
    /**
     * Type guard for {@link RPipe} nodes.
     */
    readonly is: <Info = object>(this: void, node: RNode<Info> | undefined) => node is RPipe<Info>;
    /**
     * Returns the minimum R version that supports the pipe operator.
     */
    readonly availableFromRVersion: (this: void) => SemVer;
    /**
     * Returns the minimum R version that supports using the placeholder like '_'.
     */
    readonly hasPlaceHolderFromRVersion: (this: void) => SemVer;
    /**
     * Returns the minimum R version that supports using the placeholder like '_' in access
     * patterns: `_$a`
     */
    readonly hasAccessPlaceHolderFromRVersion: (this: void) => SemVer;
    readonly getLocation: (this: void, node: RNode) => import("../../../../../util/range").SourceLocation | undefined;
    readonly getId: (this: void, node: RNode<import("../processing/decorate").ParentInformation>) => import("../processing/node-id").NodeId;
    readonly getType: (this: void, node: RNode) => RType;
    readonly visitAst: <OtherInfo = object>(this: void, nodes: import("../model").SingleOrArrayOrNothing<RNode<OtherInfo>>, onVisit?: import("../processing/visitor").OnEnter<OtherInfo>, onExit?: import("../processing/visitor").OnExit<OtherInfo>) => void;
    readonly collectAllIds: <OtherInfo>(this: void, nodes: import("../model").SingleOrArrayOrNothing<RNode<OtherInfo & import("../processing/decorate").ParentInformation>>) => Set<import("../processing/node-id").NodeId>;
    readonly directChildren: <OtherInfo>(this: void, node: RNode<OtherInfo>) => readonly (RNode<OtherInfo> | typeof import("./r-function-call").EmptyArgument)[];
    readonly directParent: <OtherInfo>(this: void, node: RNode<OtherInfo & import("../processing/decorate").ParentInformation>, idMap: import("../processing/decorate").AstIdMap<OtherInfo & import("../processing/decorate").ParentInformation>) => RNode<OtherInfo & import("../processing/decorate").ParentInformation> | undefined;
    readonly iterateParents: <OtherInfo>(this: void, node: RNode<OtherInfo & import("../processing/decorate").ParentInformation> | undefined, idMap: import("../processing/decorate").AstIdMap<OtherInfo & import("../processing/decorate").ParentInformation>) => Generator<RNode<OtherInfo & import("../processing/decorate").ParentInformation>>;
    readonly depth: (this: void, node: RNode<import("../processing/decorate").ParentInformation>, idMap: import("../processing/decorate").AstIdMap<import("../processing/decorate").ParentInformation>) => number;
    readonly collectAllIdsWithStop: <OtherInfo>(this: void, nodes: import("../model").SingleOrArrayOrNothing<RNode<OtherInfo & import("../processing/decorate").ParentInformation>>, stop: (node: RNode<OtherInfo & import("../processing/decorate").ParentInformation>) => boolean) => Set<import("../processing/node-id").NodeId>;
    readonly lexeme: <R extends RNode<import("../processing/decorate").ParentInformation>>(this: void, node: R | undefined) => R extends {
        lexeme: string;
    } ? string : string | undefined;
    readonly documentation: typeof import("../../../../roxygen2/documentation-provider").getDocumentationOf;
};
