package layoutgraph

import (
	
	

	
	
)

const (
	MaxTopologyReferences = maxEngineTopologyReferences
	MaxRoutePoints        = maxEngineRoutePoints
)

// Area returns a node's rectangular area.
func ( *Node) () float64 {
	return .area()
}

// OwningContainer resolves the active cluster or sequence vessel before
// falling back to the node's direct container.
func ( *Node) () *Node {
	return .container()
}

func ( *Node) () bool {
	return  != nil && .shapeType == stepType
}

func ( *Node) ( *Node) bool {
	return  != nil &&  != nil && .shapeType == .shapeType
}

func ( *Node) () {
	if  != nil {
		.isClusterVessel = false
	}
}

func ( *Node) () []*Node {
	return .orderedNears()
}

func ( *Graph) () (*geo.Point, *geo.Point) {
	return .bounds()
}

func ( Nodes) ( float64) [][]*Node {
	return .clusters()
}

func ( Nodes) ( float64,  *limits.WorkGuard) ([][]*Node, error) {
	if  == nil {
		return nil, fmt.Errorf("TALA DistanceClusters requires a work guard")
	}
	return .clustersWithWorkGuard(, )
}

func ( *HerdAssignment) () int {
	return len(.sameSidePaired)
}

func ( *HerdAssignment) () int {
	return len(.oppositeSidePaired)
}

func ( *HerdAssignment) ( *Node) {
	.sameSidePaired[] = struct{}{}
}

func ( *HerdAssignment) ( *Node) {
	.oppositeSidePaired[] = struct{}{}
}

func ( *Node) ( *Node) *Edge {
	return .connectionTo()
}

func ( *Node) ( func(*Node)) {
	.rdfsWalk()
}

func ( *Edge) ( *Node,  bool) {
	.reconnect(, )
}

func ( Spacing) () float64 {
	return .top
}

func ( Spacing) () float64 {
	return .bottom
}

func ( *Sequence) () bool {
	return .isActive()
}

func ( *Graph,  *GraphState) {
	(&Transaction{Graph: , PriorGraphState: }).Rollback()
}

func ( *Graph) ( context.Context,  *limits.WorkGuard,  TransactionOptions) (*Transaction, error) {
	return .newRequestTransactionWithGuard(, , )
}

// SortNodesByID gives sibling layout domains the engine's stable node order.
func ( []*Node) {
	sortNodesByID()
}

func ( *Node) ( bool) {
	if  != nil {
		.isContainer = 
	}
}

func ( *Graph) ( *Node) bool {
	return .isTreeSentinel()
}

func ( *Graph) ( *Node) bool {
	return .isSequence()
}

func ( *Edge) () bool {
	return .isBidirectional()
}

func ( *Edge) () bool {
	return .isUndirected()
}

// ContainerRDFSOrder returns nested containers from innermost to outermost
// while charging the supplied request work budget.
func ( *Graph) ( *Node,  *limits.WorkGuard) ([]*Node, error) {
	return .containerRDFSOrderContext(, )
}

func ( *Graph) ( *Node) []*Node {
	return .containerRDFSOrder()
}