/**
 * A {@link Lane} that assigns lanes to minimize edge crossings.
 *
 * @packageDocumentation
 */
import type { OptChecking } from "../../layout";
import type { Lane } from ".";
/**
 * a lane operator that assigns lanes to minimize edge crossings.
 *
 * Create with {@link laneOpt}.
 */
export interface LaneOpt extends Lane<unknown, unknown> {
    /**
     * set whether to used compressed output
     *
     * If output is compressed then the number of crossings will be minimized
     * subject to the fewest number of lanes necessary.
     *
     * (default: `false`)
     */
    compressed(val: boolean): LaneOpt;
    /** get the current compressed setting */
    compressed(): boolean;
    /**
     * set whether to also minimize distance between connected nodes
     *
     * This adds more variables and constraints so will take longer, but will
     * likely produce a better layout.
     *
     * (default: `true`)
     */
    dist(val: boolean): LaneOpt;
    /** get whether the current layout minimized distance */
    dist(): boolean;
    /**
     * set the large dag handling
     *
     * Setting to anything but `"fast"` will allow running on larger dags, but
     * the layout may run forever, or crash the vm.
     *
     * (default: `"fast"`)
     */
    check(val: OptChecking): LaneOpt;
    /** Return the handling of large graphs. */
    check(): OptChecking;
    /** @internal flag indicating that this is built in to d3dag and shouldn't error in specific instances */
    readonly d3dagBuiltin: true;
}
/**
 * create a default {@link LaneOpt}
 *
 * This {@link Lane} operator optimally minimizes edge crossings, but can take
 * a long time and may crash on large graphs. The {@link LaneOpt#check} option
 * is set to error if the graph is too big. {@link LaneOpt#compressed} and
 * {@link LaneOpt#dist} slightly tweak the resulting layout.
 *
 * @example
 *
 * ```ts
 * const builder = grid().lane(laneOpt().compressed(true));
 * ```
 */
export declare function laneOpt(...args: never[]): LaneOpt;
