import { DocumentXbrlResult } from '../services/DocumentParser/parsers/parse-xbrl'; import { XbrlFilingSummaryReport } from '../services/DocumentParser/XBRLParser/FilingSummaryParser'; export interface XbrlFilingSummaryReportWithTrees extends XbrlFilingSummaryReport { calculationTree: TreeNode[]; presentationTree: TreeNode[]; } export type MemberInclusionRule = 'always' | 'inReportsWherePresent' | 'never'; export type RowLabelType = 'preferredLabel' | 'descriptiveLabel'; export interface TreeNode { label: string; value: number | string | null; unit: string; period: number; key: string; isPeriodStart: boolean; weight: number; members?: MemberFact[]; children?: TreeNode[]; } export interface MemberFact { segments: { dimension: string; value: string; label: string; }[]; value: string | number | null; } export interface BuildReportTreesParams { xbrlJson: DocumentXbrlResult; /** * Where members should be included in the tree nodes. * * @default 'inReportsWherePresent' */ memberInclusionRule?: MemberInclusionRule; /** * Which label type to use for row labels. * * @default 'preferredLabel' */ rowLabelType?: RowLabelType; /** * Disable inclusion of period start facts in the tree. * * @default false */ disablePeriodStartFacts?: boolean; } export declare function buildReportTrees(params: BuildReportTreesParams): XbrlFilingSummaryReportWithTrees[]; export interface TraverseTreeNodeData { node: T; parentNode: T | null; /** Root level = 0 */ depth: number; } interface AnyTreeNode { children?: AnyTreeNode[]; } /** * Traverse through a tree structure (depth first) */ export declare function traverseTree(rootNodes: T[], callback: (data: TraverseTreeNodeData) => void): void; export {};