import { ParentAutogroupNode, SiblingAutogroupNode, type TraceTree, type TraceTreeNode, } from './traceTree'; export function isMissingInstrumentationNode( node: TraceTreeNode ): node is TraceTreeNode { return !!( node.value && 'type' in node.value && node.value.type === 'missing_instrumentation' ); } export function isSpanNode( node: TraceTreeNode ): node is TraceTreeNode { return ( !!(node.value && !('transaction' in node.value) && 'span_id' in node.value) && !('autogrouped_by' in node.value) ); } export function isTransactionNode( node: TraceTreeNode ): node is TraceTreeNode { return !!(node.value && 'transaction' in node.value); } export function isParentAutogroupedNode( node: TraceTreeNode ): node is ParentAutogroupNode { return node instanceof ParentAutogroupNode; } export function isSiblingAutogroupedNode( node: TraceTreeNode ): node is SiblingAutogroupNode { return node instanceof SiblingAutogroupNode; } export function isAutogroupedNode( node: TraceTreeNode ): node is ParentAutogroupNode | SiblingAutogroupNode { return !!(node.value && 'autogrouped_by' in node.value); } export function isTraceErrorNode( node: TraceTreeNode ): node is TraceTreeNode { return !!(node.value && 'level' in node.value); } export function isRootNode( node: TraceTreeNode ): node is TraceTreeNode { return !!(node.value && node.value === null); } export function isTraceNode( node: TraceTreeNode ): node is TraceTreeNode { return !!(node.value && 'orphan_errors' in node.value); }