import type { Lane } from ".";
/**
 * a lane operator that assigns lanes greedily, but quickly.
 *
 * Create with {@link laneGreedy}.
 */
export interface LaneGreedy extends Lane<unknown, unknown> {
    /**
     * set whether the greedy assignment should be top-down or bottom-up.
     *
     * These produce slightly different results with the way the nodes are assigned.
     *
     * (default: `true`)
     */
    topDown(val: boolean): LaneGreedy;
    /**
     * get whether the current operator is set to assign top-down..
     */
    topDown(): boolean;
    /**
     * set whether to used compressed output
     *
     * If output is compressed a free lane will be chosen over minimizing edge
     * lengths. This can sometimes create cluttered layouts, but they will be
     * less wide.
     *
     * (default: `true`)
     */
    compressed(val: boolean): LaneGreedy;
    /** get the current compressed setting */
    compressed(): boolean;
    /**
     * set whether to assign bidirectional indices
     *
     * The first node will be assigned lane zero. If bidirectional, the lanes can
     * fan out in either direction from there, otherwise new lanes will always be
     * added to the right.
     *
     * (default: `false`)
     */
    bidirectional(val: boolean): LaneGreedy;
    /** get the current bidirectional setting */
    bidirectional(): boolean;
    /** @internal flag indicating that this is built in to d3dag and shouldn't error in specific instances */
    readonly d3dagBuiltin: true;
}
/**
 * create a default {@link LaneGreedy}
 *
 * This {@link Lane} operator doesn't completely remove edge crossing, but is
 * much faster than {@link laneOpt}.  This lane operator has three different
 * settings that allow for alteration: {@link LaneGreedy#bidirectional},
 * {@link LaneGreedy#compressed}, and {@link LaneGreedy#topDown}.
 *
 * @example
 *
 * ```ts
 * const layout = grid().lane(laneGreedy().compressed(false));
 * ```
 */
export declare function laneGreedy(...args: never[]): LaneGreedy;
