global: reorg fixes + clients improved

This commit is contained in:
nym21
2026-01-28 23:35:51 +01:00
parent fecaf0f400
commit 6709ded66c
55 changed files with 4312 additions and 83 deletions
@@ -0,0 +1,25 @@
[**brk-client**](../README.md)
***
[brk-client](../globals.md) / \_0sdUsdPattern
# Interface: \_0sdUsdPattern
Defined in: [Developer/brk/modules/brk-client/index.js:2763](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L2763)
## Properties
### dollars
> **dollars**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:2764](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L2764)
***
### sats
> **sats**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:2765](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L2765)
@@ -0,0 +1,25 @@
[**brk-client**](../README.md)
***
[brk-client](../globals.md) / ActivePricePattern
# Interface: ActivePricePattern
Defined in: [Developer/brk/modules/brk-client/index.js:2706](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L2706)
## Properties
### dollars
> **dollars**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:2707](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L2707)
***
### sats
> **sats**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:2708](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L2708)
@@ -0,0 +1,57 @@
[**brk-client**](../README.md)
***
[brk-client](../globals.md) / AllPattern
# Interface: AllPattern
Defined in: [Developer/brk/modules/brk-client/index.js:2463](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L2463)
## Properties
### balanceDecreased
> **balanceDecreased**: [`FullnessPattern`](FullnessPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:2464](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L2464)
***
### balanceIncreased
> **balanceIncreased**: [`FullnessPattern`](FullnessPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:2465](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L2465)
***
### both
> **both**: [`FullnessPattern`](FullnessPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:2466](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L2466)
***
### reactivated
> **reactivated**: [`FullnessPattern`](FullnessPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:2467](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L2467)
***
### receiving
> **receiving**: [`FullnessPattern`](FullnessPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:2468](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L2468)
***
### sending
> **sending**: [`FullnessPattern`](FullnessPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:2469](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L2469)
@@ -0,0 +1,111 @@
[**brk-client**](../README.md)
***
[brk-client](../globals.md) / ClassDaysInLossPattern
# Interface: ClassDaysInLossPattern\<T\>
Defined in: [Developer/brk/modules/brk-client/index.js:1932](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1932)
## Type Parameters
### T
`T`
## Properties
### \_2015
> **\_2015**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1933](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1933)
***
### \_2016
> **\_2016**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1934](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1934)
***
### \_2017
> **\_2017**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1935](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1935)
***
### \_2018
> **\_2018**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1936](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1936)
***
### \_2019
> **\_2019**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1937](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1937)
***
### \_2020
> **\_2020**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1938](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1938)
***
### \_2021
> **\_2021**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1939](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1939)
***
### \_2022
> **\_2022**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1940](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1940)
***
### \_2023
> **\_2023**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1941](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1941)
***
### \_2024
> **\_2024**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1942](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1942)
***
### \_2025
> **\_2025**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1943](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1943)
***
### \_2026
> **\_2026**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1944](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1944)
@@ -0,0 +1,33 @@
[**brk-client**](../README.md)
***
[brk-client](../globals.md) / MetricsTree\_Cointime\_ReserveRisk
# Interface: MetricsTree\_Cointime\_ReserveRisk
Defined in: [Developer/brk/modules/brk-client/index.js:3093](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3093)
## Properties
### hodlBank
> **hodlBank**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3094](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3094)
***
### reserveRisk
> **reserveRisk**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3095](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3095)
***
### vocdd365dSma
> **vocdd365dSma**: [`MetricPattern6`](../type-aliases/MetricPattern6.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3096](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3096)
@@ -0,0 +1,81 @@
[**brk-client**](../README.md)
***
[brk-client](../globals.md) / MetricsTree\_Distribution\_AddressActivity
# Interface: MetricsTree\_Distribution\_AddressActivity
Defined in: [Developer/brk/modules/brk-client/index.js:3153](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3153)
## Properties
### all
> **all**: [`AllPattern`](AllPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3154](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3154)
***
### p2a
> **p2a**: [`AllPattern`](AllPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3155](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3155)
***
### p2pk33
> **p2pk33**: [`AllPattern`](AllPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3156](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3156)
***
### p2pk65
> **p2pk65**: [`AllPattern`](AllPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3157](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3157)
***
### p2pkh
> **p2pkh**: [`AllPattern`](AllPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3158](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3158)
***
### p2sh
> **p2sh**: [`AllPattern`](AllPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3159](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3159)
***
### p2tr
> **p2tr**: [`AllPattern`](AllPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3160](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3160)
***
### p2wpkh
> **p2wpkh**: [`AllPattern`](AllPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3161](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3161)
***
### p2wsh
> **p2wsh**: [`AllPattern`](AllPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3162](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3162)
@@ -0,0 +1,81 @@
[**brk-client**](../README.md)
***
[brk-client](../globals.md) / MetricsTree\_Distribution\_GrowthRate
# Interface: MetricsTree\_Distribution\_GrowthRate
Defined in: [Developer/brk/modules/brk-client/index.js:3244](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3244)
## Properties
### all
> **all**: [`FullnessPattern`](FullnessPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3245](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3245)
***
### p2a
> **p2a**: [`FullnessPattern`](FullnessPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3246](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3246)
***
### p2pk33
> **p2pk33**: [`FullnessPattern`](FullnessPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3247](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3247)
***
### p2pk65
> **p2pk65**: [`FullnessPattern`](FullnessPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3248](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3248)
***
### p2pkh
> **p2pkh**: [`FullnessPattern`](FullnessPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3249](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3249)
***
### p2sh
> **p2sh**: [`FullnessPattern`](FullnessPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3250](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3250)
***
### p2tr
> **p2tr**: [`FullnessPattern`](FullnessPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3251](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3251)
***
### p2wpkh
> **p2wpkh**: [`FullnessPattern`](FullnessPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3252](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3252)
***
### p2wsh
> **p2wsh**: [`FullnessPattern`](FullnessPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3253](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3253)
@@ -0,0 +1,81 @@
[**brk-client**](../README.md)
***
[brk-client](../globals.md) / MetricsTree\_Distribution\_NewAddrCount
# Interface: MetricsTree\_Distribution\_NewAddrCount
Defined in: [Developer/brk/modules/brk-client/index.js:3257](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3257)
## Properties
### all
> **all**: [`DollarsPattern`](DollarsPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3258](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3258)
***
### p2a
> **p2a**: [`DollarsPattern`](DollarsPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3259](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3259)
***
### p2pk33
> **p2pk33**: [`DollarsPattern`](DollarsPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3260](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3260)
***
### p2pk65
> **p2pk65**: [`DollarsPattern`](DollarsPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3261](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3261)
***
### p2pkh
> **p2pkh**: [`DollarsPattern`](DollarsPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3262](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3262)
***
### p2sh
> **p2sh**: [`DollarsPattern`](DollarsPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3263](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3263)
***
### p2tr
> **p2tr**: [`DollarsPattern`](DollarsPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3264](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3264)
***
### p2wpkh
> **p2wpkh**: [`DollarsPattern`](DollarsPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3265](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3265)
***
### p2wsh
> **p2wsh**: [`DollarsPattern`](DollarsPattern.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3266](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3266)
@@ -0,0 +1,105 @@
[**brk-client**](../README.md)
***
[brk-client](../globals.md) / MetricsTree\_Market\_Dca\_ClassAveragePrice
# Interface: MetricsTree\_Market\_Dca\_ClassAveragePrice
Defined in: [Developer/brk/modules/brk-client/index.js:3768](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3768)
## Properties
### \_2015
> **\_2015**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3769](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3769)
***
### \_2016
> **\_2016**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3770](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3770)
***
### \_2017
> **\_2017**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3771](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3771)
***
### \_2018
> **\_2018**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3772](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3772)
***
### \_2019
> **\_2019**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3773](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3773)
***
### \_2020
> **\_2020**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3774](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3774)
***
### \_2021
> **\_2021**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3775](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3775)
***
### \_2022
> **\_2022**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3776](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3776)
***
### \_2023
> **\_2023**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3777](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3777)
***
### \_2024
> **\_2024**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3778](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3778)
***
### \_2025
> **\_2025**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3779](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3779)
***
### \_2026
> **\_2026**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3780](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3780)
@@ -0,0 +1,105 @@
[**brk-client**](../README.md)
***
[brk-client](../globals.md) / MetricsTree\_Market\_Dca\_ClassDaysInLoss
# Interface: MetricsTree\_Market\_Dca\_ClassDaysInLoss
Defined in: [Developer/brk/modules/brk-client/index.js:3784](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3784)
## Properties
### \_2015
> **\_2015**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3785](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3785)
***
### \_2016
> **\_2016**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3786](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3786)
***
### \_2017
> **\_2017**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3787](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3787)
***
### \_2018
> **\_2018**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3788](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3788)
***
### \_2019
> **\_2019**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3789](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3789)
***
### \_2020
> **\_2020**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3790](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3790)
***
### \_2021
> **\_2021**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3791](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3791)
***
### \_2022
> **\_2022**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3792](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3792)
***
### \_2023
> **\_2023**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3793](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3793)
***
### \_2024
> **\_2024**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3794](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3794)
***
### \_2025
> **\_2025**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3795](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3795)
***
### \_2026
> **\_2026**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3796](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3796)
@@ -0,0 +1,105 @@
[**brk-client**](../README.md)
***
[brk-client](../globals.md) / MetricsTree\_Market\_Dca\_ClassMaxDrawdown
# Interface: MetricsTree\_Market\_Dca\_ClassMaxDrawdown
Defined in: [Developer/brk/modules/brk-client/index.js:3800](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3800)
## Properties
### \_2015
> **\_2015**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3801](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3801)
***
### \_2016
> **\_2016**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3802](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3802)
***
### \_2017
> **\_2017**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3803](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3803)
***
### \_2018
> **\_2018**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3804](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3804)
***
### \_2019
> **\_2019**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3805](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3805)
***
### \_2020
> **\_2020**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3806](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3806)
***
### \_2021
> **\_2021**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3807](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3807)
***
### \_2022
> **\_2022**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3808](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3808)
***
### \_2023
> **\_2023**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3809](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3809)
***
### \_2024
> **\_2024**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3810](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3810)
***
### \_2025
> **\_2025**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3811](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3811)
***
### \_2026
> **\_2026**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3812](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3812)
@@ -0,0 +1,105 @@
[**brk-client**](../README.md)
***
[brk-client](../globals.md) / MetricsTree\_Market\_Dca\_ClassMaxReturn
# Interface: MetricsTree\_Market\_Dca\_ClassMaxReturn
Defined in: [Developer/brk/modules/brk-client/index.js:3816](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3816)
## Properties
### \_2015
> **\_2015**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3817](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3817)
***
### \_2016
> **\_2016**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3818](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3818)
***
### \_2017
> **\_2017**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3819](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3819)
***
### \_2018
> **\_2018**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3820](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3820)
***
### \_2019
> **\_2019**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3821](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3821)
***
### \_2020
> **\_2020**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3822](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3822)
***
### \_2021
> **\_2021**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3823](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3823)
***
### \_2022
> **\_2022**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3824](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3824)
***
### \_2023
> **\_2023**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3825](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3825)
***
### \_2024
> **\_2024**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3826](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3826)
***
### \_2025
> **\_2025**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3827](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3827)
***
### \_2026
> **\_2026**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3828](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3828)
@@ -0,0 +1,105 @@
[**brk-client**](../README.md)
***
[brk-client](../globals.md) / MetricsTree\_Market\_Dca\_ClassReturns
# Interface: MetricsTree\_Market\_Dca\_ClassReturns
Defined in: [Developer/brk/modules/brk-client/index.js:3832](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3832)
## Properties
### \_2015
> **\_2015**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3833](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3833)
***
### \_2016
> **\_2016**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3834](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3834)
***
### \_2017
> **\_2017**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3835](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3835)
***
### \_2018
> **\_2018**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3836](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3836)
***
### \_2019
> **\_2019**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3837](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3837)
***
### \_2020
> **\_2020**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3838](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3838)
***
### \_2021
> **\_2021**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3839](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3839)
***
### \_2022
> **\_2022**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3840](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3840)
***
### \_2023
> **\_2023**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3841](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3841)
***
### \_2024
> **\_2024**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3842](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3842)
***
### \_2025
> **\_2025**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3843](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3843)
***
### \_2026
> **\_2026**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:3844](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3844)
@@ -0,0 +1,105 @@
[**brk-client**](../README.md)
***
[brk-client](../globals.md) / MetricsTree\_Market\_Dca\_PeriodAveragePrice
# Interface: MetricsTree\_Market\_Dca\_PeriodAveragePrice
Defined in: [Developer/brk/modules/brk-client/index.js:3864](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3864)
## Properties
### \_10y
> **\_10y**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3865](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3865)
***
### \_1m
> **\_1m**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3866](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3866)
***
### \_1w
> **\_1w**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3867](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3867)
***
### \_1y
> **\_1y**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3868](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3868)
***
### \_2y
> **\_2y**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3869](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3869)
***
### \_3m
> **\_3m**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3870](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3870)
***
### \_3y
> **\_3y**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3871](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3871)
***
### \_4y
> **\_4y**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3872](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3872)
***
### \_5y
> **\_5y**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3873](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3873)
***
### \_6m
> **\_6m**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3874](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3874)
***
### \_6y
> **\_6y**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3875](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3875)
***
### \_8y
> **\_8y**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3876](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3876)
@@ -0,0 +1,113 @@
[**brk-client**](../README.md)
***
[brk-client](../globals.md) / MetricsTree\_Market\_Lookback
# Interface: MetricsTree\_Market\_Lookback
Defined in: [Developer/brk/modules/brk-client/index.js:3903](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3903)
## Properties
### \_10y
> **\_10y**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3904](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3904)
***
### \_1d
> **\_1d**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3905](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3905)
***
### \_1m
> **\_1m**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3906](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3906)
***
### \_1w
> **\_1w**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3907](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3907)
***
### \_1y
> **\_1y**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3908](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3908)
***
### \_2y
> **\_2y**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3909](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3909)
***
### \_3m
> **\_3m**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3910](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3910)
***
### \_3y
> **\_3y**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3911](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3911)
***
### \_4y
> **\_4y**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3912](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3912)
***
### \_5y
> **\_5y**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3913](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3913)
***
### \_6m
> **\_6m**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3914](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3914)
***
### \_6y
> **\_6y**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3915](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3915)
***
### \_8y
> **\_8y**: [`_0sdUsdPattern`](0sdUsdPattern.md)
Defined in: [Developer/brk/modules/brk-client/index.js:3916](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L3916)
@@ -0,0 +1,25 @@
[**brk-client**](../README.md)
***
[brk-client](../globals.md) / MetricsTree\_Price\_Usd
# Interface: MetricsTree\_Price\_Usd
Defined in: [Developer/brk/modules/brk-client/index.js:4234](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L4234)
## Properties
### ohlc
> **ohlc**: [`MetricPattern1`](../type-aliases/MetricPattern1.md)\<[`OHLCDollars`](OHLCDollars.md)\>
Defined in: [Developer/brk/modules/brk-client/index.js:4235](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L4235)
***
### split
> **split**: [`SplitPattern2`](SplitPattern2.md)\<`number`\>
Defined in: [Developer/brk/modules/brk-client/index.js:4236](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L4236)
@@ -0,0 +1,111 @@
[**brk-client**](../README.md)
***
[brk-client](../globals.md) / PeriodDaysInLossPattern
# Interface: PeriodDaysInLossPattern\<T\>
Defined in: [Developer/brk/modules/brk-client/index.js:1891](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1891)
## Type Parameters
### T
`T`
## Properties
### \_10y
> **\_10y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1892](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1892)
***
### \_1m
> **\_1m**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1893](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1893)
***
### \_1w
> **\_1w**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1894](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1894)
***
### \_1y
> **\_1y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1895](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1895)
***
### \_2y
> **\_2y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1896](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1896)
***
### \_3m
> **\_3m**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1897](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1897)
***
### \_3y
> **\_3y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1898](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1898)
***
### \_4y
> **\_4y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1899](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1899)
***
### \_5y
> **\_5y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1900](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1900)
***
### \_6m
> **\_6m**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1901](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1901)
***
### \_6y
> **\_6y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1902](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1902)
***
### \_8y
> **\_8y**: [`MetricPattern4`](../type-aliases/MetricPattern4.md)\<`T`\>
Defined in: [Developer/brk/modules/brk-client/index.js:1903](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L1903)
@@ -0,0 +1,13 @@
[**brk-client**](../README.md)
***
[brk-client](../globals.md) / SatsFract
# Type Alias: SatsFract
> **SatsFract**\<\> = `number`
Defined in: [Developer/brk/modules/brk-client/index.js:607](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L607)
## Type Parameters
@@ -0,0 +1,13 @@
[**brk-client**](../README.md)
***
[brk-client](../globals.md) / StoredI8
# Type Alias: StoredI8
> **StoredI8**\<\> = `number`
Defined in: [Developer/brk/modules/brk-client/index.js:625](https://github.com/bitcoinresearchkit/brk/blob/3d3652470714070e3e6df47b3af6f06512541475/modules/brk-client/index.js#L625)
## Type Parameters
+145 -8
View File
@@ -838,15 +838,120 @@ class BrkError extends Error {
}
}
// Date conversion constants and helpers
const _GENESIS = new Date(2009, 0, 3); // dateindex 0, weekindex 0
const _DAY_ONE = new Date(2009, 0, 9); // dateindex 1 (6 day gap after genesis)
const _MS_PER_DAY = 24 * 60 * 60 * 1000;
const _MS_PER_WEEK = 7 * _MS_PER_DAY;
const _DATE_INDEXES = new Set(['dateindex', 'weekindex', 'monthindex', 'yearindex', 'quarterindex', 'semesterindex', 'decadeindex']);
/** @param {number} months @returns {globalThis.Date} */
const _addMonths = (months) => new Date(2009, months, 1);
/**
* Convert an index value to a Date for date-based indexes.
* @param {Index} index - The index type
* @param {number} i - The index value
* @returns {globalThis.Date}
*/
function indexToDate(index, i) {
switch (index) {
case 'dateindex': return i === 0 ? _GENESIS : new Date(_DAY_ONE.getTime() + (i - 1) * _MS_PER_DAY);
case 'weekindex': return new Date(_GENESIS.getTime() + i * _MS_PER_WEEK);
case 'monthindex': return _addMonths(i);
case 'yearindex': return new Date(2009 + i, 0, 1);
case 'quarterindex': return _addMonths(i * 3);
case 'semesterindex': return _addMonths(i * 6);
case 'decadeindex': return new Date(2009 + i * 10, 0, 1);
default: throw new Error(`${index} is not a date-based index`);
}
}
/**
* Check if an index type is date-based.
* @param {Index} index
* @returns {boolean}
*/
function isDateIndex(index) {
return _DATE_INDEXES.has(index);
}
/**
* Wrap raw metric data with helper methods.
* @template T
* @param {MetricData<T>} raw - Raw JSON response
* @returns {MetricData<T>}
*/
function _wrapMetricData(raw) {
const { index, start, end, data } = raw;
return /** @type {MetricData<T>} */ ({
...raw,
dates() {
/** @type {globalThis.Date[]} */
const result = [];
for (let i = start; i < end; i++) result.push(indexToDate(index, i));
return result;
},
indexes() {
/** @type {number[]} */
const result = [];
for (let i = start; i < end; i++) result.push(i);
return result;
},
toDateMap() {
/** @type {Map<globalThis.Date, T>} */
const map = new Map();
for (let i = 0; i < data.length; i++) map.set(indexToDate(index, start + i), data[i]);
return map;
},
toIndexMap() {
/** @type {Map<number, T>} */
const map = new Map();
for (let i = 0; i < data.length; i++) map.set(start + i, data[i]);
return map;
},
dateEntries() {
/** @type {Array<[globalThis.Date, T]>} */
const result = [];
for (let i = 0; i < data.length; i++) result.push([indexToDate(index, start + i), data[i]]);
return result;
},
indexEntries() {
/** @type {Array<[number, T]>} */
const result = [];
for (let i = 0; i < data.length; i++) result.push([start + i, data[i]]);
return result;
},
*iter() {
for (let i = 0; i < data.length; i++) yield [start + i, data[i]];
},
*iterDates() {
for (let i = 0; i < data.length; i++) yield [indexToDate(index, start + i), data[i]];
},
[Symbol.iterator]() {
return this.iter();
},
});
}
/**
* @template T
* @typedef {Object} MetricData
* @property {number} version - Version of the metric data
* @property {Index} index - The index type used for this query
* @property {number} total - Total number of data points
* @property {number} start - Start index (inclusive)
* @property {number} end - End index (exclusive)
* @property {string} stamp - ISO 8601 timestamp of when the response was generated
* @property {T[]} data - The metric data
* @property {() => globalThis.Date[]} dates - Convert index range to dates (date-based indexes only)
* @property {() => number[]} indexes - Get index range as array
* @property {() => Map<globalThis.Date, T>} toDateMap - Return data as Map keyed by date (date-based only)
* @property {() => Map<number, T>} toIndexMap - Return data as Map keyed by index
* @property {() => Array<[globalThis.Date, T]>} dateEntries - Return data as [date, value] pairs (date-based only)
* @property {() => Array<[number, T]>} indexEntries - Return data as [index, value] pairs
* @property {() => IterableIterator<[number, T]>} iter - Iterate over [index, value] pairs
* @property {() => IterableIterator<[globalThis.Date, T]>} iterDates - Iterate over [date, value] pairs (date-based only)
*/
/** @typedef {MetricData<any>} AnyMetricData */
@@ -940,18 +1045,18 @@ function _endpoint(client, name, index) {
* @returns {RangeBuilder<T>}
*/
const rangeBuilder = (start, end) => ({
fetch(onUpdate) { return client.getJson(buildPath(start, end), onUpdate); },
fetch(onUpdate) { return client._fetchMetricData(buildPath(start, end), onUpdate); },
fetchCsv() { return client.getText(buildPath(start, end, 'csv')); },
then(resolve, reject) { return this.fetch().then(resolve, reject); },
});
/**
* @param {number} index
* @param {number} idx
* @returns {SingleItemBuilder<T>}
*/
const singleItemBuilder = (index) => ({
fetch(onUpdate) { return client.getJson(buildPath(index, index + 1), onUpdate); },
fetchCsv() { return client.getText(buildPath(index, index + 1, 'csv')); },
const singleItemBuilder = (idx) => ({
fetch(onUpdate) { return client._fetchMetricData(buildPath(idx, idx + 1), onUpdate); },
fetchCsv() { return client.getText(buildPath(idx, idx + 1, 'csv')); },
then(resolve, reject) { return this.fetch().then(resolve, reject); },
});
@@ -961,19 +1066,19 @@ function _endpoint(client, name, index) {
*/
const skippedBuilder = (start) => ({
take(n) { return rangeBuilder(start, start + n); },
fetch(onUpdate) { return client.getJson(buildPath(start, undefined), onUpdate); },
fetch(onUpdate) { return client._fetchMetricData(buildPath(start, undefined), onUpdate); },
fetchCsv() { return client.getText(buildPath(start, undefined, 'csv')); },
then(resolve, reject) { return this.fetch().then(resolve, reject); },
});
/** @type {MetricEndpointBuilder<T>} */
const endpoint = {
get(index) { return singleItemBuilder(index); },
get(idx) { return singleItemBuilder(idx); },
slice(start, end) { return rangeBuilder(start, end); },
first(n) { return rangeBuilder(undefined, n); },
last(n) { return n === 0 ? rangeBuilder(undefined, 0) : rangeBuilder(-n, undefined); },
skip(n) { return skippedBuilder(n); },
fetch(onUpdate) { return client.getJson(buildPath(), onUpdate); },
fetch(onUpdate) { return client._fetchMetricData(buildPath(), onUpdate); },
fetchCsv() { return client.getText(buildPath(undefined, undefined, 'csv')); },
then(resolve, reject) { return this.fetch().then(resolve, reject); },
get path() { return p; },
@@ -1053,6 +1158,19 @@ class BrkClientBase {
const res = await this.get(path);
return res.text();
}
/**
* Fetch metric data and wrap with helper methods (internal)
* @template T
* @param {string} path
* @param {(value: MetricData<T>) => void} [onUpdate]
* @returns {Promise<MetricData<T>>}
*/
async _fetchMetricData(path, onUpdate) {
const wrappedOnUpdate = onUpdate ? (/** @type {MetricData<T>} */ raw) => onUpdate(_wrapMetricData(raw)) : undefined;
const raw = await this.getJson(path, wrappedOnUpdate);
return _wrapMetricData(raw);
}
}
/**
@@ -5265,6 +5383,25 @@ class BrkClient extends BrkClientBase {
}
});
/**
* Convert an index value to a Date for date-based indexes.
* @param {Index} index - The index type
* @param {number} i - The index value
* @returns {globalThis.Date}
*/
indexToDate(index, i) {
return indexToDate(index, i);
}
/**
* Check if an index type is date-based.
* @param {Index} index
* @returns {boolean}
*/
isDateIndex(index) {
return isDateIndex(index);
}
/**
* @param {BrkClientOptions|string} options
*/
+221
View File
@@ -0,0 +1,221 @@
/**
* Tests for MetricData helper methods and date conversion functions.
* Run: node tests/metric_data.js
*/
import { BrkClient } from "../index.js";
const client = new BrkClient("http://localhost:3110");
console.log("Testing MetricData helpers...\n");
// Fetch a date-based metric
console.log("1. Fetching price data (dateindex):");
const price = await client.metrics.price.usd.split.close.by.dateindex.first(5);
console.log(
` Total: ${price.total}, Start: ${price.start}, End: ${price.end}`,
);
// Test indexes()
console.log("\n2. indexes():");
const indexes = price.indexes();
console.log(` ${JSON.stringify(indexes)}`);
if (indexes.length !== 5) throw new Error("Expected 5 indexes");
if (indexes[0] !== price.start)
throw new Error("First index should equal start");
// Test dates()
console.log("\n3. dates():");
const dates = price.dates();
console.log(
` First: ${dates[0].toISOString()}, Last: ${dates[dates.length - 1].toISOString()}`,
);
if (dates.length !== 5) throw new Error("Expected 5 dates");
// DateIndex 0 = Jan 3, 2009 (genesis)
if (
dates[0].getFullYear() !== 2009 ||
dates[0].getMonth() !== 0 ||
dates[0].getDate() !== 3
) {
throw new Error(
`Expected genesis date (2009-01-03), got ${dates[0].toISOString()}`,
);
}
// Test toIndexMap()
console.log("\n4. toIndexMap():");
const indexMap = price.toIndexMap();
console.log(
` Size: ${indexMap.size}, First value: ${indexMap.get(price.start)}`,
);
if (indexMap.size !== 5) throw new Error("Expected map size 5");
if (indexMap.get(price.start) !== price.data[0])
throw new Error("First value mismatch");
// Test toDateMap()
console.log("\n5. toDateMap():");
const dateMap = price.toDateMap();
console.log(` Size: ${dateMap.size}`);
if (dateMap.size !== 5) throw new Error("Expected map size 5");
// Test indexEntries()
console.log("\n6. indexEntries():");
const indexEntries = price.indexEntries();
console.log(` First: [${indexEntries[0][0]}, ${indexEntries[0][1]}]`);
if (indexEntries[0][0] !== price.start)
throw new Error("First entry index mismatch");
if (indexEntries[0][1] !== price.data[0])
throw new Error("First entry value mismatch");
// Test dateEntries()
console.log("\n7. dateEntries():");
const dateEntries = price.dateEntries();
console.log(
` First: [${dateEntries[0][0].toISOString()}, ${dateEntries[0][1]}]`,
);
if (dateEntries[0][1] !== price.data[0])
throw new Error("First entry value mismatch");
// Test iter()
console.log("\n8. iter():");
const iterResult = [...price.iter()];
console.log(
` Length: ${iterResult.length}, First: [${iterResult[0][0]}, ${iterResult[0][1]}]`,
);
if (iterResult.length !== 5) throw new Error("Expected 5 items");
// Test iterDates()
console.log("\n9. iterDates():");
const iterDatesResult = [...price.iterDates()];
console.log(
` Length: ${iterDatesResult.length}, First date: ${iterDatesResult[0][0].toISOString()}`,
);
if (iterDatesResult.length !== 5) throw new Error("Expected 5 items");
// Test Symbol.iterator (for...of)
console.log("\n10. for...of iteration:");
let count = 0;
for (const [idx, val] of price.iter()) {
count++;
}
console.log(` Iterated ${count} items`);
if (count !== 5) throw new Error("Expected 5 iterations");
// Test with non-date-based index (height)
console.log("\n11. Testing height-based metric:");
const heightMetric =
await client.metrics.price.usd.split.close.by.height.last(3);
console.log(
` Total: ${heightMetric.total}, Start: ${heightMetric.start}, End: ${heightMetric.end}`,
);
const heightIndexes = heightMetric.indexes();
console.log(` Indexes: ${JSON.stringify(heightIndexes)}`);
if (heightIndexes[0] !== heightMetric.start)
throw new Error("Height index mismatch");
// Test different date indexes
console.log("\n12. Testing monthindex:");
const monthMetric =
await client.metrics.price.usd.split.close.by.monthindex.first(3);
const monthDates = monthMetric.dates();
console.log(` First month: ${monthDates[0].toISOString()}`);
// MonthIndex 0 = Jan 1, 2009
if (
monthDates[0].getFullYear() !== 2009 ||
monthDates[0].getMonth() !== 0 ||
monthDates[0].getDate() !== 1
) {
throw new Error(`Expected 2009-01-01, got ${monthDates[0].toISOString()}`);
}
// Test indexToDate directly
console.log("\n13. Testing indexToDate():");
const genesis = client.indexToDate("dateindex", 0);
if (
genesis.getFullYear() !== 2009 ||
genesis.getMonth() !== 0 ||
genesis.getDate() !== 3
) {
throw new Error(`Expected genesis 2009-01-03, got ${genesis.toISOString()}`);
}
const dayOne = client.indexToDate("dateindex", 1);
if (
dayOne.getFullYear() !== 2009 ||
dayOne.getMonth() !== 0 ||
dayOne.getDate() !== 9
) {
throw new Error(`Expected day one 2009-01-09, got ${dayOne.toISOString()}`);
}
console.log(` dateindex 0: ${genesis.toISOString()}`);
console.log(` dateindex 1: ${dayOne.toISOString()}`);
// Test weekindex
const week0 = client.indexToDate("weekindex", 0);
const week1 = client.indexToDate("weekindex", 1);
if (week0.getTime() !== genesis.getTime())
throw new Error("weekindex 0 should equal genesis");
console.log(` weekindex 0: ${week0.toISOString()}`);
console.log(` weekindex 1: ${week1.toISOString()}`);
// Test yearindex
const year0 = client.indexToDate("yearindex", 0);
const year1 = client.indexToDate("yearindex", 1);
if (
year0.getFullYear() !== 2009 ||
year0.getMonth() !== 0 ||
year0.getDate() !== 1
) {
throw new Error(`Expected 2009-01-01, got ${year0.toISOString()}`);
}
if (year1.getFullYear() !== 2010) throw new Error("yearindex 1 should be 2010");
console.log(` yearindex 0: ${year0.toISOString()}`);
console.log(` yearindex 1: ${year1.toISOString()}`);
// Test quarterindex
const q0 = client.indexToDate("quarterindex", 0);
const q1 = client.indexToDate("quarterindex", 1);
if (q0.getMonth() !== 0) throw new Error("Q0 should be January");
if (q1.getMonth() !== 3) throw new Error("Q1 should be April");
console.log(` quarterindex 0: ${q0.toISOString()}`);
console.log(` quarterindex 1: ${q1.toISOString()}`);
// Test semesterindex
const s0 = client.indexToDate("semesterindex", 0);
const s1 = client.indexToDate("semesterindex", 1);
if (s0.getMonth() !== 0) throw new Error("S0 should be January");
if (s1.getMonth() !== 6) throw new Error("S1 should be July");
console.log(` semesterindex 0: ${s0.toISOString()}`);
console.log(` semesterindex 1: ${s1.toISOString()}`);
// Test decadeindex
const d0 = client.indexToDate("decadeindex", 0);
const d1 = client.indexToDate("decadeindex", 1);
if (d0.getFullYear() !== 2009) throw new Error("decadeindex 0 should be 2009");
if (d1.getFullYear() !== 2019) throw new Error("decadeindex 1 should be 2019");
console.log(` decadeindex 0: ${d0.toISOString()}`);
console.log(` decadeindex 1: ${d1.toISOString()}`);
// Test isDateIndex
console.log("\n14. Testing isDateIndex():");
const dateIndexes = /** @type {const} */ ([
"dateindex",
"weekindex",
"monthindex",
"yearindex",
"quarterindex",
"semesterindex",
"decadeindex",
]);
const nonDateIndexes = /** @type {const} */ (["height", "txindex"]);
for (const idx of dateIndexes) {
if (!client.isDateIndex(idx))
throw new Error(`${idx} should be a date index`);
}
for (const idx of nonDateIndexes) {
if (client.isDateIndex(idx))
throw new Error(`${idx} should not be a date index`);
}
console.log(` Date indexes: ${dateIndexes.join(", ")}`);
console.log(` Non-date indexes: ${nonDateIndexes.join(", ")}`);
console.log("\nAll MetricData tests passed!");