@metriport/fhir-sdk 0.30.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +564 -0
  3. package/dist/__tests__/careplan.test.d.ts +2 -0
  4. package/dist/__tests__/careplan.test.d.ts.map +1 -0
  5. package/dist/__tests__/careplan.test.js +544 -0
  6. package/dist/__tests__/careplan.test.js.map +1 -0
  7. package/dist/__tests__/clinical-dates.test.d.ts +2 -0
  8. package/dist/__tests__/clinical-dates.test.d.ts.map +1 -0
  9. package/dist/__tests__/clinical-dates.test.js +341 -0
  10. package/dist/__tests__/clinical-dates.test.js.map +1 -0
  11. package/dist/__tests__/coding-utilities.test.d.ts +2 -0
  12. package/dist/__tests__/coding-utilities.test.d.ts.map +1 -0
  13. package/dist/__tests__/coding-utilities.test.js +482 -0
  14. package/dist/__tests__/coding-utilities.test.js.map +1 -0
  15. package/dist/__tests__/date-range-performance.test.d.ts +2 -0
  16. package/dist/__tests__/date-range-performance.test.d.ts.map +1 -0
  17. package/dist/__tests__/date-range-performance.test.js +218 -0
  18. package/dist/__tests__/date-range-performance.test.js.map +1 -0
  19. package/dist/__tests__/date-range-search.test.d.ts +2 -0
  20. package/dist/__tests__/date-range-search.test.d.ts.map +1 -0
  21. package/dist/__tests__/date-range-search.test.js +215 -0
  22. package/dist/__tests__/date-range-search.test.js.map +1 -0
  23. package/dist/__tests__/env-setup.d.ts +2 -0
  24. package/dist/__tests__/env-setup.d.ts.map +1 -0
  25. package/dist/__tests__/env-setup.js +37 -0
  26. package/dist/__tests__/env-setup.js.map +1 -0
  27. package/dist/__tests__/fhir-bundle-sdk-basic.test.d.ts +2 -0
  28. package/dist/__tests__/fhir-bundle-sdk-basic.test.d.ts.map +1 -0
  29. package/dist/__tests__/fhir-bundle-sdk-basic.test.js +19 -0
  30. package/dist/__tests__/fhir-bundle-sdk-basic.test.js.map +1 -0
  31. package/dist/__tests__/fhir-bundle-sdk.test.d.ts +2 -0
  32. package/dist/__tests__/fhir-bundle-sdk.test.d.ts.map +1 -0
  33. package/dist/__tests__/fhir-bundle-sdk.test.js +953 -0
  34. package/dist/__tests__/fhir-bundle-sdk.test.js.map +1 -0
  35. package/dist/__tests__/fixtures/fhir-bundles.d.ts +31 -0
  36. package/dist/__tests__/fixtures/fhir-bundles.d.ts.map +1 -0
  37. package/dist/__tests__/fixtures/fhir-bundles.js +487 -0
  38. package/dist/__tests__/fixtures/fhir-bundles.js.map +1 -0
  39. package/dist/__tests__/phase1-verification.test.d.ts +2 -0
  40. package/dist/__tests__/phase1-verification.test.d.ts.map +1 -0
  41. package/dist/__tests__/phase1-verification.test.js +141 -0
  42. package/dist/__tests__/phase1-verification.test.js.map +1 -0
  43. package/dist/__tests__/phase2-verification.test.d.ts +2 -0
  44. package/dist/__tests__/phase2-verification.test.d.ts.map +1 -0
  45. package/dist/__tests__/phase2-verification.test.js +234 -0
  46. package/dist/__tests__/phase2-verification.test.js.map +1 -0
  47. package/dist/__tests__/phase3-verification.test.d.ts +2 -0
  48. package/dist/__tests__/phase3-verification.test.d.ts.map +1 -0
  49. package/dist/__tests__/phase3-verification.test.js +121 -0
  50. package/dist/__tests__/phase3-verification.test.js.map +1 -0
  51. package/dist/__tests__/phase4-verification.test.d.ts +2 -0
  52. package/dist/__tests__/phase4-verification.test.d.ts.map +1 -0
  53. package/dist/__tests__/phase4-verification.test.js +168 -0
  54. package/dist/__tests__/phase4-verification.test.js.map +1 -0
  55. package/dist/__tests__/phase5-verification.test.d.ts +2 -0
  56. package/dist/__tests__/phase5-verification.test.d.ts.map +1 -0
  57. package/dist/__tests__/phase5-verification.test.js +397 -0
  58. package/dist/__tests__/phase5-verification.test.js.map +1 -0
  59. package/dist/__tests__/reverse-references.test.d.ts +2 -0
  60. package/dist/__tests__/reverse-references.test.d.ts.map +1 -0
  61. package/dist/__tests__/reverse-references.test.js +294 -0
  62. package/dist/__tests__/reverse-references.test.js.map +1 -0
  63. package/dist/__tests__/type-guards.test.d.ts +2 -0
  64. package/dist/__tests__/type-guards.test.d.ts.map +1 -0
  65. package/dist/__tests__/type-guards.test.js +163 -0
  66. package/dist/__tests__/type-guards.test.js.map +1 -0
  67. package/dist/clinical-dates.d.ts +26 -0
  68. package/dist/clinical-dates.d.ts.map +1 -0
  69. package/dist/clinical-dates.js +571 -0
  70. package/dist/clinical-dates.js.map +1 -0
  71. package/dist/fhir-bundle-sdk.d.ts +233 -0
  72. package/dist/fhir-bundle-sdk.d.ts.map +1 -0
  73. package/dist/fhir-bundle-sdk.js +545 -0
  74. package/dist/fhir-bundle-sdk.js.map +1 -0
  75. package/dist/index.d.ts +8 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +23 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/internal/bundle-operations.d.ts +14 -0
  80. package/dist/internal/bundle-operations.d.ts.map +1 -0
  81. package/dist/internal/bundle-operations.js +55 -0
  82. package/dist/internal/bundle-operations.js.map +1 -0
  83. package/dist/internal/coding-systems.d.ts +48 -0
  84. package/dist/internal/coding-systems.d.ts.map +1 -0
  85. package/dist/internal/coding-systems.js +55 -0
  86. package/dist/internal/coding-systems.js.map +1 -0
  87. package/dist/internal/coding-utilities.d.ts +27 -0
  88. package/dist/internal/coding-utilities.d.ts.map +1 -0
  89. package/dist/internal/coding-utilities.js +297 -0
  90. package/dist/internal/coding-utilities.js.map +1 -0
  91. package/dist/internal/date-extraction.d.ts +12 -0
  92. package/dist/internal/date-extraction.d.ts.map +1 -0
  93. package/dist/internal/date-extraction.js +629 -0
  94. package/dist/internal/date-extraction.js.map +1 -0
  95. package/dist/internal/graph-traversal.d.ts +13 -0
  96. package/dist/internal/graph-traversal.d.ts.map +1 -0
  97. package/dist/internal/graph-traversal.js +89 -0
  98. package/dist/internal/graph-traversal.js.map +1 -0
  99. package/dist/internal/indexing.d.ts +17 -0
  100. package/dist/internal/indexing.d.ts.map +1 -0
  101. package/dist/internal/indexing.js +129 -0
  102. package/dist/internal/indexing.js.map +1 -0
  103. package/dist/internal/llm-context.d.ts +40 -0
  104. package/dist/internal/llm-context.d.ts.map +1 -0
  105. package/dist/internal/llm-context.js +214 -0
  106. package/dist/internal/llm-context.js.map +1 -0
  107. package/dist/internal/reference-resolution.d.ts +29 -0
  108. package/dist/internal/reference-resolution.d.ts.map +1 -0
  109. package/dist/internal/reference-resolution.js +338 -0
  110. package/dist/internal/reference-resolution.js.map +1 -0
  111. package/dist/internal/reference-utils.d.ts +26 -0
  112. package/dist/internal/reference-utils.d.ts.map +1 -0
  113. package/dist/internal/reference-utils.js +89 -0
  114. package/dist/internal/reference-utils.js.map +1 -0
  115. package/dist/internal/transparent-proxy.d.ts +12 -0
  116. package/dist/internal/transparent-proxy.d.ts.map +1 -0
  117. package/dist/internal/transparent-proxy.js +81 -0
  118. package/dist/internal/transparent-proxy.js.map +1 -0
  119. package/dist/internal/validation.d.ts +16 -0
  120. package/dist/internal/validation.d.ts.map +1 -0
  121. package/dist/internal/validation.js +45 -0
  122. package/dist/internal/validation.js.map +1 -0
  123. package/dist/type-guards.d.ts +212 -0
  124. package/dist/type-guards.d.ts.map +1 -0
  125. package/dist/type-guards.js +375 -0
  126. package/dist/type-guards.js.map +1 -0
  127. package/dist/types/coding-fields.d.ts +311 -0
  128. package/dist/types/coding-fields.d.ts.map +1 -0
  129. package/dist/types/coding-fields.js +3 -0
  130. package/dist/types/coding-fields.js.map +1 -0
  131. package/dist/types/sdk-types.d.ts +107 -0
  132. package/dist/types/sdk-types.d.ts.map +1 -0
  133. package/dist/types/sdk-types.js +17 -0
  134. package/dist/types/sdk-types.js.map +1 -0
  135. package/dist/types/smart-resources.d.ts +470 -0
  136. package/dist/types/smart-resources.d.ts.map +1 -0
  137. package/dist/types/smart-resources.js +249 -0
  138. package/dist/types/smart-resources.js.map +1 -0
  139. package/dist/utils/interval-tree/index.d.ts +87 -0
  140. package/dist/utils/interval-tree/index.d.ts.map +1 -0
  141. package/dist/utils/interval-tree/index.js +774 -0
  142. package/dist/utils/interval-tree/index.js.map +1 -0
  143. package/dist/utils/interval-tree/shallowequal/arrays.d.ts +3 -0
  144. package/dist/utils/interval-tree/shallowequal/arrays.d.ts.map +1 -0
  145. package/dist/utils/interval-tree/shallowequal/arrays.js +25 -0
  146. package/dist/utils/interval-tree/shallowequal/arrays.js.map +1 -0
  147. package/dist/utils/interval-tree/shallowequal/index.d.ts +6 -0
  148. package/dist/utils/interval-tree/shallowequal/index.d.ts.map +1 -0
  149. package/dist/utils/interval-tree/shallowequal/index.js +28 -0
  150. package/dist/utils/interval-tree/shallowequal/index.js.map +1 -0
  151. package/dist/utils/interval-tree/shallowequal/objects.d.ts +3 -0
  152. package/dist/utils/interval-tree/shallowequal/objects.d.ts.map +1 -0
  153. package/dist/utils/interval-tree/shallowequal/objects.js +28 -0
  154. package/dist/utils/interval-tree/shallowequal/objects.js.map +1 -0
  155. package/package.json +70 -0
