export type Shape = "box" | "polygon" | "ellipse" | "oval" | "circle" | "point" | "egg" | "triangle" | "plaintext" | "plain" | "diamond" | "trapezium" | "parallelogram" | "house" | "pentagon" | "hexagon" | "septagon" | "octagon" | "doublecircle" | "doubleoctagon" | "tripleoctagon" | "invtriangle" | "invtrapezium" | "invhouse" | "Mdiamond" | "Msquare" | "Mcircle" | "rect" | "rectangle" | "square" | "star" | "none" | "underline" | "cylinder" | "note" | "tab" | "folder" | "box3d" | "component" | "promoter" | "cds" | "terminator" | "utr" | "primersite" | "restrictionsite" | "fivepoverhang" | "threepoverhang" | "noverhang" | "assembly" | "signature" | "insulator" | "ribosite" | "rnastab" | "proteasesite" | "proteinstab" | "rpromoter" | "rarrow" | "larrow" | "lpromoter" | "record" | "Mrecord";
export type ArrowType = "normal" | "inv" | "dot" | "invdot" | "odot" | "invodot" | "none" | "tee" | "empty" | "invempty" | "diamond" | "odiamond" | "ediamond" | "crow" | "box" | "obox" | "open" | "halfopen" | "vee";
export type DirType = "forward" | "back" | "both" | "none";
export type EdgeStyle = "solid" | "dashed" | "dotted" | "bold" | "invis" | "tapered";
export type NodeStyle = "solid" | "dashed" | "dotted" | "bold" | "invis" | "filled" | "striped" | "wedged" | "diagonals" | "rounded" | "radial";
export type ClusterStyle = "solid" | "dashed" | "dotted" | "bold" | "invis" | "filled" | "striped" | "rounded" | "radial";
/** Cluster ranking mode (https://graphviz.org/docs/attr-types/clusterMode/) */
export type ClusterMode = "local" | "global" | "none";
/** Output draw order (https://graphviz.org/docs/attr-types/outputMode/) */
export type OutputMode = "breadthfirst" | "nodesfirst" | "edgesfirst";
/** Graph layout direction (https://graphviz.org/docs/attr-types/rankdir/) */
export type RankDir = "TB" | "LR" | "BT" | "RL";
/** Subgraph rank constraint (https://graphviz.org/docs/attr-types/rankType/) */
export type RankType = "same" | "min" | "source" | "max" | "sink";
/** Page output order (https://graphviz.org/docs/attr-types/pagedir/) */
export type PageDir = "BL" | "BR" | "TL" | "TR" | "RB" | "RT" | "LB" | "LT";
/** Component packing granularity (https://graphviz.org/docs/attr-types/packMode/) */
export type PackMode = "node" | "cluster" | "graph";
/** Smoothing method for sfdp (https://graphviz.org/docs/attr-types/smoothType/) */
export type SmoothType = "none" | "avg_dist" | "graph_dist" | "power_dist" | "rng" | "spring" | "triangle";
/** Quadtree scheme for sfdp (https://graphviz.org/docs/attr-types/quadType/) */
export type QuadType = "normal" | "fast" | "none";
/** Compass point for port positions (https://graphviz.org/docs/attr-types/portPos/) */
export type CompassPoint = "n" | "ne" | "e" | "se" | "s" | "sw" | "w" | "nw" | "c" | "_";
/** Vertical placement of labels for nodes, root graphs and clusters (https://graphviz.org/docs/attr-types/labelloc/) */
export type LabelLoc = "t" | "c" | "b";
export interface NodeAttrs {
    area?: number;
    class?: string;
    color?: string;
    colorscheme?: string;
    comment?: string;
    distortion?: number;
    fillcolor?: string;
    fixedsize?: boolean | string;
    fontcolor?: string;
    fontname?: string;
    fontsize?: number;
    gradientangle?: number;
    group?: string;
    height?: number;
    href?: string;
    id?: string;
    image?: string;
    imagepos?: string;
    imagescale?: boolean | string;
    label?: string;
    labelloc?: LabelLoc;
    layer?: string;
    margin?: number | string;
    nojustify?: boolean;
    ordering?: string;
    orientation?: number;
    penwidth?: number;
    peripheries?: number;
    pin?: boolean;
    pos?: string;
    rects?: string;
    regular?: boolean;
    root?: string | boolean;
    samplepoints?: number;
    shape?: Shape;
    shapefile?: string;
    showboxes?: number;
    sides?: number;
    skew?: number;
    sortv?: number;
    style?: string;
    target?: string;
    tooltip?: string;
    URL?: string;
    vertices?: string;
    width?: number;
    xlabel?: string;
    xlp?: string;
    z?: number;
}
export interface EdgeAttrs {
    arrowhead?: ArrowType;
    arrowsize?: number;
    arrowtail?: ArrowType;
    class?: string;
    color?: string;
    colorscheme?: string;
    comment?: string;
    constraint?: boolean;
    decorate?: boolean;
    dir?: DirType;
    edgehref?: string;
    edgetarget?: string;
    edgetooltip?: string;
    edgeURL?: string;
    fillcolor?: string;
    fontcolor?: string;
    fontname?: string;
    fontsize?: number;
    head_lp?: string;
    headclip?: boolean;
    headhref?: string;
    headlabel?: string;
    headport?: string;
    headtarget?: string;
    headtooltip?: string;
    headURL?: string;
    href?: string;
    id?: string;
    label?: string;
    labelangle?: number;
    labeldistance?: number;
    labelfloat?: boolean;
    labelfontcolor?: string;
    labelfontname?: string;
    labelfontsize?: number;
    labelhref?: string;
    labeltarget?: string;
    labeltooltip?: string;
    labelURL?: string;
    layer?: string;
    len?: number;
    lhead?: string;
    lp?: string;
    ltail?: string;
    minlen?: number;
    nojustify?: boolean;
    penwidth?: number;
    pos?: string;
    radius?: number;
    samehead?: string;
    sametail?: string;
    showboxes?: number;
    style?: EdgeStyle | string;
    tail_lp?: string;
    tailclip?: boolean;
    tailhref?: string;
    taillabel?: string;
    tailport?: string;
    tailtarget?: string;
    tailtooltip?: string;
    tailURL?: string;
    target?: string;
    tooltip?: string;
    URL?: string;
    weight?: number;
    xlabel?: string;
    xlp?: string;
}
export interface ClusterAttrs {
    area?: number;
    bb?: string;
    bgcolor?: string;
    class?: string;
    cluster?: boolean;
    color?: string;
    colorscheme?: string;
    fillcolor?: string;
    fontcolor?: string;
    fontname?: string;
    fontsize?: number;
    gradientangle?: number;
    href?: string;
    id?: string;
    K?: number;
    label?: string;
    labeljust?: string;
    labelloc?: LabelLoc;
    layer?: string;
    lheight?: number;
    lp?: string;
    lwidth?: number;
    margin?: number | string;
    nojustify?: boolean;
    pencolor?: string;
    penwidth?: number;
    peripheries?: number;
    rank?: RankType;
    sortv?: number;
    style?: string;
    target?: string;
    tooltip?: string;
    URL?: string;
}
export interface GraphAttrs {
    _background?: string;
    bb?: string;
    beautify?: boolean;
    bgcolor?: string;
    center?: boolean;
    charset?: string;
    class?: string;
    clusterrank?: ClusterMode;
    colorscheme?: string;
    comment?: string;
    compound?: boolean;
    concentrate?: boolean;
    Damping?: number;
    defaultdist?: number;
    dim?: number;
    dimen?: number;
    diredgeconstraints?: string | boolean;
    dpi?: number;
    epsilon?: number;
    esep?: string;
    fontcolor?: string;
    fontname?: string;
    fontnames?: string;
    fontpath?: string;
    fontsize?: number;
    forcelabels?: boolean;
    gradientangle?: number;
    href?: string;
    id?: string;
    imagepath?: string;
    inputscale?: number;
    K?: number;
    label?: string;
    label_scheme?: number;
    labeljust?: string;
    labelloc?: LabelLoc;
    landscape?: boolean;
    layerlistsep?: string;
    layers?: string;
    layerselect?: string;
    layersep?: string;
    layout?: string;
    levels?: number;
    levelsgap?: number;
    lheight?: number;
    linelength?: number;
    lp?: string;
    lwidth?: number;
    margin?: number | string;
    maxiter?: number;
    mclimit?: number;
    mindist?: number;
    mode?: string;
    model?: string;
    newrank?: boolean;
    nodesep?: number;
    nojustify?: boolean;
    normalize?: number | boolean;
    notranslate?: boolean;
    nslimit?: number;
    nslimit1?: number;
    oneblock?: boolean;
    ordering?: string;
    orientation?: string;
    outputorder?: OutputMode;
    overlap?: string | boolean;
    overlap_scaling?: number;
    overlap_shrink?: boolean;
    pack?: boolean | number;
    packmode?: string;
    pad?: number | string;
    page?: number | string;
    pagedir?: PageDir;
    quantum?: number;
    rankdir?: RankDir;
    ranksep?: number | string;
    ratio?: number | string;
    remincross?: boolean;
    repulsiveforce?: number;
    resolution?: number;
    root?: string | boolean;
    rotate?: number;
    rotation?: number;
    scale?: number | string;
    searchsize?: number;
    sep?: string;
    showboxes?: number;
    size?: number | string;
    smoothing?: SmoothType;
    sortv?: number;
    splines?: boolean | string;
    start?: string;
    style?: string;
    stylesheet?: string;
    target?: string;
    TBbalance?: string;
    tooltip?: string;
    truecolor?: boolean;
    URL?: string;
    viewport?: string;
    voro_margin?: number;
    xdotversion?: string;
}
type NodeWriteOnly = "rects" | "vertices" | "xlp";
type EdgeWriteOnly = "head_lp" | "tail_lp" | "lp" | "xlp";
type ClusterWriteOnly = "bb" | "lheight" | "lp" | "lwidth";
type GraphExcluded = "type" | "strict" | "nodeDefaults" | "edgeDefaults" | "graphDefaults" | "bb" | "lheight" | "lp" | "lwidth";
export type NodeDotAttr = Exclude<keyof NodeAttrs, NodeWriteOnly>;
export type EdgeDotAttr = Exclude<keyof EdgeAttrs, EdgeWriteOnly>;
export type ClusterDotAttr = Exclude<keyof ClusterAttrs, ClusterWriteOnly>;
export type GraphDotAttr = Exclude<keyof GraphAttrs, GraphExcluded>;
/** Node DOT attributes (excludes inherited base keys and write-only: rects, vertices, xlp) */
export declare const NODE_DOT_ATTRS: readonly NodeDotAttr[];
/** Edge DOT attributes (excludes inherited base keys and write-only: head_lp, tail_lp, lp, xlp) */
export declare const EDGE_DOT_ATTRS: readonly EdgeDotAttr[];
/** Cluster DOT attributes (excludes inherited base keys and write-only: bb, lheight, lp, lwidth) */
export declare const CLUSTER_DOT_ATTRS: readonly ClusterDotAttr[];
/** Graph DOT attributes (excludes write-only: bb, lheight, lp, lwidth; and non-DOT: type) */
export declare const GRAPH_DOT_ATTRS: readonly GraphDotAttr[];
/**
 * Various graphic and data formats for end user, web, documents and other applications.  See [Output Formats](https://graphviz.org/docs/outputs/) for more information.
 */
export type Format = "svg" | "svg_inline" | "dot" | "json" | "dot_json" | "xdot_json" | "plain" | "plain-ext" | "canon";
/**
 * Various algorithms for projecting abstract graphs into a space for visualization.  See [Layout Engines](https://graphviz.org/docs/layouts/) for more details.
 */
export type Engine = "circo" | "dot" | "fdp" | "sfdp" | "neato" | "osage" | "patchwork" | "twopi" | "nop" | "nop2";
export {};