@@ -0,0 +1,249 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getReferenceField = exports.isReferenceMethod = exports.REFERENCE_METHOD_MAPPING = void 0;
4
+ /**
5
+ * IMPORTANT: For user-facing code, prefer specific Smart type aliases (SmartObservation,
6
+ * SmartCondition, etc.) defined in coding-fields.ts over the generic Smart<T> pattern.
7
+ *
8
+ * The specific types include CodeableConcept field overrides that enable coding system
9
+ * utilities (hasLoinc(), getIcd10Code(), etc.) to work correctly in TypeScript.
10
+ *
11
+ * @example
12
+ * // ✅ GOOD - Users get full TypeScript support for coding utilities
13
+ * getObservationById(id: string): SmartObservation | undefined
14
+ *
15
+ * // ❌ BAD - Users cannot access coding utilities without type assertions
16
+ * getObservationById(id: string): Smart<Observation> | undefined
17
+ *
18
+ * The generic Smart<T> should only be used internally or when the specific resource
19
+ * type is truly dynamic.
20
+ */
21
+ /**
22
+ * Reference field mapping - maps reference method names to their field paths
23
+ */
24
+ exports.REFERENCE_METHOD_MAPPING = {
25
+ Observation: {
26
+ getBasedOn: "basedOn",
27
+ getPartOf: "partOf",
28
+ getSubject: "subject",
29
+ getFocus: "focus",
30
+ getEncounter: "encounter",
31
+ getPerformers: "performer",
32
+ getSpecimen: "specimen",
33
+ getDevice: "device",
34
+ getHasMember: "hasMember",
35
+ getDerivedFrom: "derivedFrom",
36
+ },
37
+ Encounter: {
38
+ getSubject: "subject",
39
+ getEpisodeOfCare: "episodeOfCare",
40
+ getBasedOn: "basedOn",
41
+ getParticipants: "participant.individual",
42
+ getAppointment: "appointment",
43
+ getReasonReference: "reasonReference",
44
+ getAccount: "account",
45
+ getServiceProvider: "serviceProvider",
46
+ getPartOf: "partOf",
47
+ getHospitalizationOrigin: "hospitalization.origin",
48
+ getHospitalizationDestination: "hospitalization.destination",
49
+ getLocation: "location.location",
50
+ getDiagnosisCondition: "diagnosis.condition",
51
+ },
52
+ DiagnosticReport: {
53
+ getBasedOn: "basedOn",
54
+ getSubject: "subject",
55
+ getEncounter: "encounter",
56
+ getPerformers: "performer",
57
+ getResultsInterpreter: "resultsInterpreter",
58
+ getSpecimen: "specimen",
59
+ getResults: "result",
60
+ getImagingStudy: "imagingStudy",
61
+ getMediaLink: "media.link",
62
+ },
63
+ Patient: {
64
+ getGeneralPractitioners: "generalPractitioner",
65
+ getManagingOrganization: "managingOrganization",
66
+ getContactOrganization: "contact.organization",
67
+ getLinkOther: "link.other",
68
+ },
69
+ Practitioner: {
70
+ getQualificationIssuer: "qualification.issuer",
71
+ },
72
+ PractitionerRole: {
73
+ getPractitioner: "practitioner",
74
+ getOrganization: "organization",
75
+ getLocation: "location",
76
+ getHealthcareService: "healthcareService",
77
+ getEndpoint: "endpoint",
78
+ },
79
+ AllergyIntolerance: {
80
+ getPatient: "patient",
81
+ getEncounter: "encounter",
82
+ getRecorder: "recorder",
83
+ getAsserter: "asserter",
84
+ },
85
+ Condition: {
86
+ getSubject: "subject",
87
+ getEncounter: "encounter",
88
+ getRecorder: "recorder",
89
+ getAsserter: "asserter",
90
+ getStageAssessment: "stage.assessment",
91
+ getEvidenceDetail: "evidence.detail",
92
+ },
93
+ Organization: {
94
+ getPartOf: "partOf",
95
+ getEndpoint: "endpoint",
96
+ },
97
+ Location: {
98
+ getManagingOrganization: "managingOrganization",
99
+ getPartOf: "partOf",
100
+ getEndpoint: "endpoint",
101
+ },
102
+ Composition: {
103
+ getSubject: "subject",
104
+ getEncounter: "encounter",
105
+ getAuthors: "author",
106
+ getCustodian: "custodian",
107
+ getAttesterParty: "attester.party",
108
+ getRelatesToTarget: "relatesTo.targetReference",
109
+ getEventDetail: "event.detail",
110
+ getSectionAuthor: "section.author",
111
+ getSectionFocus: "section.focus",
112
+ getSectionEntry: "section.entry",
113
+ },
114
+ Coverage: {
115
+ getBeneficiary: "beneficiary",
116
+ getSubscriber: "subscriber",
117
+ getPayors: "payor",
118
+ getPolicyHolder: "policyHolder",
119
+ },
120
+ DocumentReference: {
121
+ getSubject: "subject",
122
+ getAuthors: "author",
123
+ getAuthenticator: "authenticator",
124
+ getCustodian: "custodian",
125
+ getRelatesToTarget: "relatesTo.target",
126
+ getContextEncounter: "context.encounter",
127
+ getContextSourcePatientInfo: "context.sourcePatientInfo",
128
+ getContextRelated: "context.related",
129
+ },
130
+ Immunization: {
131
+ getPatient: "patient",
132
+ getEncounter: "encounter",
133
+ getLocation: "location",
134
+ getManufacturer: "manufacturer",
135
+ getPerformers: "performer.actor",
136
+ getReasonReference: "reasonReference",
137
+ getProtocolAppliedAuthority: "protocolApplied.authority",
138
+ getReactionDetail: "reaction.detail",
139
+ },
140
+ Medication: {
141
+ getManufacturer: "manufacturer",
142
+ getIngredientItem: "ingredient.itemReference",
143
+ },
144
+ MedicationRequest: {
145
+ getReportedReference: "reportedReference",
146
+ getMedicationReference: "medicationReference",
147
+ getSubject: "subject",
148
+ getEncounter: "encounter",
149
+ getSupportingInformation: "supportingInformation",
150
+ getRequester: "requester",
151
+ getPerformer: "performer",
152
+ getRecorder: "recorder",
153
+ getReasonReference: "reasonReference",
154
+ getBasedOn: "basedOn",
155
+ getInsurance: "insurance",
156
+ getPriorPrescription: "priorPrescription",
157
+ getDetectedIssue: "detectedIssue",
158
+ getEventHistory: "eventHistory",
159
+ getDispenseRequestPerformer: "dispenseRequest.performer",
160
+ },
161
+ Procedure: {
162
+ getBasedOn: "basedOn",
163
+ getPartOf: "partOf",
164
+ getSubject: "subject",
165
+ getEncounter: "encounter",
166
+ getRecorder: "recorder",
167
+ getAsserter: "asserter",
168
+ getPerformers: "performer.actor",
169
+ getPerformerOnBehalfOf: "performer.onBehalfOf",
170
+ getLocation: "location",
171
+ getReasonReference: "reasonReference",
172
+ getReport: "report",
173
+ getComplicationDetail: "complicationDetail",
174
+ getFocalDeviceManipulated: "focalDevice.manipulated",
175
+ getUsedReference: "usedReference",
176
+ },
177
+ FamilyMemberHistory: {
178
+ getPatient: "patient",
179
+ },
180
+ MedicationAdministration: {
181
+ getSubject: "subject",
182
+ getContext: "context",
183
+ getPerformers: "performer.actor",
184
+ getMedicationReference: "medicationReference",
185
+ },
186
+ MedicationDispense: {
187
+ getSubject: "subject",
188
+ getContext: "context",
189
+ getPerformers: "performer.actor",
190
+ getMedicationReference: "medicationReference",
191
+ },
192
+ MedicationStatement: {
193
+ getSubject: "subject",
194
+ getContext: "context",
195
+ getInformationSource: "informationSource",
196
+ getMedicationReference: "medicationReference",
197
+ },
198
+ RelatedPerson: {
199
+ getPatient: "patient",
200
+ },
201
+ RiskAssessment: {
202
+ getSubject: "subject",
203
+ getEncounter: "encounter",
204
+ getPerformer: "performer",
205
+ },
206
+ ServiceRequest: {
207
+ getSubject: "subject",
208
+ getEncounter: "encounter",
209
+ getRequester: "requester",
210
+ getPerformers: "performer",
211
+ },
212
+ CarePlan: {
213
+ getBasedOn: "basedOn",
214
+ getReplaces: "replaces",
215
+ getPartOf: "partOf",
216
+ getSubject: "subject",
217
+ getEncounter: "encounter",
218
+ getAuthor: "author",
219
+ getContributor: "contributor",
220
+ getCareTeam: "careTeam",
221
+ getAddresses: "addresses",
222
+ getSupportingInfo: "supportingInfo",
223
+ getGoal: "goal",
224
+ getActivityReference: "activity.reference",
225
+ getActivityOutcomeReference: "activity.outcomeReference",
226
+ getActivityDetailReasonReference: "activity.detail.reasonReference",
227
+ getActivityDetailGoal: "activity.detail.goal",
228
+ getActivityDetailLocation: "activity.detail.location",
229
+ getActivityDetailPerformer: "activity.detail.performer",
230
+ getActivityDetailProductReference: "activity.detail.productReference",
231
+ },
232
+ };
233
+ /**
234
+ * Helper type to check if a method name is a valid reference method for a resource type
235
+ */
236
+ function isReferenceMethod(methodName, resourceType) {
237
+ const mapping = exports.REFERENCE_METHOD_MAPPING[resourceType];
238
+ return mapping ? methodName in mapping : false;
239
+ }
240
+ exports.isReferenceMethod = isReferenceMethod;
241
+ /**
242
+ * Get the reference field path for a method name and resource type
243
+ */
244
+ function getReferenceField(methodName, resourceType) {
245
+ const mapping = exports.REFERENCE_METHOD_MAPPING[resourceType];
246
+ return mapping ? mapping[methodName] : undefined;
247
+ }
248
+ exports.getReferenceField = getReferenceField;
249
+ //# sourceMappingURL=smart-resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-resources.js","sourceRoot":"","sources":["../../src/types/smart-resources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ export interface Interval<N extends number | bigint = number> {
2
+ readonly low: N;
3
+ readonly high: N;
4
+ }
5
+ export declare class Node<T extends Interval<N>, N extends number | bigint = number> {
6
+ intervalTree: IntervalTree<T, N>;
7
+ key: N;
8
+ max: N;
9
+ records: T[];
10
+ parent?: Node<T, N>;
11
+ height: number;
12
+ left?: Node<T, N>;
13
+ right?: Node<T, N>;
14
+ constructor(intervalTree: IntervalTree<T, N>, record: T);
15
+ getNodeHigh(): N;
16
+ updateHeight(): void;
17
+ updateMaxOfParents(): void;
18
+ private _updateMaxAfterRightRotate;
19
+ private _updateMaxAfterLeftRotate;
20
+ private _leftRotate;
21
+ private _rightRotate;
22
+ private _rebalance;
23
+ insert(record: T): void;
24
+ private _getOverlappingRecords;
25
+ search(low: N, high: N): T[];
26
+ searchExisting(low: N): Node<T, N> | undefined;
27
+ private _minValue;
28
+ remove(node: Node<T, N>): Node<T, N> | undefined;
29
+ }
30
+ export declare class IntervalTree<T extends Interval<N>, N extends number | bigint = number> {
31
+ root?: Node<T, N>;
32
+ count: number;
33
+ insert(record: T): boolean;
34
+ search(low: N, high: N): T[];
35
+ remove(record: T): boolean;
36
+ inOrder(): InOrder<T, N>;
37
+ reverseInOrder(): ReverseInOrder<T, N>;
38
+ preOrder(): PreOrder<T, N>;
39
+ }
40
+ export interface DataInterval<T, N extends number | bigint = number> extends Interval<N> {
41
+ data: T;
42
+ }
43
+ /**
44
+ * The default export just wraps the `IntervalTree`, while providing a simpler API. Check out the
45
+ * README for description on how to use each.
46
+ */
47
+ export default class DataIntervalTree<T, N extends number | bigint = number> {
48
+ private tree;
49
+ insert(low: N, high: N, data: T): boolean;
50
+ remove(low: N, high: N, data: T): boolean;
51
+ search(low: N, high: N): T[];
52
+ inOrder(): InOrder<DataInterval<T, N>, N>;
53
+ reverseInOrder(): ReverseInOrder<DataInterval<T, N>, N>;
54
+ preOrder(): PreOrder<DataInterval<T, N>, N>;
55
+ get count(): number;
56
+ }
57
+ export declare class InOrder<T extends Interval<N>, N extends number | bigint = number> implements IterableIterator<T> {
58
+ private stack;
59
+ private currentNode?;
60
+ private i;
61
+ constructor(startNode?: Node<T, N>);
62
+ [Symbol.iterator](): this;
63
+ next(): IteratorResult<T>;
64
+ private push;
65
+ private pop;
66
+ }
67
+ export declare class ReverseInOrder<T extends Interval<N>, N extends number | bigint = number> implements IterableIterator<T> {
68
+ private stack;
69
+ private currentNode?;
70
+ private i;
71
+ constructor(startNode?: Node<T, N>);
72
+ [Symbol.iterator](): this;
73
+ next(): IteratorResult<T>;
74
+ private push;
75
+ private pop;
76
+ }
77
+ export declare class PreOrder<T extends Interval<N>, N extends number | bigint = number> implements IterableIterator<T> {
78
+ private stack;
79
+ private currentNode?;
80
+ private i;
81
+ constructor(startNode?: Node<T, N>);
82
+ [Symbol.iterator](): this;
83
+ next(): IteratorResult<T>;
84
+ private push;
85
+ private pop;
86
+ }
87
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/interval-tree/index.ts"],"names":[],"mappings":"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"}